all:
  children:
    cephs:
      hosts:
        instance: null
    computes:
      hosts:
        instance: null
    controllers:
      hosts:
        instance: null
    zuul_unreachable:
      hosts: {}
  hosts:
    instance:
      ansible_connection: ssh
      ansible_host: 199.19.213.7
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      ceph_conf_overrides:
      - option: mon allow pool size one
        section: global
        value: true
      - option: osd crush chooseleaf type
        section: global
        value: 0
      - option: auth allow insecure global id reclaim
        section: mon
        value: false
      ceph_csi_rbd_helm_values:
        provisioner:
          replicaCount: 1
      ceph_fsid: 4837cbf8-4f90-4300-b3f6-726c9b9f89b4
      ceph_osd_devices:
      - /dev/ceph-{{ inventory_hostname_short }}-osd0/data
      - /dev/ceph-{{ inventory_hostname_short }}-osd1/data
      - /dev/ceph-{{ inventory_hostname_short }}-osd2/data
      cilium_helm_values:
        operator:
          replicas: 1
      cilium_ipv4_cidr: 172.24.0.0/16
      csi_driver: rbd
      kube_vip_address: 172.17.0.100
      kube_vip_interface: '{{ ansible_facts[''default_ipv4''].interface }}'
      kubernetes_hostname: '{{ ansible_facts[''default_ipv4''].address }}'
      molecule_scenario: csi
      nodepool:
        az: nova
        cloud: public
        external_id: 530287ba-023b-44b6-9382-d16314d39fd5
        host_id: a1dbe10ed74b13a05675ad3767474cd2ce77af856f337973ad195bac
        interface_ip: 199.19.213.7
        label: ubuntu-jammy
        node_properties: {}
        private_ipv4: 199.19.213.7
        private_ipv6: null
        provider: yul1
        public_ipv4: 199.19.213.7
        public_ipv6: 2604:e100:1:0:f816:3eff:fec5:66b3
        region: ca-ymq-1
        slot: null
      zuul_node:
        az: nova
        cloud: public
        external_id: 530287ba-023b-44b6-9382-d16314d39fd5
        host_id: a1dbe10ed74b13a05675ad3767474cd2ce77af856f337973ad195bac
        interface_ip: 199.19.213.7
        label: ubuntu-jammy
        node_properties: {}
        private_ipv4: 199.19.213.7
        private_ipv6: null
        provider: yul1
        public_ipv4: 199.19.213.7
        public_ipv6: 2604:e100:1:0:f816:3eff:fec5:66b3
        region: ca-ymq-1
        slot: null
        uuid: null
  vars:
    ceph_conf_overrides:
    - option: mon allow pool size one
      section: global
      value: true
    - option: osd crush chooseleaf type
      section: global
      value: 0
    - option: auth allow insecure global id reclaim
      section: mon
      value: false
    ceph_csi_rbd_helm_values:
      provisioner:
        replicaCount: 1
    ceph_fsid: 4837cbf8-4f90-4300-b3f6-726c9b9f89b4
    ceph_osd_devices:
    - /dev/ceph-{{ inventory_hostname_short }}-osd0/data
    - /dev/ceph-{{ inventory_hostname_short }}-osd1/data
    - /dev/ceph-{{ inventory_hostname_short }}-osd2/data
    cilium_helm_values:
      operator:
        replicas: 1
    cilium_ipv4_cidr: 172.24.0.0/16
    csi_driver: rbd
    kube_vip_address: 172.17.0.100
    kube_vip_interface: '{{ ansible_facts[''default_ipv4''].interface }}'
    kubernetes_hostname: '{{ ansible_facts[''default_ipv4''].address }}'
    molecule_scenario: csi
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: zuul-config/zuul.d/jobs.yaml@main#1>'
      - '<Job molecule explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/zuul-jobs/zuul.d/ansible-jobs.yaml@main#1>'
      - '<Job atmosphere-molecule explicit: None implied: {MatchAny:{ImpliedBranchMatcher:stable/2024.1}}
        source: vexxhost/atmosphere/.zuul.yaml@stable/2024.1#17>'
      - '<Job atmosphere-molecule-csi explicit: None implied: {MatchAny:{ImpliedBranchMatcher:stable/2024.1}}
        source: vexxhost/atmosphere/.zuul.yaml@stable/2024.1#53>'
      - '<Job atmosphere-molecule-csi-rbd explicit: None implied: {MatchAny:{ImpliedBranchMatcher:stable/2024.1}}
        source: vexxhost/atmosphere/.zuul.yaml@stable/2024.1#66>'
      - '<Job atmosphere-molecule-csi-rbd explicit: None implied: None source: vexxhost/atmosphere/.zuul.yaml@stable/2024.1#72>'
      ansible_version: '9'
      attempts: 1
      branch: stable/2024.1
      build: 39b2fde127964980aed2b640e4b79098
      build_refs:
      - branch: stable/2024.1
        change: '2597'
        change_message: "fix(deps): update pxc (stable/2024.1)\n\nThis PR contains
          the following updates:\n\n| Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
          | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|---|---|\n|
          docker.io/percona/haproxy |  | patch | `2.8.14` \u2192 `2.8.18` | ![age](https://developer.mend.io/api/mc/badges/age/docker/docker.io%2fpercona%2fhaproxy/2.8.18?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/docker.io%2fpercona%2fhaproxy/2.8.14/2.8.18?slim=true)
          |\n| docker.io/percona/percona-xtradb-cluster-operator |  | minor | `1.17.0`
          \u2192 `1.19.0` | ![age](https://developer.mend.io/api/mc/badges/age/docker/docker.io%2fpercona%2fpercona-xtradb-cluster-operator/1.19.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/docker.io%2fpercona%2fpercona-xtradb-cluster-operator/1.17.0/1.19.0?slim=true)
          |\n| [github.com/percona/percona-xtradb-cluster-operator](https://redirect.github.com/percona/percona-xtradb-cluster-operator)
          | require | minor | `v1.16.1` \u2192 `v1.19.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fpercona%2fpercona-xtradb-cluster-operator/v1.19.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fpercona%2fpercona-xtradb-cluster-operator/v1.16.1/v1.19.0?slim=true)
          |\n| [percona/percona-xtradb-cluster-operator](https://redirect.github.com/percona/percona-xtradb-cluster-operator)
          |  | minor | `1.17.0` \u2192 `1.18.0` | ![age](https://developer.mend.io/api/mc/badges/age/github-releases/percona%2fpercona-xtradb-cluster-operator/1.18.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/percona%2fpercona-xtradb-cluster-operator/1.17.0/1.18.0?slim=true)
          |\n| [pxc-operator](https://docs.percona.com/percona-operator-for-mysql/pxc/)
          ([source](https://redirect.github.com/percona/percona-helm-charts)) |  |
          minor | `1.17.0` \u2192 `1.18.0` | ![age](https://developer.mend.io/api/mc/badges/age/helm/pxc-operator/1.18.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/helm/pxc-operator/1.17.0/1.18.0?slim=true)
          |\n| quay.io/prometheus/mysqld-exporter |  | minor | `v0.17.0` \u2192 `v0.18.0`
          | ![age](https://developer.mend.io/api/mc/badges/age/docker/quay.io%2fprometheus%2fmysqld-exporter/v0.18.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/quay.io%2fprometheus%2fmysqld-exporter/v0.17.0/v0.18.0?slim=true)
          |\n\n---\n\n### Release Notes\n\n<details>\n<summary>percona/percona-xtradb-cluster-operator
          (github.com/percona/percona-xtradb-cluster-operator)</summary>\n\n### [`v1.19.0`](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.18.0...v1.19.0)\n\n[Compare
          Source](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.18.0...v1.19.0)\n\n###
          [`v1.18.0`](https://redirect.github.com/percona/percona-xtradb-cluster-operator/releases/tag/v1.18.0)\n\n[Compare
          Source](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.17.0...v1.18.0)\n\n#####
          Release Highlights\n\nThis release of Percona Operator for MySQL based on
          Percona XtraDB Cluster includes the following new features and improvements:\n\n#####
          PMM3 support\n\nThe Operator is natively integrated with [PMM 3](https://www.percona.com/doc/percona-monitoring-and-management/3/index.html),
          enabling you to monitor the health and performance of your Percona Distribution
          for MySQL deployment and at the same time enjoy enhanced performance, new
          features, and improved security that PMM 3 provides.\n\nNote that the Operator
          supports both PMM2 and PMM3. The decision on what PMM version is used depends
          on the authentication method you provide in the Operator configuration:
          PMM2 uses API keys while PMM3 uses service account token. If the Operator
          configuration contains both authentication methods with non-empty values,
          PMM3 takes the priority.\n\nTo use PMM, ensure that the PMM client image
          is compatible with the PMM Server version. Check [Percona certified images](https://docs.percona.com/percona-operator-for-mysql/pxc/images.html)
          for the correct client image.\n\nFor how to configure monitoring with PMM,
          see the [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/monitoring.html).\n\n#####
          Improved monitoring for clusters in multi-region or multi-namespace deployments
          in PMM\n\nNow you can define a custom name for your clusters deployed in
          different data centers. This name helps Percona Management and Monitoring
          (PMM) Server to correctly recognize clusters as connected and monitor them
          as one deployment. Similarly, PMM Server identifies clusters deployed with
          the same names in different namespaces as separate ones and correctly displays
          performance metrics for you on dashboards.\n\nTo assign a custom name, define
          this configuration in the Custom Resource manifest for your cluster:\n\n```yaml\nspec:\n
          \ pmm:\n    customClusterName: testClusterName\n```\n\n##### More resilient
          database restores without matching user Secrets\n\nYou no longer need matching
          user Secrets between your backup and your target cluster to perform a restore.
          The Operator now has a post-restore step that changes user passwords in
          the restored database to the ones from the local Secret. Also, it creates
          missing system users and adds missing grants.\n\nThis flow is the same regardless
          of whether you restore to the same cluster or to a completely new one.\n\nThe
          removal of this major roadblock to have a Secret for restores makes your
          disaster recovery process smoother and more reliable. This enhancement makes
          managing databases on Kubernetes more robust and operator-friendly.\n\n#####
          Improved backup retention for streamlined management of scheduled backups
          in cloud storage\n\nA new backup retention configuration gives you more
          control over how backups are managed in storage and retained in Kubernetes.\n\nWith
          the `deleteFromStorage` flag , you can disable automatic deletion from AWS
          S3 or Azure Blob storage and instead rely on native cloud lifecycle policies.
          This makes backup cleanup more efficient and better aligned with flexible
          storage strategies.\n\nThe legacy `keep` option is now deprecated and mapped
          to the new `retention` block for compatibility. We encourage you to start
          using the `backup.schedule.retention` configuration:\n\n```yaml\nschedule:\n
          \ - name: \"sat-night-backup\"\n    schedule: \"0 0 * * 6\"\n    retention:\n
          \     count: 3\n      type: count\n      deleteFromStorage: true\n    storageName:
          s3-us-west\n```\n\nNote that if you have both `backup.schedule.keep`  and
          `backup.schedule.retention`  defined, the `backup.schedule.retention` takes
          precedence.\n\n##### Added labels to identify the version of the Operator\n\nCustom
          Resource Definition (CRD) is compatible with the last three Operator versions.
          To know which Operator version is attached to it, we've added labels to
          all Custom Resource Definitions. The labels help you identify the current
          Operator version and decide if you need to update the CRD. To view the labels,
          run: `kubectl get crd perconaxtradbclusters.pxc.percona.com --show-labels`.\n\n#####
          Cross-site replication is now supported for Percona XtraDB Cluster 8.4\n\nCross-site
          replication is now available with Percona XtraDB Cluster 8.4.x, lifting
          one of the  limitations in the Operator for this database version. This
          enhancement marks a significant step toward general availability of Percona
          XtraDB Cluster 8.4 in the Operator by enabling multi-site deployments and
          improving resilience across distributed environments.\n\n##### Deprecation,
          Rename and Removal\n\n- The `pxc.expose.loadBalancerIP`, `haproxy.exposePrimary.loadBalancerIP`,
          `haproxy.exposeReplicas.loadBalancerIP` and `proxysql.expose.loadBalancerIP`
          keys are deprecated. The `loadBalancerIP` field is also deprecated upstream
          in Kubernetes\n  due to its inconsistent behavior across cloud providers
          and lack of dual-stack support. As a result, its usage is strongly discouraged.\n\n
          \ We recommend using cloud provider-specific annotations instead, as they
          offer more predictable and portable behavior for managing load balancer
          IP assignments.\n\n  The `pxc.expose.loadBalancerIP`, `haproxy.exposePrimary.loadBalancerIP`,
          `haproxy.exposeReplicas.loadBalancerIP` and `proxysql.expose.loadBalancerIP`
          keys are scheduled for removal in future releases.\n\n- The `backup.schedule.keep`
          field is deprecated and will be removed after release 1.21.0. We recommend
          using the `backup.schedule.retention` instead as follows:\n\n  ```yaml\n
          \ schedule:\n    - name: \"sat-night-backup\"\n      schedule: \"0 0 **
          6\"\n      retention:\n        count: 3\n        type: count\n        deleteFromStorage:
          true\n      storageName: s3-us-west\n  ```\n\n- New repositories for Percona
          XtraBackup and Logcollector\n\n  Now the Operator uses the official Percona
          Docker images for the `percona-xtrabackup` and `logcollector` components.
          Pay attention to the new image repositories when you upgrade the Operator
          and the database. Check the [Percona certified images](https://docs.percona.com/percona-operator-for-mysql/pxc/images.html)
          for exact image names.\n\n- Changes for Helm charts:\n\n  - PMM3 is now
          the default. To keep using PMM2, set the `pmm.tag: 2.44.1`\n  - If you install
          or upgrade the Operator with default manifests using Helm charts on Openshift
          4.19, you must use the `docker.io` registry prefix to guarantee successful
          download from the DockerHub `percona-xtradb-cluster` repository. Read the
          [Considerations for using OpenShift 4.19](#considerations-for-using-openshift-419)
          section for more information.\n\n##### Known limitations\n\n##### Considerations
          for using OpenShift 4.19\n\nStarting with OpenShift 4.19, the way images
          with not fully qualified names are pulled has changed for repositories that
          share the same repository name on DockerHub and Red Hat Marketplace. By
          default the tags are pulled from Red Hat Marketplace. Specifying not fully
          qualified image names may result in the `ImagePullBackOff` error.\n\n- **OLM
          installation:** Images are provided with the fully qualified names and are
          pulled from the Red Hat Marketplace/DockerHub registry.\n- **Manual install/update
          with default manifests:** Images must use the `docker.io` registry prefix
          to guarantee successful download from the Dockerhub `percona-xtradb-cluster`
          repository.\n\nSee our documentation for [manual installation](https://docs.percona.com/percona-operator-for-mysql/pxc/openshift.html#install-the-operator-via-the-command-line-interface)
          or [update](https://docs.percona.com/percona-operator-for-mysql/pxc/update_openshift.html#update-via-the-command-line-interface).\n\n#####
          Changleog\n\n##### New Features\n\n- [K8SPXC-1284](https://perconadev.atlassian.net/browse/K8SPXC-1284)
          - Add the ability to configure protocol for peer-list DNS SRV lookups\n\n-
          [K8SPXC-1599](https://perconadev.atlassian.net/browse/K8SPXC-1599) - Allowed
          setting `loadBalancerClass` service type and using a custom implementation
          of a load balancer rather than the cloud provider default one\n\n##### Improvements\n\n-
          [K8SPXC-1375](https://perconadev.atlassian.net/browse/K8SPXC-1375) - Added
          a new retention configuration to allow users to delegate backup cleanup
          to cloud lifecycle policies (Thank you user Tristan for reporting this issue)\n\n-
          [K8SPXC-1376](https://perconadev.atlassian.net/browse/K8SPXC-1376) - Added
          the ability to restore from backup without a matching Secret resource\n\n-
          [K8SPXC-1399](https://perconadev.atlassian.net/browse/K8SPXC-1399) - Added
          a documentation how to set up a disaster recovery system and transfer workloads
          between sites\n\n- [K8SPXC-1415](https://perconadev.atlassian.net/browse/K8SPXC-1415)
          - Updated the `percona-xtrabackup` image to use the official `percona-xtrabackup`
          Docker image\n\n- [K8SPXC-1430](https://perconadev.atlassian.net/browse/K8SPXC-1430)
          - Improved handling of autogenerated certificates depending on the `delete-ssl`
          finalizer configuration\n\n- [K8SPXC-1448](https://perconadev.atlassian.net/browse/K8SPXC-1448),
          [K8SPXC-1449](https://perconadev.atlassian.net/browse/K8SPXC-1449) - Improved
          the `pvc-resize` test by using a custom storage class for EKS, reducing
          errors and improving the quota handling during resize\n\n- [K8SPXC-1450](https://perconadev.atlassian.net/browse/K8SPXC-1450)
          - Improved PVC resizing behavior when reducing the storage size by reverting
          the values when the quota is reached\n\n- [K8SPXC-1472](https://perconadev.atlassian.net/browse/K8SPXC-1472)
          - Deprecated the `loadBalancerIP` field due to its deprecation upstream\n\n-
          [K8SPXC-1513](https://perconadev.atlassian.net/browse/K8SPXC-1513) - Added
          PXC 8.4 support for version service\n\n- [K8SPXC-1529](https://perconadev.atlassian.net/browse/K8SPXC-1529)
          - Added support for cross-site replication with MySQL 8.4.0 by adding the
          use of `authentication_policy` instead of `default_authentication_plugin`\n\n-
          [K8SPXC-1553](https://perconadev.atlassian.net/browse/K8SPXC-1553) - Added
          support for PMM v3\n\n- [K8SPXC-1560](https://perconadev.atlassian.net/browse/K8SPXC-1560)
          - Added the warning about CRDs not being upgraded automatically after helm
          upgrade to the output\n\n- [K8SPXC-1566](https://perconadev.atlassian.net/browse/K8SPXC-1566)
          - Improved reconciliation of replicationChannels without proxy Pods by starting
          the database Pod bypassing the proxy (Thank you Justin Reasoner for contributing
          to this issue)\n\n- [K8SPXC-1569](https://perconadev.atlassian.net/browse/K8SPXC-1569)
          - Added Labels for Custom Resource Definitions (CRD) to identify the Operator
          version attached to them\n\n- [K8SPXC-1597](https://perconadev.atlassian.net/browse/K8SPXC-1597)
          - Improve the scheduled backups behavior for a cluster in an unhealthy state
          by postponing the job until the cluster reports the healthy status\n\n-
          [K8SPXC-1605](https://perconadev.atlassian.net/browse/K8SPXC-1605) - Introduced
          Azure CLI for checking if backup objects/folders exist in Azure storage\n\n-
          [K8SPXC-1612](https://perconadev.atlassian.net/browse/K8SPXC-1612) - Added
          the `imagePullSecrets` for PMM image\n\n- [K8SPXC-1615](https://perconadev.atlassian.net/browse/K8SPXC-1615)
          - Added the ability to define a custom cluster name for `pmm-admin` component\n\n-
          [K8SPXC-1624](https://perconadev.atlassian.net/browse/K8SPXC-1624) - Deleted
          deprecated finalizers code\n\n- [K8SPXC-1669](https://perconadev.atlassian.net/browse/K8SPXC-1669)
          - Improve the backup flow by generating a default endpoint URL for a storage
          from a region if it is not provided (Thank you Bernard Grymonpon for reporting
          this issue)\n\n- [K8SPXC-1677](https://perconadev.atlassian.net/browse/K8SPXC-1677)
          - Document the changed behavior with pulling images for default manifests
          on OpenShift 4.19 and update install and update instructions\n\n##### Bugs
          Fixed\n\n- [K8SPXC-1312](https://perconadev.atlassian.net/browse/K8SPXC-1312)
          - Fixed the issue with labels not being updated automatically for point-in-time
          recovery deployment upon Custom Resource changes\n\n- [K8SPXC-1347](https://perconadev.atlassian.net/browse/K8SPXC-1347)
          - Fixed the issue with point-in-time recovery failing due to TLS configuration
          mismatch between the server and the point-in-time recovery job by configuring
          it to use TLS if is required by the server.\n\n- [K8SPXC-1382](https://perconadev.atlassian.net/browse/K8SPXC-1382)
          - Fixed the issue with backup failing on AWS if using IAM profile without
          credentialsSecret by using credentialsSecret only when explicitly specified
          and relying on IAM roles instead (Thank you Itiel Olenick for reporting
          this issue)\n\n- [K8SPXC-1541](https://perconadev.atlassian.net/browse/K8SPXC-1541)
          - Fixed Telemetry module to to consider both empty string \"\" and comma
          separated namespaces in cluster-wide mode\n\n- [K8SPXC-1548](https://perconadev.atlassian.net/browse/K8SPXC-1548)
          Fixed the issue with deleting old backups on Google Cloud Storage by url-decoding
          the object path before deleting it (Thank you Mateusz Gruszkiewicz for reporting
          this issue)\n\n- [K8SPXC-1631](https://perconadev.atlassian.net/browse/K8SPXC-1631)
          - Fixed the issue with the Operator restarting pod-0 after the cluster is
          ready. The issue is caused by ConfigMap and StatefulSet being created too
          close to each other and Kubernetes API can't return the newly created ConfigMap
          before creating the StatefulSet. The issue is fixed by reconciling the StatefulSet
          after the reconciliation of ConfigMap is completed.\n\n- [K8SPXC-1664](https://perconadev.atlassian.net/browse/K8SPXC-1664)
          - Fixed the use of the proper script to check PXC nodes when adding them
          by HAProxy\n\n##### Supported Software\n\nThe Operator was developed and
          tested with the following software:\n\n- Percona XtraDB Cluster versions
          8.4.5-5.1 (Tech preview), 8.0.42-33.1, and 5.7.44-31.65\n- Percona XtraBackup
          versions 8.4.0-3, 8.0.35-34.1, and 2.4.29\n- HAProxy 2.8.15-1\n- ProxySQL
          2.7.3\n- LogCollector based on fluent-bit 4.0.1\n- PMM Client 2.44.1 and
          3.3.1\n\nOther options may also work but have not been tested.\n\n#####
          Supported Platforms\n\nPercona Operators are designed for compatibility
          with all [CNCF-certified](https://www.cncf.io/training/certification/software-conformance/)
          Kubernetes distributions. Our release process includes targeted testing
          and validation on major cloud provider platforms and OpenShift, as detailed
          below for Operator version 1.16.0:\n\n- [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine)
          1.30 - 1.33\n- [Amazon Elastic Container Service for Kubernetes (EKS)](https://aws.amazon.com)
          1.30 - 1.33\n- [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/)
          1.30 - 1.33\n- [OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift)
          4.15 - 4.19\n- [Minikube](https://minikube.sigs.k8s.io/docs/) 1.36.0 based
          on Kubernetes 1.33.1\n\nThis list only includes the platforms that the Percona
          Operators are specifically tested on as part of the release process. Other
          Kubernetes flavors and versions depend on the backward compatibility offered
          by Kubernetes itself.\n\n### [`v1.17.0`](https://redirect.github.com/percona/percona-xtradb-cluster-operator/releases/tag/v1.17.0)\n\n[Compare
          Source](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.16.1...v1.17.0)\n\n####
          Release Highlights\n\n##### Improved observability for HAProxy and ProxySQL\n\nGet
          insights into the HAProxy and ProxySQL performance by connecting to their
          statistics pages. Use the `cluster-name-haproxy:8084` and `cluster-name-proxysql:6070`
          endpoints to do so. Learn about other available ports in the [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/haproxy-conf.html).\n\n#####
          Improved cluster load management during backups\n\nIf parallel backups overload
          your cluster, you can turn off parallel execution to prevent this. Previously,
          this meant that you could only run one backup at a time - no new backups
          could start until the current one was finished. Now, the Operator queues
          backups and runs them one after another automatically. You can fine-tune
          the backup sequence by setting the start time for all backups or for a specific
          on-demand one using the [`spec.backup.startingDeadlineSeconds`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#backupstartingdeadlineseconds)
          Custom Resource option. This provides greater control over backup operations.\n\nAnother
          improvement is for the case when your database cluster becomes unhealthy,
          for example, when a Pod crashes or restarts. The Operator suspends running
          backups to reduce the cluster's load. Once the cluster recovers and reports
          a Ready status, the Operator resumes the suspended backup. To further offload
          the cluster during an unhealthy state, you can configure how long a backup
          remains suspended by using the [`spec.backup.suspendedDeadlineSeconds`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#backupsuspendeddeadlineseconds)
          Custom Resource option. If this time expires before the cluster recovers,
          the backup is marked as \"failed.\"\n\n##### Monitor PMM Client health and
          status\n\nPercona Monitoring and Management (PMM) is a great tool to [monitor
          the health of your database cluster](https://docs.percona.com/percona-operator-for-mysql/pxc/monitoring.html).
          Now you can also learn if PMM itself is healthy using probes - a Kubernetes
          diagnostics mechanism to check the health and status of containers. Use
          the [`spec.pmm.readinessProbes.*`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#pmmreadinessprobesinitialdelayseconds)
          and [`spec.pmm.livenessProbes.*`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#pmmlivenessprobesinitialdelayseconds)
          Custom Resource options to fine-tune Readiness and Liveness probes for PMM
          Client.\n\n##### Improved observability of binary log backups\n\nGet insights
          into the success and failure rates of binlog operations, timeliness of processing
          and uploads and potential gaps or inconsistencies in binlog data with the
          Prometheus metrics added for the Operator. Gather this data by connecting
          to the `<pitr-pod-service>:8080/metrics` endpoint. Learn more about the
          available metrics in the [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/backups-pitr.html#binary-logs-statistics).\n\n####
          Deprecation, Rename and Removal\n\nThe `spec.haproxy.exposePrimary.enabled`
          field is deprecated. If enabled via the `spec.haproxy.enabled`, the HAProxy
          primary service is already exposed.\n\n#### New Features\n\n- [K8SPXC-747](https://perconadev.atlassian.net/browse/K8SPXC-747),
          [K8SPXC-1473](https://perconadev.atlassian.net/browse/K8SPXC-1473) - Add
          the ability to access the statistics pages for HAProxy and ProxySQL\n\n-
          [K8SPXC-1366](https://perconadev.atlassian.net/browse/K8SPXC-1366) - Add
          the ability to queue backups and run them sequentially, and to optimize
          the cluster load with the ability to suspend backups for an unhealthy cluster.
          A user can assign the start time and suspension time to backups to manage
          them better.\n\n- [K8SPXC-1432](https://perconadev.atlassian.net/browse/K8SPXC-1432)
          - Enable users to configure cluster-wide Operator deployments in OpenShift
          certified catalog using OLM.\n\n#### Improvements\n\n- [K8SPXC-1367](https://perconadev.atlassian.net/browse/K8SPXC-1367)
          - Now a user can configure Readiness and Liveness probes for PMM Client
          container to check its health and status\n\n- [K8SPXC-1461](https://perconadev.atlassian.net/browse/K8SPXC-1461)
          - Improve logging for resizing PVC with the information about successful
          and failed PVC resize. Log errors on resize attempts if the Storage Class
          doesn't support resizing.\n\n- [K8SPXC-1466](https://perconadev.atlassian.net/browse/K8SPXC-1466)
          - Mark the containers that provide the service as default ones with the
          annotation. This enables a user to connect to a Pod without explicitly specifying
          a container.\n\n- [K8SPXC-1473](https://perconadev.atlassian.net/browse/K8SPXC-1473)
          - Add the ability to connect to the built-in statistics pages for HAProxy
          and ProxySQL by exposing the ports for those pages\n\n- [K8SPXC-1475](https://perconadev.atlassian.net/browse/K8SPXC-1475)
          - Update the backup image to use AWS CLI instead of MinIO CLI due to the
          license change\n\n- [K8SPXC-1510](https://perconadev.atlassian.net/browse/K8SPXC-1510)
          - Add the ability to suppress messages about the use of deprecated features
          in MySQL Error Log by adding the `log_error_suppression_list` key from the
          `my.cnf` configuration file and defining the message number in the `spec.pxc.configuration`
          subsection of the Custom Resource manifest. See [how to change MySQL options](https://docs.percona.com/percona-operator-for-mysql/pxc/options.html)
          for steps. This improves readability for MySQL error log.\n\n- [K8SPXC-1512](https://perconadev.atlassian.net/browse/K8SPXC-1512)
          - For Percona XtraDB Cluster version 8.4 and above, binary log user defined
          functions for point-in-time recovery (`binlog_utils_udf`) are now installed
          as a component instead of a plugin. This improves their compatibility across
          platforms and provides automatic dependency handling.\n\n- [K8SPXC-1542](https://perconadev.atlassian.net/browse/K8SPXC-1542)
          - Improve binlog upload for large files to Azure blob storage with the ability
          to define the block size and the number of concurrent writers for the upload
          (Thanks to user dcaputo-harmoni for contribution)\n\n- [K8SPXC-1543](https://perconadev.atlassian.net/browse/K8SPXC-1543)
          - Set PITR controller reference for binlog-collector deployment the same
          way as it's set for PXC and proxy StatefulSets. This creates a connection
          between PITR deployment and cluster resource (Thank you Vlad Gusev for the
          contribution)\n\n- [K8SPXC-1544](https://perconadev.atlassian.net/browse/K8SPXC-1544)
          - Improve observability of binlog collector by adding the support of basic
          Prometheus metrics (Thank you Vlad Gusev for the contribution)\n\n- [K8SPXC-1567](https://perconadev.atlassian.net/browse/K8SPXC-1567)
          - Normalize duplicate slashes if the bucket path for binlog collector ends
          with a slash (`/`) (Thank you Vlad Gusev for the contribution)\n\n- [K8SPXC-1596](https://perconadev.atlassian.net/browse/K8SPXC-1596)
          - Assign a correct status to a backup if data upload fails due to incomplete
          backup\n\n- [K8SPXC-1620](https://perconadev.atlassian.net/browse/K8SPXC-1620)
          - Fixed the issue with a failing backup by adding a retry logic to the cloud
          storage cleanup task to check for uploaded files and clean them up before
          uploading new files\n\n#### Bugs Fixed\n\n- [K8SPXC-1152](https://perconadev.atlassian.net/browse/K8SPXC-1152)
          Fixed the issue with the restore process being stuck when the Operator is
          restarted by setting annotations on the `perconaxtradbclusterrestores` object\n\n-
          [K8SPXC-1482](https://perconadev.atlassian.net/browse/K8SPXC-1482) Fixed
          the issue with the excessive connection resets on every pod recreation because
          the cluster's peer-list is not aware of Time To Live (TTL) defined for Kubernetes
          DNS records. Now there's a 30 second waiting period after a peer update
          (Thank you Vlad Gusev for reporting this issue and contributing to it)\n\n-
          [K8SPXC-1483](https://perconadev.atlassian.net/browse/K8SPXC-1483) - Fixed
          the bug where the point-in-time recovery collector process hangs if `mysqlbinlog`
          cannot connect to the database and start. Now the named pipeline is created
          with the `O_RDONLY` (Open for Read Only) and `O_NONBLOCK` (Non-Blocking
          Mode) to unlock the point-in-time recovery collector process.  (Thank you
          Vlad Gusev for reporting this issue and contributing to it)\n\n- [K8SPXC-1509](https://perconadev.atlassian.net/browse/K8SPXC-1509)
          - Fixed the bug where the cluster enters the error state temporarily if
          point-in-time is enabled for it.\n\n- [K8SPXC-1534](https://perconadev.atlassian.net/browse/K8SPXC-1534)
          - Fixed the issue with the inconsistent secret reconciliation by improving
          the controller's behavior to timely sync the secret cache and create an
          internal Secret immediately after its reconciliation.\n\n- [K8SPXC-1538](https://perconadev.atlassian.net/browse/K8SPXC-1538)
          - Fixed the issue with the Operator failing when it tries to reconcile the
          Custom Resource for the `haproxy-replica` service if the `haproxy-primary`
          service has the type `LoadBalancer` and the `LoadBalancerSourceRanges` value
          defined. Now the `haproxy-replica` service inherits this configuration.\n\n-
          [K8SPXC-1546](https://perconadev.atlassian.net/browse/K8SPXC-1546), [K8SPXC-1549](https://perconadev.atlassian.net/browse/K8SPXC-1549)
          -  Fixed the issue with the PITR pod crashing on attempt to assign a GTID\n
          \ set to each binlog if the database cluster has a large number of binlogs
          by caching the `binlog->gtid` set pairs\n\n- [K8SPXC-1547](https://perconadev.atlassian.net/browse/K8SPXC-1547)
          - Removed the outdated example from the `backup.yaml` manifest and update
          the documentation how to track backup progress\n\n- [K8SPXC-1616](https://perconadev.atlassian.net/browse/K8SPXC-1616)
          - Fixed a bug where the ProxySQL fails to be configured if the password
          for a `proxysqladmin` user starts with a star (`*`) character by reporting
          an error and making the Operator regenerate a new password that doesn't
          start with a star (Thank you Chris Fidao for reporting this issue and contribution)\n\n####
          Supported Software\n\nThe Operator was developed and tested with the following
          software:\n\n- Percona XtraDB Cluster versions 8.4.3-3.1 (Tech preview),
          8.0.41-32.1, and 5.7.44-31.65\n- Percona XtraBackup versions 8.4.0-1, 8.0.35-32,
          and 2.4.29\n- HAProxy 2.8.14\n- ProxySQL 2.7.1-1\n- LogCollector based on
          fluent-bit 4.0.0\n- PMM Client 2.44.0\n\nOther options may also work but
          have not been tested.\n\n#### Supported Platforms\n\nPercona Operators are
          designed for compatibility with all [CNCF-certified :octicons-link-external-16:](https://www.cncf.io/training/certification/software-conformance/)
          Kubernetes distributions. Our release process includes targeted testing
          and validation on major cloud provider platforms and OpenShift, as detailed
          below for Operator version 1.16.0:\n\n- [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine)
          1.29 - 1.32\n- [Amazon Elastic Container Service for Kubernetes (EKS)](https://aws.amazon.com)
          1.30 - 1.32\n- [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/)
          1.30 - 1.32\n- [OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift)
          4.14 - 4.18\n- [Minikube](https://minikube.sigs.k8s.io/docs/) 1.35.0 based
          on Kubernetes 1.32.0\n\nThis list only includes the platforms that the Percona
          Operators are specifically tested on as part of the release process. Other
          Kubernetes flavors and versions depend on the backward compatibility offered
          by Kubernetes itself.\n\n</details>\n\n<details>\n<summary>percona/percona-helm-charts
          (pxc-operator)</summary>\n\n### [`v1.18.0`](https://redirect.github.com/percona/percona-helm-charts/releases/tag/pxc-operator-1.18.0)\n\n[Compare
          Source](https://redirect.github.com/percona/percona-helm-charts/compare/pxc-operator-1.17.0...pxc-operator-1.18.0)\n\nA
          Helm chart for deploying the Percona Operator for MySQL (based on Percona
          XtraDB Cluster)\n\nFor more information, please check official release notes:
          [Release Notes PXC Operator 1.18.0](https://docs.percona.com/percona-operator-for-mysql/pxc/ReleaseNotes/Kubernetes-Operator-for-PXC-RN1.18.0.html)\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\U0001F47B **Immortal**: This PR will
          be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions)
          if that's undesired.\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/vexxhost/atmosphere).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNjQuMCIsInVwZGF0ZWRJblZlciI6IjQyLjg1LjEiLCJ0YXJnZXRCcmFuY2giOiJzdGFibGUvMjAyNC4xIiwibGFiZWxzIjpbInNraXAtcmVsZWFzZS1ub3RlcyJdfQ==-->\n"
        change_url: https://github.com/vexxhost/atmosphere/pull/2597
        commit_id: 3cc19499fde0eccd0f6fba57d96557a04b15f762
        patchset: 3cc19499fde0eccd0f6fba57d96557a04b15f762
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere
          name: vexxhost/atmosphere
          short_name: atmosphere
        src_dir: src/github.com/vexxhost/atmosphere
        topic: null
      buildset: 45d4acf0244542a7bfb8cbbb54e17f0d
      buildset_refs:
      - branch: stable/2024.1
        change: '2597'
        change_message: "fix(deps): update pxc (stable/2024.1)\n\nThis PR contains
          the following updates:\n\n| Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
          | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|---|---|\n|
          docker.io/percona/haproxy |  | patch | `2.8.14` \u2192 `2.8.18` | ![age](https://developer.mend.io/api/mc/badges/age/docker/docker.io%2fpercona%2fhaproxy/2.8.18?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/docker.io%2fpercona%2fhaproxy/2.8.14/2.8.18?slim=true)
          |\n| docker.io/percona/percona-xtradb-cluster-operator |  | minor | `1.17.0`
          \u2192 `1.19.0` | ![age](https://developer.mend.io/api/mc/badges/age/docker/docker.io%2fpercona%2fpercona-xtradb-cluster-operator/1.19.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/docker.io%2fpercona%2fpercona-xtradb-cluster-operator/1.17.0/1.19.0?slim=true)
          |\n| [github.com/percona/percona-xtradb-cluster-operator](https://redirect.github.com/percona/percona-xtradb-cluster-operator)
          | require | minor | `v1.16.1` \u2192 `v1.19.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fpercona%2fpercona-xtradb-cluster-operator/v1.19.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fpercona%2fpercona-xtradb-cluster-operator/v1.16.1/v1.19.0?slim=true)
          |\n| [percona/percona-xtradb-cluster-operator](https://redirect.github.com/percona/percona-xtradb-cluster-operator)
          |  | minor | `1.17.0` \u2192 `1.18.0` | ![age](https://developer.mend.io/api/mc/badges/age/github-releases/percona%2fpercona-xtradb-cluster-operator/1.18.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/percona%2fpercona-xtradb-cluster-operator/1.17.0/1.18.0?slim=true)
          |\n| [pxc-operator](https://docs.percona.com/percona-operator-for-mysql/pxc/)
          ([source](https://redirect.github.com/percona/percona-helm-charts)) |  |
          minor | `1.17.0` \u2192 `1.18.0` | ![age](https://developer.mend.io/api/mc/badges/age/helm/pxc-operator/1.18.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/helm/pxc-operator/1.17.0/1.18.0?slim=true)
          |\n| quay.io/prometheus/mysqld-exporter |  | minor | `v0.17.0` \u2192 `v0.18.0`
          | ![age](https://developer.mend.io/api/mc/badges/age/docker/quay.io%2fprometheus%2fmysqld-exporter/v0.18.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/quay.io%2fprometheus%2fmysqld-exporter/v0.17.0/v0.18.0?slim=true)
          |\n\n---\n\n### Release Notes\n\n<details>\n<summary>percona/percona-xtradb-cluster-operator
          (github.com/percona/percona-xtradb-cluster-operator)</summary>\n\n### [`v1.19.0`](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.18.0...v1.19.0)\n\n[Compare
          Source](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.18.0...v1.19.0)\n\n###
          [`v1.18.0`](https://redirect.github.com/percona/percona-xtradb-cluster-operator/releases/tag/v1.18.0)\n\n[Compare
          Source](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.17.0...v1.18.0)\n\n#####
          Release Highlights\n\nThis release of Percona Operator for MySQL based on
          Percona XtraDB Cluster includes the following new features and improvements:\n\n#####
          PMM3 support\n\nThe Operator is natively integrated with [PMM 3](https://www.percona.com/doc/percona-monitoring-and-management/3/index.html),
          enabling you to monitor the health and performance of your Percona Distribution
          for MySQL deployment and at the same time enjoy enhanced performance, new
          features, and improved security that PMM 3 provides.\n\nNote that the Operator
          supports both PMM2 and PMM3. The decision on what PMM version is used depends
          on the authentication method you provide in the Operator configuration:
          PMM2 uses API keys while PMM3 uses service account token. If the Operator
          configuration contains both authentication methods with non-empty values,
          PMM3 takes the priority.\n\nTo use PMM, ensure that the PMM client image
          is compatible with the PMM Server version. Check [Percona certified images](https://docs.percona.com/percona-operator-for-mysql/pxc/images.html)
          for the correct client image.\n\nFor how to configure monitoring with PMM,
          see the [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/monitoring.html).\n\n#####
          Improved monitoring for clusters in multi-region or multi-namespace deployments
          in PMM\n\nNow you can define a custom name for your clusters deployed in
          different data centers. This name helps Percona Management and Monitoring
          (PMM) Server to correctly recognize clusters as connected and monitor them
          as one deployment. Similarly, PMM Server identifies clusters deployed with
          the same names in different namespaces as separate ones and correctly displays
          performance metrics for you on dashboards.\n\nTo assign a custom name, define
          this configuration in the Custom Resource manifest for your cluster:\n\n```yaml\nspec:\n
          \ pmm:\n    customClusterName: testClusterName\n```\n\n##### More resilient
          database restores without matching user Secrets\n\nYou no longer need matching
          user Secrets between your backup and your target cluster to perform a restore.
          The Operator now has a post-restore step that changes user passwords in
          the restored database to the ones from the local Secret. Also, it creates
          missing system users and adds missing grants.\n\nThis flow is the same regardless
          of whether you restore to the same cluster or to a completely new one.\n\nThe
          removal of this major roadblock to have a Secret for restores makes your
          disaster recovery process smoother and more reliable. This enhancement makes
          managing databases on Kubernetes more robust and operator-friendly.\n\n#####
          Improved backup retention for streamlined management of scheduled backups
          in cloud storage\n\nA new backup retention configuration gives you more
          control over how backups are managed in storage and retained in Kubernetes.\n\nWith
          the `deleteFromStorage` flag , you can disable automatic deletion from AWS
          S3 or Azure Blob storage and instead rely on native cloud lifecycle policies.
          This makes backup cleanup more efficient and better aligned with flexible
          storage strategies.\n\nThe legacy `keep` option is now deprecated and mapped
          to the new `retention` block for compatibility. We encourage you to start
          using the `backup.schedule.retention` configuration:\n\n```yaml\nschedule:\n
          \ - name: \"sat-night-backup\"\n    schedule: \"0 0 * * 6\"\n    retention:\n
          \     count: 3\n      type: count\n      deleteFromStorage: true\n    storageName:
          s3-us-west\n```\n\nNote that if you have both `backup.schedule.keep`  and
          `backup.schedule.retention`  defined, the `backup.schedule.retention` takes
          precedence.\n\n##### Added labels to identify the version of the Operator\n\nCustom
          Resource Definition (CRD) is compatible with the last three Operator versions.
          To know which Operator version is attached to it, we've added labels to
          all Custom Resource Definitions. The labels help you identify the current
          Operator version and decide if you need to update the CRD. To view the labels,
          run: `kubectl get crd perconaxtradbclusters.pxc.percona.com --show-labels`.\n\n#####
          Cross-site replication is now supported for Percona XtraDB Cluster 8.4\n\nCross-site
          replication is now available with Percona XtraDB Cluster 8.4.x, lifting
          one of the  limitations in the Operator for this database version. This
          enhancement marks a significant step toward general availability of Percona
          XtraDB Cluster 8.4 in the Operator by enabling multi-site deployments and
          improving resilience across distributed environments.\n\n##### Deprecation,
          Rename and Removal\n\n- The `pxc.expose.loadBalancerIP`, `haproxy.exposePrimary.loadBalancerIP`,
          `haproxy.exposeReplicas.loadBalancerIP` and `proxysql.expose.loadBalancerIP`
          keys are deprecated. The `loadBalancerIP` field is also deprecated upstream
          in Kubernetes\n  due to its inconsistent behavior across cloud providers
          and lack of dual-stack support. As a result, its usage is strongly discouraged.\n\n
          \ We recommend using cloud provider-specific annotations instead, as they
          offer more predictable and portable behavior for managing load balancer
          IP assignments.\n\n  The `pxc.expose.loadBalancerIP`, `haproxy.exposePrimary.loadBalancerIP`,
          `haproxy.exposeReplicas.loadBalancerIP` and `proxysql.expose.loadBalancerIP`
          keys are scheduled for removal in future releases.\n\n- The `backup.schedule.keep`
          field is deprecated and will be removed after release 1.21.0. We recommend
          using the `backup.schedule.retention` instead as follows:\n\n  ```yaml\n
          \ schedule:\n    - name: \"sat-night-backup\"\n      schedule: \"0 0 **
          6\"\n      retention:\n        count: 3\n        type: count\n        deleteFromStorage:
          true\n      storageName: s3-us-west\n  ```\n\n- New repositories for Percona
          XtraBackup and Logcollector\n\n  Now the Operator uses the official Percona
          Docker images for the `percona-xtrabackup` and `logcollector` components.
          Pay attention to the new image repositories when you upgrade the Operator
          and the database. Check the [Percona certified images](https://docs.percona.com/percona-operator-for-mysql/pxc/images.html)
          for exact image names.\n\n- Changes for Helm charts:\n\n  - PMM3 is now
          the default. To keep using PMM2, set the `pmm.tag: 2.44.1`\n  - If you install
          or upgrade the Operator with default manifests using Helm charts on Openshift
          4.19, you must use the `docker.io` registry prefix to guarantee successful
          download from the DockerHub `percona-xtradb-cluster` repository. Read the
          [Considerations for using OpenShift 4.19](#considerations-for-using-openshift-419)
          section for more information.\n\n##### Known limitations\n\n##### Considerations
          for using OpenShift 4.19\n\nStarting with OpenShift 4.19, the way images
          with not fully qualified names are pulled has changed for repositories that
          share the same repository name on DockerHub and Red Hat Marketplace. By
          default the tags are pulled from Red Hat Marketplace. Specifying not fully
          qualified image names may result in the `ImagePullBackOff` error.\n\n- **OLM
          installation:** Images are provided with the fully qualified names and are
          pulled from the Red Hat Marketplace/DockerHub registry.\n- **Manual install/update
          with default manifests:** Images must use the `docker.io` registry prefix
          to guarantee successful download from the Dockerhub `percona-xtradb-cluster`
          repository.\n\nSee our documentation for [manual installation](https://docs.percona.com/percona-operator-for-mysql/pxc/openshift.html#install-the-operator-via-the-command-line-interface)
          or [update](https://docs.percona.com/percona-operator-for-mysql/pxc/update_openshift.html#update-via-the-command-line-interface).\n\n#####
          Changleog\n\n##### New Features\n\n- [K8SPXC-1284](https://perconadev.atlassian.net/browse/K8SPXC-1284)
          - Add the ability to configure protocol for peer-list DNS SRV lookups\n\n-
          [K8SPXC-1599](https://perconadev.atlassian.net/browse/K8SPXC-1599) - Allowed
          setting `loadBalancerClass` service type and using a custom implementation
          of a load balancer rather than the cloud provider default one\n\n##### Improvements\n\n-
          [K8SPXC-1375](https://perconadev.atlassian.net/browse/K8SPXC-1375) - Added
          a new retention configuration to allow users to delegate backup cleanup
          to cloud lifecycle policies (Thank you user Tristan for reporting this issue)\n\n-
          [K8SPXC-1376](https://perconadev.atlassian.net/browse/K8SPXC-1376) - Added
          the ability to restore from backup without a matching Secret resource\n\n-
          [K8SPXC-1399](https://perconadev.atlassian.net/browse/K8SPXC-1399) - Added
          a documentation how to set up a disaster recovery system and transfer workloads
          between sites\n\n- [K8SPXC-1415](https://perconadev.atlassian.net/browse/K8SPXC-1415)
          - Updated the `percona-xtrabackup` image to use the official `percona-xtrabackup`
          Docker image\n\n- [K8SPXC-1430](https://perconadev.atlassian.net/browse/K8SPXC-1430)
          - Improved handling of autogenerated certificates depending on the `delete-ssl`
          finalizer configuration\n\n- [K8SPXC-1448](https://perconadev.atlassian.net/browse/K8SPXC-1448),
          [K8SPXC-1449](https://perconadev.atlassian.net/browse/K8SPXC-1449) - Improved
          the `pvc-resize` test by using a custom storage class for EKS, reducing
          errors and improving the quota handling during resize\n\n- [K8SPXC-1450](https://perconadev.atlassian.net/browse/K8SPXC-1450)
          - Improved PVC resizing behavior when reducing the storage size by reverting
          the values when the quota is reached\n\n- [K8SPXC-1472](https://perconadev.atlassian.net/browse/K8SPXC-1472)
          - Deprecated the `loadBalancerIP` field due to its deprecation upstream\n\n-
          [K8SPXC-1513](https://perconadev.atlassian.net/browse/K8SPXC-1513) - Added
          PXC 8.4 support for version service\n\n- [K8SPXC-1529](https://perconadev.atlassian.net/browse/K8SPXC-1529)
          - Added support for cross-site replication with MySQL 8.4.0 by adding the
          use of `authentication_policy` instead of `default_authentication_plugin`\n\n-
          [K8SPXC-1553](https://perconadev.atlassian.net/browse/K8SPXC-1553) - Added
          support for PMM v3\n\n- [K8SPXC-1560](https://perconadev.atlassian.net/browse/K8SPXC-1560)
          - Added the warning about CRDs not being upgraded automatically after helm
          upgrade to the output\n\n- [K8SPXC-1566](https://perconadev.atlassian.net/browse/K8SPXC-1566)
          - Improved reconciliation of replicationChannels without proxy Pods by starting
          the database Pod bypassing the proxy (Thank you Justin Reasoner for contributing
          to this issue)\n\n- [K8SPXC-1569](https://perconadev.atlassian.net/browse/K8SPXC-1569)
          - Added Labels for Custom Resource Definitions (CRD) to identify the Operator
          version attached to them\n\n- [K8SPXC-1597](https://perconadev.atlassian.net/browse/K8SPXC-1597)
          - Improve the scheduled backups behavior for a cluster in an unhealthy state
          by postponing the job until the cluster reports the healthy status\n\n-
          [K8SPXC-1605](https://perconadev.atlassian.net/browse/K8SPXC-1605) - Introduced
          Azure CLI for checking if backup objects/folders exist in Azure storage\n\n-
          [K8SPXC-1612](https://perconadev.atlassian.net/browse/K8SPXC-1612) - Added
          the `imagePullSecrets` for PMM image\n\n- [K8SPXC-1615](https://perconadev.atlassian.net/browse/K8SPXC-1615)
          - Added the ability to define a custom cluster name for `pmm-admin` component\n\n-
          [K8SPXC-1624](https://perconadev.atlassian.net/browse/K8SPXC-1624) - Deleted
          deprecated finalizers code\n\n- [K8SPXC-1669](https://perconadev.atlassian.net/browse/K8SPXC-1669)
          - Improve the backup flow by generating a default endpoint URL for a storage
          from a region if it is not provided (Thank you Bernard Grymonpon for reporting
          this issue)\n\n- [K8SPXC-1677](https://perconadev.atlassian.net/browse/K8SPXC-1677)
          - Document the changed behavior with pulling images for default manifests
          on OpenShift 4.19 and update install and update instructions\n\n##### Bugs
          Fixed\n\n- [K8SPXC-1312](https://perconadev.atlassian.net/browse/K8SPXC-1312)
          - Fixed the issue with labels not being updated automatically for point-in-time
          recovery deployment upon Custom Resource changes\n\n- [K8SPXC-1347](https://perconadev.atlassian.net/browse/K8SPXC-1347)
          - Fixed the issue with point-in-time recovery failing due to TLS configuration
          mismatch between the server and the point-in-time recovery job by configuring
          it to use TLS if is required by the server.\n\n- [K8SPXC-1382](https://perconadev.atlassian.net/browse/K8SPXC-1382)
          - Fixed the issue with backup failing on AWS if using IAM profile without
          credentialsSecret by using credentialsSecret only when explicitly specified
          and relying on IAM roles instead (Thank you Itiel Olenick for reporting
          this issue)\n\n- [K8SPXC-1541](https://perconadev.atlassian.net/browse/K8SPXC-1541)
          - Fixed Telemetry module to to consider both empty string \"\" and comma
          separated namespaces in cluster-wide mode\n\n- [K8SPXC-1548](https://perconadev.atlassian.net/browse/K8SPXC-1548)
          Fixed the issue with deleting old backups on Google Cloud Storage by url-decoding
          the object path before deleting it (Thank you Mateusz Gruszkiewicz for reporting
          this issue)\n\n- [K8SPXC-1631](https://perconadev.atlassian.net/browse/K8SPXC-1631)
          - Fixed the issue with the Operator restarting pod-0 after the cluster is
          ready. The issue is caused by ConfigMap and StatefulSet being created too
          close to each other and Kubernetes API can't return the newly created ConfigMap
          before creating the StatefulSet. The issue is fixed by reconciling the StatefulSet
          after the reconciliation of ConfigMap is completed.\n\n- [K8SPXC-1664](https://perconadev.atlassian.net/browse/K8SPXC-1664)
          - Fixed the use of the proper script to check PXC nodes when adding them
          by HAProxy\n\n##### Supported Software\n\nThe Operator was developed and
          tested with the following software:\n\n- Percona XtraDB Cluster versions
          8.4.5-5.1 (Tech preview), 8.0.42-33.1, and 5.7.44-31.65\n- Percona XtraBackup
          versions 8.4.0-3, 8.0.35-34.1, and 2.4.29\n- HAProxy 2.8.15-1\n- ProxySQL
          2.7.3\n- LogCollector based on fluent-bit 4.0.1\n- PMM Client 2.44.1 and
          3.3.1\n\nOther options may also work but have not been tested.\n\n#####
          Supported Platforms\n\nPercona Operators are designed for compatibility
          with all [CNCF-certified](https://www.cncf.io/training/certification/software-conformance/)
          Kubernetes distributions. Our release process includes targeted testing
          and validation on major cloud provider platforms and OpenShift, as detailed
          below for Operator version 1.16.0:\n\n- [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine)
          1.30 - 1.33\n- [Amazon Elastic Container Service for Kubernetes (EKS)](https://aws.amazon.com)
          1.30 - 1.33\n- [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/)
          1.30 - 1.33\n- [OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift)
          4.15 - 4.19\n- [Minikube](https://minikube.sigs.k8s.io/docs/) 1.36.0 based
          on Kubernetes 1.33.1\n\nThis list only includes the platforms that the Percona
          Operators are specifically tested on as part of the release process. Other
          Kubernetes flavors and versions depend on the backward compatibility offered
          by Kubernetes itself.\n\n### [`v1.17.0`](https://redirect.github.com/percona/percona-xtradb-cluster-operator/releases/tag/v1.17.0)\n\n[Compare
          Source](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.16.1...v1.17.0)\n\n####
          Release Highlights\n\n##### Improved observability for HAProxy and ProxySQL\n\nGet
          insights into the HAProxy and ProxySQL performance by connecting to their
          statistics pages. Use the `cluster-name-haproxy:8084` and `cluster-name-proxysql:6070`
          endpoints to do so. Learn about other available ports in the [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/haproxy-conf.html).\n\n#####
          Improved cluster load management during backups\n\nIf parallel backups overload
          your cluster, you can turn off parallel execution to prevent this. Previously,
          this meant that you could only run one backup at a time - no new backups
          could start until the current one was finished. Now, the Operator queues
          backups and runs them one after another automatically. You can fine-tune
          the backup sequence by setting the start time for all backups or for a specific
          on-demand one using the [`spec.backup.startingDeadlineSeconds`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#backupstartingdeadlineseconds)
          Custom Resource option. This provides greater control over backup operations.\n\nAnother
          improvement is for the case when your database cluster becomes unhealthy,
          for example, when a Pod crashes or restarts. The Operator suspends running
          backups to reduce the cluster's load. Once the cluster recovers and reports
          a Ready status, the Operator resumes the suspended backup. To further offload
          the cluster during an unhealthy state, you can configure how long a backup
          remains suspended by using the [`spec.backup.suspendedDeadlineSeconds`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#backupsuspendeddeadlineseconds)
          Custom Resource option. If this time expires before the cluster recovers,
          the backup is marked as \"failed.\"\n\n##### Monitor PMM Client health and
          status\n\nPercona Monitoring and Management (PMM) is a great tool to [monitor
          the health of your database cluster](https://docs.percona.com/percona-operator-for-mysql/pxc/monitoring.html).
          Now you can also learn if PMM itself is healthy using probes - a Kubernetes
          diagnostics mechanism to check the health and status of containers. Use
          the [`spec.pmm.readinessProbes.*`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#pmmreadinessprobesinitialdelayseconds)
          and [`spec.pmm.livenessProbes.*`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#pmmlivenessprobesinitialdelayseconds)
          Custom Resource options to fine-tune Readiness and Liveness probes for PMM
          Client.\n\n##### Improved observability of binary log backups\n\nGet insights
          into the success and failure rates of binlog operations, timeliness of processing
          and uploads and potential gaps or inconsistencies in binlog data with the
          Prometheus metrics added for the Operator. Gather this data by connecting
          to the `<pitr-pod-service>:8080/metrics` endpoint. Learn more about the
          available metrics in the [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/backups-pitr.html#binary-logs-statistics).\n\n####
          Deprecation, Rename and Removal\n\nThe `spec.haproxy.exposePrimary.enabled`
          field is deprecated. If enabled via the `spec.haproxy.enabled`, the HAProxy
          primary service is already exposed.\n\n#### New Features\n\n- [K8SPXC-747](https://perconadev.atlassian.net/browse/K8SPXC-747),
          [K8SPXC-1473](https://perconadev.atlassian.net/browse/K8SPXC-1473) - Add
          the ability to access the statistics pages for HAProxy and ProxySQL\n\n-
          [K8SPXC-1366](https://perconadev.atlassian.net/browse/K8SPXC-1366) - Add
          the ability to queue backups and run them sequentially, and to optimize
          the cluster load with the ability to suspend backups for an unhealthy cluster.
          A user can assign the start time and suspension time to backups to manage
          them better.\n\n- [K8SPXC-1432](https://perconadev.atlassian.net/browse/K8SPXC-1432)
          - Enable users to configure cluster-wide Operator deployments in OpenShift
          certified catalog using OLM.\n\n#### Improvements\n\n- [K8SPXC-1367](https://perconadev.atlassian.net/browse/K8SPXC-1367)
          - Now a user can configure Readiness and Liveness probes for PMM Client
          container to check its health and status\n\n- [K8SPXC-1461](https://perconadev.atlassian.net/browse/K8SPXC-1461)
          - Improve logging for resizing PVC with the information about successful
          and failed PVC resize. Log errors on resize attempts if the Storage Class
          doesn't support resizing.\n\n- [K8SPXC-1466](https://perconadev.atlassian.net/browse/K8SPXC-1466)
          - Mark the containers that provide the service as default ones with the
          annotation. This enables a user to connect to a Pod without explicitly specifying
          a container.\n\n- [K8SPXC-1473](https://perconadev.atlassian.net/browse/K8SPXC-1473)
          - Add the ability to connect to the built-in statistics pages for HAProxy
          and ProxySQL by exposing the ports for those pages\n\n- [K8SPXC-1475](https://perconadev.atlassian.net/browse/K8SPXC-1475)
          - Update the backup image to use AWS CLI instead of MinIO CLI due to the
          license change\n\n- [K8SPXC-1510](https://perconadev.atlassian.net/browse/K8SPXC-1510)
          - Add the ability to suppress messages about the use of deprecated features
          in MySQL Error Log by adding the `log_error_suppression_list` key from the
          `my.cnf` configuration file and defining the message number in the `spec.pxc.configuration`
          subsection of the Custom Resource manifest. See [how to change MySQL options](https://docs.percona.com/percona-operator-for-mysql/pxc/options.html)
          for steps. This improves readability for MySQL error log.\n\n- [K8SPXC-1512](https://perconadev.atlassian.net/browse/K8SPXC-1512)
          - For Percona XtraDB Cluster version 8.4 and above, binary log user defined
          functions for point-in-time recovery (`binlog_utils_udf`) are now installed
          as a component instead of a plugin. This improves their compatibility across
          platforms and provides automatic dependency handling.\n\n- [K8SPXC-1542](https://perconadev.atlassian.net/browse/K8SPXC-1542)
          - Improve binlog upload for large files to Azure blob storage with the ability
          to define the block size and the number of concurrent writers for the upload
          (Thanks to user dcaputo-harmoni for contribution)\n\n- [K8SPXC-1543](https://perconadev.atlassian.net/browse/K8SPXC-1543)
          - Set PITR controller reference for binlog-collector deployment the same
          way as it's set for PXC and proxy StatefulSets. This creates a connection
          between PITR deployment and cluster resource (Thank you Vlad Gusev for the
          contribution)\n\n- [K8SPXC-1544](https://perconadev.atlassian.net/browse/K8SPXC-1544)
          - Improve observability of binlog collector by adding the support of basic
          Prometheus metrics (Thank you Vlad Gusev for the contribution)\n\n- [K8SPXC-1567](https://perconadev.atlassian.net/browse/K8SPXC-1567)
          - Normalize duplicate slashes if the bucket path for binlog collector ends
          with a slash (`/`) (Thank you Vlad Gusev for the contribution)\n\n- [K8SPXC-1596](https://perconadev.atlassian.net/browse/K8SPXC-1596)
          - Assign a correct status to a backup if data upload fails due to incomplete
          backup\n\n- [K8SPXC-1620](https://perconadev.atlassian.net/browse/K8SPXC-1620)
          - Fixed the issue with a failing backup by adding a retry logic to the cloud
          storage cleanup task to check for uploaded files and clean them up before
          uploading new files\n\n#### Bugs Fixed\n\n- [K8SPXC-1152](https://perconadev.atlassian.net/browse/K8SPXC-1152)
          Fixed the issue with the restore process being stuck when the Operator is
          restarted by setting annotations on the `perconaxtradbclusterrestores` object\n\n-
          [K8SPXC-1482](https://perconadev.atlassian.net/browse/K8SPXC-1482) Fixed
          the issue with the excessive connection resets on every pod recreation because
          the cluster's peer-list is not aware of Time To Live (TTL) defined for Kubernetes
          DNS records. Now there's a 30 second waiting period after a peer update
          (Thank you Vlad Gusev for reporting this issue and contributing to it)\n\n-
          [K8SPXC-1483](https://perconadev.atlassian.net/browse/K8SPXC-1483) - Fixed
          the bug where the point-in-time recovery collector process hangs if `mysqlbinlog`
          cannot connect to the database and start. Now the named pipeline is created
          with the `O_RDONLY` (Open for Read Only) and `O_NONBLOCK` (Non-Blocking
          Mode) to unlock the point-in-time recovery collector process.  (Thank you
          Vlad Gusev for reporting this issue and contributing to it)\n\n- [K8SPXC-1509](https://perconadev.atlassian.net/browse/K8SPXC-1509)
          - Fixed the bug where the cluster enters the error state temporarily if
          point-in-time is enabled for it.\n\n- [K8SPXC-1534](https://perconadev.atlassian.net/browse/K8SPXC-1534)
          - Fixed the issue with the inconsistent secret reconciliation by improving
          the controller's behavior to timely sync the secret cache and create an
          internal Secret immediately after its reconciliation.\n\n- [K8SPXC-1538](https://perconadev.atlassian.net/browse/K8SPXC-1538)
          - Fixed the issue with the Operator failing when it tries to reconcile the
          Custom Resource for the `haproxy-replica` service if the `haproxy-primary`
          service has the type `LoadBalancer` and the `LoadBalancerSourceRanges` value
          defined. Now the `haproxy-replica` service inherits this configuration.\n\n-
          [K8SPXC-1546](https://perconadev.atlassian.net/browse/K8SPXC-1546), [K8SPXC-1549](https://perconadev.atlassian.net/browse/K8SPXC-1549)
          -  Fixed the issue with the PITR pod crashing on attempt to assign a GTID\n
          \ set to each binlog if the database cluster has a large number of binlogs
          by caching the `binlog->gtid` set pairs\n\n- [K8SPXC-1547](https://perconadev.atlassian.net/browse/K8SPXC-1547)
          - Removed the outdated example from the `backup.yaml` manifest and update
          the documentation how to track backup progress\n\n- [K8SPXC-1616](https://perconadev.atlassian.net/browse/K8SPXC-1616)
          - Fixed a bug where the ProxySQL fails to be configured if the password
          for a `proxysqladmin` user starts with a star (`*`) character by reporting
          an error and making the Operator regenerate a new password that doesn't
          start with a star (Thank you Chris Fidao for reporting this issue and contribution)\n\n####
          Supported Software\n\nThe Operator was developed and tested with the following
          software:\n\n- Percona XtraDB Cluster versions 8.4.3-3.1 (Tech preview),
          8.0.41-32.1, and 5.7.44-31.65\n- Percona XtraBackup versions 8.4.0-1, 8.0.35-32,
          and 2.4.29\n- HAProxy 2.8.14\n- ProxySQL 2.7.1-1\n- LogCollector based on
          fluent-bit 4.0.0\n- PMM Client 2.44.0\n\nOther options may also work but
          have not been tested.\n\n#### Supported Platforms\n\nPercona Operators are
          designed for compatibility with all [CNCF-certified :octicons-link-external-16:](https://www.cncf.io/training/certification/software-conformance/)
          Kubernetes distributions. Our release process includes targeted testing
          and validation on major cloud provider platforms and OpenShift, as detailed
          below for Operator version 1.16.0:\n\n- [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine)
          1.29 - 1.32\n- [Amazon Elastic Container Service for Kubernetes (EKS)](https://aws.amazon.com)
          1.30 - 1.32\n- [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/)
          1.30 - 1.32\n- [OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift)
          4.14 - 4.18\n- [Minikube](https://minikube.sigs.k8s.io/docs/) 1.35.0 based
          on Kubernetes 1.32.0\n\nThis list only includes the platforms that the Percona
          Operators are specifically tested on as part of the release process. Other
          Kubernetes flavors and versions depend on the backward compatibility offered
          by Kubernetes itself.\n\n</details>\n\n<details>\n<summary>percona/percona-helm-charts
          (pxc-operator)</summary>\n\n### [`v1.18.0`](https://redirect.github.com/percona/percona-helm-charts/releases/tag/pxc-operator-1.18.0)\n\n[Compare
          Source](https://redirect.github.com/percona/percona-helm-charts/compare/pxc-operator-1.17.0...pxc-operator-1.18.0)\n\nA
          Helm chart for deploying the Percona Operator for MySQL (based on Percona
          XtraDB Cluster)\n\nFor more information, please check official release notes:
          [Release Notes PXC Operator 1.18.0](https://docs.percona.com/percona-operator-for-mysql/pxc/ReleaseNotes/Kubernetes-Operator-for-PXC-RN1.18.0.html)\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\U0001F47B **Immortal**: This PR will
          be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions)
          if that's undesired.\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/vexxhost/atmosphere).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNjQuMCIsInVwZGF0ZWRJblZlciI6IjQyLjg1LjEiLCJ0YXJnZXRCcmFuY2giOiJzdGFibGUvMjAyNC4xIiwibGFiZWxzIjpbInNraXAtcmVsZWFzZS1ub3RlcyJdfQ==-->\n"
        change_url: https://github.com/vexxhost/atmosphere/pull/2597
        commit_id: 3cc19499fde0eccd0f6fba57d96557a04b15f762
        patchset: 3cc19499fde0eccd0f6fba57d96557a04b15f762
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere
          name: vexxhost/atmosphere
          short_name: atmosphere
        src_dir: src/github.com/vexxhost/atmosphere
        topic: null
      change: '2597'
      change_message: "fix(deps): update pxc (stable/2024.1)\n\nThis PR contains the
        following updates:\n\n| Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
        | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|---|---|\n|
        docker.io/percona/haproxy |  | patch | `2.8.14` \u2192 `2.8.18` | ![age](https://developer.mend.io/api/mc/badges/age/docker/docker.io%2fpercona%2fhaproxy/2.8.18?slim=true)
        | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/docker.io%2fpercona%2fhaproxy/2.8.14/2.8.18?slim=true)
        |\n| docker.io/percona/percona-xtradb-cluster-operator |  | minor | `1.17.0`
        \u2192 `1.19.0` | ![age](https://developer.mend.io/api/mc/badges/age/docker/docker.io%2fpercona%2fpercona-xtradb-cluster-operator/1.19.0?slim=true)
        | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/docker.io%2fpercona%2fpercona-xtradb-cluster-operator/1.17.0/1.19.0?slim=true)
        |\n| [github.com/percona/percona-xtradb-cluster-operator](https://redirect.github.com/percona/percona-xtradb-cluster-operator)
        | require | minor | `v1.16.1` \u2192 `v1.19.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fpercona%2fpercona-xtradb-cluster-operator/v1.19.0?slim=true)
        | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fpercona%2fpercona-xtradb-cluster-operator/v1.16.1/v1.19.0?slim=true)
        |\n| [percona/percona-xtradb-cluster-operator](https://redirect.github.com/percona/percona-xtradb-cluster-operator)
        |  | minor | `1.17.0` \u2192 `1.18.0` | ![age](https://developer.mend.io/api/mc/badges/age/github-releases/percona%2fpercona-xtradb-cluster-operator/1.18.0?slim=true)
        | ![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/percona%2fpercona-xtradb-cluster-operator/1.17.0/1.18.0?slim=true)
        |\n| [pxc-operator](https://docs.percona.com/percona-operator-for-mysql/pxc/)
        ([source](https://redirect.github.com/percona/percona-helm-charts)) |  | minor
        | `1.17.0` \u2192 `1.18.0` | ![age](https://developer.mend.io/api/mc/badges/age/helm/pxc-operator/1.18.0?slim=true)
        | ![confidence](https://developer.mend.io/api/mc/badges/confidence/helm/pxc-operator/1.17.0/1.18.0?slim=true)
        |\n| quay.io/prometheus/mysqld-exporter |  | minor | `v0.17.0` \u2192 `v0.18.0`
        | ![age](https://developer.mend.io/api/mc/badges/age/docker/quay.io%2fprometheus%2fmysqld-exporter/v0.18.0?slim=true)
        | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/quay.io%2fprometheus%2fmysqld-exporter/v0.17.0/v0.18.0?slim=true)
        |\n\n---\n\n### Release Notes\n\n<details>\n<summary>percona/percona-xtradb-cluster-operator
        (github.com/percona/percona-xtradb-cluster-operator)</summary>\n\n### [`v1.19.0`](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.18.0...v1.19.0)\n\n[Compare
        Source](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.18.0...v1.19.0)\n\n###
        [`v1.18.0`](https://redirect.github.com/percona/percona-xtradb-cluster-operator/releases/tag/v1.18.0)\n\n[Compare
        Source](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.17.0...v1.18.0)\n\n#####
        Release Highlights\n\nThis release of Percona Operator for MySQL based on
        Percona XtraDB Cluster includes the following new features and improvements:\n\n#####
        PMM3 support\n\nThe Operator is natively integrated with [PMM 3](https://www.percona.com/doc/percona-monitoring-and-management/3/index.html),
        enabling you to monitor the health and performance of your Percona Distribution
        for MySQL deployment and at the same time enjoy enhanced performance, new
        features, and improved security that PMM 3 provides.\n\nNote that the Operator
        supports both PMM2 and PMM3. The decision on what PMM version is used depends
        on the authentication method you provide in the Operator configuration: PMM2
        uses API keys while PMM3 uses service account token. If the Operator configuration
        contains both authentication methods with non-empty values, PMM3 takes the
        priority.\n\nTo use PMM, ensure that the PMM client image is compatible with
        the PMM Server version. Check [Percona certified images](https://docs.percona.com/percona-operator-for-mysql/pxc/images.html)
        for the correct client image.\n\nFor how to configure monitoring with PMM,
        see the [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/monitoring.html).\n\n#####
        Improved monitoring for clusters in multi-region or multi-namespace deployments
        in PMM\n\nNow you can define a custom name for your clusters deployed in different
        data centers. This name helps Percona Management and Monitoring (PMM) Server
        to correctly recognize clusters as connected and monitor them as one deployment.
        Similarly, PMM Server identifies clusters deployed with the same names in
        different namespaces as separate ones and correctly displays performance metrics
        for you on dashboards.\n\nTo assign a custom name, define this configuration
        in the Custom Resource manifest for your cluster:\n\n```yaml\nspec:\n  pmm:\n
        \   customClusterName: testClusterName\n```\n\n##### More resilient database
        restores without matching user Secrets\n\nYou no longer need matching user
        Secrets between your backup and your target cluster to perform a restore.
        The Operator now has a post-restore step that changes user passwords in the
        restored database to the ones from the local Secret. Also, it creates missing
        system users and adds missing grants.\n\nThis flow is the same regardless
        of whether you restore to the same cluster or to a completely new one.\n\nThe
        removal of this major roadblock to have a Secret for restores makes your disaster
        recovery process smoother and more reliable. This enhancement makes managing
        databases on Kubernetes more robust and operator-friendly.\n\n##### Improved
        backup retention for streamlined management of scheduled backups in cloud
        storage\n\nA new backup retention configuration gives you more control over
        how backups are managed in storage and retained in Kubernetes.\n\nWith the
        `deleteFromStorage` flag , you can disable automatic deletion from AWS S3
        or Azure Blob storage and instead rely on native cloud lifecycle policies.
        This makes backup cleanup more efficient and better aligned with flexible
        storage strategies.\n\nThe legacy `keep` option is now deprecated and mapped
        to the new `retention` block for compatibility. We encourage you to start
        using the `backup.schedule.retention` configuration:\n\n```yaml\nschedule:\n
        \ - name: \"sat-night-backup\"\n    schedule: \"0 0 * * 6\"\n    retention:\n
        \     count: 3\n      type: count\n      deleteFromStorage: true\n    storageName:
        s3-us-west\n```\n\nNote that if you have both `backup.schedule.keep`  and
        `backup.schedule.retention`  defined, the `backup.schedule.retention` takes
        precedence.\n\n##### Added labels to identify the version of the Operator\n\nCustom
        Resource Definition (CRD) is compatible with the last three Operator versions.
        To know which Operator version is attached to it, we've added labels to all
        Custom Resource Definitions. The labels help you identify the current Operator
        version and decide if you need to update the CRD. To view the labels, run:
        `kubectl get crd perconaxtradbclusters.pxc.percona.com --show-labels`.\n\n#####
        Cross-site replication is now supported for Percona XtraDB Cluster 8.4\n\nCross-site
        replication is now available with Percona XtraDB Cluster 8.4.x, lifting one
        of the  limitations in the Operator for this database version. This enhancement
        marks a significant step toward general availability of Percona XtraDB Cluster
        8.4 in the Operator by enabling multi-site deployments and improving resilience
        across distributed environments.\n\n##### Deprecation, Rename and Removal\n\n-
        The `pxc.expose.loadBalancerIP`, `haproxy.exposePrimary.loadBalancerIP`, `haproxy.exposeReplicas.loadBalancerIP`
        and `proxysql.expose.loadBalancerIP` keys are deprecated. The `loadBalancerIP`
        field is also deprecated upstream in Kubernetes\n  due to its inconsistent
        behavior across cloud providers and lack of dual-stack support. As a result,
        its usage is strongly discouraged.\n\n  We recommend using cloud provider-specific
        annotations instead, as they offer more predictable and portable behavior
        for managing load balancer IP assignments.\n\n  The `pxc.expose.loadBalancerIP`,
        `haproxy.exposePrimary.loadBalancerIP`, `haproxy.exposeReplicas.loadBalancerIP`
        and `proxysql.expose.loadBalancerIP` keys are scheduled for removal in future
        releases.\n\n- The `backup.schedule.keep` field is deprecated and will be
        removed after release 1.21.0. We recommend using the `backup.schedule.retention`
        instead as follows:\n\n  ```yaml\n  schedule:\n    - name: \"sat-night-backup\"\n
        \     schedule: \"0 0 ** 6\"\n      retention:\n        count: 3\n        type:
        count\n        deleteFromStorage: true\n      storageName: s3-us-west\n  ```\n\n-
        New repositories for Percona XtraBackup and Logcollector\n\n  Now the Operator
        uses the official Percona Docker images for the `percona-xtrabackup` and `logcollector`
        components. Pay attention to the new image repositories when you upgrade the
        Operator and the database. Check the [Percona certified images](https://docs.percona.com/percona-operator-for-mysql/pxc/images.html)
        for exact image names.\n\n- Changes for Helm charts:\n\n  - PMM3 is now the
        default. To keep using PMM2, set the `pmm.tag: 2.44.1`\n  - If you install
        or upgrade the Operator with default manifests using Helm charts on Openshift
        4.19, you must use the `docker.io` registry prefix to guarantee successful
        download from the DockerHub `percona-xtradb-cluster` repository. Read the
        [Considerations for using OpenShift 4.19](#considerations-for-using-openshift-419)
        section for more information.\n\n##### Known limitations\n\n##### Considerations
        for using OpenShift 4.19\n\nStarting with OpenShift 4.19, the way images with
        not fully qualified names are pulled has changed for repositories that share
        the same repository name on DockerHub and Red Hat Marketplace. By default
        the tags are pulled from Red Hat Marketplace. Specifying not fully qualified
        image names may result in the `ImagePullBackOff` error.\n\n- **OLM installation:**
        Images are provided with the fully qualified names and are pulled from the
        Red Hat Marketplace/DockerHub registry.\n- **Manual install/update with default
        manifests:** Images must use the `docker.io` registry prefix to guarantee
        successful download from the Dockerhub `percona-xtradb-cluster` repository.\n\nSee
        our documentation for [manual installation](https://docs.percona.com/percona-operator-for-mysql/pxc/openshift.html#install-the-operator-via-the-command-line-interface)
        or [update](https://docs.percona.com/percona-operator-for-mysql/pxc/update_openshift.html#update-via-the-command-line-interface).\n\n#####
        Changleog\n\n##### New Features\n\n- [K8SPXC-1284](https://perconadev.atlassian.net/browse/K8SPXC-1284)
        - Add the ability to configure protocol for peer-list DNS SRV lookups\n\n-
        [K8SPXC-1599](https://perconadev.atlassian.net/browse/K8SPXC-1599) - Allowed
        setting `loadBalancerClass` service type and using a custom implementation
        of a load balancer rather than the cloud provider default one\n\n##### Improvements\n\n-
        [K8SPXC-1375](https://perconadev.atlassian.net/browse/K8SPXC-1375) - Added
        a new retention configuration to allow users to delegate backup cleanup to
        cloud lifecycle policies (Thank you user Tristan for reporting this issue)\n\n-
        [K8SPXC-1376](https://perconadev.atlassian.net/browse/K8SPXC-1376) - Added
        the ability to restore from backup without a matching Secret resource\n\n-
        [K8SPXC-1399](https://perconadev.atlassian.net/browse/K8SPXC-1399) - Added
        a documentation how to set up a disaster recovery system and transfer workloads
        between sites\n\n- [K8SPXC-1415](https://perconadev.atlassian.net/browse/K8SPXC-1415)
        - Updated the `percona-xtrabackup` image to use the official `percona-xtrabackup`
        Docker image\n\n- [K8SPXC-1430](https://perconadev.atlassian.net/browse/K8SPXC-1430)
        - Improved handling of autogenerated certificates depending on the `delete-ssl`
        finalizer configuration\n\n- [K8SPXC-1448](https://perconadev.atlassian.net/browse/K8SPXC-1448),
        [K8SPXC-1449](https://perconadev.atlassian.net/browse/K8SPXC-1449) - Improved
        the `pvc-resize` test by using a custom storage class for EKS, reducing errors
        and improving the quota handling during resize\n\n- [K8SPXC-1450](https://perconadev.atlassian.net/browse/K8SPXC-1450)
        - Improved PVC resizing behavior when reducing the storage size by reverting
        the values when the quota is reached\n\n- [K8SPXC-1472](https://perconadev.atlassian.net/browse/K8SPXC-1472)
        - Deprecated the `loadBalancerIP` field due to its deprecation upstream\n\n-
        [K8SPXC-1513](https://perconadev.atlassian.net/browse/K8SPXC-1513) - Added
        PXC 8.4 support for version service\n\n- [K8SPXC-1529](https://perconadev.atlassian.net/browse/K8SPXC-1529)
        - Added support for cross-site replication with MySQL 8.4.0 by adding the
        use of `authentication_policy` instead of `default_authentication_plugin`\n\n-
        [K8SPXC-1553](https://perconadev.atlassian.net/browse/K8SPXC-1553) - Added
        support for PMM v3\n\n- [K8SPXC-1560](https://perconadev.atlassian.net/browse/K8SPXC-1560)
        - Added the warning about CRDs not being upgraded automatically after helm
        upgrade to the output\n\n- [K8SPXC-1566](https://perconadev.atlassian.net/browse/K8SPXC-1566)
        - Improved reconciliation of replicationChannels without proxy Pods by starting
        the database Pod bypassing the proxy (Thank you Justin Reasoner for contributing
        to this issue)\n\n- [K8SPXC-1569](https://perconadev.atlassian.net/browse/K8SPXC-1569)
        - Added Labels for Custom Resource Definitions (CRD) to identify the Operator
        version attached to them\n\n- [K8SPXC-1597](https://perconadev.atlassian.net/browse/K8SPXC-1597)
        - Improve the scheduled backups behavior for a cluster in an unhealthy state
        by postponing the job until the cluster reports the healthy status\n\n- [K8SPXC-1605](https://perconadev.atlassian.net/browse/K8SPXC-1605)
        - Introduced Azure CLI for checking if backup objects/folders exist in Azure
        storage\n\n- [K8SPXC-1612](https://perconadev.atlassian.net/browse/K8SPXC-1612)
        - Added the `imagePullSecrets` for PMM image\n\n- [K8SPXC-1615](https://perconadev.atlassian.net/browse/K8SPXC-1615)
        - Added the ability to define a custom cluster name for `pmm-admin` component\n\n-
        [K8SPXC-1624](https://perconadev.atlassian.net/browse/K8SPXC-1624) - Deleted
        deprecated finalizers code\n\n- [K8SPXC-1669](https://perconadev.atlassian.net/browse/K8SPXC-1669)
        - Improve the backup flow by generating a default endpoint URL for a storage
        from a region if it is not provided (Thank you Bernard Grymonpon for reporting
        this issue)\n\n- [K8SPXC-1677](https://perconadev.atlassian.net/browse/K8SPXC-1677)
        - Document the changed behavior with pulling images for default manifests
        on OpenShift 4.19 and update install and update instructions\n\n##### Bugs
        Fixed\n\n- [K8SPXC-1312](https://perconadev.atlassian.net/browse/K8SPXC-1312)
        - Fixed the issue with labels not being updated automatically for point-in-time
        recovery deployment upon Custom Resource changes\n\n- [K8SPXC-1347](https://perconadev.atlassian.net/browse/K8SPXC-1347)
        - Fixed the issue with point-in-time recovery failing due to TLS configuration
        mismatch between the server and the point-in-time recovery job by configuring
        it to use TLS if is required by the server.\n\n- [K8SPXC-1382](https://perconadev.atlassian.net/browse/K8SPXC-1382)
        - Fixed the issue with backup failing on AWS if using IAM profile without
        credentialsSecret by using credentialsSecret only when explicitly specified
        and relying on IAM roles instead (Thank you Itiel Olenick for reporting this
        issue)\n\n- [K8SPXC-1541](https://perconadev.atlassian.net/browse/K8SPXC-1541)
        - Fixed Telemetry module to to consider both empty string \"\" and comma separated
        namespaces in cluster-wide mode\n\n- [K8SPXC-1548](https://perconadev.atlassian.net/browse/K8SPXC-1548)
        Fixed the issue with deleting old backups on Google Cloud Storage by url-decoding
        the object path before deleting it (Thank you Mateusz Gruszkiewicz for reporting
        this issue)\n\n- [K8SPXC-1631](https://perconadev.atlassian.net/browse/K8SPXC-1631)
        - Fixed the issue with the Operator restarting pod-0 after the cluster is
        ready. The issue is caused by ConfigMap and StatefulSet being created too
        close to each other and Kubernetes API can't return the newly created ConfigMap
        before creating the StatefulSet. The issue is fixed by reconciling the StatefulSet
        after the reconciliation of ConfigMap is completed.\n\n- [K8SPXC-1664](https://perconadev.atlassian.net/browse/K8SPXC-1664)
        - Fixed the use of the proper script to check PXC nodes when adding them by
        HAProxy\n\n##### Supported Software\n\nThe Operator was developed and tested
        with the following software:\n\n- Percona XtraDB Cluster versions 8.4.5-5.1
        (Tech preview), 8.0.42-33.1, and 5.7.44-31.65\n- Percona XtraBackup versions
        8.4.0-3, 8.0.35-34.1, and 2.4.29\n- HAProxy 2.8.15-1\n- ProxySQL 2.7.3\n-
        LogCollector based on fluent-bit 4.0.1\n- PMM Client 2.44.1 and 3.3.1\n\nOther
        options may also work but have not been tested.\n\n##### Supported Platforms\n\nPercona
        Operators are designed for compatibility with all [CNCF-certified](https://www.cncf.io/training/certification/software-conformance/)
        Kubernetes distributions. Our release process includes targeted testing and
        validation on major cloud provider platforms and OpenShift, as detailed below
        for Operator version 1.16.0:\n\n- [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine)
        1.30 - 1.33\n- [Amazon Elastic Container Service for Kubernetes (EKS)](https://aws.amazon.com)
        1.30 - 1.33\n- [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/)
        1.30 - 1.33\n- [OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift)
        4.15 - 4.19\n- [Minikube](https://minikube.sigs.k8s.io/docs/) 1.36.0 based
        on Kubernetes 1.33.1\n\nThis list only includes the platforms that the Percona
        Operators are specifically tested on as part of the release process. Other
        Kubernetes flavors and versions depend on the backward compatibility offered
        by Kubernetes itself.\n\n### [`v1.17.0`](https://redirect.github.com/percona/percona-xtradb-cluster-operator/releases/tag/v1.17.0)\n\n[Compare
        Source](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.16.1...v1.17.0)\n\n####
        Release Highlights\n\n##### Improved observability for HAProxy and ProxySQL\n\nGet
        insights into the HAProxy and ProxySQL performance by connecting to their
        statistics pages. Use the `cluster-name-haproxy:8084` and `cluster-name-proxysql:6070`
        endpoints to do so. Learn about other available ports in the [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/haproxy-conf.html).\n\n#####
        Improved cluster load management during backups\n\nIf parallel backups overload
        your cluster, you can turn off parallel execution to prevent this. Previously,
        this meant that you could only run one backup at a time - no new backups could
        start until the current one was finished. Now, the Operator queues backups
        and runs them one after another automatically. You can fine-tune the backup
        sequence by setting the start time for all backups or for a specific on-demand
        one using the [`spec.backup.startingDeadlineSeconds`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#backupstartingdeadlineseconds)
        Custom Resource option. This provides greater control over backup operations.\n\nAnother
        improvement is for the case when your database cluster becomes unhealthy,
        for example, when a Pod crashes or restarts. The Operator suspends running
        backups to reduce the cluster's load. Once the cluster recovers and reports
        a Ready status, the Operator resumes the suspended backup. To further offload
        the cluster during an unhealthy state, you can configure how long a backup
        remains suspended by using the [`spec.backup.suspendedDeadlineSeconds`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#backupsuspendeddeadlineseconds)
        Custom Resource option. If this time expires before the cluster recovers,
        the backup is marked as \"failed.\"\n\n##### Monitor PMM Client health and
        status\n\nPercona Monitoring and Management (PMM) is a great tool to [monitor
        the health of your database cluster](https://docs.percona.com/percona-operator-for-mysql/pxc/monitoring.html).
        Now you can also learn if PMM itself is healthy using probes - a Kubernetes
        diagnostics mechanism to check the health and status of containers. Use the
        [`spec.pmm.readinessProbes.*`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#pmmreadinessprobesinitialdelayseconds)
        and [`spec.pmm.livenessProbes.*`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#pmmlivenessprobesinitialdelayseconds)
        Custom Resource options to fine-tune Readiness and Liveness probes for PMM
        Client.\n\n##### Improved observability of binary log backups\n\nGet insights
        into the success and failure rates of binlog operations, timeliness of processing
        and uploads and potential gaps or inconsistencies in binlog data with the
        Prometheus metrics added for the Operator. Gather this data by connecting
        to the `<pitr-pod-service>:8080/metrics` endpoint. Learn more about the available
        metrics in the [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/backups-pitr.html#binary-logs-statistics).\n\n####
        Deprecation, Rename and Removal\n\nThe `spec.haproxy.exposePrimary.enabled`
        field is deprecated. If enabled via the `spec.haproxy.enabled`, the HAProxy
        primary service is already exposed.\n\n#### New Features\n\n- [K8SPXC-747](https://perconadev.atlassian.net/browse/K8SPXC-747),
        [K8SPXC-1473](https://perconadev.atlassian.net/browse/K8SPXC-1473) - Add the
        ability to access the statistics pages for HAProxy and ProxySQL\n\n- [K8SPXC-1366](https://perconadev.atlassian.net/browse/K8SPXC-1366)
        - Add the ability to queue backups and run them sequentially, and to optimize
        the cluster load with the ability to suspend backups for an unhealthy cluster.
        A user can assign the start time and suspension time to backups to manage
        them better.\n\n- [K8SPXC-1432](https://perconadev.atlassian.net/browse/K8SPXC-1432)
        - Enable users to configure cluster-wide Operator deployments in OpenShift
        certified catalog using OLM.\n\n#### Improvements\n\n- [K8SPXC-1367](https://perconadev.atlassian.net/browse/K8SPXC-1367)
        - Now a user can configure Readiness and Liveness probes for PMM Client container
        to check its health and status\n\n- [K8SPXC-1461](https://perconadev.atlassian.net/browse/K8SPXC-1461)
        - Improve logging for resizing PVC with the information about successful and
        failed PVC resize. Log errors on resize attempts if the Storage Class doesn't
        support resizing.\n\n- [K8SPXC-1466](https://perconadev.atlassian.net/browse/K8SPXC-1466)
        - Mark the containers that provide the service as default ones with the annotation.
        This enables a user to connect to a Pod without explicitly specifying a container.\n\n-
        [K8SPXC-1473](https://perconadev.atlassian.net/browse/K8SPXC-1473) - Add the
        ability to connect to the built-in statistics pages for HAProxy and ProxySQL
        by exposing the ports for those pages\n\n- [K8SPXC-1475](https://perconadev.atlassian.net/browse/K8SPXC-1475)
        - Update the backup image to use AWS CLI instead of MinIO CLI due to the license
        change\n\n- [K8SPXC-1510](https://perconadev.atlassian.net/browse/K8SPXC-1510)
        - Add the ability to suppress messages about the use of deprecated features
        in MySQL Error Log by adding the `log_error_suppression_list` key from the
        `my.cnf` configuration file and defining the message number in the `spec.pxc.configuration`
        subsection of the Custom Resource manifest. See [how to change MySQL options](https://docs.percona.com/percona-operator-for-mysql/pxc/options.html)
        for steps. This improves readability for MySQL error log.\n\n- [K8SPXC-1512](https://perconadev.atlassian.net/browse/K8SPXC-1512)
        - For Percona XtraDB Cluster version 8.4 and above, binary log user defined
        functions for point-in-time recovery (`binlog_utils_udf`) are now installed
        as a component instead of a plugin. This improves their compatibility across
        platforms and provides automatic dependency handling.\n\n- [K8SPXC-1542](https://perconadev.atlassian.net/browse/K8SPXC-1542)
        - Improve binlog upload for large files to Azure blob storage with the ability
        to define the block size and the number of concurrent writers for the upload
        (Thanks to user dcaputo-harmoni for contribution)\n\n- [K8SPXC-1543](https://perconadev.atlassian.net/browse/K8SPXC-1543)
        - Set PITR controller reference for binlog-collector deployment the same way
        as it's set for PXC and proxy StatefulSets. This creates a connection between
        PITR deployment and cluster resource (Thank you Vlad Gusev for the contribution)\n\n-
        [K8SPXC-1544](https://perconadev.atlassian.net/browse/K8SPXC-1544) - Improve
        observability of binlog collector by adding the support of basic Prometheus
        metrics (Thank you Vlad Gusev for the contribution)\n\n- [K8SPXC-1567](https://perconadev.atlassian.net/browse/K8SPXC-1567)
        - Normalize duplicate slashes if the bucket path for binlog collector ends
        with a slash (`/`) (Thank you Vlad Gusev for the contribution)\n\n- [K8SPXC-1596](https://perconadev.atlassian.net/browse/K8SPXC-1596)
        - Assign a correct status to a backup if data upload fails due to incomplete
        backup\n\n- [K8SPXC-1620](https://perconadev.atlassian.net/browse/K8SPXC-1620)
        - Fixed the issue with a failing backup by adding a retry logic to the cloud
        storage cleanup task to check for uploaded files and clean them up before
        uploading new files\n\n#### Bugs Fixed\n\n- [K8SPXC-1152](https://perconadev.atlassian.net/browse/K8SPXC-1152)
        Fixed the issue with the restore process being stuck when the Operator is
        restarted by setting annotations on the `perconaxtradbclusterrestores` object\n\n-
        [K8SPXC-1482](https://perconadev.atlassian.net/browse/K8SPXC-1482) Fixed the
        issue with the excessive connection resets on every pod recreation because
        the cluster's peer-list is not aware of Time To Live (TTL) defined for Kubernetes
        DNS records. Now there's a 30 second waiting period after a peer update (Thank
        you Vlad Gusev for reporting this issue and contributing to it)\n\n- [K8SPXC-1483](https://perconadev.atlassian.net/browse/K8SPXC-1483)
        - Fixed the bug where the point-in-time recovery collector process hangs if
        `mysqlbinlog` cannot connect to the database and start. Now the named pipeline
        is created with the `O_RDONLY` (Open for Read Only) and `O_NONBLOCK` (Non-Blocking
        Mode) to unlock the point-in-time recovery collector process.  (Thank you
        Vlad Gusev for reporting this issue and contributing to it)\n\n- [K8SPXC-1509](https://perconadev.atlassian.net/browse/K8SPXC-1509)
        - Fixed the bug where the cluster enters the error state temporarily if point-in-time
        is enabled for it.\n\n- [K8SPXC-1534](https://perconadev.atlassian.net/browse/K8SPXC-1534)
        - Fixed the issue with the inconsistent secret reconciliation by improving
        the controller's behavior to timely sync the secret cache and create an internal
        Secret immediately after its reconciliation.\n\n- [K8SPXC-1538](https://perconadev.atlassian.net/browse/K8SPXC-1538)
        - Fixed the issue with the Operator failing when it tries to reconcile the
        Custom Resource for the `haproxy-replica` service if the `haproxy-primary`
        service has the type `LoadBalancer` and the `LoadBalancerSourceRanges` value
        defined. Now the `haproxy-replica` service inherits this configuration.\n\n-
        [K8SPXC-1546](https://perconadev.atlassian.net/browse/K8SPXC-1546), [K8SPXC-1549](https://perconadev.atlassian.net/browse/K8SPXC-1549)
        -  Fixed the issue with the PITR pod crashing on attempt to assign a GTID\n
        \ set to each binlog if the database cluster has a large number of binlogs
        by caching the `binlog->gtid` set pairs\n\n- [K8SPXC-1547](https://perconadev.atlassian.net/browse/K8SPXC-1547)
        - Removed the outdated example from the `backup.yaml` manifest and update
        the documentation how to track backup progress\n\n- [K8SPXC-1616](https://perconadev.atlassian.net/browse/K8SPXC-1616)
        - Fixed a bug where the ProxySQL fails to be configured if the password for
        a `proxysqladmin` user starts with a star (`*`) character by reporting an
        error and making the Operator regenerate a new password that doesn't start
        with a star (Thank you Chris Fidao for reporting this issue and contribution)\n\n####
        Supported Software\n\nThe Operator was developed and tested with the following
        software:\n\n- Percona XtraDB Cluster versions 8.4.3-3.1 (Tech preview), 8.0.41-32.1,
        and 5.7.44-31.65\n- Percona XtraBackup versions 8.4.0-1, 8.0.35-32, and 2.4.29\n-
        HAProxy 2.8.14\n- ProxySQL 2.7.1-1\n- LogCollector based on fluent-bit 4.0.0\n-
        PMM Client 2.44.0\n\nOther options may also work but have not been tested.\n\n####
        Supported Platforms\n\nPercona Operators are designed for compatibility with
        all [CNCF-certified :octicons-link-external-16:](https://www.cncf.io/training/certification/software-conformance/)
        Kubernetes distributions. Our release process includes targeted testing and
        validation on major cloud provider platforms and OpenShift, as detailed below
        for Operator version 1.16.0:\n\n- [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine)
        1.29 - 1.32\n- [Amazon Elastic Container Service for Kubernetes (EKS)](https://aws.amazon.com)
        1.30 - 1.32\n- [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/)
        1.30 - 1.32\n- [OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift)
        4.14 - 4.18\n- [Minikube](https://minikube.sigs.k8s.io/docs/) 1.35.0 based
        on Kubernetes 1.32.0\n\nThis list only includes the platforms that the Percona
        Operators are specifically tested on as part of the release process. Other
        Kubernetes flavors and versions depend on the backward compatibility offered
        by Kubernetes itself.\n\n</details>\n\n<details>\n<summary>percona/percona-helm-charts
        (pxc-operator)</summary>\n\n### [`v1.18.0`](https://redirect.github.com/percona/percona-helm-charts/releases/tag/pxc-operator-1.18.0)\n\n[Compare
        Source](https://redirect.github.com/percona/percona-helm-charts/compare/pxc-operator-1.17.0...pxc-operator-1.18.0)\n\nA
        Helm chart for deploying the Percona Operator for MySQL (based on Percona
        XtraDB Cluster)\n\nFor more information, please check official release notes:
        [Release Notes PXC Operator 1.18.0](https://docs.percona.com/percona-operator-for-mysql/pxc/ReleaseNotes/Kubernetes-Operator-for-PXC-RN1.18.0.html)\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\U0001F47B **Immortal**: This PR will be
        recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions)
        if that's undesired.\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/vexxhost/atmosphere).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNjQuMCIsInVwZGF0ZWRJblZlciI6IjQyLjg1LjEiLCJ0YXJnZXRCcmFuY2giOiJzdGFibGUvMjAyNC4xIiwibGFiZWxzIjpbInNraXAtcmVsZWFzZS1ub3RlcyJdfQ==-->\n"
      change_url: https://github.com/vexxhost/atmosphere/pull/2597
      child_jobs: []
      commit_id: 3cc19499fde0eccd0f6fba57d96557a04b15f762
      event_id: 1e14e500-f550-11f0-980b-1903c107d9a5
      executor:
        hostname: 3a2793d2bd32
        inventory_file: /var/lib/zuul/builds/39b2fde127964980aed2b640e4b79098/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/39b2fde127964980aed2b640e4b79098/work/logs
        result_data_file: /var/lib/zuul/builds/39b2fde127964980aed2b640e4b79098/work/results.json
        src_root: /var/lib/zuul/builds/39b2fde127964980aed2b640e4b79098/work/src
        work_root: /var/lib/zuul/builds/39b2fde127964980aed2b640e4b79098/work
      include_vars: []
      items:
      - branch: stable/2024.1
        change: '2597'
        change_message: "fix(deps): update pxc (stable/2024.1)\n\nThis PR contains
          the following updates:\n\n| Package | Type | Update | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
          | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|---|---|\n|
          docker.io/percona/haproxy |  | patch | `2.8.14` \u2192 `2.8.18` | ![age](https://developer.mend.io/api/mc/badges/age/docker/docker.io%2fpercona%2fhaproxy/2.8.18?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/docker.io%2fpercona%2fhaproxy/2.8.14/2.8.18?slim=true)
          |\n| docker.io/percona/percona-xtradb-cluster-operator |  | minor | `1.17.0`
          \u2192 `1.19.0` | ![age](https://developer.mend.io/api/mc/badges/age/docker/docker.io%2fpercona%2fpercona-xtradb-cluster-operator/1.19.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/docker.io%2fpercona%2fpercona-xtradb-cluster-operator/1.17.0/1.19.0?slim=true)
          |\n| [github.com/percona/percona-xtradb-cluster-operator](https://redirect.github.com/percona/percona-xtradb-cluster-operator)
          | require | minor | `v1.16.1` \u2192 `v1.19.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fpercona%2fpercona-xtradb-cluster-operator/v1.19.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fpercona%2fpercona-xtradb-cluster-operator/v1.16.1/v1.19.0?slim=true)
          |\n| [percona/percona-xtradb-cluster-operator](https://redirect.github.com/percona/percona-xtradb-cluster-operator)
          |  | minor | `1.17.0` \u2192 `1.18.0` | ![age](https://developer.mend.io/api/mc/badges/age/github-releases/percona%2fpercona-xtradb-cluster-operator/1.18.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/percona%2fpercona-xtradb-cluster-operator/1.17.0/1.18.0?slim=true)
          |\n| [pxc-operator](https://docs.percona.com/percona-operator-for-mysql/pxc/)
          ([source](https://redirect.github.com/percona/percona-helm-charts)) |  |
          minor | `1.17.0` \u2192 `1.18.0` | ![age](https://developer.mend.io/api/mc/badges/age/helm/pxc-operator/1.18.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/helm/pxc-operator/1.17.0/1.18.0?slim=true)
          |\n| quay.io/prometheus/mysqld-exporter |  | minor | `v0.17.0` \u2192 `v0.18.0`
          | ![age](https://developer.mend.io/api/mc/badges/age/docker/quay.io%2fprometheus%2fmysqld-exporter/v0.18.0?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/quay.io%2fprometheus%2fmysqld-exporter/v0.17.0/v0.18.0?slim=true)
          |\n\n---\n\n### Release Notes\n\n<details>\n<summary>percona/percona-xtradb-cluster-operator
          (github.com/percona/percona-xtradb-cluster-operator)</summary>\n\n### [`v1.19.0`](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.18.0...v1.19.0)\n\n[Compare
          Source](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.18.0...v1.19.0)\n\n###
          [`v1.18.0`](https://redirect.github.com/percona/percona-xtradb-cluster-operator/releases/tag/v1.18.0)\n\n[Compare
          Source](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.17.0...v1.18.0)\n\n#####
          Release Highlights\n\nThis release of Percona Operator for MySQL based on
          Percona XtraDB Cluster includes the following new features and improvements:\n\n#####
          PMM3 support\n\nThe Operator is natively integrated with [PMM 3](https://www.percona.com/doc/percona-monitoring-and-management/3/index.html),
          enabling you to monitor the health and performance of your Percona Distribution
          for MySQL deployment and at the same time enjoy enhanced performance, new
          features, and improved security that PMM 3 provides.\n\nNote that the Operator
          supports both PMM2 and PMM3. The decision on what PMM version is used depends
          on the authentication method you provide in the Operator configuration:
          PMM2 uses API keys while PMM3 uses service account token. If the Operator
          configuration contains both authentication methods with non-empty values,
          PMM3 takes the priority.\n\nTo use PMM, ensure that the PMM client image
          is compatible with the PMM Server version. Check [Percona certified images](https://docs.percona.com/percona-operator-for-mysql/pxc/images.html)
          for the correct client image.\n\nFor how to configure monitoring with PMM,
          see the [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/monitoring.html).\n\n#####
          Improved monitoring for clusters in multi-region or multi-namespace deployments
          in PMM\n\nNow you can define a custom name for your clusters deployed in
          different data centers. This name helps Percona Management and Monitoring
          (PMM) Server to correctly recognize clusters as connected and monitor them
          as one deployment. Similarly, PMM Server identifies clusters deployed with
          the same names in different namespaces as separate ones and correctly displays
          performance metrics for you on dashboards.\n\nTo assign a custom name, define
          this configuration in the Custom Resource manifest for your cluster:\n\n```yaml\nspec:\n
          \ pmm:\n    customClusterName: testClusterName\n```\n\n##### More resilient
          database restores without matching user Secrets\n\nYou no longer need matching
          user Secrets between your backup and your target cluster to perform a restore.
          The Operator now has a post-restore step that changes user passwords in
          the restored database to the ones from the local Secret. Also, it creates
          missing system users and adds missing grants.\n\nThis flow is the same regardless
          of whether you restore to the same cluster or to a completely new one.\n\nThe
          removal of this major roadblock to have a Secret for restores makes your
          disaster recovery process smoother and more reliable. This enhancement makes
          managing databases on Kubernetes more robust and operator-friendly.\n\n#####
          Improved backup retention for streamlined management of scheduled backups
          in cloud storage\n\nA new backup retention configuration gives you more
          control over how backups are managed in storage and retained in Kubernetes.\n\nWith
          the `deleteFromStorage` flag , you can disable automatic deletion from AWS
          S3 or Azure Blob storage and instead rely on native cloud lifecycle policies.
          This makes backup cleanup more efficient and better aligned with flexible
          storage strategies.\n\nThe legacy `keep` option is now deprecated and mapped
          to the new `retention` block for compatibility. We encourage you to start
          using the `backup.schedule.retention` configuration:\n\n```yaml\nschedule:\n
          \ - name: \"sat-night-backup\"\n    schedule: \"0 0 * * 6\"\n    retention:\n
          \     count: 3\n      type: count\n      deleteFromStorage: true\n    storageName:
          s3-us-west\n```\n\nNote that if you have both `backup.schedule.keep`  and
          `backup.schedule.retention`  defined, the `backup.schedule.retention` takes
          precedence.\n\n##### Added labels to identify the version of the Operator\n\nCustom
          Resource Definition (CRD) is compatible with the last three Operator versions.
          To know which Operator version is attached to it, we've added labels to
          all Custom Resource Definitions. The labels help you identify the current
          Operator version and decide if you need to update the CRD. To view the labels,
          run: `kubectl get crd perconaxtradbclusters.pxc.percona.com --show-labels`.\n\n#####
          Cross-site replication is now supported for Percona XtraDB Cluster 8.4\n\nCross-site
          replication is now available with Percona XtraDB Cluster 8.4.x, lifting
          one of the  limitations in the Operator for this database version. This
          enhancement marks a significant step toward general availability of Percona
          XtraDB Cluster 8.4 in the Operator by enabling multi-site deployments and
          improving resilience across distributed environments.\n\n##### Deprecation,
          Rename and Removal\n\n- The `pxc.expose.loadBalancerIP`, `haproxy.exposePrimary.loadBalancerIP`,
          `haproxy.exposeReplicas.loadBalancerIP` and `proxysql.expose.loadBalancerIP`
          keys are deprecated. The `loadBalancerIP` field is also deprecated upstream
          in Kubernetes\n  due to its inconsistent behavior across cloud providers
          and lack of dual-stack support. As a result, its usage is strongly discouraged.\n\n
          \ We recommend using cloud provider-specific annotations instead, as they
          offer more predictable and portable behavior for managing load balancer
          IP assignments.\n\n  The `pxc.expose.loadBalancerIP`, `haproxy.exposePrimary.loadBalancerIP`,
          `haproxy.exposeReplicas.loadBalancerIP` and `proxysql.expose.loadBalancerIP`
          keys are scheduled for removal in future releases.\n\n- The `backup.schedule.keep`
          field is deprecated and will be removed after release 1.21.0. We recommend
          using the `backup.schedule.retention` instead as follows:\n\n  ```yaml\n
          \ schedule:\n    - name: \"sat-night-backup\"\n      schedule: \"0 0 **
          6\"\n      retention:\n        count: 3\n        type: count\n        deleteFromStorage:
          true\n      storageName: s3-us-west\n  ```\n\n- New repositories for Percona
          XtraBackup and Logcollector\n\n  Now the Operator uses the official Percona
          Docker images for the `percona-xtrabackup` and `logcollector` components.
          Pay attention to the new image repositories when you upgrade the Operator
          and the database. Check the [Percona certified images](https://docs.percona.com/percona-operator-for-mysql/pxc/images.html)
          for exact image names.\n\n- Changes for Helm charts:\n\n  - PMM3 is now
          the default. To keep using PMM2, set the `pmm.tag: 2.44.1`\n  - If you install
          or upgrade the Operator with default manifests using Helm charts on Openshift
          4.19, you must use the `docker.io` registry prefix to guarantee successful
          download from the DockerHub `percona-xtradb-cluster` repository. Read the
          [Considerations for using OpenShift 4.19](#considerations-for-using-openshift-419)
          section for more information.\n\n##### Known limitations\n\n##### Considerations
          for using OpenShift 4.19\n\nStarting with OpenShift 4.19, the way images
          with not fully qualified names are pulled has changed for repositories that
          share the same repository name on DockerHub and Red Hat Marketplace. By
          default the tags are pulled from Red Hat Marketplace. Specifying not fully
          qualified image names may result in the `ImagePullBackOff` error.\n\n- **OLM
          installation:** Images are provided with the fully qualified names and are
          pulled from the Red Hat Marketplace/DockerHub registry.\n- **Manual install/update
          with default manifests:** Images must use the `docker.io` registry prefix
          to guarantee successful download from the Dockerhub `percona-xtradb-cluster`
          repository.\n\nSee our documentation for [manual installation](https://docs.percona.com/percona-operator-for-mysql/pxc/openshift.html#install-the-operator-via-the-command-line-interface)
          or [update](https://docs.percona.com/percona-operator-for-mysql/pxc/update_openshift.html#update-via-the-command-line-interface).\n\n#####
          Changleog\n\n##### New Features\n\n- [K8SPXC-1284](https://perconadev.atlassian.net/browse/K8SPXC-1284)
          - Add the ability to configure protocol for peer-list DNS SRV lookups\n\n-
          [K8SPXC-1599](https://perconadev.atlassian.net/browse/K8SPXC-1599) - Allowed
          setting `loadBalancerClass` service type and using a custom implementation
          of a load balancer rather than the cloud provider default one\n\n##### Improvements\n\n-
          [K8SPXC-1375](https://perconadev.atlassian.net/browse/K8SPXC-1375) - Added
          a new retention configuration to allow users to delegate backup cleanup
          to cloud lifecycle policies (Thank you user Tristan for reporting this issue)\n\n-
          [K8SPXC-1376](https://perconadev.atlassian.net/browse/K8SPXC-1376) - Added
          the ability to restore from backup without a matching Secret resource\n\n-
          [K8SPXC-1399](https://perconadev.atlassian.net/browse/K8SPXC-1399) - Added
          a documentation how to set up a disaster recovery system and transfer workloads
          between sites\n\n- [K8SPXC-1415](https://perconadev.atlassian.net/browse/K8SPXC-1415)
          - Updated the `percona-xtrabackup` image to use the official `percona-xtrabackup`
          Docker image\n\n- [K8SPXC-1430](https://perconadev.atlassian.net/browse/K8SPXC-1430)
          - Improved handling of autogenerated certificates depending on the `delete-ssl`
          finalizer configuration\n\n- [K8SPXC-1448](https://perconadev.atlassian.net/browse/K8SPXC-1448),
          [K8SPXC-1449](https://perconadev.atlassian.net/browse/K8SPXC-1449) - Improved
          the `pvc-resize` test by using a custom storage class for EKS, reducing
          errors and improving the quota handling during resize\n\n- [K8SPXC-1450](https://perconadev.atlassian.net/browse/K8SPXC-1450)
          - Improved PVC resizing behavior when reducing the storage size by reverting
          the values when the quota is reached\n\n- [K8SPXC-1472](https://perconadev.atlassian.net/browse/K8SPXC-1472)
          - Deprecated the `loadBalancerIP` field due to its deprecation upstream\n\n-
          [K8SPXC-1513](https://perconadev.atlassian.net/browse/K8SPXC-1513) - Added
          PXC 8.4 support for version service\n\n- [K8SPXC-1529](https://perconadev.atlassian.net/browse/K8SPXC-1529)
          - Added support for cross-site replication with MySQL 8.4.0 by adding the
          use of `authentication_policy` instead of `default_authentication_plugin`\n\n-
          [K8SPXC-1553](https://perconadev.atlassian.net/browse/K8SPXC-1553) - Added
          support for PMM v3\n\n- [K8SPXC-1560](https://perconadev.atlassian.net/browse/K8SPXC-1560)
          - Added the warning about CRDs not being upgraded automatically after helm
          upgrade to the output\n\n- [K8SPXC-1566](https://perconadev.atlassian.net/browse/K8SPXC-1566)
          - Improved reconciliation of replicationChannels without proxy Pods by starting
          the database Pod bypassing the proxy (Thank you Justin Reasoner for contributing
          to this issue)\n\n- [K8SPXC-1569](https://perconadev.atlassian.net/browse/K8SPXC-1569)
          - Added Labels for Custom Resource Definitions (CRD) to identify the Operator
          version attached to them\n\n- [K8SPXC-1597](https://perconadev.atlassian.net/browse/K8SPXC-1597)
          - Improve the scheduled backups behavior for a cluster in an unhealthy state
          by postponing the job until the cluster reports the healthy status\n\n-
          [K8SPXC-1605](https://perconadev.atlassian.net/browse/K8SPXC-1605) - Introduced
          Azure CLI for checking if backup objects/folders exist in Azure storage\n\n-
          [K8SPXC-1612](https://perconadev.atlassian.net/browse/K8SPXC-1612) - Added
          the `imagePullSecrets` for PMM image\n\n- [K8SPXC-1615](https://perconadev.atlassian.net/browse/K8SPXC-1615)
          - Added the ability to define a custom cluster name for `pmm-admin` component\n\n-
          [K8SPXC-1624](https://perconadev.atlassian.net/browse/K8SPXC-1624) - Deleted
          deprecated finalizers code\n\n- [K8SPXC-1669](https://perconadev.atlassian.net/browse/K8SPXC-1669)
          - Improve the backup flow by generating a default endpoint URL for a storage
          from a region if it is not provided (Thank you Bernard Grymonpon for reporting
          this issue)\n\n- [K8SPXC-1677](https://perconadev.atlassian.net/browse/K8SPXC-1677)
          - Document the changed behavior with pulling images for default manifests
          on OpenShift 4.19 and update install and update instructions\n\n##### Bugs
          Fixed\n\n- [K8SPXC-1312](https://perconadev.atlassian.net/browse/K8SPXC-1312)
          - Fixed the issue with labels not being updated automatically for point-in-time
          recovery deployment upon Custom Resource changes\n\n- [K8SPXC-1347](https://perconadev.atlassian.net/browse/K8SPXC-1347)
          - Fixed the issue with point-in-time recovery failing due to TLS configuration
          mismatch between the server and the point-in-time recovery job by configuring
          it to use TLS if is required by the server.\n\n- [K8SPXC-1382](https://perconadev.atlassian.net/browse/K8SPXC-1382)
          - Fixed the issue with backup failing on AWS if using IAM profile without
          credentialsSecret by using credentialsSecret only when explicitly specified
          and relying on IAM roles instead (Thank you Itiel Olenick for reporting
          this issue)\n\n- [K8SPXC-1541](https://perconadev.atlassian.net/browse/K8SPXC-1541)
          - Fixed Telemetry module to to consider both empty string \"\" and comma
          separated namespaces in cluster-wide mode\n\n- [K8SPXC-1548](https://perconadev.atlassian.net/browse/K8SPXC-1548)
          Fixed the issue with deleting old backups on Google Cloud Storage by url-decoding
          the object path before deleting it (Thank you Mateusz Gruszkiewicz for reporting
          this issue)\n\n- [K8SPXC-1631](https://perconadev.atlassian.net/browse/K8SPXC-1631)
          - Fixed the issue with the Operator restarting pod-0 after the cluster is
          ready. The issue is caused by ConfigMap and StatefulSet being created too
          close to each other and Kubernetes API can't return the newly created ConfigMap
          before creating the StatefulSet. The issue is fixed by reconciling the StatefulSet
          after the reconciliation of ConfigMap is completed.\n\n- [K8SPXC-1664](https://perconadev.atlassian.net/browse/K8SPXC-1664)
          - Fixed the use of the proper script to check PXC nodes when adding them
          by HAProxy\n\n##### Supported Software\n\nThe Operator was developed and
          tested with the following software:\n\n- Percona XtraDB Cluster versions
          8.4.5-5.1 (Tech preview), 8.0.42-33.1, and 5.7.44-31.65\n- Percona XtraBackup
          versions 8.4.0-3, 8.0.35-34.1, and 2.4.29\n- HAProxy 2.8.15-1\n- ProxySQL
          2.7.3\n- LogCollector based on fluent-bit 4.0.1\n- PMM Client 2.44.1 and
          3.3.1\n\nOther options may also work but have not been tested.\n\n#####
          Supported Platforms\n\nPercona Operators are designed for compatibility
          with all [CNCF-certified](https://www.cncf.io/training/certification/software-conformance/)
          Kubernetes distributions. Our release process includes targeted testing
          and validation on major cloud provider platforms and OpenShift, as detailed
          below for Operator version 1.16.0:\n\n- [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine)
          1.30 - 1.33\n- [Amazon Elastic Container Service for Kubernetes (EKS)](https://aws.amazon.com)
          1.30 - 1.33\n- [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/)
          1.30 - 1.33\n- [OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift)
          4.15 - 4.19\n- [Minikube](https://minikube.sigs.k8s.io/docs/) 1.36.0 based
          on Kubernetes 1.33.1\n\nThis list only includes the platforms that the Percona
          Operators are specifically tested on as part of the release process. Other
          Kubernetes flavors and versions depend on the backward compatibility offered
          by Kubernetes itself.\n\n### [`v1.17.0`](https://redirect.github.com/percona/percona-xtradb-cluster-operator/releases/tag/v1.17.0)\n\n[Compare
          Source](https://redirect.github.com/percona/percona-xtradb-cluster-operator/compare/v1.16.1...v1.17.0)\n\n####
          Release Highlights\n\n##### Improved observability for HAProxy and ProxySQL\n\nGet
          insights into the HAProxy and ProxySQL performance by connecting to their
          statistics pages. Use the `cluster-name-haproxy:8084` and `cluster-name-proxysql:6070`
          endpoints to do so. Learn about other available ports in the [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/haproxy-conf.html).\n\n#####
          Improved cluster load management during backups\n\nIf parallel backups overload
          your cluster, you can turn off parallel execution to prevent this. Previously,
          this meant that you could only run one backup at a time - no new backups
          could start until the current one was finished. Now, the Operator queues
          backups and runs them one after another automatically. You can fine-tune
          the backup sequence by setting the start time for all backups or for a specific
          on-demand one using the [`spec.backup.startingDeadlineSeconds`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#backupstartingdeadlineseconds)
          Custom Resource option. This provides greater control over backup operations.\n\nAnother
          improvement is for the case when your database cluster becomes unhealthy,
          for example, when a Pod crashes or restarts. The Operator suspends running
          backups to reduce the cluster's load. Once the cluster recovers and reports
          a Ready status, the Operator resumes the suspended backup. To further offload
          the cluster during an unhealthy state, you can configure how long a backup
          remains suspended by using the [`spec.backup.suspendedDeadlineSeconds`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#backupsuspendeddeadlineseconds)
          Custom Resource option. If this time expires before the cluster recovers,
          the backup is marked as \"failed.\"\n\n##### Monitor PMM Client health and
          status\n\nPercona Monitoring and Management (PMM) is a great tool to [monitor
          the health of your database cluster](https://docs.percona.com/percona-operator-for-mysql/pxc/monitoring.html).
          Now you can also learn if PMM itself is healthy using probes - a Kubernetes
          diagnostics mechanism to check the health and status of containers. Use
          the [`spec.pmm.readinessProbes.*`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#pmmreadinessprobesinitialdelayseconds)
          and [`spec.pmm.livenessProbes.*`](https://docs.percona.com/percona-operator-for-mysql/pxc/operator.html#pmmlivenessprobesinitialdelayseconds)
          Custom Resource options to fine-tune Readiness and Liveness probes for PMM
          Client.\n\n##### Improved observability of binary log backups\n\nGet insights
          into the success and failure rates of binlog operations, timeliness of processing
          and uploads and potential gaps or inconsistencies in binlog data with the
          Prometheus metrics added for the Operator. Gather this data by connecting
          to the `<pitr-pod-service>:8080/metrics` endpoint. Learn more about the
          available metrics in the [documentation](https://docs.percona.com/percona-operator-for-mysql/pxc/backups-pitr.html#binary-logs-statistics).\n\n####
          Deprecation, Rename and Removal\n\nThe `spec.haproxy.exposePrimary.enabled`
          field is deprecated. If enabled via the `spec.haproxy.enabled`, the HAProxy
          primary service is already exposed.\n\n#### New Features\n\n- [K8SPXC-747](https://perconadev.atlassian.net/browse/K8SPXC-747),
          [K8SPXC-1473](https://perconadev.atlassian.net/browse/K8SPXC-1473) - Add
          the ability to access the statistics pages for HAProxy and ProxySQL\n\n-
          [K8SPXC-1366](https://perconadev.atlassian.net/browse/K8SPXC-1366) - Add
          the ability to queue backups and run them sequentially, and to optimize
          the cluster load with the ability to suspend backups for an unhealthy cluster.
          A user can assign the start time and suspension time to backups to manage
          them better.\n\n- [K8SPXC-1432](https://perconadev.atlassian.net/browse/K8SPXC-1432)
          - Enable users to configure cluster-wide Operator deployments in OpenShift
          certified catalog using OLM.\n\n#### Improvements\n\n- [K8SPXC-1367](https://perconadev.atlassian.net/browse/K8SPXC-1367)
          - Now a user can configure Readiness and Liveness probes for PMM Client
          container to check its health and status\n\n- [K8SPXC-1461](https://perconadev.atlassian.net/browse/K8SPXC-1461)
          - Improve logging for resizing PVC with the information about successful
          and failed PVC resize. Log errors on resize attempts if the Storage Class
          doesn't support resizing.\n\n- [K8SPXC-1466](https://perconadev.atlassian.net/browse/K8SPXC-1466)
          - Mark the containers that provide the service as default ones with the
          annotation. This enables a user to connect to a Pod without explicitly specifying
          a container.\n\n- [K8SPXC-1473](https://perconadev.atlassian.net/browse/K8SPXC-1473)
          - Add the ability to connect to the built-in statistics pages for HAProxy
          and ProxySQL by exposing the ports for those pages\n\n- [K8SPXC-1475](https://perconadev.atlassian.net/browse/K8SPXC-1475)
          - Update the backup image to use AWS CLI instead of MinIO CLI due to the
          license change\n\n- [K8SPXC-1510](https://perconadev.atlassian.net/browse/K8SPXC-1510)
          - Add the ability to suppress messages about the use of deprecated features
          in MySQL Error Log by adding the `log_error_suppression_list` key from the
          `my.cnf` configuration file and defining the message number in the `spec.pxc.configuration`
          subsection of the Custom Resource manifest. See [how to change MySQL options](https://docs.percona.com/percona-operator-for-mysql/pxc/options.html)
          for steps. This improves readability for MySQL error log.\n\n- [K8SPXC-1512](https://perconadev.atlassian.net/browse/K8SPXC-1512)
          - For Percona XtraDB Cluster version 8.4 and above, binary log user defined
          functions for point-in-time recovery (`binlog_utils_udf`) are now installed
          as a component instead of a plugin. This improves their compatibility across
          platforms and provides automatic dependency handling.\n\n- [K8SPXC-1542](https://perconadev.atlassian.net/browse/K8SPXC-1542)
          - Improve binlog upload for large files to Azure blob storage with the ability
          to define the block size and the number of concurrent writers for the upload
          (Thanks to user dcaputo-harmoni for contribution)\n\n- [K8SPXC-1543](https://perconadev.atlassian.net/browse/K8SPXC-1543)
          - Set PITR controller reference for binlog-collector deployment the same
          way as it's set for PXC and proxy StatefulSets. This creates a connection
          between PITR deployment and cluster resource (Thank you Vlad Gusev for the
          contribution)\n\n- [K8SPXC-1544](https://perconadev.atlassian.net/browse/K8SPXC-1544)
          - Improve observability of binlog collector by adding the support of basic
          Prometheus metrics (Thank you Vlad Gusev for the contribution)\n\n- [K8SPXC-1567](https://perconadev.atlassian.net/browse/K8SPXC-1567)
          - Normalize duplicate slashes if the bucket path for binlog collector ends
          with a slash (`/`) (Thank you Vlad Gusev for the contribution)\n\n- [K8SPXC-1596](https://perconadev.atlassian.net/browse/K8SPXC-1596)
          - Assign a correct status to a backup if data upload fails due to incomplete
          backup\n\n- [K8SPXC-1620](https://perconadev.atlassian.net/browse/K8SPXC-1620)
          - Fixed the issue with a failing backup by adding a retry logic to the cloud
          storage cleanup task to check for uploaded files and clean them up before
          uploading new files\n\n#### Bugs Fixed\n\n- [K8SPXC-1152](https://perconadev.atlassian.net/browse/K8SPXC-1152)
          Fixed the issue with the restore process being stuck when the Operator is
          restarted by setting annotations on the `perconaxtradbclusterrestores` object\n\n-
          [K8SPXC-1482](https://perconadev.atlassian.net/browse/K8SPXC-1482) Fixed
          the issue with the excessive connection resets on every pod recreation because
          the cluster's peer-list is not aware of Time To Live (TTL) defined for Kubernetes
          DNS records. Now there's a 30 second waiting period after a peer update
          (Thank you Vlad Gusev for reporting this issue and contributing to it)\n\n-
          [K8SPXC-1483](https://perconadev.atlassian.net/browse/K8SPXC-1483) - Fixed
          the bug where the point-in-time recovery collector process hangs if `mysqlbinlog`
          cannot connect to the database and start. Now the named pipeline is created
          with the `O_RDONLY` (Open for Read Only) and `O_NONBLOCK` (Non-Blocking
          Mode) to unlock the point-in-time recovery collector process.  (Thank you
          Vlad Gusev for reporting this issue and contributing to it)\n\n- [K8SPXC-1509](https://perconadev.atlassian.net/browse/K8SPXC-1509)
          - Fixed the bug where the cluster enters the error state temporarily if
          point-in-time is enabled for it.\n\n- [K8SPXC-1534](https://perconadev.atlassian.net/browse/K8SPXC-1534)
          - Fixed the issue with the inconsistent secret reconciliation by improving
          the controller's behavior to timely sync the secret cache and create an
          internal Secret immediately after its reconciliation.\n\n- [K8SPXC-1538](https://perconadev.atlassian.net/browse/K8SPXC-1538)
          - Fixed the issue with the Operator failing when it tries to reconcile the
          Custom Resource for the `haproxy-replica` service if the `haproxy-primary`
          service has the type `LoadBalancer` and the `LoadBalancerSourceRanges` value
          defined. Now the `haproxy-replica` service inherits this configuration.\n\n-
          [K8SPXC-1546](https://perconadev.atlassian.net/browse/K8SPXC-1546), [K8SPXC-1549](https://perconadev.atlassian.net/browse/K8SPXC-1549)
          -  Fixed the issue with the PITR pod crashing on attempt to assign a GTID\n
          \ set to each binlog if the database cluster has a large number of binlogs
          by caching the `binlog->gtid` set pairs\n\n- [K8SPXC-1547](https://perconadev.atlassian.net/browse/K8SPXC-1547)
          - Removed the outdated example from the `backup.yaml` manifest and update
          the documentation how to track backup progress\n\n- [K8SPXC-1616](https://perconadev.atlassian.net/browse/K8SPXC-1616)
          - Fixed a bug where the ProxySQL fails to be configured if the password
          for a `proxysqladmin` user starts with a star (`*`) character by reporting
          an error and making the Operator regenerate a new password that doesn't
          start with a star (Thank you Chris Fidao for reporting this issue and contribution)\n\n####
          Supported Software\n\nThe Operator was developed and tested with the following
          software:\n\n- Percona XtraDB Cluster versions 8.4.3-3.1 (Tech preview),
          8.0.41-32.1, and 5.7.44-31.65\n- Percona XtraBackup versions 8.4.0-1, 8.0.35-32,
          and 2.4.29\n- HAProxy 2.8.14\n- ProxySQL 2.7.1-1\n- LogCollector based on
          fluent-bit 4.0.0\n- PMM Client 2.44.0\n\nOther options may also work but
          have not been tested.\n\n#### Supported Platforms\n\nPercona Operators are
          designed for compatibility with all [CNCF-certified :octicons-link-external-16:](https://www.cncf.io/training/certification/software-conformance/)
          Kubernetes distributions. Our release process includes targeted testing
          and validation on major cloud provider platforms and OpenShift, as detailed
          below for Operator version 1.16.0:\n\n- [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine)
          1.29 - 1.32\n- [Amazon Elastic Container Service for Kubernetes (EKS)](https://aws.amazon.com)
          1.30 - 1.32\n- [Azure Kubernetes Service (AKS)](https://azure.microsoft.com/en-us/services/kubernetes-service/)
          1.30 - 1.32\n- [OpenShift](https://www.redhat.com/en/technologies/cloud-computing/openshift)
          4.14 - 4.18\n- [Minikube](https://minikube.sigs.k8s.io/docs/) 1.35.0 based
          on Kubernetes 1.32.0\n\nThis list only includes the platforms that the Percona
          Operators are specifically tested on as part of the release process. Other
          Kubernetes flavors and versions depend on the backward compatibility offered
          by Kubernetes itself.\n\n</details>\n\n<details>\n<summary>percona/percona-helm-charts
          (pxc-operator)</summary>\n\n### [`v1.18.0`](https://redirect.github.com/percona/percona-helm-charts/releases/tag/pxc-operator-1.18.0)\n\n[Compare
          Source](https://redirect.github.com/percona/percona-helm-charts/compare/pxc-operator-1.17.0...pxc-operator-1.18.0)\n\nA
          Helm chart for deploying the Percona Operator for MySQL (based on Percona
          XtraDB Cluster)\n\nFor more information, please check official release notes:
          [Release Notes PXC Operator 1.18.0](https://docs.percona.com/percona-operator-for-mysql/pxc/ReleaseNotes/Kubernetes-Operator-for-PXC-RN1.18.0.html)\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\U0001F47B **Immortal**: This PR will
          be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions)
          if that's undesired.\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/vexxhost/atmosphere).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNjQuMCIsInVwZGF0ZWRJblZlciI6IjQyLjg1LjEiLCJ0YXJnZXRCcmFuY2giOiJzdGFibGUvMjAyNC4xIiwibGFiZWxzIjpbInNraXAtcmVsZWFzZS1ub3RlcyJdfQ==-->\n"
        change_url: https://github.com/vexxhost/atmosphere/pull/2597
        commit_id: 3cc19499fde0eccd0f6fba57d96557a04b15f762
        patchset: 3cc19499fde0eccd0f6fba57d96557a04b15f762
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere
          name: vexxhost/atmosphere
          short_name: atmosphere
          src_dir: src/github.com/vexxhost/atmosphere
        topic: null
      job: atmosphere-molecule-csi-rbd
      jobtags: []
      max_attempts: 3
      message: Zml4KGRlcHMpOiB1cGRhdGUgcHhjIChzdGFibGUvMjAyNC4xKQoKVGhpcyBQUiBjb250YWlucyB0aGUgZm9sbG93aW5nIHVwZGF0ZXM6Cgp8IFBhY2thZ2UgfCBUeXBlIHwgVXBkYXRlIHwgQ2hhbmdlIHwgW0FnZV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbQ29uZmlkZW5jZV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfAp8LS0tfC0tLXwtLS18LS0tfC0tLXwtLS18CnwgZG9ja2VyLmlvL3BlcmNvbmEvaGFwcm94eSB8ICB8IHBhdGNoIHwgYDIuOC4xNGAg4oaSIGAyLjguMThgIHwgIVthZ2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZ2UvZG9ja2VyL2RvY2tlci5pbyUyZnBlcmNvbmElMmZoYXByb3h5LzIuOC4xOD9zbGltPXRydWUpIHwgIVtjb25maWRlbmNlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29uZmlkZW5jZS9kb2NrZXIvZG9ja2VyLmlvJTJmcGVyY29uYSUyZmhhcHJveHkvMi44LjE0LzIuOC4xOD9zbGltPXRydWUpIHwKfCBkb2NrZXIuaW8vcGVyY29uYS9wZXJjb25hLXh0cmFkYi1jbHVzdGVyLW9wZXJhdG9yIHwgIHwgbWlub3IgfCBgMS4xNy4wYCDihpIgYDEuMTkuMGAgfCAhW2FnZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2FnZS9kb2NrZXIvZG9ja2VyLmlvJTJmcGVyY29uYSUyZnBlcmNvbmEteHRyYWRiLWNsdXN0ZXItb3BlcmF0b3IvMS4xOS4wP3NsaW09dHJ1ZSkgfCAhW2NvbmZpZGVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb25maWRlbmNlL2RvY2tlci9kb2NrZXIuaW8lMmZwZXJjb25hJTJmcGVyY29uYS14dHJhZGItY2x1c3Rlci1vcGVyYXRvci8xLjE3LjAvMS4xOS4wP3NsaW09dHJ1ZSkgfAp8IFtnaXRodWIuY29tL3BlcmNvbmEvcGVyY29uYS14dHJhZGItY2x1c3Rlci1vcGVyYXRvcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BlcmNvbmEvcGVyY29uYS14dHJhZGItY2x1c3Rlci1vcGVyYXRvcikgfCByZXF1aXJlIHwgbWlub3IgfCBgdjEuMTYuMWAg4oaSIGB2MS4xOS4wYCB8ICFbYWdlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvYWdlL2dvL2dpdGh1Yi5jb20lMmZwZXJjb25hJTJmcGVyY29uYS14dHJhZGItY2x1c3Rlci1vcGVyYXRvci92MS4xOS4wP3NsaW09dHJ1ZSkgfCAhW2NvbmZpZGVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb25maWRlbmNlL2dvL2dpdGh1Yi5jb20lMmZwZXJjb25hJTJmcGVyY29uYS14dHJhZGItY2x1c3Rlci1vcGVyYXRvci92MS4xNi4xL3YxLjE5LjA/c2xpbT10cnVlKSB8CnwgW3BlcmNvbmEvcGVyY29uYS14dHJhZGItY2x1c3Rlci1vcGVyYXRvcl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BlcmNvbmEvcGVyY29uYS14dHJhZGItY2x1c3Rlci1vcGVyYXRvcikgfCAgfCBtaW5vciB8IGAxLjE3LjBgIOKGkiBgMS4xOC4wYCB8ICFbYWdlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvYWdlL2dpdGh1Yi1yZWxlYXNlcy9wZXJjb25hJTJmcGVyY29uYS14dHJhZGItY2x1c3Rlci1vcGVyYXRvci8xLjE4LjA/c2xpbT10cnVlKSB8ICFbY29uZmlkZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2NvbmZpZGVuY2UvZ2l0aHViLXJlbGVhc2VzL3BlcmNvbmElMmZwZXJjb25hLXh0cmFkYi1jbHVzdGVyLW9wZXJhdG9yLzEuMTcuMC8xLjE4LjA/c2xpbT10cnVlKSB8CnwgW3B4Yy1vcGVyYXRvcl0oaHR0cHM6Ly9kb2NzLnBlcmNvbmEuY29tL3BlcmNvbmEtb3BlcmF0b3ItZm9yLW15c3FsL3B4Yy8pIChbc291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGVyY29uYS9wZXJjb25hLWhlbG0tY2hhcnRzKSkgfCAgfCBtaW5vciB8IGAxLjE3LjBgIOKGkiBgMS4xOC4wYCB8ICFbYWdlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvYWdlL2hlbG0vcHhjLW9wZXJhdG9yLzEuMTguMD9zbGltPXRydWUpIHwgIVtjb25maWRlbmNlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29uZmlkZW5jZS9oZWxtL3B4Yy1vcGVyYXRvci8xLjE3LjAvMS4xOC4wP3NsaW09dHJ1ZSkgfAp8IHF1YXkuaW8vcHJvbWV0aGV1cy9teXNxbGQtZXhwb3J0ZXIgfCAgfCBtaW5vciB8IGB2MC4xNy4wYCDihpIgYHYwLjE4LjBgIHwgIVthZ2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZ2UvZG9ja2VyL3F1YXkuaW8lMmZwcm9tZXRoZXVzJTJmbXlzcWxkLWV4cG9ydGVyL3YwLjE4LjA/c2xpbT10cnVlKSB8ICFbY29uZmlkZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2NvbmZpZGVuY2UvZG9ja2VyL3F1YXkuaW8lMmZwcm9tZXRoZXVzJTJmbXlzcWxkLWV4cG9ydGVyL3YwLjE3LjAvdjAuMTguMD9zbGltPXRydWUpIHwKCi0tLQoKIyMjIFJlbGVhc2UgTm90ZXMKCjxkZXRhaWxzPgo8c3VtbWFyeT5wZXJjb25hL3BlcmNvbmEteHRyYWRiLWNsdXN0ZXItb3BlcmF0b3IgKGdpdGh1Yi5jb20vcGVyY29uYS9wZXJjb25hLXh0cmFkYi1jbHVzdGVyLW9wZXJhdG9yKTwvc3VtbWFyeT4KCiMjIyBbYHYxLjE5LjBgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGVyY29uYS9wZXJjb25hLXh0cmFkYi1jbHVzdGVyLW9wZXJhdG9yL2NvbXBhcmUvdjEuMTguMC4uLnYxLjE5LjApCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXJjb25hL3BlcmNvbmEteHRyYWRiLWNsdXN0ZXItb3BlcmF0b3IvY29tcGFyZS92MS4xOC4wLi4udjEuMTkuMCkKCiMjIyBbYHYxLjE4LjBgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGVyY29uYS9wZXJjb25hLXh0cmFkYi1jbHVzdGVyLW9wZXJhdG9yL3JlbGVhc2VzL3RhZy92MS4xOC4wKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGVyY29uYS9wZXJjb25hLXh0cmFkYi1jbHVzdGVyLW9wZXJhdG9yL2NvbXBhcmUvdjEuMTcuMC4uLnYxLjE4LjApCgojIyMjIyBSZWxlYXNlIEhpZ2hsaWdodHMKClRoaXMgcmVsZWFzZSBvZiBQZXJjb25hIE9wZXJhdG9yIGZvciBNeVNRTCBiYXNlZCBvbiBQZXJjb25hIFh0cmFEQiBDbHVzdGVyIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgbmV3IGZlYXR1cmVzIGFuZCBpbXByb3ZlbWVudHM6CgojIyMjIyBQTU0zIHN1cHBvcnQKClRoZSBPcGVyYXRvciBpcyBuYXRpdmVseSBpbnRlZ3JhdGVkIHdpdGggW1BNTSAzXShodHRwczovL3d3dy5wZXJjb25hLmNvbS9kb2MvcGVyY29uYS1tb25pdG9yaW5nLWFuZC1tYW5hZ2VtZW50LzMvaW5kZXguaHRtbCksIGVuYWJsaW5nIHlvdSB0byBtb25pdG9yIHRoZSBoZWFsdGggYW5kIHBlcmZvcm1hbmNlIG9mIHlvdXIgUGVyY29uYSBEaXN0cmlidXRpb24gZm9yIE15U1FMIGRlcGxveW1lbnQgYW5kIGF0IHRoZSBzYW1lIHRpbWUgZW5qb3kgZW5oYW5jZWQgcGVyZm9ybWFuY2UsIG5ldyBmZWF0dXJlcywgYW5kIGltcHJvdmVkIHNlY3VyaXR5IHRoYXQgUE1NIDMgcHJvdmlkZXMuCgpOb3RlIHRoYXQgdGhlIE9wZXJhdG9yIHN1cHBvcnRzIGJvdGggUE1NMiBhbmQgUE1NMy4gVGhlIGRlY2lzaW9uIG9uIHdoYXQgUE1NIHZlcnNpb24gaXMgdXNlZCBkZXBlbmRzIG9uIHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2QgeW91IHByb3ZpZGUgaW4gdGhlIE9wZXJhdG9yIGNvbmZpZ3VyYXRpb246IFBNTTIgdXNlcyBBUEkga2V5cyB3aGlsZSBQTU0zIHVzZXMgc2VydmljZSBhY2NvdW50IHRva2VuLiBJZiB0aGUgT3BlcmF0b3IgY29uZmlndXJhdGlvbiBjb250YWlucyBib3RoIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgd2l0aCBub24tZW1wdHkgdmFsdWVzLCBQTU0zIHRha2VzIHRoZSBwcmlvcml0eS4KClRvIHVzZSBQTU0sIGVuc3VyZSB0aGF0IHRoZSBQTU0gY2xpZW50IGltYWdlIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgUE1NIFNlcnZlciB2ZXJzaW9uLiBDaGVjayBbUGVyY29uYSBjZXJ0aWZpZWQgaW1hZ2VzXShodHRwczovL2RvY3MucGVyY29uYS5jb20vcGVyY29uYS1vcGVyYXRvci1mb3ItbXlzcWwvcHhjL2ltYWdlcy5odG1sKSBmb3IgdGhlIGNvcnJlY3QgY2xpZW50IGltYWdlLgoKRm9yIGhvdyB0byBjb25maWd1cmUgbW9uaXRvcmluZyB3aXRoIFBNTSwgc2VlIHRoZSBbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2NzLnBlcmNvbmEuY29tL3BlcmNvbmEtb3BlcmF0b3ItZm9yLW15c3FsL3B4Yy9tb25pdG9yaW5nLmh0bWwpLgoKIyMjIyMgSW1wcm92ZWQgbW9uaXRvcmluZyBmb3IgY2x1c3RlcnMgaW4gbXVsdGktcmVnaW9uIG9yIG11bHRpLW5hbWVzcGFjZSBkZXBsb3ltZW50cyBpbiBQTU0KCk5vdyB5b3UgY2FuIGRlZmluZSBhIGN1c3RvbSBuYW1lIGZvciB5b3VyIGNsdXN0ZXJzIGRlcGxveWVkIGluIGRpZmZlcmVudCBkYXRhIGNlbnRlcnMuIFRoaXMgbmFtZSBoZWxwcyBQZXJjb25hIE1hbmFnZW1lbnQgYW5kIE1vbml0b3JpbmcgKFBNTSkgU2VydmVyIHRvIGNvcnJlY3RseSByZWNvZ25pemUgY2x1c3RlcnMgYXMgY29ubmVjdGVkIGFuZCBtb25pdG9yIHRoZW0gYXMgb25lIGRlcGxveW1lbnQuIFNpbWlsYXJseSwgUE1NIFNlcnZlciBpZGVudGlmaWVzIGNsdXN0ZXJzIGRlcGxveWVkIHdpdGggdGhlIHNhbWUgbmFtZXMgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMgYXMgc2VwYXJhdGUgb25lcyBhbmQgY29ycmVjdGx5IGRpc3BsYXlzIHBlcmZvcm1hbmNlIG1ldHJpY3MgZm9yIHlvdSBvbiBkYXNoYm9hcmRzLgoKVG8gYXNzaWduIGEgY3VzdG9tIG5hbWUsIGRlZmluZSB0aGlzIGNvbmZpZ3VyYXRpb24gaW4gdGhlIEN1c3RvbSBSZXNvdXJjZSBtYW5pZmVzdCBmb3IgeW91ciBjbHVzdGVyOgoKYGBgeWFtbApzcGVjOgogIHBtbToKICAgIGN1c3RvbUNsdXN0ZXJOYW1lOiB0ZXN0Q2x1c3Rlck5hbWUKYGBgCgojIyMjIyBNb3JlIHJlc2lsaWVudCBkYXRhYmFzZSByZXN0b3JlcyB3aXRob3V0IG1hdGNoaW5nIHVzZXIgU2VjcmV0cwoKWW91IG5vIGxvbmdlciBuZWVkIG1hdGNoaW5nIHVzZXIgU2VjcmV0cyBiZXR3ZWVuIHlvdXIgYmFja3VwIGFuZCB5b3VyIHRhcmdldCBjbHVzdGVyIHRvIHBlcmZvcm0gYSByZXN0b3JlLiBUaGUgT3BlcmF0b3Igbm93IGhhcyBhIHBvc3QtcmVzdG9yZSBzdGVwIHRoYXQgY2hhbmdlcyB1c2VyIHBhc3N3b3JkcyBpbiB0aGUgcmVzdG9yZWQgZGF0YWJhc2UgdG8gdGhlIG9uZXMgZnJvbSB0aGUgbG9jYWwgU2VjcmV0LiBBbHNvLCBpdCBjcmVhdGVzIG1pc3Npbmcgc3lzdGVtIHVzZXJzIGFuZCBhZGRzIG1pc3NpbmcgZ3JhbnRzLgoKVGhpcyBmbG93IGlzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB5b3UgcmVzdG9yZSB0byB0aGUgc2FtZSBjbHVzdGVyIG9yIHRvIGEgY29tcGxldGVseSBuZXcgb25lLgoKVGhlIHJlbW92YWwgb2YgdGhpcyBtYWpvciByb2FkYmxvY2sgdG8gaGF2ZSBhIFNlY3JldCBmb3IgcmVzdG9yZXMgbWFrZXMgeW91ciBkaXNhc3RlciByZWNvdmVyeSBwcm9jZXNzIHNtb290aGVyIGFuZCBtb3JlIHJlbGlhYmxlLiBUaGlzIGVuaGFuY2VtZW50IG1ha2VzIG1hbmFnaW5nIGRhdGFiYXNlcyBvbiBLdWJlcm5ldGVzIG1vcmUgcm9idXN0IGFuZCBvcGVyYXRvci1mcmllbmRseS4KCiMjIyMjIEltcHJvdmVkIGJhY2t1cCByZXRlbnRpb24gZm9yIHN0cmVhbWxpbmVkIG1hbmFnZW1lbnQgb2Ygc2NoZWR1bGVkIGJhY2t1cHMgaW4gY2xvdWQgc3RvcmFnZQoKQSBuZXcgYmFja3VwIHJldGVudGlvbiBjb25maWd1cmF0aW9uIGdpdmVzIHlvdSBtb3JlIGNvbnRyb2wgb3ZlciBob3cgYmFja3VwcyBhcmUgbWFuYWdlZCBpbiBzdG9yYWdlIGFuZCByZXRhaW5lZCBpbiBLdWJlcm5ldGVzLgoKV2l0aCB0aGUgYGRlbGV0ZUZyb21TdG9yYWdlYCBmbGFnICwgeW91IGNhbiBkaXNhYmxlIGF1dG9tYXRpYyBkZWxldGlvbiBmcm9tIEFXUyBTMyBvciBBenVyZSBCbG9iIHN0b3JhZ2UgYW5kIGluc3RlYWQgcmVseSBvbiBuYXRpdmUgY2xvdWQgbGlmZWN5Y2xlIHBvbGljaWVzLiBUaGlzIG1ha2VzIGJhY2t1cCBjbGVhbnVwIG1vcmUgZWZmaWNpZW50IGFuZCBiZXR0ZXIgYWxpZ25lZCB3aXRoIGZsZXhpYmxlIHN0b3JhZ2Ugc3RyYXRlZ2llcy4KClRoZSBsZWdhY3kgYGtlZXBgIG9wdGlvbiBpcyBub3cgZGVwcmVjYXRlZCBhbmQgbWFwcGVkIHRvIHRoZSBuZXcgYHJldGVudGlvbmAgYmxvY2sgZm9yIGNvbXBhdGliaWxpdHkuIFdlIGVuY291cmFnZSB5b3UgdG8gc3RhcnQgdXNpbmcgdGhlIGBiYWNrdXAuc2NoZWR1bGUucmV0ZW50aW9uYCBjb25maWd1cmF0aW9uOgoKYGBgeWFtbApzY2hlZHVsZToKICAtIG5hbWU6ICJzYXQtbmlnaHQtYmFja3VwIgogICAgc2NoZWR1bGU6ICIwIDAgKiAqIDYiCiAgICByZXRlbnRpb246CiAgICAgIGNvdW50OiAzCiAgICAgIHR5cGU6IGNvdW50CiAgICAgIGRlbGV0ZUZyb21TdG9yYWdlOiB0cnVlCiAgICBzdG9yYWdlTmFtZTogczMtdXMtd2VzdApgYGAKCk5vdGUgdGhhdCBpZiB5b3UgaGF2ZSBib3RoIGBiYWNrdXAuc2NoZWR1bGUua2VlcGAgIGFuZCBgYmFja3VwLnNjaGVkdWxlLnJldGVudGlvbmAgIGRlZmluZWQsIHRoZSBgYmFja3VwLnNjaGVkdWxlLnJldGVudGlvbmAgdGFrZXMgcHJlY2VkZW5jZS4KCiMjIyMjIEFkZGVkIGxhYmVscyB0byBpZGVudGlmeSB0aGUgdmVyc2lvbiBvZiB0aGUgT3BlcmF0b3IKCkN1c3RvbSBSZXNvdXJjZSBEZWZpbml0aW9uIChDUkQpIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgbGFzdCB0aHJlZSBPcGVyYXRvciB2ZXJzaW9ucy4gVG8ga25vdyB3aGljaCBPcGVyYXRvciB2ZXJzaW9uIGlzIGF0dGFjaGVkIHRvIGl0LCB3ZSd2ZSBhZGRlZCBsYWJlbHMgdG8gYWxsIEN1c3RvbSBSZXNvdXJjZSBEZWZpbml0aW9ucy4gVGhlIGxhYmVscyBoZWxwIHlvdSBpZGVudGlmeSB0aGUgY3VycmVudCBPcGVyYXRvciB2ZXJzaW9uIGFuZCBkZWNpZGUgaWYgeW91IG5lZWQgdG8gdXBkYXRlIHRoZSBDUkQuIFRvIHZpZXcgdGhlIGxhYmVscywgcnVuOiBga3ViZWN0bCBnZXQgY3JkIHBlcmNvbmF4dHJhZGJjbHVzdGVycy5weGMucGVyY29uYS5jb20gLS1zaG93LWxhYmVsc2AuCgojIyMjIyBDcm9zcy1zaXRlIHJlcGxpY2F0aW9uIGlzIG5vdyBzdXBwb3J0ZWQgZm9yIFBlcmNvbmEgWHRyYURCIENsdXN0ZXIgOC40CgpDcm9zcy1zaXRlIHJlcGxpY2F0aW9uIGlzIG5vdyBhdmFpbGFibGUgd2l0aCBQZXJjb25hIFh0cmFEQiBDbHVzdGVyIDguNC54LCBsaWZ0aW5nIG9uZSBvZiB0aGUgIGxpbWl0YXRpb25zIGluIHRoZSBPcGVyYXRvciBmb3IgdGhpcyBkYXRhYmFzZSB2ZXJzaW9uLiBUaGlzIGVuaGFuY2VtZW50IG1hcmtzIGEgc2lnbmlmaWNhbnQgc3RlcCB0b3dhcmQgZ2VuZXJhbCBhdmFpbGFiaWxpdHkgb2YgUGVyY29uYSBYdHJhREIgQ2x1c3RlciA4LjQgaW4gdGhlIE9wZXJhdG9yIGJ5IGVuYWJsaW5nIG11bHRpLXNpdGUgZGVwbG95bWVudHMgYW5kIGltcHJvdmluZyByZXNpbGllbmNlIGFjcm9zcyBkaXN0cmlidXRlZCBlbnZpcm9ubWVudHMuCgojIyMjIyBEZXByZWNhdGlvbiwgUmVuYW1lIGFuZCBSZW1vdmFsCgotIFRoZSBgcHhjLmV4cG9zZS5sb2FkQmFsYW5jZXJJUGAsIGBoYXByb3h5LmV4cG9zZVByaW1hcnkubG9hZEJhbGFuY2VySVBgLCBgaGFwcm94eS5leHBvc2VSZXBsaWNhcy5sb2FkQmFsYW5jZXJJUGAgYW5kIGBwcm94eXNxbC5leHBvc2UubG9hZEJhbGFuY2VySVBgIGtleXMgYXJlIGRlcHJlY2F0ZWQuIFRoZSBgbG9hZEJhbGFuY2VySVBgIGZpZWxkIGlzIGFsc28gZGVwcmVjYXRlZCB1cHN0cmVhbSBpbiBLdWJlcm5ldGVzCiAgZHVlIHRvIGl0cyBpbmNvbnNpc3RlbnQgYmVoYXZpb3IgYWNyb3NzIGNsb3VkIHByb3ZpZGVycyBhbmQgbGFjayBvZiBkdWFsLXN0YWNrIHN1cHBvcnQuIEFzIGEgcmVzdWx0LCBpdHMgdXNhZ2UgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQuCgogIFdlIHJlY29tbWVuZCB1c2luZyBjbG91ZCBwcm92aWRlci1zcGVjaWZpYyBhbm5vdGF0aW9ucyBpbnN0ZWFkLCBhcyB0aGV5IG9mZmVyIG1vcmUgcHJlZGljdGFibGUgYW5kIHBvcnRhYmxlIGJlaGF2aW9yIGZvciBtYW5hZ2luZyBsb2FkIGJhbGFuY2VyIElQIGFzc2lnbm1lbnRzLgoKICBUaGUgYHB4Yy5leHBvc2UubG9hZEJhbGFuY2VySVBgLCBgaGFwcm94eS5leHBvc2VQcmltYXJ5LmxvYWRCYWxhbmNlcklQYCwgYGhhcHJveHkuZXhwb3NlUmVwbGljYXMubG9hZEJhbGFuY2VySVBgIGFuZCBgcHJveHlzcWwuZXhwb3NlLmxvYWRCYWxhbmNlcklQYCBrZXlzIGFyZSBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gZnV0dXJlIHJlbGVhc2VzLgoKLSBUaGUgYGJhY2t1cC5zY2hlZHVsZS5rZWVwYCBmaWVsZCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgcmVsZWFzZSAxLjIxLjAuIFdlIHJlY29tbWVuZCB1c2luZyB0aGUgYGJhY2t1cC5zY2hlZHVsZS5yZXRlbnRpb25gIGluc3RlYWQgYXMgZm9sbG93czoKCiAgYGBgeWFtbAogIHNjaGVkdWxlOgogICAgLSBuYW1lOiAic2F0LW5pZ2h0LWJhY2t1cCIKICAgICAgc2NoZWR1bGU6ICIwIDAgKiogNiIKICAgICAgcmV0ZW50aW9uOgogICAgICAgIGNvdW50OiAzCiAgICAgICAgdHlwZTogY291bnQKICAgICAgICBkZWxldGVGcm9tU3RvcmFnZTogdHJ1ZQogICAgICBzdG9yYWdlTmFtZTogczMtdXMtd2VzdAogIGBgYAoKLSBOZXcgcmVwb3NpdG9yaWVzIGZvciBQZXJjb25hIFh0cmFCYWNrdXAgYW5kIExvZ2NvbGxlY3RvcgoKICBOb3cgdGhlIE9wZXJhdG9yIHVzZXMgdGhlIG9mZmljaWFsIFBlcmNvbmEgRG9ja2VyIGltYWdlcyBmb3IgdGhlIGBwZXJjb25hLXh0cmFiYWNrdXBgIGFuZCBgbG9nY29sbGVjdG9yYCBjb21wb25lbnRzLiBQYXkgYXR0ZW50aW9uIHRvIHRoZSBuZXcgaW1hZ2UgcmVwb3NpdG9yaWVzIHdoZW4geW91IHVwZ3JhZGUgdGhlIE9wZXJhdG9yIGFuZCB0aGUgZGF0YWJhc2UuIENoZWNrIHRoZSBbUGVyY29uYSBjZXJ0aWZpZWQgaW1hZ2VzXShodHRwczovL2RvY3MucGVyY29uYS5jb20vcGVyY29uYS1vcGVyYXRvci1mb3ItbXlzcWwvcHhjL2ltYWdlcy5odG1sKSBmb3IgZXhhY3QgaW1hZ2UgbmFtZXMuCgotIENoYW5nZXMgZm9yIEhlbG0gY2hhcnRzOgoKICAtIFBNTTMgaXMgbm93IHRoZSBkZWZhdWx0LiBUbyBrZWVwIHVzaW5nIFBNTTIsIHNldCB0aGUgYHBtbS50YWc6IDIuNDQuMWAKICAtIElmIHlvdSBpbnN0YWxsIG9yIHVwZ3JhZGUgdGhlIE9wZXJhdG9yIHdpdGggZGVmYXVsdCBtYW5pZmVzdHMgdXNpbmcgSGVsbSBjaGFydHMgb24gT3BlbnNoaWZ0IDQuMTksIHlvdSBtdXN0IHVzZSB0aGUgYGRvY2tlci5pb2AgcmVnaXN0cnkgcHJlZml4IHRvIGd1YXJhbnRlZSBzdWNjZXNzZnVsIGRvd25sb2FkIGZyb20gdGhlIERvY2tlckh1YiBgcGVyY29uYS14dHJhZGItY2x1c3RlcmAgcmVwb3NpdG9yeS4gUmVhZCB0aGUgW0NvbnNpZGVyYXRpb25zIGZvciB1c2luZyBPcGVuU2hpZnQgNC4xOV0oI2NvbnNpZGVyYXRpb25zLWZvci11c2luZy1vcGVuc2hpZnQtNDE5KSBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIyMjIyMgS25vd24gbGltaXRhdGlvbnMKCiMjIyMjIENvbnNpZGVyYXRpb25zIGZvciB1c2luZyBPcGVuU2hpZnQgNC4xOQoKU3RhcnRpbmcgd2l0aCBPcGVuU2hpZnQgNC4xOSwgdGhlIHdheSBpbWFnZXMgd2l0aCBub3QgZnVsbHkgcXVhbGlmaWVkIG5hbWVzIGFyZSBwdWxsZWQgaGFzIGNoYW5nZWQgZm9yIHJlcG9zaXRvcmllcyB0aGF0IHNoYXJlIHRoZSBzYW1lIHJlcG9zaXRvcnkgbmFtZSBvbiBEb2NrZXJIdWIgYW5kIFJlZCBIYXQgTWFya2V0cGxhY2UuIEJ5IGRlZmF1bHQgdGhlIHRhZ3MgYXJlIHB1bGxlZCBmcm9tIFJlZCBIYXQgTWFya2V0cGxhY2UuIFNwZWNpZnlpbmcgbm90IGZ1bGx5IHF1YWxpZmllZCBpbWFnZSBuYW1lcyBtYXkgcmVzdWx0IGluIHRoZSBgSW1hZ2VQdWxsQmFja09mZmAgZXJyb3IuCgotICoqT0xNIGluc3RhbGxhdGlvbjoqKiBJbWFnZXMgYXJlIHByb3ZpZGVkIHdpdGggdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lcyBhbmQgYXJlIHB1bGxlZCBmcm9tIHRoZSBSZWQgSGF0IE1hcmtldHBsYWNlL0RvY2tlckh1YiByZWdpc3RyeS4KLSAqKk1hbnVhbCBpbnN0YWxsL3VwZGF0ZSB3aXRoIGRlZmF1bHQgbWFuaWZlc3RzOioqIEltYWdlcyBtdXN0IHVzZSB0aGUgYGRvY2tlci5pb2AgcmVnaXN0cnkgcHJlZml4IHRvIGd1YXJhbnRlZSBzdWNjZXNzZnVsIGRvd25sb2FkIGZyb20gdGhlIERvY2tlcmh1YiBgcGVyY29uYS14dHJhZGItY2x1c3RlcmAgcmVwb3NpdG9yeS4KClNlZSBvdXIgZG9jdW1lbnRhdGlvbiBmb3IgW21hbnVhbCBpbnN0YWxsYXRpb25dKGh0dHBzOi8vZG9jcy5wZXJjb25hLmNvbS9wZXJjb25hLW9wZXJhdG9yLWZvci1teXNxbC9weGMvb3BlbnNoaWZ0Lmh0bWwjaW5zdGFsbC10aGUtb3BlcmF0b3ItdmlhLXRoZS1jb21tYW5kLWxpbmUtaW50ZXJmYWNlKSBvciBbdXBkYXRlXShodHRwczovL2RvY3MucGVyY29uYS5jb20vcGVyY29uYS1vcGVyYXRvci1mb3ItbXlzcWwvcHhjL3VwZGF0ZV9vcGVuc2hpZnQuaHRtbCN1cGRhdGUtdmlhLXRoZS1jb21tYW5kLWxpbmUtaW50ZXJmYWNlKS4KCiMjIyMjIENoYW5nbGVvZwoKIyMjIyMgTmV3IEZlYXR1cmVzCgotIFtLOFNQWEMtMTI4NF0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xMjg0KSAtIEFkZCB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgcHJvdG9jb2wgZm9yIHBlZXItbGlzdCBETlMgU1JWIGxvb2t1cHMKCi0gW0s4U1BYQy0xNTk5XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE1OTkpIC0gQWxsb3dlZCBzZXR0aW5nIGBsb2FkQmFsYW5jZXJDbGFzc2Agc2VydmljZSB0eXBlIGFuZCB1c2luZyBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBvZiBhIGxvYWQgYmFsYW5jZXIgcmF0aGVyIHRoYW4gdGhlIGNsb3VkIHByb3ZpZGVyIGRlZmF1bHQgb25lCgojIyMjIyBJbXByb3ZlbWVudHMKCi0gW0s4U1BYQy0xMzc1XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTEzNzUpIC0gQWRkZWQgYSBuZXcgcmV0ZW50aW9uIGNvbmZpZ3VyYXRpb24gdG8gYWxsb3cgdXNlcnMgdG8gZGVsZWdhdGUgYmFja3VwIGNsZWFudXAgdG8gY2xvdWQgbGlmZWN5Y2xlIHBvbGljaWVzIChUaGFuayB5b3UgdXNlciBUcmlzdGFuIGZvciByZXBvcnRpbmcgdGhpcyBpc3N1ZSkKCi0gW0s4U1BYQy0xMzc2XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTEzNzYpIC0gQWRkZWQgdGhlIGFiaWxpdHkgdG8gcmVzdG9yZSBmcm9tIGJhY2t1cCB3aXRob3V0IGEgbWF0Y2hpbmcgU2VjcmV0IHJlc291cmNlCgotIFtLOFNQWEMtMTM5OV0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xMzk5KSAtIEFkZGVkIGEgZG9jdW1lbnRhdGlvbiBob3cgdG8gc2V0IHVwIGEgZGlzYXN0ZXIgcmVjb3Zlcnkgc3lzdGVtIGFuZCB0cmFuc2ZlciB3b3JrbG9hZHMgYmV0d2VlbiBzaXRlcwoKLSBbSzhTUFhDLTE0MTVdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTQxNSkgLSBVcGRhdGVkIHRoZSBgcGVyY29uYS14dHJhYmFja3VwYCBpbWFnZSB0byB1c2UgdGhlIG9mZmljaWFsIGBwZXJjb25hLXh0cmFiYWNrdXBgIERvY2tlciBpbWFnZQoKLSBbSzhTUFhDLTE0MzBdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTQzMCkgLSBJbXByb3ZlZCBoYW5kbGluZyBvZiBhdXRvZ2VuZXJhdGVkIGNlcnRpZmljYXRlcyBkZXBlbmRpbmcgb24gdGhlIGBkZWxldGUtc3NsYCBmaW5hbGl6ZXIgY29uZmlndXJhdGlvbgoKLSBbSzhTUFhDLTE0NDhdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTQ0OCksIFtLOFNQWEMtMTQ0OV0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNDQ5KSAtIEltcHJvdmVkIHRoZSBgcHZjLXJlc2l6ZWAgdGVzdCBieSB1c2luZyBhIGN1c3RvbSBzdG9yYWdlIGNsYXNzIGZvciBFS1MsIHJlZHVjaW5nIGVycm9ycyBhbmQgaW1wcm92aW5nIHRoZSBxdW90YSBoYW5kbGluZyBkdXJpbmcgcmVzaXplCgotIFtLOFNQWEMtMTQ1MF0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNDUwKSAtIEltcHJvdmVkIFBWQyByZXNpemluZyBiZWhhdmlvciB3aGVuIHJlZHVjaW5nIHRoZSBzdG9yYWdlIHNpemUgYnkgcmV2ZXJ0aW5nIHRoZSB2YWx1ZXMgd2hlbiB0aGUgcXVvdGEgaXMgcmVhY2hlZAoKLSBbSzhTUFhDLTE0NzJdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTQ3MikgLSBEZXByZWNhdGVkIHRoZSBgbG9hZEJhbGFuY2VySVBgIGZpZWxkIGR1ZSB0byBpdHMgZGVwcmVjYXRpb24gdXBzdHJlYW0KCi0gW0s4U1BYQy0xNTEzXShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE1MTMpIC0gQWRkZWQgUFhDIDguNCBzdXBwb3J0IGZvciB2ZXJzaW9uIHNlcnZpY2UKCi0gW0s4U1BYQy0xNTI5XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE1MjkpIC0gQWRkZWQgc3VwcG9ydCBmb3IgY3Jvc3Mtc2l0ZSByZXBsaWNhdGlvbiB3aXRoIE15U1FMIDguNC4wIGJ5IGFkZGluZyB0aGUgdXNlIG9mIGBhdXRoZW50aWNhdGlvbl9wb2xpY3lgIGluc3RlYWQgb2YgYGRlZmF1bHRfYXV0aGVudGljYXRpb25fcGx1Z2luYAoKLSBbSzhTUFhDLTE1NTNdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTU1MykgLSBBZGRlZCBzdXBwb3J0IGZvciBQTU0gdjMKCi0gW0s4U1BYQy0xNTYwXShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE1NjApIC0gQWRkZWQgdGhlIHdhcm5pbmcgYWJvdXQgQ1JEcyBub3QgYmVpbmcgdXBncmFkZWQgYXV0b21hdGljYWxseSBhZnRlciBoZWxtIHVwZ3JhZGUgdG8gdGhlIG91dHB1dAoKLSBbSzhTUFhDLTE1NjZdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTU2NikgLSBJbXByb3ZlZCByZWNvbmNpbGlhdGlvbiBvZiByZXBsaWNhdGlvbkNoYW5uZWxzIHdpdGhvdXQgcHJveHkgUG9kcyBieSBzdGFydGluZyB0aGUgZGF0YWJhc2UgUG9kIGJ5cGFzc2luZyB0aGUgcHJveHkgKFRoYW5rIHlvdSBKdXN0aW4gUmVhc29uZXIgZm9yIGNvbnRyaWJ1dGluZyB0byB0aGlzIGlzc3VlKQoKLSBbSzhTUFhDLTE1NjldKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTU2OSkgLSBBZGRlZCBMYWJlbHMgZm9yIEN1c3RvbSBSZXNvdXJjZSBEZWZpbml0aW9ucyAoQ1JEKSB0byBpZGVudGlmeSB0aGUgT3BlcmF0b3IgdmVyc2lvbiBhdHRhY2hlZCB0byB0aGVtCgotIFtLOFNQWEMtMTU5N10oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNTk3KSAtIEltcHJvdmUgdGhlIHNjaGVkdWxlZCBiYWNrdXBzIGJlaGF2aW9yIGZvciBhIGNsdXN0ZXIgaW4gYW4gdW5oZWFsdGh5IHN0YXRlIGJ5IHBvc3Rwb25pbmcgdGhlIGpvYiB1bnRpbCB0aGUgY2x1c3RlciByZXBvcnRzIHRoZSBoZWFsdGh5IHN0YXR1cwoKLSBbSzhTUFhDLTE2MDVdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTYwNSkgLSBJbnRyb2R1Y2VkIEF6dXJlIENMSSBmb3IgY2hlY2tpbmcgaWYgYmFja3VwIG9iamVjdHMvZm9sZGVycyBleGlzdCBpbiBBenVyZSBzdG9yYWdlCgotIFtLOFNQWEMtMTYxMl0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNjEyKSAtIEFkZGVkIHRoZSBgaW1hZ2VQdWxsU2VjcmV0c2AgZm9yIFBNTSBpbWFnZQoKLSBbSzhTUFhDLTE2MTVdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTYxNSkgLSBBZGRlZCB0aGUgYWJpbGl0eSB0byBkZWZpbmUgYSBjdXN0b20gY2x1c3RlciBuYW1lIGZvciBgcG1tLWFkbWluYCBjb21wb25lbnQKCi0gW0s4U1BYQy0xNjI0XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE2MjQpIC0gRGVsZXRlZCBkZXByZWNhdGVkIGZpbmFsaXplcnMgY29kZQoKLSBbSzhTUFhDLTE2NjldKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTY2OSkgLSBJbXByb3ZlIHRoZSBiYWNrdXAgZmxvdyBieSBnZW5lcmF0aW5nIGEgZGVmYXVsdCBlbmRwb2ludCBVUkwgZm9yIGEgc3RvcmFnZSBmcm9tIGEgcmVnaW9uIGlmIGl0IGlzIG5vdCBwcm92aWRlZCAoVGhhbmsgeW91IEJlcm5hcmQgR3J5bW9ucG9uIGZvciByZXBvcnRpbmcgdGhpcyBpc3N1ZSkKCi0gW0s4U1BYQy0xNjc3XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE2NzcpIC0gRG9jdW1lbnQgdGhlIGNoYW5nZWQgYmVoYXZpb3Igd2l0aCBwdWxsaW5nIGltYWdlcyBmb3IgZGVmYXVsdCBtYW5pZmVzdHMgb24gT3BlblNoaWZ0IDQuMTkgYW5kIHVwZGF0ZSBpbnN0YWxsIGFuZCB1cGRhdGUgaW5zdHJ1Y3Rpb25zCgojIyMjIyBCdWdzIEZpeGVkCgotIFtLOFNQWEMtMTMxMl0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xMzEyKSAtIEZpeGVkIHRoZSBpc3N1ZSB3aXRoIGxhYmVscyBub3QgYmVpbmcgdXBkYXRlZCBhdXRvbWF0aWNhbGx5IGZvciBwb2ludC1pbi10aW1lIHJlY292ZXJ5IGRlcGxveW1lbnQgdXBvbiBDdXN0b20gUmVzb3VyY2UgY2hhbmdlcwoKLSBbSzhTUFhDLTEzNDddKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTM0NykgLSBGaXhlZCB0aGUgaXNzdWUgd2l0aCBwb2ludC1pbi10aW1lIHJlY292ZXJ5IGZhaWxpbmcgZHVlIHRvIFRMUyBjb25maWd1cmF0aW9uIG1pc21hdGNoIGJldHdlZW4gdGhlIHNlcnZlciBhbmQgdGhlIHBvaW50LWluLXRpbWUgcmVjb3Zlcnkgam9iIGJ5IGNvbmZpZ3VyaW5nIGl0IHRvIHVzZSBUTFMgaWYgaXMgcmVxdWlyZWQgYnkgdGhlIHNlcnZlci4KCi0gW0s4U1BYQy0xMzgyXShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTEzODIpIC0gRml4ZWQgdGhlIGlzc3VlIHdpdGggYmFja3VwIGZhaWxpbmcgb24gQVdTIGlmIHVzaW5nIElBTSBwcm9maWxlIHdpdGhvdXQgY3JlZGVudGlhbHNTZWNyZXQgYnkgdXNpbmcgY3JlZGVudGlhbHNTZWNyZXQgb25seSB3aGVuIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFuZCByZWx5aW5nIG9uIElBTSByb2xlcyBpbnN0ZWFkIChUaGFuayB5b3UgSXRpZWwgT2xlbmljayBmb3IgcmVwb3J0aW5nIHRoaXMgaXNzdWUpCgotIFtLOFNQWEMtMTU0MV0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNTQxKSAtIEZpeGVkIFRlbGVtZXRyeSBtb2R1bGUgdG8gdG8gY29uc2lkZXIgYm90aCBlbXB0eSBzdHJpbmcgIiIgYW5kIGNvbW1hIHNlcGFyYXRlZCBuYW1lc3BhY2VzIGluIGNsdXN0ZXItd2lkZSBtb2RlCgotIFtLOFNQWEMtMTU0OF0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNTQ4KSBGaXhlZCB0aGUgaXNzdWUgd2l0aCBkZWxldGluZyBvbGQgYmFja3VwcyBvbiBHb29nbGUgQ2xvdWQgU3RvcmFnZSBieSB1cmwtZGVjb2RpbmcgdGhlIG9iamVjdCBwYXRoIGJlZm9yZSBkZWxldGluZyBpdCAoVGhhbmsgeW91IE1hdGV1c3ogR3J1c3praWV3aWN6IGZvciByZXBvcnRpbmcgdGhpcyBpc3N1ZSkKCi0gW0s4U1BYQy0xNjMxXShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE2MzEpIC0gRml4ZWQgdGhlIGlzc3VlIHdpdGggdGhlIE9wZXJhdG9yIHJlc3RhcnRpbmcgcG9kLTAgYWZ0ZXIgdGhlIGNsdXN0ZXIgaXMgcmVhZHkuIFRoZSBpc3N1ZSBpcyBjYXVzZWQgYnkgQ29uZmlnTWFwIGFuZCBTdGF0ZWZ1bFNldCBiZWluZyBjcmVhdGVkIHRvbyBjbG9zZSB0byBlYWNoIG90aGVyIGFuZCBLdWJlcm5ldGVzIEFQSSBjYW4ndCByZXR1cm4gdGhlIG5ld2x5IGNyZWF0ZWQgQ29uZmlnTWFwIGJlZm9yZSBjcmVhdGluZyB0aGUgU3RhdGVmdWxTZXQuIFRoZSBpc3N1ZSBpcyBmaXhlZCBieSByZWNvbmNpbGluZyB0aGUgU3RhdGVmdWxTZXQgYWZ0ZXIgdGhlIHJlY29uY2lsaWF0aW9uIG9mIENvbmZpZ01hcCBpcyBjb21wbGV0ZWQuCgotIFtLOFNQWEMtMTY2NF0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNjY0KSAtIEZpeGVkIHRoZSB1c2Ugb2YgdGhlIHByb3BlciBzY3JpcHQgdG8gY2hlY2sgUFhDIG5vZGVzIHdoZW4gYWRkaW5nIHRoZW0gYnkgSEFQcm94eQoKIyMjIyMgU3VwcG9ydGVkIFNvZnR3YXJlCgpUaGUgT3BlcmF0b3Igd2FzIGRldmVsb3BlZCBhbmQgdGVzdGVkIHdpdGggdGhlIGZvbGxvd2luZyBzb2Z0d2FyZToKCi0gUGVyY29uYSBYdHJhREIgQ2x1c3RlciB2ZXJzaW9ucyA4LjQuNS01LjEgKFRlY2ggcHJldmlldyksIDguMC40Mi0zMy4xLCBhbmQgNS43LjQ0LTMxLjY1Ci0gUGVyY29uYSBYdHJhQmFja3VwIHZlcnNpb25zIDguNC4wLTMsIDguMC4zNS0zNC4xLCBhbmQgMi40LjI5Ci0gSEFQcm94eSAyLjguMTUtMQotIFByb3h5U1FMIDIuNy4zCi0gTG9nQ29sbGVjdG9yIGJhc2VkIG9uIGZsdWVudC1iaXQgNC4wLjEKLSBQTU0gQ2xpZW50IDIuNDQuMSBhbmQgMy4zLjEKCk90aGVyIG9wdGlvbnMgbWF5IGFsc28gd29yayBidXQgaGF2ZSBub3QgYmVlbiB0ZXN0ZWQuCgojIyMjIyBTdXBwb3J0ZWQgUGxhdGZvcm1zCgpQZXJjb25hIE9wZXJhdG9ycyBhcmUgZGVzaWduZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBhbGwgW0NOQ0YtY2VydGlmaWVkXShodHRwczovL3d3dy5jbmNmLmlvL3RyYWluaW5nL2NlcnRpZmljYXRpb24vc29mdHdhcmUtY29uZm9ybWFuY2UvKSBLdWJlcm5ldGVzIGRpc3RyaWJ1dGlvbnMuIE91ciByZWxlYXNlIHByb2Nlc3MgaW5jbHVkZXMgdGFyZ2V0ZWQgdGVzdGluZyBhbmQgdmFsaWRhdGlvbiBvbiBtYWpvciBjbG91ZCBwcm92aWRlciBwbGF0Zm9ybXMgYW5kIE9wZW5TaGlmdCwgYXMgZGV0YWlsZWQgYmVsb3cgZm9yIE9wZXJhdG9yIHZlcnNpb24gMS4xNi4wOgoKLSBbR29vZ2xlIEt1YmVybmV0ZXMgRW5naW5lIChHS0UpXShodHRwczovL2Nsb3VkLmdvb2dsZS5jb20va3ViZXJuZXRlcy1lbmdpbmUpIDEuMzAgLSAxLjMzCi0gW0FtYXpvbiBFbGFzdGljIENvbnRhaW5lciBTZXJ2aWNlIGZvciBLdWJlcm5ldGVzIChFS1MpXShodHRwczovL2F3cy5hbWF6b24uY29tKSAxLjMwIC0gMS4zMwotIFtBenVyZSBLdWJlcm5ldGVzIFNlcnZpY2UgKEFLUyldKGh0dHBzOi8vYXp1cmUubWljcm9zb2Z0LmNvbS9lbi11cy9zZXJ2aWNlcy9rdWJlcm5ldGVzLXNlcnZpY2UvKSAxLjMwIC0gMS4zMwotIFtPcGVuU2hpZnRdKGh0dHBzOi8vd3d3LnJlZGhhdC5jb20vZW4vdGVjaG5vbG9naWVzL2Nsb3VkLWNvbXB1dGluZy9vcGVuc2hpZnQpIDQuMTUgLSA0LjE5Ci0gW01pbmlrdWJlXShodHRwczovL21pbmlrdWJlLnNpZ3MuazhzLmlvL2RvY3MvKSAxLjM2LjAgYmFzZWQgb24gS3ViZXJuZXRlcyAxLjMzLjEKClRoaXMgbGlzdCBvbmx5IGluY2x1ZGVzIHRoZSBwbGF0Zm9ybXMgdGhhdCB0aGUgUGVyY29uYSBPcGVyYXRvcnMgYXJlIHNwZWNpZmljYWxseSB0ZXN0ZWQgb24gYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzLiBPdGhlciBLdWJlcm5ldGVzIGZsYXZvcnMgYW5kIHZlcnNpb25zIGRlcGVuZCBvbiB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZmZlcmVkIGJ5IEt1YmVybmV0ZXMgaXRzZWxmLgoKIyMjIFtgdjEuMTcuMGBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXJjb25hL3BlcmNvbmEteHRyYWRiLWNsdXN0ZXItb3BlcmF0b3IvcmVsZWFzZXMvdGFnL3YxLjE3LjApCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXJjb25hL3BlcmNvbmEteHRyYWRiLWNsdXN0ZXItb3BlcmF0b3IvY29tcGFyZS92MS4xNi4xLi4udjEuMTcuMCkKCiMjIyMgUmVsZWFzZSBIaWdobGlnaHRzCgojIyMjIyBJbXByb3ZlZCBvYnNlcnZhYmlsaXR5IGZvciBIQVByb3h5IGFuZCBQcm94eVNRTAoKR2V0IGluc2lnaHRzIGludG8gdGhlIEhBUHJveHkgYW5kIFByb3h5U1FMIHBlcmZvcm1hbmNlIGJ5IGNvbm5lY3RpbmcgdG8gdGhlaXIgc3RhdGlzdGljcyBwYWdlcy4gVXNlIHRoZSBgY2x1c3Rlci1uYW1lLWhhcHJveHk6ODA4NGAgYW5kIGBjbHVzdGVyLW5hbWUtcHJveHlzcWw6NjA3MGAgZW5kcG9pbnRzIHRvIGRvIHNvLiBMZWFybiBhYm91dCBvdGhlciBhdmFpbGFibGUgcG9ydHMgaW4gdGhlIFtkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MucGVyY29uYS5jb20vcGVyY29uYS1vcGVyYXRvci1mb3ItbXlzcWwvcHhjL2hhcHJveHktY29uZi5odG1sKS4KCiMjIyMjIEltcHJvdmVkIGNsdXN0ZXIgbG9hZCBtYW5hZ2VtZW50IGR1cmluZyBiYWNrdXBzCgpJZiBwYXJhbGxlbCBiYWNrdXBzIG92ZXJsb2FkIHlvdXIgY2x1c3RlciwgeW91IGNhbiB0dXJuIG9mZiBwYXJhbGxlbCBleGVjdXRpb24gdG8gcHJldmVudCB0aGlzLiBQcmV2aW91c2x5LCB0aGlzIG1lYW50IHRoYXQgeW91IGNvdWxkIG9ubHkgcnVuIG9uZSBiYWNrdXAgYXQgYSB0aW1lIC0gbm8gbmV3IGJhY2t1cHMgY291bGQgc3RhcnQgdW50aWwgdGhlIGN1cnJlbnQgb25lIHdhcyBmaW5pc2hlZC4gTm93LCB0aGUgT3BlcmF0b3IgcXVldWVzIGJhY2t1cHMgYW5kIHJ1bnMgdGhlbSBvbmUgYWZ0ZXIgYW5vdGhlciBhdXRvbWF0aWNhbGx5LiBZb3UgY2FuIGZpbmUtdHVuZSB0aGUgYmFja3VwIHNlcXVlbmNlIGJ5IHNldHRpbmcgdGhlIHN0YXJ0IHRpbWUgZm9yIGFsbCBiYWNrdXBzIG9yIGZvciBhIHNwZWNpZmljIG9uLWRlbWFuZCBvbmUgdXNpbmcgdGhlIFtgc3BlYy5iYWNrdXAuc3RhcnRpbmdEZWFkbGluZVNlY29uZHNgXShodHRwczovL2RvY3MucGVyY29uYS5jb20vcGVyY29uYS1vcGVyYXRvci1mb3ItbXlzcWwvcHhjL29wZXJhdG9yLmh0bWwjYmFja3Vwc3RhcnRpbmdkZWFkbGluZXNlY29uZHMpIEN1c3RvbSBSZXNvdXJjZSBvcHRpb24uIFRoaXMgcHJvdmlkZXMgZ3JlYXRlciBjb250cm9sIG92ZXIgYmFja3VwIG9wZXJhdGlvbnMuCgpBbm90aGVyIGltcHJvdmVtZW50IGlzIGZvciB0aGUgY2FzZSB3aGVuIHlvdXIgZGF0YWJhc2UgY2x1c3RlciBiZWNvbWVzIHVuaGVhbHRoeSwgZm9yIGV4YW1wbGUsIHdoZW4gYSBQb2QgY3Jhc2hlcyBvciByZXN0YXJ0cy4gVGhlIE9wZXJhdG9yIHN1c3BlbmRzIHJ1bm5pbmcgYmFja3VwcyB0byByZWR1Y2UgdGhlIGNsdXN0ZXIncyBsb2FkLiBPbmNlIHRoZSBjbHVzdGVyIHJlY292ZXJzIGFuZCByZXBvcnRzIGEgUmVhZHkgc3RhdHVzLCB0aGUgT3BlcmF0b3IgcmVzdW1lcyB0aGUgc3VzcGVuZGVkIGJhY2t1cC4gVG8gZnVydGhlciBvZmZsb2FkIHRoZSBjbHVzdGVyIGR1cmluZyBhbiB1bmhlYWx0aHkgc3RhdGUsIHlvdSBjYW4gY29uZmlndXJlIGhvdyBsb25nIGEgYmFja3VwIHJlbWFpbnMgc3VzcGVuZGVkIGJ5IHVzaW5nIHRoZSBbYHNwZWMuYmFja3VwLnN1c3BlbmRlZERlYWRsaW5lU2Vjb25kc2BdKGh0dHBzOi8vZG9jcy5wZXJjb25hLmNvbS9wZXJjb25hLW9wZXJhdG9yLWZvci1teXNxbC9weGMvb3BlcmF0b3IuaHRtbCNiYWNrdXBzdXNwZW5kZWRkZWFkbGluZXNlY29uZHMpIEN1c3RvbSBSZXNvdXJjZSBvcHRpb24uIElmIHRoaXMgdGltZSBleHBpcmVzIGJlZm9yZSB0aGUgY2x1c3RlciByZWNvdmVycywgdGhlIGJhY2t1cCBpcyBtYXJrZWQgYXMgImZhaWxlZC4iCgojIyMjIyBNb25pdG9yIFBNTSBDbGllbnQgaGVhbHRoIGFuZCBzdGF0dXMKClBlcmNvbmEgTW9uaXRvcmluZyBhbmQgTWFuYWdlbWVudCAoUE1NKSBpcyBhIGdyZWF0IHRvb2wgdG8gW21vbml0b3IgdGhlIGhlYWx0aCBvZiB5b3VyIGRhdGFiYXNlIGNsdXN0ZXJdKGh0dHBzOi8vZG9jcy5wZXJjb25hLmNvbS9wZXJjb25hLW9wZXJhdG9yLWZvci1teXNxbC9weGMvbW9uaXRvcmluZy5odG1sKS4gTm93IHlvdSBjYW4gYWxzbyBsZWFybiBpZiBQTU0gaXRzZWxmIGlzIGhlYWx0aHkgdXNpbmcgcHJvYmVzIC0gYSBLdWJlcm5ldGVzIGRpYWdub3N0aWNzIG1lY2hhbmlzbSB0byBjaGVjayB0aGUgaGVhbHRoIGFuZCBzdGF0dXMgb2YgY29udGFpbmVycy4gVXNlIHRoZSBbYHNwZWMucG1tLnJlYWRpbmVzc1Byb2Jlcy4qYF0oaHR0cHM6Ly9kb2NzLnBlcmNvbmEuY29tL3BlcmNvbmEtb3BlcmF0b3ItZm9yLW15c3FsL3B4Yy9vcGVyYXRvci5odG1sI3BtbXJlYWRpbmVzc3Byb2Jlc2luaXRpYWxkZWxheXNlY29uZHMpIGFuZCBbYHNwZWMucG1tLmxpdmVuZXNzUHJvYmVzLipgXShodHRwczovL2RvY3MucGVyY29uYS5jb20vcGVyY29uYS1vcGVyYXRvci1mb3ItbXlzcWwvcHhjL29wZXJhdG9yLmh0bWwjcG1tbGl2ZW5lc3Nwcm9iZXNpbml0aWFsZGVsYXlzZWNvbmRzKSBDdXN0b20gUmVzb3VyY2Ugb3B0aW9ucyB0byBmaW5lLXR1bmUgUmVhZGluZXNzIGFuZCBMaXZlbmVzcyBwcm9iZXMgZm9yIFBNTSBDbGllbnQuCgojIyMjIyBJbXByb3ZlZCBvYnNlcnZhYmlsaXR5IG9mIGJpbmFyeSBsb2cgYmFja3VwcwoKR2V0IGluc2lnaHRzIGludG8gdGhlIHN1Y2Nlc3MgYW5kIGZhaWx1cmUgcmF0ZXMgb2YgYmlubG9nIG9wZXJhdGlvbnMsIHRpbWVsaW5lc3Mgb2YgcHJvY2Vzc2luZyBhbmQgdXBsb2FkcyBhbmQgcG90ZW50aWFsIGdhcHMgb3IgaW5jb25zaXN0ZW5jaWVzIGluIGJpbmxvZyBkYXRhIHdpdGggdGhlIFByb21ldGhldXMgbWV0cmljcyBhZGRlZCBmb3IgdGhlIE9wZXJhdG9yLiBHYXRoZXIgdGhpcyBkYXRhIGJ5IGNvbm5lY3RpbmcgdG8gdGhlIGA8cGl0ci1wb2Qtc2VydmljZT46ODA4MC9tZXRyaWNzYCBlbmRwb2ludC4gTGVhcm4gbW9yZSBhYm91dCB0aGUgYXZhaWxhYmxlIG1ldHJpY3MgaW4gdGhlIFtkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MucGVyY29uYS5jb20vcGVyY29uYS1vcGVyYXRvci1mb3ItbXlzcWwvcHhjL2JhY2t1cHMtcGl0ci5odG1sI2JpbmFyeS1sb2dzLXN0YXRpc3RpY3MpLgoKIyMjIyBEZXByZWNhdGlvbiwgUmVuYW1lIGFuZCBSZW1vdmFsCgpUaGUgYHNwZWMuaGFwcm94eS5leHBvc2VQcmltYXJ5LmVuYWJsZWRgIGZpZWxkIGlzIGRlcHJlY2F0ZWQuIElmIGVuYWJsZWQgdmlhIHRoZSBgc3BlYy5oYXByb3h5LmVuYWJsZWRgLCB0aGUgSEFQcm94eSBwcmltYXJ5IHNlcnZpY2UgaXMgYWxyZWFkeSBleHBvc2VkLgoKIyMjIyBOZXcgRmVhdHVyZXMKCi0gW0s4U1BYQy03NDddKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtNzQ3KSwgW0s4U1BYQy0xNDczXShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE0NzMpIC0gQWRkIHRoZSBhYmlsaXR5IHRvIGFjY2VzcyB0aGUgc3RhdGlzdGljcyBwYWdlcyBmb3IgSEFQcm94eSBhbmQgUHJveHlTUUwKCi0gW0s4U1BYQy0xMzY2XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTEzNjYpIC0gQWRkIHRoZSBhYmlsaXR5IHRvIHF1ZXVlIGJhY2t1cHMgYW5kIHJ1biB0aGVtIHNlcXVlbnRpYWxseSwgYW5kIHRvIG9wdGltaXplIHRoZSBjbHVzdGVyIGxvYWQgd2l0aCB0aGUgYWJpbGl0eSB0byBzdXNwZW5kIGJhY2t1cHMgZm9yIGFuIHVuaGVhbHRoeSBjbHVzdGVyLiBBIHVzZXIgY2FuIGFzc2lnbiB0aGUgc3RhcnQgdGltZSBhbmQgc3VzcGVuc2lvbiB0aW1lIHRvIGJhY2t1cHMgdG8gbWFuYWdlIHRoZW0gYmV0dGVyLgoKLSBbSzhTUFhDLTE0MzJdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTQzMikgLSBFbmFibGUgdXNlcnMgdG8gY29uZmlndXJlIGNsdXN0ZXItd2lkZSBPcGVyYXRvciBkZXBsb3ltZW50cyBpbiBPcGVuU2hpZnQgY2VydGlmaWVkIGNhdGFsb2cgdXNpbmcgT0xNLgoKIyMjIyBJbXByb3ZlbWVudHMKCi0gW0s4U1BYQy0xMzY3XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTEzNjcpIC0gTm93IGEgdXNlciBjYW4gY29uZmlndXJlIFJlYWRpbmVzcyBhbmQgTGl2ZW5lc3MgcHJvYmVzIGZvciBQTU0gQ2xpZW50IGNvbnRhaW5lciB0byBjaGVjayBpdHMgaGVhbHRoIGFuZCBzdGF0dXMKCi0gW0s4U1BYQy0xNDYxXShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE0NjEpIC0gSW1wcm92ZSBsb2dnaW5nIGZvciByZXNpemluZyBQVkMgd2l0aCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgc3VjY2Vzc2Z1bCBhbmQgZmFpbGVkIFBWQyByZXNpemUuIExvZyBlcnJvcnMgb24gcmVzaXplIGF0dGVtcHRzIGlmIHRoZSBTdG9yYWdlIENsYXNzIGRvZXNuJ3Qgc3VwcG9ydCByZXNpemluZy4KCi0gW0s4U1BYQy0xNDY2XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE0NjYpIC0gTWFyayB0aGUgY29udGFpbmVycyB0aGF0IHByb3ZpZGUgdGhlIHNlcnZpY2UgYXMgZGVmYXVsdCBvbmVzIHdpdGggdGhlIGFubm90YXRpb24uIFRoaXMgZW5hYmxlcyBhIHVzZXIgdG8gY29ubmVjdCB0byBhIFBvZCB3aXRob3V0IGV4cGxpY2l0bHkgc3BlY2lmeWluZyBhIGNvbnRhaW5lci4KCi0gW0s4U1BYQy0xNDczXShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE0NzMpIC0gQWRkIHRoZSBhYmlsaXR5IHRvIGNvbm5lY3QgdG8gdGhlIGJ1aWx0LWluIHN0YXRpc3RpY3MgcGFnZXMgZm9yIEhBUHJveHkgYW5kIFByb3h5U1FMIGJ5IGV4cG9zaW5nIHRoZSBwb3J0cyBmb3IgdGhvc2UgcGFnZXMKCi0gW0s4U1BYQy0xNDc1XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE0NzUpIC0gVXBkYXRlIHRoZSBiYWNrdXAgaW1hZ2UgdG8gdXNlIEFXUyBDTEkgaW5zdGVhZCBvZiBNaW5JTyBDTEkgZHVlIHRvIHRoZSBsaWNlbnNlIGNoYW5nZQoKLSBbSzhTUFhDLTE1MTBdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTUxMCkgLSBBZGQgdGhlIGFiaWxpdHkgdG8gc3VwcHJlc3MgbWVzc2FnZXMgYWJvdXQgdGhlIHVzZSBvZiBkZXByZWNhdGVkIGZlYXR1cmVzIGluIE15U1FMIEVycm9yIExvZyBieSBhZGRpbmcgdGhlIGBsb2dfZXJyb3Jfc3VwcHJlc3Npb25fbGlzdGAga2V5IGZyb20gdGhlIGBteS5jbmZgIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgZGVmaW5pbmcgdGhlIG1lc3NhZ2UgbnVtYmVyIGluIHRoZSBgc3BlYy5weGMuY29uZmlndXJhdGlvbmAgc3Vic2VjdGlvbiBvZiB0aGUgQ3VzdG9tIFJlc291cmNlIG1hbmlmZXN0LiBTZWUgW2hvdyB0byBjaGFuZ2UgTXlTUUwgb3B0aW9uc10oaHR0cHM6Ly9kb2NzLnBlcmNvbmEuY29tL3BlcmNvbmEtb3BlcmF0b3ItZm9yLW15c3FsL3B4Yy9vcHRpb25zLmh0bWwpIGZvciBzdGVwcy4gVGhpcyBpbXByb3ZlcyByZWFkYWJpbGl0eSBmb3IgTXlTUUwgZXJyb3IgbG9nLgoKLSBbSzhTUFhDLTE1MTJdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTUxMikgLSBGb3IgUGVyY29uYSBYdHJhREIgQ2x1c3RlciB2ZXJzaW9uIDguNCBhbmQgYWJvdmUsIGJpbmFyeSBsb2cgdXNlciBkZWZpbmVkIGZ1bmN0aW9ucyBmb3IgcG9pbnQtaW4tdGltZSByZWNvdmVyeSAoYGJpbmxvZ191dGlsc191ZGZgKSBhcmUgbm93IGluc3RhbGxlZCBhcyBhIGNvbXBvbmVudCBpbnN0ZWFkIG9mIGEgcGx1Z2luLiBUaGlzIGltcHJvdmVzIHRoZWlyIGNvbXBhdGliaWxpdHkgYWNyb3NzIHBsYXRmb3JtcyBhbmQgcHJvdmlkZXMgYXV0b21hdGljIGRlcGVuZGVuY3kgaGFuZGxpbmcuCgotIFtLOFNQWEMtMTU0Ml0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNTQyKSAtIEltcHJvdmUgYmlubG9nIHVwbG9hZCBmb3IgbGFyZ2UgZmlsZXMgdG8gQXp1cmUgYmxvYiBzdG9yYWdlIHdpdGggdGhlIGFiaWxpdHkgdG8gZGVmaW5lIHRoZSBibG9jayBzaXplIGFuZCB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnQgd3JpdGVycyBmb3IgdGhlIHVwbG9hZCAoVGhhbmtzIHRvIHVzZXIgZGNhcHV0by1oYXJtb25pIGZvciBjb250cmlidXRpb24pCgotIFtLOFNQWEMtMTU0M10oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNTQzKSAtIFNldCBQSVRSIGNvbnRyb2xsZXIgcmVmZXJlbmNlIGZvciBiaW5sb2ctY29sbGVjdG9yIGRlcGxveW1lbnQgdGhlIHNhbWUgd2F5IGFzIGl0J3Mgc2V0IGZvciBQWEMgYW5kIHByb3h5IFN0YXRlZnVsU2V0cy4gVGhpcyBjcmVhdGVzIGEgY29ubmVjdGlvbiBiZXR3ZWVuIFBJVFIgZGVwbG95bWVudCBhbmQgY2x1c3RlciByZXNvdXJjZSAoVGhhbmsgeW91IFZsYWQgR3VzZXYgZm9yIHRoZSBjb250cmlidXRpb24pCgotIFtLOFNQWEMtMTU0NF0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNTQ0KSAtIEltcHJvdmUgb2JzZXJ2YWJpbGl0eSBvZiBiaW5sb2cgY29sbGVjdG9yIGJ5IGFkZGluZyB0aGUgc3VwcG9ydCBvZiBiYXNpYyBQcm9tZXRoZXVzIG1ldHJpY3MgKFRoYW5rIHlvdSBWbGFkIEd1c2V2IGZvciB0aGUgY29udHJpYnV0aW9uKQoKLSBbSzhTUFhDLTE1NjddKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTU2NykgLSBOb3JtYWxpemUgZHVwbGljYXRlIHNsYXNoZXMgaWYgdGhlIGJ1Y2tldCBwYXRoIGZvciBiaW5sb2cgY29sbGVjdG9yIGVuZHMgd2l0aCBhIHNsYXNoIChgL2ApIChUaGFuayB5b3UgVmxhZCBHdXNldiBmb3IgdGhlIGNvbnRyaWJ1dGlvbikKCi0gW0s4U1BYQy0xNTk2XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE1OTYpIC0gQXNzaWduIGEgY29ycmVjdCBzdGF0dXMgdG8gYSBiYWNrdXAgaWYgZGF0YSB1cGxvYWQgZmFpbHMgZHVlIHRvIGluY29tcGxldGUgYmFja3VwCgotIFtLOFNQWEMtMTYyMF0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNjIwKSAtIEZpeGVkIHRoZSBpc3N1ZSB3aXRoIGEgZmFpbGluZyBiYWNrdXAgYnkgYWRkaW5nIGEgcmV0cnkgbG9naWMgdG8gdGhlIGNsb3VkIHN0b3JhZ2UgY2xlYW51cCB0YXNrIHRvIGNoZWNrIGZvciB1cGxvYWRlZCBmaWxlcyBhbmQgY2xlYW4gdGhlbSB1cCBiZWZvcmUgdXBsb2FkaW5nIG5ldyBmaWxlcwoKIyMjIyBCdWdzIEZpeGVkCgotIFtLOFNQWEMtMTE1Ml0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xMTUyKSBGaXhlZCB0aGUgaXNzdWUgd2l0aCB0aGUgcmVzdG9yZSBwcm9jZXNzIGJlaW5nIHN0dWNrIHdoZW4gdGhlIE9wZXJhdG9yIGlzIHJlc3RhcnRlZCBieSBzZXR0aW5nIGFubm90YXRpb25zIG9uIHRoZSBgcGVyY29uYXh0cmFkYmNsdXN0ZXJyZXN0b3Jlc2Agb2JqZWN0CgotIFtLOFNQWEMtMTQ4Ml0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNDgyKSBGaXhlZCB0aGUgaXNzdWUgd2l0aCB0aGUgZXhjZXNzaXZlIGNvbm5lY3Rpb24gcmVzZXRzIG9uIGV2ZXJ5IHBvZCByZWNyZWF0aW9uIGJlY2F1c2UgdGhlIGNsdXN0ZXIncyBwZWVyLWxpc3QgaXMgbm90IGF3YXJlIG9mIFRpbWUgVG8gTGl2ZSAoVFRMKSBkZWZpbmVkIGZvciBLdWJlcm5ldGVzIEROUyByZWNvcmRzLiBOb3cgdGhlcmUncyBhIDMwIHNlY29uZCB3YWl0aW5nIHBlcmlvZCBhZnRlciBhIHBlZXIgdXBkYXRlIChUaGFuayB5b3UgVmxhZCBHdXNldiBmb3IgcmVwb3J0aW5nIHRoaXMgaXNzdWUgYW5kIGNvbnRyaWJ1dGluZyB0byBpdCkKCi0gW0s4U1BYQy0xNDgzXShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE0ODMpIC0gRml4ZWQgdGhlIGJ1ZyB3aGVyZSB0aGUgcG9pbnQtaW4tdGltZSByZWNvdmVyeSBjb2xsZWN0b3IgcHJvY2VzcyBoYW5ncyBpZiBgbXlzcWxiaW5sb2dgIGNhbm5vdCBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZSBhbmQgc3RhcnQuIE5vdyB0aGUgbmFtZWQgcGlwZWxpbmUgaXMgY3JlYXRlZCB3aXRoIHRoZSBgT19SRE9OTFlgIChPcGVuIGZvciBSZWFkIE9ubHkpIGFuZCBgT19OT05CTE9DS2AgKE5vbi1CbG9ja2luZyBNb2RlKSB0byB1bmxvY2sgdGhlIHBvaW50LWluLXRpbWUgcmVjb3ZlcnkgY29sbGVjdG9yIHByb2Nlc3MuICAoVGhhbmsgeW91IFZsYWQgR3VzZXYgZm9yIHJlcG9ydGluZyB0aGlzIGlzc3VlIGFuZCBjb250cmlidXRpbmcgdG8gaXQpCgotIFtLOFNQWEMtMTUwOV0oaHR0cHM6Ly9wZXJjb25hZGV2LmF0bGFzc2lhbi5uZXQvYnJvd3NlL0s4U1BYQy0xNTA5KSAtIEZpeGVkIHRoZSBidWcgd2hlcmUgdGhlIGNsdXN0ZXIgZW50ZXJzIHRoZSBlcnJvciBzdGF0ZSB0ZW1wb3JhcmlseSBpZiBwb2ludC1pbi10aW1lIGlzIGVuYWJsZWQgZm9yIGl0LgoKLSBbSzhTUFhDLTE1MzRdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTUzNCkgLSBGaXhlZCB0aGUgaXNzdWUgd2l0aCB0aGUgaW5jb25zaXN0ZW50IHNlY3JldCByZWNvbmNpbGlhdGlvbiBieSBpbXByb3ZpbmcgdGhlIGNvbnRyb2xsZXIncyBiZWhhdmlvciB0byB0aW1lbHkgc3luYyB0aGUgc2VjcmV0IGNhY2hlIGFuZCBjcmVhdGUgYW4gaW50ZXJuYWwgU2VjcmV0IGltbWVkaWF0ZWx5IGFmdGVyIGl0cyByZWNvbmNpbGlhdGlvbi4KCi0gW0s4U1BYQy0xNTM4XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE1MzgpIC0gRml4ZWQgdGhlIGlzc3VlIHdpdGggdGhlIE9wZXJhdG9yIGZhaWxpbmcgd2hlbiBpdCB0cmllcyB0byByZWNvbmNpbGUgdGhlIEN1c3RvbSBSZXNvdXJjZSBmb3IgdGhlIGBoYXByb3h5LXJlcGxpY2FgIHNlcnZpY2UgaWYgdGhlIGBoYXByb3h5LXByaW1hcnlgIHNlcnZpY2UgaGFzIHRoZSB0eXBlIGBMb2FkQmFsYW5jZXJgIGFuZCB0aGUgYExvYWRCYWxhbmNlclNvdXJjZVJhbmdlc2AgdmFsdWUgZGVmaW5lZC4gTm93IHRoZSBgaGFwcm94eS1yZXBsaWNhYCBzZXJ2aWNlIGluaGVyaXRzIHRoaXMgY29uZmlndXJhdGlvbi4KCi0gW0s4U1BYQy0xNTQ2XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE1NDYpLCBbSzhTUFhDLTE1NDldKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTU0OSkgLSAgRml4ZWQgdGhlIGlzc3VlIHdpdGggdGhlIFBJVFIgcG9kIGNyYXNoaW5nIG9uIGF0dGVtcHQgdG8gYXNzaWduIGEgR1RJRAogIHNldCB0byBlYWNoIGJpbmxvZyBpZiB0aGUgZGF0YWJhc2UgY2x1c3RlciBoYXMgYSBsYXJnZSBudW1iZXIgb2YgYmlubG9ncyBieSBjYWNoaW5nIHRoZSBgYmlubG9nLT5ndGlkYCBzZXQgcGFpcnMKCi0gW0s4U1BYQy0xNTQ3XShodHRwczovL3BlcmNvbmFkZXYuYXRsYXNzaWFuLm5ldC9icm93c2UvSzhTUFhDLTE1NDcpIC0gUmVtb3ZlZCB0aGUgb3V0ZGF0ZWQgZXhhbXBsZSBmcm9tIHRoZSBgYmFja3VwLnlhbWxgIG1hbmlmZXN0IGFuZCB1cGRhdGUgdGhlIGRvY3VtZW50YXRpb24gaG93IHRvIHRyYWNrIGJhY2t1cCBwcm9ncmVzcwoKLSBbSzhTUFhDLTE2MTZdKGh0dHBzOi8vcGVyY29uYWRldi5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9LOFNQWEMtMTYxNikgLSBGaXhlZCBhIGJ1ZyB3aGVyZSB0aGUgUHJveHlTUUwgZmFpbHMgdG8gYmUgY29uZmlndXJlZCBpZiB0aGUgcGFzc3dvcmQgZm9yIGEgYHByb3h5c3FsYWRtaW5gIHVzZXIgc3RhcnRzIHdpdGggYSBzdGFyIChgKmApIGNoYXJhY3RlciBieSByZXBvcnRpbmcgYW4gZXJyb3IgYW5kIG1ha2luZyB0aGUgT3BlcmF0b3IgcmVnZW5lcmF0ZSBhIG5ldyBwYXNzd29yZCB0aGF0IGRvZXNuJ3Qgc3RhcnQgd2l0aCBhIHN0YXIgKFRoYW5rIHlvdSBDaHJpcyBGaWRhbyBmb3IgcmVwb3J0aW5nIHRoaXMgaXNzdWUgYW5kIGNvbnRyaWJ1dGlvbikKCiMjIyMgU3VwcG9ydGVkIFNvZnR3YXJlCgpUaGUgT3BlcmF0b3Igd2FzIGRldmVsb3BlZCBhbmQgdGVzdGVkIHdpdGggdGhlIGZvbGxvd2luZyBzb2Z0d2FyZToKCi0gUGVyY29uYSBYdHJhREIgQ2x1c3RlciB2ZXJzaW9ucyA4LjQuMy0zLjEgKFRlY2ggcHJldmlldyksIDguMC40MS0zMi4xLCBhbmQgNS43LjQ0LTMxLjY1Ci0gUGVyY29uYSBYdHJhQmFja3VwIHZlcnNpb25zIDguNC4wLTEsIDguMC4zNS0zMiwgYW5kIDIuNC4yOQotIEhBUHJveHkgMi44LjE0Ci0gUHJveHlTUUwgMi43LjEtMQotIExvZ0NvbGxlY3RvciBiYXNlZCBvbiBmbHVlbnQtYml0IDQuMC4wCi0gUE1NIENsaWVudCAyLjQ0LjAKCk90aGVyIG9wdGlvbnMgbWF5IGFsc28gd29yayBidXQgaGF2ZSBub3QgYmVlbiB0ZXN0ZWQuCgojIyMjIFN1cHBvcnRlZCBQbGF0Zm9ybXMKClBlcmNvbmEgT3BlcmF0b3JzIGFyZSBkZXNpZ25lZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGFsbCBbQ05DRi1jZXJ0aWZpZWQgOm9jdGljb25zLWxpbmstZXh0ZXJuYWwtMTY6XShodHRwczovL3d3dy5jbmNmLmlvL3RyYWluaW5nL2NlcnRpZmljYXRpb24vc29mdHdhcmUtY29uZm9ybWFuY2UvKSBLdWJlcm5ldGVzIGRpc3RyaWJ1dGlvbnMuIE91ciByZWxlYXNlIHByb2Nlc3MgaW5jbHVkZXMgdGFyZ2V0ZWQgdGVzdGluZyBhbmQgdmFsaWRhdGlvbiBvbiBtYWpvciBjbG91ZCBwcm92aWRlciBwbGF0Zm9ybXMgYW5kIE9wZW5TaGlmdCwgYXMgZGV0YWlsZWQgYmVsb3cgZm9yIE9wZXJhdG9yIHZlcnNpb24gMS4xNi4wOgoKLSBbR29vZ2xlIEt1YmVybmV0ZXMgRW5naW5lIChHS0UpXShodHRwczovL2Nsb3VkLmdvb2dsZS5jb20va3ViZXJuZXRlcy1lbmdpbmUpIDEuMjkgLSAxLjMyCi0gW0FtYXpvbiBFbGFzdGljIENvbnRhaW5lciBTZXJ2aWNlIGZvciBLdWJlcm5ldGVzIChFS1MpXShodHRwczovL2F3cy5hbWF6b24uY29tKSAxLjMwIC0gMS4zMgotIFtBenVyZSBLdWJlcm5ldGVzIFNlcnZpY2UgKEFLUyldKGh0dHBzOi8vYXp1cmUubWljcm9zb2Z0LmNvbS9lbi11cy9zZXJ2aWNlcy9rdWJlcm5ldGVzLXNlcnZpY2UvKSAxLjMwIC0gMS4zMgotIFtPcGVuU2hpZnRdKGh0dHBzOi8vd3d3LnJlZGhhdC5jb20vZW4vdGVjaG5vbG9naWVzL2Nsb3VkLWNvbXB1dGluZy9vcGVuc2hpZnQpIDQuMTQgLSA0LjE4Ci0gW01pbmlrdWJlXShodHRwczovL21pbmlrdWJlLnNpZ3MuazhzLmlvL2RvY3MvKSAxLjM1LjAgYmFzZWQgb24gS3ViZXJuZXRlcyAxLjMyLjAKClRoaXMgbGlzdCBvbmx5IGluY2x1ZGVzIHRoZSBwbGF0Zm9ybXMgdGhhdCB0aGUgUGVyY29uYSBPcGVyYXRvcnMgYXJlIHNwZWNpZmljYWxseSB0ZXN0ZWQgb24gYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzLiBPdGhlciBLdWJlcm5ldGVzIGZsYXZvcnMgYW5kIHZlcnNpb25zIGRlcGVuZCBvbiB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvZmZlcmVkIGJ5IEt1YmVybmV0ZXMgaXRzZWxmLgoKPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5PnBlcmNvbmEvcGVyY29uYS1oZWxtLWNoYXJ0cyAocHhjLW9wZXJhdG9yKTwvc3VtbWFyeT4KCiMjIyBbYHYxLjE4LjBgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGVyY29uYS9wZXJjb25hLWhlbG0tY2hhcnRzL3JlbGVhc2VzL3RhZy9weGMtb3BlcmF0b3ItMS4xOC4wKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGVyY29uYS9wZXJjb25hLWhlbG0tY2hhcnRzL2NvbXBhcmUvcHhjLW9wZXJhdG9yLTEuMTcuMC4uLnB4Yy1vcGVyYXRvci0xLjE4LjApCgpBIEhlbG0gY2hhcnQgZm9yIGRlcGxveWluZyB0aGUgUGVyY29uYSBPcGVyYXRvciBmb3IgTXlTUUwgKGJhc2VkIG9uIFBlcmNvbmEgWHRyYURCIENsdXN0ZXIpCgpGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIGNoZWNrIG9mZmljaWFsIHJlbGVhc2Ugbm90ZXM6IFtSZWxlYXNlIE5vdGVzIFBYQyBPcGVyYXRvciAxLjE4LjBdKGh0dHBzOi8vZG9jcy5wZXJjb25hLmNvbS9wZXJjb25hLW9wZXJhdG9yLWZvci1teXNxbC9weGMvUmVsZWFzZU5vdGVzL0t1YmVybmV0ZXMtT3BlcmF0b3ItZm9yLVBYQy1STjEuMTguMC5odG1sKQoKPC9kZXRhaWxzPgoKLS0tCgojIyMgQ29uZmlndXJhdGlvbgoK8J+ThSAqKlNjaGVkdWxlKio6IEJyYW5jaCBjcmVhdGlvbiAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKSwgQXV0b21lcmdlIC0gQXQgYW55IHRpbWUgKG5vIHNjaGVkdWxlIGRlZmluZWQpLgoK8J+apiAqKkF1dG9tZXJnZSoqOiBEaXNhYmxlZCBieSBjb25maWcuIFBsZWFzZSBtZXJnZSB0aGlzIG1hbnVhbGx5IG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQuCgrimbsgKipSZWJhc2luZyoqOiBXaGVuZXZlciBQUiBiZWNvbWVzIGNvbmZsaWN0ZWQsIG9yIHlvdSB0aWNrIHRoZSByZWJhc2UvcmV0cnkgY2hlY2tib3guCgrwn5G7ICoqSW1tb3J0YWwqKjogVGhpcyBQUiB3aWxsIGJlIHJlY3JlYXRlZCBpZiBjbG9zZWQgdW5tZXJnZWQuIEdldCBbY29uZmlnIGhlbHBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9yZW5vdmF0ZWJvdC9yZW5vdmF0ZS9kaXNjdXNzaW9ucykgaWYgdGhhdCdzIHVuZGVzaXJlZC4KCi0tLQoKIC0gWyBdIDwhLS0gcmViYXNlLWNoZWNrIC0tPklmIHlvdSB3YW50IHRvIHJlYmFzZS9yZXRyeSB0aGlzIFBSLCBjaGVjayB0aGlzIGJveAoKLS0tCgpUaGlzIFBSIHdhcyBnZW5lcmF0ZWQgYnkgW01lbmQgUmVub3ZhdGVdKGh0dHBzOi8vbWVuZC5pby9yZW5vdmF0ZS8pLiBWaWV3IHRoZSBbcmVwb3NpdG9yeSBqb2IgbG9nXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2dpdGh1Yi92ZXh4aG9zdC9hdG1vc3BoZXJlKS4KPCEtLXJlbm92YXRlLWRlYnVnOmV5SmpjbVZoZEdWa1NXNVdaWElpT2lJek9TNHlOalF1TUNJc0luVndaR0YwWldSSmJsWmxjaUk2SWpReUxqZzFMakVpTENKMFlYSm5aWFJDY21GdVkyZ2lPaUp6ZEdGaWJHVXZNakF5TkM0eElpd2liR0ZpWld4eklqcGJJbk5yYVhBdGNtVnNaV0Z6WlMxdWIzUmxjeUpkZlE9PS0tPgo=
      patchset: 3cc19499fde0eccd0f6fba57d96557a04b15f762
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/vexxhost.dev/zuul-config:
            canonical_name: vexxhost.dev/zuul-config
            checkout: main
            commit: 9052b5a7781b3346e4cffd452a54448cbff54d8b
          trusted/project_1/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: 691c03cc007bee9934da14cf46c86009616a2aef
          trusted/project_2/github.com/vexxhost/zuul-jobs:
            canonical_name: github.com/vexxhost/zuul-jobs
            checkout: main
            commit: a6e68243e02ef030ce5e75f8b67630880c475f33
          untrusted/project_0/github.com/vexxhost/zuul-jobs:
            canonical_name: github.com/vexxhost/zuul-jobs
            checkout: main
            commit: a6e68243e02ef030ce5e75f8b67630880c475f33
          untrusted/project_1/vexxhost.dev/zuul-config:
            canonical_name: vexxhost.dev/zuul-config
            checkout: main
            commit: 9052b5a7781b3346e4cffd452a54448cbff54d8b
          untrusted/project_2/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: 691c03cc007bee9934da14cf46c86009616a2aef
          untrusted/project_3/github.com/vexxhost/atmosphere:
            canonical_name: github.com/vexxhost/atmosphere
            checkout: stable/2024.1
            commit: 3cc19499fde0eccd0f6fba57d96557a04b15f762
          untrusted/project_4/opendev.org/openstack/openstack-helm:
            canonical_name: opendev.org/openstack/openstack-helm
            checkout: master
            commit: aed8f582614604caa8594f2652804ec45990f1c0
        playbooks:
        - path: untrusted/project_0/github.com/vexxhost/zuul-jobs/playbooks/molecule/run.yaml
          roles:
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_1/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_0/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_0/github.com/vexxhost/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
      post_review: false
      post_timeout: null
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/vexxhost/atmosphere
        name: vexxhost/atmosphere
        short_name: atmosphere
        src_dir: src/github.com/vexxhost/atmosphere
      projects:
        github.com/vexxhost/atmosphere:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere
          checkout: stable/2024.1
          checkout_description: zuul branch
          commit: 3cc19499fde0eccd0f6fba57d96557a04b15f762
          name: vexxhost/atmosphere
          required: false
          short_name: atmosphere
          src_dir: src/github.com/vexxhost/atmosphere
      ref: refs/pull/2597/head
      resources: {}
      tenant: oss
      timeout: 1800
      topic: null
      voting: true
