all:
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 81.163.193.14
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: f9def64b-688e-4b44-9611-605bc03b58b7
        host_id: 063a101b67161296bfe4ca59644a37fa2e240be637ab6c95039adf80
        interface_ip: 81.163.193.14
        label: ubuntu-noble
        private_ipv4: 10.128.7.203
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.14
        public_ipv6: ''
        region: null
        slot: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base branches: None source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job ansible-lint branches: None source: osism/zuul-jobs/.zuul.yaml@main#7>'
      - '<Job ansible-lint branches: None source: osism/testbed/.zuul.yaml@main#195>'
      ansible_version: '8'
      attempts: 2
      branch: main
      build: dafd1e7601194325ae6397b4777fbad0
      buildset: 4964947506314afd98f6aaae6ed7da41
      change: '2654'
      change_message: "chore(deps): update dependency gruntwork-io/terragrunt to v0.77.19\n\
        \nThis PR contains the following updates:\n\n| Package | Update | Change |\n\
        |---|---|---|\n| [gruntwork-io/terragrunt](https://redirect.github.com/gruntwork-io/terragrunt)\
        \ | patch | `v0.77.3` -> `v0.77.19` |\n\n---\n\n### Release Notes\n\n<details>\n\
        <summary>gruntwork-io/terragrunt (gruntwork-io/terragrunt)</summary>\n\n###\
        \ [`v0.77.19`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.19)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.18...v0.77.19)\n\
        \n#### What's Changed\n\n-   feat: Implemented telemetry for find/list by\
        \ [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4165](https://redirect.github.com/gruntwork-io/terragrunt/pull/4165)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.18...v0.77.19\n\
        \n### [`v0.77.18`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.18)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.17...v0.77.18)\n\
        \n#### \u2728 New Features\n\n##### Support for HCL formatting with the `render`\
        \ command\n\nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`render`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#backend-migrate)\
        \ command now supports HCL formatting for rendered configurations, which is\
        \ the default output format.\n\nUsing the `render` command with HCL formatting\
        \ allows users to get a quick, minimal evaluation of Terragrunt unit configurations\
        \ with as much pre-processing done as possible.\n\nFor example, the following\
        \ `terragrunt.hcl` file:\n\n```hcl\n\n### terragrunt.hcl\n\nlocals {\n  aws_region\
        \ = \"us-east-1\"\n}\n\ninputs = {\n  aws_region = local.aws_region\n}\n```\n\
        \nRenders to the following HCL:\n\n```bash\n$ terragrunt render\nlocals {\n\
        \  aws_region = \"us-east-1\"\n}\ninputs = {\n  aws_region = \"us-east-1\"\
        \n}\n```\n\nUsing the `render` command with HCL formatting offers a way to\
        \ resolve complex HCL function evaluation, include merging or string interpolation,\
        \ etc. to achieve equivalent Terragrunt HCL configurations that are easier\
        \ to reason about.\n\n#### What's Changed\n\n-   feat: Adding `render` with\
        \ HCL formatting by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4164](https://redirect.github.com/gruntwork-io/terragrunt/pull/4164)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.17...v0.77.18\n\
        \n### [`v0.77.17`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.17)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.16...v0.77.17)\n\
        \n#### \u2728 New Features\n\n##### Introduction of the `render` command\n\
        \nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`render`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#backend-migrate)\
        \ command has been introduced.\n\nThe `render` command allows users to easily\
        \ render Terragrunt unit configurations with reduced complexity, making it\
        \ easier to understand configurations at a glance.\n\nFor example, the following\
        \ `terragrunt.hcl` file:\n\n```hcl\n\n### terragrunt.hcl\n\nlocals {\n  aws_region\
        \ = \"us-east-1\"\n}\n\ninputs = {\n  aws_region = local.aws_region\n}\n```\n\
        \nRenders to the following JSON:\n\n```bash\n$ terragrunt render --format\
        \ json\n{\n  \"locals\": { \"aws_region\": \"us-east-1\" },\n  \"inputs\"\
        : { \"aws_region\": \"us-east-1\" }\n  // NOTE: other attributes are omitted\
        \ for brevity\n}\n```\n\nThe introduction of the `render` command is part\
        \ of the eventual deprecation of the existing `render-json` command, which\
        \ will be deprecated by the end of the CLI Redesign. The `render` command\
        \ is a higher level command, that offers the ability to write to stdout, in\
        \ addition to writing to files, and will support HCL configurations in addition\
        \ to JSON (coming soon).\n\nTo learn more about the `render` command, read\
        \ the official documentation [here](https://terragrunt.gruntwork.io/docs/reference/cli-options/#render).\n\
        \n#### What's Changed\n\n-   feat: Adding `render` command by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4145](https://redirect.github.com/gruntwork-io/terragrunt/pull/4145)\n\
        -   feat: Adding docs for `backend migrate` by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4140](https://redirect.github.com/gruntwork-io/terragrunt/pull/4140)\n\
        -   build(deps): bump ruby/setup-ruby from 1.229.0 to 1.230.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4162](https://redirect.github.com/gruntwork-io/terragrunt/pull/4162)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.16...v0.77.17\n\
        \n### [`v0.77.16`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.16)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.15...v0.77.16)\n\
        \n#### \u2728 New Features\n\n##### Introduction of the `backend migrate`\
        \ command\n\nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`backend migrate`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#backend-migrate)\
        \ command has been introduced.\n\nThe `backend migrate` command allows you\
        \ to simply migrate state between different units (or renames of units) without\
        \ manually running OpenTofu/Terraform state migration commands.\n\nTo learn\
        \ more about the `backend migrate` command, read the [official docs](https://terragrunt.gruntwork.io/docs/reference/cli-options/#backend-migrate).\n\
        \n#### What's Changed\n\n-   feat: Added support for migrating state between\
        \ different backends by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4154](https://redirect.github.com/gruntwork-io/terragrunt/pull/4154)\n\
        -   feat: Enhanced error explainer to detect and report issues related to\
        \ `stack` values by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4163](https://redirect.github.com/gruntwork-io/terragrunt/pull/4163)\n\
        -   fix: Improved the deprecation message for experimental command flags by\
        \ [@&#8203;levkohimins](https://redirect.github.com/levkohimins) in [https://github.com/gruntwork-io/terragrunt/pull/4146](https://redirect.github.com/gruntwork-io/terragrunt/pull/4146)\n\
        -   fix: Prevent `TF_CLI_CONFIG_FILE` environment variable from being overwritten,\
        \ except during `init` and `providers` commands by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4155](https://redirect.github.com/gruntwork-io/terragrunt/pull/4155)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.15...v0.77.16\n\
        \n### [`v0.77.15`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.15)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.14...v0.77.15)\n\
        \n#### \u2728 New Features\n\n##### Introduction of the `dag graph` command\n\
        \nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`dag graph`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#print-graph)\
        \ command has been introduced.\n\n![dag](https://redirect.github.com/user-attachments/assets/389d4e31-197c-4c37-8913-1417ecd3e5b4)\n\
        \n![dag-help](https://redirect.github.com/user-attachments/assets/2525cd27-0d8e-457b-87ea-759fae31e2f3)\n\
        \n![dag-graph-help](https://redirect.github.com/user-attachments/assets/fb268b20-f32b-4b4f-ba13-0d1fc9fca748)\n\
        \n#### What's Changed\n\n-   docs: Added migration guide for adopting Terragrunt\
        \ Stacks by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4152](https://redirect.github.com/gruntwork-io/terragrunt/pull/4152)\n\
        -   feat: Added dag graph command by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4143](https://redirect.github.com/gruntwork-io/terragrunt/pull/4143)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.14...v0.77.15\n\
        \n### [`v0.77.14`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.14)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.13...v0.77.14)\n\
        \n#### \u2728 New Features\n\n##### Support for `--exclude` and `--queue-construct-as`\
        \ in `find` and `list`\n\nThe [`find`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find)\
        \ and [`list`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#list)\
        \ commands have been updated to leverage new capabilities involving greater\
        \ understanding of the Terragrunt run queue.\n\nUsers can now leverage the\
        \ [`--queue-construct-as`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find-queue-construct-as)\
        \ (or just `--as`) flag in the `find` and `list` commands to discover configurations\
        \ as if a particular Terragrunt command was being run (e.g. `plan`, `destroy`).\n\
        \nFor example:\n\n```bash\n$ terragrunt find --queue-construct-as=plan\nstacks/live/dev\n\
        stacks/live/prod\nunits/live/dev/vpc\nunits/live/prod/vpc\nunits/live/dev/db\n\
        units/live/prod/db\nunits/live/dev/ec2\nunits/live/prod/ec2\n```\n\n```bash\n\
        $ terragrunt find --as=destroy\nstacks/live/dev\nstacks/live/prod\nunits/live/dev/ec2\n\
        units/live/prod/ec2\nunits/live/dev/db\nunits/live/prod/db\nunits/live/dev/vpc\n\
        units/live/prod/vpc\n```\n\nThe `find` and `list` commands will now construct\
        \ the Terragrunt run queue as if a particular command was being run, potentially\
        \ altering the position of elements in the run queue, based on their dependencies\
        \ (dependencies before dependents for plans, applies, etc. and dependents\
        \ before dependencies for destroys).\n\nIn addition, users can leverage the\
        \ [`--exclude`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#find-exclude)\
        \ flag on the `find` command to get information on the `exclude` block included\
        \ in results. The `exclude` block is also factored in to discovery results\
        \ when the `--queue-construct-as` flag is passed, allowing users to dry-run\
        \ behavior of the `exclude` block before performing any Terragrunt runs.\n\
        \n#### What's Changed\n\n-   feat: Adding exclude support to list and find\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4147](https://redirect.github.com/gruntwork-io/terragrunt/pull/4147)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.13...v0.77.14\n\
        \n### [`v0.77.13`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.13)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.12...v0.77.13)\n\
        \n#### What's Changed\n\n-   build(deps): bump google.golang.org/grpc from\
        \ 1.71.0 to 1.71.1 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4132](https://redirect.github.com/gruntwork-io/terragrunt/pull/4132)\n\
        -   build(deps): bump golang.org/x/sys from 0.31.0 to 0.32.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4133](https://redirect.github.com/gruntwork-io/terragrunt/pull/4133)\n\
        -   build(deps): bump golang.org/x/oauth2 from 0.28.0 to 0.29.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4131](https://redirect.github.com/gruntwork-io/terragrunt/pull/4131)\n\
        -   build(deps): bump github.com/getsops/sops/v3 from 3.9.4 to 3.10.1 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4130](https://redirect.github.com/gruntwork-io/terragrunt/pull/4130)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.12...v0.77.13\n\
        \n### [`v0.77.12`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.12)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.11...v0.77.12)\n\
        \n#### \u2728 New Features\n\nIntroduced `no_validation` attribute for `stack`\
        \ and `unit`, allowing users to bypass Terragrunt's validation checks when\
        \ deploying infrastructure. This is particularly useful in scenarios where\
        \ you need to deploy infrastructure that doesn't strictly adhere to Terragrunt's\
        \ validation rules, such as during emergency deployments or when working with\
        \ legacy infrastructure patterns.\n\n#### What's Changed\n\n-   docs: added\
        \ more docs for stacks by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4144](https://redirect.github.com/gruntwork-io/terragrunt/pull/4144)\n\
        -   feat: added support for `no_validation` attribute for `stack` and `unit`\
        \ by [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4149](https://redirect.github.com/gruntwork-io/terragrunt/pull/4149)\n\
        \nRFC: [https://github.com/gruntwork-io/terragrunt/issues/3313](https://redirect.github.com/gruntwork-io/terragrunt/issues/3313)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.11...v0.77.12\n\
        \n### [`v0.77.11`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.11)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.10...v0.77.11)\n\
        \n#### \u2728 New Features\n\n##### Introduction of the `info print` command\n\
        \nAs part of the [CLI Redesign](https://terragrunt.gruntwork.io/docs/reference/experiments/#cli-redesign)\
        \ experiment, the [`info print`](https://terragrunt.gruntwork.io/docs/reference/cli-options/#print-command)\
        \ command has been introduced.\n\n![help](https://redirect.github.com/user-attachments/assets/2eac4645-93c2-47dd-8dc3-73c4442bf1c8)\n\
        \n![out](https://redirect.github.com/user-attachments/assets/7005c5db-15e1-4efe-b5a8-349a179f6033)\n\
        \n#### What's Changed\n\n-   feat: Introduced the `info print` command to\
        \ output Terragrunt context as a structured JSON object by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4122](https://redirect.github.com/gruntwork-io/terragrunt/pull/4122)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.10...v0.77.11\n\
        \n### [`v0.77.10`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.10)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.9...v0.77.10)\n\
        \n#### What's Changed\n\n-   fix: Suppressing warning for catalog when determining\
        \ default file name by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4134](https://redirect.github.com/gruntwork-io/terragrunt/pull/4134)\n\
        -   fix: Remove warning message for unimplemented backends by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4138](https://redirect.github.com/gruntwork-io/terragrunt/pull/4138)\n\
        -   fix: Fixing optional default template by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4141](https://redirect.github.com/gruntwork-io/terragrunt/pull/4141)\n\
        -   chore: stack code improvements by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4136](https://redirect.github.com/gruntwork-io/terragrunt/pull/4136)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.9...v0.77.10\n\
        \n### [`v0.77.9`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.9)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.8...v0.77.9)\n\
        \n#### \U0001F41B Bug fixes\n\n##### Fetching Outputs from Nested Stacks\n\
        \nResolved an issue that prevented the correct retrieval of outputs from nested\
        \ stacks.\n\n#### What's Changed\n\n-   fix: corrected the logic for fetching\
        \ outputs from nested stacks by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4126](https://redirect.github.com/gruntwork-io/terragrunt/pull/4126)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.8...v0.77.9\n\
        \n### [`v0.77.8`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.8)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.7...v0.77.8)\n\
        \n#### \U0001F4D6 Documentation Updates\n\nA new [performance guide](https://terragrunt.gruntwork.io/docs/troubleshooting/performance/)\
        \ has been added to Terragrunt documentation to offer guidance on how performance\
        \ can be improved when using Terragrunt or contributing to the Terragrunt\
        \ codebase.\n\nThis documentation will evolve over time, as more optional\
        \ optimizations become available, or are no longer necessary, as they become\
        \ default behavior.\n\n#### What's Changed\n\n-   feat: Add performance guide\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4120](https://redirect.github.com/gruntwork-io/terragrunt/pull/4120)\n\
        -   build(deps): bump ruby/setup-ruby from 1.221.0 to 1.229.0 by [@&#8203;dependabot](https://redirect.github.com/dependabot)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4100](https://redirect.github.com/gruntwork-io/terragrunt/pull/4100)\n\
        -   fix: Addressing commas in external IDs by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4128](https://redirect.github.com/gruntwork-io/terragrunt/pull/4128)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.7...v0.77.8\n\
        \n### [`v0.77.7`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.7)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.6...v0.77.7)\n\
        \n#### \u2728 New Features\n\nUsers can now configure a custom default template\
        \ for `scaffold` and `catalog` commands in their `catalog` configuration blocks\
        \ like so:\n\n```hcl\ncatalog {\n  default_template = \"git@github.com/acme/example.git//path/to/template\"\
        \n}\n```\n\nFor more information, read the documentation in the [catalog feature](https://terragrunt.gruntwork.io/docs/features/catalog/#custom-templates-for-scaffolding).\n\
        \nSpecial thanks to [@&#8203;tgeijg](https://redirect.github.com/tgeijg) for\
        \ contributing this feature!\n\n#### What's Changed\n\n-   feat: Adding custom\
        \ default template [#&#8203;3658](https://redirect.github.com/gruntwork-io/terragrunt/issues/3658)\
        \ by [@&#8203;tgeijg](https://redirect.github.com/tgeijg) in [https://github.com/gruntwork-io/terragrunt/pull/4035](https://redirect.github.com/gruntwork-io/terragrunt/pull/4035)\n\
        -   fix: Updating docs after [#&#8203;4035](https://redirect.github.com/gruntwork-io/terragrunt/issues/4035)\
        \ by [@&#8203;yhakbar](https://redirect.github.com/yhakbar) in [https://github.com/gruntwork-io/terragrunt/pull/4117](https://redirect.github.com/gruntwork-io/terragrunt/pull/4117)\n\
        -   chore: stacks documentation improvements by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4114](https://redirect.github.com/gruntwork-io/terragrunt/pull/4114)\n\
        \n#### New Contributors\n\n-   [@&#8203;tgeijg](https://redirect.github.com/tgeijg)\
        \ made their first contribution in [https://github.com/gruntwork-io/terragrunt/pull/4035](https://redirect.github.com/gruntwork-io/terragrunt/pull/4035)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.6...v0.77.7\n\
        \n### [`v0.77.6`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.6)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.5...v0.77.6)\n\
        \n#### What's Changed\n\n-   fix: Correctly ignore lock table encryption setting\
        \ to prevent unintended configuration overrides by [@&#8203;levkohimins](https://redirect.github.com/levkohimins)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4112](https://redirect.github.com/gruntwork-io/terragrunt/pull/4112)\n\
        -   fix: Introduced stricter constraints for detecting stack configuration\
        \ files by [@&#8203;denis256](https://redirect.github.com/denis256) in [https://github.com/gruntwork-io/terragrunt/pull/4113](https://redirect.github.com/gruntwork-io/terragrunt/pull/4113)\n\
        -   feat: Enabled parsing of stack configuration directly from a string input\
        \ for enhanced integration with 3rd party code by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4110](https://redirect.github.com/gruntwork-io/terragrunt/pull/4110)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.5...v0.77.6\n\
        \n### [`v0.77.5`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.5)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.4...v0.77.5)\n\
        \n#### What's Changed\n\n-   feat: added support for OpenTelemetry in `stack`\
        \ commands to enable enhanced observability and tracing by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4109](https://redirect.github.com/gruntwork-io/terragrunt/pull/4109)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.4...v0.77.5\n\
        \n### [`v0.77.4`](https://redirect.github.com/gruntwork-io/terragrunt/releases/tag/v0.77.4)\n\
        \n[Compare Source](https://redirect.github.com/gruntwork-io/terragrunt/compare/v0.77.3...v0.77.4)\n\
        \n#### \U0001F41B Bug fixes\n\n##### Newlines reduced in Error Logging for\
        \ Configuration Errors\n\nLogging for configuration errors has been compacted\
        \ to reduce noise, and make errors easier to read.\n\n```\n\n### Before\n\
        14:09:25.892 ERROR  Error: Error in function call\n\n14:09:25.892 ERROR  \
        \  on terragrunt.hcl line 3, in locals:\n\n14:09:25.892 ERROR     3:     \
        \  requires_auth = run_cmd(\"exit\", \"1\") // intentional error\n\n14:09:25.892\
        \ ERROR\n\n14:09:25.892 ERROR  Call to function \"run_cmd\" failed: Failed\
        \ to execute \"exit 1\" in .\n\nexec: \"exit\": executable file not found\
        \ in $PATH.\n\n```\n\n    ### After\n    15:19:50.937 ERROR  Error: Error\
        \ in function call\n    15:19:50.937 ERROR    on terragrunt.hcl line 3, in\
        \ locals:\n    15:19:50.937 ERROR  Error: Error in function call\n    15:19:50.937\
        \ ERROR    on terragrunt.hcl line 3, in locals:\n    15:19:50.937 ERROR  \
        \   3:       requires_auth = run_cmd(\"exit\", \"1\") // intentional error\n\
        \    15:19:50.937 ERROR     3:       fail   = run_cmd(\"exit\", \"1\") //\
        \ intentional error\n    15:19:50.937 ERROR  Call to function \"run_cmd\"\
        \ failed: Failed to execute \"exit 1\" in .\n    15:19:50.937 ERROR  exec:\
        \ \"exit\": executable file not found in $PATH.\n\n##### Improved Cycle Detection\
        \ Logic for `stack generate`\n\nOn the default filesystem for macOS, path\
        \ length was likely to result in an error before internal cycle detection\
        \ logic, so cycle detection was updated to leverage a maximum path length\
        \ of 1024 characters as an earlier exit for all operating systems.\n\n#####\
        \ Excessive warning for bootstrap requirement resolved\n\nInternal logic for\
        \ determination that backends required bootstrapping was adjusted to no longer\
        \ leverage the value of the OpenTofu state file.\n\nWhile cheaper than making\
        \ a network request to assess the current state of backend resources, it also\
        \ resulted in false negatives, which triggered excessive backend bootstrap\
        \ warnings.\n\n#### What's Changed\n\n-   fix: New lines in TF diagnostic\
        \ log by [@&#8203;levkohimins](https://redirect.github.com/levkohimins) in\
        \ [https://github.com/gruntwork-io/terragrunt/pull/4108](https://redirect.github.com/gruntwork-io/terragrunt/pull/4108)\n\
        -   fix: Stack cycles detection improvements by [@&#8203;denis256](https://redirect.github.com/denis256)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4106](https://redirect.github.com/gruntwork-io/terragrunt/pull/4106)\n\
        -   fix: Fixing excessive warning for bootstrap by [@&#8203;yhakbar](https://redirect.github.com/yhakbar)\
        \ in [https://github.com/gruntwork-io/terragrunt/pull/4107](https://redirect.github.com/gruntwork-io/terragrunt/pull/4107)\n\
        \n**Full Changelog**: https://github.com/gruntwork-io/terragrunt/compare/v0.77.3...v0.77.4\n\
        \n</details>\n\n---\n\n### Configuration\n\n\U0001F4C5 **Schedule**: Branch\
        \ creation - At any time (no schedule defined), Automerge - At any time (no\
        \ schedule defined).\n\n\U0001F6A6 **Automerge**: Disabled by config. Please\
        \ merge this manually once you are satisfied.\n\n\u267B **Rebasing**: Whenever\
        \ PR becomes conflicted, or you tick the rebase/retry checkbox.\n\n\U0001F515\
        \ **Ignore**: Close this PR and you won't be reminded about this update again.\n\
        \n---\n\n - [ ] <!-- rebase-check -->If you want to rebase/retry this PR,\
        \ check this box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).\
        \ View the [repository job log](https://developer.mend.io/github/osism/testbed).\n\
        <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjI0OC40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/testbed/pull/2654
      child_jobs: []
      commit_id: 2cea4a87e6504f14ca1d85c3a87274dc3ed6ecea
      event_id: 36255eb0-1bd8-11f0-8972-154666432f14
      executor:
        hostname: 7d211f194f6a
        inventory_file: /var/lib/zuul/builds/dafd1e7601194325ae6397b4777fbad0/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/dafd1e7601194325ae6397b4777fbad0/work/logs
        result_data_file: /var/lib/zuul/builds/dafd1e7601194325ae6397b4777fbad0/work/results.json
        src_root: /var/lib/zuul/builds/dafd1e7601194325ae6397b4777fbad0/work/src
        work_root: /var/lib/zuul/builds/dafd1e7601194325ae6397b4777fbad0/work
      items:
      - branch: main
        change: '2654'
        change_url: https://github.com/osism/testbed/pull/2654
        patchset: 2cea4a87e6504f14ca1d85c3a87274dc3ed6ecea
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/testbed
          name: osism/testbed
          short_name: testbed
          src_dir: src/github.com/osism/testbed
      job: ansible-lint
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBkZXBlbmRlbmN5IGdydW50d29yay1pby90ZXJyYWdydW50IHRvIHYwLjc3LjE5CgpUaGlzIFBSIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgdXBkYXRlczoKCnwgUGFja2FnZSB8IFVwZGF0ZSB8IENoYW5nZSB8CnwtLS18LS0tfC0tLXwKfCBbZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudCkgfCBwYXRjaCB8IGB2MC43Ny4zYCAtPiBgdjAuNzcuMTlgIHwKCi0tLQoKIyMjIFJlbGVhc2UgTm90ZXMKCjxkZXRhaWxzPgo8c3VtbWFyeT5ncnVudHdvcmstaW8vdGVycmFncnVudCAoZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQpPC9zdW1tYXJ5PgoKIyMjIFtgdjAuNzcuMTlgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjE5KQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xOC4uLnYwLjc3LjE5KQoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IEltcGxlbWVudGVkIHRlbGVtZXRyeSBmb3IgZmluZC9saXN0IGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTY1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTY1KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4xOC4uLnYwLjc3LjE5CgojIyMgW2B2MC43Ny4xOGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuMTgpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjE3Li4udjAuNzcuMTgpCgojIyMjIOKcqCBOZXcgRmVhdHVyZXMKCiMjIyMjIFN1cHBvcnQgZm9yIEhDTCBmb3JtYXR0aW5nIHdpdGggdGhlIGByZW5kZXJgIGNvbW1hbmQKCkFzIHBhcnQgb2YgdGhlIFtDTEkgUmVkZXNpZ25dKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvZXhwZXJpbWVudHMvI2NsaS1yZWRlc2lnbikgZXhwZXJpbWVudCwgdGhlIFtgcmVuZGVyYF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jYmFja2VuZC1taWdyYXRlKSBjb21tYW5kIG5vdyBzdXBwb3J0cyBIQ0wgZm9ybWF0dGluZyBmb3IgcmVuZGVyZWQgY29uZmlndXJhdGlvbnMsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IG91dHB1dCBmb3JtYXQuCgpVc2luZyB0aGUgYHJlbmRlcmAgY29tbWFuZCB3aXRoIEhDTCBmb3JtYXR0aW5nIGFsbG93cyB1c2VycyB0byBnZXQgYSBxdWljaywgbWluaW1hbCBldmFsdWF0aW9uIG9mIFRlcnJhZ3J1bnQgdW5pdCBjb25maWd1cmF0aW9ucyB3aXRoIGFzIG11Y2ggcHJlLXByb2Nlc3NpbmcgZG9uZSBhcyBwb3NzaWJsZS4KCkZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGB0ZXJyYWdydW50LmhjbGAgZmlsZToKCmBgYGhjbAoKIyMjIHRlcnJhZ3J1bnQuaGNsCgpsb2NhbHMgewogIGF3c19yZWdpb24gPSAidXMtZWFzdC0xIgp9CgppbnB1dHMgPSB7CiAgYXdzX3JlZ2lvbiA9IGxvY2FsLmF3c19yZWdpb24KfQpgYGAKClJlbmRlcnMgdG8gdGhlIGZvbGxvd2luZyBIQ0w6CgpgYGBiYXNoCiQgdGVycmFncnVudCByZW5kZXIKbG9jYWxzIHsKICBhd3NfcmVnaW9uID0gInVzLWVhc3QtMSIKfQppbnB1dHMgPSB7CiAgYXdzX3JlZ2lvbiA9ICJ1cy1lYXN0LTEiCn0KYGBgCgpVc2luZyB0aGUgYHJlbmRlcmAgY29tbWFuZCB3aXRoIEhDTCBmb3JtYXR0aW5nIG9mZmVycyBhIHdheSB0byByZXNvbHZlIGNvbXBsZXggSENMIGZ1bmN0aW9uIGV2YWx1YXRpb24sIGluY2x1ZGUgbWVyZ2luZyBvciBzdHJpbmcgaW50ZXJwb2xhdGlvbiwgZXRjLiB0byBhY2hpZXZlIGVxdWl2YWxlbnQgVGVycmFncnVudCBIQ0wgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgZWFzaWVyIHRvIHJlYXNvbiBhYm91dC4KCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBBZGRpbmcgYHJlbmRlcmAgd2l0aCBIQ0wgZm9ybWF0dGluZyBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNjQpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjE3Li4udjAuNzcuMTgKCiMjIyBbYHYwLjc3LjE3YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny4xNykKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTYuLi52MC43Ny4xNykKCiMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKIyMjIyMgSW50cm9kdWN0aW9uIG9mIHRoZSBgcmVuZGVyYCBjb21tYW5kCgpBcyBwYXJ0IG9mIHRoZSBbQ0xJIFJlZGVzaWduXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2V4cGVyaW1lbnRzLyNjbGktcmVkZXNpZ24pIGV4cGVyaW1lbnQsIHRoZSBbYHJlbmRlcmBdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2JhY2tlbmQtbWlncmF0ZSkgY29tbWFuZCBoYXMgYmVlbiBpbnRyb2R1Y2VkLgoKVGhlIGByZW5kZXJgIGNvbW1hbmQgYWxsb3dzIHVzZXJzIHRvIGVhc2lseSByZW5kZXIgVGVycmFncnVudCB1bml0IGNvbmZpZ3VyYXRpb25zIHdpdGggcmVkdWNlZCBjb21wbGV4aXR5LCBtYWtpbmcgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgY29uZmlndXJhdGlvbnMgYXQgYSBnbGFuY2UuCgpGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBgdGVycmFncnVudC5oY2xgIGZpbGU6CgpgYGBoY2wKCiMjIyB0ZXJyYWdydW50LmhjbAoKbG9jYWxzIHsKICBhd3NfcmVnaW9uID0gInVzLWVhc3QtMSIKfQoKaW5wdXRzID0gewogIGF3c19yZWdpb24gPSBsb2NhbC5hd3NfcmVnaW9uCn0KYGBgCgpSZW5kZXJzIHRvIHRoZSBmb2xsb3dpbmcgSlNPTjoKCmBgYGJhc2gKJCB0ZXJyYWdydW50IHJlbmRlciAtLWZvcm1hdCBqc29uCnsKICAibG9jYWxzIjogeyAiYXdzX3JlZ2lvbiI6ICJ1cy1lYXN0LTEiIH0sCiAgImlucHV0cyI6IHsgImF3c19yZWdpb24iOiAidXMtZWFzdC0xIiB9CiAgLy8gTk9URTogb3RoZXIgYXR0cmlidXRlcyBhcmUgb21pdHRlZCBmb3IgYnJldml0eQp9CmBgYAoKVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgYHJlbmRlcmAgY29tbWFuZCBpcyBwYXJ0IG9mIHRoZSBldmVudHVhbCBkZXByZWNhdGlvbiBvZiB0aGUgZXhpc3RpbmcgYHJlbmRlci1qc29uYCBjb21tYW5kLCB3aGljaCB3aWxsIGJlIGRlcHJlY2F0ZWQgYnkgdGhlIGVuZCBvZiB0aGUgQ0xJIFJlZGVzaWduLiBUaGUgYHJlbmRlcmAgY29tbWFuZCBpcyBhIGhpZ2hlciBsZXZlbCBjb21tYW5kLCB0aGF0IG9mZmVycyB0aGUgYWJpbGl0eSB0byB3cml0ZSB0byBzdGRvdXQsIGluIGFkZGl0aW9uIHRvIHdyaXRpbmcgdG8gZmlsZXMsIGFuZCB3aWxsIHN1cHBvcnQgSENMIGNvbmZpZ3VyYXRpb25zIGluIGFkZGl0aW9uIHRvIEpTT04gKGNvbWluZyBzb29uKS4KClRvIGxlYXJuIG1vcmUgYWJvdXQgdGhlIGByZW5kZXJgIGNvbW1hbmQsIHJlYWQgdGhlIG9mZmljaWFsIGRvY3VtZW50YXRpb24gW2hlcmVdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI3JlbmRlcikuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogQWRkaW5nIGByZW5kZXJgIGNvbW1hbmQgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQ1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQ1KQotICAgZmVhdDogQWRkaW5nIGRvY3MgZm9yIGBiYWNrZW5kIG1pZ3JhdGVgIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0MCkKLSAgIGJ1aWxkKGRlcHMpOiBidW1wIHJ1Ynkvc2V0dXAtcnVieSBmcm9tIDEuMjI5LjAgdG8gMS4yMzAuMCBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNjIpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjE2Li4udjAuNzcuMTcKCiMjIyBbYHYwLjc3LjE2YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny4xNikKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTUuLi52MC43Ny4xNikKCiMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKIyMjIyMgSW50cm9kdWN0aW9uIG9mIHRoZSBgYmFja2VuZCBtaWdyYXRlYCBjb21tYW5kCgpBcyBwYXJ0IG9mIHRoZSBbQ0xJIFJlZGVzaWduXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2V4cGVyaW1lbnRzLyNjbGktcmVkZXNpZ24pIGV4cGVyaW1lbnQsIHRoZSBbYGJhY2tlbmQgbWlncmF0ZWBdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2JhY2tlbmQtbWlncmF0ZSkgY29tbWFuZCBoYXMgYmVlbiBpbnRyb2R1Y2VkLgoKVGhlIGBiYWNrZW5kIG1pZ3JhdGVgIGNvbW1hbmQgYWxsb3dzIHlvdSB0byBzaW1wbHkgbWlncmF0ZSBzdGF0ZSBiZXR3ZWVuIGRpZmZlcmVudCB1bml0cyAob3IgcmVuYW1lcyBvZiB1bml0cykgd2l0aG91dCBtYW51YWxseSBydW5uaW5nIE9wZW5Ub2Z1L1RlcnJhZm9ybSBzdGF0ZSBtaWdyYXRpb24gY29tbWFuZHMuCgpUbyBsZWFybiBtb3JlIGFib3V0IHRoZSBgYmFja2VuZCBtaWdyYXRlYCBjb21tYW5kLCByZWFkIHRoZSBbb2ZmaWNpYWwgZG9jc10oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jYmFja2VuZC1taWdyYXRlKS4KCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmZWF0OiBBZGRlZCBzdXBwb3J0IGZvciBtaWdyYXRpbmcgc3RhdGUgYmV0d2VlbiBkaWZmZXJlbnQgYmFja2VuZHMgYnkgW0AmIzgyMDM7bGV2a29oaW1pbnNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9sZXZrb2hpbWlucykgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNTQpCi0gICBmZWF0OiBFbmhhbmNlZCBlcnJvciBleHBsYWluZXIgdG8gZGV0ZWN0IGFuZCByZXBvcnQgaXNzdWVzIHJlbGF0ZWQgdG8gYHN0YWNrYCB2YWx1ZXMgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNjMpCi0gICBmaXg6IEltcHJvdmVkIHRoZSBkZXByZWNhdGlvbiBtZXNzYWdlIGZvciBleHBlcmltZW50YWwgY29tbWFuZCBmbGFncyBieSBbQCYjODIwMztsZXZrb2hpbWluc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2xldmtvaGltaW5zKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDE0NikKLSAgIGZpeDogUHJldmVudCBgVEZfQ0xJX0NPTkZJR19GSUxFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBmcm9tIGJlaW5nIG92ZXJ3cml0dGVuLCBleGNlcHQgZHVyaW5nIGBpbml0YCBhbmQgYHByb3ZpZGVyc2AgY29tbWFuZHMgYnkgW0AmIzgyMDM7bGV2a29oaW1pbnNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9sZXZrb2hpbWlucykgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNTUpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjE1Li4udjAuNzcuMTYKCiMjIyBbYHYwLjc3LjE1YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny4xNSkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTQuLi52MC43Ny4xNSkKCiMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKIyMjIyMgSW50cm9kdWN0aW9uIG9mIHRoZSBgZGFnIGdyYXBoYCBjb21tYW5kCgpBcyBwYXJ0IG9mIHRoZSBbQ0xJIFJlZGVzaWduXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2V4cGVyaW1lbnRzLyNjbGktcmVkZXNpZ24pIGV4cGVyaW1lbnQsIHRoZSBbYGRhZyBncmFwaGBdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI3ByaW50LWdyYXBoKSBjb21tYW5kIGhhcyBiZWVuIGludHJvZHVjZWQuCgohW2RhZ10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzM4OWQ0ZTMxLTE5N2MtNGMzNy04OTEzLTE0MTdlY2QzZTViNCkKCiFbZGFnLWhlbHBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8yNTI1Y2QyNy0wZDhlLTQ1N2ItODdlYS03NTlmYWUzMWUyZjMpCgohW2RhZy1ncmFwaC1oZWxwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvZmIyNjhiMjAtZjMyYi00YjRmLWJhMTMtMGQxZmM5ZmNhNzQ4KQoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGRvY3M6IEFkZGVkIG1pZ3JhdGlvbiBndWlkZSBmb3IgYWRvcHRpbmcgVGVycmFncnVudCBTdGFja3MgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTUyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTUyKQotICAgZmVhdDogQWRkZWQgZGFnIGdyYXBoIGNvbW1hbmQgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDMpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjE0Li4udjAuNzcuMTUKCiMjIyBbYHYwLjc3LjE0YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny4xNCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTMuLi52MC43Ny4xNCkKCiMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKIyMjIyMgU3VwcG9ydCBmb3IgYC0tZXhjbHVkZWAgYW5kIGAtLXF1ZXVlLWNvbnN0cnVjdC1hc2AgaW4gYGZpbmRgIGFuZCBgbGlzdGAKClRoZSBbYGZpbmRgXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2NsaS1vcHRpb25zLyNmaW5kKSBhbmQgW2BsaXN0YF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jbGlzdCkgY29tbWFuZHMgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gbGV2ZXJhZ2UgbmV3IGNhcGFiaWxpdGllcyBpbnZvbHZpbmcgZ3JlYXRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBUZXJyYWdydW50IHJ1biBxdWV1ZS4KClVzZXJzIGNhbiBub3cgbGV2ZXJhZ2UgdGhlIFtgLS1xdWV1ZS1jb25zdHJ1Y3QtYXNgXShodHRwczovL3RlcnJhZ3J1bnQuZ3J1bnR3b3JrLmlvL2RvY3MvcmVmZXJlbmNlL2NsaS1vcHRpb25zLyNmaW5kLXF1ZXVlLWNvbnN0cnVjdC1hcykgKG9yIGp1c3QgYC0tYXNgKSBmbGFnIGluIHRoZSBgZmluZGAgYW5kIGBsaXN0YCBjb21tYW5kcyB0byBkaXNjb3ZlciBjb25maWd1cmF0aW9ucyBhcyBpZiBhIHBhcnRpY3VsYXIgVGVycmFncnVudCBjb21tYW5kIHdhcyBiZWluZyBydW4gKGUuZy4gYHBsYW5gLCBgZGVzdHJveWApLgoKRm9yIGV4YW1wbGU6CgpgYGBiYXNoCiQgdGVycmFncnVudCBmaW5kIC0tcXVldWUtY29uc3RydWN0LWFzPXBsYW4Kc3RhY2tzL2xpdmUvZGV2CnN0YWNrcy9saXZlL3Byb2QKdW5pdHMvbGl2ZS9kZXYvdnBjCnVuaXRzL2xpdmUvcHJvZC92cGMKdW5pdHMvbGl2ZS9kZXYvZGIKdW5pdHMvbGl2ZS9wcm9kL2RiCnVuaXRzL2xpdmUvZGV2L2VjMgp1bml0cy9saXZlL3Byb2QvZWMyCmBgYAoKYGBgYmFzaAokIHRlcnJhZ3J1bnQgZmluZCAtLWFzPWRlc3Ryb3kKc3RhY2tzL2xpdmUvZGV2CnN0YWNrcy9saXZlL3Byb2QKdW5pdHMvbGl2ZS9kZXYvZWMyCnVuaXRzL2xpdmUvcHJvZC9lYzIKdW5pdHMvbGl2ZS9kZXYvZGIKdW5pdHMvbGl2ZS9wcm9kL2RiCnVuaXRzL2xpdmUvZGV2L3ZwYwp1bml0cy9saXZlL3Byb2QvdnBjCmBgYAoKVGhlIGBmaW5kYCBhbmQgYGxpc3RgIGNvbW1hbmRzIHdpbGwgbm93IGNvbnN0cnVjdCB0aGUgVGVycmFncnVudCBydW4gcXVldWUgYXMgaWYgYSBwYXJ0aWN1bGFyIGNvbW1hbmQgd2FzIGJlaW5nIHJ1biwgcG90ZW50aWFsbHkgYWx0ZXJpbmcgdGhlIHBvc2l0aW9uIG9mIGVsZW1lbnRzIGluIHRoZSBydW4gcXVldWUsIGJhc2VkIG9uIHRoZWlyIGRlcGVuZGVuY2llcyAoZGVwZW5kZW5jaWVzIGJlZm9yZSBkZXBlbmRlbnRzIGZvciBwbGFucywgYXBwbGllcywgZXRjLiBhbmQgZGVwZW5kZW50cyBiZWZvcmUgZGVwZW5kZW5jaWVzIGZvciBkZXN0cm95cykuCgpJbiBhZGRpdGlvbiwgdXNlcnMgY2FuIGxldmVyYWdlIHRoZSBbYC0tZXhjbHVkZWBdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy9yZWZlcmVuY2UvY2xpLW9wdGlvbnMvI2ZpbmQtZXhjbHVkZSkgZmxhZyBvbiB0aGUgYGZpbmRgIGNvbW1hbmQgdG8gZ2V0IGluZm9ybWF0aW9uIG9uIHRoZSBgZXhjbHVkZWAgYmxvY2sgaW5jbHVkZWQgaW4gcmVzdWx0cy4gVGhlIGBleGNsdWRlYCBibG9jayBpcyBhbHNvIGZhY3RvcmVkIGluIHRvIGRpc2NvdmVyeSByZXN1bHRzIHdoZW4gdGhlIGAtLXF1ZXVlLWNvbnN0cnVjdC1hc2AgZmxhZyBpcyBwYXNzZWQsIGFsbG93aW5nIHVzZXJzIHRvIGRyeS1ydW4gYmVoYXZpb3Igb2YgdGhlIGBleGNsdWRlYCBibG9jayBiZWZvcmUgcGVyZm9ybWluZyBhbnkgVGVycmFncnVudCBydW5zLgoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IEFkZGluZyBleGNsdWRlIHN1cHBvcnQgdG8gbGlzdCBhbmQgZmluZCBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxNDcpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjEzLi4udjAuNzcuMTQKCiMjIyBbYHYwLjc3LjEzYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny4xMykKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTIuLi52MC43Ny4xMykKCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBidWlsZChkZXBzKTogYnVtcCBnb29nbGUuZ29sYW5nLm9yZy9ncnBjIGZyb20gMS43MS4wIHRvIDEuNzEuMSBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzIpCi0gICBidWlsZChkZXBzKTogYnVtcCBnb2xhbmcub3JnL3gvc3lzIGZyb20gMC4zMS4wIHRvIDAuMzIuMCBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzMpCi0gICBidWlsZChkZXBzKTogYnVtcCBnb2xhbmcub3JnL3gvb2F1dGgyIGZyb20gMC4yOC4wIHRvIDAuMjkuMCBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzEpCi0gICBidWlsZChkZXBzKTogYnVtcCBnaXRodWIuY29tL2dldHNvcHMvc29wcy92MyBmcm9tIDMuOS40IHRvIDMuMTAuMSBieSBbQCYjODIwMztkZXBlbmRhYm90XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVwZW5kYWJvdCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMzApCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjEyLi4udjAuNzcuMTMKCiMjIyBbYHYwLjc3LjEyYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny4xMikKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTEuLi52MC43Ny4xMikKCiMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKSW50cm9kdWNlZCBgbm9fdmFsaWRhdGlvbmAgYXR0cmlidXRlIGZvciBgc3RhY2tgIGFuZCBgdW5pdGAsIGFsbG93aW5nIHVzZXJzIHRvIGJ5cGFzcyBUZXJyYWdydW50J3MgdmFsaWRhdGlvbiBjaGVja3Mgd2hlbiBkZXBsb3lpbmcgaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBpbiBzY2VuYXJpb3Mgd2hlcmUgeW91IG5lZWQgdG8gZGVwbG95IGluZnJhc3RydWN0dXJlIHRoYXQgZG9lc24ndCBzdHJpY3RseSBhZGhlcmUgdG8gVGVycmFncnVudCdzIHZhbGlkYXRpb24gcnVsZXMsIHN1Y2ggYXMgZHVyaW5nIGVtZXJnZW5jeSBkZXBsb3ltZW50cyBvciB3aGVuIHdvcmtpbmcgd2l0aCBsZWdhY3kgaW5mcmFzdHJ1Y3R1cmUgcGF0dGVybnMuCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZG9jczogYWRkZWQgbW9yZSBkb2NzIGZvciBzdGFja3MgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQ0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQ0KQotICAgZmVhdDogYWRkZWQgc3VwcG9ydCBmb3IgYG5vX3ZhbGlkYXRpb25gIGF0dHJpYnV0ZSBmb3IgYHN0YWNrYCBhbmQgYHVuaXRgIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQ5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQ5KQoKUkZDOiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2lzc3Vlcy8zMzEzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvaXNzdWVzLzMzMTMpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjExLi4udjAuNzcuMTIKCiMjIyBbYHYwLjc3LjExYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny4xMSkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMTAuLi52MC43Ny4xMSkKCiMjIyMg4pyoIE5ldyBGZWF0dXJlcwoKIyMjIyMgSW50cm9kdWN0aW9uIG9mIHRoZSBgaW5mbyBwcmludGAgY29tbWFuZAoKQXMgcGFydCBvZiB0aGUgW0NMSSBSZWRlc2lnbl0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9leHBlcmltZW50cy8jY2xpLXJlZGVzaWduKSBleHBlcmltZW50LCB0aGUgW2BpbmZvIHByaW50YF0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL3JlZmVyZW5jZS9jbGktb3B0aW9ucy8jcHJpbnQtY29tbWFuZCkgY29tbWFuZCBoYXMgYmVlbiBpbnRyb2R1Y2VkLgoKIVtoZWxwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvMmVhYzQ2NDUtOTNjMi00N2RkLThkYzMtNzNjNDQ0MmJmMWM4KQoKIVtvdXRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy83MDA1YzVkYi0xNWUxLTRlZmUtYjVhOC0zNDlhMTc5ZjYwMzMpCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogSW50cm9kdWNlZCB0aGUgYGluZm8gcHJpbnRgIGNvbW1hbmQgdG8gb3V0cHV0IFRlcnJhZ3J1bnQgY29udGV4dCBhcyBhIHN0cnVjdHVyZWQgSlNPTiBvYmplY3QgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMjIpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjEwLi4udjAuNzcuMTEKCiMjIyBbYHYwLjc3LjEwYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3JlbGVhc2VzL3RhZy92MC43Ny4xMCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuOS4uLnYwLjc3LjEwKQoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZpeDogU3VwcHJlc3Npbmcgd2FybmluZyBmb3IgY2F0YWxvZyB3aGVuIGRldGVybWluaW5nIGRlZmF1bHQgZmlsZSBuYW1lIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzNCkKLSAgIGZpeDogUmVtb3ZlIHdhcm5pbmcgbWVzc2FnZSBmb3IgdW5pbXBsZW1lbnRlZCBiYWNrZW5kcyBieSBbQCYjODIwMztsZXZrb2hpbWluc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2xldmtvaGltaW5zKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEzOCkKLSAgIGZpeDogRml4aW5nIG9wdGlvbmFsIGRlZmF1bHQgdGVtcGxhdGUgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTQxKQotICAgY2hvcmU6IHN0YWNrIGNvZGUgaW1wcm92ZW1lbnRzIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTM2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTM2KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny45Li4udjAuNzcuMTAKCiMjIyBbYHYwLjc3LjlgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcmVsZWFzZXMvdGFnL3YwLjc3LjkpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9jb21wYXJlL3YwLjc3LjguLi52MC43Ny45KQoKIyMjIyDwn5CbIEJ1ZyBmaXhlcwoKIyMjIyMgRmV0Y2hpbmcgT3V0cHV0cyBmcm9tIE5lc3RlZCBTdGFja3MKClJlc29sdmVkIGFuIGlzc3VlIHRoYXQgcHJldmVudGVkIHRoZSBjb3JyZWN0IHJldHJpZXZhbCBvZiBvdXRwdXRzIGZyb20gbmVzdGVkIHN0YWNrcy4KCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBmaXg6IGNvcnJlY3RlZCB0aGUgbG9naWMgZm9yIGZldGNoaW5nIG91dHB1dHMgZnJvbSBuZXN0ZWQgc3RhY2tzIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTI2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTI2KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny44Li4udjAuNzcuOQoKIyMjIFtgdjAuNzcuOGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuOCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuNy4uLnYwLjc3LjgpCgojIyMjIPCfk5YgRG9jdW1lbnRhdGlvbiBVcGRhdGVzCgpBIG5ldyBbcGVyZm9ybWFuY2UgZ3VpZGVdKGh0dHBzOi8vdGVycmFncnVudC5ncnVudHdvcmsuaW8vZG9jcy90cm91Ymxlc2hvb3RpbmcvcGVyZm9ybWFuY2UvKSBoYXMgYmVlbiBhZGRlZCB0byBUZXJyYWdydW50IGRvY3VtZW50YXRpb24gdG8gb2ZmZXIgZ3VpZGFuY2Ugb24gaG93IHBlcmZvcm1hbmNlIGNhbiBiZSBpbXByb3ZlZCB3aGVuIHVzaW5nIFRlcnJhZ3J1bnQgb3IgY29udHJpYnV0aW5nIHRvIHRoZSBUZXJyYWdydW50IGNvZGViYXNlLgoKVGhpcyBkb2N1bWVudGF0aW9uIHdpbGwgZXZvbHZlIG92ZXIgdGltZSwgYXMgbW9yZSBvcHRpb25hbCBvcHRpbWl6YXRpb25zIGJlY29tZSBhdmFpbGFibGUsIG9yIGFyZSBubyBsb25nZXIgbmVjZXNzYXJ5LCBhcyB0aGV5IGJlY29tZSBkZWZhdWx0IGJlaGF2aW9yLgoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZlYXQ6IEFkZCBwZXJmb3JtYW5jZSBndWlkZSBieSBbQCYjODIwMzt5aGFrYmFyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20veWhha2JhcikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMjApCi0gICBidWlsZChkZXBzKTogYnVtcCBydWJ5L3NldHVwLXJ1YnkgZnJvbSAxLjIyMS4wIHRvIDEuMjI5LjAgYnkgW0AmIzgyMDM7ZGVwZW5kYWJvdF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlcGVuZGFib3QpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTAwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTAwKQotICAgZml4OiBBZGRyZXNzaW5nIGNvbW1hcyBpbiBleHRlcm5hbCBJRHMgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTI4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTI4KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny43Li4udjAuNzcuOAoKIyMjIFtgdjAuNzcuN2BdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuNykKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuNi4uLnYwLjc3LjcpCgojIyMjIOKcqCBOZXcgRmVhdHVyZXMKClVzZXJzIGNhbiBub3cgY29uZmlndXJlIGEgY3VzdG9tIGRlZmF1bHQgdGVtcGxhdGUgZm9yIGBzY2FmZm9sZGAgYW5kIGBjYXRhbG9nYCBjb21tYW5kcyBpbiB0aGVpciBgY2F0YWxvZ2AgY29uZmlndXJhdGlvbiBibG9ja3MgbGlrZSBzbzoKCmBgYGhjbApjYXRhbG9nIHsKICBkZWZhdWx0X3RlbXBsYXRlID0gImdpdEBnaXRodWIuY29tL2FjbWUvZXhhbXBsZS5naXQvL3BhdGgvdG8vdGVtcGxhdGUiCn0KYGBgCgpGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgW2NhdGFsb2cgZmVhdHVyZV0oaHR0cHM6Ly90ZXJyYWdydW50LmdydW50d29yay5pby9kb2NzL2ZlYXR1cmVzL2NhdGFsb2cvI2N1c3RvbS10ZW1wbGF0ZXMtZm9yLXNjYWZmb2xkaW5nKS4KClNwZWNpYWwgdGhhbmtzIHRvIFtAJiM4MjAzO3RnZWlqZ10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3RnZWlqZykgZm9yIGNvbnRyaWJ1dGluZyB0aGlzIGZlYXR1cmUhCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogQWRkaW5nIGN1c3RvbSBkZWZhdWx0IHRlbXBsYXRlIFsjJiM4MjAzOzM2NThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9pc3N1ZXMvMzY1OCkgYnkgW0AmIzgyMDM7dGdlaWpnXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vdGdlaWpnKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAzNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDAzNSkKLSAgIGZpeDogVXBkYXRpbmcgZG9jcyBhZnRlciBbIyYjODIwMzs0MDM1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvaXNzdWVzLzQwMzUpIGJ5IFtAJiM4MjAzO3loYWtiYXJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS95aGFrYmFyKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDExN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDExNykKLSAgIGNob3JlOiBzdGFja3MgZG9jdW1lbnRhdGlvbiBpbXByb3ZlbWVudHMgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMTQpCgojIyMjIE5ldyBDb250cmlidXRvcnMKCi0gICBbQCYjODIwMzt0Z2VpamddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS90Z2VpamcpIG1hZGUgdGhlaXIgZmlyc3QgY29udHJpYnV0aW9uIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDM1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MDM1KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny42Li4udjAuNzcuNwoKIyMjIFtgdjAuNzcuNmBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuNikKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuNS4uLnYwLjc3LjYpCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZml4OiBDb3JyZWN0bHkgaWdub3JlIGxvY2sgdGFibGUgZW5jcnlwdGlvbiBzZXR0aW5nIHRvIHByZXZlbnQgdW5pbnRlbmRlZCBjb25maWd1cmF0aW9uIG92ZXJyaWRlcyBieSBbQCYjODIwMztsZXZrb2hpbWluc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2xldmtvaGltaW5zKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDExMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDExMikKLSAgIGZpeDogSW50cm9kdWNlZCBzdHJpY3RlciBjb25zdHJhaW50cyBmb3IgZGV0ZWN0aW5nIHN0YWNrIGNvbmZpZ3VyYXRpb24gZmlsZXMgYnkgW0AmIzgyMDM7ZGVuaXMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9kZW5pczI1NikgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9wdWxsLzQxMTMpCi0gICBmZWF0OiBFbmFibGVkIHBhcnNpbmcgb2Ygc3RhY2sgY29uZmlndXJhdGlvbiBkaXJlY3RseSBmcm9tIGEgc3RyaW5nIGlucHV0IGZvciBlbmhhbmNlZCBpbnRlZ3JhdGlvbiB3aXRoIDNyZCBwYXJ0eSBjb2RlIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTEwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTEwKQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny41Li4udjAuNzcuNgoKIyMjIFtgdjAuNzcuNWBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuNSkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuNC4uLnYwLjc3LjUpCgojIyMjIFdoYXQncyBDaGFuZ2VkCgotICAgZmVhdDogYWRkZWQgc3VwcG9ydCBmb3IgT3BlblRlbGVtZXRyeSBpbiBgc3RhY2tgIGNvbW1hbmRzIHRvIGVuYWJsZSBlbmhhbmNlZCBvYnNlcnZhYmlsaXR5IGFuZCB0cmFjaW5nIGJ5IFtAJiM4MjAzO2RlbmlzMjU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZGVuaXMyNTYpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTA5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTA5KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny40Li4udjAuNzcuNQoKIyMjIFtgdjAuNzcuNGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9ncnVudHdvcmstaW8vdGVycmFncnVudC9yZWxlYXNlcy90YWcvdjAuNzcuNCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L2NvbXBhcmUvdjAuNzcuMy4uLnYwLjc3LjQpCgojIyMjIPCfkJsgQnVnIGZpeGVzCgojIyMjIyBOZXdsaW5lcyByZWR1Y2VkIGluIEVycm9yIExvZ2dpbmcgZm9yIENvbmZpZ3VyYXRpb24gRXJyb3JzCgpMb2dnaW5nIGZvciBjb25maWd1cmF0aW9uIGVycm9ycyBoYXMgYmVlbiBjb21wYWN0ZWQgdG8gcmVkdWNlIG5vaXNlLCBhbmQgbWFrZSBlcnJvcnMgZWFzaWVyIHRvIHJlYWQuCgpgYGAKCiMjIyBCZWZvcmUKMTQ6MDk6MjUuODkyIEVSUk9SICBFcnJvcjogRXJyb3IgaW4gZnVuY3Rpb24gY2FsbAoKMTQ6MDk6MjUuODkyIEVSUk9SICAgIG9uIHRlcnJhZ3J1bnQuaGNsIGxpbmUgMywgaW4gbG9jYWxzOgoKMTQ6MDk6MjUuODkyIEVSUk9SICAgICAzOiAgICAgICByZXF1aXJlc19hdXRoID0gcnVuX2NtZCgiZXhpdCIsICIxIikgLy8gaW50ZW50aW9uYWwgZXJyb3IKCjE0OjA5OjI1Ljg5MiBFUlJPUgoKMTQ6MDk6MjUuODkyIEVSUk9SICBDYWxsIHRvIGZ1bmN0aW9uICJydW5fY21kIiBmYWlsZWQ6IEZhaWxlZCB0byBleGVjdXRlICJleGl0IDEiIGluIC4KCmV4ZWM6ICJleGl0IjogZXhlY3V0YWJsZSBmaWxlIG5vdCBmb3VuZCBpbiAkUEFUSC4KCmBgYAoKICAgICMjIyBBZnRlcgogICAgMTU6MTk6NTAuOTM3IEVSUk9SICBFcnJvcjogRXJyb3IgaW4gZnVuY3Rpb24gY2FsbAogICAgMTU6MTk6NTAuOTM3IEVSUk9SICAgIG9uIHRlcnJhZ3J1bnQuaGNsIGxpbmUgMywgaW4gbG9jYWxzOgogICAgMTU6MTk6NTAuOTM3IEVSUk9SICBFcnJvcjogRXJyb3IgaW4gZnVuY3Rpb24gY2FsbAogICAgMTU6MTk6NTAuOTM3IEVSUk9SICAgIG9uIHRlcnJhZ3J1bnQuaGNsIGxpbmUgMywgaW4gbG9jYWxzOgogICAgMTU6MTk6NTAuOTM3IEVSUk9SICAgICAzOiAgICAgICByZXF1aXJlc19hdXRoID0gcnVuX2NtZCgiZXhpdCIsICIxIikgLy8gaW50ZW50aW9uYWwgZXJyb3IKICAgIDE1OjE5OjUwLjkzNyBFUlJPUiAgICAgMzogICAgICAgZmFpbCAgID0gcnVuX2NtZCgiZXhpdCIsICIxIikgLy8gaW50ZW50aW9uYWwgZXJyb3IKICAgIDE1OjE5OjUwLjkzNyBFUlJPUiAgQ2FsbCB0byBmdW5jdGlvbiAicnVuX2NtZCIgZmFpbGVkOiBGYWlsZWQgdG8gZXhlY3V0ZSAiZXhpdCAxIiBpbiAuCiAgICAxNToxOTo1MC45MzcgRVJST1IgIGV4ZWM6ICJleGl0IjogZXhlY3V0YWJsZSBmaWxlIG5vdCBmb3VuZCBpbiAkUEFUSC4KCiMjIyMjIEltcHJvdmVkIEN5Y2xlIERldGVjdGlvbiBMb2dpYyBmb3IgYHN0YWNrIGdlbmVyYXRlYAoKT24gdGhlIGRlZmF1bHQgZmlsZXN5c3RlbSBmb3IgbWFjT1MsIHBhdGggbGVuZ3RoIHdhcyBsaWtlbHkgdG8gcmVzdWx0IGluIGFuIGVycm9yIGJlZm9yZSBpbnRlcm5hbCBjeWNsZSBkZXRlY3Rpb24gbG9naWMsIHNvIGN5Y2xlIGRldGVjdGlvbiB3YXMgdXBkYXRlZCB0byBsZXZlcmFnZSBhIG1heGltdW0gcGF0aCBsZW5ndGggb2YgMTAyNCBjaGFyYWN0ZXJzIGFzIGFuIGVhcmxpZXIgZXhpdCBmb3IgYWxsIG9wZXJhdGluZyBzeXN0ZW1zLgoKIyMjIyMgRXhjZXNzaXZlIHdhcm5pbmcgZm9yIGJvb3RzdHJhcCByZXF1aXJlbWVudCByZXNvbHZlZAoKSW50ZXJuYWwgbG9naWMgZm9yIGRldGVybWluYXRpb24gdGhhdCBiYWNrZW5kcyByZXF1aXJlZCBib290c3RyYXBwaW5nIHdhcyBhZGp1c3RlZCB0byBubyBsb25nZXIgbGV2ZXJhZ2UgdGhlIHZhbHVlIG9mIHRoZSBPcGVuVG9mdSBzdGF0ZSBmaWxlLgoKV2hpbGUgY2hlYXBlciB0aGFuIG1ha2luZyBhIG5ldHdvcmsgcmVxdWVzdCB0byBhc3Nlc3MgdGhlIGN1cnJlbnQgc3RhdGUgb2YgYmFja2VuZCByZXNvdXJjZXMsIGl0IGFsc28gcmVzdWx0ZWQgaW4gZmFsc2UgbmVnYXRpdmVzLCB3aGljaCB0cmlnZ2VyZWQgZXhjZXNzaXZlIGJhY2tlbmQgYm9vdHN0cmFwIHdhcm5pbmdzLgoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIGZpeDogTmV3IGxpbmVzIGluIFRGIGRpYWdub3N0aWMgbG9nIGJ5IFtAJiM4MjAzO2xldmtvaGltaW5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbGV2a29oaW1pbnMpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTA4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTA4KQotICAgZml4OiBTdGFjayBjeWNsZXMgZGV0ZWN0aW9uIGltcHJvdmVtZW50cyBieSBbQCYjODIwMztkZW5pczI1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2RlbmlzMjU2KSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEwNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dydW50d29yay1pby90ZXJyYWdydW50L3B1bGwvNDEwNikKLSAgIGZpeDogRml4aW5nIGV4Y2Vzc2l2ZSB3YXJuaW5nIGZvciBib290c3RyYXAgYnkgW0AmIzgyMDM7eWhha2Jhcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3loYWtiYXIpIGluIFtodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTA3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvcHVsbC80MTA3KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vZ3J1bnR3b3JrLWlvL3RlcnJhZ3J1bnQvY29tcGFyZS92MC43Ny4zLi4udjAuNzcuNAoKPC9kZXRhaWxzPgoKLS0tCgojIyMgQ29uZmlndXJhdGlvbgoK8J+ThSAqKlNjaGVkdWxlKio6IEJyYW5jaCBjcmVhdGlvbiAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKSwgQXV0b21lcmdlIC0gQXQgYW55IHRpbWUgKG5vIHNjaGVkdWxlIGRlZmluZWQpLgoK8J+apiAqKkF1dG9tZXJnZSoqOiBEaXNhYmxlZCBieSBjb25maWcuIFBsZWFzZSBtZXJnZSB0aGlzIG1hbnVhbGx5IG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQuCgrimbsgKipSZWJhc2luZyoqOiBXaGVuZXZlciBQUiBiZWNvbWVzIGNvbmZsaWN0ZWQsIG9yIHlvdSB0aWNrIHRoZSByZWJhc2UvcmV0cnkgY2hlY2tib3guCgrwn5SVICoqSWdub3JlKio6IENsb3NlIHRoaXMgUFIgYW5kIHlvdSB3b24ndCBiZSByZW1pbmRlZCBhYm91dCB0aGlzIHVwZGF0ZSBhZ2Fpbi4KCi0tLQoKIC0gWyBdIDwhLS0gcmViYXNlLWNoZWNrIC0tPklmIHlvdSB3YW50IHRvIHJlYmFzZS9yZXRyeSB0aGlzIFBSLCBjaGVjayB0aGlzIGJveAoKLS0tCgpUaGlzIFBSIHdhcyBnZW5lcmF0ZWQgYnkgW01lbmQgUmVub3ZhdGVdKGh0dHBzOi8vbWVuZC5pby9yZW5vdmF0ZS8pLiBWaWV3IHRoZSBbcmVwb3NpdG9yeSBqb2IgbG9nXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2dpdGh1Yi9vc2lzbS90ZXN0YmVkKS4KPCEtLXJlbm92YXRlLWRlYnVnOmV5SmpjbVZoZEdWa1NXNVdaWElpT2lJek9TNHlNRGN1TVNJc0luVndaR0YwWldSSmJsWmxjaUk2SWpNNUxqSTBPQzQwSWl3aWRHRnlaMlYwUW5KaGJtTm9Jam9pYldGcGJpSXNJbXhoWW1Wc2N5STZXeUp5Wlc1dmRtRjBaU0pkZlE9PS0tPgo=
      patchset: 2cea4a87e6504f14ca1d85c3a87274dc3ed6ecea
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: fa94074a33c2a4b1ff3eaadb063e1f29046bf671
          trusted/project_1/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: 601b7528a7c64221639bd0dcf51b1ab7534cc884
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: c212ef9fff456ceede260bdfaaf903f6e2d2313a
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: fa94074a33c2a4b1ff3eaadb063e1f29046bf671
          untrusted/project_2/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: 601b7528a7c64221639bd0dcf51b1ab7534cc884
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/ansible-lint/run.yaml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_0/zuul-jobs
            link_target: untrusted/project_0/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_0/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_1/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_1/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
      post_review: false
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/testbed
        name: osism/testbed
        short_name: testbed
        src_dir: src/github.com/osism/testbed
      projects:
        github.com/osism/testbed:
          canonical_hostname: github.com
          canonical_name: github.com/osism/testbed
          checkout: main
          checkout_description: zuul branch
          commit: 412a31ba1bf71d9717cc719ffd2d93e33c1d9b8c
          name: osism/testbed
          required: false
          short_name: testbed
          src_dir: src/github.com/osism/testbed
      ref: refs/pull/2654/head
      resources: {}
      tenant: osism
      timeout: 1800
      voting: true
