diff --git a/.github/actions/autogenerated-check/action.yaml b/.github/actions/autogenerated-check/action.yaml index a5ad9dabeb..eefff6e704 100644 --- a/.github/actions/autogenerated-check/action.yaml +++ b/.github/actions/autogenerated-check/action.yaml @@ -32,6 +32,9 @@ runs: # Update Velero CRDs uds run -f src/velero/tasks.yaml update-crds + # Generate Zarf values schemas + uds run -f tasks/lint.yaml values-generate + - name: Check generated files for diffs shell: bash run: | @@ -62,6 +65,16 @@ runs: echo -e "\033[33m⚠️ Velero CRDs are not up to date, please run \`uds run -f src/velero/tasks.yaml update-crds\` and commit the changes.\033[0m" fi + if [ ! -z "$(git status -s packages/*/zarf-values.schema.json)" ]; then + # Diffs for Zarf values schemas + DIFFS=true + echo -e "\033[33m⚠️ Zarf values schemas are not up to date, please run \`uds run -f tasks/lint.yaml values-generate\` and commit the changes.\033[0m" + echo "Changed schema files:" + git status --short -- packages/*/zarf-values.schema.json + git diff --stat -- packages/*/zarf-values.schema.json + echo "This check runs against the pull request merge ref. If local generation is clean, sync the branch with main and regenerate the schemas." + fi + if [ "${DIFFS}" = "true" ]; then echo -e "\033[31m❌ ERROR: Ensure that all generated file changes are up to date and committed (see warnings above).\033[0m" exit 1 diff --git a/.github/workflows/pull-request-conditionals.yaml b/.github/workflows/pull-request-conditionals.yaml index f52cca0bf8..4cac029ffc 100644 --- a/.github/workflows/pull-request-conditionals.yaml +++ b/.github/workflows/pull-request-conditionals.yaml @@ -173,6 +173,9 @@ jobs: - package: all flavor: unicorn test_type: upgrade + - package: all + flavor: upstream + test_type: values # Portal is not available in registry1; skip single-layer tests for that flavor exclude: - package: portal diff --git a/.github/workflows/test-cli-matrix.yaml b/.github/workflows/test-cli-matrix.yaml index dd298869ca..6f50033901 100644 --- a/.github/workflows/test-cli-matrix.yaml +++ b/.github/workflows/test-cli-matrix.yaml @@ -34,15 +34,16 @@ jobs: strategy: matrix: include: - # Both versions intentionally frozen on last compatible CLI version + # The install phase uses the last compatible CLI for the released package. + # The upgrade phase must support native values in the current branch. - scenario: old-old flavor: upstream - install_cli: v0.32.0 - upgrade_cli: v0.32.0 - # install_cli intentionally frozen (last compatible version); upgrade_cli tracks new releases via Renovate + install_cli: v0.34.0 + upgrade_cli: v0.34.0 + # Install with the minimum values-capable CLI; upgrade_cli tracks new releases via Renovate. - scenario: old-new flavor: upstream - install_cli: v0.32.0 + install_cli: v0.34.0 # renovate: datasource=github-tags depName=defenseunicorns/uds-cli versioning=semver upgrade_cli: v0.34.2 @@ -56,7 +57,7 @@ jobs: ghToken: ${{ secrets.GITHUB_TOKEN }} installK3d: 'true' - # Override the CLI installed by setup with the install-phase version (old CLI) + # Override the CLI installed by setup with the install-phase version. - name: Install CLI for install phase uses: defenseunicorns/setup-uds@ab842abcad1f7a3305c2538e3dd1950d0daacfa5 # v1.0.1 with: @@ -71,7 +72,7 @@ jobs: - name: Deploy latest release test resources run: uds run -f tasks/deploy.yaml latest-release-test-resources --set FLAVOR=${{ matrix.flavor }} --no-progress - # Switch to the upgrade-phase CLI version before building and deploying current branch + # Switch to the values-capable CLI before building and deploying the current branch. - name: Install CLI for upgrade phase uses: defenseunicorns/setup-uds@ab842abcad1f7a3305c2538e3dd1950d0daacfa5 # v1.0.1 with: @@ -96,7 +97,7 @@ jobs: cli-install: runs-on: uds-ubuntu-big-boy-8-core timeout-minutes: 30 - name: "Test Install (old, upstream)" + name: "Test Install (minimum supported, upstream)" steps: - name: Checkout repository @@ -108,17 +109,16 @@ jobs: ghToken: ${{ secrets.GITHUB_TOKEN }} installK3d: 'true' - # Override the CLI installed by setup with the old CLI to verify current branch installs cleanly without new CLI - # Intentionally frozen — represents the last compatible CLI version - - name: Install old CLI + # Use the minimum CLI version that supports the current package's native values. + - name: Install minimum supported CLI uses: defenseunicorns/setup-uds@ab842abcad1f7a3305c2538e3dd1950d0daacfa5 # v1.0.1 with: - version: v0.32.0 + version: v0.34.0 - name: Print CLI version for debug run: uds version - - name: Test UDS Core Install (old CLI) + - name: Test UDS Core Install (minimum supported CLI) run: uds run test:uds-core-e2e --set FLAVOR=upstream --no-progress - name: Debug Output diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 86dc990c0e..d5ed40028c 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -61,7 +61,7 @@ jobs: registry1Username: ${{ (inputs.flavor == 'registry1') && secrets.IRON_BANK_ROBOT_USERNAME || '' }} registry1Password: ${{ (inputs.flavor == 'registry1') && secrets.IRON_BANK_ROBOT_PASSWORD || '' }} chainguardIdentity: ${{ (inputs.flavor == 'unicorn') && secrets.CHAINGUARD_IDENTITY || '' }} - installK3d: 'true' + installK3d: "true" - name: Test a single layer package # Guard against portal+registry1 since workflow_dispatch and workflow_call triggers bypass matrix excludes @@ -76,6 +76,10 @@ jobs: if: ${{ inputs.package == 'all' && inputs.test_type == 'upgrade' }} run: uds run test-uds-core-upgrade --set FLAVOR=${{ inputs.flavor }} --set EXCLUDED_PACKAGES=${{ inputs.flavor == 'registry1' && 'portal' || '' }} --no-progress + - name: Test UDS Core values deploy equivalency + if: ${{ inputs.package == 'all' && inputs.test_type == 'values' }} + run: uds run test:uds-core-values-e2e --set FLAVOR=${{ inputs.flavor }} --no-progress + - name: Debug Output if: ${{ always() }} uses: ./.github/actions/debug-output diff --git a/bundles/base-shim/README.md b/bundles/base-shim/README.md index b670e1d667..f8d0f5955b 100644 --- a/bundles/base-shim/README.md +++ b/bundles/base-shim/README.md @@ -2,4 +2,4 @@ The Base Shim bundle is used exclusively in dev/CI testing to provide a baseline bundle with access to overrides. By using a bundle we have access to set values for testing that are more complex (maps and lists) and cannot be currently handled with Zarf variables. -This shim bundle should be replaced by proper Zarf variables once [ZEP 0021](https://github.com/zarf-dev/proposals/tree/main/0021-zarf-values) is fully implemented. +For direct package deployments, use [Zarf Values](https://docs.zarf.dev/ref/examples/values-templating/) for configuration, including structured overrides such as maps and lists. Existing [Zarf Variables](https://docs.zarf.dev/ref/examples/variables/) remain supported for backwards compatibility. diff --git a/docs/concepts/configuration-and-packaging/package-requirements.mdx b/docs/concepts/configuration-and-packaging/package-requirements.mdx index 9cc0dab1dd..056fc7e4d7 100644 --- a/docs/concepts/configuration-and-packaging/package-requirements.mdx +++ b/docs/concepts/configuration-and-packaging/package-requirements.mdx @@ -32,9 +32,9 @@ UDS Packages must meet a set of standards to ensure they are secure, maintainabl - **MUST** include package documentation in a root-level `docs` folder (for configuration and dependencies) and include it in the Zarf package under the [`documentation` key](https://docs.zarf.dev/schema/v1alpha1-package/#ZarfPackage). - **MUST** include application metadata for UDS Registry publishing. See [Package Metadata](/concepts/configuration-and-packaging/package-metadata/). - **SHOULD** follow the [Package Values](/concepts/configuration-and-packaging/package-values/) guidance for exposing package configuration. - > [Zarf Values](https://docs.zarf.dev/ref/examples/values-templating/) is currently an **Alpha** feature and may change as it matures (see [zarf-dev/zarf#3946](https://github.com/zarf-dev/zarf/issues/3946)). This guidance will evolve with the feature and as such, packages **MAY** still use [Zarf Variables](https://docs.zarf.dev/ref/examples/variables/). If you adopt Values today, feedback in the [Zarf repository](https://github.com/zarf-dev/zarf) is strongly encouraged. + > [Zarf Values](https://docs.zarf.dev/ref/examples/values-templating/) is currently an **Alpha** feature and may change as it matures (see [zarf-dev/zarf#3946](https://github.com/zarf-dev/zarf/issues/3946)). Use values for package configuration. Retain existing [Zarf Variables](https://docs.zarf.dev/ref/examples/variables/) when needed for backwards compatibility, and combine them with explicit values through `templatedValuesFiles`. - **SHOULD** limit the use of [Zarf Variables](https://docs.zarf.dev/ref/examples/variables/) and prioritize configuring packages via [Zarf Values](https://docs.zarf.dev/ref/examples/values-templating/). - > This ensures that the package has more flexibility and avoids any side effect issues of Zarf's `###` templating (which is planned to be deprecated and removed once Zarf Values is stable). + > Use values for package configuration whenever possible. Keep raw `###ZARF_VAR_*###` tokens in ordinary `valuesFiles`; use `.Variables.*` in `templatedValuesFiles` only when existing variables must remain compatible or the package must apply precedence or compute a fallback. - **SHOULD** implement or allow for multiple flavors (ideally with common definitions in a common directory). > This allows for different images or configurations to be delivered consistently to customers. diff --git a/docs/concepts/configuration-and-packaging/package-values.mdx b/docs/concepts/configuration-and-packaging/package-values.mdx index facd95d689..fd13eeabd6 100644 --- a/docs/concepts/configuration-and-packaging/package-values.mdx +++ b/docs/concepts/configuration-and-packaging/package-values.mdx @@ -8,7 +8,7 @@ sidebar: UDS Packages expose configuration through [Zarf Values](https://docs.zarf.dev/ref/examples/values-templating/), a structured mechanism for passing Helm chart values at deploy time. In general, expose most non-sensitive chart values and restrict values that would break package integrity or weaken security, such as image references, ingress, or security settings. > [!NOTE] -> Zarf Values is currently an **Alpha** feature and may change as it matures (see [zarf-dev/zarf#3946](https://github.com/zarf-dev/zarf/issues/3946)). This guidance will evolve with the feature. Packages **MAY** still use [Zarf Variables](https://docs.zarf.dev/ref/examples/variables/). If you adopt Values today, feedback in the [Zarf repository](https://github.com/zarf-dev/zarf) is strongly encouraged. +> Zarf Values is currently an **Alpha** feature and may change as it matures (see [zarf-dev/zarf#3946](https://github.com/zarf-dev/zarf/issues/3946)). UDS Core requires UDS CLI `v0.34.0` or later for its values workflow. Use values for package configuration; retain [Zarf Variables](https://docs.zarf.dev/ref/examples/variables/) only when required for backwards compatibility. ## Values structure @@ -17,16 +17,15 @@ Define the top-level `values` key in your root `zarf.yaml` and reference: - A `zarf-values.yaml` for defaults - A `zarf-values.schema.json` for validation -The schema should follow [JSON Schema](https://json-schema.org/) and focus on validating common user-facing values. Keep deeply nested validation practical to avoid fragile schemas as charts and Kubernetes APIs evolve. - -> [!TIP] -> There is an open Zarf issue to support schema generation: [zarf-dev/zarf#4918](https://github.com/zarf-dev/zarf/issues/4918). +The schema should follow [JSON Schema](https://json-schema.org/). You should use `uds zarf dev generate-schema` to generate it from the package definition, chart values, and value mappings. Add value mappings (`sourcePath` and `targetPath`) near your chart definitions (commonly in `common/zarf.yaml`). Keep mappings as flat as practical and expose the highest sensible node in the values tree. If the list of mappings gets unwieldy, consider inverting the mappings using higher level keys with `excludePaths` instead. -For shared values across multiple charts (for example `domain`), use a shared key to reduce configuration drift. +For values shared across multiple charts, use the reserved top-level `global` key to reduce configuration drift. For example, use `global.domain` rather than repeating `domain` under each chart. + +Use values for package configuration. Use `###ZARF_VAR_###` in ordinary `valuesFiles` only when an existing variable must remain compatible. Use `templatedValuesFiles` with `.Variables.` when explicit package values must take precedence over an existing variable or need a computed fallback. Keep those phases separate because Zarf substitutes variable tokens before evaluating Go templates. ## Example configuration @@ -101,7 +100,8 @@ The `zarf-values.yaml` provides defaults that deployers can override: ```yaml title="zarf-values.yaml" uds-nginx-config: - domain: uds.dev + global: + domain: uds.dev nginx: replicaCount: 1 @@ -176,3 +176,4 @@ The `zarf-values.schema.json` validates the defaults above: - [Create a UDS Package](/how-to-guides/packaging-applications/create-uds-package/) - end-to-end guide for packaging an application as a UDS Package. - [Package testing](/how-to-guides/packaging-applications/package-testing/) - add journey and upgrade tests for your package. - [UDS Package Requirements](/concepts/configuration-and-packaging/package-requirements/) - pre-publish checklist for required capabilities and standards. +- [Zarf values reference](/reference/configuration/zarf-values/) - the Zarf value keys and defaults UDS Core exposes per package. diff --git a/docs/how-to-guides/packaging-applications/create-uds-package.mdx b/docs/how-to-guides/packaging-applications/create-uds-package.mdx index 71a4bee9c3..1c9072e39c 100644 --- a/docs/how-to-guides/packaging-applications/create-uds-package.mdx +++ b/docs/how-to-guides/packaging-applications/create-uds-package.mdx @@ -93,7 +93,7 @@ The template repository provides the standard directory structure: The root `zarf.yaml` defines package metadata and per-flavor components. Each flavor imports from `common/zarf.yaml` and adds its own values file and container images: - The `variables` block declares Zarf package variables that deployers can set at deploy time via `uds-config.yaml` or `--set` flags. They are injected into Helm values using the `###ZARF_VAR_###` syntax; you can see this in `chart/values.yaml` where `domain: "###ZARF_VAR_DOMAIN###"` picks up the deployer-supplied domain at deploy time. Use `sensitive: true` on variables that contain secrets so their values are never logged. See the [Zarf variables reference](https://docs.zarf.dev/ref/packages/#variables) for all available options. + Use Zarf Values for package configuration and let deployers provide overrides with `--values` or `--set-values`. Keep the `variables` block for existing variable-based workflows or values that cannot yet be migrated. When a variable must remain compatible, use `###ZARF_VAR_###` in ordinary `valuesFiles`; use `templatedValuesFiles` with `.Variables.` when explicit package values must take precedence or a template needs a computed fallback. Use `sensitive: true` on variables that contain secrets so their values are never logged. See the [Zarf variables reference](https://docs.zarf.dev/ref/packages/#variables) for the remaining variable options. ```yaml title="zarf.yaml" kind: ZarfPackageConfig diff --git a/docs/reference/configuration/overview.mdx b/docs/reference/configuration/overview.mdx index 1b7eeb6cd9..ab6cb482de 100644 --- a/docs/reference/configuration/overview.mdx +++ b/docs/reference/configuration/overview.mdx @@ -24,4 +24,9 @@ Configuration surfaces exposed by UDS Core components: the fields, defaults, and Storage backend, bucket names, schema versioning, and bundle overrides for Loki log storage. + + + Override UDS Core configuration with native Zarf values when deploying packages directly, plus the per-package value keys and defaults. + + diff --git a/docs/reference/configuration/zarf-values.mdx b/docs/reference/configuration/zarf-values.mdx new file mode 100644 index 0000000000..904c001f47 --- /dev/null +++ b/docs/reference/configuration/zarf-values.mdx @@ -0,0 +1,110 @@ +--- +title: Zarf values +description: Reference for overriding UDS Core Helm configuration with native Zarf values, including chart namespaces, committed schemas, domain precedence, and protected paths. +sidebar: + order: 3.004 +--- + +UDS Core exposes its Helm configuration as native [Zarf values](https://docs.zarf.dev/ref/examples/values-templating/). You can override settings with a values file when you deploy a Core package directly with `uds zarf package deploy`, without building a UDS bundle. + +## Deploying with values + +UDS Core package deployment requires UDS CLI `v0.34.0` or later (Zarf `v0.79.0` or later). Pass a values file with `--values`, or set individual paths with `--set-values ..=`. + +For example, this values file enables Keycloak horizontal autoscaling and scales authservice: + +```yaml title="values.yaml" +keycloak: + keycloak: + autoscaling: + enabled: true +authservice: + authservice: + replicaCount: 3 +``` + +Deploy the package with the values file: + +```bash +uds zarf package deploy zarf-package-core-amd64-x.x.x.tar.zst \ + --values values.yaml \ + --confirm +``` + +Zarf deep-merges object values onto chart defaults. List values replace the chart default, so include the full list when you override one. + +## How values map to charts + +Every chart uses a `.` namespace. For example, `keycloak.keycloak.*` sets values on the Keycloak chart, `grafana.grafana.*` sets values on the Grafana chart, and `grafana.uds-grafana-config.*` sets values on the UDS-authored Grafana config chart. + +The mapping is a pass-through except for protected paths. Each package validates values against its committed schema, which is the authoritative list of settable paths: + +- [Base schema](https://github.com/defenseunicorns/uds-core/blob/main/packages/base/zarf-values.schema.json) +- [Identity and authorization schema](https://github.com/defenseunicorns/uds-core/blob/main/packages/identity-authorization/zarf-values.schema.json) +- [Logging schema](https://github.com/defenseunicorns/uds-core/blob/main/packages/logging/zarf-values.schema.json) +- [Monitoring schema](https://github.com/defenseunicorns/uds-core/blob/main/packages/monitoring/zarf-values.schema.json) +- [Portal schema](https://github.com/defenseunicorns/uds-core/blob/main/packages/portal/zarf-values.schema.json) +- [Runtime security schema](https://github.com/defenseunicorns/uds-core/blob/main/packages/runtime-security/zarf-values.schema.json) +- [Standard schema](https://github.com/defenseunicorns/uds-core/blob/main/packages/standard/zarf-values.schema.json) + +The component mapping files define the exact pass-through and protected paths: + +- [Base and Istio mappings](https://github.com/defenseunicorns/uds-core/blob/main/src/istio/zarf.yaml) +- [Identity and authorization mappings](https://github.com/defenseunicorns/uds-core/blob/main/src/keycloak/common/zarf.yaml) +- [Logging mappings](https://github.com/defenseunicorns/uds-core/blob/main/src/loki/common/zarf.yaml) +- [Monitoring mappings](https://github.com/defenseunicorns/uds-core/blob/main/src/grafana/common/zarf.yaml) +- [Portal mappings](https://github.com/defenseunicorns/uds-core/blob/main/src/portal/common/zarf.yaml) +- [Runtime security mappings](https://github.com/defenseunicorns/uds-core/blob/main/src/falco/common/zarf.yaml) +- [Pepr mappings](https://github.com/defenseunicorns/uds-core/blob/main/src/pepr/zarf.yaml) + +## Domains + +Set the tenant and admin domains with the shared `global.domain` and `global.adminDomain` values. The tenant domain fans out to Keycloak, the tenant and passthrough Istio gateways, Pepr, and Portal. The admin domain configures the admin Istio gateway, Keycloak, Grafana, Pepr, and Portal. + +| Field | Type | Effective default | Description | +|---|---|---|---| +| `global.domain` | string | `uds.dev` | Tenant domain for the stack | +| `global.adminDomain` | string | `admin.uds.dev` | Admin domain for admin-exposed services | + +`global.domain` uses the value when set, then the `DOMAIN` Zarf variable. `global.adminDomain` uses the value when set, then the `ADMIN_DOMAIN` Zarf variable, then `admin.`. + +The precedence rules are: + +| Setting | First choice | Second choice | Final fallback | +|---|---|---|---| +| `global.domain` | `global.domain` value | `DOMAIN` Zarf variable | None | +| `global.adminDomain` | `global.adminDomain` value | `ADMIN_DOMAIN` Zarf variable | `admin.` | + +For example, this deployment uses the explicit tenant domain and the admin-domain variable: + +```yaml title="values.yaml" +global: + domain: example.com + adminDomain: "" +``` + +```bash +uds zarf package deploy zarf-package-core-amd64-x.x.x.tar.zst \ + --values values.yaml \ + --set ADMIN_DOMAIN=admin.example.net \ + --confirm +``` + +The resulting domains are `example.com` and `admin.example.net`. If `ADMIN_DOMAIN` is also unset, the admin domain becomes `admin.example.com`. + +## Values files and variables + +UDS Core uses two Zarf values-file phases. Use `###ZARF_VAR_###` in ordinary `valuesFiles` when Zarf should substitute a package variable directly. Use `.Variables.` in `templatedValuesFiles` when the file must combine package variables with explicit values. In that phase, explicit values take precedence over variables, and templates can provide a final fallback such as `admin.`. + +Do not place a literal `###ZARF_VAR_*###` token inside a Go template that compares values. Zarf can substitute the token before the Go template evaluates it, which removes the distinction between a default variable placeholder and an explicit value. + +## Excluded paths + +Protected paths are silently dropped at deploy time. UDS Core protects UDS-owned wiring, image and registry references, and security contexts. Consult the committed schemas and component mappings linked above instead of an inventory here, because those files change with the charts. + +UDS-authored config charts generally expose their full values surface. Upstream charts use pass-through mappings with exclusions for protected paths. + +## Related documentation + +- [Zarf values templating](https://docs.zarf.dev/ref/examples/values-templating/) - upstream documentation for the values feature +- [Package Values](/concepts/configuration-and-packaging/package-values/) - how UDS packages author and expose values diff --git a/packages/base/zarf-values.schema.json b/packages/base/zarf-values.schema.json new file mode 100644 index 0000000000..283c351193 --- /dev/null +++ b/packages/base/zarf-values.schema.json @@ -0,0 +1,1775 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "envoy-gateway": { + "properties": { + "envoy-gateway": { + "properties": { + "certgen": { + "properties": { + "job": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "args": { + "type": "array" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "pod": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "ttlSecondsAfterFinished": { + "type": "number" + } + }, + "type": "object" + }, + "rbac": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "commonLabels": { + "properties": {}, + "type": "object" + }, + "config": { + "properties": { + "envoyGateway": { + "properties": { + "extensionApis": { + "properties": {}, + "type": "object" + }, + "gateway": { + "properties": { + "controllerName": { + "type": "string" + } + }, + "type": "object" + }, + "logging": { + "properties": { + "level": { + "properties": { + "default": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "provider": { + "properties": { + "kubernetes": { + "properties": { + "deploy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "crds": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "createNamespace": { + "type": "boolean" + }, + "deployment": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "envoyGateway": { + "properties": { + "extraEnv": { + "type": "array" + }, + "imagePullPolicy": { + "type": "string" + }, + "imagePullSecrets": { + "type": "array" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "pod": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": { + "prometheus.io/port": { + "type": "string" + }, + "prometheus.io/scrape": { + "type": "string" + } + }, + "type": "object" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "ports": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + } + }, + "type": "object" + }, + "global": { + "properties": { + "imagePullSecrets": { + "type": "array" + }, + "images": { + "properties": { + "envoyGateway": { + "properties": { + "pullPolicy": { + "type": "string" + }, + "pullSecrets": { + "type": "array" + } + }, + "type": "object" + }, + "envoyProxy": { + "properties": { + "pullPolicy": { + "type": "string" + }, + "pullSecrets": { + "type": "array" + } + }, + "type": "object" + }, + "ratelimit": { + "properties": { + "pullPolicy": { + "type": "string" + }, + "pullSecrets": { + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "hpa": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "metrics": { + "type": "array" + }, + "minReplicas": { + "type": "number" + } + }, + "type": "object" + }, + "kubernetesClusterDomain": { + "type": "string" + }, + "namespaceOverride": { + "type": "string" + }, + "podDisruptionBudget": { + "properties": { + "minAvailable": { + "type": "number" + } + }, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "topologyInjector": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-envoy-gateway-config": { + "properties": { + "envoyService": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "global": { + "properties": { + "images": { + "properties": { + "envoyGateway": { + "properties": {}, + "type": "object" + }, + "envoyProxy": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "global": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + } + }, + "type": "object" + }, + "istio-admin-gateway": { + "properties": { + "gateway": { + "properties": { + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-istio-config": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "proxyProtocol": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "rootDomain": { + "properties": { + "enableHttpsRedirect": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "tls": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "cacert": { + "type": "string" + }, + "cert": { + "type": "string" + }, + "key": { + "type": "string" + }, + "servers": { + "properties": { + "admin": { + "properties": { + "mode": { + "type": "string" + } + }, + "type": "object" + }, + "keycloak": { + "properties": { + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istio-controlplane": { + "properties": { + "base": { + "properties": {}, + "type": "object" + }, + "cni": { + "properties": { + "ambient": { + "properties": { + "reconcileIptablesOnStartup": { + "type": "boolean" + } + }, + "type": "object" + }, + "cni": { + "properties": { + "image": { + "type": "string" + } + }, + "type": "object" + }, + "cniBinDir": { + "type": "string" + }, + "cniConfDir": { + "type": "string" + }, + "excludeNamespaces": { + "items": { + "type": "string" + }, + "type": "array" + }, + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "profile": { + "type": "string" + }, + "seLinuxOptions": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istiod": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "podAffinityTerm": { + "properties": { + "labelSelector": { + "properties": { + "matchExpressions": { + "items": { + "properties": { + "key": { + "type": "string" + }, + "operator": { + "type": "string" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "proxy": { + "properties": {}, + "type": "object" + }, + "proxy_init": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "meshConfig": { + "properties": { + "accessLogFile": { + "type": "string" + }, + "defaultConfig": { + "properties": { + "gatewayTopology": { + "properties": { + "forwardClientCertDetails": { + "type": "string" + } + }, + "type": "object" + }, + "holdApplicationUntilProxyStarts": { + "type": "boolean" + } + }, + "type": "object" + }, + "extensionProviders": { + "items": { + "properties": { + "envoyExtAuthzGrpc": { + "properties": { + "port": { + "type": "string" + }, + "service": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "properties": { + "mode": { + "type": "string" + } + }, + "type": "object" + }, + "pathNormalization": { + "properties": { + "normalization": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "pilot": { + "properties": { + "env": { + "properties": { + "ENABLE_NATIVE_SIDECARS": { + "type": "boolean" + }, + "PILOT_JWT_ENABLE_REMOTE_JWKS": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "profile": { + "type": "string" + }, + "volumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "volumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "uds-global-istio-config": { + "properties": { + "classificationBanner": { + "properties": { + "addFooter": { + "type": "boolean" + }, + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "enabledHosts": { + "type": "array" + }, + "text": { + "type": "string" + } + }, + "type": "object" + }, + "dashboardAnnotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "ztunnel": { + "properties": { + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "seLinuxOptions": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istio-egress-ambient": { + "properties": { + "uds-istio-egress-config": { + "properties": { + "config": { + "properties": { + "deployment": { + "properties": {}, + "type": "object" + }, + "horizontalPodAutoscaler": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": {}, + "type": "object" + }, + "serviceAccount": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istio-egress-gateway": { + "properties": { + "gateway": { + "properties": { + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istio-passthrough-gateway": { + "properties": { + "gateway": { + "properties": { + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-istio-config": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "proxyProtocol": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "rootDomain": { + "properties": { + "enableHttpsRedirect": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "tls": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "servers": { + "properties": { + "passthrough": { + "properties": { + "mode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istio-tenant-gateway": { + "properties": { + "gateway": { + "properties": { + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-istio-config": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "proxyProtocol": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "rootDomain": { + "properties": { + "enableHttpsRedirect": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "tls": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "cacert": { + "type": "string" + }, + "cert": { + "type": "string" + }, + "key": { + "type": "string" + }, + "servers": { + "properties": { + "keycloak": { + "properties": { + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + } + }, + "type": "object" + }, + "tenant": { + "properties": { + "mode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kube-prometheus-stack": { + "properties": { + "kube-prometheus-stack": { + "properties": {}, + "type": "object" + }, + "uds-prometheus-config": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "pepr-uds-core": { + "properties": { + "module": { + "properties": { + "additionalIgnoredNamespaces": { + "items": { + "type": "string" + }, + "type": "array" + }, + "admission": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": { + "pepr.dev/description": { + "type": "string" + } + }, + "type": "object" + }, + "antiAffinity": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "envFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "projected": { + "properties": { + "sources": { + "items": { + "properties": { + "serviceAccountToken": { + "properties": { + "audience": { + "type": "string" + }, + "expirationSeconds": { + "type": "number" + }, + "path": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "failurePolicy": { + "type": "string" + }, + "labels": { + "properties": { + "app": { + "type": "string" + }, + "pepr.dev/controller": { + "type": "string" + }, + "pepr.dev/uuid": { + "type": "string" + } + }, + "type": "object" + }, + "livenessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "number" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "number" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "webhookLabels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "hash": { + "type": "string" + }, + "imagePullSecrets": { + "type": "array" + }, + "namespace": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": { + "pepr.dev": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "rbac": { + "items": { + "properties": { + "apiGroups": { + "items": { + "type": "string" + }, + "type": "array" + }, + "resources": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verbs": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "secrets": { + "properties": { + "apiPath": { + "type": "string" + } + }, + "type": "object" + }, + "uuid": { + "type": "string" + }, + "watcher": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": { + "pepr.dev/description": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "envFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "projected": { + "properties": { + "sources": { + "items": { + "properties": { + "serviceAccountToken": { + "properties": { + "audience": { + "type": "string" + }, + "expirationSeconds": { + "type": "number" + }, + "path": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "labels": { + "properties": { + "app": { + "type": "string" + }, + "pepr.dev/controller": { + "type": "string" + }, + "pepr.dev/uuid": { + "type": "string" + } + }, + "type": "object" + }, + "livenessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "number" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "number" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheus-blackbox-exporter": { + "properties": { + "prometheus-blackbox-exporter": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "prometheus-operator-crds": { + "properties": { + "prometheus-operator-crds": { + "properties": { + "crds": { + "properties": { + "alertmanagerconfigs": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "alertmanagers": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "podmonitors": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "probes": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "prometheusagents": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "prometheuses": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "prometheusrules": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "scrapeconfigs": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "servicemonitors": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "thanosrulers": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-exemptions": { + "properties": { + "uds-exemptions": { + "properties": { + "exemptions": { + "properties": { + "custom": { + "type": "array" + }, + "istioGatewayNodeport": { + "properties": { + "enabled": { + "type": "boolean" + }, + "gateways": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-operator-config": { + "properties": { + "uds-operator-config": { + "properties": { + "cluster": { + "properties": { + "attributes": { + "properties": { + "clusterName": { + "type": "string" + }, + "clusterTags": { + "type": "array" + } + }, + "type": "object" + }, + "caBundle": { + "properties": { + "certs": { + "type": "string" + }, + "includeDoDCerts": { + "type": "string" + }, + "includePublicCerts": { + "type": "string" + } + }, + "type": "object" + }, + "expose": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + } + }, + "type": "object" + }, + "networking": { + "properties": { + "kubeApiCIDR": { + "type": "string" + }, + "kubeNodeCIDRs": { + "type": "array" + } + }, + "type": "object" + }, + "policy": { + "properties": { + "allowAllNsExemptions": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "operator": { + "properties": { + "ALLOW_PUBLIC_CLIENTS": { + "type": "boolean" + }, + "AUTHSERVICE_REDIS_URI": { + "type": "string" + }, + "KEYCLOAK_CLIENT_MODE": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" +} diff --git a/packages/base/zarf-values.yaml b/packages/base/zarf-values.yaml new file mode 100644 index 0000000000..f627d25e00 --- /dev/null +++ b/packages/base/zarf-values.yaml @@ -0,0 +1,49 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the UDS Core Base package. + +# Shared domains for the whole stack. Override via --values / --set-values to configure all charts. +global: + domain: "" + # Empty falls back to the ADMIN_DOMAIN variable, then admin.. + adminDomain: "" + +# --- pepr --- +pepr-uds-core: + module: {} +uds-operator-config: + uds-operator-config: {} + +uds-exemptions: + uds-exemptions: {} + +# --- istio --- +istio-controlplane: + base: {} + istiod: {} + uds-global-istio-config: {} + cni: {} + ztunnel: {} +istio-admin-gateway: + gateway: {} + uds-istio-config: {} +istio-tenant-gateway: + gateway: {} + uds-istio-config: {} +istio-passthrough-gateway: + gateway: {} + uds-istio-config: {} +istio-egress-ambient: + uds-istio-egress-config: {} +istio-egress-gateway: + gateway: {} + +# --- prometheus operator CRDs --- +prometheus-operator-crds: + prometheus-operator-crds: {} + +# --- envoy gateway --- +envoy-gateway: + envoy-gateway: {} + uds-envoy-gateway-config: {} diff --git a/packages/base/zarf.yaml b/packages/base/zarf.yaml index 17af91534f..207dc41edd 100644 --- a/packages/base/zarf.yaml +++ b/packages/base/zarf.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Defense Unicorns +# Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial kind: ZarfPackageConfig @@ -17,6 +17,11 @@ metadata: dev.uds.keywords: uds,pepr,istio,operator,policies dev.uds.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMb2dvcyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTQuNTRpbiIgaGVpZ2h0PSIyNGluIiB2aWV3Qm94PSIwIDAgMTA0Ni42NyAxNzI4Ij48cGF0aCBkPSJNOTczLjI2LDEyNzAuNzFjLTQzLjY2LDU2LjQtMTMyLjYxLDQ3LjI2LTE2OC41LDQwLjgxLTkuNDYtMS42OS0xOC4zMSw1LjU1LTE3LjQzLDE0LjM4LDIuMDMsMjAuNDQsMTUuNzIsNDAuNDUsMTUuNzIsNDAuNDUtOC4xLDMuMDYtMTUuNTUsNS4xMi0yMi4zNCw2LjUxLDIuMDUsOCwzLjk4LDE1Ljk3LDUuODIsMjMuOSw1LjktLjI1LDExLjEtLjcyLDE1LjA4LTEuMSwxNC44OC0xLjQxLDI5LjQxLTUuMDQsNDMuNDItMTAuODQtMTIuNTktMTEuNC0xOS4xOS0yMy40OC0xOS42My0yNC4yOGwtMTIuMjMtMjIuNzZjLTIuOTEtNS40MSwyLjM0LTExLjU3LDguMTQtOS41N2wyNC40NCw4LjQyYzE0LjM4LDQuOTcsNTEuNTMsMTQuNjIsODUuNjctMi43NiwyNi44Ny0xMy42OSw0MC4yNC0zNy43Nyw1My4xNS02MS4wNiwxLjUzLTIuNzYsMi45OS01LjU1LDQuMzktOC4zNi01LjEzLDIuNS0xMC4zNyw0LjU1LTE1LjY5LDYuMjVaTTQ1NS41NSwxNDgyLjdjLTIuNzIsOS4xLTcuMzEsMTkuNTYtMTQuOTYsMzAuNmwtMi44LDQuOTVjLS4yNS40NS0uNDMuOTQtLjY3LDEuMzksMjMuOTYsMjguNzIsNTQuMzQsMzYuMDIsNzUuMjMsMzcuMTVsMi41NC0yMy4wMmMuOS04LjA4LS4xLTE2LjI4LTIuODgtMjMuOS0yNy40Ni0xLjg4LTQ1LjUyLTE1LjA3LTU2LjQ1LTI3LjE4Wk02MTguODEsMTMyNS4wM2MtMzMuMzQsMTIuNC02NS41LDE4LjY5LTk1Ljc4LDE4LjY5LTMwLjUxLDAtNjIuOTMtNi40LTk2LjUzLTE4Ljk5LTQuMy0xLjYxLTguNjItMy4yOS0xMi45Ni01LjExLTEzLjgzLTUuNzgtMjcuODgtMTIuNjUtNDIuMDUtMjAuNDUtMTEuNTIsMTUuMzYtMjAuODQsMzIuNTMtMjcuNCw1MS4xNmwtMzIuMTcsOTEuMzZjLTguNjgsMjQuNjYtMTMuNjksNTAuNDEtMTQuODcsNzYuNTNsLTMuMTEsNjguNTVoMzMuMDdsMy43LTc3Ljg1YzEuMjUtMjYuMTYsNi43Mi01MS45NSwxNi4yLTc2LjM2bDI5LjgxLTc2LjcxYzMuMS04LDEyLjMzLTExLjcxLDIwLjExLTguMS4yNC4xMS40Ny4yMS43MS4zMi43Ny4zNSwxLjUuNzUsMi4yMiwxLjE3LDMuMjIsMS45LDYuNTgsMy41MywxMC4wMiw0LjkyLDAsMC0uMDMuMDUtLjAzLjA1LDAsMCw0MC45NiwyNC4xNywxMTEuMzgsMjIuMDEsNjIuMzEtMS45LDEzNy44OC02My40NSwxNTQuNDctNzcuNi0xNC41MSw4LjA0LTI4LjksMTUuMDgtNDMuMDYsMjEtNC41OSwxLjkyLTkuMTYsMy43MS0xMy43MSw1LjRaTTcwNS44OSwxNTI4LjY1bC01LjI2LDQzLjM4aDI0Ljg4Yy4zNi03MC4wMy0yMS45OS0xMDAuOTQtMjMuMTUtMTAyLjUxLDMuNzUsOC45Niw3LjQ4LDI2LjU0LDMuNTMsNTkuMTNaTTU1NS4zMiwxNDczLjQxYy00LjI3LTQuNzctOS4wNi05LjEzLTE0LjQtMTIuOTEtMTIuNzgtOS4wNi0yNS4xLTE0LjQ2LTMwLjg2LTE2LjczbDE0LjkzLDIyLjIxLDksMTMuNGMyLjk0LDQuMzksNS40OSw5LjAxLDcuNiwxMy44Miw2LjEsMTMuODksOC40NSwyOS4xOSw2Ljc4LDQ0LjI3bC0zLjYxLDMyLjY4LTEuODYsMTYuODUtMS44NiwxNi45aDMzLjI0bDMuMjctNjcuNTljMS4xMS0yMi45Mi02LjczLTQ1LjEzLTIxLjQ1LTYyLjA0LS4yNS0uMjktLjUyLS41OC0uNzgtLjg2Wk02NDYuMDgsOTEzLjc5Yy0xOC4xNywyMy4zOS0zMy4yNyw1MS43Ni00My40LDgzLjc2LTcuMzIsMjMuMTEtMTEuNDQsNDYuMTctMTIuNjQsNjguMzQtLjM4LDcuMDktLjQ0LDE0LjA4LS4yMywyMC45Nyw3LjI3LDMuMjQsMTMuODIsNi44NiwxOS43MiwxMC42My0xLjE3LTEwLjI4LTEuNzMtMjAuODMtMS42OC0zMS42LjE4LTM1LjAzLDYuNzgtNzIuMiwxOS42Mi0xMDguNjcsNS4zMi0xNS4xMSwxMS41OC0yOS42MywxOC42MS00My40M1pNNDAzLjM3LDExODUuOXMtLjA2LjAyLS4wOC4wMmMtMTMuNDgsMTgtMzAuNTgsMzEuMDEtNTAuNjMsMzguMDctOC42NywzLjA1LTE3LjYxLDQuODYtMjYuNzIsNS41Miw0Ljg5LDMuNjYsOS45Niw3LjM1LDE1LjIzLDExLjA0LDcuOSw1LjUzLDE1LjYxLDEwLjYyLDIzLjEzLDE1LjM0LDUuMSwzLjIsMTAuMTEsNi4yLDE1LjAzLDkuMDUsNS4yMywzLjAyLDEwLjM2LDUuODUsMTUuMzksOC41LDIuMTUsMS4xMyw0LjI4LDIuMjMsNi4zOSwzLjMtLjk2LTIuMjQtMS44Mi00LjQ0LTIuNjItNi42MS0yLjI4LTYuMTgtMy45NC0xMi4wOC01LjExLTE3LjY5LTEuNDYtNy4wMS0yLjE2LTEzLjU2LTIuMjgtMTkuNTktLjYtMjkuNjMsMTIuMjgtNDYuOTMsMTIuMjgtNDYuOTNoLjAxWk00MTcuMzgsOTU3LjIyYzEyLjg0LDM2LjQ3LDE5LjQ0LDczLjY0LDE5LjYyLDEwOC42Ny4wNSwxMC44MS0uNTEsMjEuNDEtMS43LDMxLjczLDYuMjctNC4wMywxMy4yNy03Ljg5LDIxLjEtMTEuMywxLjUyLTYuNjEsMi43MS0xMy40MiwzLjUtMjAuNDMsNC43MS00MS42Ny0zLjQ4LTg5Ljg0LTI1Ljk0LTEzNi4xNS0yOS40My02MC42Ni03Ni41NC0xMDQuMDQtMTI0LjY1LTEyMC45Nyw1LjMzLDMuNDksMTAuNjMsNy4zNCwxNS44OSwxMS41NSwzOS40NywzMS42MSw3Mi4yMSw4MC4yNCw5Mi4xNywxMzYuOVpNNzM0LjE4LDc4Ni4yNWMtMy4zNS0uNjQtNi41NS0xLjM0LTkuNjYtMi4wOCwwLDAsMCwwLDAsMC01LjI0LDMuNzEtMTAuNCw3LTE1LjUsOS45Ny0yOS45OCwxNy40Ny01Ny4yNywyMi43MS03OS4xMiwyMi43MWgtLjk1YzMuNCwzLjUyLDYuMjYsNi4zMSw4LjQ4LDguNCwyLjk1LDIuNzgsNC43Miw0LjMsNC43OCw0LjM1bDEyLjQ2LDEwLjU0YzIwLjc4LTMuNjksNDQuNTctMTIuNTIsNjkuODUtMzAuNDZ2LjAybDEyLjgyLTkuMTFjNS43NS00LjA3LDMuNzYtMTMuMDItMy4xNi0xNC4zNFpNMzg0LjEyLDc2Ni4wNWMtNC4zNC0xMS40Ny02LjkxLTIyLjE3LTguNC0zMSwwLS4wMi0uMDItLjA1LS4wMi0uMDUsMCwwLTQuMjcsNjEuNzIsNDEuMDQsMTA4LjMsOS40Nyw5LjA5LDIwLjM1LDE3LjY4LDMyLjgxLDI1LjIxLDMuNzksMi4zLDcuNjYsNC40NCwxMS41OSw2LjQ0LDI3LjU1LDE0LjA0LDU4LjU1LDIxLjA3LDkyLjc3LDIxLjA3LDI1LjUxLDAsNTIuODMtMy45Miw4MS44MS0xMS43NWwxNi4zMy00LjQzYzYuMjEtMS42OSw3Ljk4LTkuNjQsMy4wNi0xMy43OWwtMTEuMjQtOS41LTguMTQsMi4yMWMtMy44MiwxLjAzLTcuNjEsMS45OS0xMS4zNywyLjg4LTI0Ljc4LDUuOS00OC4yOSw4Ljg3LTcwLjQ0LDguODctMzQuMjEsMC02NS4yMS03LjAzLTkyLjc2LTIxLjA3LTMuOTMtMi03LjgtNC4xNC0xMS41OS02LjQ0LTEyLjQ2LTcuNTMtMjMuMzQtMTYuMTItMzIuODEtMjUuMjEtMy4wNS0zLjE0LTUuODYtNi4zNC04LjQ5LTkuNTgtOS45NS0xMi4yMS0xNy4wNC0yNC45NC0yMi4xLTM3LjAzLS43Mi0xLjcyLTEuNC0zLjQzLTIuMDQtNS4xMVpNMzc0LjY5LDU1Ni4wNGMtLjAzLS41MiwwLTEuMDUtLjAzLTEuNTgtLjA2LTEuMzctLjA3LTIuNzUtLjA3LTQuMTMsMC0xLjAyLDAtMi4wMy4wMy0zLjA1LjA3LTEuODguMi0zLjc3LjM4LTUuNjYuMDQtLjQzLjA0LS44NS4wOC0xLjI3bDExLjA3LTEwMS41NWMxLjMzLTEyLjI0LDIuOC0yNC40OCw0LjMzLTM2LjcyLjEyLS45OS4yMy0xLjk3LjM1LTIuOTYuODktNy4wNCwxLjktMTQuMDgsMi44NS0yMS4xMi41MS0zLjc3LDEtNy41NCwxLjUzLTExLjMxLjM4LTIuNjguNzItNS4zNywxLjEtOC4wNS4wNS0uMzYuMS0uNzMuMTUtMS4wOSwwLDAsMCwwLDAtLjAxLS4yNi4wNi0uNTMuMTMtLjc5LjE5LTQuNjksMS4wNC05LjQ1LDIuMTUtMTQuMjgsMy4zNi0uNTEuMTMtMS4wMy4yNi0xLjU0LjM5LTQuOSwxLjI0LTkuODcsMi41NS0xNC44OSwzLjk3LS4zOS4xMS0uNzguMjMtMS4xNy4zNC01LjIsMS40OC0xMC40NSwzLjA1LTE1Ljc2LDQuNzUtLjA4LjAzLS4xNy4wNi0uMjYuMDgtNS4zMSwxLjctMTAuNjcsMy41MS0xNi4wNiw1LjQzLS4yMy4wOC0uNDUuMTUtLjY3LjIzaDBjLjE0LDIuNTEuMzIsNS40MS41OCw4LjY3LDIuNDYsMzEuNjksMTEuMzIsOTcuNjcsNDMuMDcsMTcxLjA5WiIgZmlsbD0iIzFmZGZmZiIvPjxwYXRoIGQ9Ik00MjguNzcsMTYzMy4wNmgyOS4xOWw2Ljc0LTE5LjQ4Yy44NC0yLjQzLDQuMjctMi40Myw1LjExLDBsNi43NCwxOS40OGgyNy4zNmwzLjIyLTI5LjE1aC4wMXYtLjA1cy03Ny42MiwwLTc3LjYyLDBsLS43NSwyOS4yWk03ODIuMTEsMTYwNS43MmgtODUuNTZsLTMuMzEsMjcuMzNoMzAuODVsNi43NC0xOS40OGMuODQtMi40Myw0LjI3LTIuNDMsNS4xLDBsNi43NCwxOS40OGg0MC44N2MtLjI4LTguNTgtLjY2LTE1LjUyLTEuNDMtMjcuMzNaTTM2OC4xMSwxNjIwLjQ2aC03NS43MmwtMS43NCwzOC4zOC0uMyw2LjY2aDM3LjM2bDExLjM3LTMyLjg2Yy44NC0yLjQzLDQuMjctMi40Myw1LjExLDBsMTEuMzcsMzIuODZoMzguMjZ2LTQ1LjA0aC0yNS43Wk02NDYuOTUsMTYzNy41OWgtMTA5LjYzbC0xLjM2LDEyLjMyLTEuODYsMTYuODQtMy4wNCwyNy41NWg0OC4xNWwxMi4zNi0zNS43M2MuODQtMi40Myw0LjI3LTIuNDMsNS4xMSwwbDEyLjM2LDM1LjczaDQyLjc5bDEuOTUtMTYuMSwxLjM5LTExLjQ0aDBzMy41NC0yOS4xNywzLjU0LTI5LjE3aC0xMS43NlpNNTIyLjQzLDE3NS43OGwxMC42LTIuMjNjOC4xMi0xLjcyLDEzLjI1LTkuNzMsMTEuNDMtMTcuODMtMy44LTE2LjktNy44LTMzLjc1LTExLjk3LTUwLjU3bC01LjY1LTIyLjdjLTMuNTgtMTUuOTQtNy40NC0yOS0xMS4zNy0zOS43NS0uOTMtMi41My0xLjg2LTQuOTMtMi43OS03LjItMi43MywyLjA2LTYuOTgsNi4zNC0xMS45LDE1LjA1LTYuMjEsMTAuOTktMTMuNDksMjkuMDQtMjAuMTQsNTguNjRsLS4wOS4zNy01LjY1LDIyLjdjLS4zMSwxLjI0LS41OSwyLjQ4LS44OSwzLjcyLDEzLjE4LDE1LjQ4LDI5LjMzLDI4Ljc3LDQ4LjQxLDM5LjhaTTQ1MC41NCwzMTQuNTNjLjQzLjQuODIuODEsMS4yNiwxLjIxLDUuNDksNC45NCwxMS4zMiw5LjU1LDE3LjQ0LDEzLjg3LDcuOTYsNS42MywxNi40MiwxMC43NSwyNS40MSwxNS4zMiwyNS4yNSwxMi44MSw1NC41OSwyMS40Myw4Ny44NiwyNS44Ni0xLjA0LTguMDUtMi4xMy0xNi4wOS0zLjI2LTI0LjEyLS44LTUuNy0xLjY0LTExLjM4LTIuNDctMTcuMDctLjg0LTUuNy0xLjY3LTExLjQxLTIuNTUtMTcuMTEtMS44NC0xMS44OC0zLjc1LTIzLjc1LTUuNzctMzUuNi0xLjU4LTkuMjctNy41MS0xNy4xOC0xNS45LTIxLjQyLTMxLjAxLTE1LjYyLTQ4Ljg4LTM3LjUxLTQ4Ljg4LTM3LjUxaC4wM2MtMTUuNDItOC41My0yOS40My0xOC4yOC00MS45OS0yOS4yNC04LjQzLDM3LjktMTUuOTMsNzYuMDgtMjIuNDcsMTE0LjQyLDMuNTIsMy44Nyw3LjI3LDcuNjgsMTEuMzEsMTEuMzlaTTQ2OC43OCw2MTUuNjFjMS43LjA0LDMuMzguMDksNS4xMi4wOSwyOS45NywwLDUzLjM1LTUuNTksNzEuNDUtMTMuNTQsNC41My0xLjk5LDMuODgtOC42NC0uOTMtOS43NS00OS43Mi0xMS41Mi03OC42OS0zNC40NS05MC42LTQ1Ljg0LTE1LjMxLTcuNDMtMjkuNTYtMTUuOTUtNDIuNzItMjUuNDlsLTIuNSwyMi45Yy0yLjMzLDIxLjM2LDYuODQsNDIuMjUsMjMuOTUsNTQuNTEsMTAuNSw3LjUyLDIyLjYzLDEzLjIxLDM2LjIzLDE3LjExWk01OTkuMDcsNTM2LjdjLjctNS43Ny43Ni0xMS42Ny4xMi0xNy42bC02LjExLTU2LjAxYy0xLjM4LTEyLjY1LTEwLjcyLTIzLjAzLTIzLjItMjUuNi03MC4zMS0xNC40Ni0xMDEuNTItNTQuNDEtMTAxLjUyLTU0LjQxbC4wNy0uMDdjLTEzLjU4LTcuMzEtMjYuMjYtMTUuNjMtMzcuOTMtMjUuMDgtNC4xMiwyOC4xNC03Ljc3LDU2LjMzLTEwLjg0LDg0LjQ5bC0yLjYyLDI0LjA0YzIxLjY5LDIwLjQxLDQ4LjMyLDM2Ljc0LDc5LjU1LDQ4LjU1LDMwLjAyLDExLjM1LDY0LjM0LDE4LjU3LDEwMi40NywyMS42N1oiIGZpbGw9IiNlYjIxMjYiLz48cGF0aCBkPSJNOTE1LjExLDEyNzIuOTVjLTcuMTQtMS4xOS0xNC41My0yLjQtMjMuNzEtMy4yMi01Ljg3LS41Mi01OC41Ni00LjU2LTEwMy41NywxNC4wMi0xMS41Niw0Ljc3LTIxLjk1LDEwLjg1LTMxLjMsMTcuNjgsNS4xNSw5Ljg0LDkuNDgsMjAuMTksMTIuODQsMzEuMTMsNC4xMiwxMy40Miw3Ljg3LDI2Ljg4LDExLjMyLDQwLjMsNi43OS0xLjM4LDE0LjI0LTMuNDQsMjIuMzQtNi41MSwwLDAtMTMuNjktMjAuMDItMTUuNzItNDAuNDUtLjg4LTguODMsNy45Ny0xNi4wNywxNy40My0xNC4zOCwzNS45LDYuNDUsMTI0Ljg1LDE1LjYsMTY4LjUtNDAuODEtMy40MywxLjEtNi44OCwyLjA4LTEwLjM5LDIuODQtMTkuMDcsNC4xNC0zMi4zNiwxLjk1LTQ3Ljc1LS42Wk00MzcuMTEsMTUxOS42NWMtMy43LDcuMS01LjgyLDE1LTYuMDIsMjNsLS43MSwyNy41MWg4MC40OGwxLjQ4LTEzLjM2Yy0yMC44OS0xLjEzLTUxLjI3LTguNDMtNzUuMjMtMzcuMTVaTTc1Ny4zOSwxNDIxLjIzYy0uNjYtMy4xMS0xLjM0LTYuMjMtMi4wNC05LjM1LTEuMzItNS45Ny0yLjcyLTExLjk2LTQuMTYtMTcuOTYtMS41Ni02LjQ3LTMuMTktMTIuOTQtNC45LTE5LjQyLTIuODMtMTAuNy01Ljg2LTIxLjQxLTkuMTMtMzIuMDQtMS44Ni02LjA0LTQuMTYtMTEuODMtNi43MS0xNy40OC0yLjQ2LTUuNDUtNS4xOS0xMC43NS04LjI5LTE1LjgzLTIuOTYtNC44Ni02LjI2LTkuNTEtOS44LTE0LjAzLTMuMjctNC4xNy02LjctOC4yMy0xMC40NS0xMi4xLTguODEsNS41OC0xNy41OSwxMC43Ny0yNi4zMywxNS42MS0xNi41OCwxNC4xNS05Mi4xNSw3NS43LTE1NC40Nyw3Ny42LTcwLjQxLDIuMTYtMTExLjM4LTIyLjAxLTExMS4zOC0yMi4wMSwwLDAsLjAzLS4wNC4wMy0uMDUtMy40NC0xLjM5LTYuOC0zLjAyLTEwLjAyLTQuOTItLjcyLS40Mi0xLjQ1LS44Mi0yLjIyLTEuMTctLjI0LS4xMS0uNDctLjIxLS43MS0uMzItNy43OC0zLjYxLTE3LjAxLjEtMjAuMTEsOC4xbC0yOS44MSw3Ni43MWMtOS40OCwyNC40MS0xNC45Niw1MC4yLTE2LjIsNzYuMzZsLTMuNyw3Ny44NWg2OS4yN2wuNDMtMTYuNjEuNzMtMjguMzdjLjM2LTEzLjk1LDQuMTUtMjcuNzcsMTAuOTYtMzkuOTVsOC4yNi0xNC43OWMxLjQtMi40OCwxNC44NC0yNS41NSwzNi42NS0zNC44OC43Ni0uMzMsMS41NC0uMzksMi4yOS0uMjcsMS44OS4zLDMuNDksMS44OCwzLjU4LDMuOTkuMjUsNS42Mi0uMTMsMTUuMS0zLjYyLDI2LjgxLDEwLjkzLDEyLjExLDI4Ljk5LDI1LjMsNTYuNDUsMjcuMTgtLjM4LTEuMDUtLjgtMi4xLTEuMjUtMy4xMmwtMy43OS04LjYyYy02LjU0LTE1LjI3LTEwLjIzLTI4LjUtMTIuMTktMzkuNTYtMS45Ny0xMS4xMi0yLjE5LTIwLjA0LTEuOC0yNi41OS4wOS0xLjQ4Ljg1LTIuNiwxLjg5LTMuMjcsMS44MS0xLjE3LDQuNDUtLjk3LDUuOSwxLjE3bDkuMzIsMTMuODdjNS43NiwyLjI3LDE4LjA4LDcuNjcsMzAuODYsMTYuNzMsNS4zNCwzLjc4LDEwLjE0LDguMTQsMTQuNCwxMi45MS4yNi4yOS41Mi41Ny43OC44NiwxNC43MiwxNi45MSwyMi41NSwzOS4xMywyMS40NSw2Mi4wNGwtMy4yNyw2Ny41OWg4OC41MWwxLjgyLTE1LjAzLDIuMDQtMTYuODUuMy0yLjQ3LDMuNDgtMjguNzJjMS45Ni0xNi4xOCw1LjUzLTMyLjE0LDEwLjg2LTQ3LjU0LDQuMDQtMTEuNjcsOS4zNS0yMy45NiwxNS43Ny0zMi4xMywwLDAsMCwwLDAsMGguMDNzMi42NCwyLjA2LDUuMjgsOC4zNWMxLjE2LDEuNTYsMjMuNTEsMzIuNDgsMjMuMTUsMTAyLjUxaDUzLjk5Yy0zLjQ0LTM5LjEyLTkuNTYtODkuNDEtMjAuNDEtMTQyLjU4LS41Ni0yLjczLTEuMTItNS40Ny0xLjctOC4yMVpNMzk2LjQ2LDM1Ny41NmMtLjA1LjM2LS4xLjczLS4xNSwxLjA5LjA1LS4zNy4xMS0uNzMuMTctMS4xLDAsMC0uMDEsMC0uMDIsMFpNMzg2LjE3LDQzOC44YzEuMzMtMTIuMjQsMi43OS0yNC40OCw0LjMyLTM2LjcyLTEuNTMsMTIuMjQtMywyNC40OC00LjMzLDM2LjcybC0xMS4wNywxMDEuNTVjLS4wNS40Mi0uMDQuODUtLjA4LDEuMjcuMDQtLjQzLjA1LS44NS4xLTEuMjdsMTEuMDctMTAxLjU1Wk03MjQuNTEsNzg0LjE3czAsMCwwLDBoLjAxczAsMC0uMDIsMFpNMzkxLjA4LDEyMzIuODRjLjEyLDYuMDMuODIsMTIuNTgsMi4yOCwxOS41OSwxLjE3LDUuNjEsMi44MywxMS41MSw1LjExLDE3LjY5LjgsMi4xNywxLjY3LDQuMzcsMi42Miw2LjYxLDUyLjc5LDI2LjY3LDk0LjA1LDMzLjI5LDEyMS45MiwzMy4yOSwzMi40OSwwLDgzLjE5LTguOTksMTQ5LjE0LTQ4LjI5Ljc5LS40NywxLjU3LS45MywyLjM3LTEuNDEsMS41Ny0uOTUsMy4xNi0xLjkzLDQuNzUtMi45MiwzLjU1LTIuMTksNy4xMi00LjQ1LDEwLjc2LTYuODIsNC44My0zLjE2LDkuNzQtNi40NywxNC43Mi05Ljk1LjA0LS4wMy4wOS0uMDYuMTMtLjA5LDIuNjUtMS44Niw1LjI1LTMuNzEsNy44LTUuNTYsMi41LTEuODEsNC45NS0zLjYyLDcuMzUtNS40Mi02LjgxLS40Mi0xMy41Mi0xLjQ2LTIwLjExLTMuMi0yLjYtLjY5LTUuMTktMS40Ni03Ljc1LTIuMzYtMjcuNTgtOS43MS00OS41Ny0zMC42NS02NC4yMy02MC40MS0zLjQ5LTUuOTQtMTAuNC0xNi4xNS0yMS41Mi0yNi4yMy0zLjcyLTMuMzctNy42Mi02LjQ1LTExLjY3LTkuMjYtNi4zMS00LjQtMTMuMDEtOC4xMy0yMC4xLTExLjE3LTE1LjYxLTYuNy0zMy4wNC0xMC4wOS01Mi4xNy0xMC4wOS0zMy4zNSwwLTYxLjU5LDEwLjI3LTgzLjk0LDMwLjUzLTEyLjI3LDExLjEyLTE5LjQyLDIyLjQxLTIyLjQ5LDI3LjkyLS40MS44MS0uODUsMS41OS0xLjI4LDIuMzktLjMzLjY2LS41MiwxLjA3LS41MywxLjA5bC0uMDUtLjAyYy0zLjMyLDYuMTQtNi45NiwxMS44OS0xMC45MiwxNy4xOC4wMywwLC4wNi0uMDEuMDgtLjAyaC0uMDFzLTEyLjg4LDE3LjMxLTEyLjI4LDQ2Ljk0Wk01NDQuNDcsMTI1OC41OGMzLjM3LTExLjIsMTEuMDctMjYuMjIsMjguMTUtMjYuMjEsMTUuNCwwLDIyLjIyLDExLjM4LDI1LjE1LDE5LjY1LDEuMTIsMy4xNi0xLjA5LDYuNjItMy41Nyw1LjU5di0uMDJjLTkuMjEtMy44NS0yOC4xNi04Ljc1LTQ1LjQsNS45My0yLjQ0LDIuMDgtNS40My0xLjMzLTQuMzMtNC45NVpNNDQ2Ljg1LDEyNTIuMDNjMi45My04LjI3LDkuNzYtMTkuNjUsMjUuMTUtMTkuNjUsMTcuMDgsMCwyNC43OCwxNS4wMSwyOC4xNSwyNi4yMSwxLjA5LDMuNjItMS44OSw3LjAzLTQuMzMsNC45NS0xNy4yNC0xNC42OC0zNi4xOS05Ljc4LTQ1LjQtNS45M3YuMDJjLTIuNDgsMS4wMy00LjctMi40My0zLjU4LTUuNTlaTTY5OS42MSwxMTE4LjU2Yy0yMi43LDAtNDMuMDEtMTAuMTMtNTYuNzUtMjYuMDguODIsNy40OCwxLjk3LDE0LjgsMy41NCwyMS44NywyLjcyLDEyLjI4LDYuNSwyMy4zNiwxMS4yLDMzLjE0LDIuMjcsMy45MywzLjUzLDYuNjIsMy45MSw3LjQ1LDEwLjUyLDE4LjQxLDI0Ljc2LDMxLjI1LDQxLjg4LDM3LjI3LDIyLjc2LDguMDEsNDkuMSwzLjQ3LDc1LjY2LTEyLjY3LDUuODYtMy41NiwxMS43Mi03LjY2LDE3LjU2LTEyLjM0LDIuMTEtMS42OSw0LjE5LTMuNDQsNi4yNS01LjI0LjExLS4xLjIyLS4xOS4zNC0uMjksNi40Mi01LjYzLDEyLjYyLTExLjgsMTguNTctMTguNDUsMjMuNDMtMjYuMTksNDIuOTQtNTkuOSw1Ni4yOS05Ny44Mi44NC0yLjM5LDEuNjMtNC43OSwyLjQxLTcuMTksNi40NC0xOS42OCwxMC44OS0zOS40NCwxMy4yOC01OC43MywzLjUtMjguMjUsMi42MS01NS41MS0yLjgzLTgwLjAyLTguOTctNDAuNDQtMjkuMi02OC4wOS01Ni45OC03Ny44Ni03LjM3LTIuNTktMTUuMS0zLjg3LTIzLjA5LTMuODctMjIuMTcsMC00Ni4zNSw5Ljg1LTcwLjEyLDI4Ljg5LS41OC40Ni0xLjE0Ljk2LTEuNzEsMS40My0zMy44NiwyNy43Ny02Mi4xNCw3MC40LTc5Ljc0LDEyMC4zNy0xLjg1LDUuMjYtMy41MywxMC41My01LjEsMTUuOCwxMi42MS05LjY1LDI4LjMzLTE1LjQ0LDQ1LjQ0LTE1LjQ0LDcuMDEsMCwxMy43NywxLjAzLDIwLjIxLDIuODMtMTIuNiw2LjE4LTIxLjMsMTkuMS0yMS4zLDM0LjA4LDAsMjAuOTgsMTcuMDEsMzcuOTgsMzgsMzcuOTgsMTUuNDEsMCwyOC42NC05LjE4LDM0LjYxLTIyLjM2LDIuMjEsNy4wNiwzLjQsMTQuNTcsMy40LDIyLjM2cy0xLjE4LDE1LjItMy4zNiwyMi4yMmMtOS40NywzMC41MS0zNy45Myw1Mi42Ny03MS41Nyw1Mi42N1pNMzYyLjQ3LDExODAuMjRjMTYuOTctMTMuOTMsMjkuNDUtMzYuNTEsMzUuOTYtNjUuODcsMi41NC0xMS40NCw0LjA2LTIzLjQ5LDQuNjMtMzUuOTQtMTIuNTMsMjMuODUtMzcuNTIsNDAuMTQtNjYuMzQsNDAuMTQtMzMuNjQsMC02Mi4xLTIyLjE2LTcxLjU3LTUyLjY3LTIuMTgtNy4wMi0zLjM1LTE0LjQ4LTMuMzUtMjIuMjIsMC00MS4zNiwzMy41NS03NC44OSw3NC45My03NC44OSw3LjAyLDAsMTMuNzgsMS4wMywyMC4yMiwyLjg0LTEyLjYsNi4xOC0yMS4yOSwxOS4xLTIxLjI5LDM0LjA3LDAsMjAuOTgsMTcuMDEsMzcuOTgsMzgsMzcuOTgsMTAuNzIsMCwyMC4zOS00LjQ1LDI3LjMtMTEuNTktMS42MS0xMi4xOS00LjAyLTI0LjU2LTcuMjQtMzYuOTctMi4xOS04LjQzLTQuNzQtMTYuODgtNy42Ny0yNS4zLS4xNi0uNDYtLjMtLjkzLS40Ni0xLjM5LTE3LjktNTAuODItNDYuODMtOTQuMDgtODEuNDYtMTIxLjgxLTMyLjM0LTI1LjktNjUuNDQtMzQuNzktOTMuMjItMjUtNy4yMSwyLjU0LTEzLjksNi4zLTIwLjAyLDExLjE2LTE3LjQ4LDEzLjg1LTMwLjMyLDM2Ljc3LTM2Ljk2LDY2LjcxLTUuMDIsMjIuNjQtNi4xMyw0Ny42Mi0zLjUzLDczLjU1LDIuMzgsMjMuNjcsNy44NSw0OC4xNCwxNi4zOSw3Mi4zOWgwYzEzLjYxLDM4LjYzLDMzLjYxLDcyLjg4LDU3LjYzLDk5LjI4LDUuNjQsNi4yLDExLjUsMTEuOTksMTcuNTcsMTcuMjguMzMuMjkuNjcuNTUsMSwuODQsMS43NCwxLjUsMy40OSwyLjk5LDUuMjYsNC40MSw2Ljg3LDUuNSwxMy43NiwxMC4xOCwyMC42NCwxNC4xMywyNS41MiwxNC42NSw1MC43LDE4LjU4LDcyLjU4LDEwLjg4LDcuNi0yLjY3LDE0LjYyLTYuNzQsMjEuMDItMTEuOTlaTTEwMTIuMTQsNDMxLjgxYy0uMTctMi40MS0uOTMtNC42NC0yLjA3LTYuNjMtMi40NS00LjI4LTYuODMtNy4zLTEyLjAyLTcuNzItMzQuMTItMi43Ny03My4zNSwyLjYzLTExNy4wMiwxNi4xNC0zLjA0Ljk0LTYuMDYsMS45Mi05LjA2LDIuOTEtNS44NiwxLjkzLTExLjYxLDMuOTYtMTcuMjYsNi4wNC0yLjQ1LjktNC44NywxLjgyLTcuMjgsMi43NC0zLjMzLDEuMjgtNi42MywyLjU4LTkuODcsMy44OS0yMyw5LjMzLTQzLjU3LDE5LjM0LTYwLjEsMjguMDctMy43MywxLjk3LTcuOC0xLjk3LTUuOTUtNS43NiwyLjU3LTUuMjcsNS4yNC05Ljk2LDcuOTEtMTQuMjMsMTQuNjctMjMuNDUsMjkuNDgtMzIuNDYsMzAuMTMtMzIuODMtMTEuOTYtOS4wOS0yNC42NC0xNy4wOS0zNy44Ni0yMy44MS0yLjQ5LTEuMjYtNC45Ny0yLjQ3LTcuNDUtMy42OC00My4zOC0yMS4wOS04Ni4zMi0zMy43OC0xMjMuNzUtNDEuMzUtMS4wNC0uMjEtMi4wNy0uNDEtMy4xLS42Miw0LjA2LDI3LjkyLDcuNjYsNTUuODcsMTAuNyw4My44MWwxMS4wNywxMDEuNTRjMy43LDMzLjkyLTExLjMzLDY3LjA4LTM5LjIsODYuNTQtMjcuMywxOS4wNi02MS44OSwyOC43Mi0xMDIuODMsMjguNzJoMGMtNDEuNjYsMC03Ni43My0xMC4wMS0xMDQuMjItMjkuNzEtMjMuMTYtMTYuNi0zNy4wNy00My4xMS0zOC4yNS03MS40My4wMi41MiwwLDEuMDUuMDMsMS41OC0zMS43NS03My40Mi00MC42MS0xMzkuNC00My4wNy0xNzEuMDktLjI1LTMuMjYtLjQ0LTYuMTYtLjU4LTguNjYtMTguNTksNi42NS0zNy42MiwxNC42Ni01Ni42NywyNC4zNS0xMy4xNCw2LjY4LTI1Ljc1LDE0LjYyLTM3LjY1LDIzLjY0LjEuMDQuMjEuMDguMzEuMTMuMDUuMDMsMS43NCwxLjA0LDQuNDcsMy4xNyw1LjYsNC4zNywxNS42OCwxMy42NiwyNS43MiwyOS43LDIuNjcsNC4yNyw1LjM0LDguOTYsNy45MSwxNC4yMywxLjg1LDMuNzktMi4yMyw3LjczLTUuOTYsNS43Ni0xNS45NC04LjQyLTM1LjY0LTE4LjAyLTU3LjY1LTI3LjA2LS45NS0uMzktMS45LS43OS0yLjg3LTEuMTgtNS41OC0yLjI2LTExLjMxLTQuNDctMTcuMTYtNi42Mi01LjY2LTIuMDgtMTEuNDItNC4xMS0xNy4yOC02LjA0LTIuODUtLjk0LTUuNzMtMS44Ni04LjYyLTIuNzYtNDMuNjYtMTMuNTEtODIuOS0xOC45MS0xMTcuMDItMTYuMTQtNi4xMy40OS0xMS4xNCw0LjYtMTMuMTUsMTAuMTUtLjQ4LDEuMzMtLjg0LDIuNzItLjk0LDQuMTktMS4zMSwxOS4zNi0xLjMyLDQ2LjY1LDIuOTMsNzcuMjMsNC44MSwzNC42MSwxNC4xOCw2OC40NSwyNy44MywxMDAuNTgsNy4wOCwxNi42NywxNS40LDMyLjg3LDI0Ljc5LDQ4LjU5LDQuNjIsNy43NSw5LjUxLDE1LjM4LDE0LjY3LDIyLjg3LDQuODksNy4xLDEwLDE0LjA5LDE1LjM3LDIwLjk0LjAzLjA0LjA3LjA5LjEuMTMsMy41NSw0LjUyLDcuMTgsOS4wMSwxMC45MywxMy40MiwyLjM1LDIuNzYuODQsNy4wNS0yLjc0LDcuNjktMi42NC40Ny01Ljg0Ljg3LTkuMzUuOTgtMS41LDQ0LjQzLjU2LDkzLjMyLDguNDMsMTQ1LjMsMTMuOTQtNDAuMDcsMzkuMDQtNjguMDUsNzIuMjYtNzkuNzQsMzQuMjQtMTIuMDUsNzIuNTktNS4yOCwxMDkuNjEsMTguOTYsNDguMSwxNi45Myw5NS4yMSw2MC4zMSwxMjQuNjUsMTIwLjk3LDIyLjQ3LDQ2LjMxLDMwLjY1LDk0LjQ4LDI1Ljk0LDEzNi4xNS0uNzksNy4wMS0xLjk4LDEzLjgzLTMuNSwyMC40MywxNy43OS03Ljc0LDM5LjY3LTEzLjE4LDY2LjA4LTEzLjE5aC4wNGMyNywwLDQ5LjI3LDUuNyw2Ny4yNywxMy43Mi0uMjEtNi44OC0uMTUtMTMuODcuMjMtMjAuOTcsMS4yLTIyLjE3LDUuMzItNDUuMjMsMTIuNjQtNjguMzQsMTAuMTMtMzIsMjUuMjQtNjAuMzgsNDMuNC04My43NiwxOS4zMi0zNy45NCw0NC42Mi03MC4yOSw3My41Ni05My40Nyw0MS43Ni0zMy40NSw4Ni4zMy00NC4yOCwxMjUuNDktMzAuNDksMzMuODgsMTEuOTMsNTkuMzUsNDAuNzYsNzMuMTEsODIuMTMsOC4xNy01Mi44OCwxMC4zMi0xMDIuNjEsOC44LTE0Ny43Mi0zLjI5LS4xMy02LjI4LS41Mi04Ljc3LS45Ny0zLjU4LS42NS01LjA5LTQuOTMtMi43NC03LjY5LDMuNTktNC4yMyw3LjA5LTguNTEsMTAuNDktMTIuODQtLjAzLS40NC0uMDUtLjg4LS4wOC0xLjMxbC41Mi43M2M1LjIzLTYuNjcsMTAuMTktMTMuNDcsMTQuOTctMjAuMzcsNS4xNi03LjQ2LDEwLjA2LTE1LjA1LDE0LjY4LTIyLjc3LDkuNTgtMTUuOTcsMTguMDYtMzIuNDQsMjUuMjctNDkuMzksMTMuNjUtMzIuMTMsMjMuMDEtNjUuOTcsMjcuODItMTAwLjU4LDQuMjUtMzAuNTgsNC4yNC01Ny44NywyLjkzLTc3LjIzWk0yMDUuNTMsNTI0LjM1bC01Mi44NSw4Ny4zM2MtMi44NCw0LjY4LTkuNTIsNS40LTEzLjM4LDEuNDYtMi41OC0yLjYzLTUuMDItNS4yMi03LjM5LTcuOC01LjEyLTUuNTYtOS43Ny0xMS0xNC0xNi4zMS01LjAxLTYuMjktOS40Mi0xMi4zOS0xMy4yOS0xOC4zLTMzLjE1LTUwLjYtMjcuMTEtODYuOTItMjIuNDMtMTAxLjE1LDEuMjgtMy45LDUuMzgtNi4yOCw5LjUzLTUuNSwxNy44MywzLjMzLDM0Ljk1LDkuMTMsNTAuNCwxNS43MSw1LjM5LDIuMjksMTAuNTYsNC42NywxNS40OSw3LjA5LDUuMzEsMi42MSwxMC4zMyw1LjIzLDE1LDcuODEsMTMuNjksNy41NywyNC40LDE0LjY1LDMwLjYyLDE4Ljk5aDBjMy40OSwyLjQ2LDQuNDgsNy4wNiwyLjMxLDEwLjY3Wk03MzcuMzQsODAwLjU5bC0xMi44Miw5LjExdi0uMDJjLTI1LjI5LDE3Ljk0LTQ5LjA3LDI2Ljc3LTY5Ljg1LDMwLjQ2bC40Ni4zOWM0LjkxLDQuMTUsMy4xNSwxMi4xMS0zLjA3LDEzLjc5bC04LjE4LDIuMjIsMTEuMjQsOS41YzQuOTIsNC4xNiwzLjE1LDEyLjExLTMuMDYsMTMuNzlsLTE2LjMzLDQuNDNjLTI4Ljk4LDcuODMtNTYuMywxMS43NS04MS44MSwxMS43NS0zNC4yMSwwLTY1LjIyLTcuMDQtOTIuNzctMjEuMDctMy45My0yLTcuOC00LjE0LTExLjU5LTYuNDQtMTIuNDYtNy41My0yMy4zNC0xNi4xMi0zMi44MS0yNS4yMS00NS4zMi00Ni41Ny00MS4wNC0xMDguMy00MS4wNC0xMDguMywwLDAsLjAxLjA0LjAyLjA1LS4wMS0uMDgtLjAzLS4xNy0uMDQtLjI0LS43Ny00LjYyLDQuODUtNi45Nyw3Ljc0LTMuODguMjQuMjYuNTEuNDkuNzEuODQsMS44OCwzLjIzLDQuMDUsNi43Niw2LjQ1LDEwLjQ3LDI1Ljc3LDM5Ljc1LDgyLjM0LDEwMi43NywxNzguNDIsOTQuODIsOS4yMS0uNzYsMTguNzUtMi4xMSwyOC42OS00LjI2LTIyLjg4LTEwLjc0LTM5LjQ0LTMxLjY3LTUwLjYyLTUwLjk0LTUuMDMtOC42OC04Ljk3LTE3LjAzLTExLjktMjMuOTUtMS44NS00LjM4LDMuMzktOC4yOCw3LjA5LTUuMywyMC40LDE2LjQ2LDYyLjEsNDEuNTUsMTE0LjM5LDI3LjQ0LDQuOTMtMS4zMyw5Ljk0LTIuOTgsMTUuMDQtNS4wNSwxLjc1LS43MSwzLjUxLTEuNDUsNS4yOS0yLjI1LTEuODctMS4wMy0zLjc3LTIuMTMtNS42Ny0zLjMtMTAuNS03LjA1LTE3LjE0LTE3LjI4LTIxLjM1LTI3LjczLTIuOC02Ljk3LTQuNTQtMTQuMDMtNS41OC0yMC4zMi0uMjktMS43NS4zNy0zLjIxLDEuNDUtNC4xNiwxLjgyLTEuNTgsNC44NC0xLjcyLDYuNjUuNjMsMTEuMTIsMTQuNDcsMzQuMzcsMzMuODcsODEuNjgsNDIuODYsNi45MiwxLjMyLDguOSwxMC4yNywzLjE2LDE0LjM0bC0xMi44Miw5LjFjMy4xMS43NCw2LjMxLDEuNDQsOS42NiwyLjA4LDYuOTIsMS4zMiw4LjksMTAuMjcsMy4xNiwxNC4zNFpNOTQxLjU5LDU3MS4zOWMtMy44OCw1Ljg4LTguMywxMS45NS0xMy4zLDE4LjItNC4yNSw1LjMxLTguODksMTAuNzQtMTQuMDQsMTYuMy0yLjIyLDIuNC00LjUxLDQuODItNi45MSw3LjI2LTMuODYsMy45NC0xMC41NCwzLjIyLTEzLjM5LTEuNDZsLTUyLjg1LTg3LjMzYy0yLjE4LTMuNi0xLjE4LTguMjEsMi4zMS0xMC42NmgwYzYuMTUtNC4zMSwxNi43LTExLjI5LDMwLjE5LTE4Ljc3LDQuNjYtMi41OCw5LjY4LTUuMjIsMTUtNy44NCw0LjkyLTIuNDIsMTAuMDgtNC44MSwxNS40Ny03LjExLDE1LjU2LTYuNjUsMzIuODYtMTIuNTMsNTAuODYtMTUuOSw0LjE1LS43OCw4LjI2LDEuNiw5LjUzLDUuNSw0LjcsMTQuMjksMTAuNzcsNTAuODYtMjIuODYsMTAxLjhaTTUxNS40Nyw0Mi43MWMzLjkzLDEwLjc0LDcuNzksMjMuOCwxMS4zNywzOS43NWw1LjY1LDIyLjdjNC4xOCwxNi44Miw4LjE3LDMzLjY3LDExLjk3LDUwLjU3LDEuODIsOC4xLTMuMzEsMTYuMTEtMTEuNDMsMTcuODNsLTEwLjYsMi4yM2MxNS40OSw4Ljk2LDMyLjkxLDE2LjQ0LDUyLjIyLDIyLjQ0LTQuODEtMjIuMDktOS44OC00NC4xLTE1LjMyLTY1Ljk2bC01Ljc0LTIzLjA3Yy05LjAzLTQwLjE4LTE5LjIxLTU5LjA5LTI2LjMxLTY3LjkzLTQuOS02LjEtOC4zMi03LjQtOC44OC03LjU4aC0yLjU4LDBjLS4zLjEtMS40Mi41Mi0zLjE1LDEuODIuOTMsMi4yOCwxLjg2LDQuNjcsMi43OSw3LjJaTTU1Mi41NSwyNTUuNDdjOC4zOSw0LjI0LDE0LjMyLDEyLjE1LDE1LjksMjEuNDIsMi4wMiwxMS44NSwzLjkzLDIzLjcyLDUuNzcsMzUuNi44OCw1LjcsMS43MSwxMS40LDIuNTUsMTcuMTEuODQsNS42OSwxLjY4LDExLjM4LDIuNDcsMTcuMDcsMS4xMiw4LjAzLDIuMjIsMTYuMDcsMy4yNiwyNC4xMiw3LjU5LDEuMDEsMTUuNCwxLjc4LDIzLjM5LDIuMzUtMS4xMS03Ljk3LTIuMjktMTUuOTMtMy40OC0yMy44OS0uODYtNS43Ni0xLjcyLTExLjUxLTIuNjMtMTcuMjctLjkxLTUuNzctMS44Ni0xMS41My0yLjgyLTE3LjMtMy42NS0yMi4wNy03LjU3LTQ0LjEtMTEuODUtNjYuMDUtMzAuNDYtNy4zMS01Ny42NC0xNy41Mi04MS40My0zMC42OGgtLjAzczE3Ljg4LDIxLjg5LDQ4Ljg4LDM3LjUxWk01NjkuODgsNDM3LjVjMTIuNDgsMi41NiwyMS44MiwxMi45NSwyMy4yLDI1LjZsNi4xMSw1Ni4wMWMuNjUsNS45Mi41OSwxMS44Mi0uMTIsMTcuNiw4LjQ1LjY5LDE3LjExLDEuMTYsMjUuOTQsMS40NGwtMTAuNDQtOTUuN2MtLjgzLTcuNjItMS43OC0xNS4yNC0yLjY5LTIyLjg2LTU1LjcxLTIuODgtMTAzLjYzLTE1LjEzLTE0My40NS0zNi41NmwtLjA3LjA3czMxLjIxLDM5Ljk1LDEwMS41Miw1NC40MVpNNTQ1LjM0LDYwMi4xN2MtMTguMSw3Ljk1LTQxLjQ3LDEzLjU0LTcxLjQ1LDEzLjU0LTEuNzQsMC0zLjQyLS4wNS01LjEyLS4wOSwxNC40Niw0LjE1LDMwLjU4LDYuMjgsNDguMzQsNi4yOCwzNC40NywwLDYyLTcuNjIsODMuNTMtMjIuNjUsNi4wOC00LjI0LDExLjE4LTkuNTMsMTUuMTktMTUuNDktNTEuNTYtMi4zMS05Ny42OS0xMS4xNS0xMzcuNTktMjYuNTQtOC40My0zLjI1LTE2LjU2LTYuODEtMjQuNDQtMTAuNjMsMTEuOTEsMTEuMzksNDAuODksMzQuMzEsOTAuNiw0NS44NCw0LjgxLDEuMTEsNS40Niw3Ljc2LjkzLDkuNzVaIiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTEwMjUuMTYsMTE4Ny45MWwtMTQuNTEsMTYuODdjLTE2Ljc3LDE5LjUyLTM1LjI2LDMxLjU3LTU0Ljk3LDM1Ljg2LTEyLjc2LDIuNzctMjEuMTYsMS4zOC0zNS4wOC0uOTItNy40LTEuMjItMTUuNzktMi42LTI2LjIyLTMuNTMtNC43OS0uNDMtMzYuOTEtMi44OS03My45OCwzLjYxLTcuODcsMS4zOC0xNS45NiwzLjE3LTI0LjA3LDUuNDctNy4xNywyLjAzLTE0LjM0LDQuNDUtMjEuMzcsNy4zNS0xMy42Myw1LjYyLTI1Ljg4LDEyLjY2LTM2Ljg5LDIwLjU1LTIuNTItMy4xNi01LjE2LTYuMjUtNy45Mi05LjI3LDEyLjQxLTguOSwyMy43My0xNy42OSwzMy43Ni0yNS45MiwxNS4xOS0xMi40NiwyNy40My0yMy41NywzNS45Ni0zMS43LDUuOTctMy44MSwxMS45Mi04LjA2LDE3LjgtMTIuNzcsMzkuNDctMzEuNjEsNzIuMjEtODAuMjMsOTIuMTctMTM2LjksOC4xOC0yMy4yMiwxMy44LTQ2LjczLDE2Ljg4LTY5Ljc5LDMwLjE2LTEwMC41MiwzNy4yMS0xOTQuMiwzMy42LTI3My41Mi4wMi0uMDEuMDMtLjAyLjA1LS4wNCwyMS4yOC0yOC42NSwzOC44Ni01OS4yNiw1Mi40My05MS40LDE0LjgtMzUuMDUsMjQuODktNzEuOTYsMzAuMDEtMTA5LjcxLDQuMzktMzIuNDEsNC4zNS01OS43OCwzLjE4LTc5LjI0LTEuMTctMTkuMzEtMy40NS0zMC44NC0zLjY1LTMxLjc3aC0uMDJjLTEuMzQtNi41Ni02LjQzLTExLjcxLTEyLjk3LTEzLjExLTQ1LjA1LTkuNjgtOTguMy01LjE3LTE1OC4yOSwxMy4zOS04LjgsMi43Mi0xNy4zNSw1LjY4LTI1Ljc0LDguNzQtMTcuODktMTUuNi0zNy41Mi0yOC45Ni01OC4zNS0zOS41NS01My45LTI3LjM5LTEwNy42Mi00Mi4zMi0xNTIuNTUtNTAuNC0uOC0uMTQtMS42LS4yOC0yLjQtLjQyLTcuMDgtNDQuMDEtMTUuNDgtODcuODQtMjUuMDEtMTMxLjMyLTQuNzItMjEuNTQtOS42Ni00My4wMS0xNC45Ny02NC4zM2wtNS42LTIyLjUyYy04LjQ5LTM3LjY5LTE5LjctNjUuMjgtMzMuMzEtODIuMDNDNTM5LjM5LDIuNjcsNTI1Ljg0LjA2LDUxOSwwaC0zLjc0Yy02Ljg1LjA2LTIwLjM5LDIuNjgtMzQuMTMsMTkuNTktMTMuNjIsMTYuNzQtMjQuODIsNDQuMzQtMzMuMzEsODIuMDNsLTUuNjEsMjIuNTJjLTE2LjIxLDY1LjEzLTI5LjY4LDEzMS4zNi00MC4zMywxOTcuOTQtNDIuODUsOC40NC05Mi43NywyMy4xMi0xNDIuOCw0OC41NC0yMC43NywxMC41Ni00MC4zNCwyMy44Ni01OC4xOCwzOS40LTguMjYtMy0xNi42OC01LjkyLTI1LjMzLTguNi01OS45OC0xOC41NS0xMTMuMjQtMjMuMDctMTU4LjI4LTEzLjM5LTYuNTUsMS40LTExLjY0LDYuNTYtMTIuOTcsMTMuMTFoMGMtLjI1LDEuMjEtNC4wMywyMC4zLTQuMyw1MS4wOXY3LjA4Yy4xMywxNS4zMywxLjE2LDMzLjE1LDMuODMsNTIuODQsMi42NywxOS43NCw2Ljc0LDM5LjI1LDEyLjEsNTguMzksNC44OSwxNy40NSwxMC44NCwzNC42LDE3LjksNTEuMzIsMTMuNDYsMzEuODksMzAuODgsNjIuMjYsNTEuOTMsOTAuNzItLjQxLDguNzctLjY4LDE3LjcxLS44MSwyNi44Mi0uOTIsNjQuNTIsNS41MywxMzcuMzYsMjUuMzQsMjE0LjksMi4xNiw4LjQ1LDQuNDYsMTYuOTQsNi45NCwyNS40OS40NSw0LjA2Ljk2LDguMTQsMS41OCwxMi4yMywyLjI2LDE1LjA5LDUuNjQsMzAuMzQsMTAuMDgsNDUuNTUsMS44NSw2LjM1LDMuODYsMTIuNyw2LjA5LDE5LjAzLDE5Ljk2LDU2LjY3LDUyLjcsMTA1LjMsOTIuMTcsMTM2LjkxLDcuMDIsNS42MiwxNC4xMiwxMC41OCwyMS4yNiwxNC45MSwxNS4zLDE0LjQxLDQwLjY4LDM2Ljc2LDcyLjgzLDU5LjMyLDcuMDQsNC45NCwxNC4wNiw5LjYyLDIxLjA4LDE0LjEtNS45Miw4LjE3LTExLjMxLDE2Ljc2LTE2LjExLDI1LjczLTUuMzksMTAuMDctMTAuMSwyMC42LTEzLjk2LDMxLjU3bC0zMi4xNyw5MS4zNmMtOS43OCwyNy43Ny0xNS40MSw1Ni43Ny0xNi43NSw4Ni4xOWwtNi42NywxNDYuNzJjMCwuMTksMCwuMzcsMCwuNTZsLS45NywyMS40Yy0uMzUsNy41Myw1LjY4LDEzLjgyLDEzLjIyLDEzLjgyaDE0NS4zOGM3LjMxLDAsMTMuMjMtNS45MiwxMy4yMy0xMy4yMnYtMTUuOTJjLjE2LTEuMDkuMjctMi4xOS4zMy0zLjMxaDcyLjMzbC01LjE0LDQ2LjU3Yy0uODYsNy44Myw1LjI3LDE0LjY3LDEzLjE2LDE0LjY3aDEyLjFzLjA3LDAsLjEsMGMuMDcsMCwuMTMuMDEuMTkuMDFoMTM5LjU5cy4wOC0uMDEuMTEtLjAxYy4wMiwwLC4wNCwwLC4wNiwwaDkuNjMsMHMwLDAsMCwwYy4wMiwwLC4wNCwwLC4wNiwwLDYuNjYtLjAzLDEyLjI3LTUuMDIsMTMuMDgtMTEuNjNsMS4xNC05LjM5Yy4wMi0uMTIuMDYtLjI0LjA4LS4zNmw0LjgzLTM5Ljg1aDExMS42M3MuMDcsMCwuMTEsMGgzLjYyYzcuNDIsMCwxMy4zOC02LjA4LDEzLjIzLTEzLjVsLS4wOC0zLjdjLS4zNS0xNy4zNC0uNi0yNS4wNS0xLjQ2LTM4Ljk5LS40NS04LjA5LTEuMDUtMTcuMjgtMS44Mi0yNy4zNWwtLjc2LTExLjE4aC0uMTRjLTMuMjktMzguNjgtOS4yLTg4LjQ3LTE5Ljc5LTE0MS44OSw0LjMtLjI4LDguMDUtLjYzLDExLjA2LS45MiwyOS4zNC0yLjc4LDU3LjM5LTEyLjUzLDgzLjM4LTI4Ljk5bDE4LjI5LTExLjU5YzQuOC0zLjAzLDMuODgtMTAuMjctMS41Mi0xMi4wMiwxMy41Mi0xLjY3LDI3LjctNS41Myw0MS43OC0xMi43LDM2LjA2LTE4LjM2LDUzLjM5LTQ5LjYyLDY3LjMzLTc0Ljc0LDEyLjEtMjEuNzksMjAuODEtNDUuMzQsMjUuOTEtNzBsNC41Mi0yMS43OWMyLjMxLTExLjIyLTExLjgzLTE4LjE3LTE5LjMtOS40OFpNODkzLjc1LDk3OS40OWMtMi4zOSwxOS4zLTYuODUsMzkuMDUtMTMuMjgsNTguNzMtLjc4LDIuNC0xLjU3LDQuNzktMi40MSw3LjE5LTEzLjM1LDM3LjkyLTMyLjg2LDcxLjYzLTU2LjI5LDk3LjgyLTUuOTUsNi42NS0xMi4xNSwxMi44Mi0xOC41NywxOC40NS0uMTEuMS0uMjIuMTktLjM0LjI5LTIuMDYsMS44LTQuMTUsMy41NS02LjI1LDUuMjQtNS44NCw0LjY4LTExLjcsOC43OC0xNy41NiwxMi4zNC0yNi41NiwxNi4xNC01Mi45LDIwLjY4LTc1LjY2LDEyLjY3LTE3LjEyLTYuMDItMzEuMzYtMTguODYtNDEuODgtMzcuMjctLjM4LS44NC0xLjY0LTMuNTItMy45MS03LjQ1LTQuNy05Ljc4LTguNDctMjAuODYtMTEuMi0zMy4xNC0xLjU3LTcuMDctMi43Mi0xNC4zOS0zLjU0LTIxLjg3LDEzLjc0LDE1Ljk0LDM0LjA0LDI2LjA4LDU2Ljc1LDI2LjA4LDMzLjY0LDAsNjIuMS0yMi4xNiw3MS41Ny01Mi42NywyLjE4LTcuMDIsMy4zNi0xNC40OCwzLjM2LTIyLjIycy0xLjE5LTE1LjMtMy40LTIyLjM2Yy01Ljk3LDEzLjE3LTE5LjIsMjIuMzYtMzQuNjEsMjIuMzYtMjAuOTksMC0zOC0xNy0zOC0zNy45OCwwLTE0Ljk4LDguNy0yNy44OSwyMS4zLTM0LjA4LTYuNDQtMS44LTEzLjItMi44My0yMC4yMS0yLjgzLTE3LjExLDAtMzIuODMsNS44LTQ1LjQ0LDE1LjQ0LDEuNTctNS4yNywzLjI0LTEwLjU0LDUuMS0xNS44LDE3LjYtNDkuOTcsNDUuODgtOTIuNiw3OS43NC0xMjAuMzcuNTctLjQ3LDEuMTQtLjk3LDEuNzEtMS40MywyMy43Ny0xOS4wNCw0Ny45NS0yOC44OCw3MC4xMi0yOC44OSw4LDAsMTUuNzMsMS4yOCwyMy4wOSwzLjg3LDI3Ljc4LDkuNzcsNDguMDEsMzcuNDIsNTYuOTgsNzcuODYsNS40NCwyNC41Miw2LjMzLDUxLjc3LDIuODMsODAuMDJaTTQ3NC45MSwxMzIuMjZsNS42NS0yMi43LjA5LS4zN2M2LjY1LTI5LjU5LDEzLjkzLTQ3LjY1LDIwLjE0LTU4LjY0LDQuOTItOC43MSw5LjE3LTEyLjk5LDExLjktMTUuMDUsMS43My0xLjMsMi44NS0xLjcyLDMuMTUtMS44MWgwYy44NiwwLDEuNzMsMCwyLjU4LDAsLjU2LjE3LDMuOTgsMS40OCw4Ljg4LDcuNTgsNy4wOSw4Ljg0LDE3LjI4LDI3Ljc1LDI2LjMxLDY3LjkzbDUuNzQsMjMuMDdjNS40NCwyMS44NywxMC41LDQzLjg4LDE1LjMyLDY1Ljk2LTE5LjMxLTYtMzYuNzItMTMuNDgtNTIuMjItMjIuNDQtMTkuMDktMTEuMDQtMzUuMjMtMjQuMzItNDguNDEtMzkuOC4zLTEuMjQuNTgtMi40OC44OS0zLjcyWk00NjEuNywxODguNzJjMTIuNTYsMTAuOTcsMjYuNTcsMjAuNzEsNDEuOTksMjkuMjQsMjMuNzgsMTMuMTUsNTAuOTcsMjMuMzcsODEuNDMsMzAuNjgsNC4yOCwyMS45NSw4LjE5LDQzLjk4LDExLjg1LDY2LjA1Ljk1LDUuNzcsMS45MSwxMS41MywyLjgyLDE3LjMuOTEsNS43NSwxLjc2LDExLjUxLDIuNjMsMTcuMjcsMS4yLDcuOTYsMi4zNywxNS45MiwzLjQ4LDIzLjg5LTcuOTktLjU3LTE1LjgtMS4zNC0yMy4zOS0yLjM1LTMzLjI3LTQuNDMtNjIuNi0xMy4wNS04Ny44Ni0yNS44Ni05LTQuNTctMTcuNDYtOS42OS0yNS40MS0xNS4zMi02LjExLTQuMzItMTEuOTQtOC45My0xNy40NC0xMy44Ny0uNDQtLjQtLjgzLS44MS0xLjI2LTEuMjEtNC4wNC0zLjcxLTcuOC03LjUyLTExLjMxLTExLjM5LDYuNTQtMzguMzQsMTQuMDQtNzYuNTMsMjIuNDctMTE0LjQyWk00MTkuNjYsNDQyLjQ0YzMuMDctMjguMTcsNi43Mi01Ni4zNSwxMC44NC04NC40OSwxMS42Nyw5LjQ1LDI0LjM1LDE3Ljc3LDM3LjkzLDI1LjA4LDM5LjgyLDIxLjQyLDg3LjczLDMzLjY4LDE0My40NSwzNi41Ni45MSw3LjYyLDEuODYsMTUuMjQsMi42OSwyMi44NmwxMC40NCw5NS43Yy04LjgzLS4yOC0xNy40OC0uNzUtMjUuOTQtMS40NC0zOC4xNC0zLjExLTcyLjQ2LTEwLjMyLTEwMi40Ny0yMS42Ny0zMS4yMy0xMS44MS01Ny44Ni0yOC4xNS03OS41NS00OC41NWwyLjYyLTI0LjA0Wk00MDguNTksNTQzLjk5bDIuNS0yMi45YzEzLjE2LDkuNTQsMjcuNDEsMTguMDYsNDIuNzIsMjUuNDksNy44OCwzLjgyLDE2LjAxLDcuMzgsMjQuNDQsMTAuNjMsMzkuODksMTUuMzksODYuMDMsMjQuMjMsMTM3LjU5LDI2LjU0LTQuMDEsNS45Ni05LjExLDExLjI1LTE1LjE5LDE1LjQ5LTIxLjUzLDE1LjAzLTQ5LjA2LDIyLjY1LTgzLjUzLDIyLjY1LTE3Ljc2LDAtMzMuODgtMi4xMy00OC4zNC02LjI4LTEzLjYtMy45LTI1LjczLTkuNTktMzYuMjMtMTcuMTEtMTcuMTEtMTIuMjYtMjYuMjgtMzMuMTUtMjMuOTUtNTQuNTFaTTEyNy40NSw4NjkuNTVjLTcuODctNTEuOTgtOS45Mi0xMDAuODctOC40My0xNDUuMywzLjUyLS4xMSw2LjcxLS41MSw5LjM1LS45OCwzLjU4LS42NSw1LjA5LTQuOTMsMi43NC03LjY5LTMuNzUtNC40MS03LjM4LTguODktMTAuOTMtMTMuNDItLjAzLS4wNC0uMDctLjA5LS4xLS4xMy01LjM3LTYuODUtMTAuNDgtMTMuODQtMTUuMzctMjAuOTQtNS4xNi03LjQ5LTEwLjA1LTE1LjEyLTE0LjY3LTIyLjg3LTkuMzgtMTUuNzItMTcuNzEtMzEuOTItMjQuNzktNDguNTktMTMuNjUtMzIuMTMtMjMuMDItNjUuOTctMjcuODMtMTAwLjU4LTQuMjUtMzAuNTgtNC4yNC01Ny44Ny0yLjkzLTc3LjIzLjEtMS40Ny40Ni0yLjg2Ljk0LTQuMTksMi4wMS01LjU1LDcuMDItOS42NiwxMy4xNS0xMC4xNSwzNC4xMi0yLjc3LDczLjM2LDIuNjMsMTE3LjAyLDE2LjE0LDIuODkuODksNS43NywxLjgyLDguNjIsMi43Niw1Ljg2LDEuOTMsMTEuNjIsMy45NSwxNy4yOCw2LjA0LDUuODQsMi4xNSwxMS41OCw0LjM2LDE3LjE2LDYuNjIuOTYuMzksMS45MS43OCwyLjg3LDEuMTgsMjIsOS4wNCw0MS43MSwxOC42NCw1Ny42NSwyNy4wNiwzLjczLDEuOTcsNy44LTEuOTcsNS45Ni01Ljc2LTIuNTctNS4yNy01LjI0LTkuOTYtNy45MS0xNC4yMy0xMC4wNC0xNi4wNC0yMC4xMi0yNS4zMy0yNS43Mi0yOS43LTIuNzMtMi4xMy00LjQyLTMuMTUtNC40Ny0zLjE3LS4xLS4wNC0uMjEtLjA5LS4zMS0uMTMsMTEuOS05LjAyLDI0LjUtMTYuOTYsMzcuNjUtMjMuNjQsMTkuMDUtOS42OCwzOC4wOS0xNy43LDU2LjY3LTI0LjM1aDBjLjIzLS4wOS40NS0uMTYuNjctLjI0LDUuNC0xLjkyLDEwLjc2LTMuNzQsMTYuMDYtNS40My4wOS0uMDMuMTctLjA2LjI2LS4wOCw1LjMxLTEuNjksMTAuNTYtMy4yNywxNS43Ni00Ljc1LjM5LS4xMS43OC0uMjMsMS4xNy0uMzQsNS4wMy0xLjQyLDkuOTktMi43NCwxNC44OS0zLjk3LjUxLS4xMywxLjAzLS4yNiwxLjU0LS4zOSw0LjgzLTEuMiw5LjU5LTIuMzIsMTQuMjgtMy4zNi4yNi0uMDYuNTMtLjEzLjc5LS4xOSwwLDAsMCwwLDAsLjAxLDAsMCwuMDEsMCwuMDIsMC0uMDUuMzctLjEyLjczLS4xNywxLjEtLjM5LDIuNjgtLjczLDUuMzctMS4xLDguMDUtLjUzLDMuNzctMS4wMSw3LjU0LTEuNTMsMTEuMzEtLjk1LDcuMDQtMS45NiwxNC4wNy0yLjg1LDIxLjEyLS4xMi45OS0uMjMsMS45Ny0uMzUsMi45Ni0xLjUzLDEyLjI0LTIuOTksMjQuNDgtNC4zMiwzNi43MmwtMTEuMDcsMTAxLjU1Yy0uMDUuNDItLjA2Ljg1LS4xLDEuMjctLjE4LDEuODktLjMyLDMuNzgtLjM4LDUuNjYtLjA0LDEuMDItLjAzLDIuMDMtLjAzLDMuMDUsMCwxLjM4LjAxLDIuNzYuMDcsNC4xMywxLjE4LDI4LjMyLDE1LjA5LDU0LjgzLDM4LjI1LDcxLjQzLDI3LjQ5LDE5LjcsNjIuNTYsMjkuNywxMDQuMjIsMjkuN2gwYzQwLjkzLDAsNzUuNTMtOS42NiwxMDIuODMtMjguNzEsMjcuODgtMTkuNDYsNDIuOS01Mi42MiwzOS4yLTg2LjU0bC0xMS4wNy0xMDEuNTRjLTMuMDUtMjcuOTQtNi42NC01NS44OS0xMC43LTgzLjgxLDEuMDMuMiwyLjA2LjQxLDMuMS42MiwzNy40Miw3LjU4LDgwLjM3LDIwLjI3LDEyMy43NSw0MS4zNSwyLjQ4LDEuMjEsNC45NywyLjQxLDcuNDUsMy42OCwxMy4yMiw2LjcyLDI1Ljg5LDE0LjcyLDM3Ljg2LDIzLjgxLS42NS4zOC0xNS40Niw5LjM4LTMwLjEzLDMyLjgzLTIuNjcsNC4yNy01LjM0LDguOTYtNy45MSwxNC4yMy0xLjg1LDMuNzksMi4yMiw3LjczLDUuOTUsNS43NiwxNi41My04LjczLDM3LjEtMTguNzQsNjAuMS0yOC4wNywzLjI0LTEuMzIsNi41NC0yLjYxLDkuODctMy44OSwyLjQtLjkzLDQuODMtMS44NCw3LjI4LTIuNzQsNS42NS0yLjA5LDExLjQxLTQuMTEsMTcuMjYtNi4wNCwzLS45OSw2LjAyLTEuOTcsOS4wNi0yLjkxLDQzLjY2LTEzLjUxLDgyLjktMTguOTEsMTE3LjAyLTE2LjE0LDUuMTkuNDIsOS41NywzLjQ0LDEyLjAyLDcuNzIsMS4xNCwxLjk5LDEuOSw0LjIyLDIuMDcsNi42MywxLjMxLDE5LjM2LDEuMzIsNDYuNjUtMi45Myw3Ny4yMy00LjgxLDM0LjYxLTE0LjE4LDY4LjQ1LTI3LjgyLDEwMC41OC03LjIsMTYuOTUtMTUuNjgsMzMuNDItMjUuMjcsNDkuMzktNC42Myw3LjcxLTkuNTIsMTUuMzEtMTQuNjgsMjIuNzctNC43OCw2LjktOS43NSwxMy43LTE0Ljk3LDIwLjM3bC0uNTItLjczYy4wMy40My4wNS44Ny4wOCwxLjMxLTMuNDEsNC4zMy02LjksOC42MS0xMC40OSwxMi44NC0yLjM1LDIuNzYtLjg0LDcuMDUsMi43NCw3LjY5LDIuNS40NSw1LjQ4Ljg0LDguNzcuOTcsMS41Miw0NS4xMi0uNjMsOTQuODQtOC44LDE0Ny43Mi0xMy43Ni00MS4zNy0zOS4yMi03MC4yMS03My4xMS04Mi4xMy0zOS4xNi0xMy43OC04My43My0yLjk1LTEyNS40OSwzMC40OS0yOC45NCwyMy4xOC01NC4yNCw1NS41My03My41Niw5My40Ny03LjAzLDEzLjgtMTMuMjksMjguMzItMTguNjEsNDMuNDMtMTIuODQsMzYuNDctMTkuNDQsNzMuNjMtMTkuNjIsMTA4LjY3LS4wNiwxMC43Ny41MSwyMS4zMiwxLjY4LDMxLjYtNS45LTMuNzgtMTIuNDUtNy40LTE5LjcyLTEwLjYzLTE4LTguMDItNDAuMjYtMTMuNzEtNjcuMjctMTMuNzJoLS4wNGMtMjYuNDEsMC00OC4zLDUuNDUtNjYuMDgsMTMuMTktNy44MywzLjQxLTE0LjgzLDcuMjYtMjEuMSwxMS4zLDEuMTgtMTAuMzIsMS43NS0yMC45MiwxLjctMzEuNzMtLjE4LTM1LjAzLTYuNzgtNzIuMjEtMTkuNjItMTA4LjY3LTE5Ljk2LTU2LjY2LTUyLjctMTA1LjI5LTkyLjE3LTEzNi45LTUuMjYtNC4yMS0xMC41Ni04LjA2LTE1Ljg5LTExLjU1LTM3LjAxLTI0LjI0LTc1LjM3LTMxLTEwOS42MS0xOC45Ni0zMy4yMiwxMS42OS01OC4zMiwzOS42Ni03Mi4yNiw3OS43NFpNMjY4Ljg4LDExODEuMzVjLTYuODgtMy45NS0xMy43Ny04LjYzLTIwLjY0LTE0LjEzLTEuNzctMS40Mi0zLjUyLTIuOTEtNS4yNi00LjQxLS4zMy0uMjktLjY3LS41NS0xLS44NC02LjA2LTUuMjktMTEuOTItMTEuMDgtMTcuNTctMTcuMjgtMjQuMDItMjYuNC00NC4wMi02MC42NS01Ny42My05OS4yOWgwYy04LjU0LTI0LjIzLTE0LjAxLTQ4LjctMTYuMzktNzIuMzgtMi42MS0yNS45NC0xLjQ5LTUwLjkyLDMuNTMtNzMuNTUsNi42NC0yOS45NCwxOS40Ny01Mi44NSwzNi45Ni02Ni43MSw2LjEzLTQuODYsMTIuODItOC42MiwyMC4wMi0xMS4xNiwyNy43OC05Ljc4LDYwLjg3LS45LDkzLjIyLDI1LDM0LjYzLDI3LjczLDYzLjU2LDcwLjk5LDgxLjQ2LDEyMS44MS4xNi40Ni4zLjkyLjQ2LDEuMzksMi45Myw4LjQyLDUuNDgsMTYuODcsNy42NywyNS4zLDMuMjIsMTIuNDEsNS42NCwyNC43Nyw3LjI0LDM2Ljk3LTYuOTEsNy4xNC0xNi41OCwxMS41OS0yNy4zLDExLjU5LTIwLjk5LDAtMzgtMTctMzgtMzcuOTgsMC0xNC45OCw4LjY5LTI3Ljg5LDIxLjI5LTM0LjA3LTYuNDQtMS44LTEzLjItMi44NC0yMC4yMi0yLjg0LTQxLjM4LDAtNzQuOTMsMzMuNTMtNzQuOTMsNzQuODksMCw3Ljc0LDEuMTcsMTUuMiwzLjM1LDIyLjIyLDkuNDcsMzAuNTEsMzcuOTMsNTIuNjcsNzEuNTcsNTIuNjcsMjguODIsMCw1My44MS0xNi4yOSw2Ni4zNC00MC4xNC0uNTcsMTIuNDYtMi4wOSwyNC41LTQuNjMsMzUuOTQtNi41MSwyOS4zNi0xOC45OSw1MS45NC0zNS45Niw2NS44Ny02LjQsNS4yNS0xMy40MSw5LjMxLTIxLjAyLDExLjk5LTIxLjg3LDcuNy00Ny4wNiwzLjc3LTcyLjU4LTEwLjg4Wk0zNDEuMTYsMTI0MC41NWMtNS4yNy0zLjY5LTEwLjM0LTcuMzgtMTUuMjMtMTEuMDQsOS4xMS0uNjYsMTguMDUtMi40NiwyNi43Mi01LjUyLDIwLjA2LTcuMDYsMzcuMTUtMjAuMDcsNTAuNjMtMzguMDcsMy45Ny01LjI5LDcuNi0xMS4wNCwxMC45Mi0xNy4xOGwuMDUuMDJzLjItLjQzLjUzLTEuMDljLjQyLS44Ljg2LTEuNTgsMS4yOC0yLjM5LDMuMDgtNS41MiwxMC4yMy0xNi44MSwyMi40OS0yNy45MiwyMi4zNS0yMC4yNiw1MC41OC0zMC41Myw4My45NC0zMC41MywxOS4xMiwwLDM2LjU1LDMuMzksNTIuMTcsMTAuMDksNy4wOCwzLjA0LDEzLjc4LDYuNzcsMjAuMSwxMS4xNyw0LjA1LDIuODIsNy45NSw1Ljg5LDExLjY3LDkuMjYsMTEuMTEsMTAuMDcsMTguMDIsMjAuMjksMjEuNTIsMjYuMjMsMTQuNjYsMjkuNzYsMzYuNjUsNTAuNzEsNjQuMjMsNjAuNDEsMi41Ni45LDUuMTUsMS42Nyw3Ljc1LDIuMzYsNi41OCwxLjc1LDEzLjMsMi43OCwyMC4xMSwzLjItMi40LDEuOC00Ljg1LDMuNi03LjM1LDUuNDItMi41NiwxLjg1LTUuMTYsMy43MS03LjgsNS41Ni0uMDQuMDMtLjA5LjA2LS4xMy4wOS00Ljk4LDMuNDgtOS44OSw2LjgtMTQuNzIsOS45NS0zLjYzLDIuMzctNy4yMSw0LjYzLTEwLjc2LDYuODItMS41OS45OC0zLjE4LDEuOTctNC43NSwyLjkyLS43OS40OC0xLjU4Ljk0LTIuMzcsMS40MS02NS45NSwzOS4yOS0xMTYuNjUsNDguMjktMTQ5LjE0LDQ4LjI5LTI3Ljg3LDAtNjkuMTMtNi42Mi0xMjEuOTItMzMuMjktMi4xMS0xLjA3LTQuMjQtMi4xNy02LjM5LTMuMy01LjAzLTIuNjUtMTAuMTYtNS40Ny0xNS4zOS04LjUtNC45Mi0yLjg1LTkuOTMtNS44Ni0xNS4wMy05LjA1LTcuNTMtNC43Mi0xNS4yMy05LjgxLTIzLjEzLTE1LjM0Wk0zOTMuODEsMTY0OS45djE1LjZoLTM4LjI2bC0xMS4zNy0zMi44NmMtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMTEsMGwtMTEuMzcsMzIuODZoLTM3LjM2bC4zLTYuNjYsMS43NC0zOC4zOGgxMDEuNDJ2MjkuNDRaTTUwNy4xNCwxNjAzLjloLS4wMWwtMy4yMiwyOS4xNWgtMjcuMzZsLTYuNzQtMTkuNDhjLS44NC0yLjQzLTQuMjctMi40My01LjExLDBsLTYuNzQsMTkuNDhoLTI5LjE5bC43NS0yOS4yaDc3LjYydi4wNVpNNjU1LjE3LDE2NjYuNzVoMHMtMS4zOSwxMS40NS0xLjM5LDExLjQ1bC0xLjk1LDE2LjFoLTQyLjc5bC0xMi4zNi0zNS43M2MtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMTEsMGwtMTIuMzYsMzUuNzNoLTQ4LjE1bDMuMDQtMjcuNTUsMS44Ni0xNi44NCwxLjM2LTEyLjMyaDEyMS4zOWwtMy41NCwyOS4xNlpNNjgxLjI5LDE0OTMuM2MtNS4zMywxNS40LTguOSwzMS4zNS0xMC44Niw0Ny41NGwtMy40OCwyOC43Mi0uMywyLjQ3LTIuMDQsMTYuODUtMS44MiwxNS4wM2gtMTIxLjc1bDEuODYtMTYuOSwxLjg2LTE2Ljg1LDMuNjEtMzIuNjhjMS42Ni0xNS4wOC0uNjgtMzAuMzgtNi43OC00NC4yNy0yLjExLTQuODItNC42Ni05LjQ0LTcuNi0xMy44MmwtOS0xMy40LTE0LjkzLTIyLjIxLTkuMzItMTMuODdjLTEuNDQtMi4xNC00LjA5LTIuMzQtNS45LTEuMTctMS4wNC42Ny0xLjgsMS43OS0xLjg5LDMuMjctLjM5LDYuNTUtLjE3LDE1LjQ2LDEuOCwyNi41OSwxLjk2LDExLjA2LDUuNjUsMjQuMjksMTIuMTksMzkuNTZsMy43OSw4LjYyYy40NSwxLjAzLjg3LDIuMDcsMS4yNSwzLjEyLDIuNzgsNy42MiwzLjc4LDE1LjgyLDIuODgsMjMuOWwtMi41NCwyMy4wMi0xLjQ4LDEzLjM2aC04MC40OGwuNzEtMjcuNTFjLjItOCwyLjMyLTE1LjksNi4wMi0yMywuMjQtLjQ2LjQyLS45NC42Ny0xLjM5bDIuOC00Ljk1YzcuNjUtMTEuMDUsMTIuMjUtMjEuNSwxNC45Ni0zMC42LDMuNDktMTEuNzEsMy44Ni0yMS4xOSwzLjYyLTI2LjgxLS4wOS0yLjExLTEuNjktMy42OS0zLjU4LTMuOTktLjc0LS4xMi0xLjUzLS4wNi0yLjI5LjI3LTIxLjgxLDkuMzMtMzUuMjUsMzIuNC0zNi42NSwzNC44OGwtOC4yNiwxNC43OWMtNi44MSwxMi4xOC0xMC42LDI2LTEwLjk2LDM5Ljk1bC0uNzMsMjguMzctLjQzLDE2LjYxaC0xMDIuMzRsMy4xMS02OC41NWMxLjE4LTI2LjEyLDYuMTktNTEuODcsMTQuODctNzYuNTNsMzIuMTctOTEuMzZjNi41Ni0xOC42MywxNS44OC0zNS44MSwyNy40LTUxLjE2LDE0LjE3LDcuOCwyOC4yMSwxNC42Nyw0Mi4wNSwyMC40NSw0LjM0LDEuODEsOC42NiwzLjUsMTIuOTYsNS4xMSwzMy42MSwxMi41OCw2Ni4wMywxOC45OCw5Ni41MywxOC45OSwzMC4yOCwwLDYyLjQ0LTYuMjksOTUuNzgtMTguNjksNC41NS0xLjY5LDkuMTItMy40OCwxMy43MS01LjQsMTQuMTYtNS45MiwyOC41NS0xMi45Niw0My4wNi0yMSw4Ljc0LTQuODQsMTcuNTItMTAuMDMsMjYuMzMtMTUuNjEsMy43NSwzLjg3LDcuMTksNy45MywxMC40NSwxMi4xLDMuNTQsNC41MSw2Ljg0LDkuMTcsOS44LDE0LjAzLDMuMSw1LjA4LDUuODMsMTAuMzgsOC4yOSwxNS44MywyLjU1LDUuNjUsNC44NSwxMS40NCw2LjcxLDE3LjQ4LDMuMjcsMTAuNjQsNi4zLDIxLjM0LDkuMTMsMzIuMDQsMS43MSw2LjQ4LDMuMzQsMTIuOTYsNC45LDE5LjQyLDEuNDUsNiwyLjg0LDExLjk5LDQuMTYsMTcuOTYuNjksMy4xMiwxLjM4LDYuMjQsMi4wNCw5LjM1LjU4LDIuNzQsMS4xNSw1LjQ4LDEuNyw4LjIxLDEwLjg1LDUzLjE3LDE2Ljk3LDEwMy40NywyMC40MSwxNDIuNThoLTc4Ljg3bDUuMjYtNDMuMzhjMy45NS0zMi41OS4yMi01MC4xNi0zLjUzLTU5LjEzLTIuNjMtNi4zLTUuMjgtOC4zNS01LjI4LTguMzVoLS4wM3MwLDAsMCwwYy02LjQyLDguMTctMTEuNzMsMjAuNDYtMTUuNzcsMzIuMTNaTTc4My40NiwxNjMzLjA2aC00MC43OGwtNi43NC0xOS40OGMtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMSwwbC02Ljc0LDE5LjQ4aC0zMC44NWwzLjMxLTI3LjMzaDg1LjU2Yy43NywxMS44MSwxLjE1LDE4Ljc2LDEuNDMsMjcuMzNoLS4wOFpNOTg0LjU2LDEyNzIuODNjLTEyLjkxLDIzLjI5LTI2LjI4LDQ3LjM3LTUzLjE1LDYxLjA2LTM0LjE0LDE3LjM5LTcxLjI5LDcuNzMtODUuNjcsMi43NmwtMjQuNDQtOC40MmMtNS44LTItMTEuMDUsNC4xNS04LjE0LDkuNTdsMTIuMjMsMjIuNzZjLjQzLjc5LDcuMDQsMTIuODgsMTkuNjMsMjQuMjgtMTQuMDEsNS44LTI4LjUzLDkuNDItNDMuNDIsMTAuODQtMy45OC4zNy05LjE4Ljg1LTE1LjA4LDEuMS0xLjgzLTcuOTQtMy43Ni0xNS45LTUuODItMjMuOS0zLjQ1LTEzLjQyLTcuMi0yNi44OC0xMS4zMi00MC4zLTMuMzYtMTAuOTQtNy42OS0yMS4yOS0xMi44NC0zMS4xMyw5LjM1LTYuODMsMTkuNzMtMTIuOTEsMzEuMy0xNy42OCw0NS4wMS0xOC41Nyw5Ny43MS0xNC41NCwxMDMuNTctMTQuMDIsOS4xOC44MiwxNi41NiwyLjAzLDIzLjcxLDMuMjIsMTUuMzksMi41NSwyOC42OCw0Ljc1LDQ3Ljc1LjYsMy41MS0uNzYsNi45Ni0xLjc0LDEwLjM5LTIuODQsNS4zMi0xLjcsMTAuNTctMy43NSwxNS42OS02LjI1LTEuNCwyLjgyLTIuODYsNS42LTQuMzksOC4zNlpNMzc1LjcyLDczNS4wNWMxLjQ5LDguODMsNC4wNiwxOS41Myw4LjQsMzEsLjY0LDEuNjksMS4zMiwzLjM5LDIuMDQsNS4xMSw1LjA2LDEyLjA5LDEyLjE1LDI0LjgyLDIyLjEsMzcuMDMsMi42NCwzLjI0LDUuNDQsNi40NCw4LjQ5LDkuNTgsOS40Nyw5LjA5LDIwLjM1LDE3LjY4LDMyLjgxLDI1LjIxLDMuNzksMi4zLDcuNjYsNC40NCwxMS41OSw2LjQ0LDI3LjU1LDE0LjA0LDU4LjU1LDIxLjA3LDkyLjc2LDIxLjA3LDIyLjE2LDAsNDUuNjYtMi45Niw3MC40NC04Ljg3LDMuNzYtLjksNy41NS0xLjg1LDExLjM3LTIuODhsOC4xNC0yLjIxLDguMTgtMi4yMmM2LjIxLTEuNjksNy45OC05LjY0LDMuMDctMTMuNzlsLS40Ni0uMzktMTIuNDYtMTAuNTRjLS4wNi0uMDUtMS44My0xLjU3LTQuNzgtNC4zNS0yLjIyLTIuMDktNS4wOC00Ljg4LTguNDgtOC40aC45NWMyMS44NSwwLDQ5LjE1LTUuMjQsNzkuMTItMjIuNzEsNS4xLTIuOTcsMTAuMjYtNi4yNSwxNS41LTkuOTcsMCwwLDAsMCwuMDIsMGgtLjAxczEyLjgyLTkuMSwxMi44Mi05LjFjNS43NC00LjA3LDMuNzYtMTMuMDMtMy4xNi0xNC4zNC00Ny4zMi05LTcwLjU2LTI4LjQtODEuNjgtNDIuODYtMS44MS0yLjM2LTQuODMtMi4yMi02LjY1LS42My0xLjA5Ljk0LTEuNzUsMi40LTEuNDUsNC4xNiwxLjA0LDYuMjksMi43OCwxMy4zNiw1LjU4LDIwLjMyLDQuMjEsMTAuNDUsMTAuODQsMjAuNjgsMjEuMzUsMjcuNzMsMS45LDEuMTYsMy44LDIuMjcsNS42NywzLjMtMS43Ny44LTMuNTQsMS41NC01LjI5LDIuMjUtNS4xLDIuMDYtMTAuMTIsMy43Mi0xNS4wNCw1LjA1LTUyLjI5LDE0LjEtOTMuOTktMTAuOTktMTE0LjM5LTI3LjQ0LTMuNy0yLjk4LTguOTQuOTItNy4wOSw1LjMsMi45Miw2LjkyLDYuODYsMTUuMjcsMTEuOSwyMy45NSwxMS4xNywxOS4yNywyNy43NCw0MC4yLDUwLjYyLDUwLjk0LTkuOTUsMi4xNS0xOS40OCwzLjUtMjguNjksNC4yNi05Ni4wOCw3Ljk2LTE1Mi42NS01NS4wNy0xNzguNDItOTQuODItMi40MS0zLjcxLTQuNTgtNy4yNC02LjQ1LTEwLjQ3LS4yLS4zNC0uNDYtLjU3LS43MS0uODQtMi44OS0zLjEtOC41MS0uNzUtNy43NCwzLjg4LjAxLjA4LjAzLjE2LjA0LjI0Wk04OTMuOTYsNjExLjY5YzIuODQsNC42OCw5LjUzLDUuNCwxMy4zOSwxLjQ2LDIuNC0yLjQ0LDQuNjktNC44Niw2LjkxLTcuMjYsNS4xNC01LjU2LDkuNzktMTAuOTksMTQuMDQtMTYuMyw1LTYuMjUsOS40Mi0xMi4zMiwxMy4zLTE4LjIsMzMuNjMtNTAuOTQsMjcuNTYtODcuNTEsMjIuODYtMTAxLjgtMS4yNy0zLjktNS4zOC02LjI4LTkuNTMtNS41LTE4LDMuMzctMzUuMjksOS4yNC01MC44NiwxNS45LTUuMzgsMi4zLTEwLjU1LDQuNjktMTUuNDcsNy4xMS01LjMyLDIuNjItMTAuMzQsNS4yNS0xNSw3Ljg0LTEzLjQ5LDcuNDgtMjQuMDQsMTQuNDYtMzAuMTksMTguNzZoMGMtMy40OSwyLjQ2LTQuNDksNy4wNi0yLjMxLDEwLjY3bDUyLjg1LDg3LjMzWk0yMDMuMjIsNTEzLjY5aDBjLTYuMjItNC4zNi0xNi45Mi0xMS40NC0zMC42Mi0xOS00LjY3LTIuNTgtOS42OS01LjItMTUtNy44MS00LjkzLTIuNDItMTAuMS00Ljc5LTE1LjQ5LTcuMDktMTUuNDUtNi41Ny0zMi41OC0xMi4zNy01MC40LTE1LjcxLTQuMTUtLjc4LTguMjUsMS42LTkuNTMsNS41LTQuNjcsMTQuMjMtMTAuNzIsNTAuNTUsMjIuNDMsMTAxLjE1LDMuODcsNS45MSw4LjI4LDEyLjAxLDEzLjI5LDE4LjMsNC4yMyw1LjMxLDguODcsMTAuNzUsMTQsMTYuMzEsMi4zNywyLjU4LDQuODEsNS4xNyw3LjM5LDcuOCwzLjg2LDMuOTQsMTAuNTQsMy4yMiwxMy4zOC0xLjQ2bDUyLjg1LTg3LjMzYzIuMTgtMy42LDEuMTgtOC4yMS0yLjMxLTEwLjY2Wk00NTAuNDEsMTI1Ny42MnYtLjAyYzkuMjEtMy44NSwyOC4xNi04Ljc1LDQ1LjQxLDUuOTMsMi40NCwyLjA4LDUuNDItMS4zMyw0LjMzLTQuOTUtMy4zNy0xMS4yLTExLjA3LTI2LjIyLTI4LjE1LTI2LjIxLTE1LjQsMC0yMi4yMiwxMS4zOC0yNS4xNSwxOS42NS0xLjEyLDMuMTYsMS4wOSw2LjYyLDMuNTcsNS41OVpNNTQ4LjgsMTI2My41M2MxNy4yNC0xNC42OCwzNi4xOS05Ljc4LDQ1LjQtNS45M3YuMDJjMi40OCwxLjAzLDQuNy0yLjQzLDMuNTctNS41OS0yLjkzLTguMjctOS43NS0xOS42NS0yNS4xNS0xOS42NS0xNy4wOCwwLTI0Ljc4LDE1LjAxLTI4LjE1LDI2LjIxLTEuMDksMy42MiwxLjg5LDcuMDMsNC4zMyw0Ljk1WiIgZmlsbD0iIzA2MjM0YyIvPjwvc3ZnPg==" +values: + files: + - zarf-values.yaml + schema: zarf-values.schema.json + components: - name: uds-crds required: true diff --git a/packages/identity-authorization/zarf-values.schema.json b/packages/identity-authorization/zarf-values.schema.json new file mode 100644 index 0000000000..76c73ad10c --- /dev/null +++ b/packages/identity-authorization/zarf-values.schema.json @@ -0,0 +1,773 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "authservice": { + "properties": { + "authservice": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "autoscaling": { + "properties": { + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + } + }, + "type": "object" + }, + "nameOverride": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "redis": { + "properties": { + "egressCidr": { + "type": "string" + }, + "internal": { + "properties": { + "enabled": { + "type": "boolean" + }, + "remoteNamespace": { + "type": "string" + }, + "remoteSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "replicaCount": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "global": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + } + }, + "type": "object" + }, + "keycloak": { + "additionalProperties": true, + "properties": { + "keycloak": { + "properties": { + "additionalGatewayNamespaces": { + "type": "array" + }, + "additionalNetworkAllow": { + "type": "array" + }, + "adminApiAllowedPrincipals": { + "type": "array" + }, + "adminDomain": { + "type": "string" + }, + "affinity": { + "type": "string" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "scaleDown": { + "properties": { + "policies": { + "items": { + "properties": { + "periodSeconds": { + "type": "number" + }, + "type": { + "type": "string" + }, + "value": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + }, + "stabilizationWindowSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "scaleUp": { + "properties": { + "stabilizationWindowSeconds": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "metrics": { + "items": { + "properties": { + "resource": { + "properties": { + "name": { + "type": "string" + }, + "target": { + "properties": { + "averageUtilization": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "minReplicas": { + "type": "number" + }, + "sessionStickiness": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "clusterDomain": { + "type": "string" + }, + "configImage": { + "type": "string" + }, + "dashboardAnnotations": { + "properties": {}, + "type": "object" + }, + "debugMode": { + "type": "boolean" + }, + "detailedObservability": { + "properties": { + "alerts": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "dashboards": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "logging": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "devMode": { + "type": "boolean" + }, + "disableVirtualThreads": { + "type": "boolean" + }, + "domain": { + "type": "string" + }, + "enableServiceLinks": { + "type": "boolean" + }, + "env": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "httpRetry": { + "properties": { + "applyJitter": { + "type": "boolean" + }, + "backoffMultiplier": { + "type": "number" + }, + "initialBackoffMillis": { + "type": "number" + }, + "jitterFactor": { + "type": "number" + }, + "maxRetries": { + "type": "number" + } + }, + "type": "object" + }, + "insecureAdminPasswordGeneration": { + "properties": { + "enabled": { + "type": "boolean" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "jsonLogFormat": { + "type": "boolean" + }, + "lifecycleHooks": { + "properties": {}, + "type": "object" + }, + "migrations": { + "properties": { + "deleteGeneratedTrustStore": { + "type": "boolean" + }, + "upgradePermissions": { + "type": "boolean" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "pathParameterProtection": { + "type": "boolean" + }, + "persistence": { + "properties": { + "accessMode": { + "type": "string" + }, + "conf": { + "properties": { + "enabled": { + "type": "boolean" + }, + "size": { + "type": "string" + } + }, + "type": "object" + }, + "data": { + "properties": { + "enabled": { + "type": "boolean" + }, + "size": { + "type": "string" + } + }, + "type": "object" + }, + "providers": { + "properties": { + "enabled": { + "type": "boolean" + }, + "size": { + "type": "string" + } + }, + "type": "object" + }, + "storageClassName": { + "type": "string" + }, + "themes": { + "properties": { + "enabled": { + "type": "boolean" + }, + "size": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "postgresql": { + "properties": { + "database": { + "type": "string" + }, + "egressCidr": { + "type": "string" + }, + "host": { + "type": "string" + }, + "internal": { + "properties": { + "enabled": { + "type": "boolean" + }, + "remoteNamespace": { + "type": "string" + }, + "remoteSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "password": { + "type": "string" + }, + "port": { + "type": "number" + }, + "secretRef": { + "properties": { + "host": { + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "password": { + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "username": { + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "realm": { + "type": "string" + }, + "realmAuthFlows": { + "properties": { + "OTP_ENABLED": { + "type": "boolean" + }, + "SOCIAL_AUTH_ENABLED": { + "type": "boolean" + }, + "USERNAME_PASSWORD_AUTH_ENABLED": { + "type": "boolean" + }, + "WEBAUTHN_ENABLED": { + "type": "boolean" + }, + "X509_AUTH_ENABLED": { + "type": "boolean" + }, + "X509_MFA_ENABLED": { + "type": "boolean" + } + }, + "type": "object" + }, + "realmConfig": { + "properties": { + "maxInFlightLoginsPerUser": { + "type": "number" + } + }, + "type": "object" + }, + "realmInitEnv": { + "properties": { + "GOOGLE_IDP_ENABLED": { + "type": "boolean" + }, + "SECURITY_HARDENING_ADDITIONAL_CLIENT_SCOPES": { + "type": "string" + }, + "SECURITY_HARDENING_ADDITIONAL_PROTOCOL_MAPPERS": { + "type": "string" + }, + "SSO_SESSION_MAX_PER_USER": { + "type": "string" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "restartPolicy": { + "type": "string" + }, + "smtp": { + "properties": { + "enabled": { + "type": "boolean" + }, + "port": { + "type": "number" + } + }, + "type": "object" + }, + "statefulsetLabels": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "themeCustomizations": { + "properties": { + "settings": { + "properties": { + "enableAccessRequestNotes": { + "type": "boolean" + }, + "enableRegistrationFields": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "thirdPartyIntegration": { + "properties": { + "tls": { + "properties": { + "tlsCertificateFormat": { + "type": "string" + }, + "tlsCertificateHeader": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "string" + }, + "truststorePaths": { + "items": { + "type": "string" + }, + "type": "array" + }, + "updateStrategy": { + "type": "string" + }, + "uptime": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "waypoint": { + "properties": { + "deployment": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "limits": { + "properties": { + "cpu": { + "type": "number" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "horizontalPodAutoscaler": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "metrics": { + "items": { + "properties": { + "resource": { + "properties": { + "name": { + "type": "string" + }, + "target": { + "properties": { + "averageUtilization": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "minReplicas": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" +} diff --git a/packages/identity-authorization/zarf-values.yaml b/packages/identity-authorization/zarf-values.yaml new file mode 100644 index 0000000000..c2297c2c80 --- /dev/null +++ b/packages/identity-authorization/zarf-values.yaml @@ -0,0 +1,15 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the UDS Core Identity & Authorization package. + +# Shared domains for the whole stack. Override via --values / --set-values to configure all charts. +global: + domain: "" + # Empty falls back to the ADMIN_DOMAIN variable, then admin.. + adminDomain: "" + +keycloak: + keycloak: {} +authservice: + authservice: {} diff --git a/packages/identity-authorization/zarf.yaml b/packages/identity-authorization/zarf.yaml index bb5b5e2975..d192870557 100644 --- a/packages/identity-authorization/zarf.yaml +++ b/packages/identity-authorization/zarf.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Defense Unicorns +# Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial kind: ZarfPackageConfig @@ -17,6 +17,11 @@ metadata: dev.uds.keywords: uds,keycloak,authservice dev.uds.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMb2dvcyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTQuNTRpbiIgaGVpZ2h0PSIyNGluIiB2aWV3Qm94PSIwIDAgMTA0Ni42NyAxNzI4Ij48cGF0aCBkPSJNOTczLjI2LDEyNzAuNzFjLTQzLjY2LDU2LjQtMTMyLjYxLDQ3LjI2LTE2OC41LDQwLjgxLTkuNDYtMS42OS0xOC4zMSw1LjU1LTE3LjQzLDE0LjM4LDIuMDMsMjAuNDQsMTUuNzIsNDAuNDUsMTUuNzIsNDAuNDUtOC4xLDMuMDYtMTUuNTUsNS4xMi0yMi4zNCw2LjUxLDIuMDUsOCwzLjk4LDE1Ljk3LDUuODIsMjMuOSw1LjktLjI1LDExLjEtLjcyLDE1LjA4LTEuMSwxNC44OC0xLjQxLDI5LjQxLTUuMDQsNDMuNDItMTAuODQtMTIuNTktMTEuNC0xOS4xOS0yMy40OC0xOS42My0yNC4yOGwtMTIuMjMtMjIuNzZjLTIuOTEtNS40MSwyLjM0LTExLjU3LDguMTQtOS41N2wyNC40NCw4LjQyYzE0LjM4LDQuOTcsNTEuNTMsMTQuNjIsODUuNjctMi43NiwyNi44Ny0xMy42OSw0MC4yNC0zNy43Nyw1My4xNS02MS4wNiwxLjUzLTIuNzYsMi45OS01LjU1LDQuMzktOC4zNi01LjEzLDIuNS0xMC4zNyw0LjU1LTE1LjY5LDYuMjVaTTQ1NS41NSwxNDgyLjdjLTIuNzIsOS4xLTcuMzEsMTkuNTYtMTQuOTYsMzAuNmwtMi44LDQuOTVjLS4yNS40NS0uNDMuOTQtLjY3LDEuMzksMjMuOTYsMjguNzIsNTQuMzQsMzYuMDIsNzUuMjMsMzcuMTVsMi41NC0yMy4wMmMuOS04LjA4LS4xLTE2LjI4LTIuODgtMjMuOS0yNy40Ni0xLjg4LTQ1LjUyLTE1LjA3LTU2LjQ1LTI3LjE4Wk02MTguODEsMTMyNS4wM2MtMzMuMzQsMTIuNC02NS41LDE4LjY5LTk1Ljc4LDE4LjY5LTMwLjUxLDAtNjIuOTMtNi40LTk2LjUzLTE4Ljk5LTQuMy0xLjYxLTguNjItMy4yOS0xMi45Ni01LjExLTEzLjgzLTUuNzgtMjcuODgtMTIuNjUtNDIuMDUtMjAuNDUtMTEuNTIsMTUuMzYtMjAuODQsMzIuNTMtMjcuNCw1MS4xNmwtMzIuMTcsOTEuMzZjLTguNjgsMjQuNjYtMTMuNjksNTAuNDEtMTQuODcsNzYuNTNsLTMuMTEsNjguNTVoMzMuMDdsMy43LTc3Ljg1YzEuMjUtMjYuMTYsNi43Mi01MS45NSwxNi4yLTc2LjM2bDI5LjgxLTc2LjcxYzMuMS04LDEyLjMzLTExLjcxLDIwLjExLTguMS4yNC4xMS40Ny4yMS43MS4zMi43Ny4zNSwxLjUuNzUsMi4yMiwxLjE3LDMuMjIsMS45LDYuNTgsMy41MywxMC4wMiw0LjkyLDAsMC0uMDMuMDUtLjAzLjA1LDAsMCw0MC45NiwyNC4xNywxMTEuMzgsMjIuMDEsNjIuMzEtMS45LDEzNy44OC02My40NSwxNTQuNDctNzcuNi0xNC41MSw4LjA0LTI4LjksMTUuMDgtNDMuMDYsMjEtNC41OSwxLjkyLTkuMTYsMy43MS0xMy43MSw1LjRaTTcwNS44OSwxNTI4LjY1bC01LjI2LDQzLjM4aDI0Ljg4Yy4zNi03MC4wMy0yMS45OS0xMDAuOTQtMjMuMTUtMTAyLjUxLDMuNzUsOC45Niw3LjQ4LDI2LjU0LDMuNTMsNTkuMTNaTTU1NS4zMiwxNDczLjQxYy00LjI3LTQuNzctOS4wNi05LjEzLTE0LjQtMTIuOTEtMTIuNzgtOS4wNi0yNS4xLTE0LjQ2LTMwLjg2LTE2LjczbDE0LjkzLDIyLjIxLDksMTMuNGMyLjk0LDQuMzksNS40OSw5LjAxLDcuNiwxMy44Miw2LjEsMTMuODksOC40NSwyOS4xOSw2Ljc4LDQ0LjI3bC0zLjYxLDMyLjY4LTEuODYsMTYuODUtMS44NiwxNi45aDMzLjI0bDMuMjctNjcuNTljMS4xMS0yMi45Mi02LjczLTQ1LjEzLTIxLjQ1LTYyLjA0LS4yNS0uMjktLjUyLS41OC0uNzgtLjg2Wk02NDYuMDgsOTEzLjc5Yy0xOC4xNywyMy4zOS0zMy4yNyw1MS43Ni00My40LDgzLjc2LTcuMzIsMjMuMTEtMTEuNDQsNDYuMTctMTIuNjQsNjguMzQtLjM4LDcuMDktLjQ0LDE0LjA4LS4yMywyMC45Nyw3LjI3LDMuMjQsMTMuODIsNi44NiwxOS43MiwxMC42My0xLjE3LTEwLjI4LTEuNzMtMjAuODMtMS42OC0zMS42LjE4LTM1LjAzLDYuNzgtNzIuMiwxOS42Mi0xMDguNjcsNS4zMi0xNS4xMSwxMS41OC0yOS42MywxOC42MS00My40M1pNNDAzLjM3LDExODUuOXMtLjA2LjAyLS4wOC4wMmMtMTMuNDgsMTgtMzAuNTgsMzEuMDEtNTAuNjMsMzguMDctOC42NywzLjA1LTE3LjYxLDQuODYtMjYuNzIsNS41Miw0Ljg5LDMuNjYsOS45Niw3LjM1LDE1LjIzLDExLjA0LDcuOSw1LjUzLDE1LjYxLDEwLjYyLDIzLjEzLDE1LjM0LDUuMSwzLjIsMTAuMTEsNi4yLDE1LjAzLDkuMDUsNS4yMywzLjAyLDEwLjM2LDUuODUsMTUuMzksOC41LDIuMTUsMS4xMyw0LjI4LDIuMjMsNi4zOSwzLjMtLjk2LTIuMjQtMS44Mi00LjQ0LTIuNjItNi42MS0yLjI4LTYuMTgtMy45NC0xMi4wOC01LjExLTE3LjY5LTEuNDYtNy4wMS0yLjE2LTEzLjU2LTIuMjgtMTkuNTktLjYtMjkuNjMsMTIuMjgtNDYuOTMsMTIuMjgtNDYuOTNoLjAxWk00MTcuMzgsOTU3LjIyYzEyLjg0LDM2LjQ3LDE5LjQ0LDczLjY0LDE5LjYyLDEwOC42Ny4wNSwxMC44MS0uNTEsMjEuNDEtMS43LDMxLjczLDYuMjctNC4wMywxMy4yNy03Ljg5LDIxLjEtMTEuMywxLjUyLTYuNjEsMi43MS0xMy40MiwzLjUtMjAuNDMsNC43MS00MS42Ny0zLjQ4LTg5Ljg0LTI1Ljk0LTEzNi4xNS0yOS40My02MC42Ni03Ni41NC0xMDQuMDQtMTI0LjY1LTEyMC45Nyw1LjMzLDMuNDksMTAuNjMsNy4zNCwxNS44OSwxMS41NSwzOS40NywzMS42MSw3Mi4yMSw4MC4yNCw5Mi4xNywxMzYuOVpNNzM0LjE4LDc4Ni4yNWMtMy4zNS0uNjQtNi41NS0xLjM0LTkuNjYtMi4wOCwwLDAsMCwwLDAsMC01LjI0LDMuNzEtMTAuNCw3LTE1LjUsOS45Ny0yOS45OCwxNy40Ny01Ny4yNywyMi43MS03OS4xMiwyMi43MWgtLjk1YzMuNCwzLjUyLDYuMjYsNi4zMSw4LjQ4LDguNCwyLjk1LDIuNzgsNC43Miw0LjMsNC43OCw0LjM1bDEyLjQ2LDEwLjU0YzIwLjc4LTMuNjksNDQuNTctMTIuNTIsNjkuODUtMzAuNDZ2LjAybDEyLjgyLTkuMTFjNS43NS00LjA3LDMuNzYtMTMuMDItMy4xNi0xNC4zNFpNMzg0LjEyLDc2Ni4wNWMtNC4zNC0xMS40Ny02LjkxLTIyLjE3LTguNC0zMSwwLS4wMi0uMDItLjA1LS4wMi0uMDUsMCwwLTQuMjcsNjEuNzIsNDEuMDQsMTA4LjMsOS40Nyw5LjA5LDIwLjM1LDE3LjY4LDMyLjgxLDI1LjIxLDMuNzksMi4zLDcuNjYsNC40NCwxMS41OSw2LjQ0LDI3LjU1LDE0LjA0LDU4LjU1LDIxLjA3LDkyLjc3LDIxLjA3LDI1LjUxLDAsNTIuODMtMy45Miw4MS44MS0xMS43NWwxNi4zMy00LjQzYzYuMjEtMS42OSw3Ljk4LTkuNjQsMy4wNi0xMy43OWwtMTEuMjQtOS41LTguMTQsMi4yMWMtMy44MiwxLjAzLTcuNjEsMS45OS0xMS4zNywyLjg4LTI0Ljc4LDUuOS00OC4yOSw4Ljg3LTcwLjQ0LDguODctMzQuMjEsMC02NS4yMS03LjAzLTkyLjc2LTIxLjA3LTMuOTMtMi03LjgtNC4xNC0xMS41OS02LjQ0LTEyLjQ2LTcuNTMtMjMuMzQtMTYuMTItMzIuODEtMjUuMjEtMy4wNS0zLjE0LTUuODYtNi4zNC04LjQ5LTkuNTgtOS45NS0xMi4yMS0xNy4wNC0yNC45NC0yMi4xLTM3LjAzLS43Mi0xLjcyLTEuNC0zLjQzLTIuMDQtNS4xMVpNMzc0LjY5LDU1Ni4wNGMtLjAzLS41MiwwLTEuMDUtLjAzLTEuNTgtLjA2LTEuMzctLjA3LTIuNzUtLjA3LTQuMTMsMC0xLjAyLDAtMi4wMy4wMy0zLjA1LjA3LTEuODguMi0zLjc3LjM4LTUuNjYuMDQtLjQzLjA0LS44NS4wOC0xLjI3bDExLjA3LTEwMS41NWMxLjMzLTEyLjI0LDIuOC0yNC40OCw0LjMzLTM2LjcyLjEyLS45OS4yMy0xLjk3LjM1LTIuOTYuODktNy4wNCwxLjktMTQuMDgsMi44NS0yMS4xMi41MS0zLjc3LDEtNy41NCwxLjUzLTExLjMxLjM4LTIuNjguNzItNS4zNywxLjEtOC4wNS4wNS0uMzYuMS0uNzMuMTUtMS4wOSwwLDAsMCwwLDAtLjAxLS4yNi4wNi0uNTMuMTMtLjc5LjE5LTQuNjksMS4wNC05LjQ1LDIuMTUtMTQuMjgsMy4zNi0uNTEuMTMtMS4wMy4yNi0xLjU0LjM5LTQuOSwxLjI0LTkuODcsMi41NS0xNC44OSwzLjk3LS4zOS4xMS0uNzguMjMtMS4xNy4zNC01LjIsMS40OC0xMC40NSwzLjA1LTE1Ljc2LDQuNzUtLjA4LjAzLS4xNy4wNi0uMjYuMDgtNS4zMSwxLjctMTAuNjcsMy41MS0xNi4wNiw1LjQzLS4yMy4wOC0uNDUuMTUtLjY3LjIzaDBjLjE0LDIuNTEuMzIsNS40MS41OCw4LjY3LDIuNDYsMzEuNjksMTEuMzIsOTcuNjcsNDMuMDcsMTcxLjA5WiIgZmlsbD0iIzFmZGZmZiIvPjxwYXRoIGQ9Ik00MjguNzcsMTYzMy4wNmgyOS4xOWw2Ljc0LTE5LjQ4Yy44NC0yLjQzLDQuMjctMi40Myw1LjExLDBsNi43NCwxOS40OGgyNy4zNmwzLjIyLTI5LjE1aC4wMXYtLjA1cy03Ny42MiwwLTc3LjYyLDBsLS43NSwyOS4yWk03ODIuMTEsMTYwNS43MmgtODUuNTZsLTMuMzEsMjcuMzNoMzAuODVsNi43NC0xOS40OGMuODQtMi40Myw0LjI3LTIuNDMsNS4xLDBsNi43NCwxOS40OGg0MC44N2MtLjI4LTguNTgtLjY2LTE1LjUyLTEuNDMtMjcuMzNaTTM2OC4xMSwxNjIwLjQ2aC03NS43MmwtMS43NCwzOC4zOC0uMyw2LjY2aDM3LjM2bDExLjM3LTMyLjg2Yy44NC0yLjQzLDQuMjctMi40Myw1LjExLDBsMTEuMzcsMzIuODZoMzguMjZ2LTQ1LjA0aC0yNS43Wk02NDYuOTUsMTYzNy41OWgtMTA5LjYzbC0xLjM2LDEyLjMyLTEuODYsMTYuODQtMy4wNCwyNy41NWg0OC4xNWwxMi4zNi0zNS43M2MuODQtMi40Myw0LjI3LTIuNDMsNS4xMSwwbDEyLjM2LDM1LjczaDQyLjc5bDEuOTUtMTYuMSwxLjM5LTExLjQ0aDBzMy41NC0yOS4xNywzLjU0LTI5LjE3aC0xMS43NlpNNTIyLjQzLDE3NS43OGwxMC42LTIuMjNjOC4xMi0xLjcyLDEzLjI1LTkuNzMsMTEuNDMtMTcuODMtMy44LTE2LjktNy44LTMzLjc1LTExLjk3LTUwLjU3bC01LjY1LTIyLjdjLTMuNTgtMTUuOTQtNy40NC0yOS0xMS4zNy0zOS43NS0uOTMtMi41My0xLjg2LTQuOTMtMi43OS03LjItMi43MywyLjA2LTYuOTgsNi4zNC0xMS45LDE1LjA1LTYuMjEsMTAuOTktMTMuNDksMjkuMDQtMjAuMTQsNTguNjRsLS4wOS4zNy01LjY1LDIyLjdjLS4zMSwxLjI0LS41OSwyLjQ4LS44OSwzLjcyLDEzLjE4LDE1LjQ4LDI5LjMzLDI4Ljc3LDQ4LjQxLDM5LjhaTTQ1MC41NCwzMTQuNTNjLjQzLjQuODIuODEsMS4yNiwxLjIxLDUuNDksNC45NCwxMS4zMiw5LjU1LDE3LjQ0LDEzLjg3LDcuOTYsNS42MywxNi40MiwxMC43NSwyNS40MSwxNS4zMiwyNS4yNSwxMi44MSw1NC41OSwyMS40Myw4Ny44NiwyNS44Ni0xLjA0LTguMDUtMi4xMy0xNi4wOS0zLjI2LTI0LjEyLS44LTUuNy0xLjY0LTExLjM4LTIuNDctMTcuMDctLjg0LTUuNy0xLjY3LTExLjQxLTIuNTUtMTcuMTEtMS44NC0xMS44OC0zLjc1LTIzLjc1LTUuNzctMzUuNi0xLjU4LTkuMjctNy41MS0xNy4xOC0xNS45LTIxLjQyLTMxLjAxLTE1LjYyLTQ4Ljg4LTM3LjUxLTQ4Ljg4LTM3LjUxaC4wM2MtMTUuNDItOC41My0yOS40My0xOC4yOC00MS45OS0yOS4yNC04LjQzLDM3LjktMTUuOTMsNzYuMDgtMjIuNDcsMTE0LjQyLDMuNTIsMy44Nyw3LjI3LDcuNjgsMTEuMzEsMTEuMzlaTTQ2OC43OCw2MTUuNjFjMS43LjA0LDMuMzguMDksNS4xMi4wOSwyOS45NywwLDUzLjM1LTUuNTksNzEuNDUtMTMuNTQsNC41My0xLjk5LDMuODgtOC42NC0uOTMtOS43NS00OS43Mi0xMS41Mi03OC42OS0zNC40NS05MC42LTQ1Ljg0LTE1LjMxLTcuNDMtMjkuNTYtMTUuOTUtNDIuNzItMjUuNDlsLTIuNSwyMi45Yy0yLjMzLDIxLjM2LDYuODQsNDIuMjUsMjMuOTUsNTQuNTEsMTAuNSw3LjUyLDIyLjYzLDEzLjIxLDM2LjIzLDE3LjExWk01OTkuMDcsNTM2LjdjLjctNS43Ny43Ni0xMS42Ny4xMi0xNy42bC02LjExLTU2LjAxYy0xLjM4LTEyLjY1LTEwLjcyLTIzLjAzLTIzLjItMjUuNi03MC4zMS0xNC40Ni0xMDEuNTItNTQuNDEtMTAxLjUyLTU0LjQxbC4wNy0uMDdjLTEzLjU4LTcuMzEtMjYuMjYtMTUuNjMtMzcuOTMtMjUuMDgtNC4xMiwyOC4xNC03Ljc3LDU2LjMzLTEwLjg0LDg0LjQ5bC0yLjYyLDI0LjA0YzIxLjY5LDIwLjQxLDQ4LjMyLDM2Ljc0LDc5LjU1LDQ4LjU1LDMwLjAyLDExLjM1LDY0LjM0LDE4LjU3LDEwMi40NywyMS42N1oiIGZpbGw9IiNlYjIxMjYiLz48cGF0aCBkPSJNOTE1LjExLDEyNzIuOTVjLTcuMTQtMS4xOS0xNC41My0yLjQtMjMuNzEtMy4yMi01Ljg3LS41Mi01OC41Ni00LjU2LTEwMy41NywxNC4wMi0xMS41Niw0Ljc3LTIxLjk1LDEwLjg1LTMxLjMsMTcuNjgsNS4xNSw5Ljg0LDkuNDgsMjAuMTksMTIuODQsMzEuMTMsNC4xMiwxMy40Miw3Ljg3LDI2Ljg4LDExLjMyLDQwLjMsNi43OS0xLjM4LDE0LjI0LTMuNDQsMjIuMzQtNi41MSwwLDAtMTMuNjktMjAuMDItMTUuNzItNDAuNDUtLjg4LTguODMsNy45Ny0xNi4wNywxNy40My0xNC4zOCwzNS45LDYuNDUsMTI0Ljg1LDE1LjYsMTY4LjUtNDAuODEtMy40MywxLjEtNi44OCwyLjA4LTEwLjM5LDIuODQtMTkuMDcsNC4xNC0zMi4zNiwxLjk1LTQ3Ljc1LS42Wk00MzcuMTEsMTUxOS42NWMtMy43LDcuMS01LjgyLDE1LTYuMDIsMjNsLS43MSwyNy41MWg4MC40OGwxLjQ4LTEzLjM2Yy0yMC44OS0xLjEzLTUxLjI3LTguNDMtNzUuMjMtMzcuMTVaTTc1Ny4zOSwxNDIxLjIzYy0uNjYtMy4xMS0xLjM0LTYuMjMtMi4wNC05LjM1LTEuMzItNS45Ny0yLjcyLTExLjk2LTQuMTYtMTcuOTYtMS41Ni02LjQ3LTMuMTktMTIuOTQtNC45LTE5LjQyLTIuODMtMTAuNy01Ljg2LTIxLjQxLTkuMTMtMzIuMDQtMS44Ni02LjA0LTQuMTYtMTEuODMtNi43MS0xNy40OC0yLjQ2LTUuNDUtNS4xOS0xMC43NS04LjI5LTE1LjgzLTIuOTYtNC44Ni02LjI2LTkuNTEtOS44LTE0LjAzLTMuMjctNC4xNy02LjctOC4yMy0xMC40NS0xMi4xLTguODEsNS41OC0xNy41OSwxMC43Ny0yNi4zMywxNS42MS0xNi41OCwxNC4xNS05Mi4xNSw3NS43LTE1NC40Nyw3Ny42LTcwLjQxLDIuMTYtMTExLjM4LTIyLjAxLTExMS4zOC0yMi4wMSwwLDAsLjAzLS4wNC4wMy0uMDUtMy40NC0xLjM5LTYuOC0zLjAyLTEwLjAyLTQuOTItLjcyLS40Mi0xLjQ1LS44Mi0yLjIyLTEuMTctLjI0LS4xMS0uNDctLjIxLS43MS0uMzItNy43OC0zLjYxLTE3LjAxLjEtMjAuMTEsOC4xbC0yOS44MSw3Ni43MWMtOS40OCwyNC40MS0xNC45Niw1MC4yLTE2LjIsNzYuMzZsLTMuNyw3Ny44NWg2OS4yN2wuNDMtMTYuNjEuNzMtMjguMzdjLjM2LTEzLjk1LDQuMTUtMjcuNzcsMTAuOTYtMzkuOTVsOC4yNi0xNC43OWMxLjQtMi40OCwxNC44NC0yNS41NSwzNi42NS0zNC44OC43Ni0uMzMsMS41NC0uMzksMi4yOS0uMjcsMS44OS4zLDMuNDksMS44OCwzLjU4LDMuOTkuMjUsNS42Mi0uMTMsMTUuMS0zLjYyLDI2LjgxLDEwLjkzLDEyLjExLDI4Ljk5LDI1LjMsNTYuNDUsMjcuMTgtLjM4LTEuMDUtLjgtMi4xLTEuMjUtMy4xMmwtMy43OS04LjYyYy02LjU0LTE1LjI3LTEwLjIzLTI4LjUtMTIuMTktMzkuNTYtMS45Ny0xMS4xMi0yLjE5LTIwLjA0LTEuOC0yNi41OS4wOS0xLjQ4Ljg1LTIuNiwxLjg5LTMuMjcsMS44MS0xLjE3LDQuNDUtLjk3LDUuOSwxLjE3bDkuMzIsMTMuODdjNS43NiwyLjI3LDE4LjA4LDcuNjcsMzAuODYsMTYuNzMsNS4zNCwzLjc4LDEwLjE0LDguMTQsMTQuNCwxMi45MS4yNi4yOS41Mi41Ny43OC44NiwxNC43MiwxNi45MSwyMi41NSwzOS4xMywyMS40NSw2Mi4wNGwtMy4yNyw2Ny41OWg4OC41MWwxLjgyLTE1LjAzLDIuMDQtMTYuODUuMy0yLjQ3LDMuNDgtMjguNzJjMS45Ni0xNi4xOCw1LjUzLTMyLjE0LDEwLjg2LTQ3LjU0LDQuMDQtMTEuNjcsOS4zNS0yMy45NiwxNS43Ny0zMi4xMywwLDAsMCwwLDAsMGguMDNzMi42NCwyLjA2LDUuMjgsOC4zNWMxLjE2LDEuNTYsMjMuNTEsMzIuNDgsMjMuMTUsMTAyLjUxaDUzLjk5Yy0zLjQ0LTM5LjEyLTkuNTYtODkuNDEtMjAuNDEtMTQyLjU4LS41Ni0yLjczLTEuMTItNS40Ny0xLjctOC4yMVpNMzk2LjQ2LDM1Ny41NmMtLjA1LjM2LS4xLjczLS4xNSwxLjA5LjA1LS4zNy4xMS0uNzMuMTctMS4xLDAsMC0uMDEsMC0uMDIsMFpNMzg2LjE3LDQzOC44YzEuMzMtMTIuMjQsMi43OS0yNC40OCw0LjMyLTM2LjcyLTEuNTMsMTIuMjQtMywyNC40OC00LjMzLDM2LjcybC0xMS4wNywxMDEuNTVjLS4wNS40Mi0uMDQuODUtLjA4LDEuMjcuMDQtLjQzLjA1LS44NS4xLTEuMjdsMTEuMDctMTAxLjU1Wk03MjQuNTEsNzg0LjE3czAsMCwwLDBoLjAxczAsMC0uMDIsMFpNMzkxLjA4LDEyMzIuODRjLjEyLDYuMDMuODIsMTIuNTgsMi4yOCwxOS41OSwxLjE3LDUuNjEsMi44MywxMS41MSw1LjExLDE3LjY5LjgsMi4xNywxLjY3LDQuMzcsMi42Miw2LjYxLDUyLjc5LDI2LjY3LDk0LjA1LDMzLjI5LDEyMS45MiwzMy4yOSwzMi40OSwwLDgzLjE5LTguOTksMTQ5LjE0LTQ4LjI5Ljc5LS40NywxLjU3LS45MywyLjM3LTEuNDEsMS41Ny0uOTUsMy4xNi0xLjkzLDQuNzUtMi45MiwzLjU1LTIuMTksNy4xMi00LjQ1LDEwLjc2LTYuODIsNC44My0zLjE2LDkuNzQtNi40NywxNC43Mi05Ljk1LjA0LS4wMy4wOS0uMDYuMTMtLjA5LDIuNjUtMS44Niw1LjI1LTMuNzEsNy44LTUuNTYsMi41LTEuODEsNC45NS0zLjYyLDcuMzUtNS40Mi02LjgxLS40Mi0xMy41Mi0xLjQ2LTIwLjExLTMuMi0yLjYtLjY5LTUuMTktMS40Ni03Ljc1LTIuMzYtMjcuNTgtOS43MS00OS41Ny0zMC42NS02NC4yMy02MC40MS0zLjQ5LTUuOTQtMTAuNC0xNi4xNS0yMS41Mi0yNi4yMy0zLjcyLTMuMzctNy42Mi02LjQ1LTExLjY3LTkuMjYtNi4zMS00LjQtMTMuMDEtOC4xMy0yMC4xLTExLjE3LTE1LjYxLTYuNy0zMy4wNC0xMC4wOS01Mi4xNy0xMC4wOS0zMy4zNSwwLTYxLjU5LDEwLjI3LTgzLjk0LDMwLjUzLTEyLjI3LDExLjEyLTE5LjQyLDIyLjQxLTIyLjQ5LDI3LjkyLS40MS44MS0uODUsMS41OS0xLjI4LDIuMzktLjMzLjY2LS41MiwxLjA3LS41MywxLjA5bC0uMDUtLjAyYy0zLjMyLDYuMTQtNi45NiwxMS44OS0xMC45MiwxNy4xOC4wMywwLC4wNi0uMDEuMDgtLjAyaC0uMDFzLTEyLjg4LDE3LjMxLTEyLjI4LDQ2Ljk0Wk01NDQuNDcsMTI1OC41OGMzLjM3LTExLjIsMTEuMDctMjYuMjIsMjguMTUtMjYuMjEsMTUuNCwwLDIyLjIyLDExLjM4LDI1LjE1LDE5LjY1LDEuMTIsMy4xNi0xLjA5LDYuNjItMy41Nyw1LjU5di0uMDJjLTkuMjEtMy44NS0yOC4xNi04Ljc1LTQ1LjQsNS45My0yLjQ0LDIuMDgtNS40My0xLjMzLTQuMzMtNC45NVpNNDQ2Ljg1LDEyNTIuMDNjMi45My04LjI3LDkuNzYtMTkuNjUsMjUuMTUtMTkuNjUsMTcuMDgsMCwyNC43OCwxNS4wMSwyOC4xNSwyNi4yMSwxLjA5LDMuNjItMS44OSw3LjAzLTQuMzMsNC45NS0xNy4yNC0xNC42OC0zNi4xOS05Ljc4LTQ1LjQtNS45M3YuMDJjLTIuNDgsMS4wMy00LjctMi40My0zLjU4LTUuNTlaTTY5OS42MSwxMTE4LjU2Yy0yMi43LDAtNDMuMDEtMTAuMTMtNTYuNzUtMjYuMDguODIsNy40OCwxLjk3LDE0LjgsMy41NCwyMS44NywyLjcyLDEyLjI4LDYuNSwyMy4zNiwxMS4yLDMzLjE0LDIuMjcsMy45MywzLjUzLDYuNjIsMy45MSw3LjQ1LDEwLjUyLDE4LjQxLDI0Ljc2LDMxLjI1LDQxLjg4LDM3LjI3LDIyLjc2LDguMDEsNDkuMSwzLjQ3LDc1LjY2LTEyLjY3LDUuODYtMy41NiwxMS43Mi03LjY2LDE3LjU2LTEyLjM0LDIuMTEtMS42OSw0LjE5LTMuNDQsNi4yNS01LjI0LjExLS4xLjIyLS4xOS4zNC0uMjksNi40Mi01LjYzLDEyLjYyLTExLjgsMTguNTctMTguNDUsMjMuNDMtMjYuMTksNDIuOTQtNTkuOSw1Ni4yOS05Ny44Mi44NC0yLjM5LDEuNjMtNC43OSwyLjQxLTcuMTksNi40NC0xOS42OCwxMC44OS0zOS40NCwxMy4yOC01OC43MywzLjUtMjguMjUsMi42MS01NS41MS0yLjgzLTgwLjAyLTguOTctNDAuNDQtMjkuMi02OC4wOS01Ni45OC03Ny44Ni03LjM3LTIuNTktMTUuMS0zLjg3LTIzLjA5LTMuODctMjIuMTcsMC00Ni4zNSw5Ljg1LTcwLjEyLDI4Ljg5LS41OC40Ni0xLjE0Ljk2LTEuNzEsMS40My0zMy44NiwyNy43Ny02Mi4xNCw3MC40LTc5Ljc0LDEyMC4zNy0xLjg1LDUuMjYtMy41MywxMC41My01LjEsMTUuOCwxMi42MS05LjY1LDI4LjMzLTE1LjQ0LDQ1LjQ0LTE1LjQ0LDcuMDEsMCwxMy43NywxLjAzLDIwLjIxLDIuODMtMTIuNiw2LjE4LTIxLjMsMTkuMS0yMS4zLDM0LjA4LDAsMjAuOTgsMTcuMDEsMzcuOTgsMzgsMzcuOTgsMTUuNDEsMCwyOC42NC05LjE4LDM0LjYxLTIyLjM2LDIuMjEsNy4wNiwzLjQsMTQuNTcsMy40LDIyLjM2cy0xLjE4LDE1LjItMy4zNiwyMi4yMmMtOS40NywzMC41MS0zNy45Myw1Mi42Ny03MS41Nyw1Mi42N1pNMzYyLjQ3LDExODAuMjRjMTYuOTctMTMuOTMsMjkuNDUtMzYuNTEsMzUuOTYtNjUuODcsMi41NC0xMS40NCw0LjA2LTIzLjQ5LDQuNjMtMzUuOTQtMTIuNTMsMjMuODUtMzcuNTIsNDAuMTQtNjYuMzQsNDAuMTQtMzMuNjQsMC02Mi4xLTIyLjE2LTcxLjU3LTUyLjY3LTIuMTgtNy4wMi0zLjM1LTE0LjQ4LTMuMzUtMjIuMjIsMC00MS4zNiwzMy41NS03NC44OSw3NC45My03NC44OSw3LjAyLDAsMTMuNzgsMS4wMywyMC4yMiwyLjg0LTEyLjYsNi4xOC0yMS4yOSwxOS4xLTIxLjI5LDM0LjA3LDAsMjAuOTgsMTcuMDEsMzcuOTgsMzgsMzcuOTgsMTAuNzIsMCwyMC4zOS00LjQ1LDI3LjMtMTEuNTktMS42MS0xMi4xOS00LjAyLTI0LjU2LTcuMjQtMzYuOTctMi4xOS04LjQzLTQuNzQtMTYuODgtNy42Ny0yNS4zLS4xNi0uNDYtLjMtLjkzLS40Ni0xLjM5LTE3LjktNTAuODItNDYuODMtOTQuMDgtODEuNDYtMTIxLjgxLTMyLjM0LTI1LjktNjUuNDQtMzQuNzktOTMuMjItMjUtNy4yMSwyLjU0LTEzLjksNi4zLTIwLjAyLDExLjE2LTE3LjQ4LDEzLjg1LTMwLjMyLDM2Ljc3LTM2Ljk2LDY2LjcxLTUuMDIsMjIuNjQtNi4xMyw0Ny42Mi0zLjUzLDczLjU1LDIuMzgsMjMuNjcsNy44NSw0OC4xNCwxNi4zOSw3Mi4zOWgwYzEzLjYxLDM4LjYzLDMzLjYxLDcyLjg4LDU3LjYzLDk5LjI4LDUuNjQsNi4yLDExLjUsMTEuOTksMTcuNTcsMTcuMjguMzMuMjkuNjcuNTUsMSwuODQsMS43NCwxLjUsMy40OSwyLjk5LDUuMjYsNC40MSw2Ljg3LDUuNSwxMy43NiwxMC4xOCwyMC42NCwxNC4xMywyNS41MiwxNC42NSw1MC43LDE4LjU4LDcyLjU4LDEwLjg4LDcuNi0yLjY3LDE0LjYyLTYuNzQsMjEuMDItMTEuOTlaTTEwMTIuMTQsNDMxLjgxYy0uMTctMi40MS0uOTMtNC42NC0yLjA3LTYuNjMtMi40NS00LjI4LTYuODMtNy4zLTEyLjAyLTcuNzItMzQuMTItMi43Ny03My4zNSwyLjYzLTExNy4wMiwxNi4xNC0zLjA0Ljk0LTYuMDYsMS45Mi05LjA2LDIuOTEtNS44NiwxLjkzLTExLjYxLDMuOTYtMTcuMjYsNi4wNC0yLjQ1LjktNC44NywxLjgyLTcuMjgsMi43NC0zLjMzLDEuMjgtNi42MywyLjU4LTkuODcsMy44OS0yMyw5LjMzLTQzLjU3LDE5LjM0LTYwLjEsMjguMDctMy43MywxLjk3LTcuOC0xLjk3LTUuOTUtNS43NiwyLjU3LTUuMjcsNS4yNC05Ljk2LDcuOTEtMTQuMjMsMTQuNjctMjMuNDUsMjkuNDgtMzIuNDYsMzAuMTMtMzIuODMtMTEuOTYtOS4wOS0yNC42NC0xNy4wOS0zNy44Ni0yMy44MS0yLjQ5LTEuMjYtNC45Ny0yLjQ3LTcuNDUtMy42OC00My4zOC0yMS4wOS04Ni4zMi0zMy43OC0xMjMuNzUtNDEuMzUtMS4wNC0uMjEtMi4wNy0uNDEtMy4xLS42Miw0LjA2LDI3LjkyLDcuNjYsNTUuODcsMTAuNyw4My44MWwxMS4wNywxMDEuNTRjMy43LDMzLjkyLTExLjMzLDY3LjA4LTM5LjIsODYuNTQtMjcuMywxOS4wNi02MS44OSwyOC43Mi0xMDIuODMsMjguNzJoMGMtNDEuNjYsMC03Ni43My0xMC4wMS0xMDQuMjItMjkuNzEtMjMuMTYtMTYuNi0zNy4wNy00My4xMS0zOC4yNS03MS40My4wMi41MiwwLDEuMDUuMDMsMS41OC0zMS43NS03My40Mi00MC42MS0xMzkuNC00My4wNy0xNzEuMDktLjI1LTMuMjYtLjQ0LTYuMTYtLjU4LTguNjYtMTguNTksNi42NS0zNy42MiwxNC42Ni01Ni42NywyNC4zNS0xMy4xNCw2LjY4LTI1Ljc1LDE0LjYyLTM3LjY1LDIzLjY0LjEuMDQuMjEuMDguMzEuMTMuMDUuMDMsMS43NCwxLjA0LDQuNDcsMy4xNyw1LjYsNC4zNywxNS42OCwxMy42NiwyNS43MiwyOS43LDIuNjcsNC4yNyw1LjM0LDguOTYsNy45MSwxNC4yMywxLjg1LDMuNzktMi4yMyw3LjczLTUuOTYsNS43Ni0xNS45NC04LjQyLTM1LjY0LTE4LjAyLTU3LjY1LTI3LjA2LS45NS0uMzktMS45LS43OS0yLjg3LTEuMTgtNS41OC0yLjI2LTExLjMxLTQuNDctMTcuMTYtNi42Mi01LjY2LTIuMDgtMTEuNDItNC4xMS0xNy4yOC02LjA0LTIuODUtLjk0LTUuNzMtMS44Ni04LjYyLTIuNzYtNDMuNjYtMTMuNTEtODIuOS0xOC45MS0xMTcuMDItMTYuMTQtNi4xMy40OS0xMS4xNCw0LjYtMTMuMTUsMTAuMTUtLjQ4LDEuMzMtLjg0LDIuNzItLjk0LDQuMTktMS4zMSwxOS4zNi0xLjMyLDQ2LjY1LDIuOTMsNzcuMjMsNC44MSwzNC42MSwxNC4xOCw2OC40NSwyNy44MywxMDAuNTgsNy4wOCwxNi42NywxNS40LDMyLjg3LDI0Ljc5LDQ4LjU5LDQuNjIsNy43NSw5LjUxLDE1LjM4LDE0LjY3LDIyLjg3LDQuODksNy4xLDEwLDE0LjA5LDE1LjM3LDIwLjk0LjAzLjA0LjA3LjA5LjEuMTMsMy41NSw0LjUyLDcuMTgsOS4wMSwxMC45MywxMy40MiwyLjM1LDIuNzYuODQsNy4wNS0yLjc0LDcuNjktMi42NC40Ny01Ljg0Ljg3LTkuMzUuOTgtMS41LDQ0LjQzLjU2LDkzLjMyLDguNDMsMTQ1LjMsMTMuOTQtNDAuMDcsMzkuMDQtNjguMDUsNzIuMjYtNzkuNzQsMzQuMjQtMTIuMDUsNzIuNTktNS4yOCwxMDkuNjEsMTguOTYsNDguMSwxNi45Myw5NS4yMSw2MC4zMSwxMjQuNjUsMTIwLjk3LDIyLjQ3LDQ2LjMxLDMwLjY1LDk0LjQ4LDI1Ljk0LDEzNi4xNS0uNzksNy4wMS0xLjk4LDEzLjgzLTMuNSwyMC40MywxNy43OS03Ljc0LDM5LjY3LTEzLjE4LDY2LjA4LTEzLjE5aC4wNGMyNywwLDQ5LjI3LDUuNyw2Ny4yNywxMy43Mi0uMjEtNi44OC0uMTUtMTMuODcuMjMtMjAuOTcsMS4yLTIyLjE3LDUuMzItNDUuMjMsMTIuNjQtNjguMzQsMTAuMTMtMzIsMjUuMjQtNjAuMzgsNDMuNC04My43NiwxOS4zMi0zNy45NCw0NC42Mi03MC4yOSw3My41Ni05My40Nyw0MS43Ni0zMy40NSw4Ni4zMy00NC4yOCwxMjUuNDktMzAuNDksMzMuODgsMTEuOTMsNTkuMzUsNDAuNzYsNzMuMTEsODIuMTMsOC4xNy01Mi44OCwxMC4zMi0xMDIuNjEsOC44LTE0Ny43Mi0zLjI5LS4xMy02LjI4LS41Mi04Ljc3LS45Ny0zLjU4LS42NS01LjA5LTQuOTMtMi43NC03LjY5LDMuNTktNC4yMyw3LjA5LTguNTEsMTAuNDktMTIuODQtLjAzLS40NC0uMDUtLjg4LS4wOC0xLjMxbC41Mi43M2M1LjIzLTYuNjcsMTAuMTktMTMuNDcsMTQuOTctMjAuMzcsNS4xNi03LjQ2LDEwLjA2LTE1LjA1LDE0LjY4LTIyLjc3LDkuNTgtMTUuOTcsMTguMDYtMzIuNDQsMjUuMjctNDkuMzksMTMuNjUtMzIuMTMsMjMuMDEtNjUuOTcsMjcuODItMTAwLjU4LDQuMjUtMzAuNTgsNC4yNC01Ny44NywyLjkzLTc3LjIzWk0yMDUuNTMsNTI0LjM1bC01Mi44NSw4Ny4zM2MtMi44NCw0LjY4LTkuNTIsNS40LTEzLjM4LDEuNDYtMi41OC0yLjYzLTUuMDItNS4yMi03LjM5LTcuOC01LjEyLTUuNTYtOS43Ny0xMS0xNC0xNi4zMS01LjAxLTYuMjktOS40Mi0xMi4zOS0xMy4yOS0xOC4zLTMzLjE1LTUwLjYtMjcuMTEtODYuOTItMjIuNDMtMTAxLjE1LDEuMjgtMy45LDUuMzgtNi4yOCw5LjUzLTUuNSwxNy44MywzLjMzLDM0Ljk1LDkuMTMsNTAuNCwxNS43MSw1LjM5LDIuMjksMTAuNTYsNC42NywxNS40OSw3LjA5LDUuMzEsMi42MSwxMC4zMyw1LjIzLDE1LDcuODEsMTMuNjksNy41NywyNC40LDE0LjY1LDMwLjYyLDE4Ljk5aDBjMy40OSwyLjQ2LDQuNDgsNy4wNiwyLjMxLDEwLjY3Wk03MzcuMzQsODAwLjU5bC0xMi44Miw5LjExdi0uMDJjLTI1LjI5LDE3Ljk0LTQ5LjA3LDI2Ljc3LTY5Ljg1LDMwLjQ2bC40Ni4zOWM0LjkxLDQuMTUsMy4xNSwxMi4xMS0zLjA3LDEzLjc5bC04LjE4LDIuMjIsMTEuMjQsOS41YzQuOTIsNC4xNiwzLjE1LDEyLjExLTMuMDYsMTMuNzlsLTE2LjMzLDQuNDNjLTI4Ljk4LDcuODMtNTYuMywxMS43NS04MS44MSwxMS43NS0zNC4yMSwwLTY1LjIyLTcuMDQtOTIuNzctMjEuMDctMy45My0yLTcuOC00LjE0LTExLjU5LTYuNDQtMTIuNDYtNy41My0yMy4zNC0xNi4xMi0zMi44MS0yNS4yMS00NS4zMi00Ni41Ny00MS4wNC0xMDguMy00MS4wNC0xMDguMywwLDAsLjAxLjA0LjAyLjA1LS4wMS0uMDgtLjAzLS4xNy0uMDQtLjI0LS43Ny00LjYyLDQuODUtNi45Nyw3Ljc0LTMuODguMjQuMjYuNTEuNDkuNzEuODQsMS44OCwzLjIzLDQuMDUsNi43Niw2LjQ1LDEwLjQ3LDI1Ljc3LDM5Ljc1LDgyLjM0LDEwMi43NywxNzguNDIsOTQuODIsOS4yMS0uNzYsMTguNzUtMi4xMSwyOC42OS00LjI2LTIyLjg4LTEwLjc0LTM5LjQ0LTMxLjY3LTUwLjYyLTUwLjk0LTUuMDMtOC42OC04Ljk3LTE3LjAzLTExLjktMjMuOTUtMS44NS00LjM4LDMuMzktOC4yOCw3LjA5LTUuMywyMC40LDE2LjQ2LDYyLjEsNDEuNTUsMTE0LjM5LDI3LjQ0LDQuOTMtMS4zMyw5Ljk0LTIuOTgsMTUuMDQtNS4wNSwxLjc1LS43MSwzLjUxLTEuNDUsNS4yOS0yLjI1LTEuODctMS4wMy0zLjc3LTIuMTMtNS42Ny0zLjMtMTAuNS03LjA1LTE3LjE0LTE3LjI4LTIxLjM1LTI3LjczLTIuOC02Ljk3LTQuNTQtMTQuMDMtNS41OC0yMC4zMi0uMjktMS43NS4zNy0zLjIxLDEuNDUtNC4xNiwxLjgyLTEuNTgsNC44NC0xLjcyLDYuNjUuNjMsMTEuMTIsMTQuNDcsMzQuMzcsMzMuODcsODEuNjgsNDIuODYsNi45MiwxLjMyLDguOSwxMC4yNywzLjE2LDE0LjM0bC0xMi44Miw5LjFjMy4xMS43NCw2LjMxLDEuNDQsOS42NiwyLjA4LDYuOTIsMS4zMiw4LjksMTAuMjcsMy4xNiwxNC4zNFpNOTQxLjU5LDU3MS4zOWMtMy44OCw1Ljg4LTguMywxMS45NS0xMy4zLDE4LjItNC4yNSw1LjMxLTguODksMTAuNzQtMTQuMDQsMTYuMy0yLjIyLDIuNC00LjUxLDQuODItNi45MSw3LjI2LTMuODYsMy45NC0xMC41NCwzLjIyLTEzLjM5LTEuNDZsLTUyLjg1LTg3LjMzYy0yLjE4LTMuNi0xLjE4LTguMjEsMi4zMS0xMC42NmgwYzYuMTUtNC4zMSwxNi43LTExLjI5LDMwLjE5LTE4Ljc3LDQuNjYtMi41OCw5LjY4LTUuMjIsMTUtNy44NCw0LjkyLTIuNDIsMTAuMDgtNC44MSwxNS40Ny03LjExLDE1LjU2LTYuNjUsMzIuODYtMTIuNTMsNTAuODYtMTUuOSw0LjE1LS43OCw4LjI2LDEuNiw5LjUzLDUuNSw0LjcsMTQuMjksMTAuNzcsNTAuODYtMjIuODYsMTAxLjhaTTUxNS40Nyw0Mi43MWMzLjkzLDEwLjc0LDcuNzksMjMuOCwxMS4zNywzOS43NWw1LjY1LDIyLjdjNC4xOCwxNi44Miw4LjE3LDMzLjY3LDExLjk3LDUwLjU3LDEuODIsOC4xLTMuMzEsMTYuMTEtMTEuNDMsMTcuODNsLTEwLjYsMi4yM2MxNS40OSw4Ljk2LDMyLjkxLDE2LjQ0LDUyLjIyLDIyLjQ0LTQuODEtMjIuMDktOS44OC00NC4xLTE1LjMyLTY1Ljk2bC01Ljc0LTIzLjA3Yy05LjAzLTQwLjE4LTE5LjIxLTU5LjA5LTI2LjMxLTY3LjkzLTQuOS02LjEtOC4zMi03LjQtOC44OC03LjU4aC0yLjU4LDBjLS4zLjEtMS40Mi41Mi0zLjE1LDEuODIuOTMsMi4yOCwxLjg2LDQuNjcsMi43OSw3LjJaTTU1Mi41NSwyNTUuNDdjOC4zOSw0LjI0LDE0LjMyLDEyLjE1LDE1LjksMjEuNDIsMi4wMiwxMS44NSwzLjkzLDIzLjcyLDUuNzcsMzUuNi44OCw1LjcsMS43MSwxMS40LDIuNTUsMTcuMTEuODQsNS42OSwxLjY4LDExLjM4LDIuNDcsMTcuMDcsMS4xMiw4LjAzLDIuMjIsMTYuMDcsMy4yNiwyNC4xMiw3LjU5LDEuMDEsMTUuNCwxLjc4LDIzLjM5LDIuMzUtMS4xMS03Ljk3LTIuMjktMTUuOTMtMy40OC0yMy44OS0uODYtNS43Ni0xLjcyLTExLjUxLTIuNjMtMTcuMjctLjkxLTUuNzctMS44Ni0xMS41My0yLjgyLTE3LjMtMy42NS0yMi4wNy03LjU3LTQ0LjEtMTEuODUtNjYuMDUtMzAuNDYtNy4zMS01Ny42NC0xNy41Mi04MS40My0zMC42OGgtLjAzczE3Ljg4LDIxLjg5LDQ4Ljg4LDM3LjUxWk01NjkuODgsNDM3LjVjMTIuNDgsMi41NiwyMS44MiwxMi45NSwyMy4yLDI1LjZsNi4xMSw1Ni4wMWMuNjUsNS45Mi41OSwxMS44Mi0uMTIsMTcuNiw4LjQ1LjY5LDE3LjExLDEuMTYsMjUuOTQsMS40NGwtMTAuNDQtOTUuN2MtLjgzLTcuNjItMS43OC0xNS4yNC0yLjY5LTIyLjg2LTU1LjcxLTIuODgtMTAzLjYzLTE1LjEzLTE0My40NS0zNi41NmwtLjA3LjA3czMxLjIxLDM5Ljk1LDEwMS41Miw1NC40MVpNNTQ1LjM0LDYwMi4xN2MtMTguMSw3Ljk1LTQxLjQ3LDEzLjU0LTcxLjQ1LDEzLjU0LTEuNzQsMC0zLjQyLS4wNS01LjEyLS4wOSwxNC40Niw0LjE1LDMwLjU4LDYuMjgsNDguMzQsNi4yOCwzNC40NywwLDYyLTcuNjIsODMuNTMtMjIuNjUsNi4wOC00LjI0LDExLjE4LTkuNTMsMTUuMTktMTUuNDktNTEuNTYtMi4zMS05Ny42OS0xMS4xNS0xMzcuNTktMjYuNTQtOC40My0zLjI1LTE2LjU2LTYuODEtMjQuNDQtMTAuNjMsMTEuOTEsMTEuMzksNDAuODksMzQuMzEsOTAuNiw0NS44NCw0LjgxLDEuMTEsNS40Niw3Ljc2LjkzLDkuNzVaIiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTEwMjUuMTYsMTE4Ny45MWwtMTQuNTEsMTYuODdjLTE2Ljc3LDE5LjUyLTM1LjI2LDMxLjU3LTU0Ljk3LDM1Ljg2LTEyLjc2LDIuNzctMjEuMTYsMS4zOC0zNS4wOC0uOTItNy40LTEuMjItMTUuNzktMi42LTI2LjIyLTMuNTMtNC43OS0uNDMtMzYuOTEtMi44OS03My45OCwzLjYxLTcuODcsMS4zOC0xNS45NiwzLjE3LTI0LjA3LDUuNDctNy4xNywyLjAzLTE0LjM0LDQuNDUtMjEuMzcsNy4zNS0xMy42Myw1LjYyLTI1Ljg4LDEyLjY2LTM2Ljg5LDIwLjU1LTIuNTItMy4xNi01LjE2LTYuMjUtNy45Mi05LjI3LDEyLjQxLTguOSwyMy43My0xNy42OSwzMy43Ni0yNS45MiwxNS4xOS0xMi40NiwyNy40My0yMy41NywzNS45Ni0zMS43LDUuOTctMy44MSwxMS45Mi04LjA2LDE3LjgtMTIuNzcsMzkuNDctMzEuNjEsNzIuMjEtODAuMjMsOTIuMTctMTM2LjksOC4xOC0yMy4yMiwxMy44LTQ2LjczLDE2Ljg4LTY5Ljc5LDMwLjE2LTEwMC41MiwzNy4yMS0xOTQuMiwzMy42LTI3My41Mi4wMi0uMDEuMDMtLjAyLjA1LS4wNCwyMS4yOC0yOC42NSwzOC44Ni01OS4yNiw1Mi40My05MS40LDE0LjgtMzUuMDUsMjQuODktNzEuOTYsMzAuMDEtMTA5LjcxLDQuMzktMzIuNDEsNC4zNS01OS43OCwzLjE4LTc5LjI0LTEuMTctMTkuMzEtMy40NS0zMC44NC0zLjY1LTMxLjc3aC0uMDJjLTEuMzQtNi41Ni02LjQzLTExLjcxLTEyLjk3LTEzLjExLTQ1LjA1LTkuNjgtOTguMy01LjE3LTE1OC4yOSwxMy4zOS04LjgsMi43Mi0xNy4zNSw1LjY4LTI1Ljc0LDguNzQtMTcuODktMTUuNi0zNy41Mi0yOC45Ni01OC4zNS0zOS41NS01My45LTI3LjM5LTEwNy42Mi00Mi4zMi0xNTIuNTUtNTAuNC0uOC0uMTQtMS42LS4yOC0yLjQtLjQyLTcuMDgtNDQuMDEtMTUuNDgtODcuODQtMjUuMDEtMTMxLjMyLTQuNzItMjEuNTQtOS42Ni00My4wMS0xNC45Ny02NC4zM2wtNS42LTIyLjUyYy04LjQ5LTM3LjY5LTE5LjctNjUuMjgtMzMuMzEtODIuMDNDNTM5LjM5LDIuNjcsNTI1Ljg0LjA2LDUxOSwwaC0zLjc0Yy02Ljg1LjA2LTIwLjM5LDIuNjgtMzQuMTMsMTkuNTktMTMuNjIsMTYuNzQtMjQuODIsNDQuMzQtMzMuMzEsODIuMDNsLTUuNjEsMjIuNTJjLTE2LjIxLDY1LjEzLTI5LjY4LDEzMS4zNi00MC4zMywxOTcuOTQtNDIuODUsOC40NC05Mi43NywyMy4xMi0xNDIuOCw0OC41NC0yMC43NywxMC41Ni00MC4zNCwyMy44Ni01OC4xOCwzOS40LTguMjYtMy0xNi42OC01LjkyLTI1LjMzLTguNi01OS45OC0xOC41NS0xMTMuMjQtMjMuMDctMTU4LjI4LTEzLjM5LTYuNTUsMS40LTExLjY0LDYuNTYtMTIuOTcsMTMuMTFoMGMtLjI1LDEuMjEtNC4wMywyMC4zLTQuMyw1MS4wOXY3LjA4Yy4xMywxNS4zMywxLjE2LDMzLjE1LDMuODMsNTIuODQsMi42NywxOS43NCw2Ljc0LDM5LjI1LDEyLjEsNTguMzksNC44OSwxNy40NSwxMC44NCwzNC42LDE3LjksNTEuMzIsMTMuNDYsMzEuODksMzAuODgsNjIuMjYsNTEuOTMsOTAuNzItLjQxLDguNzctLjY4LDE3LjcxLS44MSwyNi44Mi0uOTIsNjQuNTIsNS41MywxMzcuMzYsMjUuMzQsMjE0LjksMi4xNiw4LjQ1LDQuNDYsMTYuOTQsNi45NCwyNS40OS40NSw0LjA2Ljk2LDguMTQsMS41OCwxMi4yMywyLjI2LDE1LjA5LDUuNjQsMzAuMzQsMTAuMDgsNDUuNTUsMS44NSw2LjM1LDMuODYsMTIuNyw2LjA5LDE5LjAzLDE5Ljk2LDU2LjY3LDUyLjcsMTA1LjMsOTIuMTcsMTM2LjkxLDcuMDIsNS42MiwxNC4xMiwxMC41OCwyMS4yNiwxNC45MSwxNS4zLDE0LjQxLDQwLjY4LDM2Ljc2LDcyLjgzLDU5LjMyLDcuMDQsNC45NCwxNC4wNiw5LjYyLDIxLjA4LDE0LjEtNS45Miw4LjE3LTExLjMxLDE2Ljc2LTE2LjExLDI1LjczLTUuMzksMTAuMDctMTAuMSwyMC42LTEzLjk2LDMxLjU3bC0zMi4xNyw5MS4zNmMtOS43OCwyNy43Ny0xNS40MSw1Ni43Ny0xNi43NSw4Ni4xOWwtNi42NywxNDYuNzJjMCwuMTksMCwuMzcsMCwuNTZsLS45NywyMS40Yy0uMzUsNy41Myw1LjY4LDEzLjgyLDEzLjIyLDEzLjgyaDE0NS4zOGM3LjMxLDAsMTMuMjMtNS45MiwxMy4yMy0xMy4yMnYtMTUuOTJjLjE2LTEuMDkuMjctMi4xOS4zMy0zLjMxaDcyLjMzbC01LjE0LDQ2LjU3Yy0uODYsNy44Myw1LjI3LDE0LjY3LDEzLjE2LDE0LjY3aDEyLjFzLjA3LDAsLjEsMGMuMDcsMCwuMTMuMDEuMTkuMDFoMTM5LjU5cy4wOC0uMDEuMTEtLjAxYy4wMiwwLC4wNCwwLC4wNiwwaDkuNjMsMHMwLDAsMCwwYy4wMiwwLC4wNCwwLC4wNiwwLDYuNjYtLjAzLDEyLjI3LTUuMDIsMTMuMDgtMTEuNjNsMS4xNC05LjM5Yy4wMi0uMTIuMDYtLjI0LjA4LS4zNmw0LjgzLTM5Ljg1aDExMS42M3MuMDcsMCwuMTEsMGgzLjYyYzcuNDIsMCwxMy4zOC02LjA4LDEzLjIzLTEzLjVsLS4wOC0zLjdjLS4zNS0xNy4zNC0uNi0yNS4wNS0xLjQ2LTM4Ljk5LS40NS04LjA5LTEuMDUtMTcuMjgtMS44Mi0yNy4zNWwtLjc2LTExLjE4aC0uMTRjLTMuMjktMzguNjgtOS4yLTg4LjQ3LTE5Ljc5LTE0MS44OSw0LjMtLjI4LDguMDUtLjYzLDExLjA2LS45MiwyOS4zNC0yLjc4LDU3LjM5LTEyLjUzLDgzLjM4LTI4Ljk5bDE4LjI5LTExLjU5YzQuOC0zLjAzLDMuODgtMTAuMjctMS41Mi0xMi4wMiwxMy41Mi0xLjY3LDI3LjctNS41Myw0MS43OC0xMi43LDM2LjA2LTE4LjM2LDUzLjM5LTQ5LjYyLDY3LjMzLTc0Ljc0LDEyLjEtMjEuNzksMjAuODEtNDUuMzQsMjUuOTEtNzBsNC41Mi0yMS43OWMyLjMxLTExLjIyLTExLjgzLTE4LjE3LTE5LjMtOS40OFpNODkzLjc1LDk3OS40OWMtMi4zOSwxOS4zLTYuODUsMzkuMDUtMTMuMjgsNTguNzMtLjc4LDIuNC0xLjU3LDQuNzktMi40MSw3LjE5LTEzLjM1LDM3LjkyLTMyLjg2LDcxLjYzLTU2LjI5LDk3LjgyLTUuOTUsNi42NS0xMi4xNSwxMi44Mi0xOC41NywxOC40NS0uMTEuMS0uMjIuMTktLjM0LjI5LTIuMDYsMS44LTQuMTUsMy41NS02LjI1LDUuMjQtNS44NCw0LjY4LTExLjcsOC43OC0xNy41NiwxMi4zNC0yNi41NiwxNi4xNC01Mi45LDIwLjY4LTc1LjY2LDEyLjY3LTE3LjEyLTYuMDItMzEuMzYtMTguODYtNDEuODgtMzcuMjctLjM4LS44NC0xLjY0LTMuNTItMy45MS03LjQ1LTQuNy05Ljc4LTguNDctMjAuODYtMTEuMi0zMy4xNC0xLjU3LTcuMDctMi43Mi0xNC4zOS0zLjU0LTIxLjg3LDEzLjc0LDE1Ljk0LDM0LjA0LDI2LjA4LDU2Ljc1LDI2LjA4LDMzLjY0LDAsNjIuMS0yMi4xNiw3MS41Ny01Mi42NywyLjE4LTcuMDIsMy4zNi0xNC40OCwzLjM2LTIyLjIycy0xLjE5LTE1LjMtMy40LTIyLjM2Yy01Ljk3LDEzLjE3LTE5LjIsMjIuMzYtMzQuNjEsMjIuMzYtMjAuOTksMC0zOC0xNy0zOC0zNy45OCwwLTE0Ljk4LDguNy0yNy44OSwyMS4zLTM0LjA4LTYuNDQtMS44LTEzLjItMi44My0yMC4yMS0yLjgzLTE3LjExLDAtMzIuODMsNS44LTQ1LjQ0LDE1LjQ0LDEuNTctNS4yNywzLjI0LTEwLjU0LDUuMS0xNS44LDE3LjYtNDkuOTcsNDUuODgtOTIuNiw3OS43NC0xMjAuMzcuNTctLjQ3LDEuMTQtLjk3LDEuNzEtMS40MywyMy43Ny0xOS4wNCw0Ny45NS0yOC44OCw3MC4xMi0yOC44OSw4LDAsMTUuNzMsMS4yOCwyMy4wOSwzLjg3LDI3Ljc4LDkuNzcsNDguMDEsMzcuNDIsNTYuOTgsNzcuODYsNS40NCwyNC41Miw2LjMzLDUxLjc3LDIuODMsODAuMDJaTTQ3NC45MSwxMzIuMjZsNS42NS0yMi43LjA5LS4zN2M2LjY1LTI5LjU5LDEzLjkzLTQ3LjY1LDIwLjE0LTU4LjY0LDQuOTItOC43MSw5LjE3LTEyLjk5LDExLjktMTUuMDUsMS43My0xLjMsMi44NS0xLjcyLDMuMTUtMS44MWgwYy44NiwwLDEuNzMsMCwyLjU4LDAsLjU2LjE3LDMuOTgsMS40OCw4Ljg4LDcuNTgsNy4wOSw4Ljg0LDE3LjI4LDI3Ljc1LDI2LjMxLDY3LjkzbDUuNzQsMjMuMDdjNS40NCwyMS44NywxMC41LDQzLjg4LDE1LjMyLDY1Ljk2LTE5LjMxLTYtMzYuNzItMTMuNDgtNTIuMjItMjIuNDQtMTkuMDktMTEuMDQtMzUuMjMtMjQuMzItNDguNDEtMzkuOC4zLTEuMjQuNTgtMi40OC44OS0zLjcyWk00NjEuNywxODguNzJjMTIuNTYsMTAuOTcsMjYuNTcsMjAuNzEsNDEuOTksMjkuMjQsMjMuNzgsMTMuMTUsNTAuOTcsMjMuMzcsODEuNDMsMzAuNjgsNC4yOCwyMS45NSw4LjE5LDQzLjk4LDExLjg1LDY2LjA1Ljk1LDUuNzcsMS45MSwxMS41MywyLjgyLDE3LjMuOTEsNS43NSwxLjc2LDExLjUxLDIuNjMsMTcuMjcsMS4yLDcuOTYsMi4zNywxNS45MiwzLjQ4LDIzLjg5LTcuOTktLjU3LTE1LjgtMS4zNC0yMy4zOS0yLjM1LTMzLjI3LTQuNDMtNjIuNi0xMy4wNS04Ny44Ni0yNS44Ni05LTQuNTctMTcuNDYtOS42OS0yNS40MS0xNS4zMi02LjExLTQuMzItMTEuOTQtOC45My0xNy40NC0xMy44Ny0uNDQtLjQtLjgzLS44MS0xLjI2LTEuMjEtNC4wNC0zLjcxLTcuOC03LjUyLTExLjMxLTExLjM5LDYuNTQtMzguMzQsMTQuMDQtNzYuNTMsMjIuNDctMTE0LjQyWk00MTkuNjYsNDQyLjQ0YzMuMDctMjguMTcsNi43Mi01Ni4zNSwxMC44NC04NC40OSwxMS42Nyw5LjQ1LDI0LjM1LDE3Ljc3LDM3LjkzLDI1LjA4LDM5LjgyLDIxLjQyLDg3LjczLDMzLjY4LDE0My40NSwzNi41Ni45MSw3LjYyLDEuODYsMTUuMjQsMi42OSwyMi44NmwxMC40NCw5NS43Yy04LjgzLS4yOC0xNy40OC0uNzUtMjUuOTQtMS40NC0zOC4xNC0zLjExLTcyLjQ2LTEwLjMyLTEwMi40Ny0yMS42Ny0zMS4yMy0xMS44MS01Ny44Ni0yOC4xNS03OS41NS00OC41NWwyLjYyLTI0LjA0Wk00MDguNTksNTQzLjk5bDIuNS0yMi45YzEzLjE2LDkuNTQsMjcuNDEsMTguMDYsNDIuNzIsMjUuNDksNy44OCwzLjgyLDE2LjAxLDcuMzgsMjQuNDQsMTAuNjMsMzkuODksMTUuMzksODYuMDMsMjQuMjMsMTM3LjU5LDI2LjU0LTQuMDEsNS45Ni05LjExLDExLjI1LTE1LjE5LDE1LjQ5LTIxLjUzLDE1LjAzLTQ5LjA2LDIyLjY1LTgzLjUzLDIyLjY1LTE3Ljc2LDAtMzMuODgtMi4xMy00OC4zNC02LjI4LTEzLjYtMy45LTI1LjczLTkuNTktMzYuMjMtMTcuMTEtMTcuMTEtMTIuMjYtMjYuMjgtMzMuMTUtMjMuOTUtNTQuNTFaTTEyNy40NSw4NjkuNTVjLTcuODctNTEuOTgtOS45Mi0xMDAuODctOC40My0xNDUuMywzLjUyLS4xMSw2LjcxLS41MSw5LjM1LS45OCwzLjU4LS42NSw1LjA5LTQuOTMsMi43NC03LjY5LTMuNzUtNC40MS03LjM4LTguODktMTAuOTMtMTMuNDItLjAzLS4wNC0uMDctLjA5LS4xLS4xMy01LjM3LTYuODUtMTAuNDgtMTMuODQtMTUuMzctMjAuOTQtNS4xNi03LjQ5LTEwLjA1LTE1LjEyLTE0LjY3LTIyLjg3LTkuMzgtMTUuNzItMTcuNzEtMzEuOTItMjQuNzktNDguNTktMTMuNjUtMzIuMTMtMjMuMDItNjUuOTctMjcuODMtMTAwLjU4LTQuMjUtMzAuNTgtNC4yNC01Ny44Ny0yLjkzLTc3LjIzLjEtMS40Ny40Ni0yLjg2Ljk0LTQuMTksMi4wMS01LjU1LDcuMDItOS42NiwxMy4xNS0xMC4xNSwzNC4xMi0yLjc3LDczLjM2LDIuNjMsMTE3LjAyLDE2LjE0LDIuODkuODksNS43NywxLjgyLDguNjIsMi43Niw1Ljg2LDEuOTMsMTEuNjIsMy45NSwxNy4yOCw2LjA0LDUuODQsMi4xNSwxMS41OCw0LjM2LDE3LjE2LDYuNjIuOTYuMzksMS45MS43OCwyLjg3LDEuMTgsMjIsOS4wNCw0MS43MSwxOC42NCw1Ny42NSwyNy4wNiwzLjczLDEuOTcsNy44LTEuOTcsNS45Ni01Ljc2LTIuNTctNS4yNy01LjI0LTkuOTYtNy45MS0xNC4yMy0xMC4wNC0xNi4wNC0yMC4xMi0yNS4zMy0yNS43Mi0yOS43LTIuNzMtMi4xMy00LjQyLTMuMTUtNC40Ny0zLjE3LS4xLS4wNC0uMjEtLjA5LS4zMS0uMTMsMTEuOS05LjAyLDI0LjUtMTYuOTYsMzcuNjUtMjMuNjQsMTkuMDUtOS42OCwzOC4wOS0xNy43LDU2LjY3LTI0LjM1aDBjLjIzLS4wOS40NS0uMTYuNjctLjI0LDUuNC0xLjkyLDEwLjc2LTMuNzQsMTYuMDYtNS40My4wOS0uMDMuMTctLjA2LjI2LS4wOCw1LjMxLTEuNjksMTAuNTYtMy4yNywxNS43Ni00Ljc1LjM5LS4xMS43OC0uMjMsMS4xNy0uMzQsNS4wMy0xLjQyLDkuOTktMi43NCwxNC44OS0zLjk3LjUxLS4xMywxLjAzLS4yNiwxLjU0LS4zOSw0LjgzLTEuMiw5LjU5LTIuMzIsMTQuMjgtMy4zNi4yNi0uMDYuNTMtLjEzLjc5LS4xOSwwLDAsMCwwLDAsLjAxLDAsMCwuMDEsMCwuMDIsMC0uMDUuMzctLjEyLjczLS4xNywxLjEtLjM5LDIuNjgtLjczLDUuMzctMS4xLDguMDUtLjUzLDMuNzctMS4wMSw3LjU0LTEuNTMsMTEuMzEtLjk1LDcuMDQtMS45NiwxNC4wNy0yLjg1LDIxLjEyLS4xMi45OS0uMjMsMS45Ny0uMzUsMi45Ni0xLjUzLDEyLjI0LTIuOTksMjQuNDgtNC4zMiwzNi43MmwtMTEuMDcsMTAxLjU1Yy0uMDUuNDItLjA2Ljg1LS4xLDEuMjctLjE4LDEuODktLjMyLDMuNzgtLjM4LDUuNjYtLjA0LDEuMDItLjAzLDIuMDMtLjAzLDMuMDUsMCwxLjM4LjAxLDIuNzYuMDcsNC4xMywxLjE4LDI4LjMyLDE1LjA5LDU0LjgzLDM4LjI1LDcxLjQzLDI3LjQ5LDE5LjcsNjIuNTYsMjkuNywxMDQuMjIsMjkuN2gwYzQwLjkzLDAsNzUuNTMtOS42NiwxMDIuODMtMjguNzEsMjcuODgtMTkuNDYsNDIuOS01Mi42MiwzOS4yLTg2LjU0bC0xMS4wNy0xMDEuNTRjLTMuMDUtMjcuOTQtNi42NC01NS44OS0xMC43LTgzLjgxLDEuMDMuMiwyLjA2LjQxLDMuMS42MiwzNy40Miw3LjU4LDgwLjM3LDIwLjI3LDEyMy43NSw0MS4zNSwyLjQ4LDEuMjEsNC45NywyLjQxLDcuNDUsMy42OCwxMy4yMiw2LjcyLDI1Ljg5LDE0LjcyLDM3Ljg2LDIzLjgxLS42NS4zOC0xNS40Niw5LjM4LTMwLjEzLDMyLjgzLTIuNjcsNC4yNy01LjM0LDguOTYtNy45MSwxNC4yMy0xLjg1LDMuNzksMi4yMiw3LjczLDUuOTUsNS43NiwxNi41My04LjczLDM3LjEtMTguNzQsNjAuMS0yOC4wNywzLjI0LTEuMzIsNi41NC0yLjYxLDkuODctMy44OSwyLjQtLjkzLDQuODMtMS44NCw3LjI4LTIuNzQsNS42NS0yLjA5LDExLjQxLTQuMTEsMTcuMjYtNi4wNCwzLS45OSw2LjAyLTEuOTcsOS4wNi0yLjkxLDQzLjY2LTEzLjUxLDgyLjktMTguOTEsMTE3LjAyLTE2LjE0LDUuMTkuNDIsOS41NywzLjQ0LDEyLjAyLDcuNzIsMS4xNCwxLjk5LDEuOSw0LjIyLDIuMDcsNi42MywxLjMxLDE5LjM2LDEuMzIsNDYuNjUtMi45Myw3Ny4yMy00LjgxLDM0LjYxLTE0LjE4LDY4LjQ1LTI3LjgyLDEwMC41OC03LjIsMTYuOTUtMTUuNjgsMzMuNDItMjUuMjcsNDkuMzktNC42Myw3LjcxLTkuNTIsMTUuMzEtMTQuNjgsMjIuNzctNC43OCw2LjktOS43NSwxMy43LTE0Ljk3LDIwLjM3bC0uNTItLjczYy4wMy40My4wNS44Ny4wOCwxLjMxLTMuNDEsNC4zMy02LjksOC42MS0xMC40OSwxMi44NC0yLjM1LDIuNzYtLjg0LDcuMDUsMi43NCw3LjY5LDIuNS40NSw1LjQ4Ljg0LDguNzcuOTcsMS41Miw0NS4xMi0uNjMsOTQuODQtOC44LDE0Ny43Mi0xMy43Ni00MS4zNy0zOS4yMi03MC4yMS03My4xMS04Mi4xMy0zOS4xNi0xMy43OC04My43My0yLjk1LTEyNS40OSwzMC40OS0yOC45NCwyMy4xOC01NC4yNCw1NS41My03My41Niw5My40Ny03LjAzLDEzLjgtMTMuMjksMjguMzItMTguNjEsNDMuNDMtMTIuODQsMzYuNDctMTkuNDQsNzMuNjMtMTkuNjIsMTA4LjY3LS4wNiwxMC43Ny41MSwyMS4zMiwxLjY4LDMxLjYtNS45LTMuNzgtMTIuNDUtNy40LTE5LjcyLTEwLjYzLTE4LTguMDItNDAuMjYtMTMuNzEtNjcuMjctMTMuNzJoLS4wNGMtMjYuNDEsMC00OC4zLDUuNDUtNjYuMDgsMTMuMTktNy44MywzLjQxLTE0LjgzLDcuMjYtMjEuMSwxMS4zLDEuMTgtMTAuMzIsMS43NS0yMC45MiwxLjctMzEuNzMtLjE4LTM1LjAzLTYuNzgtNzIuMjEtMTkuNjItMTA4LjY3LTE5Ljk2LTU2LjY2LTUyLjctMTA1LjI5LTkyLjE3LTEzNi45LTUuMjYtNC4yMS0xMC41Ni04LjA2LTE1Ljg5LTExLjU1LTM3LjAxLTI0LjI0LTc1LjM3LTMxLTEwOS42MS0xOC45Ni0zMy4yMiwxMS42OS01OC4zMiwzOS42Ni03Mi4yNiw3OS43NFpNMjY4Ljg4LDExODEuMzVjLTYuODgtMy45NS0xMy43Ny04LjYzLTIwLjY0LTE0LjEzLTEuNzctMS40Mi0zLjUyLTIuOTEtNS4yNi00LjQxLS4zMy0uMjktLjY3LS41NS0xLS44NC02LjA2LTUuMjktMTEuOTItMTEuMDgtMTcuNTctMTcuMjgtMjQuMDItMjYuNC00NC4wMi02MC42NS01Ny42My05OS4yOWgwYy04LjU0LTI0LjIzLTE0LjAxLTQ4LjctMTYuMzktNzIuMzgtMi42MS0yNS45NC0xLjQ5LTUwLjkyLDMuNTMtNzMuNTUsNi42NC0yOS45NCwxOS40Ny01Mi44NSwzNi45Ni02Ni43MSw2LjEzLTQuODYsMTIuODItOC42MiwyMC4wMi0xMS4xNiwyNy43OC05Ljc4LDYwLjg3LS45LDkzLjIyLDI1LDM0LjYzLDI3LjczLDYzLjU2LDcwLjk5LDgxLjQ2LDEyMS44MS4xNi40Ni4zLjkyLjQ2LDEuMzksMi45Myw4LjQyLDUuNDgsMTYuODcsNy42NywyNS4zLDMuMjIsMTIuNDEsNS42NCwyNC43Nyw3LjI0LDM2Ljk3LTYuOTEsNy4xNC0xNi41OCwxMS41OS0yNy4zLDExLjU5LTIwLjk5LDAtMzgtMTctMzgtMzcuOTgsMC0xNC45OCw4LjY5LTI3Ljg5LDIxLjI5LTM0LjA3LTYuNDQtMS44LTEzLjItMi44NC0yMC4yMi0yLjg0LTQxLjM4LDAtNzQuOTMsMzMuNTMtNzQuOTMsNzQuODksMCw3Ljc0LDEuMTcsMTUuMiwzLjM1LDIyLjIyLDkuNDcsMzAuNTEsMzcuOTMsNTIuNjcsNzEuNTcsNTIuNjcsMjguODIsMCw1My44MS0xNi4yOSw2Ni4zNC00MC4xNC0uNTcsMTIuNDYtMi4wOSwyNC41LTQuNjMsMzUuOTQtNi41MSwyOS4zNi0xOC45OSw1MS45NC0zNS45Niw2NS44Ny02LjQsNS4yNS0xMy40MSw5LjMxLTIxLjAyLDExLjk5LTIxLjg3LDcuNy00Ny4wNiwzLjc3LTcyLjU4LTEwLjg4Wk0zNDEuMTYsMTI0MC41NWMtNS4yNy0zLjY5LTEwLjM0LTcuMzgtMTUuMjMtMTEuMDQsOS4xMS0uNjYsMTguMDUtMi40NiwyNi43Mi01LjUyLDIwLjA2LTcuMDYsMzcuMTUtMjAuMDcsNTAuNjMtMzguMDcsMy45Ny01LjI5LDcuNi0xMS4wNCwxMC45Mi0xNy4xOGwuMDUuMDJzLjItLjQzLjUzLTEuMDljLjQyLS44Ljg2LTEuNTgsMS4yOC0yLjM5LDMuMDgtNS41MiwxMC4yMy0xNi44MSwyMi40OS0yNy45MiwyMi4zNS0yMC4yNiw1MC41OC0zMC41Myw4My45NC0zMC41MywxOS4xMiwwLDM2LjU1LDMuMzksNTIuMTcsMTAuMDksNy4wOCwzLjA0LDEzLjc4LDYuNzcsMjAuMSwxMS4xNyw0LjA1LDIuODIsNy45NSw1Ljg5LDExLjY3LDkuMjYsMTEuMTEsMTAuMDcsMTguMDIsMjAuMjksMjEuNTIsMjYuMjMsMTQuNjYsMjkuNzYsMzYuNjUsNTAuNzEsNjQuMjMsNjAuNDEsMi41Ni45LDUuMTUsMS42Nyw3Ljc1LDIuMzYsNi41OCwxLjc1LDEzLjMsMi43OCwyMC4xMSwzLjItMi40LDEuOC00Ljg1LDMuNi03LjM1LDUuNDItMi41NiwxLjg1LTUuMTYsMy43MS03LjgsNS41Ni0uMDQuMDMtLjA5LjA2LS4xMy4wOS00Ljk4LDMuNDgtOS44OSw2LjgtMTQuNzIsOS45NS0zLjYzLDIuMzctNy4yMSw0LjYzLTEwLjc2LDYuODItMS41OS45OC0zLjE4LDEuOTctNC43NSwyLjkyLS43OS40OC0xLjU4Ljk0LTIuMzcsMS40MS02NS45NSwzOS4yOS0xMTYuNjUsNDguMjktMTQ5LjE0LDQ4LjI5LTI3Ljg3LDAtNjkuMTMtNi42Mi0xMjEuOTItMzMuMjktMi4xMS0xLjA3LTQuMjQtMi4xNy02LjM5LTMuMy01LjAzLTIuNjUtMTAuMTYtNS40Ny0xNS4zOS04LjUtNC45Mi0yLjg1LTkuOTMtNS44Ni0xNS4wMy05LjA1LTcuNTMtNC43Mi0xNS4yMy05LjgxLTIzLjEzLTE1LjM0Wk0zOTMuODEsMTY0OS45djE1LjZoLTM4LjI2bC0xMS4zNy0zMi44NmMtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMTEsMGwtMTEuMzcsMzIuODZoLTM3LjM2bC4zLTYuNjYsMS43NC0zOC4zOGgxMDEuNDJ2MjkuNDRaTTUwNy4xNCwxNjAzLjloLS4wMWwtMy4yMiwyOS4xNWgtMjcuMzZsLTYuNzQtMTkuNDhjLS44NC0yLjQzLTQuMjctMi40My01LjExLDBsLTYuNzQsMTkuNDhoLTI5LjE5bC43NS0yOS4yaDc3LjYydi4wNVpNNjU1LjE3LDE2NjYuNzVoMHMtMS4zOSwxMS40NS0xLjM5LDExLjQ1bC0xLjk1LDE2LjFoLTQyLjc5bC0xMi4zNi0zNS43M2MtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMTEsMGwtMTIuMzYsMzUuNzNoLTQ4LjE1bDMuMDQtMjcuNTUsMS44Ni0xNi44NCwxLjM2LTEyLjMyaDEyMS4zOWwtMy41NCwyOS4xNlpNNjgxLjI5LDE0OTMuM2MtNS4zMywxNS40LTguOSwzMS4zNS0xMC44Niw0Ny41NGwtMy40OCwyOC43Mi0uMywyLjQ3LTIuMDQsMTYuODUtMS44MiwxNS4wM2gtMTIxLjc1bDEuODYtMTYuOSwxLjg2LTE2Ljg1LDMuNjEtMzIuNjhjMS42Ni0xNS4wOC0uNjgtMzAuMzgtNi43OC00NC4yNy0yLjExLTQuODItNC42Ni05LjQ0LTcuNi0xMy44MmwtOS0xMy40LTE0LjkzLTIyLjIxLTkuMzItMTMuODdjLTEuNDQtMi4xNC00LjA5LTIuMzQtNS45LTEuMTctMS4wNC42Ny0xLjgsMS43OS0xLjg5LDMuMjctLjM5LDYuNTUtLjE3LDE1LjQ2LDEuOCwyNi41OSwxLjk2LDExLjA2LDUuNjUsMjQuMjksMTIuMTksMzkuNTZsMy43OSw4LjYyYy40NSwxLjAzLjg3LDIuMDcsMS4yNSwzLjEyLDIuNzgsNy42MiwzLjc4LDE1LjgyLDIuODgsMjMuOWwtMi41NCwyMy4wMi0xLjQ4LDEzLjM2aC04MC40OGwuNzEtMjcuNTFjLjItOCwyLjMyLTE1LjksNi4wMi0yMywuMjQtLjQ2LjQyLS45NC42Ny0xLjM5bDIuOC00Ljk1YzcuNjUtMTEuMDUsMTIuMjUtMjEuNSwxNC45Ni0zMC42LDMuNDktMTEuNzEsMy44Ni0yMS4xOSwzLjYyLTI2LjgxLS4wOS0yLjExLTEuNjktMy42OS0zLjU4LTMuOTktLjc0LS4xMi0xLjUzLS4wNi0yLjI5LjI3LTIxLjgxLDkuMzMtMzUuMjUsMzIuNC0zNi42NSwzNC44OGwtOC4yNiwxNC43OWMtNi44MSwxMi4xOC0xMC42LDI2LTEwLjk2LDM5Ljk1bC0uNzMsMjguMzctLjQzLDE2LjYxaC0xMDIuMzRsMy4xMS02OC41NWMxLjE4LTI2LjEyLDYuMTktNTEuODcsMTQuODctNzYuNTNsMzIuMTctOTEuMzZjNi41Ni0xOC42MywxNS44OC0zNS44MSwyNy40LTUxLjE2LDE0LjE3LDcuOCwyOC4yMSwxNC42Nyw0Mi4wNSwyMC40NSw0LjM0LDEuODEsOC42NiwzLjUsMTIuOTYsNS4xMSwzMy42MSwxMi41OCw2Ni4wMywxOC45OCw5Ni41MywxOC45OSwzMC4yOCwwLDYyLjQ0LTYuMjksOTUuNzgtMTguNjksNC41NS0xLjY5LDkuMTItMy40OCwxMy43MS01LjQsMTQuMTYtNS45MiwyOC41NS0xMi45Niw0My4wNi0yMSw4Ljc0LTQuODQsMTcuNTItMTAuMDMsMjYuMzMtMTUuNjEsMy43NSwzLjg3LDcuMTksNy45MywxMC40NSwxMi4xLDMuNTQsNC41MSw2Ljg0LDkuMTcsOS44LDE0LjAzLDMuMSw1LjA4LDUuODMsMTAuMzgsOC4yOSwxNS44MywyLjU1LDUuNjUsNC44NSwxMS40NCw2LjcxLDE3LjQ4LDMuMjcsMTAuNjQsNi4zLDIxLjM0LDkuMTMsMzIuMDQsMS43MSw2LjQ4LDMuMzQsMTIuOTYsNC45LDE5LjQyLDEuNDUsNiwyLjg0LDExLjk5LDQuMTYsMTcuOTYuNjksMy4xMiwxLjM4LDYuMjQsMi4wNCw5LjM1LjU4LDIuNzQsMS4xNSw1LjQ4LDEuNyw4LjIxLDEwLjg1LDUzLjE3LDE2Ljk3LDEwMy40NywyMC40MSwxNDIuNThoLTc4Ljg3bDUuMjYtNDMuMzhjMy45NS0zMi41OS4yMi01MC4xNi0zLjUzLTU5LjEzLTIuNjMtNi4zLTUuMjgtOC4zNS01LjI4LTguMzVoLS4wM3MwLDAsMCwwYy02LjQyLDguMTctMTEuNzMsMjAuNDYtMTUuNzcsMzIuMTNaTTc4My40NiwxNjMzLjA2aC00MC43OGwtNi43NC0xOS40OGMtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMSwwbC02Ljc0LDE5LjQ4aC0zMC44NWwzLjMxLTI3LjMzaDg1LjU2Yy43NywxMS44MSwxLjE1LDE4Ljc2LDEuNDMsMjcuMzNoLS4wOFpNOTg0LjU2LDEyNzIuODNjLTEyLjkxLDIzLjI5LTI2LjI4LDQ3LjM3LTUzLjE1LDYxLjA2LTM0LjE0LDE3LjM5LTcxLjI5LDcuNzMtODUuNjcsMi43NmwtMjQuNDQtOC40MmMtNS44LTItMTEuMDUsNC4xNS04LjE0LDkuNTdsMTIuMjMsMjIuNzZjLjQzLjc5LDcuMDQsMTIuODgsMTkuNjMsMjQuMjgtMTQuMDEsNS44LTI4LjUzLDkuNDItNDMuNDIsMTAuODQtMy45OC4zNy05LjE4Ljg1LTE1LjA4LDEuMS0xLjgzLTcuOTQtMy43Ni0xNS45LTUuODItMjMuOS0zLjQ1LTEzLjQyLTcuMi0yNi44OC0xMS4zMi00MC4zLTMuMzYtMTAuOTQtNy42OS0yMS4yOS0xMi44NC0zMS4xMyw5LjM1LTYuODMsMTkuNzMtMTIuOTEsMzEuMy0xNy42OCw0NS4wMS0xOC41Nyw5Ny43MS0xNC41NCwxMDMuNTctMTQuMDIsOS4xOC44MiwxNi41NiwyLjAzLDIzLjcxLDMuMjIsMTUuMzksMi41NSwyOC42OCw0Ljc1LDQ3Ljc1LjYsMy41MS0uNzYsNi45Ni0xLjc0LDEwLjM5LTIuODQsNS4zMi0xLjcsMTAuNTctMy43NSwxNS42OS02LjI1LTEuNCwyLjgyLTIuODYsNS42LTQuMzksOC4zNlpNMzc1LjcyLDczNS4wNWMxLjQ5LDguODMsNC4wNiwxOS41Myw4LjQsMzEsLjY0LDEuNjksMS4zMiwzLjM5LDIuMDQsNS4xMSw1LjA2LDEyLjA5LDEyLjE1LDI0LjgyLDIyLjEsMzcuMDMsMi42NCwzLjI0LDUuNDQsNi40NCw4LjQ5LDkuNTgsOS40Nyw5LjA5LDIwLjM1LDE3LjY4LDMyLjgxLDI1LjIxLDMuNzksMi4zLDcuNjYsNC40NCwxMS41OSw2LjQ0LDI3LjU1LDE0LjA0LDU4LjU1LDIxLjA3LDkyLjc2LDIxLjA3LDIyLjE2LDAsNDUuNjYtMi45Niw3MC40NC04Ljg3LDMuNzYtLjksNy41NS0xLjg1LDExLjM3LTIuODhsOC4xNC0yLjIxLDguMTgtMi4yMmM2LjIxLTEuNjksNy45OC05LjY0LDMuMDctMTMuNzlsLS40Ni0uMzktMTIuNDYtMTAuNTRjLS4wNi0uMDUtMS44My0xLjU3LTQuNzgtNC4zNS0yLjIyLTIuMDktNS4wOC00Ljg4LTguNDgtOC40aC45NWMyMS44NSwwLDQ5LjE1LTUuMjQsNzkuMTItMjIuNzEsNS4xLTIuOTcsMTAuMjYtNi4yNSwxNS41LTkuOTcsMCwwLDAsMCwuMDIsMGgtLjAxczEyLjgyLTkuMSwxMi44Mi05LjFjNS43NC00LjA3LDMuNzYtMTMuMDMtMy4xNi0xNC4zNC00Ny4zMi05LTcwLjU2LTI4LjQtODEuNjgtNDIuODYtMS44MS0yLjM2LTQuODMtMi4yMi02LjY1LS42My0xLjA5Ljk0LTEuNzUsMi40LTEuNDUsNC4xNiwxLjA0LDYuMjksMi43OCwxMy4zNiw1LjU4LDIwLjMyLDQuMjEsMTAuNDUsMTAuODQsMjAuNjgsMjEuMzUsMjcuNzMsMS45LDEuMTYsMy44LDIuMjcsNS42NywzLjMtMS43Ny44LTMuNTQsMS41NC01LjI5LDIuMjUtNS4xLDIuMDYtMTAuMTIsMy43Mi0xNS4wNCw1LjA1LTUyLjI5LDE0LjEtOTMuOTktMTAuOTktMTE0LjM5LTI3LjQ0LTMuNy0yLjk4LTguOTQuOTItNy4wOSw1LjMsMi45Miw2LjkyLDYuODYsMTUuMjcsMTEuOSwyMy45NSwxMS4xNywxOS4yNywyNy43NCw0MC4yLDUwLjYyLDUwLjk0LTkuOTUsMi4xNS0xOS40OCwzLjUtMjguNjksNC4yNi05Ni4wOCw3Ljk2LTE1Mi42NS01NS4wNy0xNzguNDItOTQuODItMi40MS0zLjcxLTQuNTgtNy4yNC02LjQ1LTEwLjQ3LS4yLS4zNC0uNDYtLjU3LS43MS0uODQtMi44OS0zLjEtOC41MS0uNzUtNy43NCwzLjg4LjAxLjA4LjAzLjE2LjA0LjI0Wk04OTMuOTYsNjExLjY5YzIuODQsNC42OCw5LjUzLDUuNCwxMy4zOSwxLjQ2LDIuNC0yLjQ0LDQuNjktNC44Niw2LjkxLTcuMjYsNS4xNC01LjU2LDkuNzktMTAuOTksMTQuMDQtMTYuMyw1LTYuMjUsOS40Mi0xMi4zMiwxMy4zLTE4LjIsMzMuNjMtNTAuOTQsMjcuNTYtODcuNTEsMjIuODYtMTAxLjgtMS4yNy0zLjktNS4zOC02LjI4LTkuNTMtNS41LTE4LDMuMzctMzUuMjksOS4yNC01MC44NiwxNS45LTUuMzgsMi4zLTEwLjU1LDQuNjktMTUuNDcsNy4xMS01LjMyLDIuNjItMTAuMzQsNS4yNS0xNSw3Ljg0LTEzLjQ5LDcuNDgtMjQuMDQsMTQuNDYtMzAuMTksMTguNzZoMGMtMy40OSwyLjQ2LTQuNDksNy4wNi0yLjMxLDEwLjY3bDUyLjg1LDg3LjMzWk0yMDMuMjIsNTEzLjY5aDBjLTYuMjItNC4zNi0xNi45Mi0xMS40NC0zMC42Mi0xOS00LjY3LTIuNTgtOS42OS01LjItMTUtNy44MS00LjkzLTIuNDItMTAuMS00Ljc5LTE1LjQ5LTcuMDktMTUuNDUtNi41Ny0zMi41OC0xMi4zNy01MC40LTE1LjcxLTQuMTUtLjc4LTguMjUsMS42LTkuNTMsNS41LTQuNjcsMTQuMjMtMTAuNzIsNTAuNTUsMjIuNDMsMTAxLjE1LDMuODcsNS45MSw4LjI4LDEyLjAxLDEzLjI5LDE4LjMsNC4yMyw1LjMxLDguODcsMTAuNzUsMTQsMTYuMzEsMi4zNywyLjU4LDQuODEsNS4xNyw3LjM5LDcuOCwzLjg2LDMuOTQsMTAuNTQsMy4yMiwxMy4zOC0xLjQ2bDUyLjg1LTg3LjMzYzIuMTgtMy42LDEuMTgtOC4yMS0yLjMxLTEwLjY2Wk00NTAuNDEsMTI1Ny42MnYtLjAyYzkuMjEtMy44NSwyOC4xNi04Ljc1LDQ1LjQxLDUuOTMsMi40NCwyLjA4LDUuNDItMS4zMyw0LjMzLTQuOTUtMy4zNy0xMS4yLTExLjA3LTI2LjIyLTI4LjE1LTI2LjIxLTE1LjQsMC0yMi4yMiwxMS4zOC0yNS4xNSwxOS42NS0xLjEyLDMuMTYsMS4wOSw2LjYyLDMuNTcsNS41OVpNNTQ4LjgsMTI2My41M2MxNy4yNC0xNC42OCwzNi4xOS05Ljc4LDQ1LjQtNS45M3YuMDJjMi40OCwxLjAzLDQuNy0yLjQzLDMuNTctNS41OS0yLjkzLTguMjctOS43NS0xOS42NS0yNS4xNS0xOS42NS0xNy4wOCwwLTI0Ljc4LDE1LjAxLTI4LjE1LDI2LjIxLTEuMDksMy42MiwxLjg5LDcuMDMsNC4zMyw0Ljk1WiIgZmlsbD0iIzA2MjM0YyIvPjwvc3ZnPg==" +values: + files: + - zarf-values.yaml + schema: zarf-values.schema.json + components: # Keycloak - name: keycloak diff --git a/packages/logging/zarf-values.schema.json b/packages/logging/zarf-values.schema.json new file mode 100644 index 0000000000..0906aebd3a --- /dev/null +++ b/packages/logging/zarf-values.schema.json @@ -0,0 +1,10170 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "loki": { + "properties": { + "loki": { + "properties": { + "backend": { + "properties": { + "affinity": { + "type": "string" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "fullnameOverride": { + "type": "string" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "dataVolumeParameters": { + "properties": { + "emptyDir": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "selector": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + }, + "volumeClaimsEnabled": { + "type": "boolean" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "selectorLabels": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "sidecar": { + "type": "boolean" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "bloomBuilder": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "enabled": { + "type": "boolean" + }, + "scaleDown": { + "properties": {}, + "type": "object" + }, + "scaleUp": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customMetrics": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "selector": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "type": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "bloomGateway": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "claims": { + "items": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "bloomPlanner": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "claims": { + "items": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "chunksCache": { + "properties": { + "addresses": { + "type": "string" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "allocatedCPU": { + "type": "string" + }, + "allocatedMemory": { + "type": "number" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "batchSize": { + "type": "number" + }, + "connectionLimit": { + "type": "number" + }, + "defaultValidity": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "properties": {}, + "type": "object" + }, + "extraContainers": { + "type": "array" + }, + "extraExtendedOptions": { + "type": "string" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "l2": { + "properties": { + "addresses": { + "type": "string" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "allocatedCPU": { + "type": "string" + }, + "allocatedMemory": { + "type": "number" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "batchSize": { + "type": "number" + }, + "connectionLimit": { + "type": "number" + }, + "defaultValidity": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "properties": {}, + "type": "object" + }, + "extraContainers": { + "type": "array" + }, + "extraExtendedOptions": { + "type": "string" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "l2ChunkCacheHandoff": { + "type": "string" + }, + "maxItemMemory": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "parallelism": { + "type": "number" + }, + "persistence": { + "properties": { + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "mountPath": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "storageSize": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "port": { + "type": "number" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "statefulStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "suffix": { + "type": "string" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "timeout": { + "type": "string" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "writebackBuffer": { + "type": "number" + }, + "writebackParallelism": { + "type": "number" + }, + "writebackSizeLimit": { + "type": "string" + } + }, + "type": "object" + }, + "maxItemMemory": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "parallelism": { + "type": "number" + }, + "persistence": { + "properties": { + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "mountPath": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "storageSize": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "port": { + "type": "number" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "statefulStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "suffix": { + "type": "string" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "timeout": { + "type": "string" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "writebackBuffer": { + "type": "number" + }, + "writebackParallelism": { + "type": "number" + }, + "writebackSizeLimit": { + "type": "string" + } + }, + "type": "object" + }, + "clusterLabelOverride": { + "type": "string" + }, + "commonLabels": { + "properties": {}, + "type": "object" + }, + "compactor": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "claims": { + "items": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "dataVolumeParameters": { + "properties": { + "emptyDir": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "selector": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "type": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "defaults": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enableServiceLinks": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "goSettings": { + "properties": { + "goMemLimitFactor": { + "type": "number" + }, + "gogc": { + "type": "number" + } + }, + "type": "object" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "kedaAutoscaling": { + "properties": { + "authentication": { + "properties": { + "authModes": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "secretTargetRef": { + "type": "array" + } + }, + "type": "object" + }, + "cooldownPeriod": { + "type": "number" + }, + "customHeaders": { + "type": "string" + }, + "ignoreNullValues": { + "type": "boolean" + }, + "pollingInterval": { + "type": "number" + }, + "prometheusAddress": { + "type": "string" + }, + "unsafeSsl": { + "type": "boolean" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "patchPVC": { + "type": "boolean" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "distributor": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "enabled": { + "type": "boolean" + }, + "scaleDown": { + "properties": {}, + "type": "object" + }, + "scaleUp": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customMetrics": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "shutdownDelay": { + "type": "string" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "enterprise": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "extraObjects": { + "type": "string" + }, + "fullnameOverride": { + "type": "string" + }, + "gateway": { + "properties": { + "affinity": { + "type": "string" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "basicAuth": { + "properties": { + "enabled": { + "type": "boolean" + }, + "existingSecret": { + "type": "string" + }, + "htpasswd": { + "type": "string" + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "containerPort": { + "type": "number" + }, + "deploymentStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "items": { + "properties": { + "host": { + "type": "string" + }, + "paths": { + "items": { + "properties": { + "path": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "tls": { + "items": { + "properties": { + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "secretName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "metrics": { + "properties": { + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": { + "limits": { + "properties": {}, + "type": "object" + }, + "requests": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "nginxConfig": { + "properties": { + "clientMaxBodySize": { + "type": "string" + }, + "customBackendUrl": { + "type": "string" + }, + "customReadUrl": { + "type": "string" + }, + "customWriteUrl": { + "type": "string" + }, + "enableIPv6": { + "type": "boolean" + }, + "file": { + "type": "string" + }, + "httpSnippet": { + "type": "string" + }, + "locationSnippet": { + "type": "string" + }, + "logFormat": { + "type": "string" + }, + "resolver": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "serverSnippet": { + "type": "string" + }, + "ssl": { + "type": "boolean" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostnames": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "timeouts": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": { + "prometheus.io/service-monitor": { + "type": "string" + } + }, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "nodePort": { + "type": "string" + }, + "port": { + "type": "number" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "verboseLogging": { + "type": "boolean" + } + }, + "type": "object" + }, + "global": { + "properties": { + "clusterDomain": { + "type": "string" + }, + "dnsNamespace": { + "type": "string" + }, + "dnsService": { + "type": "string" + }, + "extraArgs": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "priorityClassName": { + "type": "string" + } + }, + "type": "object" + }, + "ignoreMinioDeprecation": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "indexGateway": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "joinMemberlist": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "dataVolumeParameters": { + "properties": { + "emptyDir": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "ingester": { + "properties": { + "addIngesterNamePrefix": { + "type": "boolean" + }, + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "enabled": { + "type": "boolean" + }, + "scaleDown": { + "properties": {}, + "type": "object" + }, + "scaleUp": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customMetrics": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "claims": { + "items": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "inMemory": { + "type": "boolean" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "rolloutGroupPrefix": { + "type": "string" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "maxSkew": { + "type": "number" + }, + "topologyKey": { + "type": "string" + }, + "whenUnsatisfiable": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficDistribution": { + "type": "string" + }, + "updateStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "zoneAwareReplication": { + "properties": { + "enabled": { + "type": "boolean" + }, + "maxUnavailablePct": { + "type": "number" + }, + "migration": { + "properties": { + "enabled": { + "type": "boolean" + }, + "excludeDefaultZone": { + "type": "boolean" + }, + "readPath": { + "type": "boolean" + }, + "writePath": { + "type": "boolean" + } + }, + "type": "object" + }, + "zoneA": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "extraAffinity": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "type": "string" + }, + "persistence": { + "properties": { + "storageClass": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "zoneB": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "extraAffinity": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "type": "string" + }, + "persistence": { + "properties": { + "storageClass": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "zoneC": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "extraAffinity": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "type": "string" + }, + "persistence": { + "properties": { + "storageClass": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "paths": { + "properties": { + "compactor": { + "items": { + "type": "string" + }, + "type": "array" + }, + "distributor": { + "items": { + "type": "string" + }, + "type": "array" + }, + "queryFrontend": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ruler": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "kubeVersionOverride": { + "type": "string" + }, + "loki": { + "properties": { + "analytics": { + "properties": { + "reporting_enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "block_builder": { + "properties": {}, + "type": "object" + }, + "bloom_build": { + "properties": { + "builder": { + "properties": { + "planner_address": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "bloom_gateway": { + "properties": { + "client": { + "properties": { + "addresses": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "commonConfig": { + "properties": { + "compactor_grpc_address": { + "type": "string" + }, + "path_prefix": { + "type": "string" + }, + "replication_factor": { + "type": "number" + } + }, + "type": "object" + }, + "compactor": { + "properties": {}, + "type": "object" + }, + "compactor_grpc_client": { + "properties": {}, + "type": "object" + }, + "config": { + "type": "string" + }, + "configObjectName": { + "type": "string" + }, + "configStorageType": { + "type": "string" + }, + "distributor": { + "properties": {}, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enableServiceLinks": { + "type": "boolean" + }, + "extraMemberlistConfig": { + "properties": { + "abort_if_cluster_join_fails": { + "type": "boolean" + }, + "advertise_port": { + "type": "number" + }, + "bind_port": { + "type": "number" + }, + "max_join_backoff": { + "type": "string" + }, + "max_join_retries": { + "type": "number" + }, + "min_join_backoff": { + "type": "string" + }, + "rejoin_interval": { + "type": "string" + } + }, + "type": "object" + }, + "frontend": { + "properties": { + "scheduler_address": { + "type": "string" + }, + "tail_proxy_url": { + "type": "string" + } + }, + "type": "object" + }, + "frontend_worker": { + "properties": { + "scheduler_address": { + "type": "string" + } + }, + "type": "object" + }, + "generatedConfigObjectName": { + "type": "string" + }, + "index_gateway": { + "properties": { + "mode": { + "type": "string" + } + }, + "type": "object" + }, + "ingester": { + "properties": { + "wal": { + "properties": { + "flush_on_shutdown": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ingester_client": { + "properties": {}, + "type": "object" + }, + "limits_config": { + "properties": { + "allow_structured_metadata": { + "type": "boolean" + }, + "max_cache_freshness_per_query": { + "type": "string" + }, + "query_timeout": { + "type": "string" + }, + "reject_old_samples": { + "type": "boolean" + }, + "reject_old_samples_max_age": { + "type": "string" + }, + "split_queries_by_interval": { + "type": "string" + }, + "volume_enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "memberlistConfig": { + "properties": {}, + "type": "object" + }, + "operational_config": { + "properties": {}, + "type": "object" + }, + "pattern_ingester": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "querier": { + "properties": {}, + "type": "object" + }, + "query_range": { + "properties": {}, + "type": "object" + }, + "query_scheduler": { + "properties": { + "max_outstanding_requests_per_tenant": { + "type": "number" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "rulerConfig": { + "properties": { + "alertmanager_url": { + "type": "string" + }, + "enable_alertmanager_v2": { + "type": "boolean" + }, + "enable_api": { + "type": "boolean" + }, + "enable_sharding": { + "type": "boolean" + }, + "remote_write": { + "properties": { + "clients": { + "properties": { + "prometheus": { + "properties": { + "url": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "rule_path": { + "type": "string" + }, + "storage": { + "properties": { + "local": { + "properties": { + "directory": { + "type": "string" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "wal": { + "properties": { + "dir": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "runtimeConfig": { + "properties": {}, + "type": "object" + }, + "schemaConfig": { + "properties": { + "configs": { + "items": { + "properties": { + "from": { + "type": "string" + }, + "index": { + "properties": { + "period": { + "type": "string" + }, + "prefix": { + "type": "string" + } + }, + "type": "object" + }, + "object_store": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "store": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "server": { + "properties": { + "graceful_shutdown_timeout": { + "type": "string" + }, + "grpc_listen_port": { + "type": "number" + }, + "grpc_server_max_concurrent_streams": { + "type": "number" + }, + "grpc_server_max_recv_msg_size": { + "type": "number" + }, + "grpc_server_max_send_msg_size": { + "type": "number" + }, + "grpc_server_min_time_between_pings": { + "type": "string" + }, + "grpc_server_ping_without_stream_allowed": { + "type": "boolean" + }, + "http_listen_port": { + "type": "number" + }, + "http_server_idle_timeout": { + "type": "string" + }, + "http_server_read_timeout": { + "type": "string" + }, + "http_server_write_timeout": { + "type": "string" + }, + "log_level": { + "type": "string" + } + }, + "type": "object" + }, + "service": { + "properties": { + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "storage": { + "properties": { + "azure": { + "properties": { + "accountKey": { + "type": "string" + }, + "accountName": { + "type": "string" + }, + "chunkDelimiter": { + "type": "string" + }, + "connectionString": { + "type": "string" + }, + "endpointSuffix": { + "type": "string" + }, + "requestTimeout": { + "type": "string" + }, + "useFederatedToken": { + "type": "boolean" + }, + "useManagedIdentity": { + "type": "boolean" + }, + "userAssignedId": { + "type": "string" + } + }, + "type": "object" + }, + "bucketNames": { + "properties": { + "admin": { + "type": "string" + }, + "chunks": { + "type": "string" + } + }, + "type": "object" + }, + "filesystem": { + "properties": { + "chunks_directory": { + "type": "string" + }, + "rules_directory": { + "type": "string" + } + }, + "type": "object" + }, + "gcs": { + "properties": { + "chunkBufferSize": { + "type": "number" + }, + "enableHttp2": { + "type": "boolean" + }, + "requestTimeout": { + "type": "string" + } + }, + "type": "object" + }, + "object_store": { + "properties": { + "azure": { + "properties": { + "account_key": { + "type": "string" + }, + "account_name": { + "type": "string" + } + }, + "type": "object" + }, + "gcs": { + "properties": { + "bucket_name": { + "type": "string" + }, + "service_account": { + "type": "string" + } + }, + "type": "object" + }, + "s3": { + "properties": { + "access_key_id": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "http": { + "properties": {}, + "type": "object" + }, + "insecure": { + "type": "boolean" + }, + "region": { + "type": "string" + }, + "secret_access_key": { + "type": "string" + }, + "sse": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "storage_prefix": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "s3": { + "properties": { + "accessKeyId": { + "type": "string" + }, + "backoff_config": { + "properties": {}, + "type": "object" + }, + "disable_dualstack": { + "type": "boolean" + }, + "endpoint": { + "type": "string" + }, + "http_config": { + "properties": {}, + "type": "object" + }, + "insecure": { + "type": "boolean" + }, + "region": { + "type": "string" + }, + "s3": { + "type": "string" + }, + "s3ForcePathStyle": { + "type": "boolean" + }, + "secretAccessKey": { + "type": "string" + }, + "signatureVersion": { + "type": "string" + } + }, + "type": "object" + }, + "swift": { + "properties": { + "auth_url": { + "type": "string" + }, + "auth_version": { + "type": "string" + }, + "connect_timeout": { + "type": "string" + }, + "container_name": { + "type": "string" + }, + "domain_id": { + "type": "string" + }, + "domain_name": { + "type": "string" + }, + "internal": { + "type": "string" + }, + "max_retries": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_domain_id": { + "type": "string" + }, + "project_domain_name": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "project_name": { + "type": "string" + }, + "region_name": { + "type": "string" + }, + "request_timeout": { + "type": "string" + }, + "user_domain_id": { + "type": "string" + }, + "user_domain_name": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "type": { + "type": "string" + }, + "use_thanos_objstore": { + "type": "boolean" + } + }, + "type": "object" + }, + "storage_config": { + "properties": { + "bloom_shipper": { + "properties": { + "working_directory": { + "type": "string" + } + }, + "type": "object" + }, + "boltdb_shipper": { + "properties": { + "active_index_directory": { + "type": "string" + }, + "cache_location": { + "type": "string" + }, + "cache_ttl": { + "type": "string" + }, + "index_gateway_client": { + "properties": { + "server_address": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "hedging": { + "properties": { + "at": { + "type": "string" + }, + "max_per_second": { + "type": "number" + }, + "up_to": { + "type": "number" + } + }, + "type": "object" + }, + "tsdb_shipper": { + "properties": { + "active_index_directory": { + "type": "string" + }, + "cache_location": { + "type": "string" + }, + "cache_ttl": { + "type": "string" + }, + "index_gateway_client": { + "properties": { + "server_address": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "structuredConfig": { + "properties": {}, + "type": "object" + }, + "tenants": { + "type": "array" + }, + "testSchemaConfig": { + "properties": { + "configs": { + "items": { + "properties": { + "from": { + "type": "string" + }, + "index": { + "properties": { + "period": { + "type": "string" + }, + "prefix": { + "type": "string" + } + }, + "type": "object" + }, + "object_store": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "store": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "tracing": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "ui": { + "properties": { + "enabled": { + "type": "boolean" + }, + "gateway": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "useTestSchema": { + "type": "boolean" + } + }, + "type": "object" + }, + "lokiCanary": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "labelname": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "lokiurl": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "push": { + "type": "boolean" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "tenant": { + "properties": { + "name": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "updateStrategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "memberlist": { + "properties": { + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "publishNotReadyAddresses": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "memcached": { + "properties": { + "enabled": { + "type": "boolean" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "tcpSocket": { + "properties": { + "port": { + "type": "string" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "tcpSocket": { + "properties": { + "port": { + "type": "string" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "memcachedExporter": { + "properties": { + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": { + "limits": { + "properties": {}, + "type": "object" + }, + "requests": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "migrate": { + "properties": { + "fromDistributed": { + "properties": { + "enabled": { + "type": "boolean" + }, + "memberlistService": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "monitoring": { + "properties": { + "additionalPrometheusRules": { + "properties": {}, + "type": "object" + }, + "alerts": { + "properties": { + "additionalAggregationLabels": { + "type": "array" + }, + "additionalRuleAnnotations": { + "properties": {}, + "type": "object" + }, + "additionalRuleLabels": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "disabled": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "keepFiringFor": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "overrides": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "appInstanceLabelName": { + "type": "string" + }, + "appInstanceLabelValue": { + "type": "string" + }, + "dashboards": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "defaultDashboardsEditable": { + "type": "boolean" + }, + "defaultDashboardsInterval": { + "type": "string" + }, + "defaultDashboardsTimezone": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "grafanaOperator": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "folder": { + "type": "string" + }, + "folderRef": { + "type": "string" + }, + "folderUID": { + "type": "string" + }, + "instanceSelector": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "resyncPeriod": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": { + "grafana_dashboard": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "multiCluster": { + "properties": { + "clusterName": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "namespace": { + "type": "string" + }, + "rules": { + "properties": { + "additionalAggregationLabels": { + "type": "array" + }, + "additionalRuleAnnotations": { + "properties": {}, + "type": "object" + }, + "additionalRuleLabels": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobPrefix": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "metricRelabelings": { + "type": "array" + }, + "namespaceSelector": { + "properties": {}, + "type": "object" + }, + "relabelings": { + "type": "array" + }, + "scheme": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "tlsConfig": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "nameOverride": { + "type": "string" + }, + "namespaceOverride": { + "type": "string" + }, + "networkPolicy": { + "properties": { + "alertmanager": { + "properties": { + "namespaceSelector": { + "properties": {}, + "type": "object" + }, + "podSelector": { + "properties": {}, + "type": "object" + }, + "port": { + "type": "number" + } + }, + "type": "object" + }, + "discovery": { + "properties": { + "namespaceSelector": { + "properties": {}, + "type": "object" + }, + "podSelector": { + "properties": {}, + "type": "object" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "externalStorage": { + "properties": { + "cidrs": { + "type": "array" + }, + "ports": { + "type": "array" + } + }, + "type": "object" + }, + "ingress": { + "properties": { + "namespaceSelector": { + "properties": {}, + "type": "object" + }, + "podSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "metrics": { + "properties": { + "cidrs": { + "type": "array" + }, + "namespaceSelector": { + "properties": {}, + "type": "object" + }, + "podSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "overridesExporter": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "patternIngester": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "claims": { + "items": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "querier": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "enabled": { + "type": "boolean" + }, + "scaleDown": { + "properties": {}, + "type": "object" + }, + "scaleUp": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customMetrics": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "items": { + "properties": { + "metadata": { + "properties": { + "authModes": { + "type": "string" + }, + "customHeaders": { + "type": "string" + }, + "ignoreNullValues": { + "type": "string" + }, + "query": { + "type": "string" + }, + "serverAddress": { + "type": "string" + }, + "threshold": { + "type": "string" + }, + "unsafeSsl": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "maxSkew": { + "type": "number" + }, + "topologyKey": { + "type": "string" + }, + "whenUnsatisfiable": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "queryFrontend": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "enabled": { + "type": "boolean" + }, + "scaleDown": { + "properties": {}, + "type": "object" + }, + "scaleUp": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customMetrics": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "loadBalancer": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "queryScheduler": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "rbac": { + "properties": { + "namespaced": { + "type": "boolean" + }, + "pspEnabled": { + "type": "boolean" + }, + "sccAllowHostDirVolumePlugin": { + "type": "boolean" + }, + "sccEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "read": { + "properties": { + "affinity": { + "type": "string" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "fullnameOverride": { + "type": "string" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "selectorLabels": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "resultsCache": { + "properties": { + "addresses": { + "type": "string" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "allocatedCPU": { + "type": "string" + }, + "allocatedMemory": { + "type": "number" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "connectionLimit": { + "type": "number" + }, + "defaultValidity": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "properties": {}, + "type": "object" + }, + "extraContainers": { + "type": "array" + }, + "extraExtendedOptions": { + "type": "string" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "maxItemMemory": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "mountPath": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "storageSize": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "port": { + "type": "number" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "statefulStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "timeout": { + "type": "string" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "writebackBuffer": { + "type": "number" + }, + "writebackParallelism": { + "type": "number" + }, + "writebackSizeLimit": { + "type": "string" + } + }, + "type": "object" + }, + "rollout_operator": { + "properties": { + "enabled": { + "type": "boolean" + }, + "webhooks": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failurePolicy": { + "type": "string" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "backendPort": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "hostnames": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "parentRefs": { + "type": "array" + }, + "paths": { + "properties": { + "compactor": { + "items": { + "type": "string" + }, + "type": "array" + }, + "distributor": { + "items": { + "type": "string" + }, + "type": "array" + }, + "queryFrontend": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ruler": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ruler": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "directories": { + "properties": {}, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "sidecar": { + "type": "boolean" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "sidecar": { + "properties": { + "disableX509StrictVerification": { + "type": "boolean" + }, + "enableUniqueFilenames": { + "type": "boolean" + }, + "livenessProbe": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "rules": { + "properties": { + "enabled": { + "type": "boolean" + }, + "folder": { + "type": "string" + }, + "folderAnnotation": { + "type": "string" + }, + "healthPort": { + "type": "number" + }, + "label": { + "type": "string" + }, + "labelValue": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "script": { + "type": "string" + }, + "searchNamespace": { + "type": "string" + }, + "watchClientTimeout": { + "type": "number" + }, + "watchMethod": { + "type": "string" + }, + "watchServerTimeout": { + "type": "number" + } + }, + "type": "object" + }, + "skipTlsVerify": { + "type": "boolean" + }, + "startupProbe": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "singleBinary": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "enabled": { + "type": "boolean" + }, + "scaleDown": { + "properties": {}, + "type": "object" + }, + "scaleUp": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customMetrics": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "dataVolumeParameters": { + "properties": {}, + "type": "object" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "selector": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "selectorLabels": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "sidecar": { + "type": "boolean" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "targetModule": { + "type": "string" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "tableManager": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "retention_deletes_enabled": { + "type": "boolean" + }, + "retention_period": { + "type": "number" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "test": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "canaryServiceAddress": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "hostUsers": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "prometheusAddress": { + "type": "string" + }, + "timeout": { + "type": "string" + } + }, + "type": "object" + }, + "write": { + "properties": { + "affinity": { + "type": "string" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "scaleDown": { + "properties": { + "policies": { + "items": { + "properties": { + "periodSeconds": { + "type": "number" + }, + "type": { + "type": "string" + }, + "value": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + }, + "stabilizationWindowSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "scaleUp": { + "properties": { + "policies": { + "items": { + "properties": { + "periodSeconds": { + "type": "number" + }, + "type": { + "type": "string" + }, + "value": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeClaimTemplates": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "fullnameOverride": { + "type": "string" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "dataVolumeParameters": { + "properties": { + "emptyDir": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "selector": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + }, + "volumeClaimsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "selectorLabels": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-loki-config": { + "properties": { + "additionalNetworkAllow": { + "type": "array" + }, + "dashboardAnnotations": { + "properties": {}, + "type": "object" + }, + "storage": { + "properties": { + "egressCidr": { + "type": "string" + }, + "internal": { + "properties": { + "enabled": { + "type": "boolean" + }, + "remoteNamespace": { + "type": "string" + }, + "remoteSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "vector": { + "properties": { + "uds-vector-config": { + "properties": { + "additionalNetworkAllow": { + "type": "array" + } + }, + "type": "object" + }, + "vector": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array" + }, + "autoscaling": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "behavior": { + "properties": {}, + "type": "object" + }, + "customMetric": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "external": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "array" + }, + "commonLabels": { + "properties": {}, + "type": "object" + }, + "containerPorts": { + "type": "array" + }, + "customConfig": { + "properties": { + "acknowledgements": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "api": { + "properties": { + "address": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "data_dir": { + "type": "string" + }, + "sinks": { + "properties": { + "loki_host": { + "properties": { + "buffer": { + "properties": { + "max_size": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "encoding": { + "properties": { + "codec": { + "type": "string" + } + }, + "type": "object" + }, + "endpoint": { + "type": "string" + }, + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "labels": { + "properties": { + "collector": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "host": { + "type": "string" + }, + "job": { + "type": "string" + } + }, + "type": "object" + }, + "path": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "loki_pod": { + "properties": { + "buffer": { + "properties": { + "max_size": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "encoding": { + "properties": { + "codec": { + "type": "string" + } + }, + "type": "object" + }, + "endpoint": { + "type": "string" + }, + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "labels": { + "properties": { + "app": { + "type": "string" + }, + "collector": { + "type": "string" + }, + "component": { + "type": "string" + }, + "container": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "host": { + "type": "string" + }, + "job": { + "type": "string" + }, + "namespace": { + "type": "string" + } + }, + "type": "object" + }, + "path": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "prom_exporter": { + "properties": { + "address": { + "type": "string" + }, + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sources": { + "properties": { + "internal_metrics": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "node_logs": { + "properties": { + "include": { + "items": { + "type": "string" + }, + "type": "array" + }, + "oldest_first": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "pod_logs": { + "properties": { + "oldest_first": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "transforms": { + "properties": { + "node_logs_labelled": { + "properties": { + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "pod_logs_labelled": { + "properties": { + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "daemonSet": { + "properties": { + "apiVersion": { + "type": "string" + } + }, + "type": "object" + }, + "dataDir": { + "type": "string" + }, + "defaultVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "defaultVolumes": { + "items": { + "properties": { + "hostPath": { + "properties": { + "path": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "env": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "valueFrom": { + "properties": { + "fieldRef": { + "properties": { + "fieldPath": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "envFrom": { + "type": "array" + }, + "existingConfigMaps": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraObjects": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fullnameOverride": { + "type": "string" + }, + "haproxy": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "autoscaling": { + "properties": { + "customMetric": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "external": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "containerPorts": { + "type": "array" + }, + "customConfig": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "existingConfigMap": { + "type": "string" + }, + "extraContainers": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "initContainers": { + "type": "array" + }, + "livenessProbe": { + "properties": { + "tcpSocket": { + "properties": { + "port": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podPriorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": { + "tcpSocket": { + "properties": { + "port": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "rollWorkload": { + "type": "boolean" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "loadBalancerIP": { + "type": "string" + }, + "ports": { + "type": "array" + }, + "topologyKeys": { + "type": "array" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "strategy": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "hostAliases": { + "type": "array" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "className": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "type": "array" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "initContainers": { + "type": "array" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "logLevel": { + "type": "string" + }, + "minReadySeconds": { + "type": "number" + }, + "nameOverride": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "existingClaim": { + "type": "string" + }, + "finalizers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "hostPath": { + "properties": { + "enabled": { + "type": "boolean" + }, + "path": { + "type": "string" + } + }, + "type": "object" + }, + "retentionPolicy": { + "properties": {}, + "type": "object" + }, + "selectors": { + "properties": {}, + "type": "object" + }, + "size": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "number" + } + }, + "type": "object" + }, + "podHostNetwork": { + "type": "boolean" + }, + "podLabels": { + "properties": { + "vector.dev/exclude": { + "type": "string" + } + }, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "podMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "honorLabels": { + "type": "boolean" + }, + "honorTimestamps": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "metricRelabelings": { + "type": "array" + }, + "path": { + "type": "string" + }, + "podTargetLabels": { + "type": "array" + }, + "port": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "scrapeTimeout": { + "type": "string" + } + }, + "type": "object" + }, + "podPriorityClassName": { + "type": "string" + }, + "psp": { + "properties": { + "create": { + "type": "boolean" + } + }, + "type": "object" + }, + "rbac": { + "properties": { + "create": { + "type": "boolean" + }, + "extraRules": { + "type": "array" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "role": { + "type": "string" + }, + "rollWorkload": { + "type": "boolean" + }, + "rollWorkloadExtraObjects": { + "type": "boolean" + }, + "rollWorkloadSecrets": { + "type": "boolean" + }, + "secrets": { + "properties": { + "generic": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "internalTrafficPolicy": { + "type": "string" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "loadBalancerIP": { + "type": "string" + }, + "ports": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "port": { + "type": "number" + }, + "protocol": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "topologyKeys": { + "type": "array" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceHeadless": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "shareProcessNamespace": { + "type": "boolean" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSet": { + "properties": { + "apiVersion": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "updateStrategy": { + "properties": {}, + "type": "object" + }, + "workloadResourceAnnotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" +} diff --git a/packages/logging/zarf-values.yaml b/packages/logging/zarf-values.yaml new file mode 100644 index 0000000000..c457e13d41 --- /dev/null +++ b/packages/logging/zarf-values.yaml @@ -0,0 +1,10 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the UDS Core Logging package. +loki: + loki: {} + uds-loki-config: {} +vector: + vector: {} + uds-vector-config: {} diff --git a/packages/logging/zarf.yaml b/packages/logging/zarf.yaml index 69b03ec3ed..9b9b46cdcf 100644 --- a/packages/logging/zarf.yaml +++ b/packages/logging/zarf.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Defense Unicorns +# Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial kind: ZarfPackageConfig @@ -17,6 +17,11 @@ metadata: dev.uds.keywords: uds,logging,loki,vector dev.uds.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMb2dvcyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTQuNTRpbiIgaGVpZ2h0PSIyNGluIiB2aWV3Qm94PSIwIDAgMTA0Ni42NyAxNzI4Ij48cGF0aCBkPSJNOTczLjI2LDEyNzAuNzFjLTQzLjY2LDU2LjQtMTMyLjYxLDQ3LjI2LTE2OC41LDQwLjgxLTkuNDYtMS42OS0xOC4zMSw1LjU1LTE3LjQzLDE0LjM4LDIuMDMsMjAuNDQsMTUuNzIsNDAuNDUsMTUuNzIsNDAuNDUtOC4xLDMuMDYtMTUuNTUsNS4xMi0yMi4zNCw2LjUxLDIuMDUsOCwzLjk4LDE1Ljk3LDUuODIsMjMuOSw1LjktLjI1LDExLjEtLjcyLDE1LjA4LTEuMSwxNC44OC0xLjQxLDI5LjQxLTUuMDQsNDMuNDItMTAuODQtMTIuNTktMTEuNC0xOS4xOS0yMy40OC0xOS42My0yNC4yOGwtMTIuMjMtMjIuNzZjLTIuOTEtNS40MSwyLjM0LTExLjU3LDguMTQtOS41N2wyNC40NCw4LjQyYzE0LjM4LDQuOTcsNTEuNTMsMTQuNjIsODUuNjctMi43NiwyNi44Ny0xMy42OSw0MC4yNC0zNy43Nyw1My4xNS02MS4wNiwxLjUzLTIuNzYsMi45OS01LjU1LDQuMzktOC4zNi01LjEzLDIuNS0xMC4zNyw0LjU1LTE1LjY5LDYuMjVaTTQ1NS41NSwxNDgyLjdjLTIuNzIsOS4xLTcuMzEsMTkuNTYtMTQuOTYsMzAuNmwtMi44LDQuOTVjLS4yNS40NS0uNDMuOTQtLjY3LDEuMzksMjMuOTYsMjguNzIsNTQuMzQsMzYuMDIsNzUuMjMsMzcuMTVsMi41NC0yMy4wMmMuOS04LjA4LS4xLTE2LjI4LTIuODgtMjMuOS0yNy40Ni0xLjg4LTQ1LjUyLTE1LjA3LTU2LjQ1LTI3LjE4Wk02MTguODEsMTMyNS4wM2MtMzMuMzQsMTIuNC02NS41LDE4LjY5LTk1Ljc4LDE4LjY5LTMwLjUxLDAtNjIuOTMtNi40LTk2LjUzLTE4Ljk5LTQuMy0xLjYxLTguNjItMy4yOS0xMi45Ni01LjExLTEzLjgzLTUuNzgtMjcuODgtMTIuNjUtNDIuMDUtMjAuNDUtMTEuNTIsMTUuMzYtMjAuODQsMzIuNTMtMjcuNCw1MS4xNmwtMzIuMTcsOTEuMzZjLTguNjgsMjQuNjYtMTMuNjksNTAuNDEtMTQuODcsNzYuNTNsLTMuMTEsNjguNTVoMzMuMDdsMy43LTc3Ljg1YzEuMjUtMjYuMTYsNi43Mi01MS45NSwxNi4yLTc2LjM2bDI5LjgxLTc2LjcxYzMuMS04LDEyLjMzLTExLjcxLDIwLjExLTguMS4yNC4xMS40Ny4yMS43MS4zMi43Ny4zNSwxLjUuNzUsMi4yMiwxLjE3LDMuMjIsMS45LDYuNTgsMy41MywxMC4wMiw0LjkyLDAsMC0uMDMuMDUtLjAzLjA1LDAsMCw0MC45NiwyNC4xNywxMTEuMzgsMjIuMDEsNjIuMzEtMS45LDEzNy44OC02My40NSwxNTQuNDctNzcuNi0xNC41MSw4LjA0LTI4LjksMTUuMDgtNDMuMDYsMjEtNC41OSwxLjkyLTkuMTYsMy43MS0xMy43MSw1LjRaTTcwNS44OSwxNTI4LjY1bC01LjI2LDQzLjM4aDI0Ljg4Yy4zNi03MC4wMy0yMS45OS0xMDAuOTQtMjMuMTUtMTAyLjUxLDMuNzUsOC45Niw3LjQ4LDI2LjU0LDMuNTMsNTkuMTNaTTU1NS4zMiwxNDczLjQxYy00LjI3LTQuNzctOS4wNi05LjEzLTE0LjQtMTIuOTEtMTIuNzgtOS4wNi0yNS4xLTE0LjQ2LTMwLjg2LTE2LjczbDE0LjkzLDIyLjIxLDksMTMuNGMyLjk0LDQuMzksNS40OSw5LjAxLDcuNiwxMy44Miw2LjEsMTMuODksOC40NSwyOS4xOSw2Ljc4LDQ0LjI3bC0zLjYxLDMyLjY4LTEuODYsMTYuODUtMS44NiwxNi45aDMzLjI0bDMuMjctNjcuNTljMS4xMS0yMi45Mi02LjczLTQ1LjEzLTIxLjQ1LTYyLjA0LS4yNS0uMjktLjUyLS41OC0uNzgtLjg2Wk02NDYuMDgsOTEzLjc5Yy0xOC4xNywyMy4zOS0zMy4yNyw1MS43Ni00My40LDgzLjc2LTcuMzIsMjMuMTEtMTEuNDQsNDYuMTctMTIuNjQsNjguMzQtLjM4LDcuMDktLjQ0LDE0LjA4LS4yMywyMC45Nyw3LjI3LDMuMjQsMTMuODIsNi44NiwxOS43MiwxMC42My0xLjE3LTEwLjI4LTEuNzMtMjAuODMtMS42OC0zMS42LjE4LTM1LjAzLDYuNzgtNzIuMiwxOS42Mi0xMDguNjcsNS4zMi0xNS4xMSwxMS41OC0yOS42MywxOC42MS00My40M1pNNDAzLjM3LDExODUuOXMtLjA2LjAyLS4wOC4wMmMtMTMuNDgsMTgtMzAuNTgsMzEuMDEtNTAuNjMsMzguMDctOC42NywzLjA1LTE3LjYxLDQuODYtMjYuNzIsNS41Miw0Ljg5LDMuNjYsOS45Niw3LjM1LDE1LjIzLDExLjA0LDcuOSw1LjUzLDE1LjYxLDEwLjYyLDIzLjEzLDE1LjM0LDUuMSwzLjIsMTAuMTEsNi4yLDE1LjAzLDkuMDUsNS4yMywzLjAyLDEwLjM2LDUuODUsMTUuMzksOC41LDIuMTUsMS4xMyw0LjI4LDIuMjMsNi4zOSwzLjMtLjk2LTIuMjQtMS44Mi00LjQ0LTIuNjItNi42MS0yLjI4LTYuMTgtMy45NC0xMi4wOC01LjExLTE3LjY5LTEuNDYtNy4wMS0yLjE2LTEzLjU2LTIuMjgtMTkuNTktLjYtMjkuNjMsMTIuMjgtNDYuOTMsMTIuMjgtNDYuOTNoLjAxWk00MTcuMzgsOTU3LjIyYzEyLjg0LDM2LjQ3LDE5LjQ0LDczLjY0LDE5LjYyLDEwOC42Ny4wNSwxMC44MS0uNTEsMjEuNDEtMS43LDMxLjczLDYuMjctNC4wMywxMy4yNy03Ljg5LDIxLjEtMTEuMywxLjUyLTYuNjEsMi43MS0xMy40MiwzLjUtMjAuNDMsNC43MS00MS42Ny0zLjQ4LTg5Ljg0LTI1Ljk0LTEzNi4xNS0yOS40My02MC42Ni03Ni41NC0xMDQuMDQtMTI0LjY1LTEyMC45Nyw1LjMzLDMuNDksMTAuNjMsNy4zNCwxNS44OSwxMS41NSwzOS40NywzMS42MSw3Mi4yMSw4MC4yNCw5Mi4xNywxMzYuOVpNNzM0LjE4LDc4Ni4yNWMtMy4zNS0uNjQtNi41NS0xLjM0LTkuNjYtMi4wOCwwLDAsMCwwLDAsMC01LjI0LDMuNzEtMTAuNCw3LTE1LjUsOS45Ny0yOS45OCwxNy40Ny01Ny4yNywyMi43MS03OS4xMiwyMi43MWgtLjk1YzMuNCwzLjUyLDYuMjYsNi4zMSw4LjQ4LDguNCwyLjk1LDIuNzgsNC43Miw0LjMsNC43OCw0LjM1bDEyLjQ2LDEwLjU0YzIwLjc4LTMuNjksNDQuNTctMTIuNTIsNjkuODUtMzAuNDZ2LjAybDEyLjgyLTkuMTFjNS43NS00LjA3LDMuNzYtMTMuMDItMy4xNi0xNC4zNFpNMzg0LjEyLDc2Ni4wNWMtNC4zNC0xMS40Ny02LjkxLTIyLjE3LTguNC0zMSwwLS4wMi0uMDItLjA1LS4wMi0uMDUsMCwwLTQuMjcsNjEuNzIsNDEuMDQsMTA4LjMsOS40Nyw5LjA5LDIwLjM1LDE3LjY4LDMyLjgxLDI1LjIxLDMuNzksMi4zLDcuNjYsNC40NCwxMS41OSw2LjQ0LDI3LjU1LDE0LjA0LDU4LjU1LDIxLjA3LDkyLjc3LDIxLjA3LDI1LjUxLDAsNTIuODMtMy45Miw4MS44MS0xMS43NWwxNi4zMy00LjQzYzYuMjEtMS42OSw3Ljk4LTkuNjQsMy4wNi0xMy43OWwtMTEuMjQtOS41LTguMTQsMi4yMWMtMy44MiwxLjAzLTcuNjEsMS45OS0xMS4zNywyLjg4LTI0Ljc4LDUuOS00OC4yOSw4Ljg3LTcwLjQ0LDguODctMzQuMjEsMC02NS4yMS03LjAzLTkyLjc2LTIxLjA3LTMuOTMtMi03LjgtNC4xNC0xMS41OS02LjQ0LTEyLjQ2LTcuNTMtMjMuMzQtMTYuMTItMzIuODEtMjUuMjEtMy4wNS0zLjE0LTUuODYtNi4zNC04LjQ5LTkuNTgtOS45NS0xMi4yMS0xNy4wNC0yNC45NC0yMi4xLTM3LjAzLS43Mi0xLjcyLTEuNC0zLjQzLTIuMDQtNS4xMVpNMzc0LjY5LDU1Ni4wNGMtLjAzLS41MiwwLTEuMDUtLjAzLTEuNTgtLjA2LTEuMzctLjA3LTIuNzUtLjA3LTQuMTMsMC0xLjAyLDAtMi4wMy4wMy0zLjA1LjA3LTEuODguMi0zLjc3LjM4LTUuNjYuMDQtLjQzLjA0LS44NS4wOC0xLjI3bDExLjA3LTEwMS41NWMxLjMzLTEyLjI0LDIuOC0yNC40OCw0LjMzLTM2LjcyLjEyLS45OS4yMy0xLjk3LjM1LTIuOTYuODktNy4wNCwxLjktMTQuMDgsMi44NS0yMS4xMi41MS0zLjc3LDEtNy41NCwxLjUzLTExLjMxLjM4LTIuNjguNzItNS4zNywxLjEtOC4wNS4wNS0uMzYuMS0uNzMuMTUtMS4wOSwwLDAsMCwwLDAtLjAxLS4yNi4wNi0uNTMuMTMtLjc5LjE5LTQuNjksMS4wNC05LjQ1LDIuMTUtMTQuMjgsMy4zNi0uNTEuMTMtMS4wMy4yNi0xLjU0LjM5LTQuOSwxLjI0LTkuODcsMi41NS0xNC44OSwzLjk3LS4zOS4xMS0uNzguMjMtMS4xNy4zNC01LjIsMS40OC0xMC40NSwzLjA1LTE1Ljc2LDQuNzUtLjA4LjAzLS4xNy4wNi0uMjYuMDgtNS4zMSwxLjctMTAuNjcsMy41MS0xNi4wNiw1LjQzLS4yMy4wOC0uNDUuMTUtLjY3LjIzaDBjLjE0LDIuNTEuMzIsNS40MS41OCw4LjY3LDIuNDYsMzEuNjksMTEuMzIsOTcuNjcsNDMuMDcsMTcxLjA5WiIgZmlsbD0iIzFmZGZmZiIvPjxwYXRoIGQ9Ik00MjguNzcsMTYzMy4wNmgyOS4xOWw2Ljc0LTE5LjQ4Yy44NC0yLjQzLDQuMjctMi40Myw1LjExLDBsNi43NCwxOS40OGgyNy4zNmwzLjIyLTI5LjE1aC4wMXYtLjA1cy03Ny42MiwwLTc3LjYyLDBsLS43NSwyOS4yWk03ODIuMTEsMTYwNS43MmgtODUuNTZsLTMuMzEsMjcuMzNoMzAuODVsNi43NC0xOS40OGMuODQtMi40Myw0LjI3LTIuNDMsNS4xLDBsNi43NCwxOS40OGg0MC44N2MtLjI4LTguNTgtLjY2LTE1LjUyLTEuNDMtMjcuMzNaTTM2OC4xMSwxNjIwLjQ2aC03NS43MmwtMS43NCwzOC4zOC0uMyw2LjY2aDM3LjM2bDExLjM3LTMyLjg2Yy44NC0yLjQzLDQuMjctMi40Myw1LjExLDBsMTEuMzcsMzIuODZoMzguMjZ2LTQ1LjA0aC0yNS43Wk02NDYuOTUsMTYzNy41OWgtMTA5LjYzbC0xLjM2LDEyLjMyLTEuODYsMTYuODQtMy4wNCwyNy41NWg0OC4xNWwxMi4zNi0zNS43M2MuODQtMi40Myw0LjI3LTIuNDMsNS4xMSwwbDEyLjM2LDM1LjczaDQyLjc5bDEuOTUtMTYuMSwxLjM5LTExLjQ0aDBzMy41NC0yOS4xNywzLjU0LTI5LjE3aC0xMS43NlpNNTIyLjQzLDE3NS43OGwxMC42LTIuMjNjOC4xMi0xLjcyLDEzLjI1LTkuNzMsMTEuNDMtMTcuODMtMy44LTE2LjktNy44LTMzLjc1LTExLjk3LTUwLjU3bC01LjY1LTIyLjdjLTMuNTgtMTUuOTQtNy40NC0yOS0xMS4zNy0zOS43NS0uOTMtMi41My0xLjg2LTQuOTMtMi43OS03LjItMi43MywyLjA2LTYuOTgsNi4zNC0xMS45LDE1LjA1LTYuMjEsMTAuOTktMTMuNDksMjkuMDQtMjAuMTQsNTguNjRsLS4wOS4zNy01LjY1LDIyLjdjLS4zMSwxLjI0LS41OSwyLjQ4LS44OSwzLjcyLDEzLjE4LDE1LjQ4LDI5LjMzLDI4Ljc3LDQ4LjQxLDM5LjhaTTQ1MC41NCwzMTQuNTNjLjQzLjQuODIuODEsMS4yNiwxLjIxLDUuNDksNC45NCwxMS4zMiw5LjU1LDE3LjQ0LDEzLjg3LDcuOTYsNS42MywxNi40MiwxMC43NSwyNS40MSwxNS4zMiwyNS4yNSwxMi44MSw1NC41OSwyMS40Myw4Ny44NiwyNS44Ni0xLjA0LTguMDUtMi4xMy0xNi4wOS0zLjI2LTI0LjEyLS44LTUuNy0xLjY0LTExLjM4LTIuNDctMTcuMDctLjg0LTUuNy0xLjY3LTExLjQxLTIuNTUtMTcuMTEtMS44NC0xMS44OC0zLjc1LTIzLjc1LTUuNzctMzUuNi0xLjU4LTkuMjctNy41MS0xNy4xOC0xNS45LTIxLjQyLTMxLjAxLTE1LjYyLTQ4Ljg4LTM3LjUxLTQ4Ljg4LTM3LjUxaC4wM2MtMTUuNDItOC41My0yOS40My0xOC4yOC00MS45OS0yOS4yNC04LjQzLDM3LjktMTUuOTMsNzYuMDgtMjIuNDcsMTE0LjQyLDMuNTIsMy44Nyw3LjI3LDcuNjgsMTEuMzEsMTEuMzlaTTQ2OC43OCw2MTUuNjFjMS43LjA0LDMuMzguMDksNS4xMi4wOSwyOS45NywwLDUzLjM1LTUuNTksNzEuNDUtMTMuNTQsNC41My0xLjk5LDMuODgtOC42NC0uOTMtOS43NS00OS43Mi0xMS41Mi03OC42OS0zNC40NS05MC42LTQ1Ljg0LTE1LjMxLTcuNDMtMjkuNTYtMTUuOTUtNDIuNzItMjUuNDlsLTIuNSwyMi45Yy0yLjMzLDIxLjM2LDYuODQsNDIuMjUsMjMuOTUsNTQuNTEsMTAuNSw3LjUyLDIyLjYzLDEzLjIxLDM2LjIzLDE3LjExWk01OTkuMDcsNTM2LjdjLjctNS43Ny43Ni0xMS42Ny4xMi0xNy42bC02LjExLTU2LjAxYy0xLjM4LTEyLjY1LTEwLjcyLTIzLjAzLTIzLjItMjUuNi03MC4zMS0xNC40Ni0xMDEuNTItNTQuNDEtMTAxLjUyLTU0LjQxbC4wNy0uMDdjLTEzLjU4LTcuMzEtMjYuMjYtMTUuNjMtMzcuOTMtMjUuMDgtNC4xMiwyOC4xNC03Ljc3LDU2LjMzLTEwLjg0LDg0LjQ5bC0yLjYyLDI0LjA0YzIxLjY5LDIwLjQxLDQ4LjMyLDM2Ljc0LDc5LjU1LDQ4LjU1LDMwLjAyLDExLjM1LDY0LjM0LDE4LjU3LDEwMi40NywyMS42N1oiIGZpbGw9IiNlYjIxMjYiLz48cGF0aCBkPSJNOTE1LjExLDEyNzIuOTVjLTcuMTQtMS4xOS0xNC41My0yLjQtMjMuNzEtMy4yMi01Ljg3LS41Mi01OC41Ni00LjU2LTEwMy41NywxNC4wMi0xMS41Niw0Ljc3LTIxLjk1LDEwLjg1LTMxLjMsMTcuNjgsNS4xNSw5Ljg0LDkuNDgsMjAuMTksMTIuODQsMzEuMTMsNC4xMiwxMy40Miw3Ljg3LDI2Ljg4LDExLjMyLDQwLjMsNi43OS0xLjM4LDE0LjI0LTMuNDQsMjIuMzQtNi41MSwwLDAtMTMuNjktMjAuMDItMTUuNzItNDAuNDUtLjg4LTguODMsNy45Ny0xNi4wNywxNy40My0xNC4zOCwzNS45LDYuNDUsMTI0Ljg1LDE1LjYsMTY4LjUtNDAuODEtMy40MywxLjEtNi44OCwyLjA4LTEwLjM5LDIuODQtMTkuMDcsNC4xNC0zMi4zNiwxLjk1LTQ3Ljc1LS42Wk00MzcuMTEsMTUxOS42NWMtMy43LDcuMS01LjgyLDE1LTYuMDIsMjNsLS43MSwyNy41MWg4MC40OGwxLjQ4LTEzLjM2Yy0yMC44OS0xLjEzLTUxLjI3LTguNDMtNzUuMjMtMzcuMTVaTTc1Ny4zOSwxNDIxLjIzYy0uNjYtMy4xMS0xLjM0LTYuMjMtMi4wNC05LjM1LTEuMzItNS45Ny0yLjcyLTExLjk2LTQuMTYtMTcuOTYtMS41Ni02LjQ3LTMuMTktMTIuOTQtNC45LTE5LjQyLTIuODMtMTAuNy01Ljg2LTIxLjQxLTkuMTMtMzIuMDQtMS44Ni02LjA0LTQuMTYtMTEuODMtNi43MS0xNy40OC0yLjQ2LTUuNDUtNS4xOS0xMC43NS04LjI5LTE1LjgzLTIuOTYtNC44Ni02LjI2LTkuNTEtOS44LTE0LjAzLTMuMjctNC4xNy02LjctOC4yMy0xMC40NS0xMi4xLTguODEsNS41OC0xNy41OSwxMC43Ny0yNi4zMywxNS42MS0xNi41OCwxNC4xNS05Mi4xNSw3NS43LTE1NC40Nyw3Ny42LTcwLjQxLDIuMTYtMTExLjM4LTIyLjAxLTExMS4zOC0yMi4wMSwwLDAsLjAzLS4wNC4wMy0uMDUtMy40NC0xLjM5LTYuOC0zLjAyLTEwLjAyLTQuOTItLjcyLS40Mi0xLjQ1LS44Mi0yLjIyLTEuMTctLjI0LS4xMS0uNDctLjIxLS43MS0uMzItNy43OC0zLjYxLTE3LjAxLjEtMjAuMTEsOC4xbC0yOS44MSw3Ni43MWMtOS40OCwyNC40MS0xNC45Niw1MC4yLTE2LjIsNzYuMzZsLTMuNyw3Ny44NWg2OS4yN2wuNDMtMTYuNjEuNzMtMjguMzdjLjM2LTEzLjk1LDQuMTUtMjcuNzcsMTAuOTYtMzkuOTVsOC4yNi0xNC43OWMxLjQtMi40OCwxNC44NC0yNS41NSwzNi42NS0zNC44OC43Ni0uMzMsMS41NC0uMzksMi4yOS0uMjcsMS44OS4zLDMuNDksMS44OCwzLjU4LDMuOTkuMjUsNS42Mi0uMTMsMTUuMS0zLjYyLDI2LjgxLDEwLjkzLDEyLjExLDI4Ljk5LDI1LjMsNTYuNDUsMjcuMTgtLjM4LTEuMDUtLjgtMi4xLTEuMjUtMy4xMmwtMy43OS04LjYyYy02LjU0LTE1LjI3LTEwLjIzLTI4LjUtMTIuMTktMzkuNTYtMS45Ny0xMS4xMi0yLjE5LTIwLjA0LTEuOC0yNi41OS4wOS0xLjQ4Ljg1LTIuNiwxLjg5LTMuMjcsMS44MS0xLjE3LDQuNDUtLjk3LDUuOSwxLjE3bDkuMzIsMTMuODdjNS43NiwyLjI3LDE4LjA4LDcuNjcsMzAuODYsMTYuNzMsNS4zNCwzLjc4LDEwLjE0LDguMTQsMTQuNCwxMi45MS4yNi4yOS41Mi41Ny43OC44NiwxNC43MiwxNi45MSwyMi41NSwzOS4xMywyMS40NSw2Mi4wNGwtMy4yNyw2Ny41OWg4OC41MWwxLjgyLTE1LjAzLDIuMDQtMTYuODUuMy0yLjQ3LDMuNDgtMjguNzJjMS45Ni0xNi4xOCw1LjUzLTMyLjE0LDEwLjg2LTQ3LjU0LDQuMDQtMTEuNjcsOS4zNS0yMy45NiwxNS43Ny0zMi4xMywwLDAsMCwwLDAsMGguMDNzMi42NCwyLjA2LDUuMjgsOC4zNWMxLjE2LDEuNTYsMjMuNTEsMzIuNDgsMjMuMTUsMTAyLjUxaDUzLjk5Yy0zLjQ0LTM5LjEyLTkuNTYtODkuNDEtMjAuNDEtMTQyLjU4LS41Ni0yLjczLTEuMTItNS40Ny0xLjctOC4yMVpNMzk2LjQ2LDM1Ny41NmMtLjA1LjM2LS4xLjczLS4xNSwxLjA5LjA1LS4zNy4xMS0uNzMuMTctMS4xLDAsMC0uMDEsMC0uMDIsMFpNMzg2LjE3LDQzOC44YzEuMzMtMTIuMjQsMi43OS0yNC40OCw0LjMyLTM2LjcyLTEuNTMsMTIuMjQtMywyNC40OC00LjMzLDM2LjcybC0xMS4wNywxMDEuNTVjLS4wNS40Mi0uMDQuODUtLjA4LDEuMjcuMDQtLjQzLjA1LS44NS4xLTEuMjdsMTEuMDctMTAxLjU1Wk03MjQuNTEsNzg0LjE3czAsMCwwLDBoLjAxczAsMC0uMDIsMFpNMzkxLjA4LDEyMzIuODRjLjEyLDYuMDMuODIsMTIuNTgsMi4yOCwxOS41OSwxLjE3LDUuNjEsMi44MywxMS41MSw1LjExLDE3LjY5LjgsMi4xNywxLjY3LDQuMzcsMi42Miw2LjYxLDUyLjc5LDI2LjY3LDk0LjA1LDMzLjI5LDEyMS45MiwzMy4yOSwzMi40OSwwLDgzLjE5LTguOTksMTQ5LjE0LTQ4LjI5Ljc5LS40NywxLjU3LS45MywyLjM3LTEuNDEsMS41Ny0uOTUsMy4xNi0xLjkzLDQuNzUtMi45MiwzLjU1LTIuMTksNy4xMi00LjQ1LDEwLjc2LTYuODIsNC44My0zLjE2LDkuNzQtNi40NywxNC43Mi05Ljk1LjA0LS4wMy4wOS0uMDYuMTMtLjA5LDIuNjUtMS44Niw1LjI1LTMuNzEsNy44LTUuNTYsMi41LTEuODEsNC45NS0zLjYyLDcuMzUtNS40Mi02LjgxLS40Mi0xMy41Mi0xLjQ2LTIwLjExLTMuMi0yLjYtLjY5LTUuMTktMS40Ni03Ljc1LTIuMzYtMjcuNTgtOS43MS00OS41Ny0zMC42NS02NC4yMy02MC40MS0zLjQ5LTUuOTQtMTAuNC0xNi4xNS0yMS41Mi0yNi4yMy0zLjcyLTMuMzctNy42Mi02LjQ1LTExLjY3LTkuMjYtNi4zMS00LjQtMTMuMDEtOC4xMy0yMC4xLTExLjE3LTE1LjYxLTYuNy0zMy4wNC0xMC4wOS01Mi4xNy0xMC4wOS0zMy4zNSwwLTYxLjU5LDEwLjI3LTgzLjk0LDMwLjUzLTEyLjI3LDExLjEyLTE5LjQyLDIyLjQxLTIyLjQ5LDI3LjkyLS40MS44MS0uODUsMS41OS0xLjI4LDIuMzktLjMzLjY2LS41MiwxLjA3LS41MywxLjA5bC0uMDUtLjAyYy0zLjMyLDYuMTQtNi45NiwxMS44OS0xMC45MiwxNy4xOC4wMywwLC4wNi0uMDEuMDgtLjAyaC0uMDFzLTEyLjg4LDE3LjMxLTEyLjI4LDQ2Ljk0Wk01NDQuNDcsMTI1OC41OGMzLjM3LTExLjIsMTEuMDctMjYuMjIsMjguMTUtMjYuMjEsMTUuNCwwLDIyLjIyLDExLjM4LDI1LjE1LDE5LjY1LDEuMTIsMy4xNi0xLjA5LDYuNjItMy41Nyw1LjU5di0uMDJjLTkuMjEtMy44NS0yOC4xNi04Ljc1LTQ1LjQsNS45My0yLjQ0LDIuMDgtNS40My0xLjMzLTQuMzMtNC45NVpNNDQ2Ljg1LDEyNTIuMDNjMi45My04LjI3LDkuNzYtMTkuNjUsMjUuMTUtMTkuNjUsMTcuMDgsMCwyNC43OCwxNS4wMSwyOC4xNSwyNi4yMSwxLjA5LDMuNjItMS44OSw3LjAzLTQuMzMsNC45NS0xNy4yNC0xNC42OC0zNi4xOS05Ljc4LTQ1LjQtNS45M3YuMDJjLTIuNDgsMS4wMy00LjctMi40My0zLjU4LTUuNTlaTTY5OS42MSwxMTE4LjU2Yy0yMi43LDAtNDMuMDEtMTAuMTMtNTYuNzUtMjYuMDguODIsNy40OCwxLjk3LDE0LjgsMy41NCwyMS44NywyLjcyLDEyLjI4LDYuNSwyMy4zNiwxMS4yLDMzLjE0LDIuMjcsMy45MywzLjUzLDYuNjIsMy45MSw3LjQ1LDEwLjUyLDE4LjQxLDI0Ljc2LDMxLjI1LDQxLjg4LDM3LjI3LDIyLjc2LDguMDEsNDkuMSwzLjQ3LDc1LjY2LTEyLjY3LDUuODYtMy41NiwxMS43Mi03LjY2LDE3LjU2LTEyLjM0LDIuMTEtMS42OSw0LjE5LTMuNDQsNi4yNS01LjI0LjExLS4xLjIyLS4xOS4zNC0uMjksNi40Mi01LjYzLDEyLjYyLTExLjgsMTguNTctMTguNDUsMjMuNDMtMjYuMTksNDIuOTQtNTkuOSw1Ni4yOS05Ny44Mi44NC0yLjM5LDEuNjMtNC43OSwyLjQxLTcuMTksNi40NC0xOS42OCwxMC44OS0zOS40NCwxMy4yOC01OC43MywzLjUtMjguMjUsMi42MS01NS41MS0yLjgzLTgwLjAyLTguOTctNDAuNDQtMjkuMi02OC4wOS01Ni45OC03Ny44Ni03LjM3LTIuNTktMTUuMS0zLjg3LTIzLjA5LTMuODctMjIuMTcsMC00Ni4zNSw5Ljg1LTcwLjEyLDI4Ljg5LS41OC40Ni0xLjE0Ljk2LTEuNzEsMS40My0zMy44NiwyNy43Ny02Mi4xNCw3MC40LTc5Ljc0LDEyMC4zNy0xLjg1LDUuMjYtMy41MywxMC41My01LjEsMTUuOCwxMi42MS05LjY1LDI4LjMzLTE1LjQ0LDQ1LjQ0LTE1LjQ0LDcuMDEsMCwxMy43NywxLjAzLDIwLjIxLDIuODMtMTIuNiw2LjE4LTIxLjMsMTkuMS0yMS4zLDM0LjA4LDAsMjAuOTgsMTcuMDEsMzcuOTgsMzgsMzcuOTgsMTUuNDEsMCwyOC42NC05LjE4LDM0LjYxLTIyLjM2LDIuMjEsNy4wNiwzLjQsMTQuNTcsMy40LDIyLjM2cy0xLjE4LDE1LjItMy4zNiwyMi4yMmMtOS40NywzMC41MS0zNy45Myw1Mi42Ny03MS41Nyw1Mi42N1pNMzYyLjQ3LDExODAuMjRjMTYuOTctMTMuOTMsMjkuNDUtMzYuNTEsMzUuOTYtNjUuODcsMi41NC0xMS40NCw0LjA2LTIzLjQ5LDQuNjMtMzUuOTQtMTIuNTMsMjMuODUtMzcuNTIsNDAuMTQtNjYuMzQsNDAuMTQtMzMuNjQsMC02Mi4xLTIyLjE2LTcxLjU3LTUyLjY3LTIuMTgtNy4wMi0zLjM1LTE0LjQ4LTMuMzUtMjIuMjIsMC00MS4zNiwzMy41NS03NC44OSw3NC45My03NC44OSw3LjAyLDAsMTMuNzgsMS4wMywyMC4yMiwyLjg0LTEyLjYsNi4xOC0yMS4yOSwxOS4xLTIxLjI5LDM0LjA3LDAsMjAuOTgsMTcuMDEsMzcuOTgsMzgsMzcuOTgsMTAuNzIsMCwyMC4zOS00LjQ1LDI3LjMtMTEuNTktMS42MS0xMi4xOS00LjAyLTI0LjU2LTcuMjQtMzYuOTctMi4xOS04LjQzLTQuNzQtMTYuODgtNy42Ny0yNS4zLS4xNi0uNDYtLjMtLjkzLS40Ni0xLjM5LTE3LjktNTAuODItNDYuODMtOTQuMDgtODEuNDYtMTIxLjgxLTMyLjM0LTI1LjktNjUuNDQtMzQuNzktOTMuMjItMjUtNy4yMSwyLjU0LTEzLjksNi4zLTIwLjAyLDExLjE2LTE3LjQ4LDEzLjg1LTMwLjMyLDM2Ljc3LTM2Ljk2LDY2LjcxLTUuMDIsMjIuNjQtNi4xMyw0Ny42Mi0zLjUzLDczLjU1LDIuMzgsMjMuNjcsNy44NSw0OC4xNCwxNi4zOSw3Mi4zOWgwYzEzLjYxLDM4LjYzLDMzLjYxLDcyLjg4LDU3LjYzLDk5LjI4LDUuNjQsNi4yLDExLjUsMTEuOTksMTcuNTcsMTcuMjguMzMuMjkuNjcuNTUsMSwuODQsMS43NCwxLjUsMy40OSwyLjk5LDUuMjYsNC40MSw2Ljg3LDUuNSwxMy43NiwxMC4xOCwyMC42NCwxNC4xMywyNS41MiwxNC42NSw1MC43LDE4LjU4LDcyLjU4LDEwLjg4LDcuNi0yLjY3LDE0LjYyLTYuNzQsMjEuMDItMTEuOTlaTTEwMTIuMTQsNDMxLjgxYy0uMTctMi40MS0uOTMtNC42NC0yLjA3LTYuNjMtMi40NS00LjI4LTYuODMtNy4zLTEyLjAyLTcuNzItMzQuMTItMi43Ny03My4zNSwyLjYzLTExNy4wMiwxNi4xNC0zLjA0Ljk0LTYuMDYsMS45Mi05LjA2LDIuOTEtNS44NiwxLjkzLTExLjYxLDMuOTYtMTcuMjYsNi4wNC0yLjQ1LjktNC44NywxLjgyLTcuMjgsMi43NC0zLjMzLDEuMjgtNi42MywyLjU4LTkuODcsMy44OS0yMyw5LjMzLTQzLjU3LDE5LjM0LTYwLjEsMjguMDctMy43MywxLjk3LTcuOC0xLjk3LTUuOTUtNS43NiwyLjU3LTUuMjcsNS4yNC05Ljk2LDcuOTEtMTQuMjMsMTQuNjctMjMuNDUsMjkuNDgtMzIuNDYsMzAuMTMtMzIuODMtMTEuOTYtOS4wOS0yNC42NC0xNy4wOS0zNy44Ni0yMy44MS0yLjQ5LTEuMjYtNC45Ny0yLjQ3LTcuNDUtMy42OC00My4zOC0yMS4wOS04Ni4zMi0zMy43OC0xMjMuNzUtNDEuMzUtMS4wNC0uMjEtMi4wNy0uNDEtMy4xLS42Miw0LjA2LDI3LjkyLDcuNjYsNTUuODcsMTAuNyw4My44MWwxMS4wNywxMDEuNTRjMy43LDMzLjkyLTExLjMzLDY3LjA4LTM5LjIsODYuNTQtMjcuMywxOS4wNi02MS44OSwyOC43Mi0xMDIuODMsMjguNzJoMGMtNDEuNjYsMC03Ni43My0xMC4wMS0xMDQuMjItMjkuNzEtMjMuMTYtMTYuNi0zNy4wNy00My4xMS0zOC4yNS03MS40My4wMi41MiwwLDEuMDUuMDMsMS41OC0zMS43NS03My40Mi00MC42MS0xMzkuNC00My4wNy0xNzEuMDktLjI1LTMuMjYtLjQ0LTYuMTYtLjU4LTguNjYtMTguNTksNi42NS0zNy42MiwxNC42Ni01Ni42NywyNC4zNS0xMy4xNCw2LjY4LTI1Ljc1LDE0LjYyLTM3LjY1LDIzLjY0LjEuMDQuMjEuMDguMzEuMTMuMDUuMDMsMS43NCwxLjA0LDQuNDcsMy4xNyw1LjYsNC4zNywxNS42OCwxMy42NiwyNS43MiwyOS43LDIuNjcsNC4yNyw1LjM0LDguOTYsNy45MSwxNC4yMywxLjg1LDMuNzktMi4yMyw3LjczLTUuOTYsNS43Ni0xNS45NC04LjQyLTM1LjY0LTE4LjAyLTU3LjY1LTI3LjA2LS45NS0uMzktMS45LS43OS0yLjg3LTEuMTgtNS41OC0yLjI2LTExLjMxLTQuNDctMTcuMTYtNi42Mi01LjY2LTIuMDgtMTEuNDItNC4xMS0xNy4yOC02LjA0LTIuODUtLjk0LTUuNzMtMS44Ni04LjYyLTIuNzYtNDMuNjYtMTMuNTEtODIuOS0xOC45MS0xMTcuMDItMTYuMTQtNi4xMy40OS0xMS4xNCw0LjYtMTMuMTUsMTAuMTUtLjQ4LDEuMzMtLjg0LDIuNzItLjk0LDQuMTktMS4zMSwxOS4zNi0xLjMyLDQ2LjY1LDIuOTMsNzcuMjMsNC44MSwzNC42MSwxNC4xOCw2OC40NSwyNy44MywxMDAuNTgsNy4wOCwxNi42NywxNS40LDMyLjg3LDI0Ljc5LDQ4LjU5LDQuNjIsNy43NSw5LjUxLDE1LjM4LDE0LjY3LDIyLjg3LDQuODksNy4xLDEwLDE0LjA5LDE1LjM3LDIwLjk0LjAzLjA0LjA3LjA5LjEuMTMsMy41NSw0LjUyLDcuMTgsOS4wMSwxMC45MywxMy40MiwyLjM1LDIuNzYuODQsNy4wNS0yLjc0LDcuNjktMi42NC40Ny01Ljg0Ljg3LTkuMzUuOTgtMS41LDQ0LjQzLjU2LDkzLjMyLDguNDMsMTQ1LjMsMTMuOTQtNDAuMDcsMzkuMDQtNjguMDUsNzIuMjYtNzkuNzQsMzQuMjQtMTIuMDUsNzIuNTktNS4yOCwxMDkuNjEsMTguOTYsNDguMSwxNi45Myw5NS4yMSw2MC4zMSwxMjQuNjUsMTIwLjk3LDIyLjQ3LDQ2LjMxLDMwLjY1LDk0LjQ4LDI1Ljk0LDEzNi4xNS0uNzksNy4wMS0xLjk4LDEzLjgzLTMuNSwyMC40MywxNy43OS03Ljc0LDM5LjY3LTEzLjE4LDY2LjA4LTEzLjE5aC4wNGMyNywwLDQ5LjI3LDUuNyw2Ny4yNywxMy43Mi0uMjEtNi44OC0uMTUtMTMuODcuMjMtMjAuOTcsMS4yLTIyLjE3LDUuMzItNDUuMjMsMTIuNjQtNjguMzQsMTAuMTMtMzIsMjUuMjQtNjAuMzgsNDMuNC04My43NiwxOS4zMi0zNy45NCw0NC42Mi03MC4yOSw3My41Ni05My40Nyw0MS43Ni0zMy40NSw4Ni4zMy00NC4yOCwxMjUuNDktMzAuNDksMzMuODgsMTEuOTMsNTkuMzUsNDAuNzYsNzMuMTEsODIuMTMsOC4xNy01Mi44OCwxMC4zMi0xMDIuNjEsOC44LTE0Ny43Mi0zLjI5LS4xMy02LjI4LS41Mi04Ljc3LS45Ny0zLjU4LS42NS01LjA5LTQuOTMtMi43NC03LjY5LDMuNTktNC4yMyw3LjA5LTguNTEsMTAuNDktMTIuODQtLjAzLS40NC0uMDUtLjg4LS4wOC0xLjMxbC41Mi43M2M1LjIzLTYuNjcsMTAuMTktMTMuNDcsMTQuOTctMjAuMzcsNS4xNi03LjQ2LDEwLjA2LTE1LjA1LDE0LjY4LTIyLjc3LDkuNTgtMTUuOTcsMTguMDYtMzIuNDQsMjUuMjctNDkuMzksMTMuNjUtMzIuMTMsMjMuMDEtNjUuOTcsMjcuODItMTAwLjU4LDQuMjUtMzAuNTgsNC4yNC01Ny44NywyLjkzLTc3LjIzWk0yMDUuNTMsNTI0LjM1bC01Mi44NSw4Ny4zM2MtMi44NCw0LjY4LTkuNTIsNS40LTEzLjM4LDEuNDYtMi41OC0yLjYzLTUuMDItNS4yMi03LjM5LTcuOC01LjEyLTUuNTYtOS43Ny0xMS0xNC0xNi4zMS01LjAxLTYuMjktOS40Mi0xMi4zOS0xMy4yOS0xOC4zLTMzLjE1LTUwLjYtMjcuMTEtODYuOTItMjIuNDMtMTAxLjE1LDEuMjgtMy45LDUuMzgtNi4yOCw5LjUzLTUuNSwxNy44MywzLjMzLDM0Ljk1LDkuMTMsNTAuNCwxNS43MSw1LjM5LDIuMjksMTAuNTYsNC42NywxNS40OSw3LjA5LDUuMzEsMi42MSwxMC4zMyw1LjIzLDE1LDcuODEsMTMuNjksNy41NywyNC40LDE0LjY1LDMwLjYyLDE4Ljk5aDBjMy40OSwyLjQ2LDQuNDgsNy4wNiwyLjMxLDEwLjY3Wk03MzcuMzQsODAwLjU5bC0xMi44Miw5LjExdi0uMDJjLTI1LjI5LDE3Ljk0LTQ5LjA3LDI2Ljc3LTY5Ljg1LDMwLjQ2bC40Ni4zOWM0LjkxLDQuMTUsMy4xNSwxMi4xMS0zLjA3LDEzLjc5bC04LjE4LDIuMjIsMTEuMjQsOS41YzQuOTIsNC4xNiwzLjE1LDEyLjExLTMuMDYsMTMuNzlsLTE2LjMzLDQuNDNjLTI4Ljk4LDcuODMtNTYuMywxMS43NS04MS44MSwxMS43NS0zNC4yMSwwLTY1LjIyLTcuMDQtOTIuNzctMjEuMDctMy45My0yLTcuOC00LjE0LTExLjU5LTYuNDQtMTIuNDYtNy41My0yMy4zNC0xNi4xMi0zMi44MS0yNS4yMS00NS4zMi00Ni41Ny00MS4wNC0xMDguMy00MS4wNC0xMDguMywwLDAsLjAxLjA0LjAyLjA1LS4wMS0uMDgtLjAzLS4xNy0uMDQtLjI0LS43Ny00LjYyLDQuODUtNi45Nyw3Ljc0LTMuODguMjQuMjYuNTEuNDkuNzEuODQsMS44OCwzLjIzLDQuMDUsNi43Niw2LjQ1LDEwLjQ3LDI1Ljc3LDM5Ljc1LDgyLjM0LDEwMi43NywxNzguNDIsOTQuODIsOS4yMS0uNzYsMTguNzUtMi4xMSwyOC42OS00LjI2LTIyLjg4LTEwLjc0LTM5LjQ0LTMxLjY3LTUwLjYyLTUwLjk0LTUuMDMtOC42OC04Ljk3LTE3LjAzLTExLjktMjMuOTUtMS44NS00LjM4LDMuMzktOC4yOCw3LjA5LTUuMywyMC40LDE2LjQ2LDYyLjEsNDEuNTUsMTE0LjM5LDI3LjQ0LDQuOTMtMS4zMyw5Ljk0LTIuOTgsMTUuMDQtNS4wNSwxLjc1LS43MSwzLjUxLTEuNDUsNS4yOS0yLjI1LTEuODctMS4wMy0zLjc3LTIuMTMtNS42Ny0zLjMtMTAuNS03LjA1LTE3LjE0LTE3LjI4LTIxLjM1LTI3LjczLTIuOC02Ljk3LTQuNTQtMTQuMDMtNS41OC0yMC4zMi0uMjktMS43NS4zNy0zLjIxLDEuNDUtNC4xNiwxLjgyLTEuNTgsNC44NC0xLjcyLDYuNjUuNjMsMTEuMTIsMTQuNDcsMzQuMzcsMzMuODcsODEuNjgsNDIuODYsNi45MiwxLjMyLDguOSwxMC4yNywzLjE2LDE0LjM0bC0xMi44Miw5LjFjMy4xMS43NCw2LjMxLDEuNDQsOS42NiwyLjA4LDYuOTIsMS4zMiw4LjksMTAuMjcsMy4xNiwxNC4zNFpNOTQxLjU5LDU3MS4zOWMtMy44OCw1Ljg4LTguMywxMS45NS0xMy4zLDE4LjItNC4yNSw1LjMxLTguODksMTAuNzQtMTQuMDQsMTYuMy0yLjIyLDIuNC00LjUxLDQuODItNi45MSw3LjI2LTMuODYsMy45NC0xMC41NCwzLjIyLTEzLjM5LTEuNDZsLTUyLjg1LTg3LjMzYy0yLjE4LTMuNi0xLjE4LTguMjEsMi4zMS0xMC42NmgwYzYuMTUtNC4zMSwxNi43LTExLjI5LDMwLjE5LTE4Ljc3LDQuNjYtMi41OCw5LjY4LTUuMjIsMTUtNy44NCw0LjkyLTIuNDIsMTAuMDgtNC44MSwxNS40Ny03LjExLDE1LjU2LTYuNjUsMzIuODYtMTIuNTMsNTAuODYtMTUuOSw0LjE1LS43OCw4LjI2LDEuNiw5LjUzLDUuNSw0LjcsMTQuMjksMTAuNzcsNTAuODYtMjIuODYsMTAxLjhaTTUxNS40Nyw0Mi43MWMzLjkzLDEwLjc0LDcuNzksMjMuOCwxMS4zNywzOS43NWw1LjY1LDIyLjdjNC4xOCwxNi44Miw4LjE3LDMzLjY3LDExLjk3LDUwLjU3LDEuODIsOC4xLTMuMzEsMTYuMTEtMTEuNDMsMTcuODNsLTEwLjYsMi4yM2MxNS40OSw4Ljk2LDMyLjkxLDE2LjQ0LDUyLjIyLDIyLjQ0LTQuODEtMjIuMDktOS44OC00NC4xLTE1LjMyLTY1Ljk2bC01Ljc0LTIzLjA3Yy05LjAzLTQwLjE4LTE5LjIxLTU5LjA5LTI2LjMxLTY3LjkzLTQuOS02LjEtOC4zMi03LjQtOC44OC03LjU4aC0yLjU4LDBjLS4zLjEtMS40Mi41Mi0zLjE1LDEuODIuOTMsMi4yOCwxLjg2LDQuNjcsMi43OSw3LjJaTTU1Mi41NSwyNTUuNDdjOC4zOSw0LjI0LDE0LjMyLDEyLjE1LDE1LjksMjEuNDIsMi4wMiwxMS44NSwzLjkzLDIzLjcyLDUuNzcsMzUuNi44OCw1LjcsMS43MSwxMS40LDIuNTUsMTcuMTEuODQsNS42OSwxLjY4LDExLjM4LDIuNDcsMTcuMDcsMS4xMiw4LjAzLDIuMjIsMTYuMDcsMy4yNiwyNC4xMiw3LjU5LDEuMDEsMTUuNCwxLjc4LDIzLjM5LDIuMzUtMS4xMS03Ljk3LTIuMjktMTUuOTMtMy40OC0yMy44OS0uODYtNS43Ni0xLjcyLTExLjUxLTIuNjMtMTcuMjctLjkxLTUuNzctMS44Ni0xMS41My0yLjgyLTE3LjMtMy42NS0yMi4wNy03LjU3LTQ0LjEtMTEuODUtNjYuMDUtMzAuNDYtNy4zMS01Ny42NC0xNy41Mi04MS40My0zMC42OGgtLjAzczE3Ljg4LDIxLjg5LDQ4Ljg4LDM3LjUxWk01NjkuODgsNDM3LjVjMTIuNDgsMi41NiwyMS44MiwxMi45NSwyMy4yLDI1LjZsNi4xMSw1Ni4wMWMuNjUsNS45Mi41OSwxMS44Mi0uMTIsMTcuNiw4LjQ1LjY5LDE3LjExLDEuMTYsMjUuOTQsMS40NGwtMTAuNDQtOTUuN2MtLjgzLTcuNjItMS43OC0xNS4yNC0yLjY5LTIyLjg2LTU1LjcxLTIuODgtMTAzLjYzLTE1LjEzLTE0My40NS0zNi41NmwtLjA3LjA3czMxLjIxLDM5Ljk1LDEwMS41Miw1NC40MVpNNTQ1LjM0LDYwMi4xN2MtMTguMSw3Ljk1LTQxLjQ3LDEzLjU0LTcxLjQ1LDEzLjU0LTEuNzQsMC0zLjQyLS4wNS01LjEyLS4wOSwxNC40Niw0LjE1LDMwLjU4LDYuMjgsNDguMzQsNi4yOCwzNC40NywwLDYyLTcuNjIsODMuNTMtMjIuNjUsNi4wOC00LjI0LDExLjE4LTkuNTMsMTUuMTktMTUuNDktNTEuNTYtMi4zMS05Ny42OS0xMS4xNS0xMzcuNTktMjYuNTQtOC40My0zLjI1LTE2LjU2LTYuODEtMjQuNDQtMTAuNjMsMTEuOTEsMTEuMzksNDAuODksMzQuMzEsOTAuNiw0NS44NCw0LjgxLDEuMTEsNS40Niw3Ljc2LjkzLDkuNzVaIiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTEwMjUuMTYsMTE4Ny45MWwtMTQuNTEsMTYuODdjLTE2Ljc3LDE5LjUyLTM1LjI2LDMxLjU3LTU0Ljk3LDM1Ljg2LTEyLjc2LDIuNzctMjEuMTYsMS4zOC0zNS4wOC0uOTItNy40LTEuMjItMTUuNzktMi42LTI2LjIyLTMuNTMtNC43OS0uNDMtMzYuOTEtMi44OS03My45OCwzLjYxLTcuODcsMS4zOC0xNS45NiwzLjE3LTI0LjA3LDUuNDctNy4xNywyLjAzLTE0LjM0LDQuNDUtMjEuMzcsNy4zNS0xMy42Myw1LjYyLTI1Ljg4LDEyLjY2LTM2Ljg5LDIwLjU1LTIuNTItMy4xNi01LjE2LTYuMjUtNy45Mi05LjI3LDEyLjQxLTguOSwyMy43My0xNy42OSwzMy43Ni0yNS45MiwxNS4xOS0xMi40NiwyNy40My0yMy41NywzNS45Ni0zMS43LDUuOTctMy44MSwxMS45Mi04LjA2LDE3LjgtMTIuNzcsMzkuNDctMzEuNjEsNzIuMjEtODAuMjMsOTIuMTctMTM2LjksOC4xOC0yMy4yMiwxMy44LTQ2LjczLDE2Ljg4LTY5Ljc5LDMwLjE2LTEwMC41MiwzNy4yMS0xOTQuMiwzMy42LTI3My41Mi4wMi0uMDEuMDMtLjAyLjA1LS4wNCwyMS4yOC0yOC42NSwzOC44Ni01OS4yNiw1Mi40My05MS40LDE0LjgtMzUuMDUsMjQuODktNzEuOTYsMzAuMDEtMTA5LjcxLDQuMzktMzIuNDEsNC4zNS01OS43OCwzLjE4LTc5LjI0LTEuMTctMTkuMzEtMy40NS0zMC44NC0zLjY1LTMxLjc3aC0uMDJjLTEuMzQtNi41Ni02LjQzLTExLjcxLTEyLjk3LTEzLjExLTQ1LjA1LTkuNjgtOTguMy01LjE3LTE1OC4yOSwxMy4zOS04LjgsMi43Mi0xNy4zNSw1LjY4LTI1Ljc0LDguNzQtMTcuODktMTUuNi0zNy41Mi0yOC45Ni01OC4zNS0zOS41NS01My45LTI3LjM5LTEwNy42Mi00Mi4zMi0xNTIuNTUtNTAuNC0uOC0uMTQtMS42LS4yOC0yLjQtLjQyLTcuMDgtNDQuMDEtMTUuNDgtODcuODQtMjUuMDEtMTMxLjMyLTQuNzItMjEuNTQtOS42Ni00My4wMS0xNC45Ny02NC4zM2wtNS42LTIyLjUyYy04LjQ5LTM3LjY5LTE5LjctNjUuMjgtMzMuMzEtODIuMDNDNTM5LjM5LDIuNjcsNTI1Ljg0LjA2LDUxOSwwaC0zLjc0Yy02Ljg1LjA2LTIwLjM5LDIuNjgtMzQuMTMsMTkuNTktMTMuNjIsMTYuNzQtMjQuODIsNDQuMzQtMzMuMzEsODIuMDNsLTUuNjEsMjIuNTJjLTE2LjIxLDY1LjEzLTI5LjY4LDEzMS4zNi00MC4zMywxOTcuOTQtNDIuODUsOC40NC05Mi43NywyMy4xMi0xNDIuOCw0OC41NC0yMC43NywxMC41Ni00MC4zNCwyMy44Ni01OC4xOCwzOS40LTguMjYtMy0xNi42OC01LjkyLTI1LjMzLTguNi01OS45OC0xOC41NS0xMTMuMjQtMjMuMDctMTU4LjI4LTEzLjM5LTYuNTUsMS40LTExLjY0LDYuNTYtMTIuOTcsMTMuMTFoMGMtLjI1LDEuMjEtNC4wMywyMC4zLTQuMyw1MS4wOXY3LjA4Yy4xMywxNS4zMywxLjE2LDMzLjE1LDMuODMsNTIuODQsMi42NywxOS43NCw2Ljc0LDM5LjI1LDEyLjEsNTguMzksNC44OSwxNy40NSwxMC44NCwzNC42LDE3LjksNTEuMzIsMTMuNDYsMzEuODksMzAuODgsNjIuMjYsNTEuOTMsOTAuNzItLjQxLDguNzctLjY4LDE3LjcxLS44MSwyNi44Mi0uOTIsNjQuNTIsNS41MywxMzcuMzYsMjUuMzQsMjE0LjksMi4xNiw4LjQ1LDQuNDYsMTYuOTQsNi45NCwyNS40OS40NSw0LjA2Ljk2LDguMTQsMS41OCwxMi4yMywyLjI2LDE1LjA5LDUuNjQsMzAuMzQsMTAuMDgsNDUuNTUsMS44NSw2LjM1LDMuODYsMTIuNyw2LjA5LDE5LjAzLDE5Ljk2LDU2LjY3LDUyLjcsMTA1LjMsOTIuMTcsMTM2LjkxLDcuMDIsNS42MiwxNC4xMiwxMC41OCwyMS4yNiwxNC45MSwxNS4zLDE0LjQxLDQwLjY4LDM2Ljc2LDcyLjgzLDU5LjMyLDcuMDQsNC45NCwxNC4wNiw5LjYyLDIxLjA4LDE0LjEtNS45Miw4LjE3LTExLjMxLDE2Ljc2LTE2LjExLDI1LjczLTUuMzksMTAuMDctMTAuMSwyMC42LTEzLjk2LDMxLjU3bC0zMi4xNyw5MS4zNmMtOS43OCwyNy43Ny0xNS40MSw1Ni43Ny0xNi43NSw4Ni4xOWwtNi42NywxNDYuNzJjMCwuMTksMCwuMzcsMCwuNTZsLS45NywyMS40Yy0uMzUsNy41Myw1LjY4LDEzLjgyLDEzLjIyLDEzLjgyaDE0NS4zOGM3LjMxLDAsMTMuMjMtNS45MiwxMy4yMy0xMy4yMnYtMTUuOTJjLjE2LTEuMDkuMjctMi4xOS4zMy0zLjMxaDcyLjMzbC01LjE0LDQ2LjU3Yy0uODYsNy44Myw1LjI3LDE0LjY3LDEzLjE2LDE0LjY3aDEyLjFzLjA3LDAsLjEsMGMuMDcsMCwuMTMuMDEuMTkuMDFoMTM5LjU5cy4wOC0uMDEuMTEtLjAxYy4wMiwwLC4wNCwwLC4wNiwwaDkuNjMsMHMwLDAsMCwwYy4wMiwwLC4wNCwwLC4wNiwwLDYuNjYtLjAzLDEyLjI3LTUuMDIsMTMuMDgtMTEuNjNsMS4xNC05LjM5Yy4wMi0uMTIuMDYtLjI0LjA4LS4zNmw0LjgzLTM5Ljg1aDExMS42M3MuMDcsMCwuMTEsMGgzLjYyYzcuNDIsMCwxMy4zOC02LjA4LDEzLjIzLTEzLjVsLS4wOC0zLjdjLS4zNS0xNy4zNC0uNi0yNS4wNS0xLjQ2LTM4Ljk5LS40NS04LjA5LTEuMDUtMTcuMjgtMS44Mi0yNy4zNWwtLjc2LTExLjE4aC0uMTRjLTMuMjktMzguNjgtOS4yLTg4LjQ3LTE5Ljc5LTE0MS44OSw0LjMtLjI4LDguMDUtLjYzLDExLjA2LS45MiwyOS4zNC0yLjc4LDU3LjM5LTEyLjUzLDgzLjM4LTI4Ljk5bDE4LjI5LTExLjU5YzQuOC0zLjAzLDMuODgtMTAuMjctMS41Mi0xMi4wMiwxMy41Mi0xLjY3LDI3LjctNS41Myw0MS43OC0xMi43LDM2LjA2LTE4LjM2LDUzLjM5LTQ5LjYyLDY3LjMzLTc0Ljc0LDEyLjEtMjEuNzksMjAuODEtNDUuMzQsMjUuOTEtNzBsNC41Mi0yMS43OWMyLjMxLTExLjIyLTExLjgzLTE4LjE3LTE5LjMtOS40OFpNODkzLjc1LDk3OS40OWMtMi4zOSwxOS4zLTYuODUsMzkuMDUtMTMuMjgsNTguNzMtLjc4LDIuNC0xLjU3LDQuNzktMi40MSw3LjE5LTEzLjM1LDM3LjkyLTMyLjg2LDcxLjYzLTU2LjI5LDk3LjgyLTUuOTUsNi42NS0xMi4xNSwxMi44Mi0xOC41NywxOC40NS0uMTEuMS0uMjIuMTktLjM0LjI5LTIuMDYsMS44LTQuMTUsMy41NS02LjI1LDUuMjQtNS44NCw0LjY4LTExLjcsOC43OC0xNy41NiwxMi4zNC0yNi41NiwxNi4xNC01Mi45LDIwLjY4LTc1LjY2LDEyLjY3LTE3LjEyLTYuMDItMzEuMzYtMTguODYtNDEuODgtMzcuMjctLjM4LS44NC0xLjY0LTMuNTItMy45MS03LjQ1LTQuNy05Ljc4LTguNDctMjAuODYtMTEuMi0zMy4xNC0xLjU3LTcuMDctMi43Mi0xNC4zOS0zLjU0LTIxLjg3LDEzLjc0LDE1Ljk0LDM0LjA0LDI2LjA4LDU2Ljc1LDI2LjA4LDMzLjY0LDAsNjIuMS0yMi4xNiw3MS41Ny01Mi42NywyLjE4LTcuMDIsMy4zNi0xNC40OCwzLjM2LTIyLjIycy0xLjE5LTE1LjMtMy40LTIyLjM2Yy01Ljk3LDEzLjE3LTE5LjIsMjIuMzYtMzQuNjEsMjIuMzYtMjAuOTksMC0zOC0xNy0zOC0zNy45OCwwLTE0Ljk4LDguNy0yNy44OSwyMS4zLTM0LjA4LTYuNDQtMS44LTEzLjItMi44My0yMC4yMS0yLjgzLTE3LjExLDAtMzIuODMsNS44LTQ1LjQ0LDE1LjQ0LDEuNTctNS4yNywzLjI0LTEwLjU0LDUuMS0xNS44LDE3LjYtNDkuOTcsNDUuODgtOTIuNiw3OS43NC0xMjAuMzcuNTctLjQ3LDEuMTQtLjk3LDEuNzEtMS40MywyMy43Ny0xOS4wNCw0Ny45NS0yOC44OCw3MC4xMi0yOC44OSw4LDAsMTUuNzMsMS4yOCwyMy4wOSwzLjg3LDI3Ljc4LDkuNzcsNDguMDEsMzcuNDIsNTYuOTgsNzcuODYsNS40NCwyNC41Miw2LjMzLDUxLjc3LDIuODMsODAuMDJaTTQ3NC45MSwxMzIuMjZsNS42NS0yMi43LjA5LS4zN2M2LjY1LTI5LjU5LDEzLjkzLTQ3LjY1LDIwLjE0LTU4LjY0LDQuOTItOC43MSw5LjE3LTEyLjk5LDExLjktMTUuMDUsMS43My0xLjMsMi44NS0xLjcyLDMuMTUtMS44MWgwYy44NiwwLDEuNzMsMCwyLjU4LDAsLjU2LjE3LDMuOTgsMS40OCw4Ljg4LDcuNTgsNy4wOSw4Ljg0LDE3LjI4LDI3Ljc1LDI2LjMxLDY3LjkzbDUuNzQsMjMuMDdjNS40NCwyMS44NywxMC41LDQzLjg4LDE1LjMyLDY1Ljk2LTE5LjMxLTYtMzYuNzItMTMuNDgtNTIuMjItMjIuNDQtMTkuMDktMTEuMDQtMzUuMjMtMjQuMzItNDguNDEtMzkuOC4zLTEuMjQuNTgtMi40OC44OS0zLjcyWk00NjEuNywxODguNzJjMTIuNTYsMTAuOTcsMjYuNTcsMjAuNzEsNDEuOTksMjkuMjQsMjMuNzgsMTMuMTUsNTAuOTcsMjMuMzcsODEuNDMsMzAuNjgsNC4yOCwyMS45NSw4LjE5LDQzLjk4LDExLjg1LDY2LjA1Ljk1LDUuNzcsMS45MSwxMS41MywyLjgyLDE3LjMuOTEsNS43NSwxLjc2LDExLjUxLDIuNjMsMTcuMjcsMS4yLDcuOTYsMi4zNywxNS45MiwzLjQ4LDIzLjg5LTcuOTktLjU3LTE1LjgtMS4zNC0yMy4zOS0yLjM1LTMzLjI3LTQuNDMtNjIuNi0xMy4wNS04Ny44Ni0yNS44Ni05LTQuNTctMTcuNDYtOS42OS0yNS40MS0xNS4zMi02LjExLTQuMzItMTEuOTQtOC45My0xNy40NC0xMy44Ny0uNDQtLjQtLjgzLS44MS0xLjI2LTEuMjEtNC4wNC0zLjcxLTcuOC03LjUyLTExLjMxLTExLjM5LDYuNTQtMzguMzQsMTQuMDQtNzYuNTMsMjIuNDctMTE0LjQyWk00MTkuNjYsNDQyLjQ0YzMuMDctMjguMTcsNi43Mi01Ni4zNSwxMC44NC04NC40OSwxMS42Nyw5LjQ1LDI0LjM1LDE3Ljc3LDM3LjkzLDI1LjA4LDM5LjgyLDIxLjQyLDg3LjczLDMzLjY4LDE0My40NSwzNi41Ni45MSw3LjYyLDEuODYsMTUuMjQsMi42OSwyMi44NmwxMC40NCw5NS43Yy04LjgzLS4yOC0xNy40OC0uNzUtMjUuOTQtMS40NC0zOC4xNC0zLjExLTcyLjQ2LTEwLjMyLTEwMi40Ny0yMS42Ny0zMS4yMy0xMS44MS01Ny44Ni0yOC4xNS03OS41NS00OC41NWwyLjYyLTI0LjA0Wk00MDguNTksNTQzLjk5bDIuNS0yMi45YzEzLjE2LDkuNTQsMjcuNDEsMTguMDYsNDIuNzIsMjUuNDksNy44OCwzLjgyLDE2LjAxLDcuMzgsMjQuNDQsMTAuNjMsMzkuODksMTUuMzksODYuMDMsMjQuMjMsMTM3LjU5LDI2LjU0LTQuMDEsNS45Ni05LjExLDExLjI1LTE1LjE5LDE1LjQ5LTIxLjUzLDE1LjAzLTQ5LjA2LDIyLjY1LTgzLjUzLDIyLjY1LTE3Ljc2LDAtMzMuODgtMi4xMy00OC4zNC02LjI4LTEzLjYtMy45LTI1LjczLTkuNTktMzYuMjMtMTcuMTEtMTcuMTEtMTIuMjYtMjYuMjgtMzMuMTUtMjMuOTUtNTQuNTFaTTEyNy40NSw4NjkuNTVjLTcuODctNTEuOTgtOS45Mi0xMDAuODctOC40My0xNDUuMywzLjUyLS4xMSw2LjcxLS41MSw5LjM1LS45OCwzLjU4LS42NSw1LjA5LTQuOTMsMi43NC03LjY5LTMuNzUtNC40MS03LjM4LTguODktMTAuOTMtMTMuNDItLjAzLS4wNC0uMDctLjA5LS4xLS4xMy01LjM3LTYuODUtMTAuNDgtMTMuODQtMTUuMzctMjAuOTQtNS4xNi03LjQ5LTEwLjA1LTE1LjEyLTE0LjY3LTIyLjg3LTkuMzgtMTUuNzItMTcuNzEtMzEuOTItMjQuNzktNDguNTktMTMuNjUtMzIuMTMtMjMuMDItNjUuOTctMjcuODMtMTAwLjU4LTQuMjUtMzAuNTgtNC4yNC01Ny44Ny0yLjkzLTc3LjIzLjEtMS40Ny40Ni0yLjg2Ljk0LTQuMTksMi4wMS01LjU1LDcuMDItOS42NiwxMy4xNS0xMC4xNSwzNC4xMi0yLjc3LDczLjM2LDIuNjMsMTE3LjAyLDE2LjE0LDIuODkuODksNS43NywxLjgyLDguNjIsMi43Niw1Ljg2LDEuOTMsMTEuNjIsMy45NSwxNy4yOCw2LjA0LDUuODQsMi4xNSwxMS41OCw0LjM2LDE3LjE2LDYuNjIuOTYuMzksMS45MS43OCwyLjg3LDEuMTgsMjIsOS4wNCw0MS43MSwxOC42NCw1Ny42NSwyNy4wNiwzLjczLDEuOTcsNy44LTEuOTcsNS45Ni01Ljc2LTIuNTctNS4yNy01LjI0LTkuOTYtNy45MS0xNC4yMy0xMC4wNC0xNi4wNC0yMC4xMi0yNS4zMy0yNS43Mi0yOS43LTIuNzMtMi4xMy00LjQyLTMuMTUtNC40Ny0zLjE3LS4xLS4wNC0uMjEtLjA5LS4zMS0uMTMsMTEuOS05LjAyLDI0LjUtMTYuOTYsMzcuNjUtMjMuNjQsMTkuMDUtOS42OCwzOC4wOS0xNy43LDU2LjY3LTI0LjM1aDBjLjIzLS4wOS40NS0uMTYuNjctLjI0LDUuNC0xLjkyLDEwLjc2LTMuNzQsMTYuMDYtNS40My4wOS0uMDMuMTctLjA2LjI2LS4wOCw1LjMxLTEuNjksMTAuNTYtMy4yNywxNS43Ni00Ljc1LjM5LS4xMS43OC0uMjMsMS4xNy0uMzQsNS4wMy0xLjQyLDkuOTktMi43NCwxNC44OS0zLjk3LjUxLS4xMywxLjAzLS4yNiwxLjU0LS4zOSw0LjgzLTEuMiw5LjU5LTIuMzIsMTQuMjgtMy4zNi4yNi0uMDYuNTMtLjEzLjc5LS4xOSwwLDAsMCwwLDAsLjAxLDAsMCwuMDEsMCwuMDIsMC0uMDUuMzctLjEyLjczLS4xNywxLjEtLjM5LDIuNjgtLjczLDUuMzctMS4xLDguMDUtLjUzLDMuNzctMS4wMSw3LjU0LTEuNTMsMTEuMzEtLjk1LDcuMDQtMS45NiwxNC4wNy0yLjg1LDIxLjEyLS4xMi45OS0uMjMsMS45Ny0uMzUsMi45Ni0xLjUzLDEyLjI0LTIuOTksMjQuNDgtNC4zMiwzNi43MmwtMTEuMDcsMTAxLjU1Yy0uMDUuNDItLjA2Ljg1LS4xLDEuMjctLjE4LDEuODktLjMyLDMuNzgtLjM4LDUuNjYtLjA0LDEuMDItLjAzLDIuMDMtLjAzLDMuMDUsMCwxLjM4LjAxLDIuNzYuMDcsNC4xMywxLjE4LDI4LjMyLDE1LjA5LDU0LjgzLDM4LjI1LDcxLjQzLDI3LjQ5LDE5LjcsNjIuNTYsMjkuNywxMDQuMjIsMjkuN2gwYzQwLjkzLDAsNzUuNTMtOS42NiwxMDIuODMtMjguNzEsMjcuODgtMTkuNDYsNDIuOS01Mi42MiwzOS4yLTg2LjU0bC0xMS4wNy0xMDEuNTRjLTMuMDUtMjcuOTQtNi42NC01NS44OS0xMC43LTgzLjgxLDEuMDMuMiwyLjA2LjQxLDMuMS42MiwzNy40Miw3LjU4LDgwLjM3LDIwLjI3LDEyMy43NSw0MS4zNSwyLjQ4LDEuMjEsNC45NywyLjQxLDcuNDUsMy42OCwxMy4yMiw2LjcyLDI1Ljg5LDE0LjcyLDM3Ljg2LDIzLjgxLS42NS4zOC0xNS40Niw5LjM4LTMwLjEzLDMyLjgzLTIuNjcsNC4yNy01LjM0LDguOTYtNy45MSwxNC4yMy0xLjg1LDMuNzksMi4yMiw3LjczLDUuOTUsNS43NiwxNi41My04LjczLDM3LjEtMTguNzQsNjAuMS0yOC4wNywzLjI0LTEuMzIsNi41NC0yLjYxLDkuODctMy44OSwyLjQtLjkzLDQuODMtMS44NCw3LjI4LTIuNzQsNS42NS0yLjA5LDExLjQxLTQuMTEsMTcuMjYtNi4wNCwzLS45OSw2LjAyLTEuOTcsOS4wNi0yLjkxLDQzLjY2LTEzLjUxLDgyLjktMTguOTEsMTE3LjAyLTE2LjE0LDUuMTkuNDIsOS41NywzLjQ0LDEyLjAyLDcuNzIsMS4xNCwxLjk5LDEuOSw0LjIyLDIuMDcsNi42MywxLjMxLDE5LjM2LDEuMzIsNDYuNjUtMi45Myw3Ny4yMy00LjgxLDM0LjYxLTE0LjE4LDY4LjQ1LTI3LjgyLDEwMC41OC03LjIsMTYuOTUtMTUuNjgsMzMuNDItMjUuMjcsNDkuMzktNC42Myw3LjcxLTkuNTIsMTUuMzEtMTQuNjgsMjIuNzctNC43OCw2LjktOS43NSwxMy43LTE0Ljk3LDIwLjM3bC0uNTItLjczYy4wMy40My4wNS44Ny4wOCwxLjMxLTMuNDEsNC4zMy02LjksOC42MS0xMC40OSwxMi44NC0yLjM1LDIuNzYtLjg0LDcuMDUsMi43NCw3LjY5LDIuNS40NSw1LjQ4Ljg0LDguNzcuOTcsMS41Miw0NS4xMi0uNjMsOTQuODQtOC44LDE0Ny43Mi0xMy43Ni00MS4zNy0zOS4yMi03MC4yMS03My4xMS04Mi4xMy0zOS4xNi0xMy43OC04My43My0yLjk1LTEyNS40OSwzMC40OS0yOC45NCwyMy4xOC01NC4yNCw1NS41My03My41Niw5My40Ny03LjAzLDEzLjgtMTMuMjksMjguMzItMTguNjEsNDMuNDMtMTIuODQsMzYuNDctMTkuNDQsNzMuNjMtMTkuNjIsMTA4LjY3LS4wNiwxMC43Ny41MSwyMS4zMiwxLjY4LDMxLjYtNS45LTMuNzgtMTIuNDUtNy40LTE5LjcyLTEwLjYzLTE4LTguMDItNDAuMjYtMTMuNzEtNjcuMjctMTMuNzJoLS4wNGMtMjYuNDEsMC00OC4zLDUuNDUtNjYuMDgsMTMuMTktNy44MywzLjQxLTE0LjgzLDcuMjYtMjEuMSwxMS4zLDEuMTgtMTAuMzIsMS43NS0yMC45MiwxLjctMzEuNzMtLjE4LTM1LjAzLTYuNzgtNzIuMjEtMTkuNjItMTA4LjY3LTE5Ljk2LTU2LjY2LTUyLjctMTA1LjI5LTkyLjE3LTEzNi45LTUuMjYtNC4yMS0xMC41Ni04LjA2LTE1Ljg5LTExLjU1LTM3LjAxLTI0LjI0LTc1LjM3LTMxLTEwOS42MS0xOC45Ni0zMy4yMiwxMS42OS01OC4zMiwzOS42Ni03Mi4yNiw3OS43NFpNMjY4Ljg4LDExODEuMzVjLTYuODgtMy45NS0xMy43Ny04LjYzLTIwLjY0LTE0LjEzLTEuNzctMS40Mi0zLjUyLTIuOTEtNS4yNi00LjQxLS4zMy0uMjktLjY3LS41NS0xLS44NC02LjA2LTUuMjktMTEuOTItMTEuMDgtMTcuNTctMTcuMjgtMjQuMDItMjYuNC00NC4wMi02MC42NS01Ny42My05OS4yOWgwYy04LjU0LTI0LjIzLTE0LjAxLTQ4LjctMTYuMzktNzIuMzgtMi42MS0yNS45NC0xLjQ5LTUwLjkyLDMuNTMtNzMuNTUsNi42NC0yOS45NCwxOS40Ny01Mi44NSwzNi45Ni02Ni43MSw2LjEzLTQuODYsMTIuODItOC42MiwyMC4wMi0xMS4xNiwyNy43OC05Ljc4LDYwLjg3LS45LDkzLjIyLDI1LDM0LjYzLDI3LjczLDYzLjU2LDcwLjk5LDgxLjQ2LDEyMS44MS4xNi40Ni4zLjkyLjQ2LDEuMzksMi45Myw4LjQyLDUuNDgsMTYuODcsNy42NywyNS4zLDMuMjIsMTIuNDEsNS42NCwyNC43Nyw3LjI0LDM2Ljk3LTYuOTEsNy4xNC0xNi41OCwxMS41OS0yNy4zLDExLjU5LTIwLjk5LDAtMzgtMTctMzgtMzcuOTgsMC0xNC45OCw4LjY5LTI3Ljg5LDIxLjI5LTM0LjA3LTYuNDQtMS44LTEzLjItMi44NC0yMC4yMi0yLjg0LTQxLjM4LDAtNzQuOTMsMzMuNTMtNzQuOTMsNzQuODksMCw3Ljc0LDEuMTcsMTUuMiwzLjM1LDIyLjIyLDkuNDcsMzAuNTEsMzcuOTMsNTIuNjcsNzEuNTcsNTIuNjcsMjguODIsMCw1My44MS0xNi4yOSw2Ni4zNC00MC4xNC0uNTcsMTIuNDYtMi4wOSwyNC41LTQuNjMsMzUuOTQtNi41MSwyOS4zNi0xOC45OSw1MS45NC0zNS45Niw2NS44Ny02LjQsNS4yNS0xMy40MSw5LjMxLTIxLjAyLDExLjk5LTIxLjg3LDcuNy00Ny4wNiwzLjc3LTcyLjU4LTEwLjg4Wk0zNDEuMTYsMTI0MC41NWMtNS4yNy0zLjY5LTEwLjM0LTcuMzgtMTUuMjMtMTEuMDQsOS4xMS0uNjYsMTguMDUtMi40NiwyNi43Mi01LjUyLDIwLjA2LTcuMDYsMzcuMTUtMjAuMDcsNTAuNjMtMzguMDcsMy45Ny01LjI5LDcuNi0xMS4wNCwxMC45Mi0xNy4xOGwuMDUuMDJzLjItLjQzLjUzLTEuMDljLjQyLS44Ljg2LTEuNTgsMS4yOC0yLjM5LDMuMDgtNS41MiwxMC4yMy0xNi44MSwyMi40OS0yNy45MiwyMi4zNS0yMC4yNiw1MC41OC0zMC41Myw4My45NC0zMC41MywxOS4xMiwwLDM2LjU1LDMuMzksNTIuMTcsMTAuMDksNy4wOCwzLjA0LDEzLjc4LDYuNzcsMjAuMSwxMS4xNyw0LjA1LDIuODIsNy45NSw1Ljg5LDExLjY3LDkuMjYsMTEuMTEsMTAuMDcsMTguMDIsMjAuMjksMjEuNTIsMjYuMjMsMTQuNjYsMjkuNzYsMzYuNjUsNTAuNzEsNjQuMjMsNjAuNDEsMi41Ni45LDUuMTUsMS42Nyw3Ljc1LDIuMzYsNi41OCwxLjc1LDEzLjMsMi43OCwyMC4xMSwzLjItMi40LDEuOC00Ljg1LDMuNi03LjM1LDUuNDItMi41NiwxLjg1LTUuMTYsMy43MS03LjgsNS41Ni0uMDQuMDMtLjA5LjA2LS4xMy4wOS00Ljk4LDMuNDgtOS44OSw2LjgtMTQuNzIsOS45NS0zLjYzLDIuMzctNy4yMSw0LjYzLTEwLjc2LDYuODItMS41OS45OC0zLjE4LDEuOTctNC43NSwyLjkyLS43OS40OC0xLjU4Ljk0LTIuMzcsMS40MS02NS45NSwzOS4yOS0xMTYuNjUsNDguMjktMTQ5LjE0LDQ4LjI5LTI3Ljg3LDAtNjkuMTMtNi42Mi0xMjEuOTItMzMuMjktMi4xMS0xLjA3LTQuMjQtMi4xNy02LjM5LTMuMy01LjAzLTIuNjUtMTAuMTYtNS40Ny0xNS4zOS04LjUtNC45Mi0yLjg1LTkuOTMtNS44Ni0xNS4wMy05LjA1LTcuNTMtNC43Mi0xNS4yMy05LjgxLTIzLjEzLTE1LjM0Wk0zOTMuODEsMTY0OS45djE1LjZoLTM4LjI2bC0xMS4zNy0zMi44NmMtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMTEsMGwtMTEuMzcsMzIuODZoLTM3LjM2bC4zLTYuNjYsMS43NC0zOC4zOGgxMDEuNDJ2MjkuNDRaTTUwNy4xNCwxNjAzLjloLS4wMWwtMy4yMiwyOS4xNWgtMjcuMzZsLTYuNzQtMTkuNDhjLS44NC0yLjQzLTQuMjctMi40My01LjExLDBsLTYuNzQsMTkuNDhoLTI5LjE5bC43NS0yOS4yaDc3LjYydi4wNVpNNjU1LjE3LDE2NjYuNzVoMHMtMS4zOSwxMS40NS0xLjM5LDExLjQ1bC0xLjk1LDE2LjFoLTQyLjc5bC0xMi4zNi0zNS43M2MtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMTEsMGwtMTIuMzYsMzUuNzNoLTQ4LjE1bDMuMDQtMjcuNTUsMS44Ni0xNi44NCwxLjM2LTEyLjMyaDEyMS4zOWwtMy41NCwyOS4xNlpNNjgxLjI5LDE0OTMuM2MtNS4zMywxNS40LTguOSwzMS4zNS0xMC44Niw0Ny41NGwtMy40OCwyOC43Mi0uMywyLjQ3LTIuMDQsMTYuODUtMS44MiwxNS4wM2gtMTIxLjc1bDEuODYtMTYuOSwxLjg2LTE2Ljg1LDMuNjEtMzIuNjhjMS42Ni0xNS4wOC0uNjgtMzAuMzgtNi43OC00NC4yNy0yLjExLTQuODItNC42Ni05LjQ0LTcuNi0xMy44MmwtOS0xMy40LTE0LjkzLTIyLjIxLTkuMzItMTMuODdjLTEuNDQtMi4xNC00LjA5LTIuMzQtNS45LTEuMTctMS4wNC42Ny0xLjgsMS43OS0xLjg5LDMuMjctLjM5LDYuNTUtLjE3LDE1LjQ2LDEuOCwyNi41OSwxLjk2LDExLjA2LDUuNjUsMjQuMjksMTIuMTksMzkuNTZsMy43OSw4LjYyYy40NSwxLjAzLjg3LDIuMDcsMS4yNSwzLjEyLDIuNzgsNy42MiwzLjc4LDE1LjgyLDIuODgsMjMuOWwtMi41NCwyMy4wMi0xLjQ4LDEzLjM2aC04MC40OGwuNzEtMjcuNTFjLjItOCwyLjMyLTE1LjksNi4wMi0yMywuMjQtLjQ2LjQyLS45NC42Ny0xLjM5bDIuOC00Ljk1YzcuNjUtMTEuMDUsMTIuMjUtMjEuNSwxNC45Ni0zMC42LDMuNDktMTEuNzEsMy44Ni0yMS4xOSwzLjYyLTI2LjgxLS4wOS0yLjExLTEuNjktMy42OS0zLjU4LTMuOTktLjc0LS4xMi0xLjUzLS4wNi0yLjI5LjI3LTIxLjgxLDkuMzMtMzUuMjUsMzIuNC0zNi42NSwzNC44OGwtOC4yNiwxNC43OWMtNi44MSwxMi4xOC0xMC42LDI2LTEwLjk2LDM5Ljk1bC0uNzMsMjguMzctLjQzLDE2LjYxaC0xMDIuMzRsMy4xMS02OC41NWMxLjE4LTI2LjEyLDYuMTktNTEuODcsMTQuODctNzYuNTNsMzIuMTctOTEuMzZjNi41Ni0xOC42MywxNS44OC0zNS44MSwyNy40LTUxLjE2LDE0LjE3LDcuOCwyOC4yMSwxNC42Nyw0Mi4wNSwyMC40NSw0LjM0LDEuODEsOC42NiwzLjUsMTIuOTYsNS4xMSwzMy42MSwxMi41OCw2Ni4wMywxOC45OCw5Ni41MywxOC45OSwzMC4yOCwwLDYyLjQ0LTYuMjksOTUuNzgtMTguNjksNC41NS0xLjY5LDkuMTItMy40OCwxMy43MS01LjQsMTQuMTYtNS45MiwyOC41NS0xMi45Niw0My4wNi0yMSw4Ljc0LTQuODQsMTcuNTItMTAuMDMsMjYuMzMtMTUuNjEsMy43NSwzLjg3LDcuMTksNy45MywxMC40NSwxMi4xLDMuNTQsNC41MSw2Ljg0LDkuMTcsOS44LDE0LjAzLDMuMSw1LjA4LDUuODMsMTAuMzgsOC4yOSwxNS44MywyLjU1LDUuNjUsNC44NSwxMS40NCw2LjcxLDE3LjQ4LDMuMjcsMTAuNjQsNi4zLDIxLjM0LDkuMTMsMzIuMDQsMS43MSw2LjQ4LDMuMzQsMTIuOTYsNC45LDE5LjQyLDEuNDUsNiwyLjg0LDExLjk5LDQuMTYsMTcuOTYuNjksMy4xMiwxLjM4LDYuMjQsMi4wNCw5LjM1LjU4LDIuNzQsMS4xNSw1LjQ4LDEuNyw4LjIxLDEwLjg1LDUzLjE3LDE2Ljk3LDEwMy40NywyMC40MSwxNDIuNThoLTc4Ljg3bDUuMjYtNDMuMzhjMy45NS0zMi41OS4yMi01MC4xNi0zLjUzLTU5LjEzLTIuNjMtNi4zLTUuMjgtOC4zNS01LjI4LTguMzVoLS4wM3MwLDAsMCwwYy02LjQyLDguMTctMTEuNzMsMjAuNDYtMTUuNzcsMzIuMTNaTTc4My40NiwxNjMzLjA2aC00MC43OGwtNi43NC0xOS40OGMtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMSwwbC02Ljc0LDE5LjQ4aC0zMC44NWwzLjMxLTI3LjMzaDg1LjU2Yy43NywxMS44MSwxLjE1LDE4Ljc2LDEuNDMsMjcuMzNoLS4wOFpNOTg0LjU2LDEyNzIuODNjLTEyLjkxLDIzLjI5LTI2LjI4LDQ3LjM3LTUzLjE1LDYxLjA2LTM0LjE0LDE3LjM5LTcxLjI5LDcuNzMtODUuNjcsMi43NmwtMjQuNDQtOC40MmMtNS44LTItMTEuMDUsNC4xNS04LjE0LDkuNTdsMTIuMjMsMjIuNzZjLjQzLjc5LDcuMDQsMTIuODgsMTkuNjMsMjQuMjgtMTQuMDEsNS44LTI4LjUzLDkuNDItNDMuNDIsMTAuODQtMy45OC4zNy05LjE4Ljg1LTE1LjA4LDEuMS0xLjgzLTcuOTQtMy43Ni0xNS45LTUuODItMjMuOS0zLjQ1LTEzLjQyLTcuMi0yNi44OC0xMS4zMi00MC4zLTMuMzYtMTAuOTQtNy42OS0yMS4yOS0xMi44NC0zMS4xMyw5LjM1LTYuODMsMTkuNzMtMTIuOTEsMzEuMy0xNy42OCw0NS4wMS0xOC41Nyw5Ny43MS0xNC41NCwxMDMuNTctMTQuMDIsOS4xOC44MiwxNi41NiwyLjAzLDIzLjcxLDMuMjIsMTUuMzksMi41NSwyOC42OCw0Ljc1LDQ3Ljc1LjYsMy41MS0uNzYsNi45Ni0xLjc0LDEwLjM5LTIuODQsNS4zMi0xLjcsMTAuNTctMy43NSwxNS42OS02LjI1LTEuNCwyLjgyLTIuODYsNS42LTQuMzksOC4zNlpNMzc1LjcyLDczNS4wNWMxLjQ5LDguODMsNC4wNiwxOS41Myw4LjQsMzEsLjY0LDEuNjksMS4zMiwzLjM5LDIuMDQsNS4xMSw1LjA2LDEyLjA5LDEyLjE1LDI0LjgyLDIyLjEsMzcuMDMsMi42NCwzLjI0LDUuNDQsNi40NCw4LjQ5LDkuNTgsOS40Nyw5LjA5LDIwLjM1LDE3LjY4LDMyLjgxLDI1LjIxLDMuNzksMi4zLDcuNjYsNC40NCwxMS41OSw2LjQ0LDI3LjU1LDE0LjA0LDU4LjU1LDIxLjA3LDkyLjc2LDIxLjA3LDIyLjE2LDAsNDUuNjYtMi45Niw3MC40NC04Ljg3LDMuNzYtLjksNy41NS0xLjg1LDExLjM3LTIuODhsOC4xNC0yLjIxLDguMTgtMi4yMmM2LjIxLTEuNjksNy45OC05LjY0LDMuMDctMTMuNzlsLS40Ni0uMzktMTIuNDYtMTAuNTRjLS4wNi0uMDUtMS44My0xLjU3LTQuNzgtNC4zNS0yLjIyLTIuMDktNS4wOC00Ljg4LTguNDgtOC40aC45NWMyMS44NSwwLDQ5LjE1LTUuMjQsNzkuMTItMjIuNzEsNS4xLTIuOTcsMTAuMjYtNi4yNSwxNS41LTkuOTcsMCwwLDAsMCwuMDIsMGgtLjAxczEyLjgyLTkuMSwxMi44Mi05LjFjNS43NC00LjA3LDMuNzYtMTMuMDMtMy4xNi0xNC4zNC00Ny4zMi05LTcwLjU2LTI4LjQtODEuNjgtNDIuODYtMS44MS0yLjM2LTQuODMtMi4yMi02LjY1LS42My0xLjA5Ljk0LTEuNzUsMi40LTEuNDUsNC4xNiwxLjA0LDYuMjksMi43OCwxMy4zNiw1LjU4LDIwLjMyLDQuMjEsMTAuNDUsMTAuODQsMjAuNjgsMjEuMzUsMjcuNzMsMS45LDEuMTYsMy44LDIuMjcsNS42NywzLjMtMS43Ny44LTMuNTQsMS41NC01LjI5LDIuMjUtNS4xLDIuMDYtMTAuMTIsMy43Mi0xNS4wNCw1LjA1LTUyLjI5LDE0LjEtOTMuOTktMTAuOTktMTE0LjM5LTI3LjQ0LTMuNy0yLjk4LTguOTQuOTItNy4wOSw1LjMsMi45Miw2LjkyLDYuODYsMTUuMjcsMTEuOSwyMy45NSwxMS4xNywxOS4yNywyNy43NCw0MC4yLDUwLjYyLDUwLjk0LTkuOTUsMi4xNS0xOS40OCwzLjUtMjguNjksNC4yNi05Ni4wOCw3Ljk2LTE1Mi42NS01NS4wNy0xNzguNDItOTQuODItMi40MS0zLjcxLTQuNTgtNy4yNC02LjQ1LTEwLjQ3LS4yLS4zNC0uNDYtLjU3LS43MS0uODQtMi44OS0zLjEtOC41MS0uNzUtNy43NCwzLjg4LjAxLjA4LjAzLjE2LjA0LjI0Wk04OTMuOTYsNjExLjY5YzIuODQsNC42OCw5LjUzLDUuNCwxMy4zOSwxLjQ2LDIuNC0yLjQ0LDQuNjktNC44Niw2LjkxLTcuMjYsNS4xNC01LjU2LDkuNzktMTAuOTksMTQuMDQtMTYuMyw1LTYuMjUsOS40Mi0xMi4zMiwxMy4zLTE4LjIsMzMuNjMtNTAuOTQsMjcuNTYtODcuNTEsMjIuODYtMTAxLjgtMS4yNy0zLjktNS4zOC02LjI4LTkuNTMtNS41LTE4LDMuMzctMzUuMjksOS4yNC01MC44NiwxNS45LTUuMzgsMi4zLTEwLjU1LDQuNjktMTUuNDcsNy4xMS01LjMyLDIuNjItMTAuMzQsNS4yNS0xNSw3Ljg0LTEzLjQ5LDcuNDgtMjQuMDQsMTQuNDYtMzAuMTksMTguNzZoMGMtMy40OSwyLjQ2LTQuNDksNy4wNi0yLjMxLDEwLjY3bDUyLjg1LDg3LjMzWk0yMDMuMjIsNTEzLjY5aDBjLTYuMjItNC4zNi0xNi45Mi0xMS40NC0zMC42Mi0xOS00LjY3LTIuNTgtOS42OS01LjItMTUtNy44MS00LjkzLTIuNDItMTAuMS00Ljc5LTE1LjQ5LTcuMDktMTUuNDUtNi41Ny0zMi41OC0xMi4zNy01MC40LTE1LjcxLTQuMTUtLjc4LTguMjUsMS42LTkuNTMsNS41LTQuNjcsMTQuMjMtMTAuNzIsNTAuNTUsMjIuNDMsMTAxLjE1LDMuODcsNS45MSw4LjI4LDEyLjAxLDEzLjI5LDE4LjMsNC4yMyw1LjMxLDguODcsMTAuNzUsMTQsMTYuMzEsMi4zNywyLjU4LDQuODEsNS4xNyw3LjM5LDcuOCwzLjg2LDMuOTQsMTAuNTQsMy4yMiwxMy4zOC0xLjQ2bDUyLjg1LTg3LjMzYzIuMTgtMy42LDEuMTgtOC4yMS0yLjMxLTEwLjY2Wk00NTAuNDEsMTI1Ny42MnYtLjAyYzkuMjEtMy44NSwyOC4xNi04Ljc1LDQ1LjQxLDUuOTMsMi40NCwyLjA4LDUuNDItMS4zMyw0LjMzLTQuOTUtMy4zNy0xMS4yLTExLjA3LTI2LjIyLTI4LjE1LTI2LjIxLTE1LjQsMC0yMi4yMiwxMS4zOC0yNS4xNSwxOS42NS0xLjEyLDMuMTYsMS4wOSw2LjYyLDMuNTcsNS41OVpNNTQ4LjgsMTI2My41M2MxNy4yNC0xNC42OCwzNi4xOS05Ljc4LDQ1LjQtNS45M3YuMDJjMi40OCwxLjAzLDQuNy0yLjQzLDMuNTctNS41OS0yLjkzLTguMjctOS43NS0xOS42NS0yNS4xNS0xOS42NS0xNy4wOCwwLTI0Ljc4LDE1LjAxLTI4LjE1LDI2LjIxLTEuMDksMy42MiwxLjg5LDcuMDMsNC4zMyw0Ljk1WiIgZmlsbD0iIzA2MjM0YyIvPjwvc3ZnPg==" +values: + files: + - zarf-values.yaml + schema: zarf-values.schema.json + components: # Loki - name: loki diff --git a/packages/monitoring/zarf-values.schema.json b/packages/monitoring/zarf-values.schema.json new file mode 100644 index 0000000000..c6a2ee16cf --- /dev/null +++ b/packages/monitoring/zarf-values.schema.json @@ -0,0 +1,7720 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "global": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + } + }, + "type": "object" + }, + "grafana": { + "properties": { + "grafana": { + "properties": { + "admin": { + "properties": { + "existingSecret": { + "type": "string" + }, + "passwordKey": { + "type": "string" + }, + "userKey": { + "type": "string" + } + }, + "type": "object" + }, + "adminDomain": { + "type": "string" + }, + "adminUser": { + "type": "string" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "alerting": { + "properties": {}, + "type": "object" + }, + "assertNoLeakedSecrets": { + "type": "boolean" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "scaleDown": { + "properties": { + "policies": { + "items": { + "properties": { + "periodSeconds": { + "type": "number" + }, + "type": { + "type": "string" + }, + "value": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + }, + "stabilizationWindowSeconds": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "metrics": { + "items": { + "properties": { + "resource": { + "properties": { + "name": { + "type": "string" + }, + "target": { + "properties": { + "averageUtilization": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "minReplicas": { + "type": "number" + }, + "targetCPU": { + "type": "string" + }, + "targetMemory": { + "type": "string" + } + }, + "type": "object" + }, + "createConfigmap": { + "type": "boolean" + }, + "dashboardProviders": { + "properties": {}, + "type": "object" + }, + "dashboards": { + "properties": {}, + "type": "object" + }, + "dashboardsConfigMaps": { + "properties": {}, + "type": "object" + }, + "datasources": { + "properties": {}, + "type": "object" + }, + "defaultCurlOptions": { + "type": "string" + }, + "deploymentStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "downloadDashboards": { + "properties": { + "env": { + "properties": {}, + "type": "object" + }, + "envFromSecret": { + "type": "string" + }, + "envValueFrom": { + "properties": {}, + "type": "object" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "enableKubeBackwardCompatibility": { + "type": "boolean" + }, + "enableServiceLinks": { + "type": "boolean" + }, + "env": { + "properties": {}, + "type": "object" + }, + "envFromConfigMaps": { + "type": "array" + }, + "envFromSecret": { + "type": "string" + }, + "envFromSecrets": { + "type": "array" + }, + "envRenderSecret": { + "properties": {}, + "type": "object" + }, + "envValueFrom": { + "properties": {}, + "type": "object" + }, + "extraConfigmapMounts": { + "items": { + "properties": { + "configMap": { + "type": "string" + }, + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraContainerVolumes": { + "type": "array" + }, + "extraContainers": { + "type": "string" + }, + "extraEmptyDirMounts": { + "type": "array" + }, + "extraExposePorts": { + "type": "array" + }, + "extraInitContainers": { + "type": "array" + }, + "extraLabels": { + "properties": {}, + "type": "object" + }, + "extraObjects": { + "type": "array" + }, + "extraSecretMounts": { + "items": { + "properties": { + "defaultMode": { + "type": "number" + }, + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "secretName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "global": { + "properties": { + "imagePullSecrets": { + "type": "array" + } + }, + "type": "object" + }, + "gossipPortName": { + "type": "string" + }, + "grafana.ini": { + "properties": { + "analytics": { + "properties": { + "check_for_plugin_updates": { + "type": "boolean" + }, + "check_for_updates": { + "type": "boolean" + }, + "feedback_links_enabled": { + "type": "boolean" + }, + "reporting_enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "auth": { + "properties": { + "disable_login_form": { + "type": "boolean" + } + }, + "type": "object" + }, + "auth.generic_oauth": { + "properties": { + "allow_sign_up": { + "type": "boolean" + }, + "auth_url": { + "type": "string" + }, + "auto_login": { + "type": "boolean" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + }, + "email_attribute_path": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "login_attribute_path": { + "type": "string" + }, + "name": { + "type": "string" + }, + "name_attribute_path": { + "type": "string" + }, + "role_attribute_path": { + "type": "string" + }, + "role_attribute_strict": { + "type": "boolean" + }, + "scopes": { + "type": "string" + }, + "signout_redirect_url": { + "type": "string" + }, + "token_url": { + "type": "string" + }, + "use_refresh_token": { + "type": "boolean" + } + }, + "type": "object" + }, + "database": { + "properties": { + "wal": { + "type": "boolean" + } + }, + "type": "object" + }, + "log": { + "properties": { + "mode": { + "type": "string" + } + }, + "type": "object" + }, + "paths": { + "properties": { + "data": { + "type": "string" + }, + "logs": { + "type": "string" + }, + "plugins": { + "type": "string" + }, + "provisioning": { + "type": "string" + } + }, + "type": "object" + }, + "plugins": { + "properties": { + "preinstall_disabled": { + "type": "boolean" + }, + "public_key_retrieval_disabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "server": { + "properties": { + "domain": { + "type": "string" + }, + "root_url": { + "type": "string" + } + }, + "type": "object" + }, + "unified_storage": { + "properties": { + "index_path": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headlessService": { + "type": "boolean" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "imageRenderer": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPU": { + "type": "string" + }, + "targetMemory": { + "type": "string" + } + }, + "type": "object" + }, + "deploymentStrategy": { + "properties": {}, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "properties": { + "HTTP_HOST": { + "type": "string" + }, + "XDG_CACHE_HOME": { + "type": "string" + }, + "XDG_CONFIG_HOME": { + "type": "string" + } + }, + "type": "object" + }, + "envValueFrom": { + "properties": {}, + "type": "object" + }, + "existingSecret": { + "type": "string" + }, + "extraConfigmapMounts": { + "type": "array" + }, + "extraSecretMounts": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "grafanaProtocol": { + "type": "string" + }, + "grafanaSubPath": { + "type": "string" + }, + "healthcheckPath": { + "type": "string" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "networkPolicy": { + "properties": { + "extraIngressSelectors": { + "type": "array" + }, + "limitEgress": { + "type": "boolean" + }, + "limitIngress": { + "type": "boolean" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podPortName": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "progressDeadlineSeconds": { + "type": "string" + }, + "renderingCallbackURL": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "serverURL": { + "type": "string" + }, + "service": { + "properties": { + "appProtocol": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "port": { + "type": "number" + }, + "portName": { + "type": "string" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + }, + "serviceAccountName": { + "type": "string" + }, + "serviceMonitor": { + "properties": { + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "path": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "scheme": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "targetLabels": { + "type": "array" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "token": { + "type": "string" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraPaths": { + "type": "array" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "path": { + "type": "string" + }, + "pathType": { + "type": "string" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "initChownData": { + "properties": { + "enabled": { + "type": "boolean" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "ldap": { + "properties": { + "config": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "existingSecret": { + "type": "string" + } + }, + "type": "object" + }, + "lifecycleHooks": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "namespaceOverride": { + "type": "string" + }, + "networkPolicy": { + "properties": { + "allowExternal": { + "type": "boolean" + }, + "egress": { + "properties": { + "blockDNSResolution": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "ports": { + "type": "array" + }, + "to": { + "type": "array" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "explicitIpBlocks": { + "type": "array" + }, + "explicitNamespacesSelector": { + "properties": {}, + "type": "object" + }, + "ingress": { + "type": "boolean" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "notifiers": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "disableWarning": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "extraPvcLabels": { + "properties": {}, + "type": "object" + }, + "finalizers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inMemory": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "lookupVolumeName": { + "type": "boolean" + }, + "size": { + "type": "string" + }, + "type": { + "type": "string" + }, + "volumeName": { + "type": "string" + } + }, + "type": "object" + }, + "plugins": { + "type": "array" + }, + "podDisruptionBudget": { + "properties": {}, + "type": "object" + }, + "podPortName": { + "type": "string" + }, + "progressDeadlineSeconds": { + "type": "string" + }, + "rbac": { + "properties": { + "create": { + "type": "boolean" + }, + "extraClusterRoleRules": { + "type": "array" + }, + "extraRoleRules": { + "type": "array" + }, + "namespaced": { + "type": "boolean" + }, + "namespaces": { + "type": "array" + }, + "pspEnabled": { + "type": "boolean" + }, + "pspUseAppArmor": { + "type": "boolean" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostnames": { + "type": "array" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "sessionPersistence": { + "properties": {}, + "type": "object" + }, + "timeouts": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "loadBalancerClass": { + "type": "string" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "port": { + "type": "number" + }, + "portName": { + "type": "string" + }, + "sessionAffinity": { + "type": "string" + }, + "targetPort": { + "type": "number" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + }, + "nameTest": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "basicAuth": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "metricRelabelings": { + "type": "array" + }, + "path": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "scheme": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "targetLabels": { + "type": "array" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "shadowBundledPlugins": { + "type": "boolean" + }, + "shareProcessNamespace": { + "type": "boolean" + }, + "smtp": { + "properties": { + "existingSecret": { + "type": "string" + }, + "passwordKey": { + "type": "string" + }, + "userKey": { + "type": "string" + } + }, + "type": "object" + }, + "testFramework": { + "properties": { + "enabled": { + "type": "boolean" + }, + "imagePullPolicy": { + "type": "string" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "useStatefulSet": { + "type": "boolean" + }, + "verticalPodAutoscaler": { + "properties": { + "controlledResources": { + "properties": { + "cpu": { + "type": "boolean" + }, + "memory": { + "type": "boolean" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxAllowed": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "minAllowed": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "updateMode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-grafana-config": { + "properties": { + "additionalNetworkAllow": { + "type": "array" + }, + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "extraDatasources": { + "type": "array" + }, + "postgresql": { + "properties": { + "database": { + "type": "string" + }, + "egressCidr": { + "type": "string" + }, + "host": { + "type": "string" + }, + "internal": { + "properties": { + "enabled": { + "type": "boolean" + }, + "remoteNamespace": { + "type": "string" + }, + "remoteSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "password": { + "type": "string" + }, + "port": { + "type": "number" + }, + "ssl_mode": { + "type": "string" + }, + "user": { + "type": "string" + } + }, + "type": "object" + }, + "sso": { + "properties": { + "groups": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "uptime": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kube-prometheus-stack": { + "properties": { + "kube-prometheus-stack": { + "properties": { + "additionalPrometheusRulesMap": { + "properties": {}, + "type": "object" + }, + "alertmanager": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "alertmanagerSpec": { + "properties": { + "additionalArgs": { + "type": "array" + }, + "additionalConfig": { + "properties": {}, + "type": "object" + }, + "additionalConfigString": { + "type": "string" + }, + "additionalPeers": { + "type": "array" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "alertmanagerConfigMatcherStrategy": { + "properties": {}, + "type": "object" + }, + "alertmanagerConfigNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "alertmanagerConfigSelector": { + "properties": {}, + "type": "object" + }, + "alertmanagerConfiguration": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "clusterAdvertiseAddress": { + "type": "boolean" + }, + "clusterGossipInterval": { + "type": "string" + }, + "clusterLabel": { + "type": "string" + }, + "clusterPeerTimeout": { + "type": "string" + }, + "clusterPushpullInterval": { + "type": "string" + }, + "clusterTLS": { + "properties": {}, + "type": "object" + }, + "configMaps": { + "type": "array" + }, + "containers": { + "type": "array" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "enableServiceLinks": { + "type": "string" + }, + "externalUrl": { + "type": "string" + }, + "forceEnableClusterMode": { + "type": "boolean" + }, + "hostAliases": { + "type": "array" + }, + "hostNetwork": { + "type": "boolean" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "limits": { + "properties": {}, + "type": "object" + }, + "listenLocal": { + "type": "boolean" + }, + "logFormat": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "minReadySeconds": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "paused": { + "type": "boolean" + }, + "persistentVolumeClaimRetentionPolicy": { + "properties": {}, + "type": "object" + }, + "podAntiAffinity": { + "type": "string" + }, + "podAntiAffinityTopologyKey": { + "type": "string" + }, + "podManagementPolicy": { + "type": "string" + }, + "podMetadata": { + "properties": {}, + "type": "object" + }, + "portName": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "retention": { + "type": "string" + }, + "routePrefix": { + "type": "string" + }, + "schedulerName": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "secrets": { + "type": "array" + }, + "serviceName": { + "type": "string" + }, + "storage": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "string" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "updateStrategy": { + "properties": {}, + "type": "object" + }, + "useExistingSecret": { + "type": "boolean" + }, + "volumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "volumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "web": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "config": { + "properties": { + "global": { + "properties": { + "resolve_timeout": { + "type": "string" + } + }, + "type": "object" + }, + "inhibit_rules": { + "items": { + "properties": { + "equal": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source_matchers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "target_matchers": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "receivers": { + "items": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "properties": { + "group_by": { + "items": { + "type": "string" + }, + "type": "array" + }, + "group_interval": { + "type": "string" + }, + "group_wait": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "repeat_interval": { + "type": "string" + }, + "routes": { + "items": { + "properties": { + "matchers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "receiver": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "templates": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "enableFeatures": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "extraSecret": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "data": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "forceDeployDashboards": { + "type": "boolean" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "type": "array" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "paths": { + "type": "array" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "ingressPerReplica": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hostDomain": { + "type": "string" + }, + "hostPrefix": { + "type": "string" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "paths": { + "type": "array" + }, + "tlsSecretName": { + "type": "string" + }, + "tlsSecretPerReplica": { + "properties": { + "enabled": { + "type": "boolean" + }, + "prefix": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "namespaceOverride": { + "type": "string" + }, + "networkPolicy": { + "properties": { + "additionalIngress": { + "type": "array" + }, + "egress": { + "properties": { + "enabled": { + "type": "boolean" + }, + "rules": { + "type": "array" + } + }, + "type": "object" + }, + "enableClusterRules": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "gateway": { + "properties": { + "namespace": { + "type": "string" + }, + "podLabels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "monitoringRules": { + "properties": { + "configReloader": { + "type": "boolean" + }, + "prometheus": { + "type": "boolean" + } + }, + "type": "object" + }, + "policyTypes": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "minAvailable": { + "type": "number" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostnames": { + "type": "array" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "sessionPersistence": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "routePerReplica": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostDomain": { + "type": "string" + }, + "hostPrefix": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "sessionPersistence": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "secret": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "additionalPorts": { + "type": "array" + }, + "annotations": { + "properties": { + "zarf.dev/connect-description": { + "type": "string" + } + }, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "externalIPs": { + "type": "array" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": { + "zarf.dev/connect-name": { + "type": "string" + } + }, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": { + "clientIP": { + "properties": { + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "targetPort": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalEndpoints": { + "type": "array" + }, + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "enableHttp2": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "scheme": { + "type": "string" + }, + "selfMonitor": { + "type": "boolean" + }, + "targetLimit": { + "type": "number" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "servicePerReplica": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "stringConfig": { + "type": "string" + }, + "templateFiles": { + "properties": {}, + "type": "object" + }, + "tplConfig": { + "type": "boolean" + }, + "verticalPodAutoscaler": { + "properties": { + "controlledResources": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxAllowed": { + "properties": {}, + "type": "object" + }, + "minAllowed": { + "properties": {}, + "type": "object" + }, + "updatePolicy": { + "properties": { + "updateMode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "cleanPrometheusOperatorObjectNames": { + "type": "boolean" + }, + "commonLabels": { + "properties": {}, + "type": "object" + }, + "coreDns": { + "properties": { + "enabled": { + "type": "boolean" + }, + "service": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "port": { + "type": "string" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "crds": { + "properties": { + "enabled": { + "type": "boolean" + }, + "upgradeJob": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "properties": {}, + "type": "object" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "forceConflicts": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "customRules": { + "properties": {}, + "type": "object" + }, + "defaultRules": { + "properties": { + "additionalAggregationLabels": { + "type": "array" + }, + "additionalRuleAnnotations": { + "properties": {}, + "type": "object" + }, + "additionalRuleGroupAnnotations": { + "properties": { + "alertmanager": { + "properties": {}, + "type": "object" + }, + "configReloaders": { + "properties": {}, + "type": "object" + }, + "etcd": { + "properties": {}, + "type": "object" + }, + "general": { + "properties": {}, + "type": "object" + }, + "k8sContainerCpuUsageSecondsTotal": { + "properties": {}, + "type": "object" + }, + "k8sContainerMemoryCache": { + "properties": {}, + "type": "object" + }, + "k8sContainerMemoryRss": { + "properties": {}, + "type": "object" + }, + "k8sContainerMemorySwap": { + "properties": {}, + "type": "object" + }, + "k8sContainerResource": { + "properties": {}, + "type": "object" + }, + "k8sPodOwner": { + "properties": {}, + "type": "object" + }, + "kubeApiserverAvailability": { + "properties": {}, + "type": "object" + }, + "kubeApiserverBurnrate": { + "properties": {}, + "type": "object" + }, + "kubeApiserverHistogram": { + "properties": {}, + "type": "object" + }, + "kubeApiserverSlos": { + "properties": {}, + "type": "object" + }, + "kubeControllerManager": { + "properties": {}, + "type": "object" + }, + "kubePrometheusGeneral": { + "properties": {}, + "type": "object" + }, + "kubePrometheusNodeRecording": { + "properties": {}, + "type": "object" + }, + "kubeProxy": { + "properties": {}, + "type": "object" + }, + "kubeSchedulerAlerting": { + "properties": {}, + "type": "object" + }, + "kubeSchedulerRecording": { + "properties": {}, + "type": "object" + }, + "kubeStateMetrics": { + "properties": {}, + "type": "object" + }, + "kubelet": { + "properties": {}, + "type": "object" + }, + "kubernetesApps": { + "properties": {}, + "type": "object" + }, + "kubernetesResources": { + "properties": {}, + "type": "object" + }, + "kubernetesStorage": { + "properties": {}, + "type": "object" + }, + "kubernetesSystem": { + "properties": {}, + "type": "object" + }, + "network": { + "properties": {}, + "type": "object" + }, + "node": { + "properties": {}, + "type": "object" + }, + "nodeExporterAlerting": { + "properties": {}, + "type": "object" + }, + "nodeExporterRecording": { + "properties": {}, + "type": "object" + }, + "prometheus": { + "properties": {}, + "type": "object" + }, + "prometheusOperator": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "additionalRuleGroupLabels": { + "properties": { + "alertmanager": { + "properties": {}, + "type": "object" + }, + "configReloaders": { + "properties": {}, + "type": "object" + }, + "etcd": { + "properties": {}, + "type": "object" + }, + "general": { + "properties": {}, + "type": "object" + }, + "k8sContainerCpuUsageSecondsTotal": { + "properties": {}, + "type": "object" + }, + "k8sContainerMemoryCache": { + "properties": {}, + "type": "object" + }, + "k8sContainerMemoryRss": { + "properties": {}, + "type": "object" + }, + "k8sContainerMemorySwap": { + "properties": {}, + "type": "object" + }, + "k8sContainerResource": { + "properties": {}, + "type": "object" + }, + "k8sPodOwner": { + "properties": {}, + "type": "object" + }, + "kubeApiserverAvailability": { + "properties": {}, + "type": "object" + }, + "kubeApiserverBurnrate": { + "properties": {}, + "type": "object" + }, + "kubeApiserverHistogram": { + "properties": {}, + "type": "object" + }, + "kubeApiserverSlos": { + "properties": {}, + "type": "object" + }, + "kubeControllerManager": { + "properties": {}, + "type": "object" + }, + "kubePrometheusGeneral": { + "properties": {}, + "type": "object" + }, + "kubePrometheusNodeRecording": { + "properties": {}, + "type": "object" + }, + "kubeProxy": { + "properties": {}, + "type": "object" + }, + "kubeSchedulerAlerting": { + "properties": {}, + "type": "object" + }, + "kubeSchedulerRecording": { + "properties": {}, + "type": "object" + }, + "kubeStateMetrics": { + "properties": {}, + "type": "object" + }, + "kubelet": { + "properties": {}, + "type": "object" + }, + "kubernetesApps": { + "properties": {}, + "type": "object" + }, + "kubernetesResources": { + "properties": {}, + "type": "object" + }, + "kubernetesStorage": { + "properties": {}, + "type": "object" + }, + "kubernetesSystem": { + "properties": {}, + "type": "object" + }, + "network": { + "properties": {}, + "type": "object" + }, + "node": { + "properties": {}, + "type": "object" + }, + "nodeExporterAlerting": { + "properties": {}, + "type": "object" + }, + "nodeExporterRecording": { + "properties": {}, + "type": "object" + }, + "prometheus": { + "properties": {}, + "type": "object" + }, + "prometheusOperator": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "additionalRuleLabels": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appNamespacesOperator": { + "type": "string" + }, + "appNamespacesTarget": { + "type": "string" + }, + "create": { + "type": "boolean" + }, + "disabled": { + "properties": {}, + "type": "object" + }, + "keepFiringFor": { + "type": "string" + }, + "kubeletClientCertificateExpiration": { + "properties": { + "critical": { + "type": "number" + }, + "warning": { + "type": "number" + } + }, + "type": "object" + }, + "kubeletServerCertificateExpiration": { + "properties": { + "critical": { + "type": "number" + }, + "warning": { + "type": "number" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "node": { + "properties": { + "fsSelector": { + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "properties": { + "alertmanager": { + "type": "boolean" + }, + "configReloaders": { + "type": "boolean" + }, + "etcd": { + "type": "boolean" + }, + "general": { + "type": "boolean" + }, + "k8sContainerCpuUsageSecondsTotal": { + "type": "boolean" + }, + "k8sContainerMemoryCache": { + "type": "boolean" + }, + "k8sContainerMemoryRss": { + "type": "boolean" + }, + "k8sContainerMemorySwap": { + "type": "boolean" + }, + "k8sContainerMemoryWorkingSetBytes": { + "type": "boolean" + }, + "k8sContainerResource": { + "type": "boolean" + }, + "k8sPodOwner": { + "type": "boolean" + }, + "kubeApiserverAvailability": { + "type": "boolean" + }, + "kubeApiserverBurnrate": { + "type": "boolean" + }, + "kubeApiserverHistogram": { + "type": "boolean" + }, + "kubeApiserverSlos": { + "type": "boolean" + }, + "kubeControllerManager": { + "type": "boolean" + }, + "kubePrometheusGeneral": { + "type": "boolean" + }, + "kubePrometheusNodeRecording": { + "type": "boolean" + }, + "kubeProxy": { + "type": "boolean" + }, + "kubeSchedulerAlerting": { + "type": "boolean" + }, + "kubeSchedulerRecording": { + "type": "boolean" + }, + "kubeStateMetrics": { + "type": "boolean" + }, + "kubelet": { + "type": "boolean" + }, + "kubernetesApps": { + "type": "boolean" + }, + "kubernetesResources": { + "type": "boolean" + }, + "kubernetesStorage": { + "type": "boolean" + }, + "kubernetesSystem": { + "type": "boolean" + }, + "network": { + "type": "boolean" + }, + "node": { + "type": "boolean" + }, + "nodeExporterAlerting": { + "type": "boolean" + }, + "nodeExporterRecording": { + "type": "boolean" + }, + "prometheus": { + "type": "boolean" + }, + "prometheusOperator": { + "type": "boolean" + }, + "windows": { + "type": "boolean" + } + }, + "type": "object" + }, + "runbookUrl": { + "type": "string" + } + }, + "type": "object" + }, + "extraManifests": { + "type": "string" + }, + "fullnameOverride": { + "type": "string" + }, + "global": { + "properties": { + "imagePullSecrets": { + "type": "array" + }, + "rbac": { + "properties": { + "create": { + "type": "boolean" + }, + "createAggregateClusterRoles": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "grafana": { + "properties": { + "additionalDataSources": { + "type": "array" + }, + "additionalDataSourcesString": { + "type": "string" + }, + "admin": { + "properties": { + "existingSecret": { + "type": "string" + }, + "passwordKey": { + "type": "string" + }, + "userKey": { + "type": "string" + } + }, + "type": "object" + }, + "adminUser": { + "type": "string" + }, + "defaultDashboardsEditable": { + "type": "boolean" + }, + "defaultDashboardsEnabled": { + "type": "boolean" + }, + "defaultDashboardsInterval": { + "type": "string" + }, + "defaultDashboardsTimezone": { + "type": "string" + }, + "deleteDatasources": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "extraConfigmapMounts": { + "type": "array" + }, + "forceDeployDashboards": { + "type": "boolean" + }, + "forceDeployDatasources": { + "type": "boolean" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "path": { + "type": "string" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "namespaceOverride": { + "type": "string" + }, + "operator": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "dashboardsConfigMapRefEnabled": { + "type": "boolean" + }, + "folder": { + "type": "string" + }, + "folderRef": { + "type": "string" + }, + "folderUID": { + "type": "string" + }, + "matchLabels": { + "properties": {}, + "type": "object" + }, + "resyncPeriod": { + "type": "string" + } + }, + "type": "object" + }, + "prune": { + "type": "boolean" + }, + "rbac": { + "properties": { + "pspEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "service": { + "properties": { + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "portName": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "autoMount": { + "type": "boolean" + }, + "create": { + "type": "boolean" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "sidecar": { + "properties": { + "dashboards": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enableNewTablePanelSyntax": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "label": { + "type": "string" + }, + "labelValue": { + "type": "string" + }, + "multicluster": { + "properties": { + "etcd": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "global": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "provider": { + "properties": { + "allowUiUpdates": { + "type": "boolean" + } + }, + "type": "object" + }, + "searchNamespace": { + "type": "string" + } + }, + "type": "object" + }, + "datasources": { + "properties": { + "alertmanager": { + "properties": { + "enabled": { + "type": "boolean" + }, + "handleGrafanaManagedAlerts": { + "type": "boolean" + }, + "implementation": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "createPrometheusReplicasDatasources": { + "type": "boolean" + }, + "defaultDatasourceEnabled": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "exemplarTraceIdDestinations": { + "properties": {}, + "type": "object" + }, + "httpMethod": { + "type": "string" + }, + "isDefaultDatasource": { + "type": "boolean" + }, + "label": { + "type": "string" + }, + "labelValue": { + "type": "string" + }, + "name": { + "type": "string" + }, + "prometheusServiceName": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kube-state-metrics": { + "properties": { + "metricLabelsAllowlist": { + "items": { + "type": "string" + }, + "type": "array" + }, + "prometheus": { + "properties": { + "monitor": { + "properties": { + "enabled": { + "type": "boolean" + }, + "http": { + "properties": { + "honorLabels": { + "type": "boolean" + } + }, + "type": "object" + }, + "metrics": { + "properties": { + "honorLabels": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheusScrape": { + "type": "boolean" + }, + "releaseLabel": { + "type": "boolean" + } + }, + "type": "object" + }, + "kubeApiServer": { + "properties": { + "enabled": { + "type": "boolean" + }, + "jobNameOverride": { + "type": "string" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "regex": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "selector": { + "properties": { + "matchLabels": { + "properties": { + "component": { + "type": "string" + }, + "provider": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + }, + "tlsConfig": { + "properties": { + "insecureSkipVerify": { + "type": "boolean" + }, + "serverName": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubeControllerManager": { + "properties": { + "enabled": { + "type": "boolean" + }, + "endpoints": { + "type": "array" + }, + "jobNameOverride": { + "type": "string" + }, + "service": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "port": { + "type": "string" + }, + "targetPort": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "https": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "port": { + "type": "string" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "serverName": { + "type": "string" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubeDns": { + "properties": { + "enabled": { + "type": "boolean" + }, + "service": { + "properties": { + "dnsmasq": { + "properties": { + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "skydns": { + "properties": { + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "dnsmasqMetricRelabelings": { + "type": "array" + }, + "dnsmasqRelabelings": { + "type": "array" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubeEtcd": { + "properties": { + "enabled": { + "type": "boolean" + }, + "endpoints": { + "type": "array" + }, + "service": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "caFile": { + "type": "string" + }, + "certFile": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "keyFile": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "port": { + "type": "string" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "scheme": { + "type": "string" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "serverName": { + "type": "string" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubeProxy": { + "properties": { + "enabled": { + "type": "boolean" + }, + "endpoints": { + "type": "array" + }, + "jobNameOverride": { + "type": "string" + }, + "service": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "https": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "port": { + "type": "string" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubeScheduler": { + "properties": { + "enabled": { + "type": "boolean" + }, + "endpoints": { + "type": "array" + }, + "jobNameOverride": { + "type": "string" + }, + "service": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "port": { + "type": "string" + }, + "targetPort": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "https": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "port": { + "type": "string" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "serverName": { + "type": "string" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubeStateMetrics": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "kubeTargetVersionOverride": { + "type": "string" + }, + "kubeVersionOverride": { + "type": "string" + }, + "kubelet": { + "properties": { + "enabled": { + "type": "boolean" + }, + "jobNameOverride": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "attachMetadata": { + "properties": { + "node": { + "type": "boolean" + } + }, + "type": "object" + }, + "cAdvisor": { + "type": "boolean" + }, + "cAdvisorInterval": { + "type": "string" + }, + "cAdvisorMetricRelabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "regex": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "cAdvisorRelabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "targetLabel": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "honorLabels": { + "type": "boolean" + }, + "honorTimestamps": { + "type": "boolean" + }, + "https": { + "type": "boolean" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "kubelet": { + "type": "boolean" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "regex": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "probes": { + "type": "boolean" + }, + "probesMetricRelabelings": { + "type": "array" + }, + "probesRelabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "targetLabel": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "targetLabel": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resource": { + "type": "boolean" + }, + "resourceInterval": { + "type": "string" + }, + "resourcePath": { + "type": "string" + }, + "resourceRelabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "targetLabel": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + }, + "trackTimestampsStaleness": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubernetesServiceMonitors": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "nameOverride": { + "type": "string" + }, + "namespaceOverride": { + "type": "string" + }, + "nodeExporter": { + "properties": { + "enabled": { + "type": "boolean" + }, + "forceDeployDashboards": { + "type": "boolean" + }, + "jobLabel": { + "type": "string" + }, + "operatingSystems": { + "properties": { + "aix": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "darwin": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "linux": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "interval": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheus": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "additionalPodMonitors": { + "type": "array" + }, + "additionalRulesForClusterRole": { + "type": "array" + }, + "additionalServiceMonitors": { + "type": "array" + }, + "agentMode": { + "type": "boolean" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraSecret": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "data": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "type": "array" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "paths": { + "type": "array" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "ingressPerReplica": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hostDomain": { + "type": "string" + }, + "hostPrefix": { + "type": "string" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "paths": { + "type": "array" + }, + "tlsSecretName": { + "type": "string" + }, + "tlsSecretPerReplica": { + "properties": { + "enabled": { + "type": "boolean" + }, + "prefix": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + }, + "flavor": { + "type": "string" + }, + "namespace": { + "type": "string" + } + }, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "minAvailable": { + "type": "number" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "prometheusSpec": { + "properties": { + "additionalAlertManagerConfigs": { + "type": "array" + }, + "additionalAlertManagerConfigsSecret": { + "properties": {}, + "type": "object" + }, + "additionalAlertRelabelConfigs": { + "type": "array" + }, + "additionalAlertRelabelConfigsSecret": { + "properties": {}, + "type": "object" + }, + "additionalArgs": { + "type": "array" + }, + "additionalConfig": { + "properties": {}, + "type": "object" + }, + "additionalConfigString": { + "type": "string" + }, + "additionalPrometheusSecretsAnnotations": { + "properties": {}, + "type": "object" + }, + "additionalRemoteRead": { + "type": "array" + }, + "additionalRemoteWrite": { + "type": "array" + }, + "additionalScrapeConfigs": { + "type": "array" + }, + "additionalScrapeConfigsSecret": { + "properties": {}, + "type": "object" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "alertingEndpoints": { + "type": "array" + }, + "allowOverlappingBlocks": { + "type": "boolean" + }, + "apiserverConfig": { + "properties": {}, + "type": "object" + }, + "arbitraryFSAccessThroughSMs": { + "type": "boolean" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "bodySizeLimit": { + "type": "string" + }, + "configMaps": { + "type": "array" + }, + "containers": { + "type": "array" + }, + "convertClassicHistogramsToNHCB": { + "type": "boolean" + }, + "disableAlerting": { + "type": "boolean" + }, + "disableCompaction": { + "type": "boolean" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "enableAdminAPI": { + "type": "boolean" + }, + "enableFeatures": { + "type": "array" + }, + "enableOTLPReceiver": { + "type": "boolean" + }, + "enableRemoteWriteReceiver": { + "type": "boolean" + }, + "enableServiceLinks": { + "type": "string" + }, + "enforcedBodySizeLimit": { + "type": "string" + }, + "enforcedKeepDroppedTargets": { + "type": "number" + }, + "enforcedLabelLimit": { + "type": "boolean" + }, + "enforcedLabelNameLengthLimit": { + "type": "boolean" + }, + "enforcedLabelValueLengthLimit": { + "type": "boolean" + }, + "enforcedNamespaceLabel": { + "type": "string" + }, + "enforcedSampleLimit": { + "type": "boolean" + }, + "enforcedTargetLimit": { + "type": "boolean" + }, + "evaluationInterval": { + "type": "string" + }, + "excludedFromEnforcement": { + "type": "array" + }, + "exemplars": { + "properties": {}, + "type": "object" + }, + "externalLabels": { + "properties": {}, + "type": "object" + }, + "externalUrl": { + "type": "string" + }, + "hostAliases": { + "type": "array" + }, + "hostNetwork": { + "type": "boolean" + }, + "hostUsers": { + "type": "string" + }, + "ignoreNamespaceSelectors": { + "type": "boolean" + }, + "initContainers": { + "type": "array" + }, + "keepDroppedTargets": { + "type": "number" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "listenLocal": { + "type": "boolean" + }, + "logFormat": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "maximumStartupDurationSeconds": { + "type": "number" + }, + "minReadySeconds": { + "type": "number" + }, + "nameEscapingScheme": { + "type": "string" + }, + "nameValidationScheme": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "otlp": { + "properties": {}, + "type": "object" + }, + "overrideHonorLabels": { + "type": "boolean" + }, + "overrideHonorTimestamps": { + "type": "boolean" + }, + "paused": { + "type": "boolean" + }, + "persistentVolumeClaimRetentionPolicy": { + "properties": {}, + "type": "object" + }, + "podAntiAffinity": { + "type": "string" + }, + "podAntiAffinityTopologyKey": { + "type": "string" + }, + "podManagementPolicy": { + "type": "string" + }, + "podMetadata": { + "properties": { + "labels": { + "properties": { + "app": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "podMonitorNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "podMonitorSelector": { + "properties": {}, + "type": "object" + }, + "podMonitorSelectorNilUsesHelmValues": { + "type": "boolean" + }, + "podTargetLabels": { + "type": "array" + }, + "portName": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "probeNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "probeSelector": { + "properties": {}, + "type": "object" + }, + "probeSelectorNilUsesHelmValues": { + "type": "boolean" + }, + "prometheusExternalLabelName": { + "type": "string" + }, + "prometheusExternalLabelNameClear": { + "type": "boolean" + }, + "prometheusRulesExcludedFromEnforce": { + "type": "array" + }, + "query": { + "properties": {}, + "type": "object" + }, + "queryLogFile": { + "type": "boolean" + }, + "reloadStrategy": { + "type": "string" + }, + "remoteRead": { + "type": "array" + }, + "remoteWrite": { + "type": "array" + }, + "remoteWriteDashboards": { + "type": "boolean" + }, + "remoteWriteReceiverMessageVersions": { + "type": "array" + }, + "replicaExternalLabelName": { + "type": "string" + }, + "replicaExternalLabelNameClear": { + "type": "boolean" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "retention": { + "type": "string" + }, + "retentionSize": { + "type": "string" + }, + "routePrefix": { + "type": "string" + }, + "ruleNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "ruleQueryOffset": { + "type": "string" + }, + "ruleSelector": { + "properties": {}, + "type": "object" + }, + "ruleSelectorNilUsesHelmValues": { + "type": "boolean" + }, + "runtime": { + "properties": {}, + "type": "object" + }, + "sampleLimit": { + "type": "boolean" + }, + "schedulerName": { + "type": "string" + }, + "scrapeClasses": { + "type": "array" + }, + "scrapeClassicHistograms": { + "type": "boolean" + }, + "scrapeConfigNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "scrapeConfigSelector": { + "properties": {}, + "type": "object" + }, + "scrapeConfigSelectorNilUsesHelmValues": { + "type": "boolean" + }, + "scrapeFailureLogFile": { + "type": "string" + }, + "scrapeInterval": { + "type": "string" + }, + "scrapeNativeHistograms": { + "type": "boolean" + }, + "scrapeProtocols": { + "type": "array" + }, + "scrapeTimeout": { + "type": "string" + }, + "secrets": { + "type": "array" + }, + "serviceDiscoveryRole": { + "type": "string" + }, + "serviceMonitorNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "serviceMonitorSelector": { + "properties": {}, + "type": "object" + }, + "serviceMonitorSelectorNilUsesHelmValues": { + "type": "boolean" + }, + "serviceName": { + "type": "string" + }, + "shardRetentionPolicy": { + "properties": {}, + "type": "object" + }, + "shardingStrategy": { + "properties": {}, + "type": "object" + }, + "shards": { + "type": "number" + }, + "storageSpec": { + "properties": { + "volumeClaimTemplate": { + "properties": { + "spec": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "resources": { + "properties": { + "requests": { + "properties": { + "storage": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "targetLimit": { + "type": "number" + }, + "terminationGracePeriodSeconds": { + "type": "string" + }, + "thanos": { + "properties": {}, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "tracingConfig": { + "properties": {}, + "type": "object" + }, + "tsdb": { + "properties": { + "outOfOrderTimeWindow": { + "type": "string" + } + }, + "type": "object" + }, + "updateStrategy": { + "properties": {}, + "type": "object" + }, + "version": { + "type": "string" + }, + "volumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "volumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "walCompression": { + "type": "boolean" + }, + "web": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostnames": { + "type": "array" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "sessionPersistence": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "routePerReplica": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostDomain": { + "type": "string" + }, + "hostPrefix": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "sessionPersistence": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "additionalPorts": { + "type": "array" + }, + "annotations": { + "properties": { + "zarf.dev/connect-description": { + "type": "string" + } + }, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "externalIPs": { + "type": "array" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": { + "zarf.dev/connect-name": { + "type": "string" + } + }, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "publishNotReadyAddresses": { + "type": "boolean" + }, + "reloaderWebNodePort": { + "type": "string" + }, + "reloaderWebPort": { + "type": "number" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": { + "clientIP": { + "properties": { + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "targetPort": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalEndpoints": { + "type": "array" + }, + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "scheme": { + "type": "string" + }, + "selfMonitor": { + "type": "boolean" + }, + "targetLimit": { + "type": "number" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "servicePerReplica": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "thanosIngress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "type": "array" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "nodePort": { + "type": "number" + }, + "paths": { + "type": "array" + }, + "servicePort": { + "type": "number" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "thanosService": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "httpNodePort": { + "type": "number" + }, + "httpPort": { + "type": "number" + }, + "httpPortName": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "portName": { + "type": "string" + }, + "targetHttpPort": { + "type": "string" + }, + "targetPort": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "thanosServiceExternal": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "httpNodePort": { + "type": "number" + }, + "httpPort": { + "type": "number" + }, + "httpPortName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "portName": { + "type": "string" + }, + "targetHttpPort": { + "type": "string" + }, + "targetPort": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "thanosServiceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "metricRelabelings": { + "type": "array" + }, + "relabelings": { + "type": "array" + }, + "scheme": { + "type": "string" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "verticalPodAutoscaler": { + "properties": { + "controlledResources": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxAllowed": { + "properties": {}, + "type": "object" + }, + "minAllowed": { + "properties": {}, + "type": "object" + }, + "updatePolicy": { + "properties": { + "updateMode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheus-node-exporter": { + "properties": { + "extraArgs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "hostNetwork": { + "type": "boolean" + }, + "hostPID": { + "type": "boolean" + }, + "namespaceOverride": { + "type": "string" + }, + "podAnnotations": { + "properties": { + "cluster-autoscaler.kubernetes.io/safe-to-evict": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": { + "jobLabel": { + "type": "string" + } + }, + "type": "object" + }, + "prometheus": { + "properties": { + "monitor": { + "properties": { + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "scrapeTimeout": { + "type": "string" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + }, + "podMonitor": { + "properties": { + "enabled": { + "type": "boolean" + }, + "jobLabel": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "rbac": { + "properties": { + "pspEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "releaseLabel": { + "type": "boolean" + }, + "service": { + "properties": { + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": { + "jobLabel": { + "type": "string" + } + }, + "type": "object" + }, + "portName": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheus-windows-exporter": { + "properties": { + "config": { + "type": "string" + }, + "podLabels": { + "properties": { + "jobLabel": { + "type": "string" + } + }, + "type": "object" + }, + "prometheus": { + "properties": { + "monitor": { + "properties": { + "enabled": { + "type": "boolean" + }, + "jobLabel": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "releaseLabel": { + "type": "boolean" + } + }, + "type": "object" + }, + "prometheusOperator": { + "properties": { + "admissionWebhooks": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "caBundle": { + "type": "string" + }, + "certManager": { + "properties": { + "admissionCert": { + "properties": { + "duration": { + "type": "string" + }, + "revisionHistoryLimit": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "rootCert": { + "properties": { + "duration": { + "type": "string" + }, + "revisionHistoryLimit": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "createSecretJob": { + "properties": {}, + "type": "object" + }, + "deployment": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hostNetwork": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "minAvailable": { + "type": "number" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "promqlOptions": { + "type": "array" + }, + "readinessProbe": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "service": { + "properties": { + "additionalPorts": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "externalIPs": { + "type": "array" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "nodePortTls": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "strategy": { + "properties": {}, + "type": "object" + }, + "tls": { + "properties": { + "enabled": { + "type": "boolean" + }, + "internalPort": { + "type": "number" + }, + "tlsMinVersion": { + "type": "string" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "failurePolicy": { + "type": "string" + }, + "matchConditions": { + "properties": {}, + "type": "object" + }, + "mutatingWebhookConfiguration": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "namespaceSelector": { + "properties": {}, + "type": "object" + }, + "objectSelector": { + "properties": {}, + "type": "object" + }, + "patch": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "ttlSecondsAfterFinished": { + "type": "number" + } + }, + "type": "object" + }, + "patchWebhookJob": { + "properties": {}, + "type": "object" + }, + "timeoutSeconds": { + "type": "number" + }, + "validatingWebhookConfiguration": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "alertmanagerConfigNamespaces": { + "type": "array" + }, + "alertmanagerInstanceNamespaces": { + "type": "array" + }, + "alertmanagerInstanceSelector": { + "type": "string" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "denyNamespaces": { + "type": "array" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "properties": { + "GOGC": { + "type": "string" + } + }, + "type": "object" + }, + "extraArgs": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "featureGates": { + "properties": {}, + "type": "object" + }, + "fullnameOverride": { + "type": "string" + }, + "hostNetwork": { + "type": "boolean" + }, + "hostUsers": { + "type": "string" + }, + "kubeletEndpointSliceEnabled": { + "type": "boolean" + }, + "kubeletEndpointsEnabled": { + "type": "boolean" + }, + "kubeletService": { + "properties": { + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "selector": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "namespaces": { + "properties": {}, + "type": "object" + }, + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + }, + "flavor": { + "type": "string" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "minAvailable": { + "type": "number" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "prometheusConfigReloader": { + "properties": { + "enableProbe": { + "type": "boolean" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheusInstanceNamespaces": { + "type": "array" + }, + "prometheusInstanceSelector": { + "type": "string" + }, + "readinessProbe": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "secretFieldSelector": { + "type": "string" + }, + "service": { + "properties": { + "additionalPorts": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "externalIPs": { + "type": "array" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "nodePortTls": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "interval": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "scrapeTimeout": { + "type": "string" + }, + "selfMonitor": { + "type": "boolean" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + }, + "strategy": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "thanosRulerInstanceNamespaces": { + "type": "array" + }, + "thanosRulerInstanceSelector": { + "type": "string" + }, + "tls": { + "properties": { + "enabled": { + "type": "boolean" + }, + "internalPort": { + "type": "number" + }, + "tlsMinVersion": { + "type": "string" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "verticalPodAutoscaler": { + "properties": { + "controlledResources": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxAllowed": { + "properties": {}, + "type": "object" + }, + "minAllowed": { + "properties": {}, + "type": "object" + }, + "updatePolicy": { + "properties": { + "updateMode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "thanosRuler": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraSecret": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "data": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "type": "array" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "paths": { + "type": "array" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "minAvailable": { + "type": "number" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostnames": { + "type": "array" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "sessionPersistence": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "additionalPorts": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "externalIPs": { + "type": "array" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalEndpoints": { + "type": "array" + }, + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "scheme": { + "type": "string" + }, + "selfMonitor": { + "type": "boolean" + }, + "targetLimit": { + "type": "number" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "thanosRulerSpec": { + "properties": { + "additionalArgs": { + "type": "array" + }, + "additionalConfig": { + "properties": {}, + "type": "object" + }, + "additionalConfigString": { + "type": "string" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "alertDropLabels": { + "type": "array" + }, + "alertRelabelConfigFile": { + "type": "string" + }, + "alertRelabelConfigs": { + "properties": { + "existingSecret": { + "properties": {}, + "type": "object" + }, + "secret": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "alertmanagersConfig": { + "properties": { + "existingSecret": { + "properties": {}, + "type": "object" + }, + "secret": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "containers": { + "type": "array" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "enableFeatures": { + "type": "array" + }, + "enableServiceLinks": { + "type": "string" + }, + "enforcedNamespaceLabel": { + "type": "string" + }, + "evaluationInterval": { + "type": "string" + }, + "excludedFromEnforcement": { + "type": "array" + }, + "externalPrefix": { + "type": "string" + }, + "externalPrefixNilUsesHelmValues": { + "type": "boolean" + }, + "extraEnv": { + "type": "array" + }, + "grpcServerTlsConfig": { + "properties": {}, + "type": "object" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "imagePullPolicy": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "listenLocal": { + "type": "boolean" + }, + "logFormat": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "minReadySeconds": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "objectStorageConfig": { + "properties": { + "existingSecret": { + "properties": {}, + "type": "object" + }, + "secret": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "objectStorageConfigFile": { + "type": "string" + }, + "paused": { + "type": "boolean" + }, + "podAntiAffinity": { + "type": "string" + }, + "podAntiAffinityTopologyKey": { + "type": "string" + }, + "podManagementPolicy": { + "type": "string" + }, + "podMetadata": { + "properties": {}, + "type": "object" + }, + "portName": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "queryConfig": { + "properties": { + "existingSecret": { + "properties": {}, + "type": "object" + }, + "secret": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "queryEndpoints": { + "type": "array" + }, + "remoteWrite": { + "type": "array" + }, + "replicas": { + "type": "number" + }, + "resendDelay": { + "type": "string" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "retention": { + "type": "string" + }, + "routePrefix": { + "type": "string" + }, + "ruleConcurrentEval": { + "type": "string" + }, + "ruleGracePeriod": { + "type": "string" + }, + "ruleNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "ruleOutageTolerance": { + "type": "string" + }, + "ruleQueryOffset": { + "type": "string" + }, + "ruleSelector": { + "properties": {}, + "type": "object" + }, + "ruleSelectorNilUsesHelmValues": { + "type": "boolean" + }, + "serviceName": { + "type": "string" + }, + "storage": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "string" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "tracingConfig": { + "properties": { + "existingSecret": { + "properties": {}, + "type": "object" + }, + "secret": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "tracingConfigFile": { + "type": "string" + }, + "updateStrategy": { + "properties": {}, + "type": "object" + }, + "version": { + "type": "string" + }, + "volumeMounts": { + "type": "array" + }, + "volumes": { + "type": "array" + }, + "web": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "windowsMonitoring": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-prometheus-config": { + "properties": { + "additionalNetworkAllow": { + "type": "array" + }, + "rke2CorednsNetpol": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "udsCoreDefaultAlerts": { + "properties": { + "enabled": { + "type": "boolean" + }, + "probeEndpointDown": { + "properties": { + "enabled": { + "type": "boolean" + }, + "for": { + "type": "string" + }, + "severity": { + "type": "string" + } + }, + "type": "object" + }, + "probeTLSExpiryCritical": { + "properties": { + "days": { + "type": "number" + }, + "enabled": { + "type": "boolean" + }, + "for": { + "type": "string" + }, + "severity": { + "type": "string" + } + }, + "type": "object" + }, + "probeTLSExpiryWarning": { + "properties": { + "days": { + "type": "number" + }, + "enabled": { + "type": "boolean" + }, + "for": { + "type": "string" + }, + "severity": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheus-blackbox-exporter": { + "properties": { + "prometheus-blackbox-exporter": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "commonLabels": { + "properties": {}, + "type": "object" + }, + "config": { + "properties": { + "modules": { + "properties": { + "http_2xx": { + "properties": { + "http": { + "properties": { + "follow_redirects": { + "type": "boolean" + }, + "preferred_ip_protocol": { + "type": "string" + }, + "valid_http_versions": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "prober": { + "type": "string" + }, + "timeout": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "configExistingSecretName": { + "type": "string" + }, + "configReloader": { + "properties": { + "config": { + "properties": { + "logFormat": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "watchInterval": { + "type": "string" + } + }, + "type": "object" + }, + "containerPort": { + "type": "number" + }, + "enabled": { + "type": "boolean" + }, + "livenessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "port": { + "type": "number" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "selfMonitor": { + "properties": { + "additionalMetricsRelabels": { + "properties": {}, + "type": "object" + }, + "additionalRelabeling": { + "type": "array" + }, + "interval": { + "type": "string" + }, + "path": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "containerPort": { + "type": "number" + }, + "deploymentAnnotations": { + "properties": {}, + "type": "object" + }, + "dnsConfig": { + "type": "string" + }, + "dnsPolicy": { + "type": "string" + }, + "extraArgs": { + "type": "array" + }, + "extraConfigmapMounts": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraInitContainers": { + "type": "array" + }, + "extraManifests": { + "type": "array" + }, + "extraSecretMounts": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "global": { + "properties": {}, + "type": "object" + }, + "hostAliases": { + "type": "array" + }, + "hostNetwork": { + "type": "boolean" + }, + "hostPort": { + "type": "number" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "className": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "items": { + "properties": { + "host": { + "type": "string" + }, + "paths": { + "items": { + "properties": { + "path": { + "type": "string" + }, + "pathType": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "kubeVersionOverride": { + "type": "string" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "namespaceOverride": { + "type": "string" + }, + "networkPolicy": { + "properties": { + "allowMonitoringNamespace": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "monitoringNamespaceName": { + "type": "string" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "pod": { + "properties": { + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": { + "ambient.istio.io/dns-capture": { + "type": "string" + } + }, + "type": "object" + }, + "podDisruptionBudget": { + "properties": {}, + "type": "object" + }, + "podMonitoring": { + "properties": { + "defaults": { + "properties": { + "additionalMetricsRelabels": { + "properties": {}, + "type": "object" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "module": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "path": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "selfMonitor": { + "properties": { + "additionalMetricsRelabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "path": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + } + }, + "type": "object" + }, + "targets": { + "type": "string" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "prometheusRule": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "namespace": { + "type": "string" + }, + "rules": { + "type": "array" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "releaseLabel": { + "type": "boolean" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "restartPolicy": { + "type": "string" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostnames": { + "type": "array" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "parentRefs": { + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "secretAnnotations": { + "properties": {}, + "type": "object" + }, + "secretConfig": { + "type": "boolean" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "port": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "bearerTokenFile": { + "type": "string" + }, + "defaults": { + "properties": { + "additionalMetricsRelabels": { + "properties": {}, + "type": "object" + }, + "additionalRelabeling": { + "type": "array" + }, + "honorTimestamps": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "module": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "path": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "selfMonitor": { + "properties": { + "additionalMetricsRelabels": { + "properties": {}, + "type": "object" + }, + "additionalRelabeling": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "path": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "targets": { + "type": "string" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "verticalPodAutoscaler": { + "properties": { + "controlledResources": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxAllowed": { + "properties": {}, + "type": "object" + }, + "minAllowed": { + "properties": {}, + "type": "object" + }, + "updatePolicy": { + "properties": { + "updateMode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" +} diff --git a/packages/monitoring/zarf-values.yaml b/packages/monitoring/zarf-values.yaml new file mode 100644 index 0000000000..5816f95761 --- /dev/null +++ b/packages/monitoring/zarf-values.yaml @@ -0,0 +1,19 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the UDS Core Monitoring package. + +# Shared domains for the whole stack. Override via --values / --set-values to configure all charts. +global: + domain: "" + # Empty falls back to the ADMIN_DOMAIN variable, then admin.. + adminDomain: "" + +kube-prometheus-stack: + kube-prometheus-stack: {} + uds-prometheus-config: {} +prometheus-blackbox-exporter: + prometheus-blackbox-exporter: {} +grafana: + grafana: {} + uds-grafana-config: {} diff --git a/packages/monitoring/zarf.yaml b/packages/monitoring/zarf.yaml index 6edb4b9259..c38d2cb8b3 100644 --- a/packages/monitoring/zarf.yaml +++ b/packages/monitoring/zarf.yaml @@ -17,6 +17,11 @@ metadata: dev.uds.keywords: uds,prometheus,grafana dev.uds.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMb2dvcyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTQuNTRpbiIgaGVpZ2h0PSIyNGluIiB2aWV3Qm94PSIwIDAgMTA0Ni42NyAxNzI4Ij48cGF0aCBkPSJNOTczLjI2LDEyNzAuNzFjLTQzLjY2LDU2LjQtMTMyLjYxLDQ3LjI2LTE2OC41LDQwLjgxLTkuNDYtMS42OS0xOC4zMSw1LjU1LTE3LjQzLDE0LjM4LDIuMDMsMjAuNDQsMTUuNzIsNDAuNDUsMTUuNzIsNDAuNDUtOC4xLDMuMDYtMTUuNTUsNS4xMi0yMi4zNCw2LjUxLDIuMDUsOCwzLjk4LDE1Ljk3LDUuODIsMjMuOSw1LjktLjI1LDExLjEtLjcyLDE1LjA4LTEuMSwxNC44OC0xLjQxLDI5LjQxLTUuMDQsNDMuNDItMTAuODQtMTIuNTktMTEuNC0xOS4xOS0yMy40OC0xOS42My0yNC4yOGwtMTIuMjMtMjIuNzZjLTIuOTEtNS40MSwyLjM0LTExLjU3LDguMTQtOS41N2wyNC40NCw4LjQyYzE0LjM4LDQuOTcsNTEuNTMsMTQuNjIsODUuNjctMi43NiwyNi44Ny0xMy42OSw0MC4yNC0zNy43Nyw1My4xNS02MS4wNiwxLjUzLTIuNzYsMi45OS01LjU1LDQuMzktOC4zNi01LjEzLDIuNS0xMC4zNyw0LjU1LTE1LjY5LDYuMjVaTTQ1NS41NSwxNDgyLjdjLTIuNzIsOS4xLTcuMzEsMTkuNTYtMTQuOTYsMzAuNmwtMi44LDQuOTVjLS4yNS40NS0uNDMuOTQtLjY3LDEuMzksMjMuOTYsMjguNzIsNTQuMzQsMzYuMDIsNzUuMjMsMzcuMTVsMi41NC0yMy4wMmMuOS04LjA4LS4xLTE2LjI4LTIuODgtMjMuOS0yNy40Ni0xLjg4LTQ1LjUyLTE1LjA3LTU2LjQ1LTI3LjE4Wk02MTguODEsMTMyNS4wM2MtMzMuMzQsMTIuNC02NS41LDE4LjY5LTk1Ljc4LDE4LjY5LTMwLjUxLDAtNjIuOTMtNi40LTk2LjUzLTE4Ljk5LTQuMy0xLjYxLTguNjItMy4yOS0xMi45Ni01LjExLTEzLjgzLTUuNzgtMjcuODgtMTIuNjUtNDIuMDUtMjAuNDUtMTEuNTIsMTUuMzYtMjAuODQsMzIuNTMtMjcuNCw1MS4xNmwtMzIuMTcsOTEuMzZjLTguNjgsMjQuNjYtMTMuNjksNTAuNDEtMTQuODcsNzYuNTNsLTMuMTEsNjguNTVoMzMuMDdsMy43LTc3Ljg1YzEuMjUtMjYuMTYsNi43Mi01MS45NSwxNi4yLTc2LjM2bDI5LjgxLTc2LjcxYzMuMS04LDEyLjMzLTExLjcxLDIwLjExLTguMS4yNC4xMS40Ny4yMS43MS4zMi43Ny4zNSwxLjUuNzUsMi4yMiwxLjE3LDMuMjIsMS45LDYuNTgsMy41MywxMC4wMiw0LjkyLDAsMC0uMDMuMDUtLjAzLjA1LDAsMCw0MC45NiwyNC4xNywxMTEuMzgsMjIuMDEsNjIuMzEtMS45LDEzNy44OC02My40NSwxNTQuNDctNzcuNi0xNC41MSw4LjA0LTI4LjksMTUuMDgtNDMuMDYsMjEtNC41OSwxLjkyLTkuMTYsMy43MS0xMy43MSw1LjRaTTcwNS44OSwxNTI4LjY1bC01LjI2LDQzLjM4aDI0Ljg4Yy4zNi03MC4wMy0yMS45OS0xMDAuOTQtMjMuMTUtMTAyLjUxLDMuNzUsOC45Niw3LjQ4LDI2LjU0LDMuNTMsNTkuMTNaTTU1NS4zMiwxNDczLjQxYy00LjI3LTQuNzctOS4wNi05LjEzLTE0LjQtMTIuOTEtMTIuNzgtOS4wNi0yNS4xLTE0LjQ2LTMwLjg2LTE2LjczbDE0LjkzLDIyLjIxLDksMTMuNGMyLjk0LDQuMzksNS40OSw5LjAxLDcuNiwxMy44Miw2LjEsMTMuODksOC40NSwyOS4xOSw2Ljc4LDQ0LjI3bC0zLjYxLDMyLjY4LTEuODYsMTYuODUtMS44NiwxNi45aDMzLjI0bDMuMjctNjcuNTljMS4xMS0yMi45Mi02LjczLTQ1LjEzLTIxLjQ1LTYyLjA0LS4yNS0uMjktLjUyLS41OC0uNzgtLjg2Wk02NDYuMDgsOTEzLjc5Yy0xOC4xNywyMy4zOS0zMy4yNyw1MS43Ni00My40LDgzLjc2LTcuMzIsMjMuMTEtMTEuNDQsNDYuMTctMTIuNjQsNjguMzQtLjM4LDcuMDktLjQ0LDE0LjA4LS4yMywyMC45Nyw3LjI3LDMuMjQsMTMuODIsNi44NiwxOS43MiwxMC42My0xLjE3LTEwLjI4LTEuNzMtMjAuODMtMS42OC0zMS42LjE4LTM1LjAzLDYuNzgtNzIuMiwxOS42Mi0xMDguNjcsNS4zMi0xNS4xMSwxMS41OC0yOS42MywxOC42MS00My40M1pNNDAzLjM3LDExODUuOXMtLjA2LjAyLS4wOC4wMmMtMTMuNDgsMTgtMzAuNTgsMzEuMDEtNTAuNjMsMzguMDctOC42NywzLjA1LTE3LjYxLDQuODYtMjYuNzIsNS41Miw0Ljg5LDMuNjYsOS45Niw3LjM1LDE1LjIzLDExLjA0LDcuOSw1LjUzLDE1LjYxLDEwLjYyLDIzLjEzLDE1LjM0LDUuMSwzLjIsMTAuMTEsNi4yLDE1LjAzLDkuMDUsNS4yMywzLjAyLDEwLjM2LDUuODUsMTUuMzksOC41LDIuMTUsMS4xMyw0LjI4LDIuMjMsNi4zOSwzLjMtLjk2LTIuMjQtMS44Mi00LjQ0LTIuNjItNi42MS0yLjI4LTYuMTgtMy45NC0xMi4wOC01LjExLTE3LjY5LTEuNDYtNy4wMS0yLjE2LTEzLjU2LTIuMjgtMTkuNTktLjYtMjkuNjMsMTIuMjgtNDYuOTMsMTIuMjgtNDYuOTNoLjAxWk00MTcuMzgsOTU3LjIyYzEyLjg0LDM2LjQ3LDE5LjQ0LDczLjY0LDE5LjYyLDEwOC42Ny4wNSwxMC44MS0uNTEsMjEuNDEtMS43LDMxLjczLDYuMjctNC4wMywxMy4yNy03Ljg5LDIxLjEtMTEuMywxLjUyLTYuNjEsMi43MS0xMy40MiwzLjUtMjAuNDMsNC43MS00MS42Ny0zLjQ4LTg5Ljg0LTI1Ljk0LTEzNi4xNS0yOS40My02MC42Ni03Ni41NC0xMDQuMDQtMTI0LjY1LTEyMC45Nyw1LjMzLDMuNDksMTAuNjMsNy4zNCwxNS44OSwxMS41NSwzOS40NywzMS42MSw3Mi4yMSw4MC4yNCw5Mi4xNywxMzYuOVpNNzM0LjE4LDc4Ni4yNWMtMy4zNS0uNjQtNi41NS0xLjM0LTkuNjYtMi4wOCwwLDAsMCwwLDAsMC01LjI0LDMuNzEtMTAuNCw3LTE1LjUsOS45Ny0yOS45OCwxNy40Ny01Ny4yNywyMi43MS03OS4xMiwyMi43MWgtLjk1YzMuNCwzLjUyLDYuMjYsNi4zMSw4LjQ4LDguNCwyLjk1LDIuNzgsNC43Miw0LjMsNC43OCw0LjM1bDEyLjQ2LDEwLjU0YzIwLjc4LTMuNjksNDQuNTctMTIuNTIsNjkuODUtMzAuNDZ2LjAybDEyLjgyLTkuMTFjNS43NS00LjA3LDMuNzYtMTMuMDItMy4xNi0xNC4zNFpNMzg0LjEyLDc2Ni4wNWMtNC4zNC0xMS40Ny02LjkxLTIyLjE3LTguNC0zMSwwLS4wMi0uMDItLjA1LS4wMi0uMDUsMCwwLTQuMjcsNjEuNzIsNDEuMDQsMTA4LjMsOS40Nyw5LjA5LDIwLjM1LDE3LjY4LDMyLjgxLDI1LjIxLDMuNzksMi4zLDcuNjYsNC40NCwxMS41OSw2LjQ0LDI3LjU1LDE0LjA0LDU4LjU1LDIxLjA3LDkyLjc3LDIxLjA3LDI1LjUxLDAsNTIuODMtMy45Miw4MS44MS0xMS43NWwxNi4zMy00LjQzYzYuMjEtMS42OSw3Ljk4LTkuNjQsMy4wNi0xMy43OWwtMTEuMjQtOS41LTguMTQsMi4yMWMtMy44MiwxLjAzLTcuNjEsMS45OS0xMS4zNywyLjg4LTI0Ljc4LDUuOS00OC4yOSw4Ljg3LTcwLjQ0LDguODctMzQuMjEsMC02NS4yMS03LjAzLTkyLjc2LTIxLjA3LTMuOTMtMi03LjgtNC4xNC0xMS41OS02LjQ0LTEyLjQ2LTcuNTMtMjMuMzQtMTYuMTItMzIuODEtMjUuMjEtMy4wNS0zLjE0LTUuODYtNi4zNC04LjQ5LTkuNTgtOS45NS0xMi4yMS0xNy4wNC0yNC45NC0yMi4xLTM3LjAzLS43Mi0xLjcyLTEuNC0zLjQzLTIuMDQtNS4xMVpNMzc0LjY5LDU1Ni4wNGMtLjAzLS41MiwwLTEuMDUtLjAzLTEuNTgtLjA2LTEuMzctLjA3LTIuNzUtLjA3LTQuMTMsMC0xLjAyLDAtMi4wMy4wMy0zLjA1LjA3LTEuODguMi0zLjc3LjM4LTUuNjYuMDQtLjQzLjA0LS44NS4wOC0xLjI3bDExLjA3LTEwMS41NWMxLjMzLTEyLjI0LDIuOC0yNC40OCw0LjMzLTM2LjcyLjEyLS45OS4yMy0xLjk3LjM1LTIuOTYuODktNy4wNCwxLjktMTQuMDgsMi44NS0yMS4xMi41MS0zLjc3LDEtNy41NCwxLjUzLTExLjMxLjM4LTIuNjguNzItNS4zNywxLjEtOC4wNS4wNS0uMzYuMS0uNzMuMTUtMS4wOSwwLDAsMCwwLDAtLjAxLS4yNi4wNi0uNTMuMTMtLjc5LjE5LTQuNjksMS4wNC05LjQ1LDIuMTUtMTQuMjgsMy4zNi0uNTEuMTMtMS4wMy4yNi0xLjU0LjM5LTQuOSwxLjI0LTkuODcsMi41NS0xNC44OSwzLjk3LS4zOS4xMS0uNzguMjMtMS4xNy4zNC01LjIsMS40OC0xMC40NSwzLjA1LTE1Ljc2LDQuNzUtLjA4LjAzLS4xNy4wNi0uMjYuMDgtNS4zMSwxLjctMTAuNjcsMy41MS0xNi4wNiw1LjQzLS4yMy4wOC0uNDUuMTUtLjY3LjIzaDBjLjE0LDIuNTEuMzIsNS40MS41OCw4LjY3LDIuNDYsMzEuNjksMTEuMzIsOTcuNjcsNDMuMDcsMTcxLjA5WiIgZmlsbD0iIzFmZGZmZiIvPjxwYXRoIGQ9Ik00MjguNzcsMTYzMy4wNmgyOS4xOWw2Ljc0LTE5LjQ4Yy44NC0yLjQzLDQuMjctMi40Myw1LjExLDBsNi43NCwxOS40OGgyNy4zNmwzLjIyLTI5LjE1aC4wMXYtLjA1cy03Ny42MiwwLTc3LjYyLDBsLS43NSwyOS4yWk03ODIuMTEsMTYwNS43MmgtODUuNTZsLTMuMzEsMjcuMzNoMzAuODVsNi43NC0xOS40OGMuODQtMi40Myw0LjI3LTIuNDMsNS4xLDBsNi43NCwxOS40OGg0MC44N2MtLjI4LTguNTgtLjY2LTE1LjUyLTEuNDMtMjcuMzNaTTM2OC4xMSwxNjIwLjQ2aC03NS43MmwtMS43NCwzOC4zOC0uMyw2LjY2aDM3LjM2bDExLjM3LTMyLjg2Yy44NC0yLjQzLDQuMjctMi40Myw1LjExLDBsMTEuMzcsMzIuODZoMzguMjZ2LTQ1LjA0aC0yNS43Wk02NDYuOTUsMTYzNy41OWgtMTA5LjYzbC0xLjM2LDEyLjMyLTEuODYsMTYuODQtMy4wNCwyNy41NWg0OC4xNWwxMi4zNi0zNS43M2MuODQtMi40Myw0LjI3LTIuNDMsNS4xMSwwbDEyLjM2LDM1LjczaDQyLjc5bDEuOTUtMTYuMSwxLjM5LTExLjQ0aDBzMy41NC0yOS4xNywzLjU0LTI5LjE3aC0xMS43NlpNNTIyLjQzLDE3NS43OGwxMC42LTIuMjNjOC4xMi0xLjcyLDEzLjI1LTkuNzMsMTEuNDMtMTcuODMtMy44LTE2LjktNy44LTMzLjc1LTExLjk3LTUwLjU3bC01LjY1LTIyLjdjLTMuNTgtMTUuOTQtNy40NC0yOS0xMS4zNy0zOS43NS0uOTMtMi41My0xLjg2LTQuOTMtMi43OS03LjItMi43MywyLjA2LTYuOTgsNi4zNC0xMS45LDE1LjA1LTYuMjEsMTAuOTktMTMuNDksMjkuMDQtMjAuMTQsNTguNjRsLS4wOS4zNy01LjY1LDIyLjdjLS4zMSwxLjI0LS41OSwyLjQ4LS44OSwzLjcyLDEzLjE4LDE1LjQ4LDI5LjMzLDI4Ljc3LDQ4LjQxLDM5LjhaTTQ1MC41NCwzMTQuNTNjLjQzLjQuODIuODEsMS4yNiwxLjIxLDUuNDksNC45NCwxMS4zMiw5LjU1LDE3LjQ0LDEzLjg3LDcuOTYsNS42MywxNi40MiwxMC43NSwyNS40MSwxNS4zMiwyNS4yNSwxMi44MSw1NC41OSwyMS40Myw4Ny44NiwyNS44Ni0xLjA0LTguMDUtMi4xMy0xNi4wOS0zLjI2LTI0LjEyLS44LTUuNy0xLjY0LTExLjM4LTIuNDctMTcuMDctLjg0LTUuNy0xLjY3LTExLjQxLTIuNTUtMTcuMTEtMS44NC0xMS44OC0zLjc1LTIzLjc1LTUuNzctMzUuNi0xLjU4LTkuMjctNy41MS0xNy4xOC0xNS45LTIxLjQyLTMxLjAxLTE1LjYyLTQ4Ljg4LTM3LjUxLTQ4Ljg4LTM3LjUxaC4wM2MtMTUuNDItOC41My0yOS40My0xOC4yOC00MS45OS0yOS4yNC04LjQzLDM3LjktMTUuOTMsNzYuMDgtMjIuNDcsMTE0LjQyLDMuNTIsMy44Nyw3LjI3LDcuNjgsMTEuMzEsMTEuMzlaTTQ2OC43OCw2MTUuNjFjMS43LjA0LDMuMzguMDksNS4xMi4wOSwyOS45NywwLDUzLjM1LTUuNTksNzEuNDUtMTMuNTQsNC41My0xLjk5LDMuODgtOC42NC0uOTMtOS43NS00OS43Mi0xMS41Mi03OC42OS0zNC40NS05MC42LTQ1Ljg0LTE1LjMxLTcuNDMtMjkuNTYtMTUuOTUtNDIuNzItMjUuNDlsLTIuNSwyMi45Yy0yLjMzLDIxLjM2LDYuODQsNDIuMjUsMjMuOTUsNTQuNTEsMTAuNSw3LjUyLDIyLjYzLDEzLjIxLDM2LjIzLDE3LjExWk01OTkuMDcsNTM2LjdjLjctNS43Ny43Ni0xMS42Ny4xMi0xNy42bC02LjExLTU2LjAxYy0xLjM4LTEyLjY1LTEwLjcyLTIzLjAzLTIzLjItMjUuNi03MC4zMS0xNC40Ni0xMDEuNTItNTQuNDEtMTAxLjUyLTU0LjQxbC4wNy0uMDdjLTEzLjU4LTcuMzEtMjYuMjYtMTUuNjMtMzcuOTMtMjUuMDgtNC4xMiwyOC4xNC03Ljc3LDU2LjMzLTEwLjg0LDg0LjQ5bC0yLjYyLDI0LjA0YzIxLjY5LDIwLjQxLDQ4LjMyLDM2Ljc0LDc5LjU1LDQ4LjU1LDMwLjAyLDExLjM1LDY0LjM0LDE4LjU3LDEwMi40NywyMS42N1oiIGZpbGw9IiNlYjIxMjYiLz48cGF0aCBkPSJNOTE1LjExLDEyNzIuOTVjLTcuMTQtMS4xOS0xNC41My0yLjQtMjMuNzEtMy4yMi01Ljg3LS41Mi01OC41Ni00LjU2LTEwMy41NywxNC4wMi0xMS41Niw0Ljc3LTIxLjk1LDEwLjg1LTMxLjMsMTcuNjgsNS4xNSw5Ljg0LDkuNDgsMjAuMTksMTIuODQsMzEuMTMsNC4xMiwxMy40Miw3Ljg3LDI2Ljg4LDExLjMyLDQwLjMsNi43OS0xLjM4LDE0LjI0LTMuNDQsMjIuMzQtNi41MSwwLDAtMTMuNjktMjAuMDItMTUuNzItNDAuNDUtLjg4LTguODMsNy45Ny0xNi4wNywxNy40My0xNC4zOCwzNS45LDYuNDUsMTI0Ljg1LDE1LjYsMTY4LjUtNDAuODEtMy40MywxLjEtNi44OCwyLjA4LTEwLjM5LDIuODQtMTkuMDcsNC4xNC0zMi4zNiwxLjk1LTQ3Ljc1LS42Wk00MzcuMTEsMTUxOS42NWMtMy43LDcuMS01LjgyLDE1LTYuMDIsMjNsLS43MSwyNy41MWg4MC40OGwxLjQ4LTEzLjM2Yy0yMC44OS0xLjEzLTUxLjI3LTguNDMtNzUuMjMtMzcuMTVaTTc1Ny4zOSwxNDIxLjIzYy0uNjYtMy4xMS0xLjM0LTYuMjMtMi4wNC05LjM1LTEuMzItNS45Ny0yLjcyLTExLjk2LTQuMTYtMTcuOTYtMS41Ni02LjQ3LTMuMTktMTIuOTQtNC45LTE5LjQyLTIuODMtMTAuNy01Ljg2LTIxLjQxLTkuMTMtMzIuMDQtMS44Ni02LjA0LTQuMTYtMTEuODMtNi43MS0xNy40OC0yLjQ2LTUuNDUtNS4xOS0xMC43NS04LjI5LTE1LjgzLTIuOTYtNC44Ni02LjI2LTkuNTEtOS44LTE0LjAzLTMuMjctNC4xNy02LjctOC4yMy0xMC40NS0xMi4xLTguODEsNS41OC0xNy41OSwxMC43Ny0yNi4zMywxNS42MS0xNi41OCwxNC4xNS05Mi4xNSw3NS43LTE1NC40Nyw3Ny42LTcwLjQxLDIuMTYtMTExLjM4LTIyLjAxLTExMS4zOC0yMi4wMSwwLDAsLjAzLS4wNC4wMy0uMDUtMy40NC0xLjM5LTYuOC0zLjAyLTEwLjAyLTQuOTItLjcyLS40Mi0xLjQ1LS44Mi0yLjIyLTEuMTctLjI0LS4xMS0uNDctLjIxLS43MS0uMzItNy43OC0zLjYxLTE3LjAxLjEtMjAuMTEsOC4xbC0yOS44MSw3Ni43MWMtOS40OCwyNC40MS0xNC45Niw1MC4yLTE2LjIsNzYuMzZsLTMuNyw3Ny44NWg2OS4yN2wuNDMtMTYuNjEuNzMtMjguMzdjLjM2LTEzLjk1LDQuMTUtMjcuNzcsMTAuOTYtMzkuOTVsOC4yNi0xNC43OWMxLjQtMi40OCwxNC44NC0yNS41NSwzNi42NS0zNC44OC43Ni0uMzMsMS41NC0uMzksMi4yOS0uMjcsMS44OS4zLDMuNDksMS44OCwzLjU4LDMuOTkuMjUsNS42Mi0uMTMsMTUuMS0zLjYyLDI2LjgxLDEwLjkzLDEyLjExLDI4Ljk5LDI1LjMsNTYuNDUsMjcuMTgtLjM4LTEuMDUtLjgtMi4xLTEuMjUtMy4xMmwtMy43OS04LjYyYy02LjU0LTE1LjI3LTEwLjIzLTI4LjUtMTIuMTktMzkuNTYtMS45Ny0xMS4xMi0yLjE5LTIwLjA0LTEuOC0yNi41OS4wOS0xLjQ4Ljg1LTIuNiwxLjg5LTMuMjcsMS44MS0xLjE3LDQuNDUtLjk3LDUuOSwxLjE3bDkuMzIsMTMuODdjNS43NiwyLjI3LDE4LjA4LDcuNjcsMzAuODYsMTYuNzMsNS4zNCwzLjc4LDEwLjE0LDguMTQsMTQuNCwxMi45MS4yNi4yOS41Mi41Ny43OC44NiwxNC43MiwxNi45MSwyMi41NSwzOS4xMywyMS40NSw2Mi4wNGwtMy4yNyw2Ny41OWg4OC41MWwxLjgyLTE1LjAzLDIuMDQtMTYuODUuMy0yLjQ3LDMuNDgtMjguNzJjMS45Ni0xNi4xOCw1LjUzLTMyLjE0LDEwLjg2LTQ3LjU0LDQuMDQtMTEuNjcsOS4zNS0yMy45NiwxNS43Ny0zMi4xMywwLDAsMCwwLDAsMGguMDNzMi42NCwyLjA2LDUuMjgsOC4zNWMxLjE2LDEuNTYsMjMuNTEsMzIuNDgsMjMuMTUsMTAyLjUxaDUzLjk5Yy0zLjQ0LTM5LjEyLTkuNTYtODkuNDEtMjAuNDEtMTQyLjU4LS41Ni0yLjczLTEuMTItNS40Ny0xLjctOC4yMVpNMzk2LjQ2LDM1Ny41NmMtLjA1LjM2LS4xLjczLS4xNSwxLjA5LjA1LS4zNy4xMS0uNzMuMTctMS4xLDAsMC0uMDEsMC0uMDIsMFpNMzg2LjE3LDQzOC44YzEuMzMtMTIuMjQsMi43OS0yNC40OCw0LjMyLTM2LjcyLTEuNTMsMTIuMjQtMywyNC40OC00LjMzLDM2LjcybC0xMS4wNywxMDEuNTVjLS4wNS40Mi0uMDQuODUtLjA4LDEuMjcuMDQtLjQzLjA1LS44NS4xLTEuMjdsMTEuMDctMTAxLjU1Wk03MjQuNTEsNzg0LjE3czAsMCwwLDBoLjAxczAsMC0uMDIsMFpNMzkxLjA4LDEyMzIuODRjLjEyLDYuMDMuODIsMTIuNTgsMi4yOCwxOS41OSwxLjE3LDUuNjEsMi44MywxMS41MSw1LjExLDE3LjY5LjgsMi4xNywxLjY3LDQuMzcsMi42Miw2LjYxLDUyLjc5LDI2LjY3LDk0LjA1LDMzLjI5LDEyMS45MiwzMy4yOSwzMi40OSwwLDgzLjE5LTguOTksMTQ5LjE0LTQ4LjI5Ljc5LS40NywxLjU3LS45MywyLjM3LTEuNDEsMS41Ny0uOTUsMy4xNi0xLjkzLDQuNzUtMi45MiwzLjU1LTIuMTksNy4xMi00LjQ1LDEwLjc2LTYuODIsNC44My0zLjE2LDkuNzQtNi40NywxNC43Mi05Ljk1LjA0LS4wMy4wOS0uMDYuMTMtLjA5LDIuNjUtMS44Niw1LjI1LTMuNzEsNy44LTUuNTYsMi41LTEuODEsNC45NS0zLjYyLDcuMzUtNS40Mi02LjgxLS40Mi0xMy41Mi0xLjQ2LTIwLjExLTMuMi0yLjYtLjY5LTUuMTktMS40Ni03Ljc1LTIuMzYtMjcuNTgtOS43MS00OS41Ny0zMC42NS02NC4yMy02MC40MS0zLjQ5LTUuOTQtMTAuNC0xNi4xNS0yMS41Mi0yNi4yMy0zLjcyLTMuMzctNy42Mi02LjQ1LTExLjY3LTkuMjYtNi4zMS00LjQtMTMuMDEtOC4xMy0yMC4xLTExLjE3LTE1LjYxLTYuNy0zMy4wNC0xMC4wOS01Mi4xNy0xMC4wOS0zMy4zNSwwLTYxLjU5LDEwLjI3LTgzLjk0LDMwLjUzLTEyLjI3LDExLjEyLTE5LjQyLDIyLjQxLTIyLjQ5LDI3LjkyLS40MS44MS0uODUsMS41OS0xLjI4LDIuMzktLjMzLjY2LS41MiwxLjA3LS41MywxLjA5bC0uMDUtLjAyYy0zLjMyLDYuMTQtNi45NiwxMS44OS0xMC45MiwxNy4xOC4wMywwLC4wNi0uMDEuMDgtLjAyaC0uMDFzLTEyLjg4LDE3LjMxLTEyLjI4LDQ2Ljk0Wk01NDQuNDcsMTI1OC41OGMzLjM3LTExLjIsMTEuMDctMjYuMjIsMjguMTUtMjYuMjEsMTUuNCwwLDIyLjIyLDExLjM4LDI1LjE1LDE5LjY1LDEuMTIsMy4xNi0xLjA5LDYuNjItMy41Nyw1LjU5di0uMDJjLTkuMjEtMy44NS0yOC4xNi04Ljc1LTQ1LjQsNS45My0yLjQ0LDIuMDgtNS40My0xLjMzLTQuMzMtNC45NVpNNDQ2Ljg1LDEyNTIuMDNjMi45My04LjI3LDkuNzYtMTkuNjUsMjUuMTUtMTkuNjUsMTcuMDgsMCwyNC43OCwxNS4wMSwyOC4xNSwyNi4yMSwxLjA5LDMuNjItMS44OSw3LjAzLTQuMzMsNC45NS0xNy4yNC0xNC42OC0zNi4xOS05Ljc4LTQ1LjQtNS45M3YuMDJjLTIuNDgsMS4wMy00LjctMi40My0zLjU4LTUuNTlaTTY5OS42MSwxMTE4LjU2Yy0yMi43LDAtNDMuMDEtMTAuMTMtNTYuNzUtMjYuMDguODIsNy40OCwxLjk3LDE0LjgsMy41NCwyMS44NywyLjcyLDEyLjI4LDYuNSwyMy4zNiwxMS4yLDMzLjE0LDIuMjcsMy45MywzLjUzLDYuNjIsMy45MSw3LjQ1LDEwLjUyLDE4LjQxLDI0Ljc2LDMxLjI1LDQxLjg4LDM3LjI3LDIyLjc2LDguMDEsNDkuMSwzLjQ3LDc1LjY2LTEyLjY3LDUuODYtMy41NiwxMS43Mi03LjY2LDE3LjU2LTEyLjM0LDIuMTEtMS42OSw0LjE5LTMuNDQsNi4yNS01LjI0LjExLS4xLjIyLS4xOS4zNC0uMjksNi40Mi01LjYzLDEyLjYyLTExLjgsMTguNTctMTguNDUsMjMuNDMtMjYuMTksNDIuOTQtNTkuOSw1Ni4yOS05Ny44Mi44NC0yLjM5LDEuNjMtNC43OSwyLjQxLTcuMTksNi40NC0xOS42OCwxMC44OS0zOS40NCwxMy4yOC01OC43MywzLjUtMjguMjUsMi42MS01NS41MS0yLjgzLTgwLjAyLTguOTctNDAuNDQtMjkuMi02OC4wOS01Ni45OC03Ny44Ni03LjM3LTIuNTktMTUuMS0zLjg3LTIzLjA5LTMuODctMjIuMTcsMC00Ni4zNSw5Ljg1LTcwLjEyLDI4Ljg5LS41OC40Ni0xLjE0Ljk2LTEuNzEsMS40My0zMy44NiwyNy43Ny02Mi4xNCw3MC40LTc5Ljc0LDEyMC4zNy0xLjg1LDUuMjYtMy41MywxMC41My01LjEsMTUuOCwxMi42MS05LjY1LDI4LjMzLTE1LjQ0LDQ1LjQ0LTE1LjQ0LDcuMDEsMCwxMy43NywxLjAzLDIwLjIxLDIuODMtMTIuNiw2LjE4LTIxLjMsMTkuMS0yMS4zLDM0LjA4LDAsMjAuOTgsMTcuMDEsMzcuOTgsMzgsMzcuOTgsMTUuNDEsMCwyOC42NC05LjE4LDM0LjYxLTIyLjM2LDIuMjEsNy4wNiwzLjQsMTQuNTcsMy40LDIyLjM2cy0xLjE4LDE1LjItMy4zNiwyMi4yMmMtOS40NywzMC41MS0zNy45Myw1Mi42Ny03MS41Nyw1Mi42N1pNMzYyLjQ3LDExODAuMjRjMTYuOTctMTMuOTMsMjkuNDUtMzYuNTEsMzUuOTYtNjUuODcsMi41NC0xMS40NCw0LjA2LTIzLjQ5LDQuNjMtMzUuOTQtMTIuNTMsMjMuODUtMzcuNTIsNDAuMTQtNjYuMzQsNDAuMTQtMzMuNjQsMC02Mi4xLTIyLjE2LTcxLjU3LTUyLjY3LTIuMTgtNy4wMi0zLjM1LTE0LjQ4LTMuMzUtMjIuMjIsMC00MS4zNiwzMy41NS03NC44OSw3NC45My03NC44OSw3LjAyLDAsMTMuNzgsMS4wMywyMC4yMiwyLjg0LTEyLjYsNi4xOC0yMS4yOSwxOS4xLTIxLjI5LDM0LjA3LDAsMjAuOTgsMTcuMDEsMzcuOTgsMzgsMzcuOTgsMTAuNzIsMCwyMC4zOS00LjQ1LDI3LjMtMTEuNTktMS42MS0xMi4xOS00LjAyLTI0LjU2LTcuMjQtMzYuOTctMi4xOS04LjQzLTQuNzQtMTYuODgtNy42Ny0yNS4zLS4xNi0uNDYtLjMtLjkzLS40Ni0xLjM5LTE3LjktNTAuODItNDYuODMtOTQuMDgtODEuNDYtMTIxLjgxLTMyLjM0LTI1LjktNjUuNDQtMzQuNzktOTMuMjItMjUtNy4yMSwyLjU0LTEzLjksNi4zLTIwLjAyLDExLjE2LTE3LjQ4LDEzLjg1LTMwLjMyLDM2Ljc3LTM2Ljk2LDY2LjcxLTUuMDIsMjIuNjQtNi4xMyw0Ny42Mi0zLjUzLDczLjU1LDIuMzgsMjMuNjcsNy44NSw0OC4xNCwxNi4zOSw3Mi4zOWgwYzEzLjYxLDM4LjYzLDMzLjYxLDcyLjg4LDU3LjYzLDk5LjI4LDUuNjQsNi4yLDExLjUsMTEuOTksMTcuNTcsMTcuMjguMzMuMjkuNjcuNTUsMSwuODQsMS43NCwxLjUsMy40OSwyLjk5LDUuMjYsNC40MSw2Ljg3LDUuNSwxMy43NiwxMC4xOCwyMC42NCwxNC4xMywyNS41MiwxNC42NSw1MC43LDE4LjU4LDcyLjU4LDEwLjg4LDcuNi0yLjY3LDE0LjYyLTYuNzQsMjEuMDItMTEuOTlaTTEwMTIuMTQsNDMxLjgxYy0uMTctMi40MS0uOTMtNC42NC0yLjA3LTYuNjMtMi40NS00LjI4LTYuODMtNy4zLTEyLjAyLTcuNzItMzQuMTItMi43Ny03My4zNSwyLjYzLTExNy4wMiwxNi4xNC0zLjA0Ljk0LTYuMDYsMS45Mi05LjA2LDIuOTEtNS44NiwxLjkzLTExLjYxLDMuOTYtMTcuMjYsNi4wNC0yLjQ1LjktNC44NywxLjgyLTcuMjgsMi43NC0zLjMzLDEuMjgtNi42MywyLjU4LTkuODcsMy44OS0yMyw5LjMzLTQzLjU3LDE5LjM0LTYwLjEsMjguMDctMy43MywxLjk3LTcuOC0xLjk3LTUuOTUtNS43NiwyLjU3LTUuMjcsNS4yNC05Ljk2LDcuOTEtMTQuMjMsMTQuNjctMjMuNDUsMjkuNDgtMzIuNDYsMzAuMTMtMzIuODMtMTEuOTYtOS4wOS0yNC42NC0xNy4wOS0zNy44Ni0yMy44MS0yLjQ5LTEuMjYtNC45Ny0yLjQ3LTcuNDUtMy42OC00My4zOC0yMS4wOS04Ni4zMi0zMy43OC0xMjMuNzUtNDEuMzUtMS4wNC0uMjEtMi4wNy0uNDEtMy4xLS42Miw0LjA2LDI3LjkyLDcuNjYsNTUuODcsMTAuNyw4My44MWwxMS4wNywxMDEuNTRjMy43LDMzLjkyLTExLjMzLDY3LjA4LTM5LjIsODYuNTQtMjcuMywxOS4wNi02MS44OSwyOC43Mi0xMDIuODMsMjguNzJoMGMtNDEuNjYsMC03Ni43My0xMC4wMS0xMDQuMjItMjkuNzEtMjMuMTYtMTYuNi0zNy4wNy00My4xMS0zOC4yNS03MS40My4wMi41MiwwLDEuMDUuMDMsMS41OC0zMS43NS03My40Mi00MC42MS0xMzkuNC00My4wNy0xNzEuMDktLjI1LTMuMjYtLjQ0LTYuMTYtLjU4LTguNjYtMTguNTksNi42NS0zNy42MiwxNC42Ni01Ni42NywyNC4zNS0xMy4xNCw2LjY4LTI1Ljc1LDE0LjYyLTM3LjY1LDIzLjY0LjEuMDQuMjEuMDguMzEuMTMuMDUuMDMsMS43NCwxLjA0LDQuNDcsMy4xNyw1LjYsNC4zNywxNS42OCwxMy42NiwyNS43MiwyOS43LDIuNjcsNC4yNyw1LjM0LDguOTYsNy45MSwxNC4yMywxLjg1LDMuNzktMi4yMyw3LjczLTUuOTYsNS43Ni0xNS45NC04LjQyLTM1LjY0LTE4LjAyLTU3LjY1LTI3LjA2LS45NS0uMzktMS45LS43OS0yLjg3LTEuMTgtNS41OC0yLjI2LTExLjMxLTQuNDctMTcuMTYtNi42Mi01LjY2LTIuMDgtMTEuNDItNC4xMS0xNy4yOC02LjA0LTIuODUtLjk0LTUuNzMtMS44Ni04LjYyLTIuNzYtNDMuNjYtMTMuNTEtODIuOS0xOC45MS0xMTcuMDItMTYuMTQtNi4xMy40OS0xMS4xNCw0LjYtMTMuMTUsMTAuMTUtLjQ4LDEuMzMtLjg0LDIuNzItLjk0LDQuMTktMS4zMSwxOS4zNi0xLjMyLDQ2LjY1LDIuOTMsNzcuMjMsNC44MSwzNC42MSwxNC4xOCw2OC40NSwyNy44MywxMDAuNTgsNy4wOCwxNi42NywxNS40LDMyLjg3LDI0Ljc5LDQ4LjU5LDQuNjIsNy43NSw5LjUxLDE1LjM4LDE0LjY3LDIyLjg3LDQuODksNy4xLDEwLDE0LjA5LDE1LjM3LDIwLjk0LjAzLjA0LjA3LjA5LjEuMTMsMy41NSw0LjUyLDcuMTgsOS4wMSwxMC45MywxMy40MiwyLjM1LDIuNzYuODQsNy4wNS0yLjc0LDcuNjktMi42NC40Ny01Ljg0Ljg3LTkuMzUuOTgtMS41LDQ0LjQzLjU2LDkzLjMyLDguNDMsMTQ1LjMsMTMuOTQtNDAuMDcsMzkuMDQtNjguMDUsNzIuMjYtNzkuNzQsMzQuMjQtMTIuMDUsNzIuNTktNS4yOCwxMDkuNjEsMTguOTYsNDguMSwxNi45Myw5NS4yMSw2MC4zMSwxMjQuNjUsMTIwLjk3LDIyLjQ3LDQ2LjMxLDMwLjY1LDk0LjQ4LDI1Ljk0LDEzNi4xNS0uNzksNy4wMS0xLjk4LDEzLjgzLTMuNSwyMC40MywxNy43OS03Ljc0LDM5LjY3LTEzLjE4LDY2LjA4LTEzLjE5aC4wNGMyNywwLDQ5LjI3LDUuNyw2Ny4yNywxMy43Mi0uMjEtNi44OC0uMTUtMTMuODcuMjMtMjAuOTcsMS4yLTIyLjE3LDUuMzItNDUuMjMsMTIuNjQtNjguMzQsMTAuMTMtMzIsMjUuMjQtNjAuMzgsNDMuNC04My43NiwxOS4zMi0zNy45NCw0NC42Mi03MC4yOSw3My41Ni05My40Nyw0MS43Ni0zMy40NSw4Ni4zMy00NC4yOCwxMjUuNDktMzAuNDksMzMuODgsMTEuOTMsNTkuMzUsNDAuNzYsNzMuMTEsODIuMTMsOC4xNy01Mi44OCwxMC4zMi0xMDIuNjEsOC44LTE0Ny43Mi0zLjI5LS4xMy02LjI4LS41Mi04Ljc3LS45Ny0zLjU4LS42NS01LjA5LTQuOTMtMi43NC03LjY5LDMuNTktNC4yMyw3LjA5LTguNTEsMTAuNDktMTIuODQtLjAzLS40NC0uMDUtLjg4LS4wOC0xLjMxbC41Mi43M2M1LjIzLTYuNjcsMTAuMTktMTMuNDcsMTQuOTctMjAuMzcsNS4xNi03LjQ2LDEwLjA2LTE1LjA1LDE0LjY4LTIyLjc3LDkuNTgtMTUuOTcsMTguMDYtMzIuNDQsMjUuMjctNDkuMzksMTMuNjUtMzIuMTMsMjMuMDEtNjUuOTcsMjcuODItMTAwLjU4LDQuMjUtMzAuNTgsNC4yNC01Ny44NywyLjkzLTc3LjIzWk0yMDUuNTMsNTI0LjM1bC01Mi44NSw4Ny4zM2MtMi44NCw0LjY4LTkuNTIsNS40LTEzLjM4LDEuNDYtMi41OC0yLjYzLTUuMDItNS4yMi03LjM5LTcuOC01LjEyLTUuNTYtOS43Ny0xMS0xNC0xNi4zMS01LjAxLTYuMjktOS40Mi0xMi4zOS0xMy4yOS0xOC4zLTMzLjE1LTUwLjYtMjcuMTEtODYuOTItMjIuNDMtMTAxLjE1LDEuMjgtMy45LDUuMzgtNi4yOCw5LjUzLTUuNSwxNy44MywzLjMzLDM0Ljk1LDkuMTMsNTAuNCwxNS43MSw1LjM5LDIuMjksMTAuNTYsNC42NywxNS40OSw3LjA5LDUuMzEsMi42MSwxMC4zMyw1LjIzLDE1LDcuODEsMTMuNjksNy41NywyNC40LDE0LjY1LDMwLjYyLDE4Ljk5aDBjMy40OSwyLjQ2LDQuNDgsNy4wNiwyLjMxLDEwLjY3Wk03MzcuMzQsODAwLjU5bC0xMi44Miw5LjExdi0uMDJjLTI1LjI5LDE3Ljk0LTQ5LjA3LDI2Ljc3LTY5Ljg1LDMwLjQ2bC40Ni4zOWM0LjkxLDQuMTUsMy4xNSwxMi4xMS0zLjA3LDEzLjc5bC04LjE4LDIuMjIsMTEuMjQsOS41YzQuOTIsNC4xNiwzLjE1LDEyLjExLTMuMDYsMTMuNzlsLTE2LjMzLDQuNDNjLTI4Ljk4LDcuODMtNTYuMywxMS43NS04MS44MSwxMS43NS0zNC4yMSwwLTY1LjIyLTcuMDQtOTIuNzctMjEuMDctMy45My0yLTcuOC00LjE0LTExLjU5LTYuNDQtMTIuNDYtNy41My0yMy4zNC0xNi4xMi0zMi44MS0yNS4yMS00NS4zMi00Ni41Ny00MS4wNC0xMDguMy00MS4wNC0xMDguMywwLDAsLjAxLjA0LjAyLjA1LS4wMS0uMDgtLjAzLS4xNy0uMDQtLjI0LS43Ny00LjYyLDQuODUtNi45Nyw3Ljc0LTMuODguMjQuMjYuNTEuNDkuNzEuODQsMS44OCwzLjIzLDQuMDUsNi43Niw2LjQ1LDEwLjQ3LDI1Ljc3LDM5Ljc1LDgyLjM0LDEwMi43NywxNzguNDIsOTQuODIsOS4yMS0uNzYsMTguNzUtMi4xMSwyOC42OS00LjI2LTIyLjg4LTEwLjc0LTM5LjQ0LTMxLjY3LTUwLjYyLTUwLjk0LTUuMDMtOC42OC04Ljk3LTE3LjAzLTExLjktMjMuOTUtMS44NS00LjM4LDMuMzktOC4yOCw3LjA5LTUuMywyMC40LDE2LjQ2LDYyLjEsNDEuNTUsMTE0LjM5LDI3LjQ0LDQuOTMtMS4zMyw5Ljk0LTIuOTgsMTUuMDQtNS4wNSwxLjc1LS43MSwzLjUxLTEuNDUsNS4yOS0yLjI1LTEuODctMS4wMy0zLjc3LTIuMTMtNS42Ny0zLjMtMTAuNS03LjA1LTE3LjE0LTE3LjI4LTIxLjM1LTI3LjczLTIuOC02Ljk3LTQuNTQtMTQuMDMtNS41OC0yMC4zMi0uMjktMS43NS4zNy0zLjIxLDEuNDUtNC4xNiwxLjgyLTEuNTgsNC44NC0xLjcyLDYuNjUuNjMsMTEuMTIsMTQuNDcsMzQuMzcsMzMuODcsODEuNjgsNDIuODYsNi45MiwxLjMyLDguOSwxMC4yNywzLjE2LDE0LjM0bC0xMi44Miw5LjFjMy4xMS43NCw2LjMxLDEuNDQsOS42NiwyLjA4LDYuOTIsMS4zMiw4LjksMTAuMjcsMy4xNiwxNC4zNFpNOTQxLjU5LDU3MS4zOWMtMy44OCw1Ljg4LTguMywxMS45NS0xMy4zLDE4LjItNC4yNSw1LjMxLTguODksMTAuNzQtMTQuMDQsMTYuMy0yLjIyLDIuNC00LjUxLDQuODItNi45MSw3LjI2LTMuODYsMy45NC0xMC41NCwzLjIyLTEzLjM5LTEuNDZsLTUyLjg1LTg3LjMzYy0yLjE4LTMuNi0xLjE4LTguMjEsMi4zMS0xMC42NmgwYzYuMTUtNC4zMSwxNi43LTExLjI5LDMwLjE5LTE4Ljc3LDQuNjYtMi41OCw5LjY4LTUuMjIsMTUtNy44NCw0LjkyLTIuNDIsMTAuMDgtNC44MSwxNS40Ny03LjExLDE1LjU2LTYuNjUsMzIuODYtMTIuNTMsNTAuODYtMTUuOSw0LjE1LS43OCw4LjI2LDEuNiw5LjUzLDUuNSw0LjcsMTQuMjksMTAuNzcsNTAuODYtMjIuODYsMTAxLjhaTTUxNS40Nyw0Mi43MWMzLjkzLDEwLjc0LDcuNzksMjMuOCwxMS4zNywzOS43NWw1LjY1LDIyLjdjNC4xOCwxNi44Miw4LjE3LDMzLjY3LDExLjk3LDUwLjU3LDEuODIsOC4xLTMuMzEsMTYuMTEtMTEuNDMsMTcuODNsLTEwLjYsMi4yM2MxNS40OSw4Ljk2LDMyLjkxLDE2LjQ0LDUyLjIyLDIyLjQ0LTQuODEtMjIuMDktOS44OC00NC4xLTE1LjMyLTY1Ljk2bC01Ljc0LTIzLjA3Yy05LjAzLTQwLjE4LTE5LjIxLTU5LjA5LTI2LjMxLTY3LjkzLTQuOS02LjEtOC4zMi03LjQtOC44OC03LjU4aC0yLjU4LDBjLS4zLjEtMS40Mi41Mi0zLjE1LDEuODIuOTMsMi4yOCwxLjg2LDQuNjcsMi43OSw3LjJaTTU1Mi41NSwyNTUuNDdjOC4zOSw0LjI0LDE0LjMyLDEyLjE1LDE1LjksMjEuNDIsMi4wMiwxMS44NSwzLjkzLDIzLjcyLDUuNzcsMzUuNi44OCw1LjcsMS43MSwxMS40LDIuNTUsMTcuMTEuODQsNS42OSwxLjY4LDExLjM4LDIuNDcsMTcuMDcsMS4xMiw4LjAzLDIuMjIsMTYuMDcsMy4yNiwyNC4xMiw3LjU5LDEuMDEsMTUuNCwxLjc4LDIzLjM5LDIuMzUtMS4xMS03Ljk3LTIuMjktMTUuOTMtMy40OC0yMy44OS0uODYtNS43Ni0xLjcyLTExLjUxLTIuNjMtMTcuMjctLjkxLTUuNzctMS44Ni0xMS41My0yLjgyLTE3LjMtMy42NS0yMi4wNy03LjU3LTQ0LjEtMTEuODUtNjYuMDUtMzAuNDYtNy4zMS01Ny42NC0xNy41Mi04MS40My0zMC42OGgtLjAzczE3Ljg4LDIxLjg5LDQ4Ljg4LDM3LjUxWk01NjkuODgsNDM3LjVjMTIuNDgsMi41NiwyMS44MiwxMi45NSwyMy4yLDI1LjZsNi4xMSw1Ni4wMWMuNjUsNS45Mi41OSwxMS44Mi0uMTIsMTcuNiw4LjQ1LjY5LDE3LjExLDEuMTYsMjUuOTQsMS40NGwtMTAuNDQtOTUuN2MtLjgzLTcuNjItMS43OC0xNS4yNC0yLjY5LTIyLjg2LTU1LjcxLTIuODgtMTAzLjYzLTE1LjEzLTE0My40NS0zNi41NmwtLjA3LjA3czMxLjIxLDM5Ljk1LDEwMS41Miw1NC40MVpNNTQ1LjM0LDYwMi4xN2MtMTguMSw3Ljk1LTQxLjQ3LDEzLjU0LTcxLjQ1LDEzLjU0LTEuNzQsMC0zLjQyLS4wNS01LjEyLS4wOSwxNC40Niw0LjE1LDMwLjU4LDYuMjgsNDguMzQsNi4yOCwzNC40NywwLDYyLTcuNjIsODMuNTMtMjIuNjUsNi4wOC00LjI0LDExLjE4LTkuNTMsMTUuMTktMTUuNDktNTEuNTYtMi4zMS05Ny42OS0xMS4xNS0xMzcuNTktMjYuNTQtOC40My0zLjI1LTE2LjU2LTYuODEtMjQuNDQtMTAuNjMsMTEuOTEsMTEuMzksNDAuODksMzQuMzEsOTAuNiw0NS44NCw0LjgxLDEuMTEsNS40Niw3Ljc2LjkzLDkuNzVaIiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTEwMjUuMTYsMTE4Ny45MWwtMTQuNTEsMTYuODdjLTE2Ljc3LDE5LjUyLTM1LjI2LDMxLjU3LTU0Ljk3LDM1Ljg2LTEyLjc2LDIuNzctMjEuMTYsMS4zOC0zNS4wOC0uOTItNy40LTEuMjItMTUuNzktMi42LTI2LjIyLTMuNTMtNC43OS0uNDMtMzYuOTEtMi44OS03My45OCwzLjYxLTcuODcsMS4zOC0xNS45NiwzLjE3LTI0LjA3LDUuNDctNy4xNywyLjAzLTE0LjM0LDQuNDUtMjEuMzcsNy4zNS0xMy42Myw1LjYyLTI1Ljg4LDEyLjY2LTM2Ljg5LDIwLjU1LTIuNTItMy4xNi01LjE2LTYuMjUtNy45Mi05LjI3LDEyLjQxLTguOSwyMy43My0xNy42OSwzMy43Ni0yNS45MiwxNS4xOS0xMi40NiwyNy40My0yMy41NywzNS45Ni0zMS43LDUuOTctMy44MSwxMS45Mi04LjA2LDE3LjgtMTIuNzcsMzkuNDctMzEuNjEsNzIuMjEtODAuMjMsOTIuMTctMTM2LjksOC4xOC0yMy4yMiwxMy44LTQ2LjczLDE2Ljg4LTY5Ljc5LDMwLjE2LTEwMC41MiwzNy4yMS0xOTQuMiwzMy42LTI3My41Mi4wMi0uMDEuMDMtLjAyLjA1LS4wNCwyMS4yOC0yOC42NSwzOC44Ni01OS4yNiw1Mi40My05MS40LDE0LjgtMzUuMDUsMjQuODktNzEuOTYsMzAuMDEtMTA5LjcxLDQuMzktMzIuNDEsNC4zNS01OS43OCwzLjE4LTc5LjI0LTEuMTctMTkuMzEtMy40NS0zMC44NC0zLjY1LTMxLjc3aC0uMDJjLTEuMzQtNi41Ni02LjQzLTExLjcxLTEyLjk3LTEzLjExLTQ1LjA1LTkuNjgtOTguMy01LjE3LTE1OC4yOSwxMy4zOS04LjgsMi43Mi0xNy4zNSw1LjY4LTI1Ljc0LDguNzQtMTcuODktMTUuNi0zNy41Mi0yOC45Ni01OC4zNS0zOS41NS01My45LTI3LjM5LTEwNy42Mi00Mi4zMi0xNTIuNTUtNTAuNC0uOC0uMTQtMS42LS4yOC0yLjQtLjQyLTcuMDgtNDQuMDEtMTUuNDgtODcuODQtMjUuMDEtMTMxLjMyLTQuNzItMjEuNTQtOS42Ni00My4wMS0xNC45Ny02NC4zM2wtNS42LTIyLjUyYy04LjQ5LTM3LjY5LTE5LjctNjUuMjgtMzMuMzEtODIuMDNDNTM5LjM5LDIuNjcsNTI1Ljg0LjA2LDUxOSwwaC0zLjc0Yy02Ljg1LjA2LTIwLjM5LDIuNjgtMzQuMTMsMTkuNTktMTMuNjIsMTYuNzQtMjQuODIsNDQuMzQtMzMuMzEsODIuMDNsLTUuNjEsMjIuNTJjLTE2LjIxLDY1LjEzLTI5LjY4LDEzMS4zNi00MC4zMywxOTcuOTQtNDIuODUsOC40NC05Mi43NywyMy4xMi0xNDIuOCw0OC41NC0yMC43NywxMC41Ni00MC4zNCwyMy44Ni01OC4xOCwzOS40LTguMjYtMy0xNi42OC01LjkyLTI1LjMzLTguNi01OS45OC0xOC41NS0xMTMuMjQtMjMuMDctMTU4LjI4LTEzLjM5LTYuNTUsMS40LTExLjY0LDYuNTYtMTIuOTcsMTMuMTFoMGMtLjI1LDEuMjEtNC4wMywyMC4zLTQuMyw1MS4wOXY3LjA4Yy4xMywxNS4zMywxLjE2LDMzLjE1LDMuODMsNTIuODQsMi42NywxOS43NCw2Ljc0LDM5LjI1LDEyLjEsNTguMzksNC44OSwxNy40NSwxMC44NCwzNC42LDE3LjksNTEuMzIsMTMuNDYsMzEuODksMzAuODgsNjIuMjYsNTEuOTMsOTAuNzItLjQxLDguNzctLjY4LDE3LjcxLS44MSwyNi44Mi0uOTIsNjQuNTIsNS41MywxMzcuMzYsMjUuMzQsMjE0LjksMi4xNiw4LjQ1LDQuNDYsMTYuOTQsNi45NCwyNS40OS40NSw0LjA2Ljk2LDguMTQsMS41OCwxMi4yMywyLjI2LDE1LjA5LDUuNjQsMzAuMzQsMTAuMDgsNDUuNTUsMS44NSw2LjM1LDMuODYsMTIuNyw2LjA5LDE5LjAzLDE5Ljk2LDU2LjY3LDUyLjcsMTA1LjMsOTIuMTcsMTM2LjkxLDcuMDIsNS42MiwxNC4xMiwxMC41OCwyMS4yNiwxNC45MSwxNS4zLDE0LjQxLDQwLjY4LDM2Ljc2LDcyLjgzLDU5LjMyLDcuMDQsNC45NCwxNC4wNiw5LjYyLDIxLjA4LDE0LjEtNS45Miw4LjE3LTExLjMxLDE2Ljc2LTE2LjExLDI1LjczLTUuMzksMTAuMDctMTAuMSwyMC42LTEzLjk2LDMxLjU3bC0zMi4xNyw5MS4zNmMtOS43OCwyNy43Ny0xNS40MSw1Ni43Ny0xNi43NSw4Ni4xOWwtNi42NywxNDYuNzJjMCwuMTksMCwuMzcsMCwuNTZsLS45NywyMS40Yy0uMzUsNy41Myw1LjY4LDEzLjgyLDEzLjIyLDEzLjgyaDE0NS4zOGM3LjMxLDAsMTMuMjMtNS45MiwxMy4yMy0xMy4yMnYtMTUuOTJjLjE2LTEuMDkuMjctMi4xOS4zMy0zLjMxaDcyLjMzbC01LjE0LDQ2LjU3Yy0uODYsNy44Myw1LjI3LDE0LjY3LDEzLjE2LDE0LjY3aDEyLjFzLjA3LDAsLjEsMGMuMDcsMCwuMTMuMDEuMTkuMDFoMTM5LjU5cy4wOC0uMDEuMTEtLjAxYy4wMiwwLC4wNCwwLC4wNiwwaDkuNjMsMHMwLDAsMCwwYy4wMiwwLC4wNCwwLC4wNiwwLDYuNjYtLjAzLDEyLjI3LTUuMDIsMTMuMDgtMTEuNjNsMS4xNC05LjM5Yy4wMi0uMTIuMDYtLjI0LjA4LS4zNmw0LjgzLTM5Ljg1aDExMS42M3MuMDcsMCwuMTEsMGgzLjYyYzcuNDIsMCwxMy4zOC02LjA4LDEzLjIzLTEzLjVsLS4wOC0zLjdjLS4zNS0xNy4zNC0uNi0yNS4wNS0xLjQ2LTM4Ljk5LS40NS04LjA5LTEuMDUtMTcuMjgtMS44Mi0yNy4zNWwtLjc2LTExLjE4aC0uMTRjLTMuMjktMzguNjgtOS4yLTg4LjQ3LTE5Ljc5LTE0MS44OSw0LjMtLjI4LDguMDUtLjYzLDExLjA2LS45MiwyOS4zNC0yLjc4LDU3LjM5LTEyLjUzLDgzLjM4LTI4Ljk5bDE4LjI5LTExLjU5YzQuOC0zLjAzLDMuODgtMTAuMjctMS41Mi0xMi4wMiwxMy41Mi0xLjY3LDI3LjctNS41Myw0MS43OC0xMi43LDM2LjA2LTE4LjM2LDUzLjM5LTQ5LjYyLDY3LjMzLTc0Ljc0LDEyLjEtMjEuNzksMjAuODEtNDUuMzQsMjUuOTEtNzBsNC41Mi0yMS43OWMyLjMxLTExLjIyLTExLjgzLTE4LjE3LTE5LjMtOS40OFpNODkzLjc1LDk3OS40OWMtMi4zOSwxOS4zLTYuODUsMzkuMDUtMTMuMjgsNTguNzMtLjc4LDIuNC0xLjU3LDQuNzktMi40MSw3LjE5LTEzLjM1LDM3LjkyLTMyLjg2LDcxLjYzLTU2LjI5LDk3LjgyLTUuOTUsNi42NS0xMi4xNSwxMi44Mi0xOC41NywxOC40NS0uMTEuMS0uMjIuMTktLjM0LjI5LTIuMDYsMS44LTQuMTUsMy41NS02LjI1LDUuMjQtNS44NCw0LjY4LTExLjcsOC43OC0xNy41NiwxMi4zNC0yNi41NiwxNi4xNC01Mi45LDIwLjY4LTc1LjY2LDEyLjY3LTE3LjEyLTYuMDItMzEuMzYtMTguODYtNDEuODgtMzcuMjctLjM4LS44NC0xLjY0LTMuNTItMy45MS03LjQ1LTQuNy05Ljc4LTguNDctMjAuODYtMTEuMi0zMy4xNC0xLjU3LTcuMDctMi43Mi0xNC4zOS0zLjU0LTIxLjg3LDEzLjc0LDE1Ljk0LDM0LjA0LDI2LjA4LDU2Ljc1LDI2LjA4LDMzLjY0LDAsNjIuMS0yMi4xNiw3MS41Ny01Mi42NywyLjE4LTcuMDIsMy4zNi0xNC40OCwzLjM2LTIyLjIycy0xLjE5LTE1LjMtMy40LTIyLjM2Yy01Ljk3LDEzLjE3LTE5LjIsMjIuMzYtMzQuNjEsMjIuMzYtMjAuOTksMC0zOC0xNy0zOC0zNy45OCwwLTE0Ljk4LDguNy0yNy44OSwyMS4zLTM0LjA4LTYuNDQtMS44LTEzLjItMi44My0yMC4yMS0yLjgzLTE3LjExLDAtMzIuODMsNS44LTQ1LjQ0LDE1LjQ0LDEuNTctNS4yNywzLjI0LTEwLjU0LDUuMS0xNS44LDE3LjYtNDkuOTcsNDUuODgtOTIuNiw3OS43NC0xMjAuMzcuNTctLjQ3LDEuMTQtLjk3LDEuNzEtMS40MywyMy43Ny0xOS4wNCw0Ny45NS0yOC44OCw3MC4xMi0yOC44OSw4LDAsMTUuNzMsMS4yOCwyMy4wOSwzLjg3LDI3Ljc4LDkuNzcsNDguMDEsMzcuNDIsNTYuOTgsNzcuODYsNS40NCwyNC41Miw2LjMzLDUxLjc3LDIuODMsODAuMDJaTTQ3NC45MSwxMzIuMjZsNS42NS0yMi43LjA5LS4zN2M2LjY1LTI5LjU5LDEzLjkzLTQ3LjY1LDIwLjE0LTU4LjY0LDQuOTItOC43MSw5LjE3LTEyLjk5LDExLjktMTUuMDUsMS43My0xLjMsMi44NS0xLjcyLDMuMTUtMS44MWgwYy44NiwwLDEuNzMsMCwyLjU4LDAsLjU2LjE3LDMuOTgsMS40OCw4Ljg4LDcuNTgsNy4wOSw4Ljg0LDE3LjI4LDI3Ljc1LDI2LjMxLDY3LjkzbDUuNzQsMjMuMDdjNS40NCwyMS44NywxMC41LDQzLjg4LDE1LjMyLDY1Ljk2LTE5LjMxLTYtMzYuNzItMTMuNDgtNTIuMjItMjIuNDQtMTkuMDktMTEuMDQtMzUuMjMtMjQuMzItNDguNDEtMzkuOC4zLTEuMjQuNTgtMi40OC44OS0zLjcyWk00NjEuNywxODguNzJjMTIuNTYsMTAuOTcsMjYuNTcsMjAuNzEsNDEuOTksMjkuMjQsMjMuNzgsMTMuMTUsNTAuOTcsMjMuMzcsODEuNDMsMzAuNjgsNC4yOCwyMS45NSw4LjE5LDQzLjk4LDExLjg1LDY2LjA1Ljk1LDUuNzcsMS45MSwxMS41MywyLjgyLDE3LjMuOTEsNS43NSwxLjc2LDExLjUxLDIuNjMsMTcuMjcsMS4yLDcuOTYsMi4zNywxNS45MiwzLjQ4LDIzLjg5LTcuOTktLjU3LTE1LjgtMS4zNC0yMy4zOS0yLjM1LTMzLjI3LTQuNDMtNjIuNi0xMy4wNS04Ny44Ni0yNS44Ni05LTQuNTctMTcuNDYtOS42OS0yNS40MS0xNS4zMi02LjExLTQuMzItMTEuOTQtOC45My0xNy40NC0xMy44Ny0uNDQtLjQtLjgzLS44MS0xLjI2LTEuMjEtNC4wNC0zLjcxLTcuOC03LjUyLTExLjMxLTExLjM5LDYuNTQtMzguMzQsMTQuMDQtNzYuNTMsMjIuNDctMTE0LjQyWk00MTkuNjYsNDQyLjQ0YzMuMDctMjguMTcsNi43Mi01Ni4zNSwxMC44NC04NC40OSwxMS42Nyw5LjQ1LDI0LjM1LDE3Ljc3LDM3LjkzLDI1LjA4LDM5LjgyLDIxLjQyLDg3LjczLDMzLjY4LDE0My40NSwzNi41Ni45MSw3LjYyLDEuODYsMTUuMjQsMi42OSwyMi44NmwxMC40NCw5NS43Yy04LjgzLS4yOC0xNy40OC0uNzUtMjUuOTQtMS40NC0zOC4xNC0zLjExLTcyLjQ2LTEwLjMyLTEwMi40Ny0yMS42Ny0zMS4yMy0xMS44MS01Ny44Ni0yOC4xNS03OS41NS00OC41NWwyLjYyLTI0LjA0Wk00MDguNTksNTQzLjk5bDIuNS0yMi45YzEzLjE2LDkuNTQsMjcuNDEsMTguMDYsNDIuNzIsMjUuNDksNy44OCwzLjgyLDE2LjAxLDcuMzgsMjQuNDQsMTAuNjMsMzkuODksMTUuMzksODYuMDMsMjQuMjMsMTM3LjU5LDI2LjU0LTQuMDEsNS45Ni05LjExLDExLjI1LTE1LjE5LDE1LjQ5LTIxLjUzLDE1LjAzLTQ5LjA2LDIyLjY1LTgzLjUzLDIyLjY1LTE3Ljc2LDAtMzMuODgtMi4xMy00OC4zNC02LjI4LTEzLjYtMy45LTI1LjczLTkuNTktMzYuMjMtMTcuMTEtMTcuMTEtMTIuMjYtMjYuMjgtMzMuMTUtMjMuOTUtNTQuNTFaTTEyNy40NSw4NjkuNTVjLTcuODctNTEuOTgtOS45Mi0xMDAuODctOC40My0xNDUuMywzLjUyLS4xMSw2LjcxLS41MSw5LjM1LS45OCwzLjU4LS42NSw1LjA5LTQuOTMsMi43NC03LjY5LTMuNzUtNC40MS03LjM4LTguODktMTAuOTMtMTMuNDItLjAzLS4wNC0uMDctLjA5LS4xLS4xMy01LjM3LTYuODUtMTAuNDgtMTMuODQtMTUuMzctMjAuOTQtNS4xNi03LjQ5LTEwLjA1LTE1LjEyLTE0LjY3LTIyLjg3LTkuMzgtMTUuNzItMTcuNzEtMzEuOTItMjQuNzktNDguNTktMTMuNjUtMzIuMTMtMjMuMDItNjUuOTctMjcuODMtMTAwLjU4LTQuMjUtMzAuNTgtNC4yNC01Ny44Ny0yLjkzLTc3LjIzLjEtMS40Ny40Ni0yLjg2Ljk0LTQuMTksMi4wMS01LjU1LDcuMDItOS42NiwxMy4xNS0xMC4xNSwzNC4xMi0yLjc3LDczLjM2LDIuNjMsMTE3LjAyLDE2LjE0LDIuODkuODksNS43NywxLjgyLDguNjIsMi43Niw1Ljg2LDEuOTMsMTEuNjIsMy45NSwxNy4yOCw2LjA0LDUuODQsMi4xNSwxMS41OCw0LjM2LDE3LjE2LDYuNjIuOTYuMzksMS45MS43OCwyLjg3LDEuMTgsMjIsOS4wNCw0MS43MSwxOC42NCw1Ny42NSwyNy4wNiwzLjczLDEuOTcsNy44LTEuOTcsNS45Ni01Ljc2LTIuNTctNS4yNy01LjI0LTkuOTYtNy45MS0xNC4yMy0xMC4wNC0xNi4wNC0yMC4xMi0yNS4zMy0yNS43Mi0yOS43LTIuNzMtMi4xMy00LjQyLTMuMTUtNC40Ny0zLjE3LS4xLS4wNC0uMjEtLjA5LS4zMS0uMTMsMTEuOS05LjAyLDI0LjUtMTYuOTYsMzcuNjUtMjMuNjQsMTkuMDUtOS42OCwzOC4wOS0xNy43LDU2LjY3LTI0LjM1aDBjLjIzLS4wOS40NS0uMTYuNjctLjI0LDUuNC0xLjkyLDEwLjc2LTMuNzQsMTYuMDYtNS40My4wOS0uMDMuMTctLjA2LjI2LS4wOCw1LjMxLTEuNjksMTAuNTYtMy4yNywxNS43Ni00Ljc1LjM5LS4xMS43OC0uMjMsMS4xNy0uMzQsNS4wMy0xLjQyLDkuOTktMi43NCwxNC44OS0zLjk3LjUxLS4xMywxLjAzLS4yNiwxLjU0LS4zOSw0LjgzLTEuMiw5LjU5LTIuMzIsMTQuMjgtMy4zNi4yNi0uMDYuNTMtLjEzLjc5LS4xOSwwLDAsMCwwLDAsLjAxLDAsMCwuMDEsMCwuMDIsMC0uMDUuMzctLjEyLjczLS4xNywxLjEtLjM5LDIuNjgtLjczLDUuMzctMS4xLDguMDUtLjUzLDMuNzctMS4wMSw3LjU0LTEuNTMsMTEuMzEtLjk1LDcuMDQtMS45NiwxNC4wNy0yLjg1LDIxLjEyLS4xMi45OS0uMjMsMS45Ny0uMzUsMi45Ni0xLjUzLDEyLjI0LTIuOTksMjQuNDgtNC4zMiwzNi43MmwtMTEuMDcsMTAxLjU1Yy0uMDUuNDItLjA2Ljg1LS4xLDEuMjctLjE4LDEuODktLjMyLDMuNzgtLjM4LDUuNjYtLjA0LDEuMDItLjAzLDIuMDMtLjAzLDMuMDUsMCwxLjM4LjAxLDIuNzYuMDcsNC4xMywxLjE4LDI4LjMyLDE1LjA5LDU0LjgzLDM4LjI1LDcxLjQzLDI3LjQ5LDE5LjcsNjIuNTYsMjkuNywxMDQuMjIsMjkuN2gwYzQwLjkzLDAsNzUuNTMtOS42NiwxMDIuODMtMjguNzEsMjcuODgtMTkuNDYsNDIuOS01Mi42MiwzOS4yLTg2LjU0bC0xMS4wNy0xMDEuNTRjLTMuMDUtMjcuOTQtNi42NC01NS44OS0xMC43LTgzLjgxLDEuMDMuMiwyLjA2LjQxLDMuMS42MiwzNy40Miw3LjU4LDgwLjM3LDIwLjI3LDEyMy43NSw0MS4zNSwyLjQ4LDEuMjEsNC45NywyLjQxLDcuNDUsMy42OCwxMy4yMiw2LjcyLDI1Ljg5LDE0LjcyLDM3Ljg2LDIzLjgxLS42NS4zOC0xNS40Niw5LjM4LTMwLjEzLDMyLjgzLTIuNjcsNC4yNy01LjM0LDguOTYtNy45MSwxNC4yMy0xLjg1LDMuNzksMi4yMiw3LjczLDUuOTUsNS43NiwxNi41My04LjczLDM3LjEtMTguNzQsNjAuMS0yOC4wNywzLjI0LTEuMzIsNi41NC0yLjYxLDkuODctMy44OSwyLjQtLjkzLDQuODMtMS44NCw3LjI4LTIuNzQsNS42NS0yLjA5LDExLjQxLTQuMTEsMTcuMjYtNi4wNCwzLS45OSw2LjAyLTEuOTcsOS4wNi0yLjkxLDQzLjY2LTEzLjUxLDgyLjktMTguOTEsMTE3LjAyLTE2LjE0LDUuMTkuNDIsOS41NywzLjQ0LDEyLjAyLDcuNzIsMS4xNCwxLjk5LDEuOSw0LjIyLDIuMDcsNi42MywxLjMxLDE5LjM2LDEuMzIsNDYuNjUtMi45Myw3Ny4yMy00LjgxLDM0LjYxLTE0LjE4LDY4LjQ1LTI3LjgyLDEwMC41OC03LjIsMTYuOTUtMTUuNjgsMzMuNDItMjUuMjcsNDkuMzktNC42Myw3LjcxLTkuNTIsMTUuMzEtMTQuNjgsMjIuNzctNC43OCw2LjktOS43NSwxMy43LTE0Ljk3LDIwLjM3bC0uNTItLjczYy4wMy40My4wNS44Ny4wOCwxLjMxLTMuNDEsNC4zMy02LjksOC42MS0xMC40OSwxMi44NC0yLjM1LDIuNzYtLjg0LDcuMDUsMi43NCw3LjY5LDIuNS40NSw1LjQ4Ljg0LDguNzcuOTcsMS41Miw0NS4xMi0uNjMsOTQuODQtOC44LDE0Ny43Mi0xMy43Ni00MS4zNy0zOS4yMi03MC4yMS03My4xMS04Mi4xMy0zOS4xNi0xMy43OC04My43My0yLjk1LTEyNS40OSwzMC40OS0yOC45NCwyMy4xOC01NC4yNCw1NS41My03My41Niw5My40Ny03LjAzLDEzLjgtMTMuMjksMjguMzItMTguNjEsNDMuNDMtMTIuODQsMzYuNDctMTkuNDQsNzMuNjMtMTkuNjIsMTA4LjY3LS4wNiwxMC43Ny41MSwyMS4zMiwxLjY4LDMxLjYtNS45LTMuNzgtMTIuNDUtNy40LTE5LjcyLTEwLjYzLTE4LTguMDItNDAuMjYtMTMuNzEtNjcuMjctMTMuNzJoLS4wNGMtMjYuNDEsMC00OC4zLDUuNDUtNjYuMDgsMTMuMTktNy44MywzLjQxLTE0LjgzLDcuMjYtMjEuMSwxMS4zLDEuMTgtMTAuMzIsMS43NS0yMC45MiwxLjctMzEuNzMtLjE4LTM1LjAzLTYuNzgtNzIuMjEtMTkuNjItMTA4LjY3LTE5Ljk2LTU2LjY2LTUyLjctMTA1LjI5LTkyLjE3LTEzNi45LTUuMjYtNC4yMS0xMC41Ni04LjA2LTE1Ljg5LTExLjU1LTM3LjAxLTI0LjI0LTc1LjM3LTMxLTEwOS42MS0xOC45Ni0zMy4yMiwxMS42OS01OC4zMiwzOS42Ni03Mi4yNiw3OS43NFpNMjY4Ljg4LDExODEuMzVjLTYuODgtMy45NS0xMy43Ny04LjYzLTIwLjY0LTE0LjEzLTEuNzctMS40Mi0zLjUyLTIuOTEtNS4yNi00LjQxLS4zMy0uMjktLjY3LS41NS0xLS44NC02LjA2LTUuMjktMTEuOTItMTEuMDgtMTcuNTctMTcuMjgtMjQuMDItMjYuNC00NC4wMi02MC42NS01Ny42My05OS4yOWgwYy04LjU0LTI0LjIzLTE0LjAxLTQ4LjctMTYuMzktNzIuMzgtMi42MS0yNS45NC0xLjQ5LTUwLjkyLDMuNTMtNzMuNTUsNi42NC0yOS45NCwxOS40Ny01Mi44NSwzNi45Ni02Ni43MSw2LjEzLTQuODYsMTIuODItOC42MiwyMC4wMi0xMS4xNiwyNy43OC05Ljc4LDYwLjg3LS45LDkzLjIyLDI1LDM0LjYzLDI3LjczLDYzLjU2LDcwLjk5LDgxLjQ2LDEyMS44MS4xNi40Ni4zLjkyLjQ2LDEuMzksMi45Myw4LjQyLDUuNDgsMTYuODcsNy42NywyNS4zLDMuMjIsMTIuNDEsNS42NCwyNC43Nyw3LjI0LDM2Ljk3LTYuOTEsNy4xNC0xNi41OCwxMS41OS0yNy4zLDExLjU5LTIwLjk5LDAtMzgtMTctMzgtMzcuOTgsMC0xNC45OCw4LjY5LTI3Ljg5LDIxLjI5LTM0LjA3LTYuNDQtMS44LTEzLjItMi44NC0yMC4yMi0yLjg0LTQxLjM4LDAtNzQuOTMsMzMuNTMtNzQuOTMsNzQuODksMCw3Ljc0LDEuMTcsMTUuMiwzLjM1LDIyLjIyLDkuNDcsMzAuNTEsMzcuOTMsNTIuNjcsNzEuNTcsNTIuNjcsMjguODIsMCw1My44MS0xNi4yOSw2Ni4zNC00MC4xNC0uNTcsMTIuNDYtMi4wOSwyNC41LTQuNjMsMzUuOTQtNi41MSwyOS4zNi0xOC45OSw1MS45NC0zNS45Niw2NS44Ny02LjQsNS4yNS0xMy40MSw5LjMxLTIxLjAyLDExLjk5LTIxLjg3LDcuNy00Ny4wNiwzLjc3LTcyLjU4LTEwLjg4Wk0zNDEuMTYsMTI0MC41NWMtNS4yNy0zLjY5LTEwLjM0LTcuMzgtMTUuMjMtMTEuMDQsOS4xMS0uNjYsMTguMDUtMi40NiwyNi43Mi01LjUyLDIwLjA2LTcuMDYsMzcuMTUtMjAuMDcsNTAuNjMtMzguMDcsMy45Ny01LjI5LDcuNi0xMS4wNCwxMC45Mi0xNy4xOGwuMDUuMDJzLjItLjQzLjUzLTEuMDljLjQyLS44Ljg2LTEuNTgsMS4yOC0yLjM5LDMuMDgtNS41MiwxMC4yMy0xNi44MSwyMi40OS0yNy45MiwyMi4zNS0yMC4yNiw1MC41OC0zMC41Myw4My45NC0zMC41MywxOS4xMiwwLDM2LjU1LDMuMzksNTIuMTcsMTAuMDksNy4wOCwzLjA0LDEzLjc4LDYuNzcsMjAuMSwxMS4xNyw0LjA1LDIuODIsNy45NSw1Ljg5LDExLjY3LDkuMjYsMTEuMTEsMTAuMDcsMTguMDIsMjAuMjksMjEuNTIsMjYuMjMsMTQuNjYsMjkuNzYsMzYuNjUsNTAuNzEsNjQuMjMsNjAuNDEsMi41Ni45LDUuMTUsMS42Nyw3Ljc1LDIuMzYsNi41OCwxLjc1LDEzLjMsMi43OCwyMC4xMSwzLjItMi40LDEuOC00Ljg1LDMuNi03LjM1LDUuNDItMi41NiwxLjg1LTUuMTYsMy43MS03LjgsNS41Ni0uMDQuMDMtLjA5LjA2LS4xMy4wOS00Ljk4LDMuNDgtOS44OSw2LjgtMTQuNzIsOS45NS0zLjYzLDIuMzctNy4yMSw0LjYzLTEwLjc2LDYuODItMS41OS45OC0zLjE4LDEuOTctNC43NSwyLjkyLS43OS40OC0xLjU4Ljk0LTIuMzcsMS40MS02NS45NSwzOS4yOS0xMTYuNjUsNDguMjktMTQ5LjE0LDQ4LjI5LTI3Ljg3LDAtNjkuMTMtNi42Mi0xMjEuOTItMzMuMjktMi4xMS0xLjA3LTQuMjQtMi4xNy02LjM5LTMuMy01LjAzLTIuNjUtMTAuMTYtNS40Ny0xNS4zOS04LjUtNC45Mi0yLjg1LTkuOTMtNS44Ni0xNS4wMy05LjA1LTcuNTMtNC43Mi0xNS4yMy05LjgxLTIzLjEzLTE1LjM0Wk0zOTMuODEsMTY0OS45djE1LjZoLTM4LjI2bC0xMS4zNy0zMi44NmMtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMTEsMGwtMTEuMzcsMzIuODZoLTM3LjM2bC4zLTYuNjYsMS43NC0zOC4zOGgxMDEuNDJ2MjkuNDRaTTUwNy4xNCwxNjAzLjloLS4wMWwtMy4yMiwyOS4xNWgtMjcuMzZsLTYuNzQtMTkuNDhjLS44NC0yLjQzLTQuMjctMi40My01LjExLDBsLTYuNzQsMTkuNDhoLTI5LjE5bC43NS0yOS4yaDc3LjYydi4wNVpNNjU1LjE3LDE2NjYuNzVoMHMtMS4zOSwxMS40NS0xLjM5LDExLjQ1bC0xLjk1LDE2LjFoLTQyLjc5bC0xMi4zNi0zNS43M2MtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMTEsMGwtMTIuMzYsMzUuNzNoLTQ4LjE1bDMuMDQtMjcuNTUsMS44Ni0xNi44NCwxLjM2LTEyLjMyaDEyMS4zOWwtMy41NCwyOS4xNlpNNjgxLjI5LDE0OTMuM2MtNS4zMywxNS40LTguOSwzMS4zNS0xMC44Niw0Ny41NGwtMy40OCwyOC43Mi0uMywyLjQ3LTIuMDQsMTYuODUtMS44MiwxNS4wM2gtMTIxLjc1bDEuODYtMTYuOSwxLjg2LTE2Ljg1LDMuNjEtMzIuNjhjMS42Ni0xNS4wOC0uNjgtMzAuMzgtNi43OC00NC4yNy0yLjExLTQuODItNC42Ni05LjQ0LTcuNi0xMy44MmwtOS0xMy40LTE0LjkzLTIyLjIxLTkuMzItMTMuODdjLTEuNDQtMi4xNC00LjA5LTIuMzQtNS45LTEuMTctMS4wNC42Ny0xLjgsMS43OS0xLjg5LDMuMjctLjM5LDYuNTUtLjE3LDE1LjQ2LDEuOCwyNi41OSwxLjk2LDExLjA2LDUuNjUsMjQuMjksMTIuMTksMzkuNTZsMy43OSw4LjYyYy40NSwxLjAzLjg3LDIuMDcsMS4yNSwzLjEyLDIuNzgsNy42MiwzLjc4LDE1LjgyLDIuODgsMjMuOWwtMi41NCwyMy4wMi0xLjQ4LDEzLjM2aC04MC40OGwuNzEtMjcuNTFjLjItOCwyLjMyLTE1LjksNi4wMi0yMywuMjQtLjQ2LjQyLS45NC42Ny0xLjM5bDIuOC00Ljk1YzcuNjUtMTEuMDUsMTIuMjUtMjEuNSwxNC45Ni0zMC42LDMuNDktMTEuNzEsMy44Ni0yMS4xOSwzLjYyLTI2LjgxLS4wOS0yLjExLTEuNjktMy42OS0zLjU4LTMuOTktLjc0LS4xMi0xLjUzLS4wNi0yLjI5LjI3LTIxLjgxLDkuMzMtMzUuMjUsMzIuNC0zNi42NSwzNC44OGwtOC4yNiwxNC43OWMtNi44MSwxMi4xOC0xMC42LDI2LTEwLjk2LDM5Ljk1bC0uNzMsMjguMzctLjQzLDE2LjYxaC0xMDIuMzRsMy4xMS02OC41NWMxLjE4LTI2LjEyLDYuMTktNTEuODcsMTQuODctNzYuNTNsMzIuMTctOTEuMzZjNi41Ni0xOC42MywxNS44OC0zNS44MSwyNy40LTUxLjE2LDE0LjE3LDcuOCwyOC4yMSwxNC42Nyw0Mi4wNSwyMC40NSw0LjM0LDEuODEsOC42NiwzLjUsMTIuOTYsNS4xMSwzMy42MSwxMi41OCw2Ni4wMywxOC45OCw5Ni41MywxOC45OSwzMC4yOCwwLDYyLjQ0LTYuMjksOTUuNzgtMTguNjksNC41NS0xLjY5LDkuMTItMy40OCwxMy43MS01LjQsMTQuMTYtNS45MiwyOC41NS0xMi45Niw0My4wNi0yMSw4Ljc0LTQuODQsMTcuNTItMTAuMDMsMjYuMzMtMTUuNjEsMy43NSwzLjg3LDcuMTksNy45MywxMC40NSwxMi4xLDMuNTQsNC41MSw2Ljg0LDkuMTcsOS44LDE0LjAzLDMuMSw1LjA4LDUuODMsMTAuMzgsOC4yOSwxNS44MywyLjU1LDUuNjUsNC44NSwxMS40NCw2LjcxLDE3LjQ4LDMuMjcsMTAuNjQsNi4zLDIxLjM0LDkuMTMsMzIuMDQsMS43MSw2LjQ4LDMuMzQsMTIuOTYsNC45LDE5LjQyLDEuNDUsNiwyLjg0LDExLjk5LDQuMTYsMTcuOTYuNjksMy4xMiwxLjM4LDYuMjQsMi4wNCw5LjM1LjU4LDIuNzQsMS4xNSw1LjQ4LDEuNyw4LjIxLDEwLjg1LDUzLjE3LDE2Ljk3LDEwMy40NywyMC40MSwxNDIuNThoLTc4Ljg3bDUuMjYtNDMuMzhjMy45NS0zMi41OS4yMi01MC4xNi0zLjUzLTU5LjEzLTIuNjMtNi4zLTUuMjgtOC4zNS01LjI4LTguMzVoLS4wM3MwLDAsMCwwYy02LjQyLDguMTctMTEuNzMsMjAuNDYtMTUuNzcsMzIuMTNaTTc4My40NiwxNjMzLjA2aC00MC43OGwtNi43NC0xOS40OGMtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMSwwbC02Ljc0LDE5LjQ4aC0zMC44NWwzLjMxLTI3LjMzaDg1LjU2Yy43NywxMS44MSwxLjE1LDE4Ljc2LDEuNDMsMjcuMzNoLS4wOFpNOTg0LjU2LDEyNzIuODNjLTEyLjkxLDIzLjI5LTI2LjI4LDQ3LjM3LTUzLjE1LDYxLjA2LTM0LjE0LDE3LjM5LTcxLjI5LDcuNzMtODUuNjcsMi43NmwtMjQuNDQtOC40MmMtNS44LTItMTEuMDUsNC4xNS04LjE0LDkuNTdsMTIuMjMsMjIuNzZjLjQzLjc5LDcuMDQsMTIuODgsMTkuNjMsMjQuMjgtMTQuMDEsNS44LTI4LjUzLDkuNDItNDMuNDIsMTAuODQtMy45OC4zNy05LjE4Ljg1LTE1LjA4LDEuMS0xLjgzLTcuOTQtMy43Ni0xNS45LTUuODItMjMuOS0zLjQ1LTEzLjQyLTcuMi0yNi44OC0xMS4zMi00MC4zLTMuMzYtMTAuOTQtNy42OS0yMS4yOS0xMi44NC0zMS4xMyw5LjM1LTYuODMsMTkuNzMtMTIuOTEsMzEuMy0xNy42OCw0NS4wMS0xOC41Nyw5Ny43MS0xNC41NCwxMDMuNTctMTQuMDIsOS4xOC44MiwxNi41NiwyLjAzLDIzLjcxLDMuMjIsMTUuMzksMi41NSwyOC42OCw0Ljc1LDQ3Ljc1LjYsMy41MS0uNzYsNi45Ni0xLjc0LDEwLjM5LTIuODQsNS4zMi0xLjcsMTAuNTctMy43NSwxNS42OS02LjI1LTEuNCwyLjgyLTIuODYsNS42LTQuMzksOC4zNlpNMzc1LjcyLDczNS4wNWMxLjQ5LDguODMsNC4wNiwxOS41Myw4LjQsMzEsLjY0LDEuNjksMS4zMiwzLjM5LDIuMDQsNS4xMSw1LjA2LDEyLjA5LDEyLjE1LDI0LjgyLDIyLjEsMzcuMDMsMi42NCwzLjI0LDUuNDQsNi40NCw4LjQ5LDkuNTgsOS40Nyw5LjA5LDIwLjM1LDE3LjY4LDMyLjgxLDI1LjIxLDMuNzksMi4zLDcuNjYsNC40NCwxMS41OSw2LjQ0LDI3LjU1LDE0LjA0LDU4LjU1LDIxLjA3LDkyLjc2LDIxLjA3LDIyLjE2LDAsNDUuNjYtMi45Niw3MC40NC04Ljg3LDMuNzYtLjksNy41NS0xLjg1LDExLjM3LTIuODhsOC4xNC0yLjIxLDguMTgtMi4yMmM2LjIxLTEuNjksNy45OC05LjY0LDMuMDctMTMuNzlsLS40Ni0uMzktMTIuNDYtMTAuNTRjLS4wNi0uMDUtMS44My0xLjU3LTQuNzgtNC4zNS0yLjIyLTIuMDktNS4wOC00Ljg4LTguNDgtOC40aC45NWMyMS44NSwwLDQ5LjE1LTUuMjQsNzkuMTItMjIuNzEsNS4xLTIuOTcsMTAuMjYtNi4yNSwxNS41LTkuOTcsMCwwLDAsMCwuMDIsMGgtLjAxczEyLjgyLTkuMSwxMi44Mi05LjFjNS43NC00LjA3LDMuNzYtMTMuMDMtMy4xNi0xNC4zNC00Ny4zMi05LTcwLjU2LTI4LjQtODEuNjgtNDIuODYtMS44MS0yLjM2LTQuODMtMi4yMi02LjY1LS42My0xLjA5Ljk0LTEuNzUsMi40LTEuNDUsNC4xNiwxLjA0LDYuMjksMi43OCwxMy4zNiw1LjU4LDIwLjMyLDQuMjEsMTAuNDUsMTAuODQsMjAuNjgsMjEuMzUsMjcuNzMsMS45LDEuMTYsMy44LDIuMjcsNS42NywzLjMtMS43Ny44LTMuNTQsMS41NC01LjI5LDIuMjUtNS4xLDIuMDYtMTAuMTIsMy43Mi0xNS4wNCw1LjA1LTUyLjI5LDE0LjEtOTMuOTktMTAuOTktMTE0LjM5LTI3LjQ0LTMuNy0yLjk4LTguOTQuOTItNy4wOSw1LjMsMi45Miw2LjkyLDYuODYsMTUuMjcsMTEuOSwyMy45NSwxMS4xNywxOS4yNywyNy43NCw0MC4yLDUwLjYyLDUwLjk0LTkuOTUsMi4xNS0xOS40OCwzLjUtMjguNjksNC4yNi05Ni4wOCw3Ljk2LTE1Mi42NS01NS4wNy0xNzguNDItOTQuODItMi40MS0zLjcxLTQuNTgtNy4yNC02LjQ1LTEwLjQ3LS4yLS4zNC0uNDYtLjU3LS43MS0uODQtMi44OS0zLjEtOC41MS0uNzUtNy43NCwzLjg4LjAxLjA4LjAzLjE2LjA0LjI0Wk04OTMuOTYsNjExLjY5YzIuODQsNC42OCw5LjUzLDUuNCwxMy4zOSwxLjQ2LDIuNC0yLjQ0LDQuNjktNC44Niw2LjkxLTcuMjYsNS4xNC01LjU2LDkuNzktMTAuOTksMTQuMDQtMTYuMyw1LTYuMjUsOS40Mi0xMi4zMiwxMy4zLTE4LjIsMzMuNjMtNTAuOTQsMjcuNTYtODcuNTEsMjIuODYtMTAxLjgtMS4yNy0zLjktNS4zOC02LjI4LTkuNTMtNS41LTE4LDMuMzctMzUuMjksOS4yNC01MC44NiwxNS45LTUuMzgsMi4zLTEwLjU1LDQuNjktMTUuNDcsNy4xMS01LjMyLDIuNjItMTAuMzQsNS4yNS0xNSw3Ljg0LTEzLjQ5LDcuNDgtMjQuMDQsMTQuNDYtMzAuMTksMTguNzZoMGMtMy40OSwyLjQ2LTQuNDksNy4wNi0yLjMxLDEwLjY3bDUyLjg1LDg3LjMzWk0yMDMuMjIsNTEzLjY5aDBjLTYuMjItNC4zNi0xNi45Mi0xMS40NC0zMC42Mi0xOS00LjY3LTIuNTgtOS42OS01LjItMTUtNy44MS00LjkzLTIuNDItMTAuMS00Ljc5LTE1LjQ5LTcuMDktMTUuNDUtNi41Ny0zMi41OC0xMi4zNy01MC40LTE1LjcxLTQuMTUtLjc4LTguMjUsMS42LTkuNTMsNS41LTQuNjcsMTQuMjMtMTAuNzIsNTAuNTUsMjIuNDMsMTAxLjE1LDMuODcsNS45MSw4LjI4LDEyLjAxLDEzLjI5LDE4LjMsNC4yMyw1LjMxLDguODcsMTAuNzUsMTQsMTYuMzEsMi4zNywyLjU4LDQuODEsNS4xNyw3LjM5LDcuOCwzLjg2LDMuOTQsMTAuNTQsMy4yMiwxMy4zOC0xLjQ2bDUyLjg1LTg3LjMzYzIuMTgtMy42LDEuMTgtOC4yMS0yLjMxLTEwLjY2Wk00NTAuNDEsMTI1Ny42MnYtLjAyYzkuMjEtMy44NSwyOC4xNi04Ljc1LDQ1LjQxLDUuOTMsMi40NCwyLjA4LDUuNDItMS4zMyw0LjMzLTQuOTUtMy4zNy0xMS4yLTExLjA3LTI2LjIyLTI4LjE1LTI2LjIxLTE1LjQsMC0yMi4yMiwxMS4zOC0yNS4xNSwxOS42NS0xLjEyLDMuMTYsMS4wOSw2LjYyLDMuNTcsNS41OVpNNTQ4LjgsMTI2My41M2MxNy4yNC0xNC42OCwzNi4xOS05Ljc4LDQ1LjQtNS45M3YuMDJjMi40OCwxLjAzLDQuNy0yLjQzLDMuNTctNS41OS0yLjkzLTguMjctOS43NS0xOS42NS0yNS4xNS0xOS42NS0xNy4wOCwwLTI0Ljc4LDE1LjAxLTI4LjE1LDI2LjIxLTEuMDksMy42MiwxLjg5LDcuMDMsNC4zMyw0Ljk1WiIgZmlsbD0iIzA2MjM0YyIvPjwvc3ZnPg==" +values: + files: + - zarf-values.yaml + schema: zarf-values.schema.json + components: # Prometheus - name: kube-prometheus-stack diff --git a/packages/portal/zarf-values.schema.json b/packages/portal/zarf-values.schema.json new file mode 100644 index 0000000000..adf9360806 --- /dev/null +++ b/packages/portal/zarf-values.schema.json @@ -0,0 +1,111 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "global": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + } + }, + "type": "object" + }, + "uds-portal": { + "properties": { + "uds-portal": { + "properties": { + "adminApps": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "classificationBanner": { + "properties": { + "addFooter": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "text": { + "type": "string" + } + }, + "type": "object" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "package": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "gateway": { + "type": "string" + }, + "host": { + "type": "string" + } + }, + "type": "object" + }, + "replicaCount": { + "type": "number" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sso": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" +} diff --git a/packages/portal/zarf-values.yaml b/packages/portal/zarf-values.yaml new file mode 100644 index 0000000000..7dddf6ab7c --- /dev/null +++ b/packages/portal/zarf-values.yaml @@ -0,0 +1,13 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the UDS Core Portal package. + +# Shared domains for the whole stack. Override via --values / --set-values to configure all charts. +global: + domain: "" + # Empty falls back to the ADMIN_DOMAIN variable, then admin.. + adminDomain: "" + +uds-portal: + uds-portal: {} diff --git a/packages/portal/zarf.yaml b/packages/portal/zarf.yaml index 9cdef157b5..6a9e0d4838 100644 --- a/packages/portal/zarf.yaml +++ b/packages/portal/zarf.yaml @@ -17,6 +17,10 @@ metadata: dev.uds.keywords: uds,portal dev.uds.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMb2dvcyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTQuNTRpbiIgaGVpZ2h0PSIyNGluIiB2aWV3Qm94PSIwIDAgMTA0Ni42NyAxNzI4Ij48cGF0aCBkPSJNOTczLjI2LDEyNzAuNzFjLTQzLjY2LDU2LjQtMTMyLjYxLDQ3LjI2LTE2OC41LDQwLjgxLTkuNDYtMS42OS0xOC4zMSw1LjU1LTE3LjQzLDE0LjM4LDIuMDMsMjAuNDQsMTUuNzIsNDAuNDUsMTUuNzIsNDAuNDUtOC4xLDMuMDYtMTUuNTUsNS4xMi0yMi4zNCw2LjUxLDIuMDUsOCwzLjk4LDE1Ljk3LDUuODIsMjMuOSw1LjktLjI1LDExLjEtLjcyLDE1LjA4LTEuMSwxNC44OC0xLjQxLDI5LjQxLTUuMDQsNDMuNDItMTAuODQtMTIuNTktMTEuNC0xOS4xOS0yMy40OC0xOS42My0yNC4yOGwtMTIuMjMtMjIuNzZjLTIuOTEtNS40MSwyLjM0LTExLjU3LDguMTQtOS41N2wyNC40NCw4LjQyYzE0LjM4LDQuOTcsNTEuNTMsMTQuNjIsODUuNjctMi43NiwyNi44Ny0xMy42OSw0MC4yNC0zNy43Nyw1My4xNS02MS4wNiwxLjUzLTIuNzYsMi45OS01LjU1LDQuMzktOC4zNi01LjEzLDIuNS0xMC4zNyw0LjU1LTE1LjY5LDYuMjVaTTQ1NS41NSwxNDgyLjdjLTIuNzIsOS4xLTcuMzEsMTkuNTYtMTQuOTYsMzAuNmwtMi44LDQuOTVjLS4yNS40NS0uNDMuOTQtLjY3LDEuMzksMjMuOTYsMjguNzIsNTQuMzQsMzYuMDIsNzUuMjMsMzcuMTVsMi41NC0yMy4wMmMuOS04LjA4LS4xLTE2LjI4LTIuODgtMjMuOS0yNy40Ni0xLjg4LTQ1LjUyLTE1LjA3LTU2LjQ1LTI3LjE4Wk02MTguODEsMTMyNS4wM2MtMzMuMzQsMTIuNC02NS41LDE4LjY5LTk1Ljc4LDE4LjY5LTMwLjUxLDAtNjIuOTMtNi40LTk2LjUzLTE4Ljk5LTQuMy0xLjYxLTguNjItMy4yOS0xMi45Ni01LjExLTEzLjgzLTUuNzgtMjcuODgtMTIuNjUtNDIuMDUtMjAuNDUtMTEuNTIsMTUuMzYtMjAuODQsMzIuNTMtMjcuNCw1MS4xNmwtMzIuMTcsOTEuMzZjLTguNjgsMjQuNjYtMTMuNjksNTAuNDEtMTQuODcsNzYuNTNsLTMuMTEsNjguNTVoMzMuMDdsMy43LTc3Ljg1YzEuMjUtMjYuMTYsNi43Mi01MS45NSwxNi4yLTc2LjM2bDI5LjgxLTc2LjcxYzMuMS04LDEyLjMzLTExLjcxLDIwLjExLTguMS4yNC4xMS40Ny4yMS43MS4zMi43Ny4zNSwxLjUuNzUsMi4yMiwxLjE3LDMuMjIsMS45LDYuNTgsMy41MywxMC4wMiw0LjkyLDAsMC0uMDMuMDUtLjAzLjA1LDAsMCw0MC45NiwyNC4xNywxMTEuMzgsMjIuMDEsNjIuMzEtMS45LDEzNy44OC02My40NSwxNTQuNDctNzcuNi0xNC41MSw4LjA0LTI4LjksMTUuMDgtNDMuMDYsMjEtNC41OSwxLjkyLTkuMTYsMy43MS0xMy43MSw1LjRaTTcwNS44OSwxNTI4LjY1bC01LjI2LDQzLjM4aDI0Ljg4Yy4zNi03MC4wMy0yMS45OS0xMDAuOTQtMjMuMTUtMTAyLjUxLDMuNzUsOC45Niw3LjQ4LDI2LjU0LDMuNTMsNTkuMTNaTTU1NS4zMiwxNDczLjQxYy00LjI3LTQuNzctOS4wNi05LjEzLTE0LjQtMTIuOTEtMTIuNzgtOS4wNi0yNS4xLTE0LjQ2LTMwLjg2LTE2LjczbDE0LjkzLDIyLjIxLDksMTMuNGMyLjk0LDQuMzksNS40OSw5LjAxLDcuNiwxMy44Miw2LjEsMTMuODksOC40NSwyOS4xOSw2Ljc4LDQ0LjI3bC0zLjYxLDMyLjY4LTEuODYsMTYuODUtMS44NiwxNi45aDMzLjI0bDMuMjctNjcuNTljMS4xMS0yMi45Mi02LjczLTQ1LjEzLTIxLjQ1LTYyLjA0LS4yNS0uMjktLjUyLS41OC0uNzgtLjg2Wk02NDYuMDgsOTEzLjc5Yy0xOC4xNywyMy4zOS0zMy4yNyw1MS43Ni00My40LDgzLjc2LTcuMzIsMjMuMTEtMTEuNDQsNDYuMTctMTIuNjQsNjguMzQtLjM4LDcuMDktLjQ0LDE0LjA4LS4yMywyMC45Nyw3LjI3LDMuMjQsMTMuODIsNi44NiwxOS43MiwxMC42My0xLjE3LTEwLjI4LTEuNzMtMjAuODMtMS42OC0zMS42LjE4LTM1LjAzLDYuNzgtNzIuMiwxOS42Mi0xMDguNjcsNS4zMi0xNS4xMSwxMS41OC0yOS42MywxOC42MS00My40M1pNNDAzLjM3LDExODUuOXMtLjA2LjAyLS4wOC4wMmMtMTMuNDgsMTgtMzAuNTgsMzEuMDEtNTAuNjMsMzguMDctOC42NywzLjA1LTE3LjYxLDQuODYtMjYuNzIsNS41Miw0Ljg5LDMuNjYsOS45Niw3LjM1LDE1LjIzLDExLjA0LDcuOSw1LjUzLDE1LjYxLDEwLjYyLDIzLjEzLDE1LjM0LDUuMSwzLjIsMTAuMTEsNi4yLDE1LjAzLDkuMDUsNS4yMywzLjAyLDEwLjM2LDUuODUsMTUuMzksOC41LDIuMTUsMS4xMyw0LjI4LDIuMjMsNi4zOSwzLjMtLjk2LTIuMjQtMS44Mi00LjQ0LTIuNjItNi42MS0yLjI4LTYuMTgtMy45NC0xMi4wOC01LjExLTE3LjY5LTEuNDYtNy4wMS0yLjE2LTEzLjU2LTIuMjgtMTkuNTktLjYtMjkuNjMsMTIuMjgtNDYuOTMsMTIuMjgtNDYuOTNoLjAxWk00MTcuMzgsOTU3LjIyYzEyLjg0LDM2LjQ3LDE5LjQ0LDczLjY0LDE5LjYyLDEwOC42Ny4wNSwxMC44MS0uNTEsMjEuNDEtMS43LDMxLjczLDYuMjctNC4wMywxMy4yNy03Ljg5LDIxLjEtMTEuMywxLjUyLTYuNjEsMi43MS0xMy40MiwzLjUtMjAuNDMsNC43MS00MS42Ny0zLjQ4LTg5Ljg0LTI1Ljk0LTEzNi4xNS0yOS40My02MC42Ni03Ni41NC0xMDQuMDQtMTI0LjY1LTEyMC45Nyw1LjMzLDMuNDksMTAuNjMsNy4zNCwxNS44OSwxMS41NSwzOS40NywzMS42MSw3Mi4yMSw4MC4yNCw5Mi4xNywxMzYuOVpNNzM0LjE4LDc4Ni4yNWMtMy4zNS0uNjQtNi41NS0xLjM0LTkuNjYtMi4wOCwwLDAsMCwwLDAsMC01LjI0LDMuNzEtMTAuNCw3LTE1LjUsOS45Ny0yOS45OCwxNy40Ny01Ny4yNywyMi43MS03OS4xMiwyMi43MWgtLjk1YzMuNCwzLjUyLDYuMjYsNi4zMSw4LjQ4LDguNCwyLjk1LDIuNzgsNC43Miw0LjMsNC43OCw0LjM1bDEyLjQ2LDEwLjU0YzIwLjc4LTMuNjksNDQuNTctMTIuNTIsNjkuODUtMzAuNDZ2LjAybDEyLjgyLTkuMTFjNS43NS00LjA3LDMuNzYtMTMuMDItMy4xNi0xNC4zNFpNMzg0LjEyLDc2Ni4wNWMtNC4zNC0xMS40Ny02LjkxLTIyLjE3LTguNC0zMSwwLS4wMi0uMDItLjA1LS4wMi0uMDUsMCwwLTQuMjcsNjEuNzIsNDEuMDQsMTA4LjMsOS40Nyw5LjA5LDIwLjM1LDE3LjY4LDMyLjgxLDI1LjIxLDMuNzksMi4zLDcuNjYsNC40NCwxMS41OSw2LjQ0LDI3LjU1LDE0LjA0LDU4LjU1LDIxLjA3LDkyLjc3LDIxLjA3LDI1LjUxLDAsNTIuODMtMy45Miw4MS44MS0xMS43NWwxNi4zMy00LjQzYzYuMjEtMS42OSw3Ljk4LTkuNjQsMy4wNi0xMy43OWwtMTEuMjQtOS41LTguMTQsMi4yMWMtMy44MiwxLjAzLTcuNjEsMS45OS0xMS4zNywyLjg4LTI0Ljc4LDUuOS00OC4yOSw4Ljg3LTcwLjQ0LDguODctMzQuMjEsMC02NS4yMS03LjAzLTkyLjc2LTIxLjA3LTMuOTMtMi03LjgtNC4xNC0xMS41OS02LjQ0LTEyLjQ2LTcuNTMtMjMuMzQtMTYuMTItMzIuODEtMjUuMjEtMy4wNS0zLjE0LTUuODYtNi4zNC04LjQ5LTkuNTgtOS45NS0xMi4yMS0xNy4wNC0yNC45NC0yMi4xLTM3LjAzLS43Mi0xLjcyLTEuNC0zLjQzLTIuMDQtNS4xMVpNMzc0LjY5LDU1Ni4wNGMtLjAzLS41MiwwLTEuMDUtLjAzLTEuNTgtLjA2LTEuMzctLjA3LTIuNzUtLjA3LTQuMTMsMC0xLjAyLDAtMi4wMy4wMy0zLjA1LjA3LTEuODguMi0zLjc3LjM4LTUuNjYuMDQtLjQzLjA0LS44NS4wOC0xLjI3bDExLjA3LTEwMS41NWMxLjMzLTEyLjI0LDIuOC0yNC40OCw0LjMzLTM2LjcyLjEyLS45OS4yMy0xLjk3LjM1LTIuOTYuODktNy4wNCwxLjktMTQuMDgsMi44NS0yMS4xMi41MS0zLjc3LDEtNy41NCwxLjUzLTExLjMxLjM4LTIuNjguNzItNS4zNywxLjEtOC4wNS4wNS0uMzYuMS0uNzMuMTUtMS4wOSwwLDAsMCwwLDAtLjAxLS4yNi4wNi0uNTMuMTMtLjc5LjE5LTQuNjksMS4wNC05LjQ1LDIuMTUtMTQuMjgsMy4zNi0uNTEuMTMtMS4wMy4yNi0xLjU0LjM5LTQuOSwxLjI0LTkuODcsMi41NS0xNC44OSwzLjk3LS4zOS4xMS0uNzguMjMtMS4xNy4zNC01LjIsMS40OC0xMC40NSwzLjA1LTE1Ljc2LDQuNzUtLjA4LjAzLS4xNy4wNi0uMjYuMDgtNS4zMSwxLjctMTAuNjcsMy41MS0xNi4wNiw1LjQzLS4yMy4wOC0uNDUuMTUtLjY3LjIzaDBjLjE0LDIuNTEuMzIsNS40MS41OCw4LjY3LDIuNDYsMzEuNjksMTEuMzIsOTcuNjcsNDMuMDcsMTcxLjA5WiIgZmlsbD0iIzFmZGZmZiIvPjxwYXRoIGQ9Ik00MjguNzcsMTYzMy4wNmgyOS4xOWw2Ljc0LTE5LjQ4Yy44NC0yLjQzLDQuMjctMi40Myw1LjExLDBsNi43NCwxOS40OGgyNy4zNmwzLjIyLTI5LjE1aC4wMXYtLjA1cy03Ny42MiwwLTc3LjYyLDBsLS43NSwyOS4yWk03ODIuMTEsMTYwNS43MmgtODUuNTZsLTMuMzEsMjcuMzNoMzAuODVsNi43NC0xOS40OGMuODQtMi40Myw0LjI3LTIuNDMsNS4xLDBsNi43NCwxOS40OGg0MC44N2MtLjI4LTguNTgtLjY2LTE1LjUyLTEuNDMtMjcuMzNaTTM2OC4xMSwxNjIwLjQ2aC03NS43MmwtMS43NCwzOC4zOC0uMyw2LjY2aDM3LjM2bDExLjM3LTMyLjg2Yy44NC0yLjQzLDQuMjctMi40Myw1LjExLDBsMTEuMzcsMzIuODZoMzguMjZ2LTQ1LjA0aC0yNS43Wk02NDYuOTUsMTYzNy41OWgtMTA5LjYzbC0xLjM2LDEyLjMyLTEuODYsMTYuODQtMy4wNCwyNy41NWg0OC4xNWwxMi4zNi0zNS43M2MuODQtMi40Myw0LjI3LTIuNDMsNS4xMSwwbDEyLjM2LDM1LjczaDQyLjc5bDEuOTUtMTYuMSwxLjM5LTExLjQ0aDBzMy41NC0yOS4xNywzLjU0LTI5LjE3aC0xMS43NlpNNTIyLjQzLDE3NS43OGwxMC42LTIuMjNjOC4xMi0xLjcyLDEzLjI1LTkuNzMsMTEuNDMtMTcuODMtMy44LTE2LjktNy44LTMzLjc1LTExLjk3LTUwLjU3bC01LjY1LTIyLjdjLTMuNTgtMTUuOTQtNy40NC0yOS0xMS4zNy0zOS43NS0uOTMtMi41My0xLjg2LTQuOTMtMi43OS03LjItMi43MywyLjA2LTYuOTgsNi4zNC0xMS45LDE1LjA1LTYuMjEsMTAuOTktMTMuNDksMjkuMDQtMjAuMTQsNTguNjRsLS4wOS4zNy01LjY1LDIyLjdjLS4zMSwxLjI0LS41OSwyLjQ4LS44OSwzLjcyLDEzLjE4LDE1LjQ4LDI5LjMzLDI4Ljc3LDQ4LjQxLDM5LjhaTTQ1MC41NCwzMTQuNTNjLjQzLjQuODIuODEsMS4yNiwxLjIxLDUuNDksNC45NCwxMS4zMiw5LjU1LDE3LjQ0LDEzLjg3LDcuOTYsNS42MywxNi40MiwxMC43NSwyNS40MSwxNS4zMiwyNS4yNSwxMi44MSw1NC41OSwyMS40Myw4Ny44NiwyNS44Ni0xLjA0LTguMDUtMi4xMy0xNi4wOS0zLjI2LTI0LjEyLS44LTUuNy0xLjY0LTExLjM4LTIuNDctMTcuMDctLjg0LTUuNy0xLjY3LTExLjQxLTIuNTUtMTcuMTEtMS44NC0xMS44OC0zLjc1LTIzLjc1LTUuNzctMzUuNi0xLjU4LTkuMjctNy41MS0xNy4xOC0xNS45LTIxLjQyLTMxLjAxLTE1LjYyLTQ4Ljg4LTM3LjUxLTQ4Ljg4LTM3LjUxaC4wM2MtMTUuNDItOC41My0yOS40My0xOC4yOC00MS45OS0yOS4yNC04LjQzLDM3LjktMTUuOTMsNzYuMDgtMjIuNDcsMTE0LjQyLDMuNTIsMy44Nyw3LjI3LDcuNjgsMTEuMzEsMTEuMzlaTTQ2OC43OCw2MTUuNjFjMS43LjA0LDMuMzguMDksNS4xMi4wOSwyOS45NywwLDUzLjM1LTUuNTksNzEuNDUtMTMuNTQsNC41My0xLjk5LDMuODgtOC42NC0uOTMtOS43NS00OS43Mi0xMS41Mi03OC42OS0zNC40NS05MC42LTQ1Ljg0LTE1LjMxLTcuNDMtMjkuNTYtMTUuOTUtNDIuNzItMjUuNDlsLTIuNSwyMi45Yy0yLjMzLDIxLjM2LDYuODQsNDIuMjUsMjMuOTUsNTQuNTEsMTAuNSw3LjUyLDIyLjYzLDEzLjIxLDM2LjIzLDE3LjExWk01OTkuMDcsNTM2LjdjLjctNS43Ny43Ni0xMS42Ny4xMi0xNy42bC02LjExLTU2LjAxYy0xLjM4LTEyLjY1LTEwLjcyLTIzLjAzLTIzLjItMjUuNi03MC4zMS0xNC40Ni0xMDEuNTItNTQuNDEtMTAxLjUyLTU0LjQxbC4wNy0uMDdjLTEzLjU4LTcuMzEtMjYuMjYtMTUuNjMtMzcuOTMtMjUuMDgtNC4xMiwyOC4xNC03Ljc3LDU2LjMzLTEwLjg0LDg0LjQ5bC0yLjYyLDI0LjA0YzIxLjY5LDIwLjQxLDQ4LjMyLDM2Ljc0LDc5LjU1LDQ4LjU1LDMwLjAyLDExLjM1LDY0LjM0LDE4LjU3LDEwMi40NywyMS42N1oiIGZpbGw9IiNlYjIxMjYiLz48cGF0aCBkPSJNOTE1LjExLDEyNzIuOTVjLTcuMTQtMS4xOS0xNC41My0yLjQtMjMuNzEtMy4yMi01Ljg3LS41Mi01OC41Ni00LjU2LTEwMy41NywxNC4wMi0xMS41Niw0Ljc3LTIxLjk1LDEwLjg1LTMxLjMsMTcuNjgsNS4xNSw5Ljg0LDkuNDgsMjAuMTksMTIuODQsMzEuMTMsNC4xMiwxMy40Miw3Ljg3LDI2Ljg4LDExLjMyLDQwLjMsNi43OS0xLjM4LDE0LjI0LTMuNDQsMjIuMzQtNi41MSwwLDAtMTMuNjktMjAuMDItMTUuNzItNDAuNDUtLjg4LTguODMsNy45Ny0xNi4wNywxNy40My0xNC4zOCwzNS45LDYuNDUsMTI0Ljg1LDE1LjYsMTY4LjUtNDAuODEtMy40MywxLjEtNi44OCwyLjA4LTEwLjM5LDIuODQtMTkuMDcsNC4xNC0zMi4zNiwxLjk1LTQ3Ljc1LS42Wk00MzcuMTEsMTUxOS42NWMtMy43LDcuMS01LjgyLDE1LTYuMDIsMjNsLS43MSwyNy41MWg4MC40OGwxLjQ4LTEzLjM2Yy0yMC44OS0xLjEzLTUxLjI3LTguNDMtNzUuMjMtMzcuMTVaTTc1Ny4zOSwxNDIxLjIzYy0uNjYtMy4xMS0xLjM0LTYuMjMtMi4wNC05LjM1LTEuMzItNS45Ny0yLjcyLTExLjk2LTQuMTYtMTcuOTYtMS41Ni02LjQ3LTMuMTktMTIuOTQtNC45LTE5LjQyLTIuODMtMTAuNy01Ljg2LTIxLjQxLTkuMTMtMzIuMDQtMS44Ni02LjA0LTQuMTYtMTEuODMtNi43MS0xNy40OC0yLjQ2LTUuNDUtNS4xOS0xMC43NS04LjI5LTE1LjgzLTIuOTYtNC44Ni02LjI2LTkuNTEtOS44LTE0LjAzLTMuMjctNC4xNy02LjctOC4yMy0xMC40NS0xMi4xLTguODEsNS41OC0xNy41OSwxMC43Ny0yNi4zMywxNS42MS0xNi41OCwxNC4xNS05Mi4xNSw3NS43LTE1NC40Nyw3Ny42LTcwLjQxLDIuMTYtMTExLjM4LTIyLjAxLTExMS4zOC0yMi4wMSwwLDAsLjAzLS4wNC4wMy0uMDUtMy40NC0xLjM5LTYuOC0zLjAyLTEwLjAyLTQuOTItLjcyLS40Mi0xLjQ1LS44Mi0yLjIyLTEuMTctLjI0LS4xMS0uNDctLjIxLS43MS0uMzItNy43OC0zLjYxLTE3LjAxLjEtMjAuMTEsOC4xbC0yOS44MSw3Ni43MWMtOS40OCwyNC40MS0xNC45Niw1MC4yLTE2LjIsNzYuMzZsLTMuNyw3Ny44NWg2OS4yN2wuNDMtMTYuNjEuNzMtMjguMzdjLjM2LTEzLjk1LDQuMTUtMjcuNzcsMTAuOTYtMzkuOTVsOC4yNi0xNC43OWMxLjQtMi40OCwxNC44NC0yNS41NSwzNi42NS0zNC44OC43Ni0uMzMsMS41NC0uMzksMi4yOS0uMjcsMS44OS4zLDMuNDksMS44OCwzLjU4LDMuOTkuMjUsNS42Mi0uMTMsMTUuMS0zLjYyLDI2LjgxLDEwLjkzLDEyLjExLDI4Ljk5LDI1LjMsNTYuNDUsMjcuMTgtLjM4LTEuMDUtLjgtMi4xLTEuMjUtMy4xMmwtMy43OS04LjYyYy02LjU0LTE1LjI3LTEwLjIzLTI4LjUtMTIuMTktMzkuNTYtMS45Ny0xMS4xMi0yLjE5LTIwLjA0LTEuOC0yNi41OS4wOS0xLjQ4Ljg1LTIuNiwxLjg5LTMuMjcsMS44MS0xLjE3LDQuNDUtLjk3LDUuOSwxLjE3bDkuMzIsMTMuODdjNS43NiwyLjI3LDE4LjA4LDcuNjcsMzAuODYsMTYuNzMsNS4zNCwzLjc4LDEwLjE0LDguMTQsMTQuNCwxMi45MS4yNi4yOS41Mi41Ny43OC44NiwxNC43MiwxNi45MSwyMi41NSwzOS4xMywyMS40NSw2Mi4wNGwtMy4yNyw2Ny41OWg4OC41MWwxLjgyLTE1LjAzLDIuMDQtMTYuODUuMy0yLjQ3LDMuNDgtMjguNzJjMS45Ni0xNi4xOCw1LjUzLTMyLjE0LDEwLjg2LTQ3LjU0LDQuMDQtMTEuNjcsOS4zNS0yMy45NiwxNS43Ny0zMi4xMywwLDAsMCwwLDAsMGguMDNzMi42NCwyLjA2LDUuMjgsOC4zNWMxLjE2LDEuNTYsMjMuNTEsMzIuNDgsMjMuMTUsMTAyLjUxaDUzLjk5Yy0zLjQ0LTM5LjEyLTkuNTYtODkuNDEtMjAuNDEtMTQyLjU4LS41Ni0yLjczLTEuMTItNS40Ny0xLjctOC4yMVpNMzk2LjQ2LDM1Ny41NmMtLjA1LjM2LS4xLjczLS4xNSwxLjA5LjA1LS4zNy4xMS0uNzMuMTctMS4xLDAsMC0uMDEsMC0uMDIsMFpNMzg2LjE3LDQzOC44YzEuMzMtMTIuMjQsMi43OS0yNC40OCw0LjMyLTM2LjcyLTEuNTMsMTIuMjQtMywyNC40OC00LjMzLDM2LjcybC0xMS4wNywxMDEuNTVjLS4wNS40Mi0uMDQuODUtLjA4LDEuMjcuMDQtLjQzLjA1LS44NS4xLTEuMjdsMTEuMDctMTAxLjU1Wk03MjQuNTEsNzg0LjE3czAsMCwwLDBoLjAxczAsMC0uMDIsMFpNMzkxLjA4LDEyMzIuODRjLjEyLDYuMDMuODIsMTIuNTgsMi4yOCwxOS41OSwxLjE3LDUuNjEsMi44MywxMS41MSw1LjExLDE3LjY5LjgsMi4xNywxLjY3LDQuMzcsMi42Miw2LjYxLDUyLjc5LDI2LjY3LDk0LjA1LDMzLjI5LDEyMS45MiwzMy4yOSwzMi40OSwwLDgzLjE5LTguOTksMTQ5LjE0LTQ4LjI5Ljc5LS40NywxLjU3LS45MywyLjM3LTEuNDEsMS41Ny0uOTUsMy4xNi0xLjkzLDQuNzUtMi45MiwzLjU1LTIuMTksNy4xMi00LjQ1LDEwLjc2LTYuODIsNC44My0zLjE2LDkuNzQtNi40NywxNC43Mi05Ljk1LjA0LS4wMy4wOS0uMDYuMTMtLjA5LDIuNjUtMS44Niw1LjI1LTMuNzEsNy44LTUuNTYsMi41LTEuODEsNC45NS0zLjYyLDcuMzUtNS40Mi02LjgxLS40Mi0xMy41Mi0xLjQ2LTIwLjExLTMuMi0yLjYtLjY5LTUuMTktMS40Ni03Ljc1LTIuMzYtMjcuNTgtOS43MS00OS41Ny0zMC42NS02NC4yMy02MC40MS0zLjQ5LTUuOTQtMTAuNC0xNi4xNS0yMS41Mi0yNi4yMy0zLjcyLTMuMzctNy42Mi02LjQ1LTExLjY3LTkuMjYtNi4zMS00LjQtMTMuMDEtOC4xMy0yMC4xLTExLjE3LTE1LjYxLTYuNy0zMy4wNC0xMC4wOS01Mi4xNy0xMC4wOS0zMy4zNSwwLTYxLjU5LDEwLjI3LTgzLjk0LDMwLjUzLTEyLjI3LDExLjEyLTE5LjQyLDIyLjQxLTIyLjQ5LDI3LjkyLS40MS44MS0uODUsMS41OS0xLjI4LDIuMzktLjMzLjY2LS41MiwxLjA3LS41MywxLjA5bC0uMDUtLjAyYy0zLjMyLDYuMTQtNi45NiwxMS44OS0xMC45MiwxNy4xOC4wMywwLC4wNi0uMDEuMDgtLjAyaC0uMDFzLTEyLjg4LDE3LjMxLTEyLjI4LDQ2Ljk0Wk01NDQuNDcsMTI1OC41OGMzLjM3LTExLjIsMTEuMDctMjYuMjIsMjguMTUtMjYuMjEsMTUuNCwwLDIyLjIyLDExLjM4LDI1LjE1LDE5LjY1LDEuMTIsMy4xNi0xLjA5LDYuNjItMy41Nyw1LjU5di0uMDJjLTkuMjEtMy44NS0yOC4xNi04Ljc1LTQ1LjQsNS45My0yLjQ0LDIuMDgtNS40My0xLjMzLTQuMzMtNC45NVpNNDQ2Ljg1LDEyNTIuMDNjMi45My04LjI3LDkuNzYtMTkuNjUsMjUuMTUtMTkuNjUsMTcuMDgsMCwyNC43OCwxNS4wMSwyOC4xNSwyNi4yMSwxLjA5LDMuNjItMS44OSw3LjAzLTQuMzMsNC45NS0xNy4yNC0xNC42OC0zNi4xOS05Ljc4LTQ1LjQtNS45M3YuMDJjLTIuNDgsMS4wMy00LjctMi40My0zLjU4LTUuNTlaTTY5OS42MSwxMTE4LjU2Yy0yMi43LDAtNDMuMDEtMTAuMTMtNTYuNzUtMjYuMDguODIsNy40OCwxLjk3LDE0LjgsMy41NCwyMS44NywyLjcyLDEyLjI4LDYuNSwyMy4zNiwxMS4yLDMzLjE0LDIuMjcsMy45MywzLjUzLDYuNjIsMy45MSw3LjQ1LDEwLjUyLDE4LjQxLDI0Ljc2LDMxLjI1LDQxLjg4LDM3LjI3LDIyLjc2LDguMDEsNDkuMSwzLjQ3LDc1LjY2LTEyLjY3LDUuODYtMy41NiwxMS43Mi03LjY2LDE3LjU2LTEyLjM0LDIuMTEtMS42OSw0LjE5LTMuNDQsNi4yNS01LjI0LjExLS4xLjIyLS4xOS4zNC0uMjksNi40Mi01LjYzLDEyLjYyLTExLjgsMTguNTctMTguNDUsMjMuNDMtMjYuMTksNDIuOTQtNTkuOSw1Ni4yOS05Ny44Mi44NC0yLjM5LDEuNjMtNC43OSwyLjQxLTcuMTksNi40NC0xOS42OCwxMC44OS0zOS40NCwxMy4yOC01OC43MywzLjUtMjguMjUsMi42MS01NS41MS0yLjgzLTgwLjAyLTguOTctNDAuNDQtMjkuMi02OC4wOS01Ni45OC03Ny44Ni03LjM3LTIuNTktMTUuMS0zLjg3LTIzLjA5LTMuODctMjIuMTcsMC00Ni4zNSw5Ljg1LTcwLjEyLDI4Ljg5LS41OC40Ni0xLjE0Ljk2LTEuNzEsMS40My0zMy44NiwyNy43Ny02Mi4xNCw3MC40LTc5Ljc0LDEyMC4zNy0xLjg1LDUuMjYtMy41MywxMC41My01LjEsMTUuOCwxMi42MS05LjY1LDI4LjMzLTE1LjQ0LDQ1LjQ0LTE1LjQ0LDcuMDEsMCwxMy43NywxLjAzLDIwLjIxLDIuODMtMTIuNiw2LjE4LTIxLjMsMTkuMS0yMS4zLDM0LjA4LDAsMjAuOTgsMTcuMDEsMzcuOTgsMzgsMzcuOTgsMTUuNDEsMCwyOC42NC05LjE4LDM0LjYxLTIyLjM2LDIuMjEsNy4wNiwzLjQsMTQuNTcsMy40LDIyLjM2cy0xLjE4LDE1LjItMy4zNiwyMi4yMmMtOS40NywzMC41MS0zNy45Myw1Mi42Ny03MS41Nyw1Mi42N1pNMzYyLjQ3LDExODAuMjRjMTYuOTctMTMuOTMsMjkuNDUtMzYuNTEsMzUuOTYtNjUuODcsMi41NC0xMS40NCw0LjA2LTIzLjQ5LDQuNjMtMzUuOTQtMTIuNTMsMjMuODUtMzcuNTIsNDAuMTQtNjYuMzQsNDAuMTQtMzMuNjQsMC02Mi4xLTIyLjE2LTcxLjU3LTUyLjY3LTIuMTgtNy4wMi0zLjM1LTE0LjQ4LTMuMzUtMjIuMjIsMC00MS4zNiwzMy41NS03NC44OSw3NC45My03NC44OSw3LjAyLDAsMTMuNzgsMS4wMywyMC4yMiwyLjg0LTEyLjYsNi4xOC0yMS4yOSwxOS4xLTIxLjI5LDM0LjA3LDAsMjAuOTgsMTcuMDEsMzcuOTgsMzgsMzcuOTgsMTAuNzIsMCwyMC4zOS00LjQ1LDI3LjMtMTEuNTktMS42MS0xMi4xOS00LjAyLTI0LjU2LTcuMjQtMzYuOTctMi4xOS04LjQzLTQuNzQtMTYuODgtNy42Ny0yNS4zLS4xNi0uNDYtLjMtLjkzLS40Ni0xLjM5LTE3LjktNTAuODItNDYuODMtOTQuMDgtODEuNDYtMTIxLjgxLTMyLjM0LTI1LjktNjUuNDQtMzQuNzktOTMuMjItMjUtNy4yMSwyLjU0LTEzLjksNi4zLTIwLjAyLDExLjE2LTE3LjQ4LDEzLjg1LTMwLjMyLDM2Ljc3LTM2Ljk2LDY2LjcxLTUuMDIsMjIuNjQtNi4xMyw0Ny42Mi0zLjUzLDczLjU1LDIuMzgsMjMuNjcsNy44NSw0OC4xNCwxNi4zOSw3Mi4zOWgwYzEzLjYxLDM4LjYzLDMzLjYxLDcyLjg4LDU3LjYzLDk5LjI4LDUuNjQsNi4yLDExLjUsMTEuOTksMTcuNTcsMTcuMjguMzMuMjkuNjcuNTUsMSwuODQsMS43NCwxLjUsMy40OSwyLjk5LDUuMjYsNC40MSw2Ljg3LDUuNSwxMy43NiwxMC4xOCwyMC42NCwxNC4xMywyNS41MiwxNC42NSw1MC43LDE4LjU4LDcyLjU4LDEwLjg4LDcuNi0yLjY3LDE0LjYyLTYuNzQsMjEuMDItMTEuOTlaTTEwMTIuMTQsNDMxLjgxYy0uMTctMi40MS0uOTMtNC42NC0yLjA3LTYuNjMtMi40NS00LjI4LTYuODMtNy4zLTEyLjAyLTcuNzItMzQuMTItMi43Ny03My4zNSwyLjYzLTExNy4wMiwxNi4xNC0zLjA0Ljk0LTYuMDYsMS45Mi05LjA2LDIuOTEtNS44NiwxLjkzLTExLjYxLDMuOTYtMTcuMjYsNi4wNC0yLjQ1LjktNC44NywxLjgyLTcuMjgsMi43NC0zLjMzLDEuMjgtNi42MywyLjU4LTkuODcsMy44OS0yMyw5LjMzLTQzLjU3LDE5LjM0LTYwLjEsMjguMDctMy43MywxLjk3LTcuOC0xLjk3LTUuOTUtNS43NiwyLjU3LTUuMjcsNS4yNC05Ljk2LDcuOTEtMTQuMjMsMTQuNjctMjMuNDUsMjkuNDgtMzIuNDYsMzAuMTMtMzIuODMtMTEuOTYtOS4wOS0yNC42NC0xNy4wOS0zNy44Ni0yMy44MS0yLjQ5LTEuMjYtNC45Ny0yLjQ3LTcuNDUtMy42OC00My4zOC0yMS4wOS04Ni4zMi0zMy43OC0xMjMuNzUtNDEuMzUtMS4wNC0uMjEtMi4wNy0uNDEtMy4xLS42Miw0LjA2LDI3LjkyLDcuNjYsNTUuODcsMTAuNyw4My44MWwxMS4wNywxMDEuNTRjMy43LDMzLjkyLTExLjMzLDY3LjA4LTM5LjIsODYuNTQtMjcuMywxOS4wNi02MS44OSwyOC43Mi0xMDIuODMsMjguNzJoMGMtNDEuNjYsMC03Ni43My0xMC4wMS0xMDQuMjItMjkuNzEtMjMuMTYtMTYuNi0zNy4wNy00My4xMS0zOC4yNS03MS40My4wMi41MiwwLDEuMDUuMDMsMS41OC0zMS43NS03My40Mi00MC42MS0xMzkuNC00My4wNy0xNzEuMDktLjI1LTMuMjYtLjQ0LTYuMTYtLjU4LTguNjYtMTguNTksNi42NS0zNy42MiwxNC42Ni01Ni42NywyNC4zNS0xMy4xNCw2LjY4LTI1Ljc1LDE0LjYyLTM3LjY1LDIzLjY0LjEuMDQuMjEuMDguMzEuMTMuMDUuMDMsMS43NCwxLjA0LDQuNDcsMy4xNyw1LjYsNC4zNywxNS42OCwxMy42NiwyNS43MiwyOS43LDIuNjcsNC4yNyw1LjM0LDguOTYsNy45MSwxNC4yMywxLjg1LDMuNzktMi4yMyw3LjczLTUuOTYsNS43Ni0xNS45NC04LjQyLTM1LjY0LTE4LjAyLTU3LjY1LTI3LjA2LS45NS0uMzktMS45LS43OS0yLjg3LTEuMTgtNS41OC0yLjI2LTExLjMxLTQuNDctMTcuMTYtNi42Mi01LjY2LTIuMDgtMTEuNDItNC4xMS0xNy4yOC02LjA0LTIuODUtLjk0LTUuNzMtMS44Ni04LjYyLTIuNzYtNDMuNjYtMTMuNTEtODIuOS0xOC45MS0xMTcuMDItMTYuMTQtNi4xMy40OS0xMS4xNCw0LjYtMTMuMTUsMTAuMTUtLjQ4LDEuMzMtLjg0LDIuNzItLjk0LDQuMTktMS4zMSwxOS4zNi0xLjMyLDQ2LjY1LDIuOTMsNzcuMjMsNC44MSwzNC42MSwxNC4xOCw2OC40NSwyNy44MywxMDAuNTgsNy4wOCwxNi42NywxNS40LDMyLjg3LDI0Ljc5LDQ4LjU5LDQuNjIsNy43NSw5LjUxLDE1LjM4LDE0LjY3LDIyLjg3LDQuODksNy4xLDEwLDE0LjA5LDE1LjM3LDIwLjk0LjAzLjA0LjA3LjA5LjEuMTMsMy41NSw0LjUyLDcuMTgsOS4wMSwxMC45MywxMy40MiwyLjM1LDIuNzYuODQsNy4wNS0yLjc0LDcuNjktMi42NC40Ny01Ljg0Ljg3LTkuMzUuOTgtMS41LDQ0LjQzLjU2LDkzLjMyLDguNDMsMTQ1LjMsMTMuOTQtNDAuMDcsMzkuMDQtNjguMDUsNzIuMjYtNzkuNzQsMzQuMjQtMTIuMDUsNzIuNTktNS4yOCwxMDkuNjEsMTguOTYsNDguMSwxNi45Myw5NS4yMSw2MC4zMSwxMjQuNjUsMTIwLjk3LDIyLjQ3LDQ2LjMxLDMwLjY1LDk0LjQ4LDI1Ljk0LDEzNi4xNS0uNzksNy4wMS0xLjk4LDEzLjgzLTMuNSwyMC40MywxNy43OS03Ljc0LDM5LjY3LTEzLjE4LDY2LjA4LTEzLjE5aC4wNGMyNywwLDQ5LjI3LDUuNyw2Ny4yNywxMy43Mi0uMjEtNi44OC0uMTUtMTMuODcuMjMtMjAuOTcsMS4yLTIyLjE3LDUuMzItNDUuMjMsMTIuNjQtNjguMzQsMTAuMTMtMzIsMjUuMjQtNjAuMzgsNDMuNC04My43NiwxOS4zMi0zNy45NCw0NC42Mi03MC4yOSw3My41Ni05My40Nyw0MS43Ni0zMy40NSw4Ni4zMy00NC4yOCwxMjUuNDktMzAuNDksMzMuODgsMTEuOTMsNTkuMzUsNDAuNzYsNzMuMTEsODIuMTMsOC4xNy01Mi44OCwxMC4zMi0xMDIuNjEsOC44LTE0Ny43Mi0zLjI5LS4xMy02LjI4LS41Mi04Ljc3LS45Ny0zLjU4LS42NS01LjA5LTQuOTMtMi43NC03LjY5LDMuNTktNC4yMyw3LjA5LTguNTEsMTAuNDktMTIuODQtLjAzLS40NC0uMDUtLjg4LS4wOC0xLjMxbC41Mi43M2M1LjIzLTYuNjcsMTAuMTktMTMuNDcsMTQuOTctMjAuMzcsNS4xNi03LjQ2LDEwLjA2LTE1LjA1LDE0LjY4LTIyLjc3LDkuNTgtMTUuOTcsMTguMDYtMzIuNDQsMjUuMjctNDkuMzksMTMuNjUtMzIuMTMsMjMuMDEtNjUuOTcsMjcuODItMTAwLjU4LDQuMjUtMzAuNTgsNC4yNC01Ny44NywyLjkzLTc3LjIzWk0yMDUuNTMsNTI0LjM1bC01Mi44NSw4Ny4zM2MtMi44NCw0LjY4LTkuNTIsNS40LTEzLjM4LDEuNDYtMi41OC0yLjYzLTUuMDItNS4yMi03LjM5LTcuOC01LjEyLTUuNTYtOS43Ny0xMS0xNC0xNi4zMS01LjAxLTYuMjktOS40Mi0xMi4zOS0xMy4yOS0xOC4zLTMzLjE1LTUwLjYtMjcuMTEtODYuOTItMjIuNDMtMTAxLjE1LDEuMjgtMy45LDUuMzgtNi4yOCw5LjUzLTUuNSwxNy44MywzLjMzLDM0Ljk1LDkuMTMsNTAuNCwxNS43MSw1LjM5LDIuMjksMTAuNTYsNC42NywxNS40OSw3LjA5LDUuMzEsMi42MSwxMC4zMyw1LjIzLDE1LDcuODEsMTMuNjksNy41NywyNC40LDE0LjY1LDMwLjYyLDE4Ljk5aDBjMy40OSwyLjQ2LDQuNDgsNy4wNiwyLjMxLDEwLjY3Wk03MzcuMzQsODAwLjU5bC0xMi44Miw5LjExdi0uMDJjLTI1LjI5LDE3Ljk0LTQ5LjA3LDI2Ljc3LTY5Ljg1LDMwLjQ2bC40Ni4zOWM0LjkxLDQuMTUsMy4xNSwxMi4xMS0zLjA3LDEzLjc5bC04LjE4LDIuMjIsMTEuMjQsOS41YzQuOTIsNC4xNiwzLjE1LDEyLjExLTMuMDYsMTMuNzlsLTE2LjMzLDQuNDNjLTI4Ljk4LDcuODMtNTYuMywxMS43NS04MS44MSwxMS43NS0zNC4yMSwwLTY1LjIyLTcuMDQtOTIuNzctMjEuMDctMy45My0yLTcuOC00LjE0LTExLjU5LTYuNDQtMTIuNDYtNy41My0yMy4zNC0xNi4xMi0zMi44MS0yNS4yMS00NS4zMi00Ni41Ny00MS4wNC0xMDguMy00MS4wNC0xMDguMywwLDAsLjAxLjA0LjAyLjA1LS4wMS0uMDgtLjAzLS4xNy0uMDQtLjI0LS43Ny00LjYyLDQuODUtNi45Nyw3Ljc0LTMuODguMjQuMjYuNTEuNDkuNzEuODQsMS44OCwzLjIzLDQuMDUsNi43Niw2LjQ1LDEwLjQ3LDI1Ljc3LDM5Ljc1LDgyLjM0LDEwMi43NywxNzguNDIsOTQuODIsOS4yMS0uNzYsMTguNzUtMi4xMSwyOC42OS00LjI2LTIyLjg4LTEwLjc0LTM5LjQ0LTMxLjY3LTUwLjYyLTUwLjk0LTUuMDMtOC42OC04Ljk3LTE3LjAzLTExLjktMjMuOTUtMS44NS00LjM4LDMuMzktOC4yOCw3LjA5LTUuMywyMC40LDE2LjQ2LDYyLjEsNDEuNTUsMTE0LjM5LDI3LjQ0LDQuOTMtMS4zMyw5Ljk0LTIuOTgsMTUuMDQtNS4wNSwxLjc1LS43MSwzLjUxLTEuNDUsNS4yOS0yLjI1LTEuODctMS4wMy0zLjc3LTIuMTMtNS42Ny0zLjMtMTAuNS03LjA1LTE3LjE0LTE3LjI4LTIxLjM1LTI3LjczLTIuOC02Ljk3LTQuNTQtMTQuMDMtNS41OC0yMC4zMi0uMjktMS43NS4zNy0zLjIxLDEuNDUtNC4xNiwxLjgyLTEuNTgsNC44NC0xLjcyLDYuNjUuNjMsMTEuMTIsMTQuNDcsMzQuMzcsMzMuODcsODEuNjgsNDIuODYsNi45MiwxLjMyLDguOSwxMC4yNywzLjE2LDE0LjM0bC0xMi44Miw5LjFjMy4xMS43NCw2LjMxLDEuNDQsOS42NiwyLjA4LDYuOTIsMS4zMiw4LjksMTAuMjcsMy4xNiwxNC4zNFpNOTQxLjU5LDU3MS4zOWMtMy44OCw1Ljg4LTguMywxMS45NS0xMy4zLDE4LjItNC4yNSw1LjMxLTguODksMTAuNzQtMTQuMDQsMTYuMy0yLjIyLDIuNC00LjUxLDQuODItNi45MSw3LjI2LTMuODYsMy45NC0xMC41NCwzLjIyLTEzLjM5LTEuNDZsLTUyLjg1LTg3LjMzYy0yLjE4LTMuNi0xLjE4LTguMjEsMi4zMS0xMC42NmgwYzYuMTUtNC4zMSwxNi43LTExLjI5LDMwLjE5LTE4Ljc3LDQuNjYtMi41OCw5LjY4LTUuMjIsMTUtNy44NCw0LjkyLTIuNDIsMTAuMDgtNC44MSwxNS40Ny03LjExLDE1LjU2LTYuNjUsMzIuODYtMTIuNTMsNTAuODYtMTUuOSw0LjE1LS43OCw4LjI2LDEuNiw5LjUzLDUuNSw0LjcsMTQuMjksMTAuNzcsNTAuODYtMjIuODYsMTAxLjhaTTUxNS40Nyw0Mi43MWMzLjkzLDEwLjc0LDcuNzksMjMuOCwxMS4zNywzOS43NWw1LjY1LDIyLjdjNC4xOCwxNi44Miw4LjE3LDMzLjY3LDExLjk3LDUwLjU3LDEuODIsOC4xLTMuMzEsMTYuMTEtMTEuNDMsMTcuODNsLTEwLjYsMi4yM2MxNS40OSw4Ljk2LDMyLjkxLDE2LjQ0LDUyLjIyLDIyLjQ0LTQuODEtMjIuMDktOS44OC00NC4xLTE1LjMyLTY1Ljk2bC01Ljc0LTIzLjA3Yy05LjAzLTQwLjE4LTE5LjIxLTU5LjA5LTI2LjMxLTY3LjkzLTQuOS02LjEtOC4zMi03LjQtOC44OC03LjU4aC0yLjU4LDBjLS4zLjEtMS40Mi41Mi0zLjE1LDEuODIuOTMsMi4yOCwxLjg2LDQuNjcsMi43OSw3LjJaTTU1Mi41NSwyNTUuNDdjOC4zOSw0LjI0LDE0LjMyLDEyLjE1LDE1LjksMjEuNDIsMi4wMiwxMS44NSwzLjkzLDIzLjcyLDUuNzcsMzUuNi44OCw1LjcsMS43MSwxMS40LDIuNTUsMTcuMTEuODQsNS42OSwxLjY4LDExLjM4LDIuNDcsMTcuMDcsMS4xMiw4LjAzLDIuMjIsMTYuMDcsMy4yNiwyNC4xMiw3LjU5LDEuMDEsMTUuNCwxLjc4LDIzLjM5LDIuMzUtMS4xMS03Ljk3LTIuMjktMTUuOTMtMy40OC0yMy44OS0uODYtNS43Ni0xLjcyLTExLjUxLTIuNjMtMTcuMjctLjkxLTUuNzctMS44Ni0xMS41My0yLjgyLTE3LjMtMy42NS0yMi4wNy03LjU3LTQ0LjEtMTEuODUtNjYuMDUtMzAuNDYtNy4zMS01Ny42NC0xNy41Mi04MS40My0zMC42OGgtLjAzczE3Ljg4LDIxLjg5LDQ4Ljg4LDM3LjUxWk01NjkuODgsNDM3LjVjMTIuNDgsMi41NiwyMS44MiwxMi45NSwyMy4yLDI1LjZsNi4xMSw1Ni4wMWMuNjUsNS45Mi41OSwxMS44Mi0uMTIsMTcuNiw4LjQ1LjY5LDE3LjExLDEuMTYsMjUuOTQsMS40NGwtMTAuNDQtOTUuN2MtLjgzLTcuNjItMS43OC0xNS4yNC0yLjY5LTIyLjg2LTU1LjcxLTIuODgtMTAzLjYzLTE1LjEzLTE0My40NS0zNi41NmwtLjA3LjA3czMxLjIxLDM5Ljk1LDEwMS41Miw1NC40MVpNNTQ1LjM0LDYwMi4xN2MtMTguMSw3Ljk1LTQxLjQ3LDEzLjU0LTcxLjQ1LDEzLjU0LTEuNzQsMC0zLjQyLS4wNS01LjEyLS4wOSwxNC40Niw0LjE1LDMwLjU4LDYuMjgsNDguMzQsNi4yOCwzNC40NywwLDYyLTcuNjIsODMuNTMtMjIuNjUsNi4wOC00LjI0LDExLjE4LTkuNTMsMTUuMTktMTUuNDktNTEuNTYtMi4zMS05Ny42OS0xMS4xNS0xMzcuNTktMjYuNTQtOC40My0zLjI1LTE2LjU2LTYuODEtMjQuNDQtMTAuNjMsMTEuOTEsMTEuMzksNDAuODksMzQuMzEsOTAuNiw0NS44NCw0LjgxLDEuMTEsNS40Niw3Ljc2LjkzLDkuNzVaIiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTEwMjUuMTYsMTE4Ny45MWwtMTQuNTEsMTYuODdjLTE2Ljc3LDE5LjUyLTM1LjI2LDMxLjU3LTU0Ljk3LDM1Ljg2LTEyLjc2LDIuNzctMjEuMTYsMS4zOC0zNS4wOC0uOTItNy40LTEuMjItMTUuNzktMi42LTI2LjIyLTMuNTMtNC43OS0uNDMtMzYuOTEtMi44OS03My45OCwzLjYxLTcuODcsMS4zOC0xNS45NiwzLjE3LTI0LjA3LDUuNDctNy4xNywyLjAzLTE0LjM0LDQuNDUtMjEuMzcsNy4zNS0xMy42Myw1LjYyLTI1Ljg4LDEyLjY2LTM2Ljg5LDIwLjU1LTIuNTItMy4xNi01LjE2LTYuMjUtNy45Mi05LjI3LDEyLjQxLTguOSwyMy43My0xNy42OSwzMy43Ni0yNS45MiwxNS4xOS0xMi40NiwyNy40My0yMy41NywzNS45Ni0zMS43LDUuOTctMy44MSwxMS45Mi04LjA2LDE3LjgtMTIuNzcsMzkuNDctMzEuNjEsNzIuMjEtODAuMjMsOTIuMTctMTM2LjksOC4xOC0yMy4yMiwxMy44LTQ2LjczLDE2Ljg4LTY5Ljc5LDMwLjE2LTEwMC41MiwzNy4yMS0xOTQuMiwzMy42LTI3My41Mi4wMi0uMDEuMDMtLjAyLjA1LS4wNCwyMS4yOC0yOC42NSwzOC44Ni01OS4yNiw1Mi40My05MS40LDE0LjgtMzUuMDUsMjQuODktNzEuOTYsMzAuMDEtMTA5LjcxLDQuMzktMzIuNDEsNC4zNS01OS43OCwzLjE4LTc5LjI0LTEuMTctMTkuMzEtMy40NS0zMC44NC0zLjY1LTMxLjc3aC0uMDJjLTEuMzQtNi41Ni02LjQzLTExLjcxLTEyLjk3LTEzLjExLTQ1LjA1LTkuNjgtOTguMy01LjE3LTE1OC4yOSwxMy4zOS04LjgsMi43Mi0xNy4zNSw1LjY4LTI1Ljc0LDguNzQtMTcuODktMTUuNi0zNy41Mi0yOC45Ni01OC4zNS0zOS41NS01My45LTI3LjM5LTEwNy42Mi00Mi4zMi0xNTIuNTUtNTAuNC0uOC0uMTQtMS42LS4yOC0yLjQtLjQyLTcuMDgtNDQuMDEtMTUuNDgtODcuODQtMjUuMDEtMTMxLjMyLTQuNzItMjEuNTQtOS42Ni00My4wMS0xNC45Ny02NC4zM2wtNS42LTIyLjUyYy04LjQ5LTM3LjY5LTE5LjctNjUuMjgtMzMuMzEtODIuMDNDNTM5LjM5LDIuNjcsNTI1Ljg0LjA2LDUxOSwwaC0zLjc0Yy02Ljg1LjA2LTIwLjM5LDIuNjgtMzQuMTMsMTkuNTktMTMuNjIsMTYuNzQtMjQuODIsNDQuMzQtMzMuMzEsODIuMDNsLTUuNjEsMjIuNTJjLTE2LjIxLDY1LjEzLTI5LjY4LDEzMS4zNi00MC4zMywxOTcuOTQtNDIuODUsOC40NC05Mi43NywyMy4xMi0xNDIuOCw0OC41NC0yMC43NywxMC41Ni00MC4zNCwyMy44Ni01OC4xOCwzOS40LTguMjYtMy0xNi42OC01LjkyLTI1LjMzLTguNi01OS45OC0xOC41NS0xMTMuMjQtMjMuMDctMTU4LjI4LTEzLjM5LTYuNTUsMS40LTExLjY0LDYuNTYtMTIuOTcsMTMuMTFoMGMtLjI1LDEuMjEtNC4wMywyMC4zLTQuMyw1MS4wOXY3LjA4Yy4xMywxNS4zMywxLjE2LDMzLjE1LDMuODMsNTIuODQsMi42NywxOS43NCw2Ljc0LDM5LjI1LDEyLjEsNTguMzksNC44OSwxNy40NSwxMC44NCwzNC42LDE3LjksNTEuMzIsMTMuNDYsMzEuODksMzAuODgsNjIuMjYsNTEuOTMsOTAuNzItLjQxLDguNzctLjY4LDE3LjcxLS44MSwyNi44Mi0uOTIsNjQuNTIsNS41MywxMzcuMzYsMjUuMzQsMjE0LjksMi4xNiw4LjQ1LDQuNDYsMTYuOTQsNi45NCwyNS40OS40NSw0LjA2Ljk2LDguMTQsMS41OCwxMi4yMywyLjI2LDE1LjA5LDUuNjQsMzAuMzQsMTAuMDgsNDUuNTUsMS44NSw2LjM1LDMuODYsMTIuNyw2LjA5LDE5LjAzLDE5Ljk2LDU2LjY3LDUyLjcsMTA1LjMsOTIuMTcsMTM2LjkxLDcuMDIsNS42MiwxNC4xMiwxMC41OCwyMS4yNiwxNC45MSwxNS4zLDE0LjQxLDQwLjY4LDM2Ljc2LDcyLjgzLDU5LjMyLDcuMDQsNC45NCwxNC4wNiw5LjYyLDIxLjA4LDE0LjEtNS45Miw4LjE3LTExLjMxLDE2Ljc2LTE2LjExLDI1LjczLTUuMzksMTAuMDctMTAuMSwyMC42LTEzLjk2LDMxLjU3bC0zMi4xNyw5MS4zNmMtOS43OCwyNy43Ny0xNS40MSw1Ni43Ny0xNi43NSw4Ni4xOWwtNi42NywxNDYuNzJjMCwuMTksMCwuMzcsMCwuNTZsLS45NywyMS40Yy0uMzUsNy41Myw1LjY4LDEzLjgyLDEzLjIyLDEzLjgyaDE0NS4zOGM3LjMxLDAsMTMuMjMtNS45MiwxMy4yMy0xMy4yMnYtMTUuOTJjLjE2LTEuMDkuMjctMi4xOS4zMy0zLjMxaDcyLjMzbC01LjE0LDQ2LjU3Yy0uODYsNy44Myw1LjI3LDE0LjY3LDEzLjE2LDE0LjY3aDEyLjFzLjA3LDAsLjEsMGMuMDcsMCwuMTMuMDEuMTkuMDFoMTM5LjU5cy4wOC0uMDEuMTEtLjAxYy4wMiwwLC4wNCwwLC4wNiwwaDkuNjMsMHMwLDAsMCwwYy4wMiwwLC4wNCwwLC4wNiwwLDYuNjYtLjAzLDEyLjI3LTUuMDIsMTMuMDgtMTEuNjNsMS4xNC05LjM5Yy4wMi0uMTIuMDYtLjI0LjA4LS4zNmw0LjgzLTM5Ljg1aDExMS42M3MuMDcsMCwuMTEsMGgzLjYyYzcuNDIsMCwxMy4zOC02LjA4LDEzLjIzLTEzLjVsLS4wOC0zLjdjLS4zNS0xNy4zNC0uNi0yNS4wNS0xLjQ2LTM4Ljk5LS40NS04LjA5LTEuMDUtMTcuMjgtMS44Mi0yNy4zNWwtLjc2LTExLjE4aC0uMTRjLTMuMjktMzguNjgtOS4yLTg4LjQ3LTE5Ljc5LTE0MS44OSw0LjMtLjI4LDguMDUtLjYzLDExLjA2LS45MiwyOS4zNC0yLjc4LDU3LjM5LTEyLjUzLDgzLjM4LTI4Ljk5bDE4LjI5LTExLjU5YzQuOC0zLjAzLDMuODgtMTAuMjctMS41Mi0xMi4wMiwxMy41Mi0xLjY3LDI3LjctNS41Myw0MS43OC0xMi43LDM2LjA2LTE4LjM2LDUzLjM5LTQ5LjYyLDY3LjMzLTc0Ljc0LDEyLjEtMjEuNzksMjAuODEtNDUuMzQsMjUuOTEtNzBsNC41Mi0yMS43OWMyLjMxLTExLjIyLTExLjgzLTE4LjE3LTE5LjMtOS40OFpNODkzLjc1LDk3OS40OWMtMi4zOSwxOS4zLTYuODUsMzkuMDUtMTMuMjgsNTguNzMtLjc4LDIuNC0xLjU3LDQuNzktMi40MSw3LjE5LTEzLjM1LDM3LjkyLTMyLjg2LDcxLjYzLTU2LjI5LDk3LjgyLTUuOTUsNi42NS0xMi4xNSwxMi44Mi0xOC41NywxOC40NS0uMTEuMS0uMjIuMTktLjM0LjI5LTIuMDYsMS44LTQuMTUsMy41NS02LjI1LDUuMjQtNS44NCw0LjY4LTExLjcsOC43OC0xNy41NiwxMi4zNC0yNi41NiwxNi4xNC01Mi45LDIwLjY4LTc1LjY2LDEyLjY3LTE3LjEyLTYuMDItMzEuMzYtMTguODYtNDEuODgtMzcuMjctLjM4LS44NC0xLjY0LTMuNTItMy45MS03LjQ1LTQuNy05Ljc4LTguNDctMjAuODYtMTEuMi0zMy4xNC0xLjU3LTcuMDctMi43Mi0xNC4zOS0zLjU0LTIxLjg3LDEzLjc0LDE1Ljk0LDM0LjA0LDI2LjA4LDU2Ljc1LDI2LjA4LDMzLjY0LDAsNjIuMS0yMi4xNiw3MS41Ny01Mi42NywyLjE4LTcuMDIsMy4zNi0xNC40OCwzLjM2LTIyLjIycy0xLjE5LTE1LjMtMy40LTIyLjM2Yy01Ljk3LDEzLjE3LTE5LjIsMjIuMzYtMzQuNjEsMjIuMzYtMjAuOTksMC0zOC0xNy0zOC0zNy45OCwwLTE0Ljk4LDguNy0yNy44OSwyMS4zLTM0LjA4LTYuNDQtMS44LTEzLjItMi44My0yMC4yMS0yLjgzLTE3LjExLDAtMzIuODMsNS44LTQ1LjQ0LDE1LjQ0LDEuNTctNS4yNywzLjI0LTEwLjU0LDUuMS0xNS44LDE3LjYtNDkuOTcsNDUuODgtOTIuNiw3OS43NC0xMjAuMzcuNTctLjQ3LDEuMTQtLjk3LDEuNzEtMS40MywyMy43Ny0xOS4wNCw0Ny45NS0yOC44OCw3MC4xMi0yOC44OSw4LDAsMTUuNzMsMS4yOCwyMy4wOSwzLjg3LDI3Ljc4LDkuNzcsNDguMDEsMzcuNDIsNTYuOTgsNzcuODYsNS40NCwyNC41Miw2LjMzLDUxLjc3LDIuODMsODAuMDJaTTQ3NC45MSwxMzIuMjZsNS42NS0yMi43LjA5LS4zN2M2LjY1LTI5LjU5LDEzLjkzLTQ3LjY1LDIwLjE0LTU4LjY0LDQuOTItOC43MSw5LjE3LTEyLjk5LDExLjktMTUuMDUsMS43My0xLjMsMi44NS0xLjcyLDMuMTUtMS44MWgwYy44NiwwLDEuNzMsMCwyLjU4LDAsLjU2LjE3LDMuOTgsMS40OCw4Ljg4LDcuNTgsNy4wOSw4Ljg0LDE3LjI4LDI3Ljc1LDI2LjMxLDY3LjkzbDUuNzQsMjMuMDdjNS40NCwyMS44NywxMC41LDQzLjg4LDE1LjMyLDY1Ljk2LTE5LjMxLTYtMzYuNzItMTMuNDgtNTIuMjItMjIuNDQtMTkuMDktMTEuMDQtMzUuMjMtMjQuMzItNDguNDEtMzkuOC4zLTEuMjQuNTgtMi40OC44OS0zLjcyWk00NjEuNywxODguNzJjMTIuNTYsMTAuOTcsMjYuNTcsMjAuNzEsNDEuOTksMjkuMjQsMjMuNzgsMTMuMTUsNTAuOTcsMjMuMzcsODEuNDMsMzAuNjgsNC4yOCwyMS45NSw4LjE5LDQzLjk4LDExLjg1LDY2LjA1Ljk1LDUuNzcsMS45MSwxMS41MywyLjgyLDE3LjMuOTEsNS43NSwxLjc2LDExLjUxLDIuNjMsMTcuMjcsMS4yLDcuOTYsMi4zNywxNS45MiwzLjQ4LDIzLjg5LTcuOTktLjU3LTE1LjgtMS4zNC0yMy4zOS0yLjM1LTMzLjI3LTQuNDMtNjIuNi0xMy4wNS04Ny44Ni0yNS44Ni05LTQuNTctMTcuNDYtOS42OS0yNS40MS0xNS4zMi02LjExLTQuMzItMTEuOTQtOC45My0xNy40NC0xMy44Ny0uNDQtLjQtLjgzLS44MS0xLjI2LTEuMjEtNC4wNC0zLjcxLTcuOC03LjUyLTExLjMxLTExLjM5LDYuNTQtMzguMzQsMTQuMDQtNzYuNTMsMjIuNDctMTE0LjQyWk00MTkuNjYsNDQyLjQ0YzMuMDctMjguMTcsNi43Mi01Ni4zNSwxMC44NC04NC40OSwxMS42Nyw5LjQ1LDI0LjM1LDE3Ljc3LDM3LjkzLDI1LjA4LDM5LjgyLDIxLjQyLDg3LjczLDMzLjY4LDE0My40NSwzNi41Ni45MSw3LjYyLDEuODYsMTUuMjQsMi42OSwyMi44NmwxMC40NCw5NS43Yy04LjgzLS4yOC0xNy40OC0uNzUtMjUuOTQtMS40NC0zOC4xNC0zLjExLTcyLjQ2LTEwLjMyLTEwMi40Ny0yMS42Ny0zMS4yMy0xMS44MS01Ny44Ni0yOC4xNS03OS41NS00OC41NWwyLjYyLTI0LjA0Wk00MDguNTksNTQzLjk5bDIuNS0yMi45YzEzLjE2LDkuNTQsMjcuNDEsMTguMDYsNDIuNzIsMjUuNDksNy44OCwzLjgyLDE2LjAxLDcuMzgsMjQuNDQsMTAuNjMsMzkuODksMTUuMzksODYuMDMsMjQuMjMsMTM3LjU5LDI2LjU0LTQuMDEsNS45Ni05LjExLDExLjI1LTE1LjE5LDE1LjQ5LTIxLjUzLDE1LjAzLTQ5LjA2LDIyLjY1LTgzLjUzLDIyLjY1LTE3Ljc2LDAtMzMuODgtMi4xMy00OC4zNC02LjI4LTEzLjYtMy45LTI1LjczLTkuNTktMzYuMjMtMTcuMTEtMTcuMTEtMTIuMjYtMjYuMjgtMzMuMTUtMjMuOTUtNTQuNTFaTTEyNy40NSw4NjkuNTVjLTcuODctNTEuOTgtOS45Mi0xMDAuODctOC40My0xNDUuMywzLjUyLS4xMSw2LjcxLS41MSw5LjM1LS45OCwzLjU4LS42NSw1LjA5LTQuOTMsMi43NC03LjY5LTMuNzUtNC40MS03LjM4LTguODktMTAuOTMtMTMuNDItLjAzLS4wNC0uMDctLjA5LS4xLS4xMy01LjM3LTYuODUtMTAuNDgtMTMuODQtMTUuMzctMjAuOTQtNS4xNi03LjQ5LTEwLjA1LTE1LjEyLTE0LjY3LTIyLjg3LTkuMzgtMTUuNzItMTcuNzEtMzEuOTItMjQuNzktNDguNTktMTMuNjUtMzIuMTMtMjMuMDItNjUuOTctMjcuODMtMTAwLjU4LTQuMjUtMzAuNTgtNC4yNC01Ny44Ny0yLjkzLTc3LjIzLjEtMS40Ny40Ni0yLjg2Ljk0LTQuMTksMi4wMS01LjU1LDcuMDItOS42NiwxMy4xNS0xMC4xNSwzNC4xMi0yLjc3LDczLjM2LDIuNjMsMTE3LjAyLDE2LjE0LDIuODkuODksNS43NywxLjgyLDguNjIsMi43Niw1Ljg2LDEuOTMsMTEuNjIsMy45NSwxNy4yOCw2LjA0LDUuODQsMi4xNSwxMS41OCw0LjM2LDE3LjE2LDYuNjIuOTYuMzksMS45MS43OCwyLjg3LDEuMTgsMjIsOS4wNCw0MS43MSwxOC42NCw1Ny42NSwyNy4wNiwzLjczLDEuOTcsNy44LTEuOTcsNS45Ni01Ljc2LTIuNTctNS4yNy01LjI0LTkuOTYtNy45MS0xNC4yMy0xMC4wNC0xNi4wNC0yMC4xMi0yNS4zMy0yNS43Mi0yOS43LTIuNzMtMi4xMy00LjQyLTMuMTUtNC40Ny0zLjE3LS4xLS4wNC0uMjEtLjA5LS4zMS0uMTMsMTEuOS05LjAyLDI0LjUtMTYuOTYsMzcuNjUtMjMuNjQsMTkuMDUtOS42OCwzOC4wOS0xNy43LDU2LjY3LTI0LjM1aDBjLjIzLS4wOS40NS0uMTYuNjctLjI0LDUuNC0xLjkyLDEwLjc2LTMuNzQsMTYuMDYtNS40My4wOS0uMDMuMTctLjA2LjI2LS4wOCw1LjMxLTEuNjksMTAuNTYtMy4yNywxNS43Ni00Ljc1LjM5LS4xMS43OC0uMjMsMS4xNy0uMzQsNS4wMy0xLjQyLDkuOTktMi43NCwxNC44OS0zLjk3LjUxLS4xMywxLjAzLS4yNiwxLjU0LS4zOSw0LjgzLTEuMiw5LjU5LTIuMzIsMTQuMjgtMy4zNi4yNi0uMDYuNTMtLjEzLjc5LS4xOSwwLDAsMCwwLDAsLjAxLDAsMCwuMDEsMCwuMDIsMC0uMDUuMzctLjEyLjczLS4xNywxLjEtLjM5LDIuNjgtLjczLDUuMzctMS4xLDguMDUtLjUzLDMuNzctMS4wMSw3LjU0LTEuNTMsMTEuMzEtLjk1LDcuMDQtMS45NiwxNC4wNy0yLjg1LDIxLjEyLS4xMi45OS0uMjMsMS45Ny0uMzUsMi45Ni0xLjUzLDEyLjI0LTIuOTksMjQuNDgtNC4zMiwzNi43MmwtMTEuMDcsMTAxLjU1Yy0uMDUuNDItLjA2Ljg1LS4xLDEuMjctLjE4LDEuODktLjMyLDMuNzgtLjM4LDUuNjYtLjA0LDEuMDItLjAzLDIuMDMtLjAzLDMuMDUsMCwxLjM4LjAxLDIuNzYuMDcsNC4xMywxLjE4LDI4LjMyLDE1LjA5LDU0LjgzLDM4LjI1LDcxLjQzLDI3LjQ5LDE5LjcsNjIuNTYsMjkuNywxMDQuMjIsMjkuN2gwYzQwLjkzLDAsNzUuNTMtOS42NiwxMDIuODMtMjguNzEsMjcuODgtMTkuNDYsNDIuOS01Mi42MiwzOS4yLTg2LjU0bC0xMS4wNy0xMDEuNTRjLTMuMDUtMjcuOTQtNi42NC01NS44OS0xMC43LTgzLjgxLDEuMDMuMiwyLjA2LjQxLDMuMS42MiwzNy40Miw3LjU4LDgwLjM3LDIwLjI3LDEyMy43NSw0MS4zNSwyLjQ4LDEuMjEsNC45NywyLjQxLDcuNDUsMy42OCwxMy4yMiw2LjcyLDI1Ljg5LDE0LjcyLDM3Ljg2LDIzLjgxLS42NS4zOC0xNS40Niw5LjM4LTMwLjEzLDMyLjgzLTIuNjcsNC4yNy01LjM0LDguOTYtNy45MSwxNC4yMy0xLjg1LDMuNzksMi4yMiw3LjczLDUuOTUsNS43NiwxNi41My04LjczLDM3LjEtMTguNzQsNjAuMS0yOC4wNywzLjI0LTEuMzIsNi41NC0yLjYxLDkuODctMy44OSwyLjQtLjkzLDQuODMtMS44NCw3LjI4LTIuNzQsNS42NS0yLjA5LDExLjQxLTQuMTEsMTcuMjYtNi4wNCwzLS45OSw2LjAyLTEuOTcsOS4wNi0yLjkxLDQzLjY2LTEzLjUxLDgyLjktMTguOTEsMTE3LjAyLTE2LjE0LDUuMTkuNDIsOS41NywzLjQ0LDEyLjAyLDcuNzIsMS4xNCwxLjk5LDEuOSw0LjIyLDIuMDcsNi42MywxLjMxLDE5LjM2LDEuMzIsNDYuNjUtMi45Myw3Ny4yMy00LjgxLDM0LjYxLTE0LjE4LDY4LjQ1LTI3LjgyLDEwMC41OC03LjIsMTYuOTUtMTUuNjgsMzMuNDItMjUuMjcsNDkuMzktNC42Myw3LjcxLTkuNTIsMTUuMzEtMTQuNjgsMjIuNzctNC43OCw2LjktOS43NSwxMy43LTE0Ljk3LDIwLjM3bC0uNTItLjczYy4wMy40My4wNS44Ny4wOCwxLjMxLTMuNDEsNC4zMy02LjksOC42MS0xMC40OSwxMi44NC0yLjM1LDIuNzYtLjg0LDcuMDUsMi43NCw3LjY5LDIuNS40NSw1LjQ4Ljg0LDguNzcuOTcsMS41Miw0NS4xMi0uNjMsOTQuODQtOC44LDE0Ny43Mi0xMy43Ni00MS4zNy0zOS4yMi03MC4yMS03My4xMS04Mi4xMy0zOS4xNi0xMy43OC04My43My0yLjk1LTEyNS40OSwzMC40OS0yOC45NCwyMy4xOC01NC4yNCw1NS41My03My41Niw5My40Ny03LjAzLDEzLjgtMTMuMjksMjguMzItMTguNjEsNDMuNDMtMTIuODQsMzYuNDctMTkuNDQsNzMuNjMtMTkuNjIsMTA4LjY3LS4wNiwxMC43Ny41MSwyMS4zMiwxLjY4LDMxLjYtNS45LTMuNzgtMTIuNDUtNy40LTE5LjcyLTEwLjYzLTE4LTguMDItNDAuMjYtMTMuNzEtNjcuMjctMTMuNzJoLS4wNGMtMjYuNDEsMC00OC4zLDUuNDUtNjYuMDgsMTMuMTktNy44MywzLjQxLTE0LjgzLDcuMjYtMjEuMSwxMS4zLDEuMTgtMTAuMzIsMS43NS0yMC45MiwxLjctMzEuNzMtLjE4LTM1LjAzLTYuNzgtNzIuMjEtMTkuNjItMTA4LjY3LTE5Ljk2LTU2LjY2LTUyLjctMTA1LjI5LTkyLjE3LTEzNi45LTUuMjYtNC4yMS0xMC41Ni04LjA2LTE1Ljg5LTExLjU1LTM3LjAxLTI0LjI0LTc1LjM3LTMxLTEwOS42MS0xOC45Ni0zMy4yMiwxMS42OS01OC4zMiwzOS42Ni03Mi4yNiw3OS43NFpNMjY4Ljg4LDExODEuMzVjLTYuODgtMy45NS0xMy43Ny04LjYzLTIwLjY0LTE0LjEzLTEuNzctMS40Mi0zLjUyLTIuOTEtNS4yNi00LjQxLS4zMy0uMjktLjY3LS41NS0xLS44NC02LjA2LTUuMjktMTEuOTItMTEuMDgtMTcuNTctMTcuMjgtMjQuMDItMjYuNC00NC4wMi02MC42NS01Ny42My05OS4yOWgwYy04LjU0LTI0LjIzLTE0LjAxLTQ4LjctMTYuMzktNzIuMzgtMi42MS0yNS45NC0xLjQ5LTUwLjkyLDMuNTMtNzMuNTUsNi42NC0yOS45NCwxOS40Ny01Mi44NSwzNi45Ni02Ni43MSw2LjEzLTQuODYsMTIuODItOC42MiwyMC4wMi0xMS4xNiwyNy43OC05Ljc4LDYwLjg3LS45LDkzLjIyLDI1LDM0LjYzLDI3LjczLDYzLjU2LDcwLjk5LDgxLjQ2LDEyMS44MS4xNi40Ni4zLjkyLjQ2LDEuMzksMi45Myw4LjQyLDUuNDgsMTYuODcsNy42NywyNS4zLDMuMjIsMTIuNDEsNS42NCwyNC43Nyw3LjI0LDM2Ljk3LTYuOTEsNy4xNC0xNi41OCwxMS41OS0yNy4zLDExLjU5LTIwLjk5LDAtMzgtMTctMzgtMzcuOTgsMC0xNC45OCw4LjY5LTI3Ljg5LDIxLjI5LTM0LjA3LTYuNDQtMS44LTEzLjItMi44NC0yMC4yMi0yLjg0LTQxLjM4LDAtNzQuOTMsMzMuNTMtNzQuOTMsNzQuODksMCw3Ljc0LDEuMTcsMTUuMiwzLjM1LDIyLjIyLDkuNDcsMzAuNTEsMzcuOTMsNTIuNjcsNzEuNTcsNTIuNjcsMjguODIsMCw1My44MS0xNi4yOSw2Ni4zNC00MC4xNC0uNTcsMTIuNDYtMi4wOSwyNC41LTQuNjMsMzUuOTQtNi41MSwyOS4zNi0xOC45OSw1MS45NC0zNS45Niw2NS44Ny02LjQsNS4yNS0xMy40MSw5LjMxLTIxLjAyLDExLjk5LTIxLjg3LDcuNy00Ny4wNiwzLjc3LTcyLjU4LTEwLjg4Wk0zNDEuMTYsMTI0MC41NWMtNS4yNy0zLjY5LTEwLjM0LTcuMzgtMTUuMjMtMTEuMDQsOS4xMS0uNjYsMTguMDUtMi40NiwyNi43Mi01LjUyLDIwLjA2LTcuMDYsMzcuMTUtMjAuMDcsNTAuNjMtMzguMDcsMy45Ny01LjI5LDcuNi0xMS4wNCwxMC45Mi0xNy4xOGwuMDUuMDJzLjItLjQzLjUzLTEuMDljLjQyLS44Ljg2LTEuNTgsMS4yOC0yLjM5LDMuMDgtNS41MiwxMC4yMy0xNi44MSwyMi40OS0yNy45MiwyMi4zNS0yMC4yNiw1MC41OC0zMC41Myw4My45NC0zMC41MywxOS4xMiwwLDM2LjU1LDMuMzksNTIuMTcsMTAuMDksNy4wOCwzLjA0LDEzLjc4LDYuNzcsMjAuMSwxMS4xNyw0LjA1LDIuODIsNy45NSw1Ljg5LDExLjY3LDkuMjYsMTEuMTEsMTAuMDcsMTguMDIsMjAuMjksMjEuNTIsMjYuMjMsMTQuNjYsMjkuNzYsMzYuNjUsNTAuNzEsNjQuMjMsNjAuNDEsMi41Ni45LDUuMTUsMS42Nyw3Ljc1LDIuMzYsNi41OCwxLjc1LDEzLjMsMi43OCwyMC4xMSwzLjItMi40LDEuOC00Ljg1LDMuNi03LjM1LDUuNDItMi41NiwxLjg1LTUuMTYsMy43MS03LjgsNS41Ni0uMDQuMDMtLjA5LjA2LS4xMy4wOS00Ljk4LDMuNDgtOS44OSw2LjgtMTQuNzIsOS45NS0zLjYzLDIuMzctNy4yMSw0LjYzLTEwLjc2LDYuODItMS41OS45OC0zLjE4LDEuOTctNC43NSwyLjkyLS43OS40OC0xLjU4Ljk0LTIuMzcsMS40MS02NS45NSwzOS4yOS0xMTYuNjUsNDguMjktMTQ5LjE0LDQ4LjI5LTI3Ljg3LDAtNjkuMTMtNi42Mi0xMjEuOTItMzMuMjktMi4xMS0xLjA3LTQuMjQtMi4xNy02LjM5LTMuMy01LjAzLTIuNjUtMTAuMTYtNS40Ny0xNS4zOS04LjUtNC45Mi0yLjg1LTkuOTMtNS44Ni0xNS4wMy05LjA1LTcuNTMtNC43Mi0xNS4yMy05LjgxLTIzLjEzLTE1LjM0Wk0zOTMuODEsMTY0OS45djE1LjZoLTM4LjI2bC0xMS4zNy0zMi44NmMtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMTEsMGwtMTEuMzcsMzIuODZoLTM3LjM2bC4zLTYuNjYsMS43NC0zOC4zOGgxMDEuNDJ2MjkuNDRaTTUwNy4xNCwxNjAzLjloLS4wMWwtMy4yMiwyOS4xNWgtMjcuMzZsLTYuNzQtMTkuNDhjLS44NC0yLjQzLTQuMjctMi40My01LjExLDBsLTYuNzQsMTkuNDhoLTI5LjE5bC43NS0yOS4yaDc3LjYydi4wNVpNNjU1LjE3LDE2NjYuNzVoMHMtMS4zOSwxMS40NS0xLjM5LDExLjQ1bC0xLjk1LDE2LjFoLTQyLjc5bC0xMi4zNi0zNS43M2MtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMTEsMGwtMTIuMzYsMzUuNzNoLTQ4LjE1bDMuMDQtMjcuNTUsMS44Ni0xNi44NCwxLjM2LTEyLjMyaDEyMS4zOWwtMy41NCwyOS4xNlpNNjgxLjI5LDE0OTMuM2MtNS4zMywxNS40LTguOSwzMS4zNS0xMC44Niw0Ny41NGwtMy40OCwyOC43Mi0uMywyLjQ3LTIuMDQsMTYuODUtMS44MiwxNS4wM2gtMTIxLjc1bDEuODYtMTYuOSwxLjg2LTE2Ljg1LDMuNjEtMzIuNjhjMS42Ni0xNS4wOC0uNjgtMzAuMzgtNi43OC00NC4yNy0yLjExLTQuODItNC42Ni05LjQ0LTcuNi0xMy44MmwtOS0xMy40LTE0LjkzLTIyLjIxLTkuMzItMTMuODdjLTEuNDQtMi4xNC00LjA5LTIuMzQtNS45LTEuMTctMS4wNC42Ny0xLjgsMS43OS0xLjg5LDMuMjctLjM5LDYuNTUtLjE3LDE1LjQ2LDEuOCwyNi41OSwxLjk2LDExLjA2LDUuNjUsMjQuMjksMTIuMTksMzkuNTZsMy43OSw4LjYyYy40NSwxLjAzLjg3LDIuMDcsMS4yNSwzLjEyLDIuNzgsNy42MiwzLjc4LDE1LjgyLDIuODgsMjMuOWwtMi41NCwyMy4wMi0xLjQ4LDEzLjM2aC04MC40OGwuNzEtMjcuNTFjLjItOCwyLjMyLTE1LjksNi4wMi0yMywuMjQtLjQ2LjQyLS45NC42Ny0xLjM5bDIuOC00Ljk1YzcuNjUtMTEuMDUsMTIuMjUtMjEuNSwxNC45Ni0zMC42LDMuNDktMTEuNzEsMy44Ni0yMS4xOSwzLjYyLTI2LjgxLS4wOS0yLjExLTEuNjktMy42OS0zLjU4LTMuOTktLjc0LS4xMi0xLjUzLS4wNi0yLjI5LjI3LTIxLjgxLDkuMzMtMzUuMjUsMzIuNC0zNi42NSwzNC44OGwtOC4yNiwxNC43OWMtNi44MSwxMi4xOC0xMC42LDI2LTEwLjk2LDM5Ljk1bC0uNzMsMjguMzctLjQzLDE2LjYxaC0xMDIuMzRsMy4xMS02OC41NWMxLjE4LTI2LjEyLDYuMTktNTEuODcsMTQuODctNzYuNTNsMzIuMTctOTEuMzZjNi41Ni0xOC42MywxNS44OC0zNS44MSwyNy40LTUxLjE2LDE0LjE3LDcuOCwyOC4yMSwxNC42Nyw0Mi4wNSwyMC40NSw0LjM0LDEuODEsOC42NiwzLjUsMTIuOTYsNS4xMSwzMy42MSwxMi41OCw2Ni4wMywxOC45OCw5Ni41MywxOC45OSwzMC4yOCwwLDYyLjQ0LTYuMjksOTUuNzgtMTguNjksNC41NS0xLjY5LDkuMTItMy40OCwxMy43MS01LjQsMTQuMTYtNS45MiwyOC41NS0xMi45Niw0My4wNi0yMSw4Ljc0LTQuODQsMTcuNTItMTAuMDMsMjYuMzMtMTUuNjEsMy43NSwzLjg3LDcuMTksNy45MywxMC40NSwxMi4xLDMuNTQsNC41MSw2Ljg0LDkuMTcsOS44LDE0LjAzLDMuMSw1LjA4LDUuODMsMTAuMzgsOC4yOSwxNS44MywyLjU1LDUuNjUsNC44NSwxMS40NCw2LjcxLDE3LjQ4LDMuMjcsMTAuNjQsNi4zLDIxLjM0LDkuMTMsMzIuMDQsMS43MSw2LjQ4LDMuMzQsMTIuOTYsNC45LDE5LjQyLDEuNDUsNiwyLjg0LDExLjk5LDQuMTYsMTcuOTYuNjksMy4xMiwxLjM4LDYuMjQsMi4wNCw5LjM1LjU4LDIuNzQsMS4xNSw1LjQ4LDEuNyw4LjIxLDEwLjg1LDUzLjE3LDE2Ljk3LDEwMy40NywyMC40MSwxNDIuNThoLTc4Ljg3bDUuMjYtNDMuMzhjMy45NS0zMi41OS4yMi01MC4xNi0zLjUzLTU5LjEzLTIuNjMtNi4zLTUuMjgtOC4zNS01LjI4LTguMzVoLS4wM3MwLDAsMCwwYy02LjQyLDguMTctMTEuNzMsMjAuNDYtMTUuNzcsMzIuMTNaTTc4My40NiwxNjMzLjA2aC00MC43OGwtNi43NC0xOS40OGMtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMSwwbC02Ljc0LDE5LjQ4aC0zMC44NWwzLjMxLTI3LjMzaDg1LjU2Yy43NywxMS44MSwxLjE1LDE4Ljc2LDEuNDMsMjcuMzNoLS4wOFpNOTg0LjU2LDEyNzIuODNjLTEyLjkxLDIzLjI5LTI2LjI4LDQ3LjM3LTUzLjE1LDYxLjA2LTM0LjE0LDE3LjM5LTcxLjI5LDcuNzMtODUuNjcsMi43NmwtMjQuNDQtOC40MmMtNS44LTItMTEuMDUsNC4xNS04LjE0LDkuNTdsMTIuMjMsMjIuNzZjLjQzLjc5LDcuMDQsMTIuODgsMTkuNjMsMjQuMjgtMTQuMDEsNS44LTI4LjUzLDkuNDItNDMuNDIsMTAuODQtMy45OC4zNy05LjE4Ljg1LTE1LjA4LDEuMS0xLjgzLTcuOTQtMy43Ni0xNS45LTUuODItMjMuOS0zLjQ1LTEzLjQyLTcuMi0yNi44OC0xMS4zMi00MC4zLTMuMzYtMTAuOTQtNy42OS0yMS4yOS0xMi44NC0zMS4xMyw5LjM1LTYuODMsMTkuNzMtMTIuOTEsMzEuMy0xNy42OCw0NS4wMS0xOC41Nyw5Ny43MS0xNC41NCwxMDMuNTctMTQuMDIsOS4xOC44MiwxNi41NiwyLjAzLDIzLjckxLDMuMjIsMTUuMzksMi41NSwyOC42OCw0Ljc1LDQ3Ljc1LjYsMy41MS0uNzYsNi45Ni0xLjc0LDEwLjM5LTIuODQsNS4zMi0xLjcsMTAuNTctMy43NSwxNS42OS02LjI1LTEuNCwyLjgyLTIuODYsNS42LTQuMzksOC4zNlpNMzc1LjcyLDczNS4wNWMxLjQ5LDguODMsNC4wNiwxOS41Myw4LjQsMzEsLjY0LDEuNjksMS4zMiwzLjM5LDIuMDQsNS4xMSw1LjA2LDEyLjA5LDEyLjE1LDI0LjgyLDIyLjEsMzcuMDMsMi42NCwzLjI0LDUuNDQsNi40NCw4LjQ5LDkuNTgsOS40Nyw5LjA5LDIwLjM1LDE3LjY4LDMyLjgxLDI1LjIxLDMuNzksMi4zLDcuNjYsNC40NCwxMS41OSw2LjQ0LDI3LjU1LDE0LjA0LDU4LjU1LDIxLjA3LDkyLjc2LDIxLjA3LDIyLjE2LDAsNDUuNjYtMi45Niw3MC40NC04Ljg3LDMuNzYtLjksNy41NS0xLjg1LDExLjM3LTIuODhsOC4xNC0yLjIxLDguMTgtMi4yMmM2LjIxLTEuNjksNy45OC05LjY0LDMuMDctMTMuNzlsLS40Ni0uMzktMTIuNDYtMTAuNTRjLS4wNi0uMDUtMS44My0xLjU3LTQuNzgtNC4zNS0yLjIyLTIuMDktNS4wOC00Ljg4LTguNDgtOC40aC45NWMyMS44NSwwLDQ5LjE1LTUuMjQsNzkuMTItMjIuNzEsNS4xLTIuOTcsMTAuMjYtNi4yNSwxNS41LTkuOTcsMCwwLDAsMCwuMDIsMGgtLjAxczEyLjgyLTkuMSwxMi44Mi05LjFjNS43NC00LjA3LDMuNzYtMTMuMDMtMy4xNi0xNC4zNC00Ny4zMi05LTcwLjU2LTI4LjQtODEuNjgtNDIuODYtMS44MS0yLjM2LTQuODMtMi4yMi02LjY1LS42My0xLjA5Ljk0LTEuNzUsMi40LTEuNDUsNC4xNiwxLjA0LDYuMjksMi43OCwxMy4zNiw1LjU4LDIwLjMyLDQuMjEsMTAuNDUsMTAuODQsMjAuNjgsMjEuMzUsMjcuNzMsMS45LDEuMTYsMy44LDIuMjcsNS42NywzLjMtMS43Ny44LTMuNTQsMS41NC01LjI5LDIuMjUtNS4xLDIuMDYtMTAuMTIsMy43Mi0xNS4wNCw1LjA1LTUyLjI5LDE0LjEtOTMuOTktMTAuOTktMTE0LjM5LTI3LjQ0LTMuNy0yLjk4LTguOTQuOTItNy4wOSw1LjMsMi45Miw2LjkyLDYuODYsMTUuMjcsMTEuOSwyMy45NSwxMS4xNywxOS4yNywyNy43NCw0MC4yLDUwLjYyLDUwLjk0LTkuOTUsMi4xNS0xOS40OCwzLjUtMjguNjksNC4yNi05Ni4wOCw3Ljk2LTE1Mi42NS01NS4wNy0xNzguNDItOTQuODItMi40MS0zLjcxLTQuNTgtNy4yNC02LjQ1LTEwLjQ3LS4yLS4zNC0uNDYtLjU3LS43MS0uODQtMi44OS0zLjEtOC41MS0uNzUtNy43NCwzLjg4LjAxLjA4LjAzLjE2LjA0LjI0Wk04OTMuOTYsNjExLjY5YzIuODQsNC42OCw5LjUzLDUuNCwxMy4zOSwxLjQ2LDIuNC0yLjQ0LDQuNjktNC44Niw2LjkxLTcuMjYsNS4xNC01LjU2LDkuNzktMTAuOTksMTQuMDQtMTYuMyw1LTYuMjUsOS40Mi0xMi4zMiwxMy4zLTE4LjIsMzMuNjMtNTAuOTQsMjcuNTYtODcuNTEsMjIuODYtMTAxLjgtMS4yNy0zLjktNS4zOC02LjI4LTkuNTMtNS41LTE4LDMuMzctMzUuMjksOS4yNC01MC44NiwxNS45LTUuMzgsMi4zLTEwLjU1LDQuNjktMTUuNDcsNy4xMS01LjMyLDIuNjItMTAuMzQsNS4yNS0xNSw3Ljg0LTEzLjQ5LDcuNDgtMjQuMDQsMTQuNDYtMzAuMTksMTguNzZoMGMtMy40OSwyLjQ2LTQuNDksNy4wNi0yLjMxLDEwLjY3bDUyLjg1LDg3LjMzWk0yMDMuMjIsNTEzLjY5aDBjLTYuMjItNC4zNi0xNi45Mi0xMS40NC0zMC42Mi0xOS00LjY3LTIuNTgtOS42OS01LjItMTUtNy44MS00LjkzLTIuNDItMTAuMS00Ljc5LTE1LjQ5LTcuMDktMTUuNDUtNi41Ny0zMi41OC0xMi4zNy01MC40LTE1LjcxLTQuMTUtLjc4LTguMjUsMS42LTkuNTMsNS41LTQuNjcsMTQuMjMtMTAuNzIsNTAuNTUsMjIuNDMsMTAxLjE1LDMuODcsNS45MSw4LjI4LDEyLjAxLDEzLjI5LDE4LjMsNC4yMyw1LjMxLDguODcsMTAuNzUsMTQsMTYuMzEsMi4zNywyLjU4LDQuODEsNS4xNyw3LjM5LDcuOCwzLjg2LDMuOTQsMTAuNTQsMy4yMiwxMy4zOC0xLjQ2bDUyLjg1LTg3LjMzYzIuMTgtMy42LDEuMTgtOC4yMS0yLjMxLTEwLjY2Wk00NTAuNDEsMTI1Ny42MnYtLjAyYzkuMjEtMy44NSwyOC4xNi04Ljc1LDQ1LjQxLDUuOTMsMi40NCwyLjA4LDUuNDItMS4zMyw0LjMzLTQuOTUtMy4zNy0xMS4yLTExLjA3LTI2LjIyLTI4LjE1LTI2LjIxLTE1LjQsMC0yMi4yMiwxMS4zOC0yNS4xNSwxOS42NS0xLjEyLDMuMTYsMS4wOSw2LjYyLDMuNTcsNS41OVpNNTQ4LjgsMTI2My41M2MxNy4yNC0xNC42OCwzNi4xOS05Ljc4LDQ1LjQtNS45M3YuMDJjMi40OCwxLjAzLDQuNy0yLjQzLDMuNTctNS41OS0yLjkzLTguMjctOS43NS0xOS42NS0yNS4xNS0xOS42NS0xNy4wOCwwLTI0Ljc4LDE1LjAxLTI4LjE1LDI2LjIxLTEuMDksMy42MiwxLjg5LDcuMDMsNC4zMyw0Ljk1WiIgZmlsbD0iIzA2MjM0YyIvPjwvc3ZnPg==" +values: + files: + - zarf-values.yaml + schema: zarf-values.schema.json components: - name: uds-portal required: true diff --git a/packages/runtime-security/zarf-values.schema.json b/packages/runtime-security/zarf-values.schema.json new file mode 100644 index 0000000000..52203af01d --- /dev/null +++ b/packages/runtime-security/zarf-values.schema.json @@ -0,0 +1,1324 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "falco": { + "properties": { + "falco": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "certs": { + "properties": { + "ca": { + "properties": { + "crt": { + "type": "string" + } + }, + "type": "object" + }, + "client": { + "properties": { + "crt": { + "type": "string" + }, + "key": { + "type": "string" + } + }, + "type": "object" + }, + "existingClientSecret": { + "type": "string" + }, + "existingSecret": { + "type": "string" + }, + "server": { + "properties": { + "crt": { + "type": "string" + }, + "key": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "collectors": { + "properties": { + "containerEngine": { + "properties": { + "enabled": { + "type": "boolean" + }, + "engines": { + "properties": { + "bpm": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "containerd": { + "properties": { + "enabled": { + "type": "boolean" + }, + "sockets": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "cri": { + "properties": { + "enabled": { + "type": "boolean" + }, + "sockets": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "docker": { + "properties": { + "enabled": { + "type": "boolean" + }, + "sockets": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "libvirt_lxc": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "lxc": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "podman": { + "properties": { + "enabled": { + "type": "boolean" + }, + "sockets": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "hooks": { + "items": { + "type": "string" + }, + "type": "array" + }, + "labelMaxLen": { + "type": "number" + }, + "pluginRef": { + "type": "string" + }, + "withSize": { + "type": "boolean" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "kubernetes": { + "properties": { + "collectorHostname": { + "type": "string" + }, + "collectorPort": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "hostProc": { + "type": "string" + }, + "pluginRef": { + "type": "string" + }, + "verbosity": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "controller": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "daemonset": { + "properties": { + "updateStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "deployment": { + "properties": { + "replicas": { + "type": "number" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customRules": { + "properties": {}, + "type": "object" + }, + "driver": { + "properties": { + "enabled": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "kmod": { + "properties": { + "bufSizePreset": { + "type": "number" + }, + "dropFailedExit": { + "type": "boolean" + } + }, + "type": "object" + }, + "loader": { + "properties": { + "enabled": { + "type": "boolean" + }, + "initContainer": { + "properties": { + "args": { + "type": "array" + }, + "env": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "modernEbpf": { + "properties": { + "bufSizePreset": { + "type": "number" + }, + "cpusForEachBuffer": { + "type": "number" + }, + "disableIterators": { + "type": "boolean" + }, + "dropFailedExit": { + "type": "boolean" + }, + "leastPrivileged": { + "type": "boolean" + }, + "sysfsMount": { + "type": "boolean" + } + }, + "type": "object" + }, + "sysfsMountPath": { + "type": "string" + } + }, + "type": "object" + }, + "extra": { + "properties": { + "args": { + "type": "array" + }, + "env": { + "type": "array" + }, + "initContainers": { + "type": "array" + } + }, + "type": "object" + }, + "falco": { + "properties": { + "append_output": { + "items": { + "properties": { + "suggested_output": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "base_syscalls": { + "properties": { + "all": { + "type": "boolean" + }, + "custom_set": { + "type": "array" + }, + "repair": { + "type": "boolean" + } + }, + "type": "object" + }, + "buffer_format_base64": { + "type": "boolean" + }, + "buffered_outputs": { + "type": "boolean" + }, + "capture": { + "properties": { + "default_duration": { + "type": "number" + }, + "enabled": { + "type": "boolean" + }, + "mode": { + "type": "string" + }, + "path_prefix": { + "type": "string" + } + }, + "type": "object" + }, + "config_files": { + "items": { + "type": "string" + }, + "type": "array" + }, + "falco_libs": { + "properties": { + "snaplen": { + "type": "number" + }, + "thread_table_auto_purging_interval_s": { + "type": "number" + }, + "thread_table_auto_purging_thread_timeout_s": { + "type": "number" + }, + "thread_table_size": { + "type": "number" + } + }, + "type": "object" + }, + "file_output": { + "properties": { + "enabled": { + "type": "boolean" + }, + "filename": { + "type": "string" + }, + "keep_alive": { + "type": "boolean" + } + }, + "type": "object" + }, + "http_output": { + "properties": { + "ca_bundle": { + "type": "string" + }, + "ca_cert": { + "type": "string" + }, + "ca_path": { + "type": "string" + }, + "client_cert": { + "type": "string" + }, + "client_key": { + "type": "string" + }, + "compress_uploads": { + "type": "boolean" + }, + "echo": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "insecure": { + "type": "boolean" + }, + "keep_alive": { + "type": "boolean" + }, + "max_consecutive_timeouts": { + "type": "number" + }, + "mtls": { + "type": "boolean" + }, + "url": { + "type": "string" + }, + "user_agent": { + "type": "string" + } + }, + "type": "object" + }, + "json_include_message_property": { + "type": "boolean" + }, + "json_include_output_fields_property": { + "type": "boolean" + }, + "json_include_output_property": { + "type": "boolean" + }, + "json_include_tags_property": { + "type": "boolean" + }, + "json_output": { + "type": "boolean" + }, + "libs_logger": { + "properties": { + "enabled": { + "type": "boolean" + }, + "severity": { + "type": "string" + } + }, + "type": "object" + }, + "load_plugins": { + "type": "array" + }, + "log_level": { + "type": "string" + }, + "log_stderr": { + "type": "boolean" + }, + "log_syslog": { + "type": "boolean" + }, + "output_timeout": { + "type": "number" + }, + "outputs_queue": { + "properties": { + "capacity": { + "type": "number" + } + }, + "type": "object" + }, + "plugins": { + "type": "array" + }, + "plugins_hostinfo": { + "type": "boolean" + }, + "priority": { + "type": "string" + }, + "program_output": { + "properties": { + "enabled": { + "type": "boolean" + }, + "keep_alive": { + "type": "boolean" + }, + "program": { + "type": "string" + } + }, + "type": "object" + }, + "rule_matching": { + "type": "string" + }, + "rules_files": { + "items": { + "type": "string" + }, + "type": "array" + }, + "stdout_output": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "syscall_event_drops": { + "properties": { + "actions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "max_burst": { + "type": "number" + }, + "rate": { + "type": "number" + }, + "simulate_drops": { + "type": "boolean" + }, + "threshold": { + "type": "number" + } + }, + "type": "object" + }, + "syscall_event_timeouts": { + "properties": { + "max_consecutives": { + "type": "number" + } + }, + "type": "object" + }, + "syslog_output": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "time_format_iso_8601": { + "type": "boolean" + }, + "watch_config_files": { + "type": "boolean" + }, + "webserver": { + "properties": { + "enabled": { + "type": "boolean" + }, + "k8s_healthz_endpoint": { + "type": "string" + }, + "listen_address": { + "type": "string" + }, + "listen_port": { + "type": "number" + }, + "prometheus_metrics_enabled": { + "type": "boolean" + }, + "ssl_certificate": { + "type": "string" + }, + "ssl_enabled": { + "type": "boolean" + }, + "threadiness": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "falco-talon": { + "properties": {}, + "type": "object" + }, + "falcoHostnameEnv": { + "type": "boolean" + }, + "falcoctl": { + "properties": { + "artifact": { + "properties": { + "follow": { + "properties": { + "args": { + "items": { + "type": "string" + }, + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "type": "array" + }, + "envFrom": { + "type": "array" + }, + "mounts": { + "properties": { + "volumeMounts": { + "type": "array" + } + }, + "type": "object" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "install": { + "properties": { + "args": { + "items": { + "type": "string" + }, + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "type": "array" + }, + "envFrom": { + "type": "array" + }, + "mounts": { + "properties": { + "volumeMounts": { + "type": "array" + } + }, + "type": "object" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "config": { + "properties": { + "artifact": { + "properties": { + "allowedTypes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "follow": { + "properties": { + "every": { + "type": "string" + }, + "falcoversions": { + "type": "string" + }, + "pluginsDir": { + "type": "string" + }, + "refs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "rulesfilesDir": { + "type": "string" + }, + "stateDir": { + "type": "string" + } + }, + "type": "object" + }, + "install": { + "properties": { + "pluginsDir": { + "type": "string" + }, + "refs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "resolveDeps": { + "type": "boolean" + }, + "rulesfilesDir": { + "type": "string" + }, + "stateDir": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "indexes": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "falcosidekick": { + "properties": { + "config": { + "properties": { + "debug": { + "type": "boolean" + }, + "loki": { + "properties": { + "format": { + "type": "string" + }, + "grafanaDashboard": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "hostport": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fullfqdn": { + "type": "boolean" + }, + "listenPort": { + "type": "string" + }, + "serviceMonitor": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "fullnameOverride": { + "type": "string" + }, + "grafana": { + "properties": { + "dashboards": { + "properties": { + "configMaps": { + "properties": { + "falco": { + "properties": { + "folder": { + "type": "string" + }, + "folderAnnotation": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "healthChecks": { + "properties": { + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "imagePullSecrets": { + "type": "array" + }, + "metrics": { + "properties": { + "convertMemoryToMB": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "includeEmptyValues": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jemallocStatsEnabled": { + "type": "boolean" + }, + "kernelEventCountersEnabled": { + "type": "boolean" + }, + "kernelEventCountersPerCPUEnabled": { + "type": "boolean" + }, + "kernelIterEventCountersEnabled": { + "type": "boolean" + }, + "libbpfStatsEnabled": { + "type": "boolean" + }, + "outputRule": { + "type": "boolean" + }, + "pluginsMetricsEnabled": { + "type": "boolean" + }, + "resourceUtilizationEnabled": { + "type": "boolean" + }, + "rulesCountersEnabled": { + "type": "boolean" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "create": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "ports": { + "properties": { + "metrics": { + "properties": { + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "port": { + "type": "number" + }, + "protocol": { + "type": "string" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "stateCountersEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "mounts": { + "properties": { + "volumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "volumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "nameOverride": { + "type": "string" + }, + "namespaceOverride": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podHostname": { + "type": "string" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podPriorityClassName": { + "type": "string" + }, + "rbac": { + "properties": { + "create": { + "type": "boolean" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "responseActions": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "scc": { + "properties": { + "create": { + "type": "boolean" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "create": { + "type": "boolean" + }, + "endpointPort": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "path": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "scheme": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "targetLabels": { + "type": "array" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "services": { + "type": "string" + }, + "tolerations": { + "items": { + "properties": { + "effect": { + "type": "string" + }, + "key": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tty": { + "type": "boolean" + }, + "webserver": { + "properties": { + "prometheus_metrics_enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-falco-config": { + "properties": { + "additionalNetworkAllow": { + "type": "array" + }, + "disabledRules": { + "type": "array" + }, + "extraRules": { + "type": "array" + }, + "incubatingRulesEnabled": { + "type": "boolean" + }, + "overrides": { + "properties": { + "lists": { + "properties": {}, + "type": "object" + }, + "macros": { + "properties": {}, + "type": "object" + }, + "rules": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "sandboxRulesEnabled": { + "type": "boolean" + }, + "udsDefaultDisabledRulesIncubating": { + "items": { + "type": "string" + }, + "type": "array" + }, + "udsDefaultDisabledRulesSandbox": { + "type": "array" + }, + "udsDefaultDisabledRulesStable": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" +} diff --git a/packages/runtime-security/zarf-values.yaml b/packages/runtime-security/zarf-values.yaml new file mode 100644 index 0000000000..5c1329c711 --- /dev/null +++ b/packages/runtime-security/zarf-values.yaml @@ -0,0 +1,7 @@ +# Copyright 2025-2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the UDS Core runtime-security layer (Falco). +falco: + falco: {} + uds-falco-config: {} diff --git a/packages/runtime-security/zarf.yaml b/packages/runtime-security/zarf.yaml index c862090286..6fc6241dea 100644 --- a/packages/runtime-security/zarf.yaml +++ b/packages/runtime-security/zarf.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Defense Unicorns +# Copyright 2025-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial kind: ZarfPackageConfig @@ -22,6 +22,11 @@ variables: description: "Automatically cleanup previous Neuvector resources on upgrade" default: "false" +values: + files: + - zarf-values.yaml + schema: zarf-values.schema.json + components: # Falco - name: falco diff --git a/packages/standard/zarf-values.schema.json b/packages/standard/zarf-values.schema.json new file mode 100644 index 0000000000..2af56e86aa --- /dev/null +++ b/packages/standard/zarf-values.schema.json @@ -0,0 +1,23029 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "authservice": { + "properties": { + "authservice": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "autoscaling": { + "properties": { + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + } + }, + "type": "object" + }, + "nameOverride": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "redis": { + "properties": { + "egressCidr": { + "type": "string" + }, + "internal": { + "properties": { + "enabled": { + "type": "boolean" + }, + "remoteNamespace": { + "type": "string" + }, + "remoteSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "uri": { + "type": "string" + } + }, + "type": "object" + }, + "replicaCount": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "envoy-gateway": { + "properties": { + "envoy-gateway": { + "properties": { + "certgen": { + "properties": { + "job": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "args": { + "type": "array" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "pod": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "ttlSecondsAfterFinished": { + "type": "number" + } + }, + "type": "object" + }, + "rbac": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "commonLabels": { + "properties": {}, + "type": "object" + }, + "config": { + "properties": { + "envoyGateway": { + "properties": { + "extensionApis": { + "properties": {}, + "type": "object" + }, + "gateway": { + "properties": { + "controllerName": { + "type": "string" + } + }, + "type": "object" + }, + "logging": { + "properties": { + "level": { + "properties": { + "default": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "provider": { + "properties": { + "kubernetes": { + "properties": { + "deploy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "crds": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "createNamespace": { + "type": "boolean" + }, + "deployment": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "envoyGateway": { + "properties": { + "extraEnv": { + "type": "array" + }, + "imagePullPolicy": { + "type": "string" + }, + "imagePullSecrets": { + "type": "array" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "pod": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": { + "prometheus.io/port": { + "type": "string" + }, + "prometheus.io/scrape": { + "type": "string" + } + }, + "type": "object" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "ports": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + } + }, + "type": "object" + }, + "global": { + "properties": { + "imagePullSecrets": { + "type": "array" + }, + "images": { + "properties": { + "envoyGateway": { + "properties": { + "pullPolicy": { + "type": "string" + }, + "pullSecrets": { + "type": "array" + } + }, + "type": "object" + }, + "envoyProxy": { + "properties": { + "pullPolicy": { + "type": "string" + }, + "pullSecrets": { + "type": "array" + } + }, + "type": "object" + }, + "ratelimit": { + "properties": { + "pullPolicy": { + "type": "string" + }, + "pullSecrets": { + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "hpa": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "metrics": { + "type": "array" + }, + "minReplicas": { + "type": "number" + } + }, + "type": "object" + }, + "kubernetesClusterDomain": { + "type": "string" + }, + "namespaceOverride": { + "type": "string" + }, + "podDisruptionBudget": { + "properties": { + "minAvailable": { + "type": "number" + } + }, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "topologyInjector": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-envoy-gateway-config": { + "properties": { + "envoyService": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "global": { + "properties": { + "images": { + "properties": { + "envoyGateway": { + "properties": {}, + "type": "object" + }, + "envoyProxy": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "falco": { + "properties": { + "falco": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "certs": { + "properties": { + "ca": { + "properties": { + "crt": { + "type": "string" + } + }, + "type": "object" + }, + "client": { + "properties": { + "crt": { + "type": "string" + }, + "key": { + "type": "string" + } + }, + "type": "object" + }, + "existingClientSecret": { + "type": "string" + }, + "existingSecret": { + "type": "string" + }, + "server": { + "properties": { + "crt": { + "type": "string" + }, + "key": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "collectors": { + "properties": { + "containerEngine": { + "properties": { + "enabled": { + "type": "boolean" + }, + "engines": { + "properties": { + "bpm": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "containerd": { + "properties": { + "enabled": { + "type": "boolean" + }, + "sockets": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "cri": { + "properties": { + "enabled": { + "type": "boolean" + }, + "sockets": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "docker": { + "properties": { + "enabled": { + "type": "boolean" + }, + "sockets": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "libvirt_lxc": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "lxc": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "podman": { + "properties": { + "enabled": { + "type": "boolean" + }, + "sockets": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "hooks": { + "items": { + "type": "string" + }, + "type": "array" + }, + "labelMaxLen": { + "type": "number" + }, + "pluginRef": { + "type": "string" + }, + "withSize": { + "type": "boolean" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "kubernetes": { + "properties": { + "collectorHostname": { + "type": "string" + }, + "collectorPort": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "hostProc": { + "type": "string" + }, + "pluginRef": { + "type": "string" + }, + "verbosity": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "controller": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "daemonset": { + "properties": { + "updateStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "deployment": { + "properties": { + "replicas": { + "type": "number" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customRules": { + "properties": {}, + "type": "object" + }, + "driver": { + "properties": { + "enabled": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "kmod": { + "properties": { + "bufSizePreset": { + "type": "number" + }, + "dropFailedExit": { + "type": "boolean" + } + }, + "type": "object" + }, + "loader": { + "properties": { + "enabled": { + "type": "boolean" + }, + "initContainer": { + "properties": { + "args": { + "type": "array" + }, + "env": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "modernEbpf": { + "properties": { + "bufSizePreset": { + "type": "number" + }, + "cpusForEachBuffer": { + "type": "number" + }, + "disableIterators": { + "type": "boolean" + }, + "dropFailedExit": { + "type": "boolean" + }, + "leastPrivileged": { + "type": "boolean" + }, + "sysfsMount": { + "type": "boolean" + } + }, + "type": "object" + }, + "sysfsMountPath": { + "type": "string" + } + }, + "type": "object" + }, + "extra": { + "properties": { + "args": { + "type": "array" + }, + "env": { + "type": "array" + }, + "initContainers": { + "type": "array" + } + }, + "type": "object" + }, + "falco": { + "properties": { + "append_output": { + "items": { + "properties": { + "suggested_output": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "base_syscalls": { + "properties": { + "all": { + "type": "boolean" + }, + "custom_set": { + "type": "array" + }, + "repair": { + "type": "boolean" + } + }, + "type": "object" + }, + "buffer_format_base64": { + "type": "boolean" + }, + "buffered_outputs": { + "type": "boolean" + }, + "capture": { + "properties": { + "default_duration": { + "type": "number" + }, + "enabled": { + "type": "boolean" + }, + "mode": { + "type": "string" + }, + "path_prefix": { + "type": "string" + } + }, + "type": "object" + }, + "config_files": { + "items": { + "type": "string" + }, + "type": "array" + }, + "falco_libs": { + "properties": { + "snaplen": { + "type": "number" + }, + "thread_table_auto_purging_interval_s": { + "type": "number" + }, + "thread_table_auto_purging_thread_timeout_s": { + "type": "number" + }, + "thread_table_size": { + "type": "number" + } + }, + "type": "object" + }, + "file_output": { + "properties": { + "enabled": { + "type": "boolean" + }, + "filename": { + "type": "string" + }, + "keep_alive": { + "type": "boolean" + } + }, + "type": "object" + }, + "http_output": { + "properties": { + "ca_bundle": { + "type": "string" + }, + "ca_cert": { + "type": "string" + }, + "ca_path": { + "type": "string" + }, + "client_cert": { + "type": "string" + }, + "client_key": { + "type": "string" + }, + "compress_uploads": { + "type": "boolean" + }, + "echo": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "insecure": { + "type": "boolean" + }, + "keep_alive": { + "type": "boolean" + }, + "max_consecutive_timeouts": { + "type": "number" + }, + "mtls": { + "type": "boolean" + }, + "url": { + "type": "string" + }, + "user_agent": { + "type": "string" + } + }, + "type": "object" + }, + "json_include_message_property": { + "type": "boolean" + }, + "json_include_output_fields_property": { + "type": "boolean" + }, + "json_include_output_property": { + "type": "boolean" + }, + "json_include_tags_property": { + "type": "boolean" + }, + "json_output": { + "type": "boolean" + }, + "libs_logger": { + "properties": { + "enabled": { + "type": "boolean" + }, + "severity": { + "type": "string" + } + }, + "type": "object" + }, + "load_plugins": { + "type": "array" + }, + "log_level": { + "type": "string" + }, + "log_stderr": { + "type": "boolean" + }, + "log_syslog": { + "type": "boolean" + }, + "output_timeout": { + "type": "number" + }, + "outputs_queue": { + "properties": { + "capacity": { + "type": "number" + } + }, + "type": "object" + }, + "plugins": { + "type": "array" + }, + "plugins_hostinfo": { + "type": "boolean" + }, + "priority": { + "type": "string" + }, + "program_output": { + "properties": { + "enabled": { + "type": "boolean" + }, + "keep_alive": { + "type": "boolean" + }, + "program": { + "type": "string" + } + }, + "type": "object" + }, + "rule_matching": { + "type": "string" + }, + "rules_files": { + "items": { + "type": "string" + }, + "type": "array" + }, + "stdout_output": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "syscall_event_drops": { + "properties": { + "actions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "max_burst": { + "type": "number" + }, + "rate": { + "type": "number" + }, + "simulate_drops": { + "type": "boolean" + }, + "threshold": { + "type": "number" + } + }, + "type": "object" + }, + "syscall_event_timeouts": { + "properties": { + "max_consecutives": { + "type": "number" + } + }, + "type": "object" + }, + "syslog_output": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "time_format_iso_8601": { + "type": "boolean" + }, + "watch_config_files": { + "type": "boolean" + }, + "webserver": { + "properties": { + "enabled": { + "type": "boolean" + }, + "k8s_healthz_endpoint": { + "type": "string" + }, + "listen_address": { + "type": "string" + }, + "listen_port": { + "type": "number" + }, + "prometheus_metrics_enabled": { + "type": "boolean" + }, + "ssl_certificate": { + "type": "string" + }, + "ssl_enabled": { + "type": "boolean" + }, + "threadiness": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "falco-talon": { + "properties": {}, + "type": "object" + }, + "falcoHostnameEnv": { + "type": "boolean" + }, + "falcoctl": { + "properties": { + "artifact": { + "properties": { + "follow": { + "properties": { + "args": { + "items": { + "type": "string" + }, + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "type": "array" + }, + "envFrom": { + "type": "array" + }, + "mounts": { + "properties": { + "volumeMounts": { + "type": "array" + } + }, + "type": "object" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "install": { + "properties": { + "args": { + "items": { + "type": "string" + }, + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "type": "array" + }, + "envFrom": { + "type": "array" + }, + "mounts": { + "properties": { + "volumeMounts": { + "type": "array" + } + }, + "type": "object" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "config": { + "properties": { + "artifact": { + "properties": { + "allowedTypes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "follow": { + "properties": { + "every": { + "type": "string" + }, + "falcoversions": { + "type": "string" + }, + "pluginsDir": { + "type": "string" + }, + "refs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "rulesfilesDir": { + "type": "string" + }, + "stateDir": { + "type": "string" + } + }, + "type": "object" + }, + "install": { + "properties": { + "pluginsDir": { + "type": "string" + }, + "refs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "resolveDeps": { + "type": "boolean" + }, + "rulesfilesDir": { + "type": "string" + }, + "stateDir": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "indexes": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "falcosidekick": { + "properties": { + "config": { + "properties": { + "debug": { + "type": "boolean" + }, + "loki": { + "properties": { + "format": { + "type": "string" + }, + "grafanaDashboard": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "hostport": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fullfqdn": { + "type": "boolean" + }, + "listenPort": { + "type": "string" + }, + "serviceMonitor": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "fullnameOverride": { + "type": "string" + }, + "grafana": { + "properties": { + "dashboards": { + "properties": { + "configMaps": { + "properties": { + "falco": { + "properties": { + "folder": { + "type": "string" + }, + "folderAnnotation": { + "type": "string" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "healthChecks": { + "properties": { + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "imagePullSecrets": { + "type": "array" + }, + "metrics": { + "properties": { + "convertMemoryToMB": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "includeEmptyValues": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jemallocStatsEnabled": { + "type": "boolean" + }, + "kernelEventCountersEnabled": { + "type": "boolean" + }, + "kernelEventCountersPerCPUEnabled": { + "type": "boolean" + }, + "kernelIterEventCountersEnabled": { + "type": "boolean" + }, + "libbpfStatsEnabled": { + "type": "boolean" + }, + "outputRule": { + "type": "boolean" + }, + "pluginsMetricsEnabled": { + "type": "boolean" + }, + "resourceUtilizationEnabled": { + "type": "boolean" + }, + "rulesCountersEnabled": { + "type": "boolean" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "create": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "ports": { + "properties": { + "metrics": { + "properties": { + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "port": { + "type": "number" + }, + "protocol": { + "type": "string" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "stateCountersEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "mounts": { + "properties": { + "volumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "volumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "nameOverride": { + "type": "string" + }, + "namespaceOverride": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podHostname": { + "type": "string" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podPriorityClassName": { + "type": "string" + }, + "rbac": { + "properties": { + "create": { + "type": "boolean" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "responseActions": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "scc": { + "properties": { + "create": { + "type": "boolean" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "create": { + "type": "boolean" + }, + "endpointPort": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "path": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "scheme": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "targetLabels": { + "type": "array" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "services": { + "type": "string" + }, + "tolerations": { + "items": { + "properties": { + "effect": { + "type": "string" + }, + "key": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "tty": { + "type": "boolean" + }, + "webserver": { + "properties": { + "prometheus_metrics_enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-falco-config": { + "properties": { + "additionalNetworkAllow": { + "type": "array" + }, + "disabledRules": { + "type": "array" + }, + "extraRules": { + "type": "array" + }, + "incubatingRulesEnabled": { + "type": "boolean" + }, + "overrides": { + "properties": { + "lists": { + "properties": {}, + "type": "object" + }, + "macros": { + "properties": {}, + "type": "object" + }, + "rules": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "sandboxRulesEnabled": { + "type": "boolean" + }, + "udsDefaultDisabledRulesIncubating": { + "items": { + "type": "string" + }, + "type": "array" + }, + "udsDefaultDisabledRulesSandbox": { + "type": "array" + }, + "udsDefaultDisabledRulesStable": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "global": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + } + }, + "type": "object" + }, + "grafana": { + "properties": { + "grafana": { + "properties": { + "admin": { + "properties": { + "existingSecret": { + "type": "string" + }, + "passwordKey": { + "type": "string" + }, + "userKey": { + "type": "string" + } + }, + "type": "object" + }, + "adminDomain": { + "type": "string" + }, + "adminUser": { + "type": "string" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "alerting": { + "properties": {}, + "type": "object" + }, + "assertNoLeakedSecrets": { + "type": "boolean" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "scaleDown": { + "properties": { + "policies": { + "items": { + "properties": { + "periodSeconds": { + "type": "number" + }, + "type": { + "type": "string" + }, + "value": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + }, + "stabilizationWindowSeconds": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "metrics": { + "items": { + "properties": { + "resource": { + "properties": { + "name": { + "type": "string" + }, + "target": { + "properties": { + "averageUtilization": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "minReplicas": { + "type": "number" + }, + "targetCPU": { + "type": "string" + }, + "targetMemory": { + "type": "string" + } + }, + "type": "object" + }, + "createConfigmap": { + "type": "boolean" + }, + "dashboardProviders": { + "properties": {}, + "type": "object" + }, + "dashboards": { + "properties": {}, + "type": "object" + }, + "dashboardsConfigMaps": { + "properties": {}, + "type": "object" + }, + "datasources": { + "properties": {}, + "type": "object" + }, + "defaultCurlOptions": { + "type": "string" + }, + "deploymentStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "downloadDashboards": { + "properties": { + "env": { + "properties": {}, + "type": "object" + }, + "envFromSecret": { + "type": "string" + }, + "envValueFrom": { + "properties": {}, + "type": "object" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "enableKubeBackwardCompatibility": { + "type": "boolean" + }, + "enableServiceLinks": { + "type": "boolean" + }, + "env": { + "properties": {}, + "type": "object" + }, + "envFromConfigMaps": { + "type": "array" + }, + "envFromSecret": { + "type": "string" + }, + "envFromSecrets": { + "type": "array" + }, + "envRenderSecret": { + "properties": {}, + "type": "object" + }, + "envValueFrom": { + "properties": {}, + "type": "object" + }, + "extraConfigmapMounts": { + "items": { + "properties": { + "configMap": { + "type": "string" + }, + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraContainerVolumes": { + "type": "array" + }, + "extraContainers": { + "type": "string" + }, + "extraEmptyDirMounts": { + "type": "array" + }, + "extraExposePorts": { + "type": "array" + }, + "extraInitContainers": { + "type": "array" + }, + "extraLabels": { + "properties": {}, + "type": "object" + }, + "extraObjects": { + "type": "array" + }, + "extraSecretMounts": { + "items": { + "properties": { + "defaultMode": { + "type": "number" + }, + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "secretName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "global": { + "properties": { + "imagePullSecrets": { + "type": "array" + } + }, + "type": "object" + }, + "gossipPortName": { + "type": "string" + }, + "grafana.ini": { + "properties": { + "analytics": { + "properties": { + "check_for_plugin_updates": { + "type": "boolean" + }, + "check_for_updates": { + "type": "boolean" + }, + "feedback_links_enabled": { + "type": "boolean" + }, + "reporting_enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "auth": { + "properties": { + "disable_login_form": { + "type": "boolean" + } + }, + "type": "object" + }, + "auth.generic_oauth": { + "properties": { + "allow_sign_up": { + "type": "boolean" + }, + "auth_url": { + "type": "string" + }, + "auto_login": { + "type": "boolean" + }, + "client_id": { + "type": "string" + }, + "client_secret": { + "type": "string" + }, + "email_attribute_path": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "login_attribute_path": { + "type": "string" + }, + "name": { + "type": "string" + }, + "name_attribute_path": { + "type": "string" + }, + "role_attribute_path": { + "type": "string" + }, + "role_attribute_strict": { + "type": "boolean" + }, + "scopes": { + "type": "string" + }, + "signout_redirect_url": { + "type": "string" + }, + "token_url": { + "type": "string" + }, + "use_refresh_token": { + "type": "boolean" + } + }, + "type": "object" + }, + "database": { + "properties": { + "wal": { + "type": "boolean" + } + }, + "type": "object" + }, + "log": { + "properties": { + "mode": { + "type": "string" + } + }, + "type": "object" + }, + "paths": { + "properties": { + "data": { + "type": "string" + }, + "logs": { + "type": "string" + }, + "plugins": { + "type": "string" + }, + "provisioning": { + "type": "string" + } + }, + "type": "object" + }, + "plugins": { + "properties": { + "preinstall_disabled": { + "type": "boolean" + }, + "public_key_retrieval_disabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "server": { + "properties": { + "domain": { + "type": "string" + }, + "root_url": { + "type": "string" + } + }, + "type": "object" + }, + "unified_storage": { + "properties": { + "index_path": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "headlessService": { + "type": "boolean" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "imageRenderer": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPU": { + "type": "string" + }, + "targetMemory": { + "type": "string" + } + }, + "type": "object" + }, + "deploymentStrategy": { + "properties": {}, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "properties": { + "HTTP_HOST": { + "type": "string" + }, + "XDG_CACHE_HOME": { + "type": "string" + }, + "XDG_CONFIG_HOME": { + "type": "string" + } + }, + "type": "object" + }, + "envValueFrom": { + "properties": {}, + "type": "object" + }, + "existingSecret": { + "type": "string" + }, + "extraConfigmapMounts": { + "type": "array" + }, + "extraSecretMounts": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "grafanaProtocol": { + "type": "string" + }, + "grafanaSubPath": { + "type": "string" + }, + "healthcheckPath": { + "type": "string" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "networkPolicy": { + "properties": { + "extraIngressSelectors": { + "type": "array" + }, + "limitEgress": { + "type": "boolean" + }, + "limitIngress": { + "type": "boolean" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podPortName": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "progressDeadlineSeconds": { + "type": "string" + }, + "renderingCallbackURL": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "serverURL": { + "type": "string" + }, + "service": { + "properties": { + "appProtocol": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "port": { + "type": "number" + }, + "portName": { + "type": "string" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + }, + "serviceAccountName": { + "type": "string" + }, + "serviceMonitor": { + "properties": { + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "path": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "scheme": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "targetLabels": { + "type": "array" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "token": { + "type": "string" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraPaths": { + "type": "array" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "path": { + "type": "string" + }, + "pathType": { + "type": "string" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "initChownData": { + "properties": { + "enabled": { + "type": "boolean" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "ldap": { + "properties": { + "config": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "existingSecret": { + "type": "string" + } + }, + "type": "object" + }, + "lifecycleHooks": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "namespaceOverride": { + "type": "string" + }, + "networkPolicy": { + "properties": { + "allowExternal": { + "type": "boolean" + }, + "egress": { + "properties": { + "blockDNSResolution": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "ports": { + "type": "array" + }, + "to": { + "type": "array" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "explicitIpBlocks": { + "type": "array" + }, + "explicitNamespacesSelector": { + "properties": {}, + "type": "object" + }, + "ingress": { + "type": "boolean" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "notifiers": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "disableWarning": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "extraPvcLabels": { + "properties": {}, + "type": "object" + }, + "finalizers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inMemory": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "lookupVolumeName": { + "type": "boolean" + }, + "size": { + "type": "string" + }, + "type": { + "type": "string" + }, + "volumeName": { + "type": "string" + } + }, + "type": "object" + }, + "plugins": { + "type": "array" + }, + "podDisruptionBudget": { + "properties": {}, + "type": "object" + }, + "podPortName": { + "type": "string" + }, + "progressDeadlineSeconds": { + "type": "string" + }, + "rbac": { + "properties": { + "create": { + "type": "boolean" + }, + "extraClusterRoleRules": { + "type": "array" + }, + "extraRoleRules": { + "type": "array" + }, + "namespaced": { + "type": "boolean" + }, + "namespaces": { + "type": "array" + }, + "pspEnabled": { + "type": "boolean" + }, + "pspUseAppArmor": { + "type": "boolean" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostnames": { + "type": "array" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "sessionPersistence": { + "properties": {}, + "type": "object" + }, + "timeouts": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "loadBalancerClass": { + "type": "string" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "port": { + "type": "number" + }, + "portName": { + "type": "string" + }, + "sessionAffinity": { + "type": "string" + }, + "targetPort": { + "type": "number" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + }, + "nameTest": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "basicAuth": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "metricRelabelings": { + "type": "array" + }, + "path": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "scheme": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "targetLabels": { + "type": "array" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "shadowBundledPlugins": { + "type": "boolean" + }, + "shareProcessNamespace": { + "type": "boolean" + }, + "smtp": { + "properties": { + "existingSecret": { + "type": "string" + }, + "passwordKey": { + "type": "string" + }, + "userKey": { + "type": "string" + } + }, + "type": "object" + }, + "testFramework": { + "properties": { + "enabled": { + "type": "boolean" + }, + "imagePullPolicy": { + "type": "string" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "useStatefulSet": { + "type": "boolean" + }, + "verticalPodAutoscaler": { + "properties": { + "controlledResources": { + "properties": { + "cpu": { + "type": "boolean" + }, + "memory": { + "type": "boolean" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxAllowed": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "minAllowed": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "updateMode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-grafana-config": { + "properties": { + "additionalNetworkAllow": { + "type": "array" + }, + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "extraDatasources": { + "type": "array" + }, + "postgresql": { + "properties": { + "database": { + "type": "string" + }, + "egressCidr": { + "type": "string" + }, + "host": { + "type": "string" + }, + "internal": { + "properties": { + "enabled": { + "type": "boolean" + }, + "remoteNamespace": { + "type": "string" + }, + "remoteSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "password": { + "type": "string" + }, + "port": { + "type": "number" + }, + "ssl_mode": { + "type": "string" + }, + "user": { + "type": "string" + } + }, + "type": "object" + }, + "sso": { + "properties": { + "groups": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "uptime": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istio-admin-gateway": { + "properties": { + "gateway": { + "properties": { + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-istio-config": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "proxyProtocol": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "rootDomain": { + "properties": { + "enableHttpsRedirect": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "tls": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "cacert": { + "type": "string" + }, + "cert": { + "type": "string" + }, + "key": { + "type": "string" + }, + "servers": { + "properties": { + "admin": { + "properties": { + "mode": { + "type": "string" + } + }, + "type": "object" + }, + "keycloak": { + "properties": { + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istio-controlplane": { + "properties": { + "base": { + "properties": {}, + "type": "object" + }, + "cni": { + "properties": { + "ambient": { + "properties": { + "reconcileIptablesOnStartup": { + "type": "boolean" + } + }, + "type": "object" + }, + "cni": { + "properties": { + "image": { + "type": "string" + } + }, + "type": "object" + }, + "cniBinDir": { + "type": "string" + }, + "cniConfDir": { + "type": "string" + }, + "excludeNamespaces": { + "items": { + "type": "string" + }, + "type": "array" + }, + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "profile": { + "type": "string" + }, + "seLinuxOptions": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istiod": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "preferredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "podAffinityTerm": { + "properties": { + "labelSelector": { + "properties": { + "matchExpressions": { + "items": { + "properties": { + "key": { + "type": "string" + }, + "operator": { + "type": "string" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "weight": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "proxy": { + "properties": {}, + "type": "object" + }, + "proxy_init": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "meshConfig": { + "properties": { + "accessLogFile": { + "type": "string" + }, + "defaultConfig": { + "properties": { + "gatewayTopology": { + "properties": { + "forwardClientCertDetails": { + "type": "string" + } + }, + "type": "object" + }, + "holdApplicationUntilProxyStarts": { + "type": "boolean" + } + }, + "type": "object" + }, + "extensionProviders": { + "items": { + "properties": { + "envoyExtAuthzGrpc": { + "properties": { + "port": { + "type": "string" + }, + "service": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "outboundTrafficPolicy": { + "properties": { + "mode": { + "type": "string" + } + }, + "type": "object" + }, + "pathNormalization": { + "properties": { + "normalization": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "pilot": { + "properties": { + "env": { + "properties": { + "ENABLE_NATIVE_SIDECARS": { + "type": "boolean" + }, + "PILOT_JWT_ENABLE_REMOTE_JWKS": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "profile": { + "type": "string" + }, + "volumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "volumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "uds-global-istio-config": { + "properties": { + "classificationBanner": { + "properties": { + "addFooter": { + "type": "boolean" + }, + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "enabledHosts": { + "type": "array" + }, + "text": { + "type": "string" + } + }, + "type": "object" + }, + "dashboardAnnotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "ztunnel": { + "properties": { + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "seLinuxOptions": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istio-egress-ambient": { + "properties": { + "uds-istio-egress-config": { + "properties": { + "config": { + "properties": { + "deployment": { + "properties": {}, + "type": "object" + }, + "horizontalPodAutoscaler": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": {}, + "type": "object" + }, + "serviceAccount": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istio-egress-gateway": { + "properties": { + "gateway": { + "properties": { + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istio-passthrough-gateway": { + "properties": { + "gateway": { + "properties": { + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-istio-config": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "proxyProtocol": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "rootDomain": { + "properties": { + "enableHttpsRedirect": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "tls": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "servers": { + "properties": { + "passthrough": { + "properties": { + "mode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "istio-tenant-gateway": { + "properties": { + "gateway": { + "properties": { + "global": { + "properties": { + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-istio-config": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "proxyProtocol": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "rootDomain": { + "properties": { + "enableHttpsRedirect": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "tls": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "cacert": { + "type": "string" + }, + "cert": { + "type": "string" + }, + "key": { + "type": "string" + }, + "servers": { + "properties": { + "keycloak": { + "properties": { + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + } + }, + "type": "object" + }, + "tenant": { + "properties": { + "mode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "keycloak": { + "additionalProperties": true, + "properties": { + "keycloak": { + "properties": { + "additionalGatewayNamespaces": { + "type": "array" + }, + "additionalNetworkAllow": { + "type": "array" + }, + "adminApiAllowedPrincipals": { + "type": "array" + }, + "adminDomain": { + "type": "string" + }, + "affinity": { + "type": "string" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "scaleDown": { + "properties": { + "policies": { + "items": { + "properties": { + "periodSeconds": { + "type": "number" + }, + "type": { + "type": "string" + }, + "value": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + }, + "stabilizationWindowSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "scaleUp": { + "properties": { + "stabilizationWindowSeconds": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "metrics": { + "items": { + "properties": { + "resource": { + "properties": { + "name": { + "type": "string" + }, + "target": { + "properties": { + "averageUtilization": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "minReplicas": { + "type": "number" + }, + "sessionStickiness": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "clusterDomain": { + "type": "string" + }, + "configImage": { + "type": "string" + }, + "dashboardAnnotations": { + "properties": {}, + "type": "object" + }, + "debugMode": { + "type": "boolean" + }, + "detailedObservability": { + "properties": { + "alerts": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "dashboards": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "logging": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "devMode": { + "type": "boolean" + }, + "disableVirtualThreads": { + "type": "boolean" + }, + "domain": { + "type": "string" + }, + "enableServiceLinks": { + "type": "boolean" + }, + "env": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "httpRetry": { + "properties": { + "applyJitter": { + "type": "boolean" + }, + "backoffMultiplier": { + "type": "number" + }, + "initialBackoffMillis": { + "type": "number" + }, + "jitterFactor": { + "type": "number" + }, + "maxRetries": { + "type": "number" + } + }, + "type": "object" + }, + "insecureAdminPasswordGeneration": { + "properties": { + "enabled": { + "type": "boolean" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "jsonLogFormat": { + "type": "boolean" + }, + "lifecycleHooks": { + "properties": {}, + "type": "object" + }, + "migrations": { + "properties": { + "deleteGeneratedTrustStore": { + "type": "boolean" + }, + "upgradePermissions": { + "type": "boolean" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "pathParameterProtection": { + "type": "boolean" + }, + "persistence": { + "properties": { + "accessMode": { + "type": "string" + }, + "conf": { + "properties": { + "enabled": { + "type": "boolean" + }, + "size": { + "type": "string" + } + }, + "type": "object" + }, + "data": { + "properties": { + "enabled": { + "type": "boolean" + }, + "size": { + "type": "string" + } + }, + "type": "object" + }, + "providers": { + "properties": { + "enabled": { + "type": "boolean" + }, + "size": { + "type": "string" + } + }, + "type": "object" + }, + "storageClassName": { + "type": "string" + }, + "themes": { + "properties": { + "enabled": { + "type": "boolean" + }, + "size": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "postgresql": { + "properties": { + "database": { + "type": "string" + }, + "egressCidr": { + "type": "string" + }, + "host": { + "type": "string" + }, + "internal": { + "properties": { + "enabled": { + "type": "boolean" + }, + "remoteNamespace": { + "type": "string" + }, + "remoteSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "password": { + "type": "string" + }, + "port": { + "type": "number" + }, + "secretRef": { + "properties": { + "host": { + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "password": { + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "username": { + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "realm": { + "type": "string" + }, + "realmAuthFlows": { + "properties": { + "OTP_ENABLED": { + "type": "boolean" + }, + "SOCIAL_AUTH_ENABLED": { + "type": "boolean" + }, + "USERNAME_PASSWORD_AUTH_ENABLED": { + "type": "boolean" + }, + "WEBAUTHN_ENABLED": { + "type": "boolean" + }, + "X509_AUTH_ENABLED": { + "type": "boolean" + }, + "X509_MFA_ENABLED": { + "type": "boolean" + } + }, + "type": "object" + }, + "realmConfig": { + "properties": { + "maxInFlightLoginsPerUser": { + "type": "number" + } + }, + "type": "object" + }, + "realmInitEnv": { + "properties": { + "GOOGLE_IDP_ENABLED": { + "type": "boolean" + }, + "SECURITY_HARDENING_ADDITIONAL_CLIENT_SCOPES": { + "type": "string" + }, + "SECURITY_HARDENING_ADDITIONAL_PROTOCOL_MAPPERS": { + "type": "string" + }, + "SSO_SESSION_MAX_PER_USER": { + "type": "string" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "restartPolicy": { + "type": "string" + }, + "smtp": { + "properties": { + "enabled": { + "type": "boolean" + }, + "port": { + "type": "number" + } + }, + "type": "object" + }, + "statefulsetLabels": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "themeCustomizations": { + "properties": { + "settings": { + "properties": { + "enableAccessRequestNotes": { + "type": "boolean" + }, + "enableRegistrationFields": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "thirdPartyIntegration": { + "properties": { + "tls": { + "properties": { + "tlsCertificateFormat": { + "type": "string" + }, + "tlsCertificateHeader": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "string" + }, + "truststorePaths": { + "items": { + "type": "string" + }, + "type": "array" + }, + "updateStrategy": { + "type": "string" + }, + "uptime": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "waypoint": { + "properties": { + "deployment": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "limits": { + "properties": { + "cpu": { + "type": "number" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "horizontalPodAutoscaler": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "metrics": { + "items": { + "properties": { + "resource": { + "properties": { + "name": { + "type": "string" + }, + "target": { + "properties": { + "averageUtilization": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "minReplicas": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kube-prometheus-stack": { + "properties": { + "kube-prometheus-stack": { + "properties": { + "additionalPrometheusRulesMap": { + "properties": {}, + "type": "object" + }, + "alertmanager": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "alertmanagerSpec": { + "properties": { + "additionalArgs": { + "type": "array" + }, + "additionalConfig": { + "properties": {}, + "type": "object" + }, + "additionalConfigString": { + "type": "string" + }, + "additionalPeers": { + "type": "array" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "alertmanagerConfigMatcherStrategy": { + "properties": {}, + "type": "object" + }, + "alertmanagerConfigNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "alertmanagerConfigSelector": { + "properties": {}, + "type": "object" + }, + "alertmanagerConfiguration": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "clusterAdvertiseAddress": { + "type": "boolean" + }, + "clusterGossipInterval": { + "type": "string" + }, + "clusterLabel": { + "type": "string" + }, + "clusterPeerTimeout": { + "type": "string" + }, + "clusterPushpullInterval": { + "type": "string" + }, + "clusterTLS": { + "properties": {}, + "type": "object" + }, + "configMaps": { + "type": "array" + }, + "containers": { + "type": "array" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "enableServiceLinks": { + "type": "string" + }, + "externalUrl": { + "type": "string" + }, + "forceEnableClusterMode": { + "type": "boolean" + }, + "hostAliases": { + "type": "array" + }, + "hostNetwork": { + "type": "boolean" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "limits": { + "properties": {}, + "type": "object" + }, + "listenLocal": { + "type": "boolean" + }, + "logFormat": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "minReadySeconds": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "paused": { + "type": "boolean" + }, + "persistentVolumeClaimRetentionPolicy": { + "properties": {}, + "type": "object" + }, + "podAntiAffinity": { + "type": "string" + }, + "podAntiAffinityTopologyKey": { + "type": "string" + }, + "podManagementPolicy": { + "type": "string" + }, + "podMetadata": { + "properties": {}, + "type": "object" + }, + "portName": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "retention": { + "type": "string" + }, + "routePrefix": { + "type": "string" + }, + "schedulerName": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "secrets": { + "type": "array" + }, + "serviceName": { + "type": "string" + }, + "storage": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "string" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "updateStrategy": { + "properties": {}, + "type": "object" + }, + "useExistingSecret": { + "type": "boolean" + }, + "volumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "volumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "web": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "config": { + "properties": { + "global": { + "properties": { + "resolve_timeout": { + "type": "string" + } + }, + "type": "object" + }, + "inhibit_rules": { + "items": { + "properties": { + "equal": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source_matchers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "target_matchers": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "receivers": { + "items": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "route": { + "properties": { + "group_by": { + "items": { + "type": "string" + }, + "type": "array" + }, + "group_interval": { + "type": "string" + }, + "group_wait": { + "type": "string" + }, + "receiver": { + "type": "string" + }, + "repeat_interval": { + "type": "string" + }, + "routes": { + "items": { + "properties": { + "matchers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "receiver": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "templates": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "enableFeatures": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "extraSecret": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "data": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "forceDeployDashboards": { + "type": "boolean" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "type": "array" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "paths": { + "type": "array" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "ingressPerReplica": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hostDomain": { + "type": "string" + }, + "hostPrefix": { + "type": "string" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "paths": { + "type": "array" + }, + "tlsSecretName": { + "type": "string" + }, + "tlsSecretPerReplica": { + "properties": { + "enabled": { + "type": "boolean" + }, + "prefix": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "namespaceOverride": { + "type": "string" + }, + "networkPolicy": { + "properties": { + "additionalIngress": { + "type": "array" + }, + "egress": { + "properties": { + "enabled": { + "type": "boolean" + }, + "rules": { + "type": "array" + } + }, + "type": "object" + }, + "enableClusterRules": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "gateway": { + "properties": { + "namespace": { + "type": "string" + }, + "podLabels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "monitoringRules": { + "properties": { + "configReloader": { + "type": "boolean" + }, + "prometheus": { + "type": "boolean" + } + }, + "type": "object" + }, + "policyTypes": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "minAvailable": { + "type": "number" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostnames": { + "type": "array" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "sessionPersistence": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "routePerReplica": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostDomain": { + "type": "string" + }, + "hostPrefix": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "sessionPersistence": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "secret": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "additionalPorts": { + "type": "array" + }, + "annotations": { + "properties": { + "zarf.dev/connect-description": { + "type": "string" + } + }, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "externalIPs": { + "type": "array" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": { + "zarf.dev/connect-name": { + "type": "string" + } + }, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": { + "clientIP": { + "properties": { + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "targetPort": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalEndpoints": { + "type": "array" + }, + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "enableHttp2": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "scheme": { + "type": "string" + }, + "selfMonitor": { + "type": "boolean" + }, + "targetLimit": { + "type": "number" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "servicePerReplica": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "stringConfig": { + "type": "string" + }, + "templateFiles": { + "properties": {}, + "type": "object" + }, + "tplConfig": { + "type": "boolean" + }, + "verticalPodAutoscaler": { + "properties": { + "controlledResources": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxAllowed": { + "properties": {}, + "type": "object" + }, + "minAllowed": { + "properties": {}, + "type": "object" + }, + "updatePolicy": { + "properties": { + "updateMode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "cleanPrometheusOperatorObjectNames": { + "type": "boolean" + }, + "commonLabels": { + "properties": {}, + "type": "object" + }, + "coreDns": { + "properties": { + "enabled": { + "type": "boolean" + }, + "service": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "port": { + "type": "string" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "crds": { + "properties": { + "enabled": { + "type": "boolean" + }, + "upgradeJob": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "properties": {}, + "type": "object" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "forceConflicts": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "customRules": { + "properties": {}, + "type": "object" + }, + "defaultRules": { + "properties": { + "additionalAggregationLabels": { + "type": "array" + }, + "additionalRuleAnnotations": { + "properties": {}, + "type": "object" + }, + "additionalRuleGroupAnnotations": { + "properties": { + "alertmanager": { + "properties": {}, + "type": "object" + }, + "configReloaders": { + "properties": {}, + "type": "object" + }, + "etcd": { + "properties": {}, + "type": "object" + }, + "general": { + "properties": {}, + "type": "object" + }, + "k8sContainerCpuUsageSecondsTotal": { + "properties": {}, + "type": "object" + }, + "k8sContainerMemoryCache": { + "properties": {}, + "type": "object" + }, + "k8sContainerMemoryRss": { + "properties": {}, + "type": "object" + }, + "k8sContainerMemorySwap": { + "properties": {}, + "type": "object" + }, + "k8sContainerResource": { + "properties": {}, + "type": "object" + }, + "k8sPodOwner": { + "properties": {}, + "type": "object" + }, + "kubeApiserverAvailability": { + "properties": {}, + "type": "object" + }, + "kubeApiserverBurnrate": { + "properties": {}, + "type": "object" + }, + "kubeApiserverHistogram": { + "properties": {}, + "type": "object" + }, + "kubeApiserverSlos": { + "properties": {}, + "type": "object" + }, + "kubeControllerManager": { + "properties": {}, + "type": "object" + }, + "kubePrometheusGeneral": { + "properties": {}, + "type": "object" + }, + "kubePrometheusNodeRecording": { + "properties": {}, + "type": "object" + }, + "kubeProxy": { + "properties": {}, + "type": "object" + }, + "kubeSchedulerAlerting": { + "properties": {}, + "type": "object" + }, + "kubeSchedulerRecording": { + "properties": {}, + "type": "object" + }, + "kubeStateMetrics": { + "properties": {}, + "type": "object" + }, + "kubelet": { + "properties": {}, + "type": "object" + }, + "kubernetesApps": { + "properties": {}, + "type": "object" + }, + "kubernetesResources": { + "properties": {}, + "type": "object" + }, + "kubernetesStorage": { + "properties": {}, + "type": "object" + }, + "kubernetesSystem": { + "properties": {}, + "type": "object" + }, + "network": { + "properties": {}, + "type": "object" + }, + "node": { + "properties": {}, + "type": "object" + }, + "nodeExporterAlerting": { + "properties": {}, + "type": "object" + }, + "nodeExporterRecording": { + "properties": {}, + "type": "object" + }, + "prometheus": { + "properties": {}, + "type": "object" + }, + "prometheusOperator": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "additionalRuleGroupLabels": { + "properties": { + "alertmanager": { + "properties": {}, + "type": "object" + }, + "configReloaders": { + "properties": {}, + "type": "object" + }, + "etcd": { + "properties": {}, + "type": "object" + }, + "general": { + "properties": {}, + "type": "object" + }, + "k8sContainerCpuUsageSecondsTotal": { + "properties": {}, + "type": "object" + }, + "k8sContainerMemoryCache": { + "properties": {}, + "type": "object" + }, + "k8sContainerMemoryRss": { + "properties": {}, + "type": "object" + }, + "k8sContainerMemorySwap": { + "properties": {}, + "type": "object" + }, + "k8sContainerResource": { + "properties": {}, + "type": "object" + }, + "k8sPodOwner": { + "properties": {}, + "type": "object" + }, + "kubeApiserverAvailability": { + "properties": {}, + "type": "object" + }, + "kubeApiserverBurnrate": { + "properties": {}, + "type": "object" + }, + "kubeApiserverHistogram": { + "properties": {}, + "type": "object" + }, + "kubeApiserverSlos": { + "properties": {}, + "type": "object" + }, + "kubeControllerManager": { + "properties": {}, + "type": "object" + }, + "kubePrometheusGeneral": { + "properties": {}, + "type": "object" + }, + "kubePrometheusNodeRecording": { + "properties": {}, + "type": "object" + }, + "kubeProxy": { + "properties": {}, + "type": "object" + }, + "kubeSchedulerAlerting": { + "properties": {}, + "type": "object" + }, + "kubeSchedulerRecording": { + "properties": {}, + "type": "object" + }, + "kubeStateMetrics": { + "properties": {}, + "type": "object" + }, + "kubelet": { + "properties": {}, + "type": "object" + }, + "kubernetesApps": { + "properties": {}, + "type": "object" + }, + "kubernetesResources": { + "properties": {}, + "type": "object" + }, + "kubernetesStorage": { + "properties": {}, + "type": "object" + }, + "kubernetesSystem": { + "properties": {}, + "type": "object" + }, + "network": { + "properties": {}, + "type": "object" + }, + "node": { + "properties": {}, + "type": "object" + }, + "nodeExporterAlerting": { + "properties": {}, + "type": "object" + }, + "nodeExporterRecording": { + "properties": {}, + "type": "object" + }, + "prometheus": { + "properties": {}, + "type": "object" + }, + "prometheusOperator": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "additionalRuleLabels": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appNamespacesOperator": { + "type": "string" + }, + "appNamespacesTarget": { + "type": "string" + }, + "create": { + "type": "boolean" + }, + "disabled": { + "properties": {}, + "type": "object" + }, + "keepFiringFor": { + "type": "string" + }, + "kubeletClientCertificateExpiration": { + "properties": { + "critical": { + "type": "number" + }, + "warning": { + "type": "number" + } + }, + "type": "object" + }, + "kubeletServerCertificateExpiration": { + "properties": { + "critical": { + "type": "number" + }, + "warning": { + "type": "number" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "node": { + "properties": { + "fsSelector": { + "type": "string" + } + }, + "type": "object" + }, + "rules": { + "properties": { + "alertmanager": { + "type": "boolean" + }, + "configReloaders": { + "type": "boolean" + }, + "etcd": { + "type": "boolean" + }, + "general": { + "type": "boolean" + }, + "k8sContainerCpuUsageSecondsTotal": { + "type": "boolean" + }, + "k8sContainerMemoryCache": { + "type": "boolean" + }, + "k8sContainerMemoryRss": { + "type": "boolean" + }, + "k8sContainerMemorySwap": { + "type": "boolean" + }, + "k8sContainerMemoryWorkingSetBytes": { + "type": "boolean" + }, + "k8sContainerResource": { + "type": "boolean" + }, + "k8sPodOwner": { + "type": "boolean" + }, + "kubeApiserverAvailability": { + "type": "boolean" + }, + "kubeApiserverBurnrate": { + "type": "boolean" + }, + "kubeApiserverHistogram": { + "type": "boolean" + }, + "kubeApiserverSlos": { + "type": "boolean" + }, + "kubeControllerManager": { + "type": "boolean" + }, + "kubePrometheusGeneral": { + "type": "boolean" + }, + "kubePrometheusNodeRecording": { + "type": "boolean" + }, + "kubeProxy": { + "type": "boolean" + }, + "kubeSchedulerAlerting": { + "type": "boolean" + }, + "kubeSchedulerRecording": { + "type": "boolean" + }, + "kubeStateMetrics": { + "type": "boolean" + }, + "kubelet": { + "type": "boolean" + }, + "kubernetesApps": { + "type": "boolean" + }, + "kubernetesResources": { + "type": "boolean" + }, + "kubernetesStorage": { + "type": "boolean" + }, + "kubernetesSystem": { + "type": "boolean" + }, + "network": { + "type": "boolean" + }, + "node": { + "type": "boolean" + }, + "nodeExporterAlerting": { + "type": "boolean" + }, + "nodeExporterRecording": { + "type": "boolean" + }, + "prometheus": { + "type": "boolean" + }, + "prometheusOperator": { + "type": "boolean" + }, + "windows": { + "type": "boolean" + } + }, + "type": "object" + }, + "runbookUrl": { + "type": "string" + } + }, + "type": "object" + }, + "extraManifests": { + "type": "string" + }, + "fullnameOverride": { + "type": "string" + }, + "global": { + "properties": { + "imagePullSecrets": { + "type": "array" + }, + "rbac": { + "properties": { + "create": { + "type": "boolean" + }, + "createAggregateClusterRoles": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "grafana": { + "properties": { + "additionalDataSources": { + "type": "array" + }, + "additionalDataSourcesString": { + "type": "string" + }, + "admin": { + "properties": { + "existingSecret": { + "type": "string" + }, + "passwordKey": { + "type": "string" + }, + "userKey": { + "type": "string" + } + }, + "type": "object" + }, + "adminUser": { + "type": "string" + }, + "defaultDashboardsEditable": { + "type": "boolean" + }, + "defaultDashboardsEnabled": { + "type": "boolean" + }, + "defaultDashboardsInterval": { + "type": "string" + }, + "defaultDashboardsTimezone": { + "type": "string" + }, + "deleteDatasources": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "extraConfigmapMounts": { + "type": "array" + }, + "forceDeployDashboards": { + "type": "boolean" + }, + "forceDeployDatasources": { + "type": "boolean" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "path": { + "type": "string" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "namespaceOverride": { + "type": "string" + }, + "operator": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "dashboardsConfigMapRefEnabled": { + "type": "boolean" + }, + "folder": { + "type": "string" + }, + "folderRef": { + "type": "string" + }, + "folderUID": { + "type": "string" + }, + "matchLabels": { + "properties": {}, + "type": "object" + }, + "resyncPeriod": { + "type": "string" + } + }, + "type": "object" + }, + "prune": { + "type": "boolean" + }, + "rbac": { + "properties": { + "pspEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "service": { + "properties": { + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "portName": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "autoMount": { + "type": "boolean" + }, + "create": { + "type": "boolean" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "sidecar": { + "properties": { + "dashboards": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enableNewTablePanelSyntax": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "label": { + "type": "string" + }, + "labelValue": { + "type": "string" + }, + "multicluster": { + "properties": { + "etcd": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "global": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "provider": { + "properties": { + "allowUiUpdates": { + "type": "boolean" + } + }, + "type": "object" + }, + "searchNamespace": { + "type": "string" + } + }, + "type": "object" + }, + "datasources": { + "properties": { + "alertmanager": { + "properties": { + "enabled": { + "type": "boolean" + }, + "handleGrafanaManagedAlerts": { + "type": "boolean" + }, + "implementation": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "createPrometheusReplicasDatasources": { + "type": "boolean" + }, + "defaultDatasourceEnabled": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "exemplarTraceIdDestinations": { + "properties": {}, + "type": "object" + }, + "httpMethod": { + "type": "string" + }, + "isDefaultDatasource": { + "type": "boolean" + }, + "label": { + "type": "string" + }, + "labelValue": { + "type": "string" + }, + "name": { + "type": "string" + }, + "prometheusServiceName": { + "type": "string" + }, + "uid": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kube-state-metrics": { + "properties": { + "metricLabelsAllowlist": { + "items": { + "type": "string" + }, + "type": "array" + }, + "prometheus": { + "properties": { + "monitor": { + "properties": { + "enabled": { + "type": "boolean" + }, + "http": { + "properties": { + "honorLabels": { + "type": "boolean" + } + }, + "type": "object" + }, + "metrics": { + "properties": { + "honorLabels": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheusScrape": { + "type": "boolean" + }, + "releaseLabel": { + "type": "boolean" + } + }, + "type": "object" + }, + "kubeApiServer": { + "properties": { + "enabled": { + "type": "boolean" + }, + "jobNameOverride": { + "type": "string" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "regex": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "selector": { + "properties": { + "matchLabels": { + "properties": { + "component": { + "type": "string" + }, + "provider": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + }, + "tlsConfig": { + "properties": { + "insecureSkipVerify": { + "type": "boolean" + }, + "serverName": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubeControllerManager": { + "properties": { + "enabled": { + "type": "boolean" + }, + "endpoints": { + "type": "array" + }, + "jobNameOverride": { + "type": "string" + }, + "service": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "port": { + "type": "string" + }, + "targetPort": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "https": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "port": { + "type": "string" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "serverName": { + "type": "string" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubeDns": { + "properties": { + "enabled": { + "type": "boolean" + }, + "service": { + "properties": { + "dnsmasq": { + "properties": { + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "skydns": { + "properties": { + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "dnsmasqMetricRelabelings": { + "type": "array" + }, + "dnsmasqRelabelings": { + "type": "array" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubeEtcd": { + "properties": { + "enabled": { + "type": "boolean" + }, + "endpoints": { + "type": "array" + }, + "service": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "caFile": { + "type": "string" + }, + "certFile": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "keyFile": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "port": { + "type": "string" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "scheme": { + "type": "string" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "serverName": { + "type": "string" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubeProxy": { + "properties": { + "enabled": { + "type": "boolean" + }, + "endpoints": { + "type": "array" + }, + "jobNameOverride": { + "type": "string" + }, + "service": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "https": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "port": { + "type": "string" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubeScheduler": { + "properties": { + "enabled": { + "type": "boolean" + }, + "endpoints": { + "type": "array" + }, + "jobNameOverride": { + "type": "string" + }, + "service": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "port": { + "type": "string" + }, + "targetPort": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "https": { + "type": "string" + }, + "insecureSkipVerify": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "port": { + "type": "string" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "selector": { + "properties": {}, + "type": "object" + }, + "serverName": { + "type": "string" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubeStateMetrics": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "kubeTargetVersionOverride": { + "type": "string" + }, + "kubeVersionOverride": { + "type": "string" + }, + "kubelet": { + "properties": { + "enabled": { + "type": "boolean" + }, + "jobNameOverride": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "attachMetadata": { + "properties": { + "node": { + "type": "boolean" + } + }, + "type": "object" + }, + "cAdvisor": { + "type": "boolean" + }, + "cAdvisorInterval": { + "type": "string" + }, + "cAdvisorMetricRelabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "regex": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "cAdvisorRelabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "targetLabel": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "honorLabels": { + "type": "boolean" + }, + "honorTimestamps": { + "type": "boolean" + }, + "https": { + "type": "boolean" + }, + "insecureSkipVerify": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "kubelet": { + "type": "boolean" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "regex": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "probes": { + "type": "boolean" + }, + "probesMetricRelabelings": { + "type": "array" + }, + "probesRelabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "targetLabel": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "targetLabel": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "resource": { + "type": "boolean" + }, + "resourceInterval": { + "type": "string" + }, + "resourcePath": { + "type": "string" + }, + "resourceRelabelings": { + "items": { + "properties": { + "action": { + "type": "string" + }, + "sourceLabels": { + "items": { + "type": "string" + }, + "type": "array" + }, + "targetLabel": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "targetLabels": { + "type": "array" + }, + "targetLimit": { + "type": "number" + }, + "trackTimestampsStaleness": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "kubernetesServiceMonitors": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "nameOverride": { + "type": "string" + }, + "namespaceOverride": { + "type": "string" + }, + "nodeExporter": { + "properties": { + "enabled": { + "type": "boolean" + }, + "forceDeployDashboards": { + "type": "boolean" + }, + "jobLabel": { + "type": "string" + }, + "operatingSystems": { + "properties": { + "aix": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "darwin": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "linux": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "interval": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheus": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "additionalPodMonitors": { + "type": "array" + }, + "additionalRulesForClusterRole": { + "type": "array" + }, + "additionalServiceMonitors": { + "type": "array" + }, + "agentMode": { + "type": "boolean" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraSecret": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "data": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "type": "array" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "paths": { + "type": "array" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "ingressPerReplica": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hostDomain": { + "type": "string" + }, + "hostPrefix": { + "type": "string" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "paths": { + "type": "array" + }, + "tlsSecretName": { + "type": "string" + }, + "tlsSecretPerReplica": { + "properties": { + "enabled": { + "type": "boolean" + }, + "prefix": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + }, + "flavor": { + "type": "string" + }, + "namespace": { + "type": "string" + } + }, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "minAvailable": { + "type": "number" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "prometheusSpec": { + "properties": { + "additionalAlertManagerConfigs": { + "type": "array" + }, + "additionalAlertManagerConfigsSecret": { + "properties": {}, + "type": "object" + }, + "additionalAlertRelabelConfigs": { + "type": "array" + }, + "additionalAlertRelabelConfigsSecret": { + "properties": {}, + "type": "object" + }, + "additionalArgs": { + "type": "array" + }, + "additionalConfig": { + "properties": {}, + "type": "object" + }, + "additionalConfigString": { + "type": "string" + }, + "additionalPrometheusSecretsAnnotations": { + "properties": {}, + "type": "object" + }, + "additionalRemoteRead": { + "type": "array" + }, + "additionalRemoteWrite": { + "type": "array" + }, + "additionalScrapeConfigs": { + "type": "array" + }, + "additionalScrapeConfigsSecret": { + "properties": {}, + "type": "object" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "alertingEndpoints": { + "type": "array" + }, + "allowOverlappingBlocks": { + "type": "boolean" + }, + "apiserverConfig": { + "properties": {}, + "type": "object" + }, + "arbitraryFSAccessThroughSMs": { + "type": "boolean" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "bodySizeLimit": { + "type": "string" + }, + "configMaps": { + "type": "array" + }, + "containers": { + "type": "array" + }, + "convertClassicHistogramsToNHCB": { + "type": "boolean" + }, + "disableAlerting": { + "type": "boolean" + }, + "disableCompaction": { + "type": "boolean" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "enableAdminAPI": { + "type": "boolean" + }, + "enableFeatures": { + "type": "array" + }, + "enableOTLPReceiver": { + "type": "boolean" + }, + "enableRemoteWriteReceiver": { + "type": "boolean" + }, + "enableServiceLinks": { + "type": "string" + }, + "enforcedBodySizeLimit": { + "type": "string" + }, + "enforcedKeepDroppedTargets": { + "type": "number" + }, + "enforcedLabelLimit": { + "type": "boolean" + }, + "enforcedLabelNameLengthLimit": { + "type": "boolean" + }, + "enforcedLabelValueLengthLimit": { + "type": "boolean" + }, + "enforcedNamespaceLabel": { + "type": "string" + }, + "enforcedSampleLimit": { + "type": "boolean" + }, + "enforcedTargetLimit": { + "type": "boolean" + }, + "evaluationInterval": { + "type": "string" + }, + "excludedFromEnforcement": { + "type": "array" + }, + "exemplars": { + "properties": {}, + "type": "object" + }, + "externalLabels": { + "properties": {}, + "type": "object" + }, + "externalUrl": { + "type": "string" + }, + "hostAliases": { + "type": "array" + }, + "hostNetwork": { + "type": "boolean" + }, + "hostUsers": { + "type": "string" + }, + "ignoreNamespaceSelectors": { + "type": "boolean" + }, + "initContainers": { + "type": "array" + }, + "keepDroppedTargets": { + "type": "number" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "listenLocal": { + "type": "boolean" + }, + "logFormat": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "maximumStartupDurationSeconds": { + "type": "number" + }, + "minReadySeconds": { + "type": "number" + }, + "nameEscapingScheme": { + "type": "string" + }, + "nameValidationScheme": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "otlp": { + "properties": {}, + "type": "object" + }, + "overrideHonorLabels": { + "type": "boolean" + }, + "overrideHonorTimestamps": { + "type": "boolean" + }, + "paused": { + "type": "boolean" + }, + "persistentVolumeClaimRetentionPolicy": { + "properties": {}, + "type": "object" + }, + "podAntiAffinity": { + "type": "string" + }, + "podAntiAffinityTopologyKey": { + "type": "string" + }, + "podManagementPolicy": { + "type": "string" + }, + "podMetadata": { + "properties": { + "labels": { + "properties": { + "app": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "podMonitorNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "podMonitorSelector": { + "properties": {}, + "type": "object" + }, + "podMonitorSelectorNilUsesHelmValues": { + "type": "boolean" + }, + "podTargetLabels": { + "type": "array" + }, + "portName": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "probeNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "probeSelector": { + "properties": {}, + "type": "object" + }, + "probeSelectorNilUsesHelmValues": { + "type": "boolean" + }, + "prometheusExternalLabelName": { + "type": "string" + }, + "prometheusExternalLabelNameClear": { + "type": "boolean" + }, + "prometheusRulesExcludedFromEnforce": { + "type": "array" + }, + "query": { + "properties": {}, + "type": "object" + }, + "queryLogFile": { + "type": "boolean" + }, + "reloadStrategy": { + "type": "string" + }, + "remoteRead": { + "type": "array" + }, + "remoteWrite": { + "type": "array" + }, + "remoteWriteDashboards": { + "type": "boolean" + }, + "remoteWriteReceiverMessageVersions": { + "type": "array" + }, + "replicaExternalLabelName": { + "type": "string" + }, + "replicaExternalLabelNameClear": { + "type": "boolean" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "retention": { + "type": "string" + }, + "retentionSize": { + "type": "string" + }, + "routePrefix": { + "type": "string" + }, + "ruleNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "ruleQueryOffset": { + "type": "string" + }, + "ruleSelector": { + "properties": {}, + "type": "object" + }, + "ruleSelectorNilUsesHelmValues": { + "type": "boolean" + }, + "runtime": { + "properties": {}, + "type": "object" + }, + "sampleLimit": { + "type": "boolean" + }, + "schedulerName": { + "type": "string" + }, + "scrapeClasses": { + "type": "array" + }, + "scrapeClassicHistograms": { + "type": "boolean" + }, + "scrapeConfigNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "scrapeConfigSelector": { + "properties": {}, + "type": "object" + }, + "scrapeConfigSelectorNilUsesHelmValues": { + "type": "boolean" + }, + "scrapeFailureLogFile": { + "type": "string" + }, + "scrapeInterval": { + "type": "string" + }, + "scrapeNativeHistograms": { + "type": "boolean" + }, + "scrapeProtocols": { + "type": "array" + }, + "scrapeTimeout": { + "type": "string" + }, + "secrets": { + "type": "array" + }, + "serviceDiscoveryRole": { + "type": "string" + }, + "serviceMonitorNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "serviceMonitorSelector": { + "properties": {}, + "type": "object" + }, + "serviceMonitorSelectorNilUsesHelmValues": { + "type": "boolean" + }, + "serviceName": { + "type": "string" + }, + "shardRetentionPolicy": { + "properties": {}, + "type": "object" + }, + "shardingStrategy": { + "properties": {}, + "type": "object" + }, + "shards": { + "type": "number" + }, + "storageSpec": { + "properties": { + "volumeClaimTemplate": { + "properties": { + "spec": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "resources": { + "properties": { + "requests": { + "properties": { + "storage": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "targetLimit": { + "type": "number" + }, + "terminationGracePeriodSeconds": { + "type": "string" + }, + "thanos": { + "properties": {}, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "tracingConfig": { + "properties": {}, + "type": "object" + }, + "tsdb": { + "properties": { + "outOfOrderTimeWindow": { + "type": "string" + } + }, + "type": "object" + }, + "updateStrategy": { + "properties": {}, + "type": "object" + }, + "version": { + "type": "string" + }, + "volumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "volumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "walCompression": { + "type": "boolean" + }, + "web": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostnames": { + "type": "array" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "sessionPersistence": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "routePerReplica": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostDomain": { + "type": "string" + }, + "hostPrefix": { + "type": "string" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "sessionPersistence": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "additionalPorts": { + "type": "array" + }, + "annotations": { + "properties": { + "zarf.dev/connect-description": { + "type": "string" + } + }, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "externalIPs": { + "type": "array" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": { + "zarf.dev/connect-name": { + "type": "string" + } + }, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "publishNotReadyAddresses": { + "type": "boolean" + }, + "reloaderWebNodePort": { + "type": "string" + }, + "reloaderWebPort": { + "type": "number" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": { + "clientIP": { + "properties": { + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "targetPort": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalEndpoints": { + "type": "array" + }, + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "scheme": { + "type": "string" + }, + "selfMonitor": { + "type": "boolean" + }, + "targetLimit": { + "type": "number" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "servicePerReplica": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "thanosIngress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "type": "array" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "nodePort": { + "type": "number" + }, + "paths": { + "type": "array" + }, + "servicePort": { + "type": "number" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "thanosService": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "httpNodePort": { + "type": "number" + }, + "httpPort": { + "type": "number" + }, + "httpPortName": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "portName": { + "type": "string" + }, + "targetHttpPort": { + "type": "string" + }, + "targetPort": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "thanosServiceExternal": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "httpNodePort": { + "type": "number" + }, + "httpPort": { + "type": "number" + }, + "httpPortName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "portName": { + "type": "string" + }, + "targetHttpPort": { + "type": "string" + }, + "targetPort": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "thanosServiceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "metricRelabelings": { + "type": "array" + }, + "relabelings": { + "type": "array" + }, + "scheme": { + "type": "string" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "verticalPodAutoscaler": { + "properties": { + "controlledResources": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxAllowed": { + "properties": {}, + "type": "object" + }, + "minAllowed": { + "properties": {}, + "type": "object" + }, + "updatePolicy": { + "properties": { + "updateMode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheus-node-exporter": { + "properties": { + "extraArgs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "hostNetwork": { + "type": "boolean" + }, + "hostPID": { + "type": "boolean" + }, + "namespaceOverride": { + "type": "string" + }, + "podAnnotations": { + "properties": { + "cluster-autoscaler.kubernetes.io/safe-to-evict": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": { + "jobLabel": { + "type": "string" + } + }, + "type": "object" + }, + "prometheus": { + "properties": { + "monitor": { + "properties": { + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "scrapeTimeout": { + "type": "string" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + }, + "podMonitor": { + "properties": { + "enabled": { + "type": "boolean" + }, + "jobLabel": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "rbac": { + "properties": { + "pspEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "releaseLabel": { + "type": "boolean" + }, + "service": { + "properties": { + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": { + "jobLabel": { + "type": "string" + } + }, + "type": "object" + }, + "portName": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheus-windows-exporter": { + "properties": { + "config": { + "type": "string" + }, + "podLabels": { + "properties": { + "jobLabel": { + "type": "string" + } + }, + "type": "object" + }, + "prometheus": { + "properties": { + "monitor": { + "properties": { + "enabled": { + "type": "boolean" + }, + "jobLabel": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "releaseLabel": { + "type": "boolean" + } + }, + "type": "object" + }, + "prometheusOperator": { + "properties": { + "admissionWebhooks": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "caBundle": { + "type": "string" + }, + "certManager": { + "properties": { + "admissionCert": { + "properties": { + "duration": { + "type": "string" + }, + "revisionHistoryLimit": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "rootCert": { + "properties": { + "duration": { + "type": "string" + }, + "revisionHistoryLimit": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "createSecretJob": { + "properties": {}, + "type": "object" + }, + "deployment": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hostNetwork": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "minAvailable": { + "type": "number" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "promqlOptions": { + "type": "array" + }, + "readinessProbe": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "service": { + "properties": { + "additionalPorts": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "externalIPs": { + "type": "array" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "nodePortTls": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "strategy": { + "properties": {}, + "type": "object" + }, + "tls": { + "properties": { + "enabled": { + "type": "boolean" + }, + "internalPort": { + "type": "number" + }, + "tlsMinVersion": { + "type": "string" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "failurePolicy": { + "type": "string" + }, + "matchConditions": { + "properties": {}, + "type": "object" + }, + "mutatingWebhookConfiguration": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "namespaceSelector": { + "properties": {}, + "type": "object" + }, + "objectSelector": { + "properties": {}, + "type": "object" + }, + "patch": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "ttlSecondsAfterFinished": { + "type": "number" + } + }, + "type": "object" + }, + "patchWebhookJob": { + "properties": {}, + "type": "object" + }, + "timeoutSeconds": { + "type": "number" + }, + "validatingWebhookConfiguration": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "alertmanagerConfigNamespaces": { + "type": "array" + }, + "alertmanagerInstanceNamespaces": { + "type": "array" + }, + "alertmanagerInstanceSelector": { + "type": "string" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "denyNamespaces": { + "type": "array" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "properties": { + "GOGC": { + "type": "string" + } + }, + "type": "object" + }, + "extraArgs": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "featureGates": { + "properties": {}, + "type": "object" + }, + "fullnameOverride": { + "type": "string" + }, + "hostNetwork": { + "type": "boolean" + }, + "hostUsers": { + "type": "string" + }, + "kubeletEndpointSliceEnabled": { + "type": "boolean" + }, + "kubeletEndpointsEnabled": { + "type": "boolean" + }, + "kubeletService": { + "properties": { + "enabled": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "selector": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "namespaces": { + "properties": {}, + "type": "object" + }, + "networkPolicy": { + "properties": { + "enabled": { + "type": "boolean" + }, + "flavor": { + "type": "string" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "minAvailable": { + "type": "number" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "prometheusConfigReloader": { + "properties": { + "enableProbe": { + "type": "boolean" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheusInstanceNamespaces": { + "type": "array" + }, + "prometheusInstanceSelector": { + "type": "string" + }, + "readinessProbe": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "secretFieldSelector": { + "type": "string" + }, + "service": { + "properties": { + "additionalPorts": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "externalIPs": { + "type": "array" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "nodePortTls": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "interval": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "scrapeTimeout": { + "type": "string" + }, + "selfMonitor": { + "type": "boolean" + }, + "targetLimit": { + "type": "number" + } + }, + "type": "object" + }, + "strategy": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "thanosRulerInstanceNamespaces": { + "type": "array" + }, + "thanosRulerInstanceSelector": { + "type": "string" + }, + "tls": { + "properties": { + "enabled": { + "type": "boolean" + }, + "internalPort": { + "type": "number" + }, + "tlsMinVersion": { + "type": "string" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "verticalPodAutoscaler": { + "properties": { + "controlledResources": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxAllowed": { + "properties": {}, + "type": "object" + }, + "minAllowed": { + "properties": {}, + "type": "object" + }, + "updatePolicy": { + "properties": { + "updateMode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "thanosRuler": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraSecret": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "data": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "type": "array" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "paths": { + "type": "array" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "minAvailable": { + "type": "number" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostnames": { + "type": "array" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "sessionPersistence": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "additionalPorts": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "externalIPs": { + "type": "array" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "loadBalancerSourceRanges": { + "type": "array" + }, + "nodePort": { + "type": "number" + }, + "port": { + "type": "number" + }, + "targetPort": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalEndpoints": { + "type": "array" + }, + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "bearerTokenFile": { + "type": "string" + }, + "interval": { + "type": "string" + }, + "labelLimit": { + "type": "number" + }, + "labelNameLengthLimit": { + "type": "number" + }, + "labelValueLengthLimit": { + "type": "number" + }, + "metricRelabelings": { + "type": "array" + }, + "proxyUrl": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "sampleLimit": { + "type": "number" + }, + "scheme": { + "type": "string" + }, + "selfMonitor": { + "type": "boolean" + }, + "targetLimit": { + "type": "number" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "thanosRulerSpec": { + "properties": { + "additionalArgs": { + "type": "array" + }, + "additionalConfig": { + "properties": {}, + "type": "object" + }, + "additionalConfigString": { + "type": "string" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "alertDropLabels": { + "type": "array" + }, + "alertRelabelConfigFile": { + "type": "string" + }, + "alertRelabelConfigs": { + "properties": { + "existingSecret": { + "properties": {}, + "type": "object" + }, + "secret": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "alertmanagersConfig": { + "properties": { + "existingSecret": { + "properties": {}, + "type": "object" + }, + "secret": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "containers": { + "type": "array" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "enableFeatures": { + "type": "array" + }, + "enableServiceLinks": { + "type": "string" + }, + "enforcedNamespaceLabel": { + "type": "string" + }, + "evaluationInterval": { + "type": "string" + }, + "excludedFromEnforcement": { + "type": "array" + }, + "externalPrefix": { + "type": "string" + }, + "externalPrefixNilUsesHelmValues": { + "type": "boolean" + }, + "extraEnv": { + "type": "array" + }, + "grpcServerTlsConfig": { + "properties": {}, + "type": "object" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "imagePullPolicy": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "listenLocal": { + "type": "boolean" + }, + "logFormat": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "minReadySeconds": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "objectStorageConfig": { + "properties": { + "existingSecret": { + "properties": {}, + "type": "object" + }, + "secret": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "objectStorageConfigFile": { + "type": "string" + }, + "paused": { + "type": "boolean" + }, + "podAntiAffinity": { + "type": "string" + }, + "podAntiAffinityTopologyKey": { + "type": "string" + }, + "podManagementPolicy": { + "type": "string" + }, + "podMetadata": { + "properties": {}, + "type": "object" + }, + "portName": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "queryConfig": { + "properties": { + "existingSecret": { + "properties": {}, + "type": "object" + }, + "secret": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "queryEndpoints": { + "type": "array" + }, + "remoteWrite": { + "type": "array" + }, + "replicas": { + "type": "number" + }, + "resendDelay": { + "type": "string" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "retention": { + "type": "string" + }, + "routePrefix": { + "type": "string" + }, + "ruleConcurrentEval": { + "type": "string" + }, + "ruleGracePeriod": { + "type": "string" + }, + "ruleNamespaceSelector": { + "properties": {}, + "type": "object" + }, + "ruleOutageTolerance": { + "type": "string" + }, + "ruleQueryOffset": { + "type": "string" + }, + "ruleSelector": { + "properties": {}, + "type": "object" + }, + "ruleSelectorNilUsesHelmValues": { + "type": "boolean" + }, + "serviceName": { + "type": "string" + }, + "storage": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "string" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "tracingConfig": { + "properties": { + "existingSecret": { + "properties": {}, + "type": "object" + }, + "secret": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "tracingConfigFile": { + "type": "string" + }, + "updateStrategy": { + "properties": {}, + "type": "object" + }, + "version": { + "type": "string" + }, + "volumeMounts": { + "type": "array" + }, + "volumes": { + "type": "array" + }, + "web": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "windowsMonitoring": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-prometheus-config": { + "properties": { + "additionalNetworkAllow": { + "type": "array" + }, + "rke2CorednsNetpol": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "udsCoreDefaultAlerts": { + "properties": { + "enabled": { + "type": "boolean" + }, + "probeEndpointDown": { + "properties": { + "enabled": { + "type": "boolean" + }, + "for": { + "type": "string" + }, + "severity": { + "type": "string" + } + }, + "type": "object" + }, + "probeTLSExpiryCritical": { + "properties": { + "days": { + "type": "number" + }, + "enabled": { + "type": "boolean" + }, + "for": { + "type": "string" + }, + "severity": { + "type": "string" + } + }, + "type": "object" + }, + "probeTLSExpiryWarning": { + "properties": { + "days": { + "type": "number" + }, + "enabled": { + "type": "boolean" + }, + "for": { + "type": "string" + }, + "severity": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "loki": { + "properties": { + "loki": { + "properties": { + "backend": { + "properties": { + "affinity": { + "type": "string" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "fullnameOverride": { + "type": "string" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "dataVolumeParameters": { + "properties": { + "emptyDir": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "selector": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + }, + "volumeClaimsEnabled": { + "type": "boolean" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "selectorLabels": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "sidecar": { + "type": "boolean" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "bloomBuilder": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "enabled": { + "type": "boolean" + }, + "scaleDown": { + "properties": {}, + "type": "object" + }, + "scaleUp": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customMetrics": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "selector": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "type": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "bloomGateway": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "claims": { + "items": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "bloomPlanner": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "claims": { + "items": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "chunksCache": { + "properties": { + "addresses": { + "type": "string" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "allocatedCPU": { + "type": "string" + }, + "allocatedMemory": { + "type": "number" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "batchSize": { + "type": "number" + }, + "connectionLimit": { + "type": "number" + }, + "defaultValidity": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "properties": {}, + "type": "object" + }, + "extraContainers": { + "type": "array" + }, + "extraExtendedOptions": { + "type": "string" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "l2": { + "properties": { + "addresses": { + "type": "string" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "allocatedCPU": { + "type": "string" + }, + "allocatedMemory": { + "type": "number" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "batchSize": { + "type": "number" + }, + "connectionLimit": { + "type": "number" + }, + "defaultValidity": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "properties": {}, + "type": "object" + }, + "extraContainers": { + "type": "array" + }, + "extraExtendedOptions": { + "type": "string" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "l2ChunkCacheHandoff": { + "type": "string" + }, + "maxItemMemory": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "parallelism": { + "type": "number" + }, + "persistence": { + "properties": { + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "mountPath": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "storageSize": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "port": { + "type": "number" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "statefulStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "suffix": { + "type": "string" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "timeout": { + "type": "string" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "writebackBuffer": { + "type": "number" + }, + "writebackParallelism": { + "type": "number" + }, + "writebackSizeLimit": { + "type": "string" + } + }, + "type": "object" + }, + "maxItemMemory": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "parallelism": { + "type": "number" + }, + "persistence": { + "properties": { + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "mountPath": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "storageSize": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "port": { + "type": "number" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "statefulStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "suffix": { + "type": "string" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "timeout": { + "type": "string" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "writebackBuffer": { + "type": "number" + }, + "writebackParallelism": { + "type": "number" + }, + "writebackSizeLimit": { + "type": "string" + } + }, + "type": "object" + }, + "clusterLabelOverride": { + "type": "string" + }, + "commonLabels": { + "properties": {}, + "type": "object" + }, + "compactor": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "claims": { + "items": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "dataVolumeParameters": { + "properties": { + "emptyDir": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "selector": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "type": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "defaults": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enableServiceLinks": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "goSettings": { + "properties": { + "goMemLimitFactor": { + "type": "number" + }, + "gogc": { + "type": "number" + } + }, + "type": "object" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "kedaAutoscaling": { + "properties": { + "authentication": { + "properties": { + "authModes": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "secretTargetRef": { + "type": "array" + } + }, + "type": "object" + }, + "cooldownPeriod": { + "type": "number" + }, + "customHeaders": { + "type": "string" + }, + "ignoreNullValues": { + "type": "boolean" + }, + "pollingInterval": { + "type": "number" + }, + "prometheusAddress": { + "type": "string" + }, + "unsafeSsl": { + "type": "boolean" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "patchPVC": { + "type": "boolean" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "distributor": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "enabled": { + "type": "boolean" + }, + "scaleDown": { + "properties": {}, + "type": "object" + }, + "scaleUp": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customMetrics": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "shutdownDelay": { + "type": "string" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "enterprise": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "extraObjects": { + "type": "string" + }, + "fullnameOverride": { + "type": "string" + }, + "gateway": { + "properties": { + "affinity": { + "type": "string" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "basicAuth": { + "properties": { + "enabled": { + "type": "boolean" + }, + "existingSecret": { + "type": "string" + }, + "htpasswd": { + "type": "string" + }, + "password": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "containerPort": { + "type": "number" + }, + "deploymentStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "items": { + "properties": { + "host": { + "type": "string" + }, + "paths": { + "items": { + "properties": { + "path": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "tls": { + "items": { + "properties": { + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "secretName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "metrics": { + "properties": { + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": { + "limits": { + "properties": {}, + "type": "object" + }, + "requests": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "nginxConfig": { + "properties": { + "clientMaxBodySize": { + "type": "string" + }, + "customBackendUrl": { + "type": "string" + }, + "customReadUrl": { + "type": "string" + }, + "customWriteUrl": { + "type": "string" + }, + "enableIPv6": { + "type": "boolean" + }, + "file": { + "type": "string" + }, + "httpSnippet": { + "type": "string" + }, + "locationSnippet": { + "type": "string" + }, + "logFormat": { + "type": "string" + }, + "resolver": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "serverSnippet": { + "type": "string" + }, + "ssl": { + "type": "boolean" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostnames": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "parentRefs": { + "type": "array" + }, + "timeouts": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "clusterIP": { + "type": "string" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": { + "prometheus.io/service-monitor": { + "type": "string" + } + }, + "type": "object" + }, + "loadBalancerIP": { + "type": "string" + }, + "nodePort": { + "type": "string" + }, + "port": { + "type": "number" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "verboseLogging": { + "type": "boolean" + } + }, + "type": "object" + }, + "global": { + "properties": { + "clusterDomain": { + "type": "string" + }, + "dnsNamespace": { + "type": "string" + }, + "dnsService": { + "type": "string" + }, + "extraArgs": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "priorityClassName": { + "type": "string" + } + }, + "type": "object" + }, + "ignoreMinioDeprecation": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "indexGateway": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "joinMemberlist": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "dataVolumeParameters": { + "properties": { + "emptyDir": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "ingester": { + "properties": { + "addIngesterNamePrefix": { + "type": "boolean" + }, + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "enabled": { + "type": "boolean" + }, + "scaleDown": { + "properties": {}, + "type": "object" + }, + "scaleUp": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customMetrics": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "claims": { + "items": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "inMemory": { + "type": "boolean" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "rolloutGroupPrefix": { + "type": "string" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "maxSkew": { + "type": "number" + }, + "topologyKey": { + "type": "string" + }, + "whenUnsatisfiable": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficDistribution": { + "type": "string" + }, + "updateStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "zoneAwareReplication": { + "properties": { + "enabled": { + "type": "boolean" + }, + "maxUnavailablePct": { + "type": "number" + }, + "migration": { + "properties": { + "enabled": { + "type": "boolean" + }, + "excludeDefaultZone": { + "type": "boolean" + }, + "readPath": { + "type": "boolean" + }, + "writePath": { + "type": "boolean" + } + }, + "type": "object" + }, + "zoneA": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "extraAffinity": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "type": "string" + }, + "persistence": { + "properties": { + "storageClass": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "zoneB": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "extraAffinity": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "type": "string" + }, + "persistence": { + "properties": { + "storageClass": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "zoneC": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "extraAffinity": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "type": "string" + }, + "persistence": { + "properties": { + "storageClass": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ingressClassName": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "paths": { + "properties": { + "compactor": { + "items": { + "type": "string" + }, + "type": "array" + }, + "distributor": { + "items": { + "type": "string" + }, + "type": "array" + }, + "queryFrontend": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ruler": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "kubeVersionOverride": { + "type": "string" + }, + "loki": { + "properties": { + "analytics": { + "properties": { + "reporting_enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "block_builder": { + "properties": {}, + "type": "object" + }, + "bloom_build": { + "properties": { + "builder": { + "properties": { + "planner_address": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "bloom_gateway": { + "properties": { + "client": { + "properties": { + "addresses": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "commonConfig": { + "properties": { + "compactor_grpc_address": { + "type": "string" + }, + "path_prefix": { + "type": "string" + }, + "replication_factor": { + "type": "number" + } + }, + "type": "object" + }, + "compactor": { + "properties": {}, + "type": "object" + }, + "compactor_grpc_client": { + "properties": {}, + "type": "object" + }, + "config": { + "type": "string" + }, + "configObjectName": { + "type": "string" + }, + "configStorageType": { + "type": "string" + }, + "distributor": { + "properties": {}, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enableServiceLinks": { + "type": "boolean" + }, + "extraMemberlistConfig": { + "properties": { + "abort_if_cluster_join_fails": { + "type": "boolean" + }, + "advertise_port": { + "type": "number" + }, + "bind_port": { + "type": "number" + }, + "max_join_backoff": { + "type": "string" + }, + "max_join_retries": { + "type": "number" + }, + "min_join_backoff": { + "type": "string" + }, + "rejoin_interval": { + "type": "string" + } + }, + "type": "object" + }, + "frontend": { + "properties": { + "scheduler_address": { + "type": "string" + }, + "tail_proxy_url": { + "type": "string" + } + }, + "type": "object" + }, + "frontend_worker": { + "properties": { + "scheduler_address": { + "type": "string" + } + }, + "type": "object" + }, + "generatedConfigObjectName": { + "type": "string" + }, + "index_gateway": { + "properties": { + "mode": { + "type": "string" + } + }, + "type": "object" + }, + "ingester": { + "properties": { + "wal": { + "properties": { + "flush_on_shutdown": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ingester_client": { + "properties": {}, + "type": "object" + }, + "limits_config": { + "properties": { + "allow_structured_metadata": { + "type": "boolean" + }, + "max_cache_freshness_per_query": { + "type": "string" + }, + "query_timeout": { + "type": "string" + }, + "reject_old_samples": { + "type": "boolean" + }, + "reject_old_samples_max_age": { + "type": "string" + }, + "split_queries_by_interval": { + "type": "string" + }, + "volume_enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "memberlistConfig": { + "properties": {}, + "type": "object" + }, + "operational_config": { + "properties": {}, + "type": "object" + }, + "pattern_ingester": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "querier": { + "properties": {}, + "type": "object" + }, + "query_range": { + "properties": {}, + "type": "object" + }, + "query_scheduler": { + "properties": { + "max_outstanding_requests_per_tenant": { + "type": "number" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "rulerConfig": { + "properties": { + "alertmanager_url": { + "type": "string" + }, + "enable_alertmanager_v2": { + "type": "boolean" + }, + "enable_api": { + "type": "boolean" + }, + "enable_sharding": { + "type": "boolean" + }, + "remote_write": { + "properties": { + "clients": { + "properties": { + "prometheus": { + "properties": { + "url": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "rule_path": { + "type": "string" + }, + "storage": { + "properties": { + "local": { + "properties": { + "directory": { + "type": "string" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "wal": { + "properties": { + "dir": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "runtimeConfig": { + "properties": {}, + "type": "object" + }, + "schemaConfig": { + "properties": { + "configs": { + "items": { + "properties": { + "from": { + "type": "string" + }, + "index": { + "properties": { + "period": { + "type": "string" + }, + "prefix": { + "type": "string" + } + }, + "type": "object" + }, + "object_store": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "store": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "server": { + "properties": { + "graceful_shutdown_timeout": { + "type": "string" + }, + "grpc_listen_port": { + "type": "number" + }, + "grpc_server_max_concurrent_streams": { + "type": "number" + }, + "grpc_server_max_recv_msg_size": { + "type": "number" + }, + "grpc_server_max_send_msg_size": { + "type": "number" + }, + "grpc_server_min_time_between_pings": { + "type": "string" + }, + "grpc_server_ping_without_stream_allowed": { + "type": "boolean" + }, + "http_listen_port": { + "type": "number" + }, + "http_server_idle_timeout": { + "type": "string" + }, + "http_server_read_timeout": { + "type": "string" + }, + "http_server_write_timeout": { + "type": "string" + }, + "log_level": { + "type": "string" + } + }, + "type": "object" + }, + "service": { + "properties": { + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "storage": { + "properties": { + "azure": { + "properties": { + "accountKey": { + "type": "string" + }, + "accountName": { + "type": "string" + }, + "chunkDelimiter": { + "type": "string" + }, + "connectionString": { + "type": "string" + }, + "endpointSuffix": { + "type": "string" + }, + "requestTimeout": { + "type": "string" + }, + "useFederatedToken": { + "type": "boolean" + }, + "useManagedIdentity": { + "type": "boolean" + }, + "userAssignedId": { + "type": "string" + } + }, + "type": "object" + }, + "bucketNames": { + "properties": { + "admin": { + "type": "string" + }, + "chunks": { + "type": "string" + } + }, + "type": "object" + }, + "filesystem": { + "properties": { + "chunks_directory": { + "type": "string" + }, + "rules_directory": { + "type": "string" + } + }, + "type": "object" + }, + "gcs": { + "properties": { + "chunkBufferSize": { + "type": "number" + }, + "enableHttp2": { + "type": "boolean" + }, + "requestTimeout": { + "type": "string" + } + }, + "type": "object" + }, + "object_store": { + "properties": { + "azure": { + "properties": { + "account_key": { + "type": "string" + }, + "account_name": { + "type": "string" + } + }, + "type": "object" + }, + "gcs": { + "properties": { + "bucket_name": { + "type": "string" + }, + "service_account": { + "type": "string" + } + }, + "type": "object" + }, + "s3": { + "properties": { + "access_key_id": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "http": { + "properties": {}, + "type": "object" + }, + "insecure": { + "type": "boolean" + }, + "region": { + "type": "string" + }, + "secret_access_key": { + "type": "string" + }, + "sse": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "storage_prefix": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "s3": { + "properties": { + "accessKeyId": { + "type": "string" + }, + "backoff_config": { + "properties": {}, + "type": "object" + }, + "disable_dualstack": { + "type": "boolean" + }, + "endpoint": { + "type": "string" + }, + "http_config": { + "properties": {}, + "type": "object" + }, + "insecure": { + "type": "boolean" + }, + "region": { + "type": "string" + }, + "s3": { + "type": "string" + }, + "s3ForcePathStyle": { + "type": "boolean" + }, + "secretAccessKey": { + "type": "string" + }, + "signatureVersion": { + "type": "string" + } + }, + "type": "object" + }, + "swift": { + "properties": { + "auth_url": { + "type": "string" + }, + "auth_version": { + "type": "string" + }, + "connect_timeout": { + "type": "string" + }, + "container_name": { + "type": "string" + }, + "domain_id": { + "type": "string" + }, + "domain_name": { + "type": "string" + }, + "internal": { + "type": "string" + }, + "max_retries": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_domain_id": { + "type": "string" + }, + "project_domain_name": { + "type": "string" + }, + "project_id": { + "type": "string" + }, + "project_name": { + "type": "string" + }, + "region_name": { + "type": "string" + }, + "request_timeout": { + "type": "string" + }, + "user_domain_id": { + "type": "string" + }, + "user_domain_name": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "type": { + "type": "string" + }, + "use_thanos_objstore": { + "type": "boolean" + } + }, + "type": "object" + }, + "storage_config": { + "properties": { + "bloom_shipper": { + "properties": { + "working_directory": { + "type": "string" + } + }, + "type": "object" + }, + "boltdb_shipper": { + "properties": { + "active_index_directory": { + "type": "string" + }, + "cache_location": { + "type": "string" + }, + "cache_ttl": { + "type": "string" + }, + "index_gateway_client": { + "properties": { + "server_address": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "hedging": { + "properties": { + "at": { + "type": "string" + }, + "max_per_second": { + "type": "number" + }, + "up_to": { + "type": "number" + } + }, + "type": "object" + }, + "tsdb_shipper": { + "properties": { + "active_index_directory": { + "type": "string" + }, + "cache_location": { + "type": "string" + }, + "cache_ttl": { + "type": "string" + }, + "index_gateway_client": { + "properties": { + "server_address": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "structuredConfig": { + "properties": {}, + "type": "object" + }, + "tenants": { + "type": "array" + }, + "testSchemaConfig": { + "properties": { + "configs": { + "items": { + "properties": { + "from": { + "type": "string" + }, + "index": { + "properties": { + "period": { + "type": "string" + }, + "prefix": { + "type": "string" + } + }, + "type": "object" + }, + "object_store": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "store": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "tracing": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "ui": { + "properties": { + "enabled": { + "type": "boolean" + }, + "gateway": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "useTestSchema": { + "type": "boolean" + } + }, + "type": "object" + }, + "lokiCanary": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "labelname": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "lokiurl": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "push": { + "type": "boolean" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "tenant": { + "properties": { + "name": { + "type": "string" + }, + "password": { + "type": "string" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "updateStrategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "memberlist": { + "properties": { + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "publishNotReadyAddresses": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "memcached": { + "properties": { + "enabled": { + "type": "boolean" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "tcpSocket": { + "properties": { + "port": { + "type": "string" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "tcpSocket": { + "properties": { + "port": { + "type": "string" + } + }, + "type": "object" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "memcachedExporter": { + "properties": { + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": { + "limits": { + "properties": {}, + "type": "object" + }, + "requests": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "migrate": { + "properties": { + "fromDistributed": { + "properties": { + "enabled": { + "type": "boolean" + }, + "memberlistService": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "monitoring": { + "properties": { + "additionalPrometheusRules": { + "properties": {}, + "type": "object" + }, + "alerts": { + "properties": { + "additionalAggregationLabels": { + "type": "array" + }, + "additionalRuleAnnotations": { + "properties": {}, + "type": "object" + }, + "additionalRuleLabels": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "disabled": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "keepFiringFor": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "overrides": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "appInstanceLabelName": { + "type": "string" + }, + "appInstanceLabelValue": { + "type": "string" + }, + "dashboards": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "defaultDashboardsEditable": { + "type": "boolean" + }, + "defaultDashboardsInterval": { + "type": "string" + }, + "defaultDashboardsTimezone": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "grafanaOperator": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "folder": { + "type": "string" + }, + "folderRef": { + "type": "string" + }, + "folderUID": { + "type": "string" + }, + "instanceSelector": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "resyncPeriod": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": { + "grafana_dashboard": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "multiCluster": { + "properties": { + "clusterName": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "namespace": { + "type": "string" + }, + "rules": { + "properties": { + "additionalAggregationLabels": { + "type": "array" + }, + "additionalRuleAnnotations": { + "properties": {}, + "type": "object" + }, + "additionalRuleLabels": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobPrefix": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "metricRelabelings": { + "type": "array" + }, + "namespaceSelector": { + "properties": {}, + "type": "object" + }, + "relabelings": { + "type": "array" + }, + "scheme": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "tlsConfig": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "nameOverride": { + "type": "string" + }, + "namespaceOverride": { + "type": "string" + }, + "networkPolicy": { + "properties": { + "alertmanager": { + "properties": { + "namespaceSelector": { + "properties": {}, + "type": "object" + }, + "podSelector": { + "properties": {}, + "type": "object" + }, + "port": { + "type": "number" + } + }, + "type": "object" + }, + "discovery": { + "properties": { + "namespaceSelector": { + "properties": {}, + "type": "object" + }, + "podSelector": { + "properties": {}, + "type": "object" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "externalStorage": { + "properties": { + "cidrs": { + "type": "array" + }, + "ports": { + "type": "array" + } + }, + "type": "object" + }, + "ingress": { + "properties": { + "namespaceSelector": { + "properties": {}, + "type": "object" + }, + "podSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "metrics": { + "properties": { + "cidrs": { + "type": "array" + }, + "namespaceSelector": { + "properties": {}, + "type": "object" + }, + "podSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "overridesExporter": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "patternIngester": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "claims": { + "items": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "querier": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "enabled": { + "type": "boolean" + }, + "scaleDown": { + "properties": {}, + "type": "object" + }, + "scaleUp": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customMetrics": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "items": { + "properties": { + "metadata": { + "properties": { + "authModes": { + "type": "string" + }, + "customHeaders": { + "type": "string" + }, + "ignoreNullValues": { + "type": "string" + }, + "query": { + "type": "string" + }, + "serverAddress": { + "type": "string" + }, + "threshold": { + "type": "string" + }, + "unsafeSsl": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "maxSkew": { + "type": "number" + }, + "topologyKey": { + "type": "string" + }, + "whenUnsatisfiable": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "queryFrontend": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "enabled": { + "type": "boolean" + }, + "scaleDown": { + "properties": {}, + "type": "object" + }, + "scaleUp": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customMetrics": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "loadBalancer": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "queryScheduler": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "serviceType": { + "type": "string" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "trafficDistribution": { + "type": "string" + } + }, + "type": "object" + }, + "rbac": { + "properties": { + "namespaced": { + "type": "boolean" + }, + "pspEnabled": { + "type": "boolean" + }, + "sccAllowHostDirVolumePlugin": { + "type": "boolean" + }, + "sccEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "read": { + "properties": { + "affinity": { + "type": "string" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "fullnameOverride": { + "type": "string" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "selectorLabels": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "resultsCache": { + "properties": { + "addresses": { + "type": "string" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "allocatedCPU": { + "type": "string" + }, + "allocatedMemory": { + "type": "number" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "connectionLimit": { + "type": "number" + }, + "defaultValidity": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "properties": {}, + "type": "object" + }, + "extraContainers": { + "type": "array" + }, + "extraExtendedOptions": { + "type": "string" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "maxItemMemory": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "mountPath": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "storageSize": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "port": { + "type": "number" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "statefulStrategy": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "timeout": { + "type": "string" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "writebackBuffer": { + "type": "number" + }, + "writebackParallelism": { + "type": "number" + }, + "writebackSizeLimit": { + "type": "string" + } + }, + "type": "object" + }, + "rollout_operator": { + "properties": { + "enabled": { + "type": "boolean" + }, + "webhooks": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failurePolicy": { + "type": "string" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "backendPort": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "hostnames": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "parentRefs": { + "type": "array" + }, + "paths": { + "properties": { + "compactor": { + "items": { + "type": "string" + }, + "type": "array" + }, + "distributor": { + "items": { + "type": "string" + }, + "type": "array" + }, + "queryFrontend": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ruler": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ruler": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "string" + }, + "directories": { + "properties": {}, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceLabels": { + "properties": {}, + "type": "object" + }, + "sidecar": { + "type": "boolean" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "sidecar": { + "properties": { + "disableX509StrictVerification": { + "type": "boolean" + }, + "enableUniqueFilenames": { + "type": "boolean" + }, + "livenessProbe": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "enabled": { + "type": "boolean" + }, + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "rules": { + "properties": { + "enabled": { + "type": "boolean" + }, + "folder": { + "type": "string" + }, + "folderAnnotation": { + "type": "string" + }, + "healthPort": { + "type": "number" + }, + "label": { + "type": "string" + }, + "labelValue": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "script": { + "type": "string" + }, + "searchNamespace": { + "type": "string" + }, + "watchClientTimeout": { + "type": "number" + }, + "watchMethod": { + "type": "string" + }, + "watchServerTimeout": { + "type": "number" + } + }, + "type": "object" + }, + "skipTlsVerify": { + "type": "boolean" + }, + "startupProbe": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "singleBinary": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "enabled": { + "type": "boolean" + }, + "scaleDown": { + "properties": {}, + "type": "object" + }, + "scaleUp": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "customMetrics": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "dataVolumeParameters": { + "properties": {}, + "type": "object" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "selector": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "whenDeleted": { + "type": "string" + }, + "whenScaled": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "selectorLabels": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "sidecar": { + "type": "boolean" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "targetModule": { + "type": "string" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + }, + "tableManager": { + "properties": { + "affinity": { + "properties": { + "podAntiAffinity": { + "properties": { + "requiredDuringSchedulingIgnoredDuringExecution": { + "items": { + "properties": { + "labelSelector": { + "properties": { + "matchLabels": { + "properties": { + "app.kubernetes.io/component": { + "type": "string" + }, + "app.kubernetes.io/instance": { + "type": "string" + }, + "app.kubernetes.io/name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "topologyKey": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "command": { + "type": "string" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostUsers": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "retention_deletes_enabled": { + "type": "boolean" + }, + "retention_period": { + "type": "number" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "test": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "canaryServiceAddress": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "hostUsers": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "prometheusAddress": { + "type": "string" + }, + "timeout": { + "type": "string" + } + }, + "type": "object" + }, + "write": { + "properties": { + "affinity": { + "type": "string" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "autoscaling": { + "properties": { + "behavior": { + "properties": { + "scaleDown": { + "properties": { + "policies": { + "items": { + "properties": { + "periodSeconds": { + "type": "number" + }, + "type": { + "type": "string" + }, + "value": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + }, + "stabilizationWindowSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "scaleUp": { + "properties": { + "policies": { + "items": { + "properties": { + "periodSeconds": { + "type": "number" + }, + "type": { + "type": "string" + }, + "value": { + "type": "number" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraVolumeClaimTemplates": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "fullnameOverride": { + "type": "string" + }, + "hostUsers": { + "type": "string" + }, + "initContainers": { + "type": "array" + }, + "kedaAutoscaling": { + "properties": { + "behavior": { + "properties": {}, + "type": "object" + }, + "cooldownPeriod": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "fallback": { + "properties": {}, + "type": "object" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "pollingInterval": { + "type": "string" + }, + "triggers": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "number" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "dataVolumeParameters": { + "properties": { + "emptyDir": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "enableStatefulSetAutoDeletePVC": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "selector": { + "type": "string" + }, + "size": { + "type": "string" + }, + "storageClass": { + "type": "string" + }, + "volumeAttributesClassName": { + "type": "string" + }, + "volumeClaimsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "replicas": { + "type": "number" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "selectorLabels": { + "properties": {}, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "appProtocol": { + "properties": { + "grpc": { + "type": "string" + } + }, + "type": "object" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "sessionAffinity": { + "type": "string" + }, + "sessionAffinityConfig": { + "properties": {}, + "type": "object" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "statefulSetRecreateJob": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "partition": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-loki-config": { + "properties": { + "additionalNetworkAllow": { + "type": "array" + }, + "dashboardAnnotations": { + "properties": {}, + "type": "object" + }, + "storage": { + "properties": { + "egressCidr": { + "type": "string" + }, + "internal": { + "properties": { + "enabled": { + "type": "boolean" + }, + "remoteNamespace": { + "type": "string" + }, + "remoteSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "metrics-server": { + "properties": { + "metrics-server": { + "properties": { + "addonResizer": { + "properties": { + "enabled": { + "type": "boolean" + }, + "nanny": { + "properties": { + "cpu": { + "type": "string" + }, + "extraCpu": { + "type": "string" + }, + "extraMemory": { + "type": "string" + }, + "memory": { + "type": "string" + }, + "minClusterSize": { + "type": "number" + }, + "pollPeriod": { + "type": "number" + }, + "threshold": { + "type": "number" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "affinity": { + "properties": {}, + "type": "object" + }, + "apiService": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "caBundle": { + "type": "string" + }, + "create": { + "type": "boolean" + }, + "insecureSkipTLSVerify": { + "type": "boolean" + } + }, + "type": "object" + }, + "args": { + "type": "array" + }, + "commonLabels": { + "properties": {}, + "type": "object" + }, + "containerPort": { + "type": "number" + }, + "defaultArgs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "deploymentAnnotations": { + "properties": {}, + "type": "object" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "fullnameOverride": { + "type": "string" + }, + "hostNetwork": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "imagePullSecrets": { + "type": "array" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "metrics": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "nameOverride": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "string" + }, + "unhealthyPodEvictionPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "rbac": { + "properties": { + "create": { + "type": "boolean" + }, + "pspEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": { + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "revisionHistoryLimit": { + "type": "string" + }, + "schedulerName": { + "type": "string" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "port": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "secrets": { + "type": "array" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "metricRelabelings": { + "type": "array" + }, + "relabelings": { + "type": "array" + }, + "scrapeTimeout": { + "type": "string" + } + }, + "type": "object" + }, + "tls": { + "properties": { + "certManager": { + "properties": { + "addInjectorAnnotations": { + "type": "boolean" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "duration": { + "type": "string" + }, + "existingIssuer": { + "properties": { + "enabled": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "renewBefore": { + "type": "string" + } + }, + "type": "object" + }, + "clusterDomain": { + "type": "string" + }, + "existingSecret": { + "properties": { + "lookup": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "helm": { + "properties": { + "certDurationDays": { + "type": "number" + }, + "lookup": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "tmpVolume": { + "properties": { + "emptyDir": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "updateStrategy": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "uds-metrics-server-config": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "pepr-uds-core": { + "properties": { + "module": { + "properties": { + "additionalIgnoredNamespaces": { + "items": { + "type": "string" + }, + "type": "array" + }, + "admission": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": { + "pepr.dev/description": { + "type": "string" + } + }, + "type": "object" + }, + "antiAffinity": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "envFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "projected": { + "properties": { + "sources": { + "items": { + "properties": { + "serviceAccountToken": { + "properties": { + "audience": { + "type": "string" + }, + "expirationSeconds": { + "type": "number" + }, + "path": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "failurePolicy": { + "type": "string" + }, + "labels": { + "properties": { + "app": { + "type": "string" + }, + "pepr.dev/controller": { + "type": "string" + }, + "pepr.dev/uuid": { + "type": "string" + } + }, + "type": "object" + }, + "livenessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "number" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "number" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "webhookLabels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "hash": { + "type": "string" + }, + "imagePullSecrets": { + "type": "array" + }, + "namespace": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labels": { + "properties": { + "pepr.dev": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "rbac": { + "items": { + "properties": { + "apiGroups": { + "items": { + "type": "string" + }, + "type": "array" + }, + "resources": { + "items": { + "type": "string" + }, + "type": "array" + }, + "verbs": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "secrets": { + "properties": { + "apiPath": { + "type": "string" + } + }, + "type": "object" + }, + "uuid": { + "type": "string" + }, + "watcher": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": { + "pepr.dev/description": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "env": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "envFrom": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "projected": { + "properties": { + "sources": { + "items": { + "properties": { + "serviceAccountToken": { + "properties": { + "audience": { + "type": "string" + }, + "expirationSeconds": { + "type": "number" + }, + "path": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "labels": { + "properties": { + "app": { + "type": "string" + }, + "pepr.dev/controller": { + "type": "string" + }, + "pepr.dev/uuid": { + "type": "string" + } + }, + "type": "object" + }, + "livenessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "number" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "number" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheus-blackbox-exporter": { + "properties": { + "prometheus-blackbox-exporter": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "commonLabels": { + "properties": {}, + "type": "object" + }, + "config": { + "properties": { + "modules": { + "properties": { + "http_2xx": { + "properties": { + "http": { + "properties": { + "follow_redirects": { + "type": "boolean" + }, + "preferred_ip_protocol": { + "type": "string" + }, + "valid_http_versions": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "prober": { + "type": "string" + }, + "timeout": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "configExistingSecretName": { + "type": "string" + }, + "configReloader": { + "properties": { + "config": { + "properties": { + "logFormat": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "watchInterval": { + "type": "string" + } + }, + "type": "object" + }, + "containerPort": { + "type": "number" + }, + "enabled": { + "type": "boolean" + }, + "livenessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "port": { + "type": "number" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "selfMonitor": { + "properties": { + "additionalMetricsRelabels": { + "properties": {}, + "type": "object" + }, + "additionalRelabeling": { + "type": "array" + }, + "interval": { + "type": "string" + }, + "path": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "containerPort": { + "type": "number" + }, + "deploymentAnnotations": { + "properties": {}, + "type": "object" + }, + "dnsConfig": { + "type": "string" + }, + "dnsPolicy": { + "type": "string" + }, + "extraArgs": { + "type": "array" + }, + "extraConfigmapMounts": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraEnv": { + "type": "array" + }, + "extraEnvFrom": { + "type": "array" + }, + "extraInitContainers": { + "type": "array" + }, + "extraManifests": { + "type": "array" + }, + "extraSecretMounts": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "global": { + "properties": {}, + "type": "object" + }, + "hostAliases": { + "type": "array" + }, + "hostNetwork": { + "type": "boolean" + }, + "hostPort": { + "type": "number" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "className": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "items": { + "properties": { + "host": { + "type": "string" + }, + "paths": { + "items": { + "properties": { + "path": { + "type": "string" + }, + "pathType": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "kind": { + "type": "string" + }, + "kubeVersionOverride": { + "type": "string" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "namespaceOverride": { + "type": "string" + }, + "networkPolicy": { + "properties": { + "allowMonitoringNamespace": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "monitoringNamespaceName": { + "type": "string" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "pod": { + "properties": { + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": { + "ambient.istio.io/dns-capture": { + "type": "string" + } + }, + "type": "object" + }, + "podDisruptionBudget": { + "properties": {}, + "type": "object" + }, + "podMonitoring": { + "properties": { + "defaults": { + "properties": { + "additionalMetricsRelabels": { + "properties": {}, + "type": "object" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "module": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "path": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "selfMonitor": { + "properties": { + "additionalMetricsRelabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "path": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + } + }, + "type": "object" + }, + "targets": { + "type": "string" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "prometheusRule": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "namespace": { + "type": "string" + }, + "rules": { + "type": "array" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "releaseLabel": { + "type": "boolean" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "restartPolicy": { + "type": "string" + }, + "revisionHistoryLimit": { + "type": "number" + }, + "route": { + "properties": { + "main": { + "properties": { + "additionalRules": { + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "apiVersion": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "filters": { + "type": "array" + }, + "hostnames": { + "type": "array" + }, + "httpsRedirect": { + "type": "boolean" + }, + "kind": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "matches": { + "items": { + "properties": { + "path": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "parentRefs": { + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "secretAnnotations": { + "properties": {}, + "type": "object" + }, + "secretConfig": { + "type": "boolean" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "ipDualStack": { + "properties": { + "enabled": { + "type": "boolean" + }, + "ipFamilies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "port": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "bearerTokenFile": { + "type": "string" + }, + "defaults": { + "properties": { + "additionalMetricsRelabels": { + "properties": {}, + "type": "object" + }, + "additionalRelabeling": { + "type": "array" + }, + "honorTimestamps": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "module": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + } + }, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "path": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "selfMonitor": { + "properties": { + "additionalMetricsRelabels": { + "properties": {}, + "type": "object" + }, + "additionalRelabeling": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "path": { + "type": "string" + }, + "scheme": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "targets": { + "type": "string" + }, + "tlsConfig": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "strategy": { + "properties": { + "rollingUpdate": { + "properties": { + "maxSurge": { + "type": "number" + }, + "maxUnavailable": { + "type": "number" + } + }, + "type": "object" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "verticalPodAutoscaler": { + "properties": { + "controlledResources": { + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "maxAllowed": { + "properties": {}, + "type": "object" + }, + "minAllowed": { + "properties": {}, + "type": "object" + }, + "updatePolicy": { + "properties": { + "updateMode": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "prometheus-operator-crds": { + "properties": { + "prometheus-operator-crds": { + "properties": { + "crds": { + "properties": { + "alertmanagerconfigs": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "alertmanagers": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "podmonitors": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "probes": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "prometheusagents": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "prometheuses": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "prometheusrules": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "scrapeconfigs": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "servicemonitors": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "thanosrulers": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-exemptions": { + "properties": { + "uds-exemptions": { + "properties": { + "exemptions": { + "properties": { + "custom": { + "type": "array" + }, + "istioGatewayNodeport": { + "properties": { + "enabled": { + "type": "boolean" + }, + "gateways": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-operator-config": { + "properties": { + "uds-operator-config": { + "properties": { + "cluster": { + "properties": { + "attributes": { + "properties": { + "clusterName": { + "type": "string" + }, + "clusterTags": { + "type": "array" + } + }, + "type": "object" + }, + "caBundle": { + "properties": { + "certs": { + "type": "string" + }, + "includeDoDCerts": { + "type": "string" + }, + "includePublicCerts": { + "type": "string" + } + }, + "type": "object" + }, + "expose": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + } + }, + "type": "object" + }, + "networking": { + "properties": { + "kubeApiCIDR": { + "type": "string" + }, + "kubeNodeCIDRs": { + "type": "array" + } + }, + "type": "object" + }, + "policy": { + "properties": { + "allowAllNsExemptions": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "operator": { + "properties": { + "ALLOW_PUBLIC_CLIENTS": { + "type": "boolean" + }, + "AUTHSERVICE_REDIS_URI": { + "type": "string" + }, + "KEYCLOAK_CLIENT_MODE": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "uds-portal": { + "properties": { + "uds-portal": { + "properties": { + "adminApps": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "classificationBanner": { + "properties": { + "addFooter": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "text": { + "type": "string" + } + }, + "type": "object" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "package": { + "properties": { + "adminDomain": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "gateway": { + "type": "string" + }, + "host": { + "type": "string" + } + }, + "type": "object" + }, + "replicaCount": { + "type": "number" + }, + "resources": { + "properties": { + "limits": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + }, + "requests": { + "properties": { + "cpu": { + "type": "string" + }, + "memory": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sso": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "vector": { + "properties": { + "uds-vector-config": { + "properties": { + "additionalNetworkAllow": { + "type": "array" + } + }, + "type": "object" + }, + "vector": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "args": { + "items": { + "type": "string" + }, + "type": "array" + }, + "autoscaling": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "behavior": { + "properties": {}, + "type": "object" + }, + "customMetric": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "external": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "command": { + "type": "array" + }, + "commonLabels": { + "properties": {}, + "type": "object" + }, + "containerPorts": { + "type": "array" + }, + "customConfig": { + "properties": { + "acknowledgements": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "api": { + "properties": { + "address": { + "type": "string" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "data_dir": { + "type": "string" + }, + "sinks": { + "properties": { + "loki_host": { + "properties": { + "buffer": { + "properties": { + "max_size": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "encoding": { + "properties": { + "codec": { + "type": "string" + } + }, + "type": "object" + }, + "endpoint": { + "type": "string" + }, + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "labels": { + "properties": { + "collector": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "host": { + "type": "string" + }, + "job": { + "type": "string" + } + }, + "type": "object" + }, + "path": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "loki_pod": { + "properties": { + "buffer": { + "properties": { + "max_size": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "encoding": { + "properties": { + "codec": { + "type": "string" + } + }, + "type": "object" + }, + "endpoint": { + "type": "string" + }, + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "labels": { + "properties": { + "app": { + "type": "string" + }, + "collector": { + "type": "string" + }, + "component": { + "type": "string" + }, + "container": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "host": { + "type": "string" + }, + "job": { + "type": "string" + }, + "namespace": { + "type": "string" + } + }, + "type": "object" + }, + "path": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "prom_exporter": { + "properties": { + "address": { + "type": "string" + }, + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "sources": { + "properties": { + "internal_metrics": { + "properties": { + "type": { + "type": "string" + } + }, + "type": "object" + }, + "node_logs": { + "properties": { + "include": { + "items": { + "type": "string" + }, + "type": "array" + }, + "oldest_first": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "pod_logs": { + "properties": { + "oldest_first": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "transforms": { + "properties": { + "node_logs_labelled": { + "properties": { + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "pod_logs_labelled": { + "properties": { + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "daemonSet": { + "properties": { + "apiVersion": { + "type": "string" + } + }, + "type": "object" + }, + "dataDir": { + "type": "string" + }, + "defaultVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + } + }, + "type": "object" + }, + "type": "array" + }, + "defaultVolumes": { + "items": { + "properties": { + "hostPath": { + "properties": { + "path": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "env": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "valueFrom": { + "properties": { + "fieldRef": { + "properties": { + "fieldPath": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "type": "array" + }, + "envFrom": { + "type": "array" + }, + "existingConfigMaps": { + "type": "array" + }, + "extraContainers": { + "type": "array" + }, + "extraObjects": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fullnameOverride": { + "type": "string" + }, + "haproxy": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "autoscaling": { + "properties": { + "customMetric": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "external": { + "type": "boolean" + }, + "maxReplicas": { + "type": "number" + }, + "minReplicas": { + "type": "number" + }, + "targetCPUUtilizationPercentage": { + "type": "number" + }, + "targetMemoryUtilizationPercentage": { + "type": "string" + } + }, + "type": "object" + }, + "containerPorts": { + "type": "array" + }, + "customConfig": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "existingConfigMap": { + "type": "string" + }, + "extraContainers": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "initContainers": { + "type": "array" + }, + "livenessProbe": { + "properties": { + "tcpSocket": { + "properties": { + "port": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podPriorityClassName": { + "type": "string" + }, + "readinessProbe": { + "properties": { + "tcpSocket": { + "properties": { + "port": { + "type": "number" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "rollWorkload": { + "type": "boolean" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "loadBalancerIP": { + "type": "string" + }, + "ports": { + "type": "array" + }, + "topologyKeys": { + "type": "array" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "strategy": { + "properties": {}, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + } + }, + "type": "object" + }, + "hostAliases": { + "type": "array" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "className": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "hosts": { + "type": "array" + }, + "tls": { + "type": "array" + } + }, + "type": "object" + }, + "initContainers": { + "type": "array" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": {}, + "type": "object" + }, + "logLevel": { + "type": "string" + }, + "minReadySeconds": { + "type": "number" + }, + "nameOverride": { + "type": "string" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "persistence": { + "properties": { + "accessModes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "existingClaim": { + "type": "string" + }, + "finalizers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "hostPath": { + "properties": { + "enabled": { + "type": "boolean" + }, + "path": { + "type": "string" + } + }, + "type": "object" + }, + "retentionPolicy": { + "properties": {}, + "type": "object" + }, + "selectors": { + "properties": {}, + "type": "object" + }, + "size": { + "type": "string" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "enabled": { + "type": "boolean" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "number" + } + }, + "type": "object" + }, + "podHostNetwork": { + "type": "boolean" + }, + "podLabels": { + "properties": { + "vector.dev/exclude": { + "type": "string" + } + }, + "type": "object" + }, + "podManagementPolicy": { + "type": "string" + }, + "podMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "honorLabels": { + "type": "boolean" + }, + "honorTimestamps": { + "type": "boolean" + }, + "interval": { + "type": "string" + }, + "jobLabel": { + "type": "string" + }, + "metricRelabelings": { + "type": "array" + }, + "path": { + "type": "string" + }, + "podTargetLabels": { + "type": "array" + }, + "port": { + "type": "string" + }, + "relabelings": { + "type": "array" + }, + "scrapeTimeout": { + "type": "string" + } + }, + "type": "object" + }, + "podPriorityClassName": { + "type": "string" + }, + "psp": { + "properties": { + "create": { + "type": "boolean" + } + }, + "type": "object" + }, + "rbac": { + "properties": { + "create": { + "type": "boolean" + }, + "extraRules": { + "type": "array" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": {}, + "type": "object" + }, + "replicas": { + "type": "number" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "role": { + "type": "string" + }, + "rollWorkload": { + "type": "boolean" + }, + "rollWorkloadExtraObjects": { + "type": "boolean" + }, + "rollWorkloadSecrets": { + "type": "boolean" + }, + "secrets": { + "properties": { + "generic": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "internalTrafficPolicy": { + "type": "string" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "loadBalancerIP": { + "type": "string" + }, + "ports": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "port": { + "type": "number" + }, + "protocol": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "topologyKeys": { + "type": "array" + }, + "trafficDistribution": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "automountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "serviceHeadless": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "shareProcessNamespace": { + "type": "boolean" + }, + "startupProbe": { + "properties": {}, + "type": "object" + }, + "statefulSet": { + "properties": { + "apiVersion": { + "type": "string" + } + }, + "type": "object" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "topologySpreadConstraints": { + "type": "array" + }, + "updateStrategy": { + "properties": {}, + "type": "object" + }, + "workloadResourceAnnotations": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "velero": { + "properties": { + "uds-velero-config": { + "properties": { + "storage": { + "properties": { + "egressCidr": { + "type": "string" + }, + "internal": { + "properties": { + "enabled": { + "type": "boolean" + }, + "remoteNamespace": { + "type": "string" + }, + "remoteSelector": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "velero": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "backupsEnabled": { + "type": "boolean" + }, + "cleanUpCRDs": { + "type": "boolean" + }, + "configMaps": { + "properties": {}, + "type": "object" + }, + "configuration": { + "properties": { + "backupStorageLocation": { + "items": { + "properties": { + "bucket": { + "type": "string" + }, + "config": { + "properties": { + "region": { + "type": "string" + }, + "s3ForcePathStyle": { + "type": "boolean" + }, + "s3Url": { + "type": "string" + } + }, + "type": "object" + }, + "credential": { + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + }, + "provider": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "backupSyncPeriod": { + "type": "string" + }, + "clientBurst": { + "type": "string" + }, + "clientPageSize": { + "type": "string" + }, + "clientQPS": { + "type": "string" + }, + "dataMoverPrepareTimeout": { + "type": "string" + }, + "defaultBackupStorageLocation": { + "type": "string" + }, + "defaultBackupTTL": { + "type": "string" + }, + "defaultItemOperationTimeout": { + "type": "string" + }, + "defaultRepoMaintainFrequency": { + "type": "string" + }, + "defaultSnapshotMoveData": { + "type": "string" + }, + "defaultVolumeSnapshotLocations": { + "type": "string" + }, + "defaultVolumesToFsBackup": { + "type": "string" + }, + "disableControllers": { + "type": "string" + }, + "disableInformerCache": { + "type": "boolean" + }, + "extraArgs": { + "type": "array" + }, + "extraEnvVars": { + "type": "array" + }, + "features": { + "type": "string" + }, + "fsBackupTimeout": { + "type": "string" + }, + "garbageCollectionFrequency": { + "type": "string" + }, + "itemBlockWorkerCount": { + "type": "string" + }, + "logFormat": { + "type": "string" + }, + "logLevel": { + "type": "string" + }, + "metricsAddress": { + "type": "string" + }, + "namespace": { + "type": "string" + }, + "pluginDir": { + "type": "string" + }, + "profilerAddress": { + "type": "string" + }, + "repositoryMaintenanceJob": { + "properties": { + "repositoryConfigData": { + "properties": { + "global": { + "properties": { + "keepLatestMaintenanceJobs": { + "type": "number" + } + }, + "type": "object" + }, + "name": { + "type": "string" + }, + "repositories": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "restoreOnlyMode": { + "type": "string" + }, + "restoreResourcePriorities": { + "type": "string" + }, + "storeValidationFrequency": { + "type": "string" + }, + "terminatingResourceTimeout": { + "type": "string" + }, + "uploaderType": { + "type": "string" + }, + "volumeSnapshotLocation": { + "items": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "config": { + "properties": {}, + "type": "object" + }, + "credential": { + "properties": { + "key": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + }, + "provider": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "credentials": { + "properties": { + "existingSecret": { + "type": "string" + }, + "extraEnvVars": { + "properties": {}, + "type": "object" + }, + "extraSecretRef": { + "type": "string" + }, + "name": { + "type": "string" + }, + "secretContents": { + "properties": { + "cloud": { + "type": "string" + } + }, + "type": "object" + }, + "useSecret": { + "type": "boolean" + } + }, + "type": "object" + }, + "deployNodeAgent": { + "type": "boolean" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "extraObjects": { + "type": "array" + }, + "extraVolumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + }, + "readOnly": { + "type": "boolean" + }, + "subPath": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "extraVolumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + }, + "optional": { + "type": "boolean" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "fullnameOverride": { + "type": "string" + }, + "hostAliases": { + "type": "array" + }, + "kubectl": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "resources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "livenessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "metrics": { + "properties": { + "enabled": { + "type": "boolean" + }, + "nodeAgentPodMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "autodetect": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "podAnnotations": { + "properties": { + "prometheus.io/path": { + "type": "string" + }, + "prometheus.io/port": { + "type": "string" + }, + "prometheus.io/scrape": { + "type": "string" + } + }, + "type": "object" + }, + "prometheusRule": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "autodetect": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + }, + "spec": { + "type": "array" + } + }, + "type": "object" + }, + "scrapeInterval": { + "type": "string" + }, + "scrapeTimeout": { + "type": "string" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "externalTrafficPolicy": { + "type": "string" + }, + "internalTrafficPolicy": { + "type": "string" + }, + "ipFamilies": { + "type": "array" + }, + "ipFamilyPolicy": { + "type": "string" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "nodePort": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceMonitor": { + "properties": { + "additionalLabels": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "autodetect": { + "type": "boolean" + }, + "enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "nameOverride": { + "type": "string" + }, + "namespace": { + "properties": { + "labels": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "nodeAgent": { + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "annotations": { + "properties": {}, + "type": "object" + }, + "disableHostPath": { + "type": "boolean" + }, + "dnsConfig": { + "properties": {}, + "type": "object" + }, + "dnsPolicy": { + "type": "string" + }, + "extraArgs": { + "type": "array" + }, + "extraEnvVars": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + }, + "hostAliases": { + "type": "array" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "lifecycle": { + "properties": {}, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "pluginVolumePath": { + "type": "string" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "podVolumePath": { + "type": "string" + }, + "priorityClassName": { + "type": "string" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "runtimeClassName": { + "type": "string" + }, + "tolerations": { + "type": "array" + }, + "updateStrategy": { + "properties": {}, + "type": "object" + }, + "useScratchEmptyDir": { + "type": "boolean" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podDisruptionBudget": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "maxUnavailable": { + "type": "string" + }, + "minAvailable": { + "type": "number" + } + }, + "type": "object" + }, + "podLabels": { + "properties": {}, + "type": "object" + }, + "priorityClassName": { + "type": "string" + }, + "rbac": { + "properties": { + "clusterAdministrator": { + "type": "boolean" + }, + "clusterAdministratorName": { + "type": "string" + }, + "create": { + "type": "boolean" + } + }, + "type": "object" + }, + "readinessProbe": { + "properties": { + "failureThreshold": { + "type": "number" + }, + "httpGet": { + "properties": { + "path": { + "type": "string" + }, + "port": { + "type": "string" + }, + "scheme": { + "type": "string" + } + }, + "type": "object" + }, + "initialDelaySeconds": { + "type": "number" + }, + "periodSeconds": { + "type": "number" + }, + "successThreshold": { + "type": "number" + }, + "timeoutSeconds": { + "type": "number" + } + }, + "type": "object" + }, + "resizePolicy": { + "type": "array" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "runtimeClassName": { + "type": "string" + }, + "schedules": { + "properties": { + "udsbackup": { + "properties": { + "disabled": { + "type": "boolean" + }, + "schedule": { + "type": "string" + }, + "template": { + "properties": { + "csiSnapshotTimeout": { + "type": "string" + }, + "excludedNamespaces": { + "items": { + "type": "string" + }, + "type": "array" + }, + "includeClusterResources": { + "type": "boolean" + }, + "snapshotVolumes": { + "type": "boolean" + }, + "ttl": { + "type": "string" + } + }, + "type": "object" + }, + "useOwnerReferencesInBackup": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "secretAnnotations": { + "properties": {}, + "type": "object" + }, + "serviceAccount": { + "properties": { + "server": { + "properties": { + "annotations": { + "type": "string" + }, + "automountServiceAccountToken": { + "type": "boolean" + }, + "create": { + "type": "boolean" + }, + "imagePullSecrets": { + "type": "array" + }, + "labels": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "snapshotsEnabled": { + "type": "boolean" + }, + "terminationGracePeriodSeconds": { + "type": "number" + }, + "tolerations": { + "type": "array" + }, + "upgradeCRDs": { + "type": "boolean" + }, + "upgradeCRDsJob": { + "properties": { + "automountServiceAccountToken": { + "type": "boolean" + }, + "extraEnvVars": { + "type": "array" + }, + "extraVolumeMounts": { + "type": "array" + }, + "extraVolumes": { + "type": "array" + } + }, + "type": "object" + }, + "upgradeJobResources": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" +} diff --git a/packages/standard/zarf-values.yaml b/packages/standard/zarf-values.yaml new file mode 100644 index 0000000000..bf5edf5b56 --- /dev/null +++ b/packages/standard/zarf-values.yaml @@ -0,0 +1,87 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the full UDS Core (standard) package. + +# Shared domains for the whole stack. Override via --values / --set-values to configure all charts. +global: + domain: "" + # Empty falls back to the ADMIN_DOMAIN variable, then admin.. + adminDomain: "" + +# --- base (pepr / istio / envoy) --- +pepr-uds-core: + module: {} +uds-operator-config: + uds-operator-config: {} +uds-exemptions: + uds-exemptions: {} +istio-controlplane: + base: {} + istiod: {} + uds-global-istio-config: {} + cni: {} + ztunnel: {} +istio-admin-gateway: + gateway: {} + uds-istio-config: {} +istio-tenant-gateway: + gateway: {} + uds-istio-config: {} +istio-passthrough-gateway: + gateway: {} + uds-istio-config: {} +istio-egress-ambient: + uds-istio-egress-config: {} +istio-egress-gateway: + gateway: {} +envoy-gateway: + envoy-gateway: {} + uds-envoy-gateway-config: {} + +# --- prometheus operator CRDs --- +prometheus-operator-crds: + prometheus-operator-crds: {} + +# --- identity-authorization (keycloak / authservice) --- +keycloak: + keycloak: {} +authservice: + authservice: {} + +# --- logging (loki / vector) --- +loki: + loki: {} + uds-loki-config: {} +vector: + vector: {} + uds-vector-config: {} + +# --- monitoring (prometheus / grafana) --- +kube-prometheus-stack: + kube-prometheus-stack: {} + uds-prometheus-config: {} +prometheus-blackbox-exporter: + prometheus-blackbox-exporter: {} +grafana: + grafana: {} + uds-grafana-config: {} + +# --- runtime-security (falco) --- +falco: + falco: {} + uds-falco-config: {} + +# --- metrics-server --- +metrics-server: + metrics-server: {} + uds-metrics-server-config: {} + +# --- portal --- +uds-portal: + uds-portal: {} + +# --- backup-restore (velero) --- +velero: + velero: {} + uds-velero-config: {} diff --git a/packages/standard/zarf.yaml b/packages/standard/zarf.yaml index da89c094e4..9317e9ce11 100644 --- a/packages/standard/zarf.yaml +++ b/packages/standard/zarf.yaml @@ -18,6 +18,11 @@ metadata: dev.uds.keywords: uds,core dev.uds.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMb2dvcyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTQuNTRpbiIgaGVpZ2h0PSIyNGluIiB2aWV3Qm94PSIwIDAgMTA0Ni42NyAxNzI4Ij48cGF0aCBkPSJNOTczLjI2LDEyNzAuNzFjLTQzLjY2LDU2LjQtMTMyLjYxLDQ3LjI2LTE2OC41LDQwLjgxLTkuNDYtMS42OS0xOC4zMSw1LjU1LTE3LjQzLDE0LjM4LDIuMDMsMjAuNDQsMTUuNzIsNDAuNDUsMTUuNzIsNDAuNDUtOC4xLDMuMDYtMTUuNTUsNS4xMi0yMi4zNCw2LjUxLDIuMDUsOCwzLjk4LDE1Ljk3LDUuODIsMjMuOSw1LjktLjI1LDExLjEtLjcyLDE1LjA4LTEuMSwxNC44OC0xLjQxLDI5LjQxLTUuMDQsNDMuNDItMTAuODQtMTIuNTktMTEuNC0xOS4xOS0yMy40OC0xOS42My0yNC4yOGwtMTIuMjMtMjIuNzZjLTIuOTEtNS40MSwyLjM0LTExLjU3LDguMTQtOS41N2wyNC40NCw4LjQyYzE0LjM4LDQuOTcsNTEuNTMsMTQuNjIsODUuNjctMi43NiwyNi44Ny0xMy42OSw0MC4yNC0zNy43Nyw1My4xNS02MS4wNiwxLjUzLTIuNzYsMi45OS01LjU1LDQuMzktOC4zNi01LjEzLDIuNS0xMC4zNyw0LjU1LTE1LjY5LDYuMjVaTTQ1NS41NSwxNDgyLjdjLTIuNzIsOS4xLTcuMzEsMTkuNTYtMTQuOTYsMzAuNmwtMi44LDQuOTVjLS4yNS40NS0uNDMuOTQtLjY3LDEuMzksMjMuOTYsMjguNzIsNTQuMzQsMzYuMDIsNzUuMjMsMzcuMTVsMi41NC0yMy4wMmMuOS04LjA4LS4xLTE2LjI4LTIuODgtMjMuOS0yNy40Ni0xLjg4LTQ1LjUyLTE1LjA3LTU2LjQ1LTI3LjE4Wk02MTguODEsMTMyNS4wM2MtMzMuMzQsMTIuNC02NS41LDE4LjY5LTk1Ljc4LDE4LjY5LTMwLjUxLDAtNjIuOTMtNi40LTk2LjUzLTE4Ljk5LTQuMy0xLjYxLTguNjItMy4yOS0xMi45Ni01LjExLTEzLjgzLTUuNzgtMjcuODgtMTIuNjUtNDIuMDUtMjAuNDUtMTEuNTIsMTUuMzYtMjAuODQsMzIuNTMtMjcuNCw1MS4xNmwtMzIuMTcsOTEuMzZjLTguNjgsMjQuNjYtMTMuNjksNTAuNDEtMTQuODcsNzYuNTNsLTMuMTEsNjguNTVoMzMuMDdsMy43LTc3Ljg1YzEuMjUtMjYuMTYsNi43Mi01MS45NSwxNi4yLTc2LjM2bDI5LjgxLTc2LjcxYzMuMS04LDEyLjMzLTExLjcxLDIwLjExLTguMS4yNC4xMS40Ny4yMS43MS4zMi43Ny4zNSwxLjUuNzUsMi4yMiwxLjE3LDMuMjIsMS45LDYuNTgsMy41MywxMC4wMiw0LjkyLDAsMC0uMDMuMDUtLjAzLjA1LDAsMCw0MC45NiwyNC4xNywxMTEuMzgsMjIuMDEsNjIuMzEtMS45LDEzNy44OC02My40NSwxNTQuNDctNzcuNi0xNC41MSw4LjA0LTI4LjksMTUuMDgtNDMuMDYsMjEtNC41OSwxLjkyLTkuMTYsMy43MS0xMy43MSw1LjRaTTcwNS44OSwxNTI4LjY1bC01LjI2LDQzLjM4aDI0Ljg4Yy4zNi03MC4wMy0yMS45OS0xMDAuOTQtMjMuMTUtMTAyLjUxLDMuNzUsOC45Niw3LjQ4LDI2LjU0LDMuNTMsNTkuMTNaTTU1NS4zMiwxNDczLjQxYy00LjI3LTQuNzctOS4wNi05LjEzLTE0LjQtMTIuOTEtMTIuNzgtOS4wNi0yNS4xLTE0LjQ2LTMwLjg2LTE2LjczbDE0LjkzLDIyLjIxLDksMTMuNGMyLjk0LDQuMzksNS40OSw5LjAxLDcuNiwxMy44Miw2LjEsMTMuODksOC40NSwyOS4xOSw2Ljc4LDQ0LjI3bC0zLjYxLDMyLjY4LTEuODYsMTYuODUtMS44NiwxNi45aDMzLjI0bDMuMjctNjcuNTljMS4xMS0yMi45Mi02LjczLTQ1LjEzLTIxLjQ1LTYyLjA0LS4yNS0uMjktLjUyLS41OC0uNzgtLjg2Wk02NDYuMDgsOTEzLjc5Yy0xOC4xNywyMy4zOS0zMy4yNyw1MS43Ni00My40LDgzLjc2LTcuMzIsMjMuMTEtMTEuNDQsNDYuMTctMTIuNjQsNjguMzQtLjM4LDcuMDktLjQ0LDE0LjA4LS4yMywyMC45Nyw3LjI3LDMuMjQsMTMuODIsNi44NiwxOS43MiwxMC42My0xLjE3LTEwLjI4LTEuNzMtMjAuODMtMS42OC0zMS42LjE4LTM1LjAzLDYuNzgtNzIuMiwxOS42Mi0xMDguNjcsNS4zMi0xNS4xMSwxMS41OC0yOS42MywxOC42MS00My40M1pNNDAzLjM3LDExODUuOXMtLjA2LjAyLS4wOC4wMmMtMTMuNDgsMTgtMzAuNTgsMzEuMDEtNTAuNjMsMzguMDctOC42NywzLjA1LTE3LjYxLDQuODYtMjYuNzIsNS41Miw0Ljg5LDMuNjYsOS45Niw3LjM1LDE1LjIzLDExLjA0LDcuOSw1LjUzLDE1LjYxLDEwLjYyLDIzLjEzLDE1LjM0LDUuMSwzLjIsMTAuMTEsNi4yLDE1LjAzLDkuMDUsNS4yMywzLjAyLDEwLjM2LDUuODUsMTUuMzksOC41LDIuMTUsMS4xMyw0LjI4LDIuMjMsNi4zOSwzLjMtLjk2LTIuMjQtMS44Mi00LjQ0LTIuNjItNi42MS0yLjI4LTYuMTgtMy45NC0xMi4wOC01LjExLTE3LjY5LTEuNDYtNy4wMS0yLjE2LTEzLjU2LTIuMjgtMTkuNTktLjYtMjkuNjMsMTIuMjgtNDYuOTMsMTIuMjgtNDYuOTNoLjAxWk00MTcuMzgsOTU3LjIyYzEyLjg0LDM2LjQ3LDE5LjQ0LDczLjY0LDE5LjYyLDEwOC42Ny4wNSwxMC44MS0uNTEsMjEuNDEtMS43LDMxLjczLDYuMjctNC4wMywxMy4yNy03Ljg5LDIxLjEtMTEuMywxLjUyLTYuNjEsMi43MS0xMy40MiwzLjUtMjAuNDMsNC43MS00MS42Ny0zLjQ4LTg5Ljg0LTI1Ljk0LTEzNi4xNS0yOS40My02MC42Ni03Ni41NC0xMDQuMDQtMTI0LjY1LTEyMC45Nyw1LjMzLDMuNDksMTAuNjMsNy4zNCwxNS44OSwxMS41NSwzOS40NywzMS42MSw3Mi4yMSw4MC4yNCw5Mi4xNywxMzYuOVpNNzM0LjE4LDc4Ni4yNWMtMy4zNS0uNjQtNi41NS0xLjM0LTkuNjYtMi4wOCwwLDAsMCwwLDAsMC01LjI0LDMuNzEtMTAuNCw3LTE1LjUsOS45Ny0yOS45OCwxNy40Ny01Ny4yNywyMi43MS03OS4xMiwyMi43MWgtLjk1YzMuNCwzLjUyLDYuMjYsNi4zMSw4LjQ4LDguNCwyLjk1LDIuNzgsNC43Miw0LjMsNC43OCw0LjM1bDEyLjQ2LDEwLjU0YzIwLjc4LTMuNjksNDQuNTctMTIuNTIsNjkuODUtMzAuNDZ2LjAybDEyLjgyLTkuMTFjNS43NS00LjA3LDMuNzYtMTMuMDItMy4xNi0xNC4zNFpNMzg0LjEyLDc2Ni4wNWMtNC4zNC0xMS40Ny02LjkxLTIyLjE3LTguNC0zMSwwLS4wMi0uMDItLjA1LS4wMi0uMDUsMCwwLTQuMjcsNjEuNzIsNDEuMDQsMTA4LjMsOS40Nyw5LjA5LDIwLjM1LDE3LjY4LDMyLjgxLDI1LjIxLDMuNzksMi4zLDcuNjYsNC40NCwxMS41OSw2LjQ0LDI3LjU1LDE0LjA0LDU4LjU1LDIxLjA3LDkyLjc3LDIxLjA3LDI1LjUxLDAsNTIuODMtMy45Miw4MS44MS0xMS43NWwxNi4zMy00LjQzYzYuMjEtMS42OSw3Ljk4LTkuNjQsMy4wNi0xMy43OWwtMTEuMjQtOS41LTguMTQsMi4yMWMtMy44MiwxLjAzLTcuNjEsMS45OS0xMS4zNywyLjg4LTI0Ljc4LDUuOS00OC4yOSw4Ljg3LTcwLjQ0LDguODctMzQuMjEsMC02NS4yMS03LjAzLTkyLjc2LTIxLjA3LTMuOTMtMi03LjgtNC4xNC0xMS41OS02LjQ0LTEyLjQ2LTcuNTMtMjMuMzQtMTYuMTItMzIuODEtMjUuMjEtMy4wNS0zLjE0LTUuODYtNi4zNC04LjQ5LTkuNTgtOS45NS0xMi4yMS0xNy4wNC0yNC45NC0yMi4xLTM3LjAzLS43Mi0xLjcyLTEuNC0zLjQzLTIuMDQtNS4xMVpNMzc0LjY5LDU1Ni4wNGMtLjAzLS41MiwwLTEuMDUtLjAzLTEuNTgtLjA2LTEuMzctLjA3LTIuNzUtLjA3LTQuMTMsMC0xLjAyLDAtMi4wMy4wMy0zLjA1LjA3LTEuODguMi0zLjc3LjM4LTUuNjYuMDQtLjQzLjA0LS44NS4wOC0xLjI3bDExLjA3LTEwMS41NWMxLjMzLTEyLjI0LDIuOC0yNC40OCw0LjMzLTM2LjcyLjEyLS45OS4yMy0xLjk3LjM1LTIuOTYuODktNy4wNCwxLjktMTQuMDgsMi44NS0yMS4xMi41MS0zLjc3LDEtNy41NCwxLjUzLTExLjMxLjM4LTIuNjguNzItNS4zNywxLjEtOC4wNS4wNS0uMzYuMS0uNzMuMTUtMS4wOSwwLDAsMCwwLDAtLjAxLS4yNi4wNi0uNTMuMTMtLjc5LjE5LTQuNjksMS4wNC05LjQ1LDIuMTUtMTQuMjgsMy4zNi0uNTEuMTMtMS4wMy4yNi0xLjU0LjM5LTQuOSwxLjI0LTkuODcsMi41NS0xNC44OSwzLjk3LS4zOS4xMS0uNzguMjMtMS4xNy4zNC01LjIsMS40OC0xMC40NSwzLjA1LTE1Ljc2LDQuNzUtLjA4LjAzLS4xNy4wNi0uMjYuMDgtNS4zMSwxLjctMTAuNjcsMy41MS0xNi4wNiw1LjQzLS4yMy4wOC0uNDUuMTUtLjY3LjIzaDBjLjE0LDIuNTEuMzIsNS40MS41OCw4LjY3LDIuNDYsMzEuNjksMTEuMzIsOTcuNjcsNDMuMDcsMTcxLjA5WiIgZmlsbD0iIzFmZGZmZiIvPjxwYXRoIGQ9Ik00MjguNzcsMTYzMy4wNmgyOS4xOWw2Ljc0LTE5LjQ4Yy44NC0yLjQzLDQuMjctMi40Myw1LjExLDBsNi43NCwxOS40OGgyNy4zNmwzLjIyLTI5LjE1aC4wMXYtLjA1cy03Ny42MiwwLTc3LjYyLDBsLS43NSwyOS4yWk03ODIuMTEsMTYwNS43MmgtODUuNTZsLTMuMzEsMjcuMzNoMzAuODVsNi43NC0xOS40OGMuODQtMi40Myw0LjI3LTIuNDMsNS4xLDBsNi43NCwxOS40OGg0MC44N2MtLjI4LTguNTgtLjY2LTE1LjUyLTEuNDMtMjcuMzNaTTM2OC4xMSwxNjIwLjQ2aC03NS43MmwtMS43NCwzOC4zOC0uMyw2LjY2aDM3LjM2bDExLjM3LTMyLjg2Yy44NC0yLjQzLDQuMjctMi40Myw1LjExLDBsMTEuMzcsMzIuODZoMzguMjZ2LTQ1LjA0aC0yNS43Wk02NDYuOTUsMTYzNy41OWgtMTA5LjYzbC0xLjM2LDEyLjMyLTEuODYsMTYuODQtMy4wNCwyNy41NWg0OC4xNWwxMi4zNi0zNS43M2MuODQtMi40Myw0LjI3LTIuNDMsNS4xMSwwbDEyLjM2LDM1LjczaDQyLjc5bDEuOTUtMTYuMSwxLjM5LTExLjQ0aDBzMy41NC0yOS4xNywzLjU0LTI5LjE3aC0xMS43NlpNNTIyLjQzLDE3NS43OGwxMC42LTIuMjNjOC4xMi0xLjcyLDEzLjI1LTkuNzMsMTEuNDMtMTcuODMtMy44LTE2LjktNy44LTMzLjc1LTExLjk3LTUwLjU3bC01LjY1LTIyLjdjLTMuNTgtMTUuOTQtNy40NC0yOS0xMS4zNy0zOS43NS0uOTMtMi41My0xLjg2LTQuOTMtMi43OS03LjItMi43MywyLjA2LTYuOTgsNi4zNC0xMS45LDE1LjA1LTYuMjEsMTAuOTktMTMuNDksMjkuMDQtMjAuMTQsNTguNjRsLS4wOS4zNy01LjY1LDIyLjdjLS4zMSwxLjI0LS41OSwyLjQ4LS44OSwzLjcyLDEzLjE4LDE1LjQ4LDI5LjMzLDI4Ljc3LDQ4LjQxLDM5LjhaTTQ1MC41NCwzMTQuNTNjLjQzLjQuODIuODEsMS4yNiwxLjIxLDUuNDksNC45NCwxMS4zMiw5LjU1LDE3LjQ0LDEzLjg3LDcuOTYsNS42MywxNi40MiwxMC43NSwyNS40MSwxNS4zMiwyNS4yNSwxMi44MSw1NC41OSwyMS40Myw4Ny44NiwyNS44Ni0xLjA0LTguMDUtMi4xMy0xNi4wOS0zLjI2LTI0LjEyLS44LTUuNy0xLjY0LTExLjM4LTIuNDctMTcuMDctLjg0LTUuNy0xLjY3LTExLjQxLTIuNTUtMTcuMTEtMS44NC0xMS44OC0zLjc1LTIzLjc1LTUuNzctMzUuNi0xLjU4LTkuMjctNy41MS0xNy4xOC0xNS45LTIxLjQyLTMxLjAxLTE1LjYyLTQ4Ljg4LTM3LjUxLTQ4Ljg4LTM3LjUxaC4wM2MtMTUuNDItOC41My0yOS40My0xOC4yOC00MS45OS0yOS4yNC04LjQzLDM3LjktMTUuOTMsNzYuMDgtMjIuNDcsMTE0LjQyLDMuNTIsMy44Nyw3LjI3LDcuNjgsMTEuMzEsMTEuMzlaTTQ2OC43OCw2MTUuNjFjMS43LjA0LDMuMzguMDksNS4xMi4wOSwyOS45NywwLDUzLjM1LTUuNTksNzEuNDUtMTMuNTQsNC41My0xLjk5LDMuODgtOC42NC0uOTMtOS43NS00OS43Mi0xMS41Mi03OC42OS0zNC40NS05MC42LTQ1Ljg0LTE1LjMxLTcuNDMtMjkuNTYtMTUuOTUtNDIuNzItMjUuNDlsLTIuNSwyMi45Yy0yLjMzLDIxLjM2LDYuODQsNDIuMjUsMjMuOTUsNTQuNTEsMTAuNSw3LjUyLDIyLjYzLDEzLjIxLDM2LjIzLDE3LjExWk01OTkuMDcsNTM2LjdjLjctNS43Ny43Ni0xMS42Ny4xMi0xNy42bC02LjExLTU2LjAxYy0xLjM4LTEyLjY1LTEwLjcyLTIzLjAzLTIzLjItMjUuNi03MC4zMS0xNC40Ni0xMDEuNTItNTQuNDEtMTAxLjUyLTU0LjQxbC4wNy0uMDdjLTEzLjU4LTcuMzEtMjYuMjYtMTUuNjMtMzcuOTMtMjUuMDgtNC4xMiwyOC4xNC03Ljc3LDU2LjMzLTEwLjg0LDg0LjQ5bC0yLjYyLDI0LjA0YzIxLjY5LDIwLjQxLDQ4LjMyLDM2Ljc0LDc5LjU1LDQ4LjU1LDMwLjAyLDExLjM1LDY0LjM0LDE4LjU3LDEwMi40NywyMS42N1oiIGZpbGw9IiNlYjIxMjYiLz48cGF0aCBkPSJNOTE1LjExLDEyNzIuOTVjLTcuMTQtMS4xOS0xNC41My0yLjQtMjMuNzEtMy4yMi01Ljg3LS41Mi01OC41Ni00LjU2LTEwMy41NywxNC4wMi0xMS41Niw0Ljc3LTIxLjk1LDEwLjg1LTMxLjMsMTcuNjgsNS4xNSw5Ljg0LDkuNDgsMjAuMTksMTIuODQsMzEuMTMsNC4xMiwxMy40Miw3Ljg3LDI2Ljg4LDExLjMyLDQwLjMsNi43OS0xLjM4LDE0LjI0LTMuNDQsMjIuMzQtNi41MSwwLDAtMTMuNjktMjAuMDItMTUuNzItNDAuNDUtLjg4LTguODMsNy45Ny0xNi4wNywxNy40My0xNC4zOCwzNS45LDYuNDUsMTI0Ljg1LDE1LjYsMTY4LjUtNDAuODEtMy40MywxLjEtNi44OCwyLjA4LTEwLjM5LDIuODQtMTkuMDcsNC4xNC0zMi4zNiwxLjk1LTQ3Ljc1LS42Wk00MzcuMTEsMTUxOS42NWMtMy43LDcuMS01LjgyLDE1LTYuMDIsMjNsLS43MSwyNy41MWg4MC40OGwxLjQ4LTEzLjM2Yy0yMC44OS0xLjEzLTUxLjI3LTguNDMtNzUuMjMtMzcuMTVaTTc1Ny4zOSwxNDIxLjIzYy0uNjYtMy4xMS0xLjM0LTYuMjMtMi4wNC05LjM1LTEuMzItNS45Ny0yLjcyLTExLjk2LTQuMTYtMTcuOTYtMS41Ni02LjQ3LTMuMTktMTIuOTQtNC45LTE5LjQyLTIuODMtMTAuNy01Ljg2LTIxLjQxLTkuMTMtMzIuMDQtMS44Ni02LjA0LTQuMTYtMTEuODMtNi43MS0xNy40OC0yLjQ2LTUuNDUtNS4xOS0xMC43NS04LjI5LTE1LjgzLTIuOTYtNC44Ni02LjI2LTkuNTEtOS44LTE0LjAzLTMuMjctNC4xNy02LjctOC4yMy0xMC40NS0xMi4xLTguODEsNS41OC0xNy41OSwxMC43Ny0yNi4zMywxNS42MS0xNi41OCwxNC4xNS05Mi4xNSw3NS43LTE1NC40Nyw3Ny42LTcwLjQxLDIuMTYtMTExLjM4LTIyLjAxLTExMS4zOC0yMi4wMSwwLDAsLjAzLS4wNC4wMy0uMDUtMy40NC0xLjM5LTYuOC0zLjAyLTEwLjAyLTQuOTItLjcyLS40Mi0xLjQ1LS44Mi0yLjIyLTEuMTctLjI0LS4xMS0uNDctLjIxLS43MS0uMzItNy43OC0zLjYxLTE3LjAxLjEtMjAuMTEsOC4xbC0yOS44MSw3Ni43MWMtOS40OCwyNC40MS0xNC45Niw1MC4yLTE2LjIsNzYuMzZsLTMuNyw3Ny44NWg2OS4yN2wuNDMtMTYuNjEuNzMtMjguMzdjLjM2LTEzLjk1LDQuMTUtMjcuNzcsMTAuOTYtMzkuOTVsOC4yNi0xNC43OWMxLjQtMi40OCwxNC44NC0yNS41NSwzNi42NS0zNC44OC43Ni0uMzMsMS41NC0uMzksMi4yOS0uMjcsMS44OS4zLDMuNDksMS44OCwzLjU4LDMuOTkuMjUsNS42Mi0uMTMsMTUuMS0zLjYyLDI2LjgxLDEwLjkzLDEyLjExLDI4Ljk5LDI1LjMsNTYuNDUsMjcuMTgtLjM4LTEuMDUtLjgtMi4xLTEuMjUtMy4xMmwtMy43OS04LjYyYy02LjU0LTE1LjI3LTEwLjIzLTI4LjUtMTIuMTktMzkuNTYtMS45Ny0xMS4xMi0yLjE5LTIwLjA0LTEuOC0yNi41OS4wOS0xLjQ4Ljg1LTIuNiwxLjg5LTMuMjcsMS44MS0xLjE3LDQuNDUtLjk3LDUuOSwxLjE3bDkuMzIsMTMuODdjNS43NiwyLjI3LDE4LjA4LDcuNjcsMzAuODYsMTYuNzMsNS4zNCwzLjc4LDEwLjE0LDguMTQsMTQuNCwxMi45MS4yNi4yOS41Mi41Ny43OC44NiwxNC43MiwxNi45MSwyMi41NSwzOS4xMywyMS40NSw2Mi4wNGwtMy4yNyw2Ny41OWg4OC41MWwxLjgyLTE1LjAzLDIuMDQtMTYuODUuMy0yLjQ3LDMuNDgtMjguNzJjMS45Ni0xNi4xOCw1LjUzLTMyLjE0LDEwLjg2LTQ3LjU0LDQuMDQtMTEuNjcsOS4zNS0yMy45NiwxNS43Ny0zMi4xMywwLDAsMCwwLDAsMGguMDNzMi42NCwyLjA2LDUuMjgsOC4zNWMxLjE2LDEuNTYsMjMuNTEsMzIuNDgsMjMuMTUsMTAyLjUxaDUzLjk5Yy0zLjQ0LTM5LjEyLTkuNTYtODkuNDEtMjAuNDEtMTQyLjU4LS41Ni0yLjczLTEuMTItNS40Ny0xLjctOC4yMVpNMzk2LjQ2LDM1Ny41NmMtLjA1LjM2LS4xLjczLS4xNSwxLjA5LjA1LS4zNy4xMS0uNzMuMTctMS4xLDAsMC0uMDEsMC0uMDIsMFpNMzg2LjE3LDQzOC44YzEuMzMtMTIuMjQsMi43OS0yNC40OCw0LjMyLTM2LjcyLTEuNTMsMTIuMjQtMywyNC40OC00LjMzLDM2LjcybC0xMS4wNywxMDEuNTVjLS4wNS40Mi0uMDQuODUtLjA4LDEuMjcuMDQtLjQzLjA1LS44NS4xLTEuMjdsMTEuMDctMTAxLjU1Wk03MjQuNTEsNzg0LjE3czAsMCwwLDBoLjAxczAsMC0uMDIsMFpNMzkxLjA4LDEyMzIuODRjLjEyLDYuMDMuODIsMTIuNTgsMi4yOCwxOS41OSwxLjE3LDUuNjEsMi44MywxMS41MSw1LjExLDE3LjY5LjgsMi4xNywxLjY3LDQuMzcsMi42Miw2LjYxLDUyLjc5LDI2LjY3LDk0LjA1LDMzLjI5LDEyMS45MiwzMy4yOSwzMi40OSwwLDgzLjE5LTguOTksMTQ5LjE0LTQ4LjI5Ljc5LS40NywxLjU3LS45MywyLjM3LTEuNDEsMS41Ny0uOTUsMy4xNi0xLjkzLDQuNzUtMi45MiwzLjU1LTIuMTksNy4xMi00LjQ1LDEwLjc2LTYuODIsNC44My0zLjE2LDkuNzQtNi40NywxNC43Mi05Ljk1LjA0LS4wMy4wOS0uMDYuMTMtLjA5LDIuNjUtMS44Niw1LjI1LTMuNzEsNy44LTUuNTYsMi41LTEuODEsNC45NS0zLjYyLDcuMzUtNS40Mi02LjgxLS40Mi0xMy41Mi0xLjQ2LTIwLjExLTMuMi0yLjYtLjY5LTUuMTktMS40Ni03Ljc1LTIuMzYtMjcuNTgtOS43MS00OS41Ny0zMC42NS02NC4yMy02MC40MS0zLjQ5LTUuOTQtMTAuNC0xNi4xNS0yMS41Mi0yNi4yMy0zLjcyLTMuMzctNy42Mi02LjQ1LTExLjY3LTkuMjYtNi4zMS00LjQtMTMuMDEtOC4xMy0yMC4xLTExLjE3LTE1LjYxLTYuNy0zMy4wNC0xMC4wOS01Mi4xNy0xMC4wOS0zMy4zNSwwLTYxLjU5LDEwLjI3LTgzLjk0LDMwLjUzLTEyLjI3LDExLjEyLTE5LjQyLDIyLjQxLTIyLjQ5LDI3LjkyLS40MS44MS0uODUsMS41OS0xLjI4LDIuMzktLjMzLjY2LS41MiwxLjA3LS41MywxLjA5bC0uMDUtLjAyYy0zLjMyLDYuMTQtNi45NiwxMS44OS0xMC45MiwxNy4xOC4wMywwLC4wNi0uMDEuMDgtLjAyaC0uMDFzLTEyLjg4LDE3LjMxLTEyLjI4LDQ2Ljk0Wk01NDQuNDcsMTI1OC41OGMzLjM3LTExLjIsMTEuMDctMjYuMjIsMjguMTUtMjYuMjEsMTUuNCwwLDIyLjIyLDExLjM4LDI1LjE1LDE5LjY1LDEuMTIsMy4xNi0xLjA5LDYuNjItMy41Nyw1LjU5di0uMDJjLTkuMjEtMy44NS0yOC4xNi04Ljc1LTQ1LjQsNS45My0yLjQ0LDIuMDgtNS40My0xLjMzLTQuMzMtNC45NVpNNDQ2Ljg1LDEyNTIuMDNjMi45My04LjI3LDkuNzYtMTkuNjUsMjUuMTUtMTkuNjUsMTcuMDgsMCwyNC43OCwxNS4wMSwyOC4xNSwyNi4yMSwxLjA5LDMuNjItMS44OSw3LjAzLTQuMzMsNC45NS0xNy4yNC0xNC42OC0zNi4xOS05Ljc4LTQ1LjQtNS45M3YuMDJjLTIuNDgsMS4wMy00LjctMi40My0zLjU4LTUuNTlaTTY5OS42MSwxMTE4LjU2Yy0yMi43LDAtNDMuMDEtMTAuMTMtNTYuNzUtMjYuMDguODIsNy40OCwxLjk3LDE0LjgsMy41NCwyMS44NywyLjcyLDEyLjI4LDYuNSwyMy4zNiwxMS4yLDMzLjE0LDIuMjcsMy45MywzLjUzLDYuNjIsMy45MSw3LjQ1LDEwLjUyLDE4LjQxLDI0Ljc2LDMxLjI1LDQxLjg4LDM3LjI3LDIyLjc2LDguMDEsNDkuMSwzLjQ3LDc1LjY2LTEyLjY3LDUuODYtMy41NiwxMS43Mi03LjY2LDE3LjU2LTEyLjM0LDIuMTEtMS42OSw0LjE5LTMuNDQsNi4yNS01LjI0LjExLS4xLjIyLS4xOS4zNC0uMjksNi40Mi01LjYzLDEyLjYyLTExLjgsMTguNTctMTguNDUsMjMuNDMtMjYuMTksNDIuOTQtNTkuOSw1Ni4yOS05Ny44Mi44NC0yLjM5LDEuNjMtNC43OSwyLjQxLTcuMTksNi40NC0xOS42OCwxMC44OS0zOS40NCwxMy4yOC01OC43MywzLjUtMjguMjUsMi42MS01NS41MS0yLjgzLTgwLjAyLTguOTctNDAuNDQtMjkuMi02OC4wOS01Ni45OC03Ny44Ni03LjM3LTIuNTktMTUuMS0zLjg3LTIzLjA5LTMuODctMjIuMTcsMC00Ni4zNSw5Ljg1LTcwLjEyLDI4Ljg5LS41OC40Ni0xLjE0Ljk2LTEuNzEsMS40My0zMy44NiwyNy43Ny02Mi4xNCw3MC40LTc5Ljc0LDEyMC4zNy0xLjg1LDUuMjYtMy41MywxMC41My01LjEsMTUuOCwxMi42MS05LjY1LDI4LjMzLTE1LjQ0LDQ1LjQ0LTE1LjQ0LDcuMDEsMCwxMy43NywxLjAzLDIwLjIxLDIuODMtMTIuNiw2LjE4LTIxLjMsMTkuMS0yMS4zLDM0LjA4LDAsMjAuOTgsMTcuMDEsMzcuOTgsMzgsMzcuOTgsMTUuNDEsMCwyOC42NC05LjE4LDM0LjYxLTIyLjM2LDIuMjEsNy4wNiwzLjQsMTQuNTcsMy40LDIyLjM2cy0xLjE4LDE1LjItMy4zNiwyMi4yMmMtOS40NywzMC41MS0zNy45Myw1Mi42Ny03MS41Nyw1Mi42N1pNMzYyLjQ3LDExODAuMjRjMTYuOTctMTMuOTMsMjkuNDUtMzYuNTEsMzUuOTYtNjUuODcsMi41NC0xMS40NCw0LjA2LTIzLjQ5LDQuNjMtMzUuOTQtMTIuNTMsMjMuODUtMzcuNTIsNDAuMTQtNjYuMzQsNDAuMTQtMzMuNjQsMC02Mi4xLTIyLjE2LTcxLjU3LTUyLjY3LTIuMTgtNy4wMi0zLjM1LTE0LjQ4LTMuMzUtMjIuMjIsMC00MS4zNiwzMy41NS03NC44OSw3NC45My03NC44OSw3LjAyLDAsMTMuNzgsMS4wMywyMC4yMiwyLjg0LTEyLjYsNi4xOC0yMS4yOSwxOS4xLTIxLjI5LDM0LjA3LDAsMjAuOTgsMTcuMDEsMzcuOTgsMzgsMzcuOTgsMTAuNzIsMCwyMC4zOS00LjQ1LDI3LjMtMTEuNTktMS42MS0xMi4xOS00LjAyLTI0LjU2LTcuMjQtMzYuOTctMi4xOS04LjQzLTQuNzQtMTYuODgtNy42Ny0yNS4zLS4xNi0uNDYtLjMtLjkzLS40Ni0xLjM5LTE3LjktNTAuODItNDYuODMtOTQuMDgtODEuNDYtMTIxLjgxLTMyLjM0LTI1LjktNjUuNDQtMzQuNzktOTMuMjItMjUtNy4yMSwyLjU0LTEzLjksNi4zLTIwLjAyLDExLjE2LTE3LjQ4LDEzLjg1LTMwLjMyLDM2Ljc3LTM2Ljk2LDY2LjcxLTUuMDIsMjIuNjQtNi4xMyw0Ny42Mi0zLjUzLDczLjU1LDIuMzgsMjMuNjcsNy44NSw0OC4xNCwxNi4zOSw3Mi4zOWgwYzEzLjYxLDM4LjYzLDMzLjYxLDcyLjg4LDU3LjYzLDk5LjI4LDUuNjQsNi4yLDExLjUsMTEuOTksMTcuNTcsMTcuMjguMzMuMjkuNjcuNTUsMSwuODQsMS43NCwxLjUsMy40OSwyLjk5LDUuMjYsNC40MSw2Ljg3LDUuNSwxMy43NiwxMC4xOCwyMC42NCwxNC4xMywyNS41MiwxNC42NSw1MC43LDE4LjU4LDcyLjU4LDEwLjg4LDcuNi0yLjY3LDE0LjYyLTYuNzQsMjEuMDItMTEuOTlaTTEwMTIuMTQsNDMxLjgxYy0uMTctMi40MS0uOTMtNC42NC0yLjA3LTYuNjMtMi40NS00LjI4LTYuODMtNy4zLTEyLjAyLTcuNzItMzQuMTItMi43Ny03My4zNSwyLjYzLTExNy4wMiwxNi4xNC0zLjA0Ljk0LTYuMDYsMS45Mi05LjA2LDIuOTEtNS44NiwxLjkzLTExLjYxLDMuOTYtMTcuMjYsNi4wNC0yLjQ1LjktNC44NywxLjgyLTcuMjgsMi43NC0zLjMzLDEuMjgtNi42MywyLjU4LTkuODcsMy44OS0yMyw5LjMzLTQzLjU3LDE5LjM0LTYwLjEsMjguMDctMy43MywxLjk3LTcuOC0xLjk3LTUuOTUtNS43NiwyLjU3LTUuMjcsNS4yNC05Ljk2LDcuOTEtMTQuMjMsMTQuNjctMjMuNDUsMjkuNDgtMzIuNDYsMzAuMTMtMzIuODMtMTEuOTYtOS4wOS0yNC42NC0xNy4wOS0zNy44Ni0yMy44MS0yLjQ5LTEuMjYtNC45Ny0yLjQ3LTcuNDUtMy42OC00My4zOC0yMS4wOS04Ni4zMi0zMy43OC0xMjMuNzUtNDEuMzUtMS4wNC0uMjEtMi4wNy0uNDEtMy4xLS42Miw0LjA2LDI3LjkyLDcuNjYsNTUuODcsMTAuNyw4My44MWwxMS4wNywxMDEuNTRjMy43LDMzLjkyLTExLjMzLDY3LjA4LTM5LjIsODYuNTQtMjcuMywxOS4wNi02MS44OSwyOC43Mi0xMDIuODMsMjguNzJoMGMtNDEuNjYsMC03Ni43My0xMC4wMS0xMDQuMjItMjkuNzEtMjMuMTYtMTYuNi0zNy4wNy00My4xMS0zOC4yNS03MS40My4wMi41MiwwLDEuMDUuMDMsMS41OC0zMS43NS03My40Mi00MC42MS0xMzkuNC00My4wNy0xNzEuMDktLjI1LTMuMjYtLjQ0LTYuMTYtLjU4LTguNjYtMTguNTksNi42NS0zNy42MiwxNC42Ni01Ni42NywyNC4zNS0xMy4xNCw2LjY4LTI1Ljc1LDE0LjYyLTM3LjY1LDIzLjY0LjEuMDQuMjEuMDguMzEuMTMuMDUuMDMsMS43NCwxLjA0LDQuNDcsMy4xNyw1LjYsNC4zNywxNS42OCwxMy42NiwyNS43MiwyOS43LDIuNjcsNC4yNyw1LjM0LDguOTYsNy45MSwxNC4yMywxLjg1LDMuNzktMi4yMyw3LjczLTUuOTYsNS43Ni0xNS45NC04LjQyLTM1LjY0LTE4LjAyLTU3LjY1LTI3LjA2LS45NS0uMzktMS45LS43OS0yLjg3LTEuMTgtNS41OC0yLjI2LTExLjMxLTQuNDctMTcuMTYtNi42Mi01LjY2LTIuMDgtMTEuNDItNC4xMS0xNy4yOC02LjA0LTIuODUtLjk0LTUuNzMtMS44Ni04LjYyLTIuNzYtNDMuNjYtMTMuNTEtODIuOS0xOC45MS0xMTcuMDItMTYuMTQtNi4xMy40OS0xMS4xNCw0LjYtMTMuMTUsMTAuMTUtLjQ4LDEuMzMtLjg0LDIuNzItLjk0LDQuMTktMS4zMSwxOS4zNi0xLjMyLDQ2LjY1LDIuOTMsNzcuMjMsNC44MSwzNC42MSwxNC4xOCw2OC40NSwyNy44MywxMDAuNTgsNy4wOCwxNi42NywxNS40LDMyLjg3LDI0Ljc5LDQ4LjU5LDQuNjIsNy43NSw5LjUxLDE1LjM4LDE0LjY3LDIyLjg3LDQuODksNy4xLDEwLDE0LjA5LDE1LjM3LDIwLjk0LjAzLjA0LjA3LjA5LjEuMTMsMy41NSw0LjUyLDcuMTgsOS4wMSwxMC45MywxMy40MiwyLjM1LDIuNzYuODQsNy4wNS0yLjc0LDcuNjktMi42NC40Ny01Ljg0Ljg3LTkuMzUuOTgtMS41LDQ0LjQzLjU2LDkzLjMyLDguNDMsMTQ1LjMsMTMuOTQtNDAuMDcsMzkuMDQtNjguMDUsNzIuMjYtNzkuNzQsMzQuMjQtMTIuMDUsNzIuNTktNS4yOCwxMDkuNjEsMTguOTYsNDguMSwxNi45Myw5NS4yMSw2MC4zMSwxMjQuNjUsMTIwLjk3LDIyLjQ3LDQ2LjMxLDMwLjY1LDk0LjQ4LDI1Ljk0LDEzNi4xNS0uNzksNy4wMS0xLjk4LDEzLjgzLTMuNSwyMC40MywxNy43OS03Ljc0LDM5LjY3LTEzLjE4LDY2LjA4LTEzLjE5aC4wNGMyNywwLDQ5LjI3LDUuNyw2Ny4yNywxMy43Mi0uMjEtNi44OC0uMTUtMTMuODcuMjMtMjAuOTcsMS4yLTIyLjE3LDUuMzItNDUuMjMsMTIuNjQtNjguMzQsMTAuMTMtMzIsMjUuMjQtNjAuMzgsNDMuNC04My43NiwxOS4zMi0zNy45NCw0NC42Mi03MC4yOSw3My41Ni05My40Nyw0MS43Ni0zMy40NSw4Ni4zMy00NC4yOCwxMjUuNDktMzAuNDksMzMuODgsMTEuOTMsNTkuMzUsNDAuNzYsNzMuMTEsODIuMTMsOC4xNy01Mi44OCwxMC4zMi0xMDIuNjEsOC44LTE0Ny43Mi0zLjI5LS4xMy02LjI4LS41Mi04Ljc3LS45Ny0zLjU4LS42NS01LjA5LTQuOTMtMi43NC03LjY5LDMuNTktNC4yMyw3LjA5LTguNTEsMTAuNDktMTIuODQtLjAzLS40NC0uMDUtLjg4LS4wOC0xLjMxbC41Mi43M2M1LjIzLTYuNjcsMTAuMTktMTMuNDcsMTQuOTctMjAuMzcsNS4xNi03LjQ2LDEwLjA2LTE1LjA1LDE0LjY4LTIyLjc3LDkuNTgtMTUuOTcsMTguMDYtMzIuNDQsMjUuMjctNDkuMzksMTMuNjUtMzIuMTMsMjMuMDEtNjUuOTcsMjcuODItMTAwLjU4LDQuMjUtMzAuNTgsNC4yNC01Ny44NywyLjkzLTc3LjIzWk0yMDUuNTMsNTI0LjM1bC01Mi44NSw4Ny4zM2MtMi44NCw0LjY4LTkuNTIsNS40LTEzLjM4LDEuNDYtMi41OC0yLjYzLTUuMDItNS4yMi03LjM5LTcuOC01LjEyLTUuNTYtOS43Ny0xMS0xNC0xNi4zMS01LjAxLTYuMjktOS40Mi0xMi4zOS0xMy4yOS0xOC4zLTMzLjE1LTUwLjYtMjcuMTEtODYuOTItMjIuNDMtMTAxLjE1LDEuMjgtMy45LDUuMzgtNi4yOCw5LjUzLTUuNSwxNy44MywzLjMzLDM0Ljk1LDkuMTMsNTAuNCwxNS43MSw1LjM5LDIuMjksMTAuNTYsNC42NywxNS40OSw3LjA5LDUuMzEsMi42MSwxMC4zMyw1LjIzLDE1LDcuODEsMTMuNjksNy41NywyNC40LDE0LjY1LDMwLjYyLDE4Ljk5aDBjMy40OSwyLjQ2LDQuNDgsNy4wNiwyLjMxLDEwLjY3Wk03MzcuMzQsODAwLjU5bC0xMi44Miw5LjExdi0uMDJjLTI1LjI5LDE3Ljk0LTQ5LjA3LDI2Ljc3LTY5Ljg1LDMwLjQ2bC40Ni4zOWM0LjkxLDQuMTUsMy4xNSwxMi4xMS0zLjA3LDEzLjc5bC04LjE4LDIuMjIsMTEuMjQsOS41YzQuOTIsNC4xNiwzLjE1LDEyLjExLTMuMDYsMTMuNzlsLTE2LjMzLDQuNDNjLTI4Ljk4LDcuODMtNTYuMywxMS43NS04MS44MSwxMS43NS0zNC4yMSwwLTY1LjIyLTcuMDQtOTIuNzctMjEuMDctMy45My0yLTcuOC00LjE0LTExLjU5LTYuNDQtMTIuNDYtNy41My0yMy4zNC0xNi4xMi0zMi44MS0yNS4yMS00NS4zMi00Ni41Ny00MS4wNC0xMDguMy00MS4wNC0xMDguMywwLDAsLjAxLjA0LjAyLjA1LS4wMS0uMDgtLjAzLS4xNy0uMDQtLjI0LS43Ny00LjYyLDQuODUtNi45Nyw3Ljc0LTMuODguMjQuMjYuNTEuNDkuNzEuODQsMS44OCwzLjIzLDQuMDUsNi43Niw2LjQ1LDEwLjQ3LDI1Ljc3LDM5Ljc1LDgyLjM0LDEwMi43NywxNzguNDIsOTQuODIsOS4yMS0uNzYsMTguNzUtMi4xMSwyOC42OS00LjI2LTIyLjg4LTEwLjc0LTM5LjQ0LTMxLjY3LTUwLjYyLTUwLjk0LTUuMDMtOC42OC04Ljk3LTE3LjAzLTExLjktMjMuOTUtMS44NS00LjM4LDMuMzktOC4yOCw3LjA5LTUuMywyMC40LDE2LjQ2LDYyLjEsNDEuNTUsMTE0LjM5LDI3LjQ0LDQuOTMtMS4zMyw5Ljk0LTIuOTgsMTUuMDQtNS4wNSwxLjc1LS43MSwzLjUxLTEuNDUsNS4yOS0yLjI1LTEuODctMS4wMy0zLjc3LTIuMTMtNS42Ny0zLjMtMTAuNS03LjA1LTE3LjE0LTE3LjI4LTIxLjM1LTI3LjczLTIuOC02Ljk3LTQuNTQtMTQuMDMtNS41OC0yMC4zMi0uMjktMS43NS4zNy0zLjIxLDEuNDUtNC4xNiwxLjgyLTEuNTgsNC44NC0xLjcyLDYuNjUuNjMsMTEuMTIsMTQuNDcsMzQuMzcsMzMuODcsODEuNjgsNDIuODYsNi45MiwxLjMyLDguOSwxMC4yNywzLjE2LDE0LjM0bC0xMi44Miw5LjFjMy4xMS43NCw2LjMxLDEuNDQsOS42NiwyLjA4LDYuOTIsMS4zMiw4LjksMTAuMjcsMy4xNiwxNC4zNFpNOTQxLjU5LDU3MS4zOWMtMy44OCw1Ljg4LTguMywxMS45NS0xMy4zLDE4LjItNC4yNSw1LjMxLTguODksMTAuNzQtMTQuMDQsMTYuMy0yLjIyLDIuNC00LjUxLDQuODItNi45MSw3LjI2LTMuODYsMy45NC0xMC41NCwzLjIyLTEzLjM5LTEuNDZsLTUyLjg1LTg3LjMzYy0yLjE4LTMuNi0xLjE4LTguMjEsMi4zMS0xMC42NmgwYzYuMTUtNC4zMSwxNi43LTExLjI5LDMwLjE5LTE4Ljc3LDQuNjYtMi41OCw5LjY4LTUuMjIsMTUtNy44NCw0LjkyLTIuNDIsMTAuMDgtNC44MSwxNS40Ny03LjExLDE1LjU2LTYuNjUsMzIuODYtMTIuNTMsNTAuODYtMTUuOSw0LjE1LS43OCw4LjI2LDEuNiw5LjUzLDUuNSw0LjcsMTQuMjksMTAuNzcsNTAuODYtMjIuODYsMTAxLjhaTTUxNS40Nyw0Mi43MWMzLjkzLDEwLjc0LDcuNzksMjMuOCwxMS4zNywzOS43NWw1LjY1LDIyLjdjNC4xOCwxNi44Miw4LjE3LDMzLjY3LDExLjk3LDUwLjU3LDEuODIsOC4xLTMuMzEsMTYuMTEtMTEuNDMsMTcuODNsLTEwLjYsMi4yM2MxNS40OSw4Ljk2LDMyLjkxLDE2LjQ0LDUyLjIyLDIyLjQ0LTQuODEtMjIuMDktOS44OC00NC4xLTE1LjMyLTY1Ljk2bC01Ljc0LTIzLjA3Yy05LjAzLTQwLjE4LTE5LjIxLTU5LjA5LTI2LjMxLTY3LjkzLTQuOS02LjEtOC4zMi03LjQtOC44OC03LjU4aC0yLjU4LDBjLS4zLjEtMS40Mi41Mi0zLjE1LDEuODIuOTMsMi4yOCwxLjg2LDQuNjcsMi43OSw3LjJaTTU1Mi41NSwyNTUuNDdjOC4zOSw0LjI0LDE0LjMyLDEyLjE1LDE1LjksMjEuNDIsMi4wMiwxMS44NSwzLjkzLDIzLjcyLDUuNzcsMzUuNi44OCw1LjcsMS43MSwxMS40LDIuNTUsMTcuMTEuODQsNS42OSwxLjY4LDExLjM4LDIuNDcsMTcuMDcsMS4xMiw4LjAzLDIuMjIsMTYuMDcsMy4yNiwyNC4xMiw3LjU5LDEuMDEsMTUuNCwxLjc4LDIzLjM5LDIuMzUtMS4xMS03Ljk3LTIuMjktMTUuOTMtMy40OC0yMy44OS0uODYtNS43Ni0xLjcyLTExLjUxLTIuNjMtMTcuMjctLjkxLTUuNzctMS44Ni0xMS41My0yLjgyLTE3LjMtMy42NS0yMi4wNy03LjU3LTQ0LjEtMTEuODUtNjYuMDUtMzAuNDYtNy4zMS01Ny42NC0xNy41Mi04MS40My0zMC42OGgtLjAzczE3Ljg4LDIxLjg5LDQ4Ljg4LDM3LjUxWk01NjkuODgsNDM3LjVjMTIuNDgsMi41NiwyMS44MiwxMi45NSwyMy4yLDI1LjZsNi4xMSw1Ni4wMWMuNjUsNS45Mi41OSwxMS44Mi0uMTIsMTcuNiw4LjQ1LjY5LDE3LjExLDEuMTYsMjUuOTQsMS40NGwtMTAuNDQtOTUuN2MtLjgzLTcuNjItMS43OC0xNS4yNC0yLjY5LTIyLjg2LTU1LjcxLTIuODgtMTAzLjYzLTE1LjEzLTE0My40NS0zNi41NmwtLjA3LjA3czMxLjIxLDM5Ljk1LDEwMS41Miw1NC40MVpNNTQ1LjM0LDYwMi4xN2MtMTguMSw3Ljk1LTQxLjQ3LDEzLjU0LTcxLjQ1LDEzLjU0LTEuNzQsMC0zLjQyLS4wNS01LjEyLS4wOSwxNC40Niw0LjE1LDMwLjU4LDYuMjgsNDguMzQsNi4yOCwzNC40NywwLDYyLTcuNjIsODMuNTMtMjIuNjUsNi4wOC00LjI0LDExLjE4LTkuNTMsMTUuMTktMTUuNDktNTEuNTYtMi4zMS05Ny42OS0xMS4xNS0xMzcuNTktMjYuNTQtOC40My0zLjI1LTE2LjU2LTYuODEtMjQuNDQtMTAuNjMsMTEuOTEsMTEuMzksNDAuODksMzQuMzEsOTAuNiw0NS44NCw0LjgxLDEuMTEsNS40Niw3Ljc2LjkzLDkuNzVaIiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTEwMjUuMTYsMTE4Ny45MWwtMTQuNTEsMTYuODdjLTE2Ljc3LDE5LjUyLTM1LjI2LDMxLjU3LTU0Ljk3LDM1Ljg2LTEyLjc2LDIuNzctMjEuMTYsMS4zOC0zNS4wOC0uOTItNy40LTEuMjItMTUuNzktMi42LTI2LjIyLTMuNTMtNC43OS0uNDMtMzYuOTEtMi44OS03My45OCwzLjYxLTcuODcsMS4zOC0xNS45NiwzLjE3LTI0LjA3LDUuNDctNy4xNywyLjAzLTE0LjM0LDQuNDUtMjEuMzcsNy4zNS0xMy42Myw1LjYyLTI1Ljg4LDEyLjY2LTM2Ljg5LDIwLjU1LTIuNTItMy4xNi01LjE2LTYuMjUtNy45Mi05LjI3LDEyLjQxLTguOSwyMy43My0xNy42OSwzMy43Ni0yNS45MiwxNS4xOS0xMi40NiwyNy40My0yMy41NywzNS45Ni0zMS43LDUuOTctMy44MSwxMS45Mi04LjA2LDE3LjgtMTIuNzcsMzkuNDctMzEuNjEsNzIuMjEtODAuMjMsOTIuMTctMTM2LjksOC4xOC0yMy4yMiwxMy44LTQ2LjczLDE2Ljg4LTY5Ljc5LDMwLjE2LTEwMC41MiwzNy4yMS0xOTQuMiwzMy42LTI3My41Mi4wMi0uMDEuMDMtLjAyLjA1LS4wNCwyMS4yOC0yOC42NSwzOC44Ni01OS4yNiw1Mi40My05MS40LDE0LjgtMzUuMDUsMjQuODktNzEuOTYsMzAuMDEtMTA5LjcxLDQuMzktMzIuNDEsNC4zNS01OS43OCwzLjE4LTc5LjI0LTEuMTctMTkuMzEtMy40NS0zMC44NC0zLjY1LTMxLjc3aC0uMDJjLTEuMzQtNi41Ni02LjQzLTExLjcxLTEyLjk3LTEzLjExLTQ1LjA1LTkuNjgtOTguMy01LjE3LTE1OC4yOSwxMy4zOS04LjgsMi43Mi0xNy4zNSw1LjY4LTI1Ljc0LDguNzQtMTcuODktMTUuNi0zNy41Mi0yOC45Ni01OC4zNS0zOS41NS01My45LTI3LjM5LTEwNy42Mi00Mi4zMi0xNTIuNTUtNTAuNC0uOC0uMTQtMS42LS4yOC0yLjQtLjQyLTcuMDgtNDQuMDEtMTUuNDgtODcuODQtMjUuMDEtMTMxLjMyLTQuNzItMjEuNTQtOS42Ni00My4wMS0xNC45Ny02NC4zM2wtNS42LTIyLjUyYy04LjQ5LTM3LjY5LTE5LjctNjUuMjgtMzMuMzEtODIuMDNDNTM5LjM5LDIuNjcsNTI1Ljg0LjA2LDUxOSwwaC0zLjc0Yy02Ljg1LjA2LTIwLjM5LDIuNjgtMzQuMTMsMTkuNTktMTMuNjIsMTYuNzQtMjQuODIsNDQuMzQtMzMuMzEsODIuMDNsLTUuNjEsMjIuNTJjLTE2LjIxLDY1LjEzLTI5LjY4LDEzMS4zNi00MC4zMywxOTcuOTQtNDIuODUsOC40NC05Mi43NywyMy4xMi0xNDIuOCw0OC41NC0yMC43NywxMC41Ni00MC4zNCwyMy44Ni01OC4xOCwzOS40LTguMjYtMy0xNi42OC01LjkyLTI1LjMzLTguNi01OS45OC0xOC41NS0xMTMuMjQtMjMuMDctMTU4LjI4LTEzLjM5LTYuNTUsMS40LTExLjY0LDYuNTYtMTIuOTcsMTMuMTFoMGMtLjI1LDEuMjEtNC4wMywyMC4zLTQuMyw1MS4wOXY3LjA4Yy4xMywxNS4zMywxLjE2LDMzLjE1LDMuODMsNTIuODQsMi42NywxOS43NCw2Ljc0LDM5LjI1LDEyLjEsNTguMzksNC44OSwxNy40NSwxMC44NCwzNC42LDE3LjksNTEuMzIsMTMuNDYsMzEuODksMzAuODgsNjIuMjYsNTEuOTMsOTAuNzItLjQxLDguNzctLjY4LDE3LjcxLS44MSwyNi44Mi0uOTIsNjQuNTIsNS41MywxMzcuMzYsMjUuMzQsMjE0LjksMi4xNiw4LjQ1LDQuNDYsMTYuOTQsNi45NCwyNS40OS40NSw0LjA2Ljk2LDguMTQsMS41OCwxMi4yMywyLjI2LDE1LjA5LDUuNjQsMzAuMzQsMTAuMDgsNDUuNTUsMS44NSw2LjM1LDMuODYsMTIuNyw2LjA5LDE5LjAzLDE5Ljk2LDU2LjY3LDUyLjcsMTA1LjMsOTIuMTcsMTM2LjkxLDcuMDIsNS42MiwxNC4xMiwxMC41OCwyMS4yNiwxNC45MSwxNS4zLDE0LjQxLDQwLjY4LDM2Ljc2LDcyLjgzLDU5LjMyLDcuMDQsNC45NCwxNC4wNiw5LjYyLDIxLjA4LDE0LjEtNS45Miw4LjE3LTExLjMxLDE2Ljc2LTE2LjExLDI1LjczLTUuMzksMTAuMDctMTAuMSwyMC42LTEzLjk2LDMxLjU3bC0zMi4xNyw5MS4zNmMtOS43OCwyNy43Ny0xNS40MSw1Ni43Ny0xNi43NSw4Ni4xOWwtNi42NywxNDYuNzJjMCwuMTksMCwuMzcsMCwuNTZsLS45NywyMS40Yy0uMzUsNy41Myw1LjY4LDEzLjgyLDEzLjIyLDEzLjgyaDE0NS4zOGM3LjMxLDAsMTMuMjMtNS45MiwxMy4yMy0xMy4yMnYtMTUuOTJjLjE2LTEuMDkuMjctMi4xOS4zMy0zLjMxaDcyLjMzbC01LjE0LDQ2LjU3Yy0uODYsNy44Myw1LjI3LDE0LjY3LDEzLjE2LDE0LjY3aDEyLjFzLjA3LDAsLjEsMGMuMDcsMCwuMTMuMDEuMTkuMDFoMTM5LjU5cy4wOC0uMDEuMTEtLjAxYy4wMiwwLC4wNCwwLC4wNiwwaDkuNjMsMHMwLDAsMCwwYy4wMiwwLC4wNCwwLC4wNiwwLDYuNjYtLjAzLDEyLjI3LTUuMDIsMTMuMDgtMTEuNjNsMS4xNC05LjM5Yy4wMi0uMTIuMDYtLjI0LjA4LS4zNmw0LjgzLTM5Ljg1aDExMS42M3MuMDcsMCwuMTEsMGgzLjYyYzcuNDIsMCwxMy4zOC02LjA4LDEzLjIzLTEzLjVsLS4wOC0zLjdjLS4zNS0xNy4zNC0uNi0yNS4wNS0xLjQ2LTM4Ljk5LS40NS04LjA5LTEuMDUtMTcuMjgtMS44Mi0yNy4zNWwtLjc2LTExLjE4aC0uMTRjLTMuMjktMzguNjgtOS4yLTg4LjQ3LTE5Ljc5LTE0MS44OSw0LjMtLjI4LDguMDUtLjYzLDExLjA2LS45MiwyOS4zNC0yLjc4LDU3LjM5LTEyLjUzLDgzLjM4LTI4Ljk5bDE4LjI5LTExLjU5YzQuOC0zLjAzLDMuODgtMTAuMjctMS41Mi0xMi4wMiwxMy41Mi0xLjY3LDI3LjctNS41Myw0MS43OC0xMi43LDM2LjA2LTE4LjM2LDUzLjM5LTQ5LjYyLDY3LjMzLTc0Ljc0LDEyLjEtMjEuNzksMjAuODEtNDUuMzQsMjUuOTEtNzBsNC41Mi0yMS43OWMyLjMxLTExLjIyLTExLjgzLTE4LjE3LTE5LjMtOS40OFpNODkzLjc1LDk3OS40OWMtMi4zOSwxOS4zLTYuODUsMzkuMDUtMTMuMjgsNTguNzMtLjc4LDIuNC0xLjU3LDQuNzktMi40MSw3LjE5LTEzLjM1LDM3LjkyLTMyLjg2LDcxLjYzLTU2LjI5LDk3LjgyLTUuOTUsNi42NS0xMi4xNSwxMi44Mi0xOC41NywxOC40NS0uMTEuMS0uMjIuMTktLjM0LjI5LTIuMDYsMS44LTQuMTUsMy41NS02LjI1LDUuMjQtNS44NCw0LjY4LTExLjcsOC43OC0xNy41NiwxMi4zNC0yNi41NiwxNi4xNC01Mi45LDIwLjY4LTc1LjY2LDEyLjY3LTE3LjEyLTYuMDItMzEuMzYtMTguODYtNDEuODgtMzcuMjctLjM4LS44NC0xLjY0LTMuNTItMy45MS03LjQ1LTQuNy05Ljc4LTguNDctMjAuODYtMTEuMi0zMy4xNC0xLjU3LTcuMDctMi43Mi0xNC4zOS0zLjU0LTIxLjg3LDEzLjc0LDE1Ljk0LDM0LjA0LDI2LjA4LDU2Ljc1LDI2LjA4LDMzLjY0LDAsNjIuMS0yMi4xNiw3MS41Ny01Mi42NywyLjE4LTcuMDIsMy4zNi0xNC40OCwzLjM2LTIyLjIycy0xLjE5LTE1LjMtMy40LTIyLjM2Yy01Ljk3LDEzLjE3LTE5LjIsMjIuMzYtMzQuNjEsMjIuMzYtMjAuOTksMC0zOC0xNy0zOC0zNy45OCwwLTE0Ljk4LDguNy0yNy44OSwyMS4zLTM0LjA4LTYuNDQtMS44LTEzLjItMi44My0yMC4yMS0yLjgzLTE3LjExLDAtMzIuODMsNS44LTQ1LjQ0LDE1LjQ0LDEuNTctNS4yNywzLjI0LTEwLjU0LDUuMS0xNS44LDE3LjYtNDkuOTcsNDUuODgtOTIuNiw3OS43NC0xMjAuMzcuNTctLjQ3LDEuMTQtLjk3LDEuNzEtMS40MywyMy43Ny0xOS4wNCw0Ny45NS0yOC44OCw3MC4xMi0yOC44OSw4LDAsMTUuNzMsMS4yOCwyMy4wOSwzLjg3LDI3Ljc4LDkuNzcsNDguMDEsMzcuNDIsNTYuOTgsNzcuODYsNS40NCwyNC41Miw2LjMzLDUxLjc3LDIuODMsODAuMDJaTTQ3NC45MSwxMzIuMjZsNS42NS0yMi43LjA5LS4zN2M2LjY1LTI5LjU5LDEzLjkzLTQ3LjY1LDIwLjE0LTU4LjY0LDQuOTItOC43MSw5LjE3LTEyLjk5LDExLjktMTUuMDUsMS43My0xLjMsMi44NS0xLjcyLDMuMTUtMS44MWgwYy44NiwwLDEuNzMsMCwyLjU4LDAsLjU2LjE3LDMuOTgsMS40OCw4Ljg4LDcuNTgsNy4wOSw4Ljg0LDE3LjI4LDI3Ljc1LDI2LjMxLDY3LjkzbDUuNzQsMjMuMDdjNS40NCwyMS44NywxMC41LDQzLjg4LDE1LjMyLDY1Ljk2LTE5LjMxLTYtMzYuNzItMTMuNDgtNTIuMjItMjIuNDQtMTkuMDktMTEuMDQtMzUuMjMtMjQuMzItNDguNDEtMzkuOC4zLTEuMjQuNTgtMi40OC44OS0zLjcyWk00NjEuNywxODguNzJjMTIuNTYsMTAuOTcsMjYuNTcsMjAuNzEsNDEuOTksMjkuMjQsMjMuNzgsMTMuMTUsNTAuOTcsMjMuMzcsODEuNDMsMzAuNjgsNC4yOCwyMS45NSw4LjE5LDQzLjk4LDExLjg1LDY2LjA1Ljk1LDUuNzcsMS45MSwxMS41MywyLjgyLDE3LjMuOTEsNS43NSwxLjc2LDExLjUxLDIuNjMsMTcuMjcsMS4yLDcuOTYsMi4zNywxNS45MiwzLjQ4LDIzLjg5LTcuOTktLjU3LTE1LjgtMS4zNC0yMy4zOS0yLjM1LTMzLjI3LTQuNDMtNjIuNi0xMy4wNS04Ny44Ni0yNS44Ni05LTQuNTctMTcuNDYtOS42OS0yNS40MS0xNS4zMi02LjExLTQuMzItMTEuOTQtOC45My0xNy40NC0xMy44Ny0uNDQtLjQtLjgzLS44MS0xLjI2LTEuMjEtNC4wNC0zLjcxLTcuOC03LjUyLTExLjMxLTExLjM5LDYuNTQtMzguMzQsMTQuMDQtNzYuNTMsMjIuNDctMTE0LjQyWk00MTkuNjYsNDQyLjQ0YzMuMDctMjguMTcsNi43Mi01Ni4zNSwxMC44NC04NC40OSwxMS42Nyw5LjQ1LDI0LjM1LDE3Ljc3LDM3LjkzLDI1LjA4LDM5LjgyLDIxLjQyLDg3LjczLDMzLjY4LDE0My40NSwzNi41Ni45MSw3LjYyLDEuODYsMTUuMjQsMi42OSwyMi44NmwxMC40NCw5NS43Yy04LjgzLS4yOC0xNy40OC0uNzUtMjUuOTQtMS40NC0zOC4xNC0zLjExLTcyLjQ2LTEwLjMyLTEwMi40Ny0yMS42Ny0zMS4yMy0xMS44MS01Ny44Ni0yOC4xNS03OS41NS00OC41NWwyLjYyLTI0LjA0Wk00MDguNTksNTQzLjk5bDIuNS0yMi45YzEzLjE2LDkuNTQsMjcuNDEsMTguMDYsNDIuNzIsMjUuNDksNy44OCwzLjgyLDE2LjAxLDcuMzgsMjQuNDQsMTAuNjMsMzkuODksMTUuMzksODYuMDMsMjQuMjMsMTM3LjU5LDI2LjU0LTQuMDEsNS45Ni05LjExLDExLjI1LTE1LjE5LDE1LjQ5LTIxLjUzLDE1LjAzLTQ5LjA2LDIyLjY1LTgzLjUzLDIyLjY1LTE3Ljc2LDAtMzMuODgtMi4xMy00OC4zNC02LjI4LTEzLjYtMy45LTI1LjczLTkuNTktMzYuMjMtMTcuMTEtMTcuMTEtMTIuMjYtMjYuMjgtMzMuMTUtMjMuOTUtNTQuNTFaTTEyNy40NSw4NjkuNTVjLTcuODctNTEuOTgtOS45Mi0xMDAuODctOC40My0xNDUuMywzLjUyLS4xMSw2LjcxLS41MSw5LjM1LS45OCwzLjU4LS42NSw1LjA5LTQuOTMsMi43NC03LjY5LTMuNzUtNC40MS03LjM4LTguODktMTAuOTMtMTMuNDItLjAzLS4wNC0uMDctLjA5LS4xLS4xMy01LjM3LTYuODUtMTAuNDgtMTMuODQtMTUuMzctMjAuOTQtNS4xNi03LjQ5LTEwLjA1LTE1LjEyLTE0LjY3LTIyLjg3LTkuMzgtMTUuNzItMTcuNzEtMzEuOTItMjQuNzktNDguNTktMTMuNjUtMzIuMTMtMjMuMDItNjUuOTctMjcuODMtMTAwLjU4LTQuMjUtMzAuNTgtNC4yNC01Ny44Ny0yLjkzLTc3LjIzLjEtMS40Ny40Ni0yLjg2Ljk0LTQuMTksMi4wMS01LjU1LDcuMDItOS42NiwxMy4xNS0xMC4xNSwzNC4xMi0yLjc3LDczLjM2LDIuNjMsMTE3LjAyLDE2LjE0LDIuODkuODksNS43NywxLjgyLDguNjIsMi43Niw1Ljg2LDEuOTMsMTEuNjIsMy45NSwxNy4yOCw2LjA0LDUuODQsMi4xNSwxMS41OCw0LjM2LDE3LjE2LDYuNjIuOTYuMzksMS45MS43OCwyLjg3LDEuMTgsMjIsOS4wNCw0MS43MSwxOC42NCw1Ny42NSwyNy4wNiwzLjczLDEuOTcsNy44LTEuOTcsNS45Ni01Ljc2LTIuNTctNS4yNy01LjI0LTkuOTYtNy45MS0xNC4yMy0xMC4wNC0xNi4wNC0yMC4xMi0yNS4zMy0yNS43Mi0yOS43LTIuNzMtMi4xMy00LjQyLTMuMTUtNC40Ny0zLjE3LS4xLS4wNC0uMjEtLjA5LS4zMS0uMTMsMTEuOS05LjAyLDI0LjUtMTYuOTYsMzcuNjUtMjMuNjQsMTkuMDUtOS42OCwzOC4wOS0xNy43LDU2LjY3LTI0LjM1aDBjLjIzLS4wOS40NS0uMTYuNjctLjI0LDUuNC0xLjkyLDEwLjc2LTMuNzQsMTYuMDYtNS40My4wOS0uMDMuMTctLjA2LjI2LS4wOCw1LjMxLTEuNjksMTAuNTYtMy4yNywxNS43Ni00Ljc1LjM5LS4xMS43OC0uMjMsMS4xNy0uMzQsNS4wMy0xLjQyLDkuOTktMi43NCwxNC44OS0zLjk3LjUxLS4xMywxLjAzLS4yNiwxLjU0LS4zOSw0LjgzLTEuMiw5LjU5LTIuMzIsMTQuMjgtMy4zNi4yNi0uMDYuNTMtLjEzLjc5LS4xOSwwLDAsMCwwLDAsLjAxLDAsMCwuMDEsMCwuMDIsMC0uMDUuMzctLjEyLjczLS4xNywxLjEtLjM5LDIuNjgtLjczLDUuMzctMS4xLDguMDUtLjUzLDMuNzctMS4wMSw3LjU0LTEuNTMsMTEuMzEtLjk1LDcuMDQtMS45NiwxNC4wNy0yLjg1LDIxLjEyLS4xMi45OS0uMjMsMS45Ny0uMzUsMi45Ni0xLjUzLDEyLjI0LTIuOTksMjQuNDgtNC4zMiwzNi43MmwtMTEuMDcsMTAxLjU1Yy0uMDUuNDItLjA2Ljg1LS4xLDEuMjctLjE4LDEuODktLjMyLDMuNzgtLjM4LDUuNjYtLjA0LDEuMDItLjAzLDIuMDMtLjAzLDMuMDUsMCwxLjM4LjAxLDIuNzYuMDcsNC4xMywxLjE4LDI4LjMyLDE1LjA5LDU0LjgzLDM4LjI1LDcxLjQzLDI3LjQ5LDE5LjcsNjIuNTYsMjkuNywxMDQuMjIsMjkuN2gwYzQwLjkzLDAsNzUuNTMtOS42NiwxMDIuODMtMjguNzEsMjcuODgtMTkuNDYsNDIuOS01Mi42MiwzOS4yLTg2LjU0bC0xMS4wNy0xMDEuNTRjLTMuMDUtMjcuOTQtNi42NC01NS44OS0xMC43LTgzLjgxLDEuMDMuMiwyLjA2LjQxLDMuMS42MiwzNy40Miw3LjU4LDgwLjM3LDIwLjI3LDEyMy43NSw0MS4zNSwyLjQ4LDEuMjEsNC45NywyLjQxLDcuNDUsMy42OCwxMy4yMiw2LjcyLDI1Ljg5LDE0LjcyLDM3Ljg2LDIzLjgxLS42NS4zOC0xNS40Niw5LjM4LTMwLjEzLDMyLjgzLTIuNjcsNC4yNy01LjM0LDguOTYtNy45MSwxNC4yMy0xLjg1LDMuNzksMi4yMiw3LjczLDUuOTUsNS43NiwxNi41My04LjczLDM3LjEtMTguNzQsNjAuMS0yOC4wNywzLjI0LTEuMzIsNi41NC0yLjYxLDkuODctMy44OSwyLjQtLjkzLDQuODMtMS44NCw3LjI4LTIuNzQsNS42NS0yLjA5LDExLjQxLTQuMTEsMTcuMjYtNi4wNCwzLS45OSw2LjAyLTEuOTcsOS4wNi0yLjkxLDQzLjY2LTEzLjUxLDgyLjktMTguOTEsMTE3LjAyLTE2LjE0LDUuMTkuNDIsOS41NywzLjQ0LDEyLjAyLDcuNzIsMS4xNCwxLjk5LDEuOSw0LjIyLDIuMDcsNi42MywxLjMxLDE5LjM2LDEuMzIsNDYuNjUtMi45Myw3Ny4yMy00LjgxLDM0LjYxLTE0LjE4LDY4LjQ1LTI3LjgyLDEwMC41OC03LjIsMTYuOTUtMTUuNjgsMzMuNDItMjUuMjcsNDkuMzktNC42Myw3LjcxLTkuNTIsMTUuMzEtMTQuNjgsMjIuNzctNC43OCw2LjktOS43NSwxMy43LTE0Ljk3LDIwLjM3bC0uNTItLjczYy4wMy40My4wNS44Ny4wOCwxLjMxLTMuNDEsNC4zMy02LjksOC42MS0xMC40OSwxMi44NC0yLjM1LDIuNzYtLjg0LDcuMDUsMi43NCw3LjY5LDIuNS40NSw1LjQ4Ljg0LDguNzcuOTcsMS41Miw0NS4xMi0uNjMsOTQuODQtOC44LDE0Ny43Mi0xMy43Ni00MS4zNy0zOS4yMi03MC4yMS03My4xMS04Mi4xMy0zOS4xNi0xMy43OC04My43My0yLjk1LTEyNS40OSwzMC40OS0yOC45NCwyMy4xOC01NC4yNCw1NS41My03My41Niw5My40Ny03LjAzLDEzLjgtMTMuMjksMjguMzItMTguNjEsNDMuNDMtMTIuODQsMzYuNDctMTkuNDQsNzMuNjMtMTkuNjIsMTA4LjY3LS4wNiwxMC43Ny41MSwyMS4zMiwxLjY4LDMxLjYtNS45LTMuNzgtMTIuNDUtNy40LTE5LjcyLTEwLjYzLTE4LTguMDItNDAuMjYtMTMuNzEtNjcuMjctMTMuNzJoLS4wNGMtMjYuNDEsMC00OC4zLDUuNDUtNjYuMDgsMTMuMTktNy44MywzLjQxLTE0LjgzLDcuMjYtMjEuMSwxMS4zLDEuMTgtMTAuMzIsMS43NS0yMC45MiwxLjctMzEuNzMtLjE4LTM1LjAzLTYuNzgtNzIuMjEtMTkuNjItMTA4LjY3LTE5Ljk2LTU2LjY2LTUyLjctMTA1LjI5LTkyLjE3LTEzNi45LTUuMjYtNC4yMS0xMC41Ni04LjA2LTE1Ljg5LTExLjU1LTM3LjAxLTI0LjI0LTc1LjM3LTMxLTEwOS42MS0xOC45Ni0zMy4yMiwxMS42OS01OC4zMiwzOS42Ni03Mi4yNiw3OS43NFpNMjY4Ljg4LDExODEuMzVjLTYuODgtMy45NS0xMy43Ny04LjYzLTIwLjY0LTE0LjEzLTEuNzctMS40Mi0zLjUyLTIuOTEtNS4yNi00LjQxLS4zMy0uMjktLjY3LS41NS0xLS44NC02LjA2LTUuMjktMTEuOTItMTEuMDgtMTcuNTctMTcuMjgtMjQuMDItMjYuNC00NC4wMi02MC42NS01Ny42My05OS4yOWgwYy04LjU0LTI0LjIzLTE0LjAxLTQ4LjctMTYuMzktNzIuMzgtMi42MS0yNS45NC0xLjQ5LTUwLjkyLDMuNTMtNzMuNTUsNi42NC0yOS45NCwxOS40Ny01Mi44NSwzNi45Ni02Ni43MSw2LjEzLTQuODYsMTIuODItOC42MiwyMC4wMi0xMS4xNiwyNy43OC05Ljc4LDYwLjg3LS45LDkzLjIyLDI1LDM0LjYzLDI3LjczLDYzLjU2LDcwLjk5LDgxLjQ2LDEyMS44MS4xNi40Ni4zLjkyLjQ2LDEuMzksMi45Myw4LjQyLDUuNDgsMTYuODcsNy42NywyNS4zLDMuMjIsMTIuNDEsNS42NCwyNC43Nyw3LjI0LDM2Ljk3LTYuOTEsNy4xNC0xNi41OCwxMS41OS0yNy4zLDExLjU5LTIwLjk5LDAtMzgtMTctMzgtMzcuOTgsMC0xNC45OCw4LjY5LTI3Ljg5LDIxLjI5LTM0LjA3LTYuNDQtMS44LTEzLjItMi44NC0yMC4yMi0yLjg0LTQxLjM4LDAtNzQuOTMsMzMuNTMtNzQuOTMsNzQuODksMCw3Ljc0LDEuMTcsMTUuMiwzLjM1LDIyLjIyLDkuNDcsMzAuNTEsMzcuOTMsNTIuNjcsNzEuNTcsNTIuNjcsMjguODIsMCw1My44MS0xNi4yOSw2Ni4zNC00MC4xNC0uNTcsMTIuNDYtMi4wOSwyNC41LTQuNjMsMzUuOTQtNi41MSwyOS4zNi0xOC45OSw1MS45NC0zNS45Niw2NS44Ny02LjQsNS4yNS0xMy40MSw5LjMxLTIxLjAyLDExLjk5LTIxLjg3LDcuNy00Ny4wNiwzLjc3LTcyLjU4LTEwLjg4Wk0zNDEuMTYsMTI0MC41NWMtNS4yNy0zLjY5LTEwLjM0LTcuMzgtMTUuMjMtMTEuMDQsOS4xMS0uNjYsMTguMDUtMi40NiwyNi43Mi01LjUyLDIwLjA2LTcuMDYsMzcuMTUtMjAuMDcsNTAuNjMtMzguMDcsMy45Ny01LjI5LDcuNi0xMS4wNCwxMC45Mi0xNy4xOGwuMDUuMDJzLjItLjQzLjUzLTEuMDljLjQyLS44Ljg2LTEuNTgsMS4yOC0yLjM5LDMuMDgtNS41MiwxMC4yMy0xNi44MSwyMi40OS0yNy45MiwyMi4zNS0yMC4yNiw1MC41OC0zMC41Myw4My45NC0zMC41MywxOS4xMiwwLDM2LjU1LDMuMzksNTIuMTcsMTAuMDksNy4wOCwzLjA0LDEzLjc4LDYuNzcsMjAuMSwxMS4xNyw0LjA1LDIuODIsNy45NSw1Ljg5LDExLjY3LDkuMjYsMTEuMTEsMTAuMDcsMTguMDIsMjAuMjksMjEuNTIsMjYuMjMsMTQuNjYsMjkuNzYsMzYuNjUsNTAuNzEsNjQuMjMsNjAuNDEsMi41Ni45LDUuMTUsMS42Nyw3Ljc1LDIuMzYsNi41OCwxLjc1LDEzLjMsMi43OCwyMC4xMSwzLjItMi40LDEuOC00Ljg1LDMuNi03LjM1LDUuNDItMi41NiwxLjg1LTUuMTYsMy43MS03LjgsNS41Ni0uMDQuMDMtLjA5LjA2LS4xMy4wOS00Ljk4LDMuNDgtOS44OSw2LjgtMTQuNzIsOS45NS0zLjYzLDIuMzctNy4yMSw0LjYzLTEwLjc2LDYuODItMS41OS45OC0zLjE4LDEuOTctNC43NSwyLjkyLS43OS40OC0xLjU4Ljk0LTIuMzcsMS40MS02NS45NSwzOS4yOS0xMTYuNjUsNDguMjktMTQ5LjE0LDQ4LjI5LTI3Ljg3LDAtNjkuMTMtNi42Mi0xMjEuOTItMzMuMjktMi4xMS0xLjA3LTQuMjQtMi4xNy02LjM5LTMuMy01LjAzLTIuNjUtMTAuMTYtNS40Ny0xNS4zOS04LjUtNC45Mi0yLjg1LTkuOTMtNS44Ni0xNS4wMy05LjA1LTcuNTMtNC43Mi0xNS4yMy05LjgxLTIzLjEzLTE1LjM0Wk0zOTMuODEsMTY0OS45djE1LjZoLTM4LjI2bC0xMS4zNy0zMi44NmMtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMTEsMGwtMTEuMzcsMzIuODZoLTM3LjM2bC4zLTYuNjYsMS43NC0zOC4zOGgxMDEuNDJ2MjkuNDRaTTUwNy4xNCwxNjAzLjloLS4wMWwtMy4yMiwyOS4xNWgtMjcuMzZsLTYuNzQtMTkuNDhjLS44NC0yLjQzLTQuMjctMi40My01LjExLDBsLTYuNzQsMTkuNDhoLTI5LjE5bC43NS0yOS4yaDc3LjYydi4wNVpNNjU1LjE3LDE2NjYuNzVoMHMtMS4zOSwxMS40NS0xLjM5LDExLjQ1bC0xLjk1LDE2LjFoLTQyLjc5bC0xMi4zNi0zNS43M2MtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMTEsMGwtMTIuMzYsMzUuNzNoLTQ4LjE1bDMuMDQtMjcuNTUsMS44Ni0xNi44NCwxLjM2LTEyLjMyaDEyMS4zOWwtMy41NCwyOS4xNlpNNjgxLjI5LDE0OTMuM2MtNS4zMywxNS40LTguOSwzMS4zNS0xMC44Niw0Ny41NGwtMy40OCwyOC43Mi0uMywyLjQ3LTIuMDQsMTYuODUtMS44MiwxNS4wM2gtMTIxLjc1bDEuODYtMTYuOSwxLjg2LTE2Ljg1LDMuNjEtMzIuNjhjMS42Ni0xNS4wOC0uNjgtMzAuMzgtNi43OC00NC4yNy0yLjExLTQuODItNC42Ni05LjQ0LTcuNi0xMy44MmwtOS0xMy40LTE0LjkzLTIyLjIxLTkuMzItMTMuODdjLTEuNDQtMi4xNC00LjA5LTIuMzQtNS45LTEuMTctMS4wNC42Ny0xLjgsMS43OS0xLjg5LDMuMjctLjM5LDYuNTUtLjE3LDE1LjQ2LDEuOCwyNi41OSwxLjk2LDExLjA2LDUuNjUsMjQuMjksMTIuMTksMzkuNTZsMy43OSw4LjYyYy40NSwxLjAzLjg3LDIuMDcsMS4yNSwzLjEyLDIuNzgsNy42MiwzLjc4LDE1LjgyLDIuODgsMjMuOWwtMi41NCwyMy4wMi0xLjQ4LDEzLjM2aC04MC40OGwuNzEtMjcuNTFjLjItOCwyLjMyLTE1LjksNi4wMi0yMywuMjQtLjQ2LjQyLS45NC42Ny0xLjM5bDIuOC00Ljk1YzcuNjUtMTEuMDUsMTIuMjUtMjEuNSwxNC45Ni0zMC42LDMuNDktMTEuNzEsMy44Ni0yMS4xOSwzLjYyLTI2LjgxLS4wOS0yLjExLTEuNjktMy42OS0zLjU4LTMuOTktLjc0LS4xMi0xLjUzLS4wNi0yLjI5LjI3LTIxLjgxLDkuMzMtMzUuMjUsMzIuNC0zNi42NSwzNC44OGwtOC4yNiwxNC43OWMtNi44MSwxMi4xOC0xMC42LDI2LTEwLjk2LDM5Ljk1bC0uNzMsMjguMzctLjQzLDE2LjYxaC0xMDIuMzRsMy4xMS02OC41NWMxLjE4LTI2LjEyLDYuMTktNTEuODcsMTQuODctNzYuNTNsMzIuMTctOTEuMzZjNi41Ni0xOC42MywxNS44OC0zNS44MSwyNy40LTUxLjE2LDE0LjE3LDcuOCwyOC4yMSwxNC42Nyw0Mi4wNSwyMC40NSw0LjM0LDEuODEsOC42NiwzLjUsMTIuOTYsNS4xMSwzMy42MSwxMi41OCw2Ni4wMywxOC45OCw5Ni41MywxOC45OSwzMC4yOCwwLDYyLjQ0LTYuMjksOTUuNzgtMTguNjksNC41NS0xLjY5LDkuMTItMy40OCwxMy43MS01LjQsMTQuMTYtNS45MiwyOC41NS0xMi45Niw0My4wNi0yMSw4Ljc0LTQuODQsMTcuNTItMTAuMDMsMjYuMzMtMTUuNjEsMy43NSwzLjg3LDcuMTksNy45MywxMC40NSwxMi4xLDMuNTQsNC41MSw2Ljg0LDkuMTcsOS44LDE0LjAzLDMuMSw1LjA4LDUuODMsMTAuMzgsOC4yOSwxNS44MywyLjU1LDUuNjUsNC44NSwxMS40NCw2LjcxLDE3LjQ4LDMuMjcsMTAuNjQsNi4zLDIxLjM0LDkuMTMsMzIuMDQsMS43MSw2LjQ4LDMuMzQsMTIuOTYsNC45LDE5LjQyLDEuNDUsNiwyLjg0LDExLjk5LDQuMTYsMTcuOTYuNjksMy4xMiwxLjM4LDYuMjQsMi4wNCw5LjM1LjU4LDIuNzQsMS4xNSw1LjQ4LDEuNyw4LjIxLDEwLjg1LDUzLjE3LDE2Ljk3LDEwMy40NywyMC40MSwxNDIuNThoLTc4Ljg3bDUuMjYtNDMuMzhjMy45NS0zMi41OS4yMi01MC4xNi0zLjUzLTU5LjEzLTIuNjMtNi4zLTUuMjgtOC4zNS01LjI4LTguMzVoLS4wM3MwLDAsMCwwYy02LjQyLDguMTctMTEuNzMsMjAuNDYtMTUuNzcsMzIuMTNaTTc4My40NiwxNjMzLjA2aC00MC43OGwtNi43NC0xOS40OGMtLjg0LTIuNDMtNC4yNy0yLjQzLTUuMSwwbC02Ljc0LDE5LjQ4aC0zMC44NWwzLjMxLTI3LjMzaDg1LjU2Yy43NywxMS44MSwxLjE1LDE4Ljc2LDEuNDMsMjcuMzNoLS4wOFpNOTg0LjU2LDEyNzIuODNjLTEyLjkxLDIzLjI5LTI2LjI4LDQ3LjM3LTUzLjE1LDYxLjA2LTM0LjE0LDE3LjM5LTcxLjI5LDcuNzMtODUuNjcsMi43NmwtMjQuNDQtOC40MmMtNS44LTItMTEuMDUsNC4xNS04LjE0LDkuNTdsMTIuMjMsMjIuNzZjLjQzLjc5LDcuMDQsMTIuODgsMTkuNjMsMjQuMjgtMTQuMDEsNS44LTI4LjUzLDkuNDItNDMuNDIsMTAuODQtMy45OC4zNy05LjE4Ljg1LTE1LjA4LDEuMS0xLjgzLTcuOTQtMy43Ni0xNS45LTUuODItMjMuOS0zLjQ1LTEzLjQyLTcuMi0yNi44OC0xMS4zMi00MC4zLTMuMzYtMTAuOTQtNy42OS0yMS4yOS0xMi44NC0zMS4xMyw5LjM1LTYuODMsMTkuNzMtMTIuOTEsMzEuMy0xNy42OCw0NS4wMS0xOC41Nyw5Ny43MS0xNC41NCwxMDMuNTctMTQuMDIsOS4xOC44MiwxNi41NiwyLjAzLDIzLjcxLDMuMjIsMTUuMzksMi41NSwyOC42OCw0Ljc1LDQ3Ljc1LjYsMy41MS0uNzYsNi45Ni0xLjc0LDEwLjM5LTIuODQsNS4zMi0xLjcsMTAuNTctMy43NSwxNS42OS02LjI1LTEuNCwyLjgyLTIuODYsNS42LTQuMzksOC4zNlpNMzc1LjcyLDczNS4wNWMxLjQ5LDguODMsNC4wNiwxOS41Myw4LjQsMzEsLjY0LDEuNjksMS4zMiwzLjM5LDIuMDQsNS4xMSw1LjA2LDEyLjA5LDEyLjE1LDI0LjgyLDIyLjEsMzcuMDMsMi42NCwzLjI0LDUuNDQsNi40NCw4LjQ5LDkuNTgsOS40Nyw5LjA5LDIwLjM1LDE3LjY4LDMyLjgxLDI1LjIxLDMuNzksMi4zLDcuNjYsNC40NCwxMS41OSw2LjQ0LDI3LjU1LDE0LjA0LDU4LjU1LDIxLjA3LDkyLjc2LDIxLjA3LDIyLjE2LDAsNDUuNjYtMi45Niw3MC40NC04Ljg3LDMuNzYtLjksNy41NS0xLjg1LDExLjM3LTIuODhsOC4xNC0yLjIxLDguMTgtMi4yMmM2LjIxLTEuNjksNy45OC05LjY0LDMuMDctMTMuNzlsLS40Ni0uMzktMTIuNDYtMTAuNTRjLS4wNi0uMDUtMS44My0xLjU3LTQuNzgtNC4zNS0yLjIyLTIuMDktNS4wOC00Ljg4LTguNDgtOC40aC45NWMyMS44NSwwLDQ5LjE1LTUuMjQsNzkuMTItMjIuNzEsNS4xLTIuOTcsMTAuMjYtNi4yNSwxNS41LTkuOTcsMCwwLDAsMCwuMDIsMGgtLjAxczEyLjgyLTkuMSwxMi44Mi05LjFjNS43NC00LjA3LDMuNzYtMTMuMDMtMy4xNi0xNC4zNC00Ny4zMi05LTcwLjU2LTI4LjQtODEuNjgtNDIuODYtMS44MS0yLjM2LTQuODMtMi4yMi02LjY1LS42My0xLjA5Ljk0LTEuNzUsMi40LTEuNDUsNC4xNiwxLjA0LDYuMjksMi43OCwxMy4zNiw1LjU4LDIwLjMyLDQuMjEsMTAuNDUsMTAuODQsMjAuNjgsMjEuMzUsMjcuNzMsMS45LDEuMTYsMy44LDIuMjcsNS42NywzLjMtMS43Ny44LTMuNTQsMS41NC01LjI5LDIuMjUtNS4xLDIuMDYtMTAuMTIsMy43Mi0xNS4wNCw1LjA1LTUyLjI5LDE0LjEtOTMuOTktMTAuOTktMTE0LjM5LTI3LjQ0LTMuNy0yLjk4LTguOTQuOTItNy4wOSw1LjMsMi45Miw2LjkyLDYuODYsMTUuMjcsMTEuOSwyMy45NSwxMS4xNywxOS4yNywyNy43NCw0MC4yLDUwLjYyLDUwLjk0LTkuOTUsMi4xNS0xOS40OCwzLjUtMjguNjksNC4yNi05Ni4wOCw3Ljk2LTE1Mi42NS01NS4wNy0xNzguNDItOTQuODItMi40MS0zLjcxLTQuNTgtNy4yNC02LjQ1LTEwLjQ3LS4yLS4zNC0uNDYtLjU3LS43MS0uODQtMi44OS0zLjEtOC41MS0uNzUtNy43NCwzLjg4LjAxLjA4LjAzLjE2LjA0LjI0Wk04OTMuOTYsNjExLjY5YzIuODQsNC42OCw5LjUzLDUuNCwxMy4zOSwxLjQ2LDIuNC0yLjQ0LDQuNjktNC44Niw2LjkxLTcuMjYsNS4xNC01LjU2LDkuNzktMTAuOTksMTQuMDQtMTYuMyw1LTYuMjUsOS40Mi0xMi4zMiwxMy4zLTE4LjIsMzMuNjMtNTAuOTQsMjcuNTYtODcuNTEsMjIuODYtMTAxLjgtMS4yNy0zLjktNS4zOC02LjI4LTkuNTMtNS41LTE4LDMuMzctMzUuMjksOS4yNC01MC44NiwxNS45LTUuMzgsMi4zLTEwLjU1LDQuNjktMTUuNDcsNy4xMS01LjMyLDIuNjItMTAuMzQsNS4yNS0xNSw3Ljg0LTEzLjQ5LDcuNDgtMjQuMDQsMTQuNDYtMzAuMTksMTguNzZoMGMtMy40OSwyLjQ2LTQuNDksNy4wNi0yLjMxLDEwLjY3bDUyLjg1LDg3LjMzWk0yMDMuMjIsNTEzLjY5aDBjLTYuMjItNC4zNi0xNi45Mi0xMS40NC0zMC42Mi0xOS00LjY3LTIuNTgtOS42OS01LjItMTUtNy44MS00LjkzLTIuNDItMTAuMS00Ljc5LTE1LjQ5LTcuMDktMTUuNDUtNi41Ny0zMi41OC0xMi4zNy01MC40LTE1LjcxLTQuMTUtLjc4LTguMjUsMS42LTkuNTMsNS41LTQuNjcsMTQuMjMtMTAuNzIsNTAuNTUsMjIuNDMsMTAxLjE1LDMuODcsNS45MSw4LjI4LDEyLjAxLDEzLjI5LDE4LjMsNC4yMyw1LjMxLDguODcsMTAuNzUsMTQsMTYuMzEsMi4zNywyLjU4LDQuODEsNS4xNyw3LjM5LDcuOCwzLjg2LDMuOTQsMTAuNTQsMy4yMiwxMy4zOC0xLjQ2bDUyLjg1LTg3LjMzYzIuMTgtMy42LDEuMTgtOC4yMS0yLjMxLTEwLjY2Wk00NTAuNDEsMTI1Ny42MnYtLjAyYzkuMjEtMy44NSwyOC4xNi04Ljc1LDQ1LjQxLDUuOTMsMi40NCwyLjA4LDUuNDItMS4zMyw0LjMzLTQuOTUtMy4zNy0xMS4yLTExLjA3LTI2LjIyLTI4LjE1LTI2LjIxLTE1LjQsMC0yMi4yMiwxMS4zOC0yNS4xNSwxOS42NS0xLjEyLDMuMTYsMS4wOSw2LjYyLDMuNTcsNS41OVpNNTQ4LjgsMTI2My41M2MxNy4yNC0xNC42OCwzNi4xOS05Ljc4LDQ1LjQtNS45M3YuMDJjMi40OCwxLjAzLDQuNy0yLjQzLDMuNTctNS41OS0yLjkzLTguMjctOS43NS0xOS42NS0yNS4xNS0xOS42NS0xNy4wOCwwLTI0Ljc4LDE1LjAxLTI4LjE1LDI2LjIxLTEuMDksMy42MiwxLjg5LDcuMDMsNC4zMyw0Ljk1WiIgZmlsbD0iIzA2MjM0YyIvPjwvc3ZnPg==" +values: + files: + - zarf-values.yaml + schema: zarf-values.schema.json + components: - name: uds-crds required: true diff --git a/src/authservice/chart/values.yaml b/src/authservice/chart/values.yaml index ea4e9af41c..e1363ce2e1 100644 --- a/src/authservice/chart/values.yaml +++ b/src/authservice/chart/values.yaml @@ -13,7 +13,7 @@ image: nameOverride: "authservice" redis: - uri: "###ZARF_VAR_AUTHSERVICE_REDIS_URI###" + uri: "" egressCidr: "" internal: enabled: false diff --git a/src/authservice/common/zarf.yaml b/src/authservice/common/zarf.yaml index 61f3f4a9c6..a237423948 100644 --- a/src/authservice/common/zarf.yaml +++ b/src/authservice/common/zarf.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Defense Unicorns +# Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial kind: ZarfPackageConfig @@ -15,3 +15,12 @@ components: localPath: ../chart version: 1.0.1 namespace: authservice + templatedValuesFiles: + - ../values/values.yaml + values: + - sourcePath: .authservice.authservice + targetPath: . + excludePaths: + - .authservice.authservice.image + - .authservice.authservice.securityContext + - .authservice.authservice.podSecurityContext diff --git a/src/authservice/values/values.yaml b/src/authservice/values/values.yaml new file mode 100644 index 0000000000..7763ea8f52 --- /dev/null +++ b/src/authservice/values/values.yaml @@ -0,0 +1,5 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +redis: + uri: '{{index .Variables "AUTHSERVICE_REDIS_URI"}}' diff --git a/src/authservice/zarf-values.yaml b/src/authservice/zarf-values.yaml new file mode 100644 index 0000000000..8a8580d7a2 --- /dev/null +++ b/src/authservice/zarf-values.yaml @@ -0,0 +1,6 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the UDS Core Authservice source package. +authservice: + authservice: {} diff --git a/src/authservice/zarf.yaml b/src/authservice/zarf.yaml index 506790d9de..2651f28ea9 100644 --- a/src/authservice/zarf.yaml +++ b/src/authservice/zarf.yaml @@ -9,6 +9,10 @@ metadata: description: "UDS Core Authservice" url: https://github.com/istio-ecosystem/authservice +values: + files: + - zarf-values.yaml + components: - name: authservice required: true diff --git a/src/envoy-gateway/common/zarf.yaml b/src/envoy-gateway/common/zarf.yaml index 15793ecd37..ee7a44f4ce 100644 --- a/src/envoy-gateway/common/zarf.yaml +++ b/src/envoy-gateway/common/zarf.yaml @@ -23,3 +23,14 @@ components: serverSideApply: "false" valuesFiles: - "../values/values.yaml" + values: + - sourcePath: .envoy-gateway.envoy-gateway + targetPath: . + excludePaths: + - .envoy-gateway.envoy-gateway.global.imageRegistry + - .envoy-gateway.envoy-gateway.global.images.envoyGateway.image + - .envoy-gateway.envoy-gateway.global.images.ratelimit.image + - .envoy-gateway.envoy-gateway.global.images.envoyProxy.image + - .envoy-gateway.envoy-gateway.deployment.envoyGateway.image + - .envoy-gateway.envoy-gateway.deployment.envoyGateway.securityContext + - .envoy-gateway.envoy-gateway.certgen.job.securityContext diff --git a/src/envoy-gateway/zarf-values.yaml b/src/envoy-gateway/zarf-values.yaml new file mode 100644 index 0000000000..c32251fd3c --- /dev/null +++ b/src/envoy-gateway/zarf-values.yaml @@ -0,0 +1,7 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the Envoy Gateway package. +envoy-gateway: + envoy-gateway: {} + uds-envoy-gateway-config: {} diff --git a/src/envoy-gateway/zarf.yaml b/src/envoy-gateway/zarf.yaml index 8fdd109254..1f9ffb6335 100644 --- a/src/envoy-gateway/zarf.yaml +++ b/src/envoy-gateway/zarf.yaml @@ -7,6 +7,10 @@ metadata: description: "UDS Core Envoy Gateway" url: https://github.com/envoyproxy/gateway +values: + files: + - zarf-values.yaml + components: - name: envoy-gateway required: false @@ -24,6 +28,12 @@ components: localPath: chart valuesFiles: - "values/upstream-values.yaml" + values: + - sourcePath: .envoy-gateway.uds-envoy-gateway-config + targetPath: . + excludePaths: + - .envoy-gateway.uds-envoy-gateway-config.global.images.envoyGateway.image + - .envoy-gateway.uds-envoy-gateway-config.global.images.envoyProxy.image images: - docker.io/envoyproxy/gateway:v1.8.2 - docker.io/envoyproxy/envoy:distroless-v1.38.3 @@ -44,6 +54,12 @@ components: localPath: chart valuesFiles: - "values/registry1-values.yaml" + values: + - sourcePath: .envoy-gateway.uds-envoy-gateway-config + targetPath: . + excludePaths: + - .envoy-gateway.uds-envoy-gateway-config.global.images.envoyGateway.image + - .envoy-gateway.uds-envoy-gateway-config.global.images.envoyProxy.image images: - registry1.dso.mil/ironbank/opensource/envoy_proxy/community/gateway:v1.8.2 - registry1.dso.mil/ironbank/opensource/envoy_proxy/envoy-distroless:v1.38.3 @@ -64,6 +80,12 @@ components: localPath: chart valuesFiles: - "values/unicorn-values.yaml" + values: + - sourcePath: .envoy-gateway.uds-envoy-gateway-config + targetPath: . + excludePaths: + - .envoy-gateway.uds-envoy-gateway-config.global.images.envoyGateway.image + - .envoy-gateway.uds-envoy-gateway-config.global.images.envoyProxy.image images: - cgr.dev/defenseunicorns.com/envoy-gateway-fips:v1.8.2 - cgr.dev/defenseunicorns.com/envoy-fips:distroless-v1.38.3 diff --git a/src/falco/common/zarf.yaml b/src/falco/common/zarf.yaml index 285d43e4fe..3c00b69f37 100644 --- a/src/falco/common/zarf.yaml +++ b/src/falco/common/zarf.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Defense Unicorns +# Copyright 2025-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial kind: ZarfPackageConfig @@ -18,9 +18,28 @@ components: localPath: ../chart valuesFiles: - ../chart/values.yaml + values: + - sourcePath: .falco.uds-falco-config + targetPath: . - name: falco url: https://falcosecurity.github.io/charts version: 9.1.0 namespace: falco valuesFiles: - ../values/values.yaml + values: + - sourcePath: .falco.falco + targetPath: . + excludePaths: + - .falco.falco.image + - .falco.falco.falcosidekick.image + - .falco.falco.podSecurityContext + - .falco.falco.containerSecurityContext + - .falco.falco.falcosidekick.podSecurityContext + - .falco.falco.falcosidekick.securityContext + - .falco.falco.falcosidekick.containerSecurityContext + - .falco.falco.driver.loader.initContainer.image + - .falco.falco.driver.loader.initContainer.securityContext + - .falco.falco.falcoctl.image + - .falco.falco.falcoctl.artifact.install.securityContext + - .falco.falco.falcoctl.artifact.follow.securityContext diff --git a/src/falco/zarf-values.yaml b/src/falco/zarf-values.yaml new file mode 100644 index 0000000000..459db56d89 --- /dev/null +++ b/src/falco/zarf-values.yaml @@ -0,0 +1,7 @@ +# Copyright 2025-2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the Falco package. +falco: + falco: {} + uds-falco-config: {} diff --git a/src/falco/zarf.yaml b/src/falco/zarf.yaml index 9dcd38c04a..4d823a7b7c 100644 --- a/src/falco/zarf.yaml +++ b/src/falco/zarf.yaml @@ -10,6 +10,11 @@ metadata: url: https://falco.org/docs/ # @lulaEnd cd540e07-153b-424c-90e0-c0daec56b16a # @lulaEnd 98dd4970-223e-458d-8b49-7432ace5331d + +values: + files: + - zarf-values.yaml + components: - name: falco description: "Deploy Falco" diff --git a/src/grafana/chart/templates/uds-package.yaml b/src/grafana/chart/templates/uds-package.yaml index aa4c882e7a..116e563bbd 100644 --- a/src/grafana/chart/templates/uds-package.yaml +++ b/src/grafana/chart/templates/uds-package.yaml @@ -12,13 +12,13 @@ spec: - name: Grafana clientId: uds-core-admin-grafana redirectUris: - {{- if .Values.adminDomain }} - - "https://grafana.{{ .Values.adminDomain }}/login/generic_oauth" - - "https://grafana.{{ .Values.adminDomain }}/login" - {{- else }} - - "https://grafana.admin.{{ .Values.domain }}/login/generic_oauth" - - "https://grafana.admin.{{ .Values.domain }}/login" + {{- $domain := tpl .Values.domain . }} + {{- $admin := tpl .Values.adminDomain . }} + {{- if or (not $admin) (eq $admin "###ZARF_VAR_ADMIN_DOMAIN###") }} + {{- $admin = printf "admin.%s" $domain }} {{- end }} + - "https://grafana.{{ $admin }}/login/generic_oauth" + - "https://grafana.{{ $admin }}/login" {{- if .Values.sso.groups }} groups: anyOf: @@ -136,4 +136,3 @@ spec: {{- with .Values.additionalNetworkAllow }} {{ toYaml . | nindent 6 }} {{- end }} - diff --git a/src/grafana/chart/values.yaml b/src/grafana/chart/values.yaml index 33c5209357..79f5ded63c 100644 --- a/src/grafana/chart/values.yaml +++ b/src/grafana/chart/values.yaml @@ -1,8 +1,9 @@ # Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial -domain: "###ZARF_VAR_DOMAIN###" -adminDomain: "###ZARF_VAR_ADMIN_DOMAIN###" +# Explicit values take precedence, then package variables, then admin.. +domain: '{{default .Variables.DOMAIN .Values.global.domain}}' +adminDomain: '{{default (default (printf "admin.%s" (default .Variables.DOMAIN .Values.global.domain)) .Variables.ADMIN_DOMAIN) .Values.global.adminDomain}}' # optional extra datasources to be added to configmap extraDatasources: [] diff --git a/src/grafana/common/zarf.yaml b/src/grafana/common/zarf.yaml index 342a4281f7..6d37bd71df 100644 --- a/src/grafana/common/zarf.yaml +++ b/src/grafana/common/zarf.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Defense Unicorns +# Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial kind: ZarfPackageConfig @@ -15,11 +15,33 @@ components: namespace: grafana version: 0.1.0 localPath: ../chart - valuesFiles: + templatedValuesFiles: - ../chart/values.yaml + values: + - sourcePath: .grafana.uds-grafana-config + targetPath: . - name: grafana url: https://grafana-community.github.io/helm-charts version: 12.3.3 namespace: grafana - valuesFiles: + templatedValuesFiles: - ../values/values.yaml + values: + - sourcePath: .grafana.grafana + targetPath: . + excludePaths: + - .grafana.grafana.sidecar + - .grafana.grafana.image + - .grafana.grafana.initChownData.image + - .grafana.grafana.downloadDashboardsImage + - .grafana.grafana.global.imageRegistry + - .grafana.grafana.securityContext + - .grafana.grafana.containerSecurityContext + - .grafana.grafana.initChownData.securityContext + - .grafana.grafana.downloadDashboards.securityContext + - .grafana.grafana.imageRenderer.image + - .grafana.grafana.imageRenderer.securityContext + - .grafana.grafana.imageRenderer.containerSecurityContext + - .grafana.grafana.testFramework.image + - .grafana.grafana.testFramework.securityContext + - .grafana.grafana.testFramework.containerSecurityContext diff --git a/src/grafana/values/values.yaml b/src/grafana/values/values.yaml index bc11923310..99e49e0f04 100644 --- a/src/grafana/values/values.yaml +++ b/src/grafana/values/values.yaml @@ -1,5 +1,9 @@ # Copyright 2024 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial +# +# Explicit values take precedence, then package variables, then admin.. +domain: '{{default .Variables.DOMAIN .Values.global.domain}}' +adminDomain: '{{default (default (printf "admin.%s" (default .Variables.DOMAIN .Values.global.domain)) .Variables.ADMIN_DOMAIN) .Values.global.adminDomain}}' sidecar: dashboards: @@ -47,7 +51,7 @@ extraConfigmapMounts: grafana.ini: server: - root_url: https://grafana.{{ "###ZARF_VAR_ADMIN_DOMAIN###" | default "admin.###ZARF_VAR_DOMAIN###" }} + root_url: 'https://grafana.{{default (default (printf "admin.%s" (default .Variables.DOMAIN .Values.global.domain)) .Variables.ADMIN_DOMAIN) .Values.global.adminDomain}}' # Disable telemetry that doesn't function in the airgap analytics: reporting_enabled: false @@ -70,10 +74,9 @@ grafana.ini: login_attribute_path: preferred_username name_attribute_path: name name: UDS Identity Service - auth_url: https://sso.###ZARF_VAR_DOMAIN###/realms/uds/protocol/openid-connect/auth - # Note: this has to be the external URL to ensure that the token issuer checks in Grafana line up with this URL - token_url: https://sso.###ZARF_VAR_DOMAIN###/realms/uds/protocol/openid-connect/token - signout_redirect_url: https://sso.###ZARF_VAR_DOMAIN###/realms/uds/protocol/openid-connect/logout?post_logout_redirect_uri=https%3A%2F%2Fgrafana.admin.###ZARF_VAR_DOMAIN###%2Flogin + auth_url: 'https://sso.{{default .Variables.DOMAIN .Values.global.domain}}/realms/uds/protocol/openid-connect/auth' + token_url: 'https://sso.{{default .Variables.DOMAIN .Values.global.domain}}/realms/uds/protocol/openid-connect/token' + signout_redirect_url: 'https://sso.{{default .Variables.DOMAIN .Values.global.domain}}/realms/uds/protocol/openid-connect/logout?post_logout_redirect_uri=https%3A%2F%2Fgrafana.{{default (default (printf "admin.%s" (default .Variables.DOMAIN .Values.global.domain)) .Variables.ADMIN_DOMAIN) .Values.global.adminDomain}}%2Flogin' use_refresh_token: true allow_sign_up: true # Require a UDS Core group to access Grafana diff --git a/src/grafana/zarf-values.yaml b/src/grafana/zarf-values.yaml new file mode 100644 index 0000000000..8f47098d3a --- /dev/null +++ b/src/grafana/zarf-values.yaml @@ -0,0 +1,11 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the UDS Core Grafana source package. +global: + domain: "" + adminDomain: "" + +grafana: + grafana: {} + uds-grafana-config: {} diff --git a/src/grafana/zarf.yaml b/src/grafana/zarf.yaml index 622c7cf05d..3b30e04bd8 100644 --- a/src/grafana/zarf.yaml +++ b/src/grafana/zarf.yaml @@ -19,6 +19,10 @@ variables: - name: ADMIN_DOMAIN description: "Domain for admin services, defaults to `admin.DOMAIN`" +values: + files: + - zarf-values.yaml + components: - name: grafana required: true diff --git a/src/istio/charts/uds-istio-config/templates/gateway.yaml b/src/istio/charts/uds-istio-config/templates/gateway.yaml index 771e88c58d..271deb1234 100644 --- a/src/istio/charts/uds-istio-config/templates/gateway.yaml +++ b/src/istio/charts/uds-istio-config/templates/gateway.yaml @@ -2,6 +2,12 @@ # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial {{- $domain := tpl .Values.domain . }} +{{- if eq .Values.name "admin" }} + {{- $domain = tpl (.Values.adminDomain | default "") . }} + {{- if or (not $domain) (eq $domain "###ZARF_VAR_ADMIN_DOMAIN###") }} + {{- $domain = printf "admin.%s" (tpl .Values.domain .) }} + {{- end }} +{{- end }} {{- $rootTLS := .Values.rootDomain.tls | default dict -}} {{- $rootEnableHttpsRedirect := .Values.rootDomain.enableHttpsRedirect | default true -}} {{- $rootMode := $rootTLS.mode | default ($.Values.tls.mode | default "SIMPLE") -}} diff --git a/src/istio/charts/uds-istio-config/tests/tenant_domain_test.yaml b/src/istio/charts/uds-istio-config/tests/tenant_domain_test.yaml new file mode 100644 index 0000000000..37ad9c4451 --- /dev/null +++ b/src/istio/charts/uds-istio-config/tests/tenant_domain_test.yaml @@ -0,0 +1,23 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json + +suite: uds-istio-config tenant gateway domain +templates: + - gateway.yaml +tests: + - it: renders tenant hosts on the configured domain + set: + name: tenant + domain: "custom.example.com" + tls: + credentialName: gateway-tls + servers: + https: + hosts: ["*"] + mode: SIMPLE + asserts: + - matchRegex: + path: spec.servers[0].hosts[0] + pattern: '\*\.custom\.example\.com' diff --git a/src/istio/charts/uds-istio-config/values.yaml b/src/istio/charts/uds-istio-config/values.yaml index b2dd065adb..492d838187 100644 --- a/src/istio/charts/uds-istio-config/values.yaml +++ b/src/istio/charts/uds-istio-config/values.yaml @@ -5,7 +5,10 @@ name: change-me # Domain name for the gateway -domain: "###ZARF_VAR_DOMAIN###" +domain: "" + +# Admin domain override, populated by the Zarf templated values file for the admin gateway. +adminDomain: "" # tls: # # The TLS certificate for the gateway, if not in 'PASSTHROUGH' mode (base64 encoded) diff --git a/src/istio/common/chart/values.yaml b/src/istio/common/chart/values.yaml index a042c87fca..b7876d3b68 100644 --- a/src/istio/common/chart/values.yaml +++ b/src/istio/common/chart/values.yaml @@ -1,16 +1,17 @@ +# Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR Commercial + classificationBanner: text: "UNKNOWN" addFooter: true # Hosts to enable the banner on enabledHosts: [] # Examples (supports helm templating) - # - keycloak.{{ .Values.adminDomain }} - # - sso.{{ .Values.domain }} + # - keycloak. + # - sso. # - grafana.admin.uds.dev -domain: "###ZARF_VAR_DOMAIN###" -# Note: This does not handle an empty admin domain zarf var -adminDomain: "###ZARF_VAR_ADMIN_DOMAIN###" + domain: '{{default .Variables.DOMAIN .Values.global.domain}}' + adminDomain: '{{default (default (printf "admin.%s" (default .Variables.DOMAIN .Values.global.domain)) .Variables.ADMIN_DOMAIN) (get .Values.global "adminDomain")}}' # Optional annotations for grouping dashboards in Grafana folders. # see docs for more info: https://docs.defenseunicorns.com/core/how-to-guides/monitoring--observability/add-custom-dashboards/ diff --git a/src/istio/common/zarf.yaml b/src/istio/common/zarf.yaml index 574881a1d4..e4fd628baa 100644 --- a/src/istio/common/zarf.yaml +++ b/src/istio/common/zarf.yaml @@ -25,6 +25,13 @@ components: # Istio's webhooks currently will cause SSA conflicts - https://github.com/istio/istio/issues/59487 # This should be fixed in a future Istio version serverSideApply: "false" + values: + - sourcePath: .istio-controlplane.base + targetPath: . + excludePaths: + - .istio-controlplane.base._internal_defaults_do_not_set + - .istio-controlplane.base.global.hub + - .istio-controlplane.base.global.tag - name: istiod url: https://istio-release.storage.googleapis.com/charts version: 1.29.3 @@ -41,24 +48,52 @@ components: - name: PROXY_CPU_REQUEST description: "CPU requests for sidecars in cluster" path: "global.proxy.resources.requests.cpu" + values: + - sourcePath: .istio-controlplane.istiod + targetPath: . + excludePaths: + - .istio-controlplane.istiod._internal_defaults_do_not_set + - .istio-controlplane.istiod.global.hub + - .istio-controlplane.istiod.global.tag + - .istio-controlplane.istiod.pilot.image + - .istio-controlplane.istiod.global.proxy.image + - .istio-controlplane.istiod.global.proxy_init.image - name: uds-global-istio-config namespace: istio-system version: 0.1.0 localPath: chart - valuesFiles: + templatedValuesFiles: - "chart/values.yaml" + values: + - sourcePath: .istio-controlplane.uds-global-istio-config + targetPath: . - name: cni url: https://istio-release.storage.googleapis.com/charts version: 1.29.3 namespace: istio-system valuesFiles: - "../values/base-cni.yaml" + values: + - sourcePath: .istio-controlplane.cni + targetPath: . + excludePaths: + - .istio-controlplane.cni._internal_defaults_do_not_set + - .istio-controlplane.cni.global.hub + - .istio-controlplane.cni.global.tag - name: ztunnel url: https://istio-release.storage.googleapis.com/charts version: 1.29.3 namespace: istio-system valuesFiles: - "../values/base-ztunnel.yaml" + values: + - sourcePath: .istio-controlplane.ztunnel + targetPath: . + excludePaths: + - .istio-controlplane.ztunnel._internal_defaults_do_not_set + - .istio-controlplane.ztunnel.global.hub + - .istio-controlplane.ztunnel.global.tag + - .istio-controlplane.ztunnel.image actions: onDeploy: before: diff --git a/src/istio/values/config-admin.yaml b/src/istio/values/config-admin.yaml index 0aa0a515da..5e1b0c1509 100644 --- a/src/istio/values/config-admin.yaml +++ b/src/istio/values/config-admin.yaml @@ -2,8 +2,9 @@ # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial name: admin -# Accommodate a specific admin domain or the default of `admin.DOMAIN` -domain: '{{ "###ZARF_VAR_ADMIN_DOMAIN###" | default "admin.###ZARF_VAR_DOMAIN###" }}' +# Explicit values take precedence, then package variables, then admin.. +domain: '{{default .Variables.DOMAIN .Values.global.domain}}' +adminDomain: '{{default (default (printf "admin.%s" (default .Variables.DOMAIN .Values.global.domain)) .Variables.ADMIN_DOMAIN) .Values.global.adminDomain}}' tls: servers: keycloak: diff --git a/src/istio/values/config-passthrough.yaml b/src/istio/values/config-passthrough.yaml index 6c81bac5af..a91e30660c 100644 --- a/src/istio/values/config-passthrough.yaml +++ b/src/istio/values/config-passthrough.yaml @@ -2,6 +2,9 @@ # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial name: passthrough +# Explicit values take precedence, then package variables, then admin.. +domain: '{{default .Variables.DOMAIN .Values.global.domain}}' +adminDomain: '{{default (default (printf "admin.%s" (default .Variables.DOMAIN .Values.global.domain)) .Variables.ADMIN_DOMAIN) .Values.global.adminDomain}}' tls: servers: diff --git a/src/istio/values/config-tenant.yaml b/src/istio/values/config-tenant.yaml index f0634d4aa8..a1c9da408c 100644 --- a/src/istio/values/config-tenant.yaml +++ b/src/istio/values/config-tenant.yaml @@ -2,6 +2,9 @@ # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial name: tenant +# Explicit values take precedence, then package variables, then admin.. +domain: '{{default .Variables.DOMAIN .Values.global.domain}}' +adminDomain: '{{default (default (printf "admin.%s" (default .Variables.DOMAIN .Values.global.domain)) .Variables.ADMIN_DOMAIN) .Values.global.adminDomain}}' tls: servers: keycloak: diff --git a/src/istio/zarf-values.yaml b/src/istio/zarf-values.yaml new file mode 100644 index 0000000000..174b882afa --- /dev/null +++ b/src/istio/zarf-values.yaml @@ -0,0 +1,32 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the UDS Core Istio source package. +global: + domain: "" + adminDomain: "" + +istio-controlplane: + base: {} + istiod: {} + uds-global-istio-config: {} + cni: {} + ztunnel: {} + +istio-admin-gateway: + gateway: {} + uds-istio-config: {} + +istio-tenant-gateway: + gateway: {} + uds-istio-config: {} + +istio-passthrough-gateway: + gateway: {} + uds-istio-config: {} + +istio-egress-ambient: + uds-istio-egress-config: {} + +istio-egress-gateway: + gateway: {} diff --git a/src/istio/zarf.yaml b/src/istio/zarf.yaml index 990fb0410c..9f8cfb3774 100644 --- a/src/istio/zarf.yaml +++ b/src/istio/zarf.yaml @@ -17,6 +17,10 @@ variables: - name: ADMIN_DOMAIN description: "Domain for admin services, defaults to `admin.DOMAIN`" +values: + files: + - zarf-values.yaml + components: - name: istio-controlplane required: true @@ -103,12 +107,24 @@ components: namespace: istio-admin-gateway valuesFiles: - "values/base-gateway.yaml" + values: + - sourcePath: .istio-admin-gateway.gateway + targetPath: . + excludePaths: + - .istio-admin-gateway.gateway._internal_defaults_do_not_set + - .istio-admin-gateway.gateway.global.hub + - .istio-admin-gateway.gateway.global.tag - name: uds-istio-config version: 0.2.0 localPath: charts/uds-istio-config namespace: istio-admin-gateway - valuesFiles: + templatedValuesFiles: - "values/config-admin.yaml" + values: + - sourcePath: .istio-admin-gateway.uds-istio-config + targetPath: . + excludePaths: + - .istio-admin-gateway.uds-istio-config.name - name: istio-tenant-gateway required: true @@ -120,12 +136,24 @@ components: namespace: istio-tenant-gateway valuesFiles: - "values/base-gateway.yaml" + values: + - sourcePath: .istio-tenant-gateway.gateway + targetPath: . + excludePaths: + - .istio-tenant-gateway.gateway._internal_defaults_do_not_set + - .istio-tenant-gateway.gateway.global.hub + - .istio-tenant-gateway.gateway.global.tag - name: uds-istio-config version: 0.2.0 localPath: charts/uds-istio-config namespace: istio-tenant-gateway - valuesFiles: + templatedValuesFiles: - "values/config-tenant.yaml" + values: + - sourcePath: .istio-tenant-gateway.uds-istio-config + targetPath: . + excludePaths: + - .istio-tenant-gateway.uds-istio-config.name - name: istio-passthrough-gateway required: false @@ -137,12 +165,24 @@ components: namespace: istio-passthrough-gateway valuesFiles: - "values/base-gateway.yaml" + values: + - sourcePath: .istio-passthrough-gateway.gateway + targetPath: . + excludePaths: + - .istio-passthrough-gateway.gateway._internal_defaults_do_not_set + - .istio-passthrough-gateway.gateway.global.hub + - .istio-passthrough-gateway.gateway.global.tag - name: uds-istio-config version: 0.2.0 localPath: charts/uds-istio-config namespace: istio-passthrough-gateway - valuesFiles: + templatedValuesFiles: - "values/config-passthrough.yaml" + values: + - sourcePath: .istio-passthrough-gateway.uds-istio-config + targetPath: . + excludePaths: + - .istio-passthrough-gateway.uds-istio-config.name # @lulaStart 643060b2-0ddf-4728-9582-ef38dca7447a - name: istio-egress-ambient @@ -153,6 +193,9 @@ components: version: 0.1.0 localPath: charts/uds-istio-egress-config namespace: istio-egress-ambient + values: + - sourcePath: .istio-egress-ambient.uds-istio-egress-config + targetPath: . # @lulaStart 643060b2-0ddf-4728-9582-ef38dca7447a - name: istio-egress-gateway @@ -166,3 +209,10 @@ components: namespace: istio-egress-gateway valuesFiles: - "values/base-egress.yaml" + values: + - sourcePath: .istio-egress-gateway.gateway + targetPath: . + excludePaths: + - .istio-egress-gateway.gateway._internal_defaults_do_not_set + - .istio-egress-gateway.gateway.global.hub + - .istio-egress-gateway.gateway.global.tag diff --git a/src/keycloak/chart/templates/path-parameter-envoyfilter.yaml b/src/keycloak/chart/templates/path-parameter-envoyfilter.yaml index 50b18f90fd..4e5e050d5d 100644 --- a/src/keycloak/chart/templates/path-parameter-envoyfilter.yaml +++ b/src/keycloak/chart/templates/path-parameter-envoyfilter.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Defense Unicorns +# Copyright 2025-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial {{- if .Values.pathParameterProtection }} @@ -29,10 +29,13 @@ spec: local path = request_handle:headers():get(":path") local host = request_handle:headers():get(":authority") + {{- $domain := .Values.domain }} + {{- $adminDomain := .Values.adminDomain | default (printf "admin.%s" $domain) }} + -- Only apply to keycloak endpoints if host and ( - host == "sso.{{ .Values.domain }}" or - host == "keycloak.{{ tpl .Values.adminDomain . }}" + host == "sso.{{ $domain }}" or + host == "keycloak.{{ $adminDomain }}" ) then if path then local invalid_semicolon = string.match(path, "^[^;]*;[^/]*/") @@ -45,4 +48,4 @@ spec: end end end -{{- end }} \ No newline at end of file +{{- end }} diff --git a/src/keycloak/chart/templates/statefulset.yaml b/src/keycloak/chart/templates/statefulset.yaml index d569f7e7db..1fc9232b99 100644 --- a/src/keycloak/chart/templates/statefulset.yaml +++ b/src/keycloak/chart/templates/statefulset.yaml @@ -206,10 +206,12 @@ spec: value: "-Djava.security.properties=/opt/keycloak/data/fips-sunjce.security" {{- end }} # Common configuration + {{- $domain := .Values.domain }} + {{- $adminDomain := .Values.adminDomain | default (printf "admin.%s" $domain) }} - name: UDS_DOMAIN - value: "{{ .Values.domain }}" + value: "{{ $domain }}" - name: UDS_ADMIN_DOMAIN - value: "{{ tpl .Values.adminDomain . }}" + value: "{{ $adminDomain }}" # Enable health and metrics endpoints - name: KC_HEALTH_ENABLED diff --git a/src/keycloak/chart/tests/kc_admin_domain_test.yaml b/src/keycloak/chart/tests/kc_admin_domain_test.yaml new file mode 100644 index 0000000000..0cfaf7be70 --- /dev/null +++ b/src/keycloak/chart/tests/kc_admin_domain_test.yaml @@ -0,0 +1,45 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json + +suite: Keycloak adminDomain fallback +templates: + - statefulset.yaml + - path-parameter-envoyfilter.yaml + +tests: + - it: should derive adminDomain from domain when adminDomain is unset + set: + domain: "custom.example.com" + adminDomain: "" + template: statefulset.yaml + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: UDS_ADMIN_DOMAIN + value: "admin.custom.example.com" + + - it: should use explicit adminDomain when set + set: + domain: "custom.example.com" + adminDomain: "mgmt.example.com" + template: statefulset.yaml + asserts: + - contains: + path: spec.template.spec.containers[0].env + content: + name: UDS_ADMIN_DOMAIN + value: "mgmt.example.com" + + - it: should derive adminDomain in envoyfilter when adminDomain is unset + set: + domain: "custom.example.com" + adminDomain: "" + pathParameterProtection: true + template: path-parameter-envoyfilter.yaml + asserts: + - matchRegex: + path: spec.configPatches[0].patch.value.typed_config.inlineCode + pattern: 'keycloak\.admin\.custom\.example\.com' diff --git a/src/keycloak/chart/values.yaml b/src/keycloak/chart/values.yaml index f749aba046..9f16bed22c 100644 --- a/src/keycloak/chart/values.yaml +++ b/src/keycloak/chart/values.yaml @@ -12,10 +12,9 @@ image: # renovate: datasource=github-tags depName=defenseunicorns/uds-identity-config versioning=semver configImage: ghcr.io/defenseunicorns/uds/identity-config:0.29.0 -# The public domain name of the Keycloak server -domain: "###ZARF_VAR_DOMAIN###" -# The admin domain for hosts to trust clients on -adminDomain: '{{ "###ZARF_VAR_ADMIN_DOMAIN###" | default "admin.###ZARF_VAR_DOMAIN###" }}' +# Standalone Helm defaults; Zarf deployments override these in templatedValuesFiles. +domain: "uds.dev" +adminDomain: "admin.uds.dev" # Additional Istio Gateways that expose Keycloak, to allow for client cert usage # A prefix of `istio-` is required for namespaces to prevent accidental misconfiguration diff --git a/src/keycloak/common/zarf.yaml b/src/keycloak/common/zarf.yaml index 679070bbcb..0525c22872 100644 --- a/src/keycloak/common/zarf.yaml +++ b/src/keycloak/common/zarf.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Defense Unicorns +# Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial kind: ZarfPackageConfig @@ -15,8 +15,18 @@ components: # renovate: datasource=docker depName=quay.io/keycloak/keycloak versioning=semver version: 26.7.0 localPath: ../chart - valuesFiles: - - ../chart/values.yaml + templatedValuesFiles: + - ../values/values.yaml + values: + - sourcePath: .keycloak.keycloak + targetPath: . + excludePaths: + - .keycloak.keycloak.image + - .keycloak.keycloak.service + - .keycloak.keycloak.podSecurityContext + - .keycloak.keycloak.securityContext + - .keycloak.keycloak.serviceMonitor + - .keycloak.keycloak.prometheusRule actions: onDeploy: before: diff --git a/src/keycloak/values/values.yaml b/src/keycloak/values/values.yaml new file mode 100644 index 0000000000..f8daa0c5ff --- /dev/null +++ b/src/keycloak/values/values.yaml @@ -0,0 +1,6 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Explicit values take precedence, then package variables, then admin.. +domain: '{{default .Variables.DOMAIN .Values.global.domain}}' +adminDomain: '{{default (default (printf "admin.%s" (default .Variables.DOMAIN .Values.global.domain)) .Variables.ADMIN_DOMAIN) .Values.global.adminDomain}}' diff --git a/src/keycloak/zarf-values.yaml b/src/keycloak/zarf-values.yaml new file mode 100644 index 0000000000..a1688e4d01 --- /dev/null +++ b/src/keycloak/zarf-values.yaml @@ -0,0 +1,10 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the UDS Core Keycloak source package. +global: + domain: "" + adminDomain: "" + +keycloak: + keycloak: {} diff --git a/src/keycloak/zarf.yaml b/src/keycloak/zarf.yaml index bb3b31f7cf..f483a2973a 100644 --- a/src/keycloak/zarf.yaml +++ b/src/keycloak/zarf.yaml @@ -19,6 +19,10 @@ variables: - name: ADMIN_DOMAIN description: "Domain for admin services, defaults to `admin.DOMAIN`" +values: + files: + - zarf-values.yaml + components: - name: keycloak required: true diff --git a/src/loki/common/zarf.yaml b/src/loki/common/zarf.yaml index c79f1bb3e4..1f4649d14c 100644 --- a/src/loki/common/zarf.yaml +++ b/src/loki/common/zarf.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Defense Unicorns +# Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial kind: ZarfPackageConfig @@ -14,9 +14,63 @@ components: namespace: loki version: 0.2.0 localPath: ../chart + values: + - sourcePath: .loki.uds-loki-config + targetPath: . - name: loki url: https://grafana-community.github.io/helm-charts/ version: 18.5.1 namespace: loki valuesFiles: - ../values/values.yaml + values: + - sourcePath: .loki.loki + targetPath: . + excludePaths: + - .loki.loki.loki.auth_enabled + - .loki.loki.deploymentMode + - .loki.loki.minio + - .loki.loki.backend.image + - .loki.loki.bloomBuilder.image + - .loki.loki.bloomGateway.image + - .loki.loki.bloomPlanner.image + - .loki.loki.compactor.image + - .loki.loki.defaults.statefulSetRecreateJob.image + - .loki.loki.distributor.image + - .loki.loki.gateway.image + - .loki.loki.gateway.metrics.image + - .loki.loki.global.image + - .loki.loki.global.imageRegistry + - .loki.loki.indexGateway.image + - .loki.loki.ingester.image + - .loki.loki.loki.image + - .loki.loki.lokiCanary.image + - .loki.loki.memcached.image + - .loki.loki.memcachedExporter.image + - .loki.loki.overridesExporter.image + - .loki.loki.patternIngester.image + - .loki.loki.querier.image + - .loki.loki.queryFrontend.image + - .loki.loki.queryScheduler.image + - .loki.loki.read.image + - .loki.loki.ruler.image + - .loki.loki.sidecar.image + - .loki.loki.singleBinary.image + - .loki.loki.tableManager.image + - .loki.loki.test.image + - .loki.loki.write.image + - .loki.loki.defaults.containerSecurityContext + - .loki.loki.defaults.podSecurityContext + - .loki.loki.gateway.containerSecurityContext + - .loki.loki.gateway.metrics.containerSecurityContext + - .loki.loki.gateway.podSecurityContext + - .loki.loki.loki.containerSecurityContext + - .loki.loki.loki.podSecurityContext + - .loki.loki.lokiCanary.containerSecurityContext + - .loki.loki.lokiCanary.podSecurityContext + - .loki.loki.memcached.containerSecurityContext + - .loki.loki.memcached.podSecurityContext + - .loki.loki.memcachedExporter.containerSecurityContext + - .loki.loki.rollout_operator.podSecurityContext + - .loki.loki.rollout_operator.securityContext + - .loki.loki.sidecar.securityContext diff --git a/src/loki/zarf-values.yaml b/src/loki/zarf-values.yaml new file mode 100644 index 0000000000..19ce264316 --- /dev/null +++ b/src/loki/zarf-values.yaml @@ -0,0 +1,7 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the Loki package. +loki: + loki: {} + uds-loki-config: {} diff --git a/src/loki/zarf.yaml b/src/loki/zarf.yaml index 3e3d47f0e0..4ba9424b71 100644 --- a/src/loki/zarf.yaml +++ b/src/loki/zarf.yaml @@ -12,6 +12,10 @@ metadata: # @lulaEnd 21e01692-d68c-42a1-86ea-e2ce744e1736 description: "UDS Core Loki" +values: + files: + - zarf-values.yaml + components: - name: loki required: true diff --git a/src/metrics-server/common/zarf.yaml b/src/metrics-server/common/zarf.yaml index 517f3a1b5f..5c1b50fb5d 100644 --- a/src/metrics-server/common/zarf.yaml +++ b/src/metrics-server/common/zarf.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Defense Unicorns +# Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial kind: ZarfPackageConfig @@ -15,9 +15,21 @@ components: namespace: metrics-server version: 0.1.0 localPath: ../chart + values: + - sourcePath: .metrics-server.uds-metrics-server-config + targetPath: . - name: metrics-server namespace: metrics-server url: https://kubernetes-sigs.github.io/metrics-server version: 3.13.1 valuesFiles: - "../values/values.yaml" + values: + - sourcePath: .metrics-server.metrics-server + targetPath: . + excludePaths: + - .metrics-server.metrics-server.image + - .metrics-server.metrics-server.podSecurityContext + - .metrics-server.metrics-server.securityContext + - .metrics-server.metrics-server.addonResizer.image + - .metrics-server.metrics-server.addonResizer.securityContext diff --git a/src/metrics-server/zarf-values.yaml b/src/metrics-server/zarf-values.yaml new file mode 100644 index 0000000000..16e6f8a8e2 --- /dev/null +++ b/src/metrics-server/zarf-values.yaml @@ -0,0 +1,7 @@ +# Copyright 2025-2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the Metrics Server package. +metrics-server: + metrics-server: {} + uds-metrics-server-config: {} diff --git a/src/metrics-server/zarf.yaml b/src/metrics-server/zarf.yaml index 642e0b99b7..820238ef7c 100644 --- a/src/metrics-server/zarf.yaml +++ b/src/metrics-server/zarf.yaml @@ -7,6 +7,10 @@ metadata: description: "UDS Metrics Server" url: https://github.com/kubernetes-sigs/metrics-server +values: + files: + - zarf-values.yaml + components: - name: metrics-server required: false diff --git a/src/pepr/uds-operator-config/templates/clusterconfig.yaml b/src/pepr/uds-operator-config/templates/clusterconfig.yaml index 05f7cf3d2f..c0c25f724b 100644 --- a/src/pepr/uds-operator-config/templates/clusterconfig.yaml +++ b/src/pepr/uds-operator-config/templates/clusterconfig.yaml @@ -36,10 +36,14 @@ spec: {{- end }} expose: domain: {{ .Values.cluster.expose.domain | quote }} - {{- if .Values.cluster.expose.adminDomain }} - adminDomain: {{ .Values.cluster.expose.adminDomain | quote }} + {{- $adminDomain := .Values.cluster.expose.adminDomain | default "" }} + {{- if eq $adminDomain "###ZARF_VAR_ADMIN_DOMAIN###" }} + {{- $adminDomain = "" }} + {{- end }} + {{- if $adminDomain }} + adminDomain: {{ $adminDomain | quote }} {{- else }} adminDomain: "admin.{{ .Values.cluster.expose.domain }}" {{- end }} policy: - allowAllNsExemptions: {{ .Values.cluster.policy.allowAllNsExemptions }} + allowAllNsExemptions: {{ .Values.cluster.policy.allowAllNsExemptions | default false | toString | eq "true" }} diff --git a/src/pepr/uds-operator-config/tests/clusterconfig_test.yaml b/src/pepr/uds-operator-config/tests/clusterconfig_test.yaml index 5173f28070..89397e7afc 100644 --- a/src/pepr/uds-operator-config/tests/clusterconfig_test.yaml +++ b/src/pepr/uds-operator-config/tests/clusterconfig_test.yaml @@ -22,6 +22,20 @@ tests: path: spec.caBundle.certs value: "LS0tLS1CRUdJTi...new-ca-bundle-certs" + - it: should render allowAllNsExemptions as a boolean + set: + cluster: + expose: + domain: "example.com" + policy: + allowAllNsExemptions: true + asserts: + - isKind: + of: ClusterConfig + - equal: + path: spec.policy.allowAllNsExemptions + value: true + - it: should not render certs field when caBundle.certs is empty set: cluster: diff --git a/src/pepr/uds-operator-config/values.yaml b/src/pepr/uds-operator-config/values.yaml index 5bfe560b15..9cdb2cc573 100644 --- a/src/pepr/uds-operator-config/values.yaml +++ b/src/pepr/uds-operator-config/values.yaml @@ -2,7 +2,7 @@ # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial operator: - AUTHSERVICE_REDIS_URI: "###ZARF_VAR_AUTHSERVICE_REDIS_URI###" + AUTHSERVICE_REDIS_URI: '{{.Variables.AUTHSERVICE_REDIS_URI}}' KEYCLOAK_CLIENT_MODE: "CLIENT_SECRET" # When true, the UDS Operator admits SSO clients with publicClient: true that # use flows beyond device flow (PKCE S256 is required). Defaults to false so @@ -14,15 +14,16 @@ cluster: clusterName: "" clusterTags: [] caBundle: - certs: "###ZARF_VAR_CA_BUNDLE_CERTS###" - includeDoDCerts: "###ZARF_VAR_CA_BUNDLE_INCLUDE_DOD_CERTS###" - includePublicCerts: "###ZARF_VAR_CA_BUNDLE_INCLUDE_PUBLIC_CERTS###" + certs: '{{.Variables.CA_BUNDLE_CERTS}}' + includeDoDCerts: '{{.Variables.CA_BUNDLE_INCLUDE_DOD_CERTS}}' + includePublicCerts: '{{.Variables.CA_BUNDLE_INCLUDE_PUBLIC_CERTS}}' expose: # Domain configuration (admin defaults to `admin.UDS_DOMAIN`) - domain: "###ZARF_VAR_DOMAIN###" - adminDomain: "###ZARF_VAR_ADMIN_DOMAIN###" + # Explicit values take precedence, then package variables, then admin.. + domain: '{{default .Variables.DOMAIN .Values.global.domain}}' + adminDomain: '{{default (default (printf "admin.%s" (default .Variables.DOMAIN .Values.global.domain)) .Variables.ADMIN_DOMAIN) .Values.global.adminDomain}}' policy: - allowAllNsExemptions: "###ZARF_VAR_ALLOW_ALL_NS_EXEMPTIONS###" + allowAllNsExemptions: '{{.Variables.ALLOW_ALL_NS_EXEMPTIONS}}' networking: kubeApiCIDR: "" kubeNodeCIDRs: [] diff --git a/src/pepr/zarf-values.yaml b/src/pepr/zarf-values.yaml new file mode 100644 index 0000000000..bc5e3cc356 --- /dev/null +++ b/src/pepr/zarf-values.yaml @@ -0,0 +1,16 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the UDS Core Pepr source package. +global: + domain: "" + adminDomain: "" + +pepr-uds-core: + module: {} + +uds-operator-config: + uds-operator-config: {} + +uds-exemptions: + uds-exemptions: {} diff --git a/src/pepr/zarf.yaml b/src/pepr/zarf.yaml index a5d93813c2..eed49a8eca 100644 --- a/src/pepr/zarf.yaml +++ b/src/pepr/zarf.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Defense Unicorns +# Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial kind: ZarfPackageConfig @@ -21,11 +21,11 @@ variables: - name: CA_BUNDLE_INCLUDE_DOD_CERTS description: "Whether to include DoD root and intermediate certificates in the cluster CA bundle" - default: false + default: "false" - name: CA_BUNDLE_INCLUDE_PUBLIC_CERTS description: "Whether to include public root and intermediate certificates in the cluster CA bundle" - default: false + default: "false" - name: UDS_LOG_LEVEL description: "UDS Operator log level" @@ -43,6 +43,10 @@ variables: description: "Whether to allow exemptions to be created in all namespaces" default: "false" +values: + files: + - zarf-values.yaml + components: - name: uds-crds required: true @@ -78,8 +82,11 @@ components: namespace: pepr-system version: 0.1.0 localPath: uds-operator-config - valuesFiles: + templatedValuesFiles: - uds-operator-config/values.yaml + values: + - sourcePath: .uds-operator-config.uds-operator-config + targetPath: . actions: onDeploy: after: @@ -100,6 +107,19 @@ components: - name: module valuesFiles: - values.yaml + values: + - sourcePath: .pepr-uds-core.module + targetPath: . + excludePaths: + - .pepr-uds-core.module.watcher.serviceMonitor + - .pepr-uds-core.module.admission.serviceMonitor + - .pepr-uds-core.module.admission.webhookAnnotations + - .pepr-uds-core.module.admission.image + - .pepr-uds-core.module.watcher.image + - .pepr-uds-core.module.admission.securityContext + - .pepr-uds-core.module.admission.containerSecurityContext + - .pepr-uds-core.module.watcher.securityContext + - .pepr-uds-core.module.watcher.containerSecurityContext actions: onDeploy: after: @@ -120,3 +140,6 @@ components: localPath: uds-exemptions valuesFiles: - uds-exemptions/values.yaml + values: + - sourcePath: .uds-exemptions.uds-exemptions + targetPath: . diff --git a/src/portal/common/zarf.yaml b/src/portal/common/zarf.yaml index 16a934e19d..6a4c59ee8e 100644 --- a/src/portal/common/zarf.yaml +++ b/src/portal/common/zarf.yaml @@ -17,5 +17,10 @@ components: version: "v0.5.0" url: https://github.com/defenseunicorns/uds-portal.git gitPath: chart - valuesFiles: - - ../values/values.yaml + values: + - sourcePath: .uds-portal.uds-portal + targetPath: . + excludePaths: + - .uds-portal.uds-portal.image + - .uds-portal.uds-portal.podSecurityContext + - .uds-portal.uds-portal.containerSecurityContext diff --git a/src/portal/values/values.yaml b/src/portal/values/values.yaml index 8e125ffb9f..037758fee4 100644 --- a/src/portal/values/values.yaml +++ b/src/portal/values/values.yaml @@ -2,5 +2,6 @@ # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial package: - domain: "###ZARF_VAR_DOMAIN###" - adminDomain: "###ZARF_VAR_ADMIN_DOMAIN###" + # Explicit values take precedence, then package variables, then admin.. + domain: '{{default .Variables.DOMAIN .Values.global.domain}}' + adminDomain: '{{default (default (printf "admin.%s" (default .Variables.DOMAIN .Values.global.domain)) .Variables.ADMIN_DOMAIN) .Values.global.adminDomain}}' diff --git a/src/portal/zarf-values.yaml b/src/portal/zarf-values.yaml new file mode 100644 index 0000000000..cf6b90ad22 --- /dev/null +++ b/src/portal/zarf-values.yaml @@ -0,0 +1,9 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +global: + domain: "" + adminDomain: "" + +uds-portal: + uds-portal: {} diff --git a/src/portal/zarf.yaml b/src/portal/zarf.yaml index 720e76087a..482e1fceff 100644 --- a/src/portal/zarf.yaml +++ b/src/portal/zarf.yaml @@ -15,6 +15,10 @@ variables: - name: ADMIN_DOMAIN description: "Domain for admin services, defaults to `admin.DOMAIN`" +values: + files: + - zarf-values.yaml + components: - name: uds-portal required: true @@ -28,6 +32,8 @@ components: - name: uds-portal valuesFiles: - values/upstream-values.yaml + templatedValuesFiles: + - values/values.yaml - name: uds-portal required: true @@ -41,3 +47,5 @@ components: - name: uds-portal valuesFiles: - values/unicorn-values.yaml + templatedValuesFiles: + - values/values.yaml diff --git a/src/prometheus-stack/common/zarf.yaml b/src/prometheus-stack/common/zarf.yaml index 81d50a0633..41263f67e4 100644 --- a/src/prometheus-stack/common/zarf.yaml +++ b/src/prometheus-stack/common/zarf.yaml @@ -15,6 +15,9 @@ components: namespace: monitoring version: 0.1.0 localPath: ../chart + values: + - sourcePath: .kube-prometheus-stack.uds-prometheus-config + targetPath: . # @lulaStart 4yw40198-a55e-4769-a5de-44ffe7636093 - name: kube-prometheus-stack namespace: monitoring @@ -23,6 +26,36 @@ components: version: 87.16.1 valuesFiles: - "../values/kube-prometheus-stack-values.yaml" + values: + - sourcePath: .kube-prometheus-stack.kube-prometheus-stack + targetPath: . + excludePaths: + - .kube-prometheus-stack.kube-prometheus-stack.global.imageRegistry + - .kube-prometheus-stack.kube-prometheus-stack.alertmanager.alertmanagerSpec.image + - .kube-prometheus-stack.kube-prometheus-stack.crds.upgradeJob.image + - .kube-prometheus-stack.kube-prometheus-stack.kube-state-metrics.image + - .kube-prometheus-stack.kube-prometheus-stack.prometheus.prometheusSpec.image + - .kube-prometheus-stack.kube-prometheus-stack.prometheus-node-exporter.image + - .kube-prometheus-stack.kube-prometheus-stack.prometheusOperator.image + - .kube-prometheus-stack.kube-prometheus-stack.prometheusOperator.admissionWebhooks.deployment.image + - .kube-prometheus-stack.kube-prometheus-stack.prometheusOperator.admissionWebhooks.patch.image + - .kube-prometheus-stack.kube-prometheus-stack.prometheusOperator.prometheusConfigReloader.image + - .kube-prometheus-stack.kube-prometheus-stack.prometheusOperator.thanosImage + - .kube-prometheus-stack.kube-prometheus-stack.thanosRuler.thanosRulerSpec.image + - .kube-prometheus-stack.kube-prometheus-stack.alertmanager.alertmanagerSpec.securityContext + - .kube-prometheus-stack.kube-prometheus-stack.crds.upgradeJob.containerSecurityContext + - .kube-prometheus-stack.kube-prometheus-stack.crds.upgradeJob.podSecurityContext + - .kube-prometheus-stack.kube-prometheus-stack.kube-state-metrics.securityContext + - .kube-prometheus-stack.kube-prometheus-stack.prometheus-node-exporter.containerSecurityContext + - .kube-prometheus-stack.kube-prometheus-stack.prometheus.prometheusSpec.securityContext + - .kube-prometheus-stack.kube-prometheus-stack.prometheusOperator.securityContext + - .kube-prometheus-stack.kube-prometheus-stack.prometheusOperator.containerSecurityContext + - .kube-prometheus-stack.kube-prometheus-stack.prometheusOperator.admissionWebhooks.createSecretJob.securityContext + - .kube-prometheus-stack.kube-prometheus-stack.prometheusOperator.admissionWebhooks.deployment.securityContext + - .kube-prometheus-stack.kube-prometheus-stack.prometheusOperator.admissionWebhooks.deployment.containerSecurityContext + - .kube-prometheus-stack.kube-prometheus-stack.prometheusOperator.admissionWebhooks.patch.securityContext + - .kube-prometheus-stack.kube-prometheus-stack.prometheusOperator.admissionWebhooks.patchWebhookJob.securityContext + - .kube-prometheus-stack.kube-prometheus-stack.thanosRuler.thanosRulerSpec.securityContext - name: prometheus-blackbox-exporter required: false description: "UDS Core Prometheus Blackbox Exporter" @@ -33,3 +66,13 @@ components: version: 11.15.1 valuesFiles: - "../values/blackbox-exporter-values.yaml" + values: + - sourcePath: .prometheus-blackbox-exporter.prometheus-blackbox-exporter + targetPath: . + excludePaths: + - .prometheus-blackbox-exporter.prometheus-blackbox-exporter.global.imageRegistry + - .prometheus-blackbox-exporter.prometheus-blackbox-exporter.image + - .prometheus-blackbox-exporter.prometheus-blackbox-exporter.configReloader.image + - .prometheus-blackbox-exporter.prometheus-blackbox-exporter.podSecurityContext + - .prometheus-blackbox-exporter.prometheus-blackbox-exporter.securityContext + - .prometheus-blackbox-exporter.prometheus-blackbox-exporter.configReloader.securityContext diff --git a/src/prometheus-stack/zarf-values.yaml b/src/prometheus-stack/zarf-values.yaml new file mode 100644 index 0000000000..a7cd32c9b6 --- /dev/null +++ b/src/prometheus-stack/zarf-values.yaml @@ -0,0 +1,9 @@ +# Copyright 2025-2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the Prometheus-Stack package. +kube-prometheus-stack: + kube-prometheus-stack: {} + uds-prometheus-config: {} +prometheus-blackbox-exporter: + prometheus-blackbox-exporter: {} diff --git a/src/prometheus-stack/zarf.yaml b/src/prometheus-stack/zarf.yaml index 5fb1eeca75..5c8f272e39 100644 --- a/src/prometheus-stack/zarf.yaml +++ b/src/prometheus-stack/zarf.yaml @@ -8,6 +8,10 @@ metadata: # @lulaEnd ed10edbf-7e7d-4dd4-be96-b19842c75bdc description: "UDS Core Prometheus-Stack" +values: + files: + - zarf-values.yaml + components: - name: prometheus-operator-crds required: true @@ -19,6 +23,9 @@ components: namespace: uds-crds valuesFiles: - "values/crd-values.yaml" + values: + - sourcePath: .prometheus-operator-crds.prometheus-operator-crds + targetPath: . - name: kube-prometheus-stack required: true diff --git a/src/vector/common/zarf.yaml b/src/vector/common/zarf.yaml index beae206276..716c9db565 100644 --- a/src/vector/common/zarf.yaml +++ b/src/vector/common/zarf.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Defense Unicorns +# Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial kind: ZarfPackageConfig @@ -15,6 +15,9 @@ components: namespace: vector version: 0.1.0 localPath: ../chart + values: + - sourcePath: .vector.uds-vector-config + targetPath: . - name: vector url: https://helm.vector.dev version: 0.56.0 @@ -22,3 +25,13 @@ components: gitPath: charts/vector valuesFiles: - ../values/values.yaml + values: + - sourcePath: .vector.vector + targetPath: . + excludePaths: + - .vector.vector.image + - .vector.vector.podSecurityContext + - .vector.vector.securityContext + - .vector.vector.haproxy.image + - .vector.vector.haproxy.podSecurityContext + - .vector.vector.haproxy.securityContext diff --git a/src/vector/zarf-values.yaml b/src/vector/zarf-values.yaml new file mode 100644 index 0000000000..c1525f8a8a --- /dev/null +++ b/src/vector/zarf-values.yaml @@ -0,0 +1,7 @@ +# Copyright 2025-2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the Vector package. +vector: + vector: {} + uds-vector-config: {} diff --git a/src/vector/zarf.yaml b/src/vector/zarf.yaml index beb6611672..8269e85400 100644 --- a/src/vector/zarf.yaml +++ b/src/vector/zarf.yaml @@ -11,6 +11,10 @@ metadata: description: "UDS Core Vector" url: "https://vector.dev/" +values: + files: + - zarf-values.yaml + components: - name: vector required: true diff --git a/src/velero/README.md b/src/velero/README.md index 82ba6c0b37..c49177c568 100644 --- a/src/velero/README.md +++ b/src/velero/README.md @@ -12,25 +12,25 @@ https://velero.io/ Bucket information and access credentials can be provided via configuration values / env vars: -- Bucket ID: `ZARF_VAR_VELERO_BUCKET` -- Bucket Region: `ZARF_VAR_VELERO_BUCKET_REGION` -- Bucket Provider URL: `ZARF_VAR_VELERO_BUCKET_PROVIDER_URL` -- Access Key: `ZARF_VAR_VELERO_BUCKET_KEY` -- Access Key Secret: `ZARF_VAR_VELERO_BUCKET_KEY_SECRET` +- Bucket ID: `VELERO_BUCKET` +- Bucket Region: `VELERO_BUCKET_REGION` +- Bucket Provider URL: `VELERO_BUCKET_PROVIDER_URL` +- Access Key: `VELERO_BUCKET_KEY` +- Access Key Secret: `VELERO_BUCKET_KEY_SECRET` As an alternative to providing the access key and secret via variable, you can reference a secret with the following format ``` apiVersion: v1 kind: Secret metadata: - name: ###ZARF_VAR_VELERO_BUCKET_CREDENTIALS_SECRET### + name: velero-bucket-credentials namespace: velero type: kubernetes.io/opaque stringData: cloud: |- [default] - aws_access_key_id=###ZARF_VAR_ACCESS_KEY### - aws_secret_access_key=###ZARF_VAR_SECRET_KEY### + aws_access_key_id= + aws_secret_access_key= ``` By overriding the velero values in the bundle as follows: @@ -130,4 +130,3 @@ velero restore create uds-restore-$(date +%s) \ > [!NOTE] > Additional configuration will be required to get CSI backed PVCs to be snapshotted. For more information on configuring CSI backed volumes, see the [vSphere](https://docs.defenseunicorns.com/core/how-to-guides/backup--restore/enable-volume-snapshots-vsphere/) and [AWS EBS](https://docs.defenseunicorns.com/core/how-to-guides/backup--restore/enable-volume-snapshots-aws-ebs/) guides. - diff --git a/src/velero/common/zarf.yaml b/src/velero/common/zarf.yaml index 15a4528d91..5a698c1114 100644 --- a/src/velero/common/zarf.yaml +++ b/src/velero/common/zarf.yaml @@ -37,14 +37,29 @@ components: namespace: velero version: 0.1.0 localPath: ../chart + values: + - sourcePath: .velero.uds-velero-config + targetPath: . - name: velero namespace: velero url: https://vmware-tanzu.github.io/helm-charts version: 12.1.0 repoName: velero releaseName: velero - valuesFiles: + templatedValuesFiles: - ../values/values.yaml + values: + - sourcePath: .velero.velero + targetPath: . + excludePaths: + - .velero.velero.image + - .velero.velero.initContainers + - .velero.velero.podSecurityContext + - .velero.velero.containerSecurityContext + - .velero.velero.nodeAgent.podSecurityContext + - .velero.velero.nodeAgent.containerSecurityContext + - .velero.velero.kubectl.image + - .velero.velero.kubectl.containerSecurityContext actions: onDeploy: before: diff --git a/src/velero/values/values.yaml b/src/velero/values/values.yaml index 1057418f03..2cda5220ca 100644 --- a/src/velero/values/values.yaml +++ b/src/velero/values/values.yaml @@ -22,27 +22,27 @@ credentials: secretContents: cloud: | [default] - aws_access_key_id=###ZARF_VAR_VELERO_BUCKET_KEY### - aws_secret_access_key=###ZARF_VAR_VELERO_BUCKET_KEY_SECRET### + aws_access_key_id={{.Variables.VELERO_BUCKET_KEY}} + aws_secret_access_key={{.Variables.VELERO_BUCKET_KEY_SECRET}} configuration: backupStorageLocation: - name: default provider: aws - bucket: "###ZARF_VAR_VELERO_BUCKET###" + bucket: "{{.Variables.VELERO_BUCKET}}" config: - region: "###ZARF_VAR_VELERO_BUCKET_REGION###" + region: "{{.Variables.VELERO_BUCKET_REGION}}" s3ForcePathStyle: true - s3Url: "###ZARF_VAR_VELERO_BUCKET_PROVIDER_URL###" + s3Url: "{{.Variables.VELERO_BUCKET_PROVIDER_URL}}" credential: - name: "###ZARF_VAR_VELERO_BUCKET_CREDENTIAL_NAME###" - key: "###ZARF_VAR_VELERO_BUCKET_CREDENTIAL_KEY###" + name: "{{.Variables.VELERO_BUCKET_CREDENTIAL_NAME}}" + key: "{{.Variables.VELERO_BUCKET_CREDENTIAL_KEY}}" # volumeSnapshotLocation: # - name: default # provider: aws # config: - # region: "###ZARF_VAR_VELERO_BUCKET_REGION###" + # region: "{{.Variables.VELERO_BUCKET_REGION}}" # s3ForcePathStyle: true - # s3Url: "###ZARF_VAR_VELERO_BUCKET_PROVIDER_URL###" + # s3Url: "{{.Variables.VELERO_BUCKET_PROVIDER_URL}}" # credential: # name: "velero-bucket-credentials" # key: "cloud" diff --git a/src/velero/zarf-values.yaml b/src/velero/zarf-values.yaml new file mode 100644 index 0000000000..8e7c72a41d --- /dev/null +++ b/src/velero/zarf-values.yaml @@ -0,0 +1,7 @@ +# Copyright 2025-2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Default Zarf values for the Velero package. +velero: + velero: {} + uds-velero-config: {} diff --git a/src/velero/zarf.yaml b/src/velero/zarf.yaml index ce182547b3..ce5a7be10b 100644 --- a/src/velero/zarf.yaml +++ b/src/velero/zarf.yaml @@ -9,6 +9,10 @@ metadata: url: https://velero.io/ # @lulaEnd 95b605a4-c57d-4776-9e4d-37888602b2df +values: + files: + - zarf-values.yaml + components: - name: velero required: true diff --git a/tasks/lint.yaml b/tasks/lint.yaml index 18b5264a42..1bbaec271b 100644 --- a/tasks/lint.yaml +++ b/tasks/lint.yaml @@ -1,4 +1,4 @@ -# Copyright 2024 Defense Unicorns +# Copyright 2024-2026 Defense Unicorns # SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial includes: @@ -34,7 +34,11 @@ tasks: - description: Ensure uv is installed task: ensure-uv - description: install pepr deps - cmd: npm ci + task: install-pepr-deps + - description: Build the Pepr module for values lint + task: build-pepr + - description: Lint packages that expose Zarf values + task: values-lint - description: "Pepr Format check" cmd: npx pepr format --validate-only - description: yaml lint @@ -48,6 +52,123 @@ tasks: task: license - description: Run helm unittest on all charts task: helm-unittest + - name: values-lint + description: "Lint each package that exposes Zarf values to catch mapping/schema regressions" + inputs: + package: + description: "Optional values-bearing package to lint" + default: "" + actions: + - description: "Lint each values-bearing package" + shell: + darwin: bash + linux: bash + cmd: | + set -euo pipefail + package="${{ .inputs.package }}" + if [ -n "$package" ] && [ ! -f "packages/${package}/zarf-values.yaml" ]; then + echo "ERROR: packages/${package}/zarf-values.yaml does not exist" + exit 1 + fi + # A package exposes native values when it provides this default values file. + for values_file in packages/*/zarf-values.yaml; do + pkg="${values_file#packages/}" + pkg="${pkg%/zarf-values.yaml}" + if [ -n "$package" ] && [ "$pkg" != "$package" ]; then + continue + fi + echo "Linting packages/${pkg}" + if ! uds zarf dev lint "packages/${pkg}" --flavor upstream; then + echo "ERROR: values lint failed for packages/${pkg}" + exit 1 + fi + done + - description: "Validate default values files against their schemas" + shell: + darwin: bash + linux: bash + cmd: | + set -euo pipefail + package="${{ .inputs.package }}" + if [ -n "$package" ] && [ ! -f "packages/${package}/zarf-values.yaml" ]; then + echo "ERROR: packages/${package}/zarf-values.yaml does not exist" + exit 1 + fi + for values_file in packages/*/zarf-values.yaml; do + pkg="${values_file#packages/}" + pkg="${pkg%/zarf-values.yaml}" + if [ -n "$package" ] && [ "$pkg" != "$package" ]; then + continue + fi + echo "Validating packages/${pkg}/zarf-values.yaml" + if ! uvx check-jsonschema \ + --schemafile "packages/${pkg}/zarf-values.schema.json" \ + "packages/${pkg}/zarf-values.yaml"; then + echo "ERROR: values schema validation failed for packages/${pkg}" + exit 1 + fi + done + + + - name: install-pepr-deps + description: "Install Pepr dependencies" + actions: + - cmd: npm ci + + - name: build-pepr + description: "Build the Pepr module required by values checks" + inputs: + package: + description: "Optional values-bearing package being checked" + default: "" + actions: + - description: Build the Pepr module when required + cmd: | + package="${{ .inputs.package }}" + if [ -z "$package" ] || [ "$package" = "base" ] || [ "$package" = "standard" ]; then + npx pepr build -z chart + else + echo "Skipping Pepr build for packages/${package}" + fi + + - name: values-generate + description: "Regenerate each values-bearing package's zarf-values.schema.json from its package definition" + inputs: + package: + description: "Optional values-bearing package to regenerate" + default: "" + actions: + - task: install-pepr-deps + - task: build-pepr + with: + package: "${{ .inputs.package }}" + - description: "Regenerate each package's values schema" + shell: + darwin: bash + linux: bash + cmd: | + set -euo pipefail + package="${{ .inputs.package }}" + if [ -n "$package" ] && [ ! -f "packages/${package}/zarf-values.yaml" ]; then + echo "ERROR: packages/${package}/zarf-values.yaml does not exist" + exit 1 + fi + for values_file in packages/*/zarf-values.yaml; do + pkg="${values_file#packages/}" + pkg="${pkg%/zarf-values.yaml}" + if [ -n "$package" ] && [ "$pkg" != "$package" ]; then + continue + fi + echo "Generating packages/${pkg}/zarf-values.schema.json" + # Write to a temp file and move on success so a failed/flaky generate never truncates a committed schema. + tmp=$(mktemp) + if ! uds zarf dev generate-schema "packages/${pkg}" --flavor upstream --delete-not-found > "$tmp"; then + rm -f "$tmp" + echo "ERROR: values schema generation failed for packages/${pkg}" + exit 1 + fi + mv "$tmp" "packages/${pkg}/zarf-values.schema.json" + done - name: helm-unittest description: "Run helm unittest on all charts" diff --git a/tasks/test.yaml b/tasks/test.yaml index 97ffbef9b6..a09bde67d0 100644 --- a/tasks/test.yaml +++ b/tasks/test.yaml @@ -145,6 +145,7 @@ tasks: actions: - cmd: | npm ci + npx pepr build -z chart npx vitest run - name: uds-core @@ -175,6 +176,27 @@ tasks: K3D_EXTRA_ARGS: "${{ .inputs.K3D_EXTRA_ARGS }}" - task: e2e-tests + - name: uds-core-values-e2e + description: "Build and test UDS Core deployed via Zarf values (equivalency to bundle deploy)" + actions: + - task: create:standard-package + with: + create_options: "--skip-sbom" + - task: setup:k3d-test-cluster + - description: "Deploy UDS Core standard package via Zarf values" + shell: + darwin: bash + linux: bash + cmd: | + set -euo pipefail + PKG=$(ls build/zarf-package-core-${UDS_ARCH}-*.tar.zst 2>/dev/null | head -1) + ./uds zarf package deploy "$PKG" \ + --values test/values/k3d-standard/values.yaml \ + --components "*" \ + --confirm --no-progress + - task: validate-packages + - task: e2e-tests + - name: uds-core-non-k3d description: "Validate and Test UDS Core deployment on a non K3d Cluster" inputs: diff --git a/test/values/base.spec.ts b/test/values/base.spec.ts new file mode 100644 index 0000000000..b757caa247 --- /dev/null +++ b/test/values/base.spec.ts @@ -0,0 +1,313 @@ +/** + * Copyright 2026 Defense Unicorns + * SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + */ + +import { describe, it, expect, beforeAll } from "vitest"; +import { + renderManifests, + preRenderDomainScenarios, + findResource, + expectNoExcludedValues, + gatewayHosts, + resourceString, + DOMAIN_SCENARIOS, + K8sResource, +} from "./helpers.js"; + +const PKG = "base"; + +let scenarioManifests: Map; + +beforeAll(async () => { + scenarioManifests = await preRenderDomainScenarios(PKG); +}); + +describe("base package values", () => { + let manifests: K8sResource[]; + + beforeAll(async () => { + manifests = await renderManifests(PKG, { + values: { + "pepr-uds-core": { + module: { + admission: { + podLabels: { probe: "PROBE_VISIBLE_PEPR" }, + image: "SHOULD_NOT_APPEAR", + }, + }, + }, + "uds-operator-config": { + "uds-operator-config": { + cluster: { attributes: { clusterName: "PROBE_VISIBLE_OPERATOR" } }, + }, + }, + "istio-controlplane": { + base: { global: { hub: "SHOULD_NOT_APPEAR" } }, + istiod: { + podLabels: { probe: "PROBE_VISIBLE_ISTIOD" }, + global: { hub: "SHOULD_NOT_APPEAR" }, + }, + "uds-global-istio-config": { + classificationBanner: { + enabledHosts: ["probe-visible-global.uds.dev"], + }, + }, + cni: { + podLabels: { probe: "PROBE_VISIBLE_CNI" }, + global: { hub: "SHOULD_NOT_APPEAR" }, + }, + ztunnel: { + podLabels: { probe: "PROBE_VISIBLE_ZTUNNEL" }, + image: "SHOULD_NOT_APPEAR", + }, + }, + "istio-admin-gateway": { + gateway: { + labels: { probe: "PROBE_VISIBLE_ADMIN" }, + global: { hub: "SHOULD_NOT_APPEAR" }, + }, + "uds-istio-config": { + rootDomain: { + enabled: true, + tls: { mode: "SIMPLE", credentialName: "PROBE_VISIBLE_ADMINCFG" }, + }, + name: "SHOULD_NOT_APPEAR", + }, + }, + "istio-tenant-gateway": { + gateway: { + labels: { probe: "PROBE_VISIBLE_TENANT" }, + global: { hub: "SHOULD_NOT_APPEAR" }, + }, + "uds-istio-config": { + rootDomain: { + enabled: true, + tls: { mode: "SIMPLE", credentialName: "PROBE_VISIBLE_TENANTCFG" }, + }, + name: "SHOULD_NOT_APPEAR", + }, + }, + "istio-passthrough-gateway": { + gateway: { + labels: { probe: "PROBE_VISIBLE_PASSTHROUGH" }, + global: { hub: "SHOULD_NOT_APPEAR" }, + }, + "uds-istio-config": { + rootDomain: { + enabled: true, + tls: { mode: "SIMPLE", credentialName: "PROBE_VISIBLE_PASSTHROUGHCFG" }, + }, + name: "SHOULD_NOT_APPEAR", + }, + }, + "istio-egress-ambient": { + "uds-istio-egress-config": { + config: { + serviceAccount: { + metadata: { annotations: { probe: "PROBE_VISIBLE_EGRESSCFG" } }, + }, + }, + }, + }, + "istio-egress-gateway": { + gateway: { + labels: { probe: "PROBE_VISIBLE_EGRESS" }, + global: { hub: "SHOULD_NOT_APPEAR" }, + }, + }, + "envoy-gateway": { + "envoy-gateway": { + deployment: { + pod: { labels: { probe: "PROBE_VISIBLE_ENVOY" } }, + envoyGateway: { image: "SHOULD_NOT_APPEAR" }, + }, + }, + "uds-envoy-gateway-config": { + global: { images: { envoyGateway: { image: "SHOULD_NOT_APPEAR" } } }, + }, + }, + "prometheus-operator-crds": { + "prometheus-operator-crds": { + crds: { + annotations: { probe: "PROBE_VISIBLE_PROMETHEUS_CRD" }, + }, + }, + }, + }, + }); + }); + + it("pepr deployment has probe label", () => { + const r = findResource(manifests, "Deployment", "pepr-uds-core", "pepr-system"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE_PEPR", + ); + }); + + it("ClusterConfig has probe cluster name", () => { + const r = findResource(manifests, "ClusterConfig", "uds-cluster-config"); + expect(resourceString(r, "spec", "attributes", "clusterName")).toBe("PROBE_VISIBLE_OPERATOR"); + }); + + it("istiod deployment has probe label", () => { + const r = findResource(manifests, "Deployment", "istiod"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE_ISTIOD", + ); + }); + + it("classification banner includes probe host", () => { + const r = findResource(manifests, "EnvoyFilter", "classification-banner"); + const json = JSON.stringify(r); + expect(json).toContain("probe-visible-global"); + }); + + it("istio CNI daemonset has probe label", () => { + const r = findResource(manifests, "DaemonSet", "istio-cni-node"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE_CNI", + ); + }); + + it("ztunnel daemonset has probe label", () => { + const r = findResource(manifests, "DaemonSet", "ztunnel"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE_ZTUNNEL", + ); + }); + + it("admin gateway deployment has probe label", () => { + const r = findResource(manifests, "Deployment", "admin-ingressgateway"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE_ADMIN", + ); + }); + + it("admin gateway has probe TLS credential", () => { + const r = findResource(manifests, "Gateway", "admin-gateway", "istio-admin-gateway"); + const json = JSON.stringify(r); + expect(json).toContain("PROBE_VISIBLE_ADMINCFG"); + }); + + it("tenant gateway deployment has probe label", () => { + const r = findResource(manifests, "Deployment", "tenant-ingressgateway"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE_TENANT", + ); + }); + + it("tenant gateway has probe TLS credential", () => { + const r = findResource(manifests, "Gateway", "tenant-gateway", "istio-tenant-gateway"); + const json = JSON.stringify(r); + expect(json).toContain("PROBE_VISIBLE_TENANTCFG"); + }); + + it("passthrough gateway deployment has probe label", () => { + const r = findResource(manifests, "Deployment", "passthrough-ingressgateway"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE_PASSTHROUGH", + ); + }); + + it("passthrough gateway has probe TLS credential", () => { + const r = findResource( + manifests, + "Gateway", + "passthrough-gateway", + "istio-passthrough-gateway", + ); + const json = JSON.stringify(r); + expect(json).toContain("PROBE_VISIBLE_PASSTHROUGHCFG"); + }); + + it("egress waypoint config has probe annotation", () => { + const r = findResource(manifests, "ConfigMap", "egress-waypoint-config"); + expect(r!.data!.serviceAccount).toContain("PROBE_VISIBLE_EGRESSCFG"); + }); + + it("egress gateway deployment has probe label", () => { + const r = findResource(manifests, "Deployment", "egressgateway"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE_EGRESS", + ); + }); + + it("envoy gateway deployment has probe label", () => { + const r = findResource(manifests, "Deployment", "envoy-gateway", "envoy-gateway-system"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE_ENVOY", + ); + }); + + it("prometheus operator CRDs have probe annotation", () => { + const r = findResource( + manifests, + "CustomResourceDefinition", + "prometheuses.monitoring.coreos.com", + ); + expect(resourceString(r, "metadata", "annotations", "probe")).toBe( + "PROBE_VISIBLE_PROMETHEUS_CRD", + ); + }); + + it("excludePaths block SHOULD_NOT_APPEAR values", () => { + expectNoExcludedValues(manifests); + }); +}); + +describe.each(DOMAIN_SCENARIOS)( + "base domain: $name", + ({ name, expectedAdminDomain, expectedDomain }) => { + let manifests: K8sResource[]; + + beforeAll(() => { + manifests = scenarioManifests.get(name)!; + }); + + it("admin gateway wildcard host uses expected admin domain", () => { + const r = findResource(manifests, "Gateway", "admin-gateway", "istio-admin-gateway"); + const hosts = gatewayHosts(r); + expect(hosts).toContain(`*.${expectedAdminDomain}`); + }); + + it("admin gateway keycloak host uses expected admin domain", () => { + const r = findResource(manifests, "Gateway", "admin-gateway", "istio-admin-gateway"); + const hosts = gatewayHosts(r); + expect(hosts).toContain(`keycloak.${expectedAdminDomain}`); + }); + + it("tenant gateway wildcard host uses expected domain", () => { + const r = findResource(manifests, "Gateway", "tenant-gateway", "istio-tenant-gateway"); + const hosts = gatewayHosts(r); + expect(hosts).toContain(`*.${expectedDomain}`); + }); + + it("tenant gateway sso host uses expected domain", () => { + const r = findResource(manifests, "Gateway", "tenant-gateway", "istio-tenant-gateway"); + const hosts = gatewayHosts(r); + expect(hosts).toContain(`sso.${expectedDomain}`); + }); + + it("passthrough gateway wildcard host uses expected domain", () => { + const r = findResource( + manifests, + "Gateway", + "passthrough-gateway", + "istio-passthrough-gateway", + ); + const hosts = gatewayHosts(r); + expect(hosts).toContain(`*.${expectedDomain}`); + }); + + it("ClusterConfig domain uses expected domain", () => { + const r = findResource(manifests, "ClusterConfig", "uds-cluster-config"); + expect(resourceString(r, "spec", "expose", "domain")).toBe(expectedDomain); + }); + + it("ClusterConfig adminDomain uses expected admin domain", () => { + const r = findResource(manifests, "ClusterConfig", "uds-cluster-config"); + expect(resourceString(r, "spec", "expose", "adminDomain")).toBe(expectedAdminDomain); + }); + }, +); diff --git a/test/values/helpers.ts b/test/values/helpers.ts new file mode 100644 index 0000000000..724ce39efb --- /dev/null +++ b/test/values/helpers.ts @@ -0,0 +1,353 @@ +/** + * Copyright 2026 Defense Unicorns + * SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + */ + +import { spawn } from "node:child_process"; +import { openSync, closeSync, mkdtempSync, writeFileSync, readFileSync, rmSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { expect } from "vitest"; +import { parseAllDocuments } from "yaml"; + +export interface K8sResource { + apiVersion?: string; + kind?: string; + metadata?: { + name?: string; + namespace?: string; + labels?: Record; + annotations?: Record; + }; + spec?: Record; + data?: Record; + [key: string]: unknown; +} + +export interface RenderOptions { + values?: Record; + variables?: Record; +} + +export interface DomainScenario { + name: string; + values: Record; + variables: Record; + expectedAdminDomain: string; + expectedDomain: string; +} + +type ResourcePathSegment = string | number; + +const ROOT = process.cwd(); + +const renderCache = new Map>(); + +function cacheKey(pkg: string, opts?: RenderOptions): string { + return JSON.stringify({ pkg, values: opts?.values, variables: opts?.variables }); +} + +export async function renderManifests(pkg: string, opts?: RenderOptions): Promise { + const key = cacheKey(pkg, opts); + const cached = renderCache.get(key); + if (cached) return cached; + + const promise = renderManifestsUncached(pkg, opts).catch(err => { + renderCache.delete(key); + throw err; + }); + renderCache.set(key, promise); + return promise; +} + +async function renderManifestsUncached(pkg: string, opts?: RenderOptions): Promise { + const tmp = mkdtempSync(join(tmpdir(), "zarf-values-test-")); + try { + const args = [ + "zarf", + "dev", + "inspect", + "manifests", + `packages/${pkg}`, + "--flavor", + "upstream", + "--values", + `packages/${pkg}/zarf-values.yaml`, + ]; + + if (opts?.values && Object.keys(opts.values).length > 0) { + const overridePath = join(tmp, "override.yaml"); + const yaml = Object.entries(opts.values) + .map(([k, v]) => `${k}: ${JSON.stringify(v)}`) + .join("\n"); + writeFileSync(overridePath, yaml); + args.push("--values", overridePath); + } + + if (opts?.variables && Object.keys(opts.variables).length > 0) { + const varString = Object.entries(opts.variables) + .map(([k, v]) => `${k}=${v}`) + .join(","); + args.push("--deploy-set-variables", varString); + } + + args.push("--no-color"); + + const outPath = join(tmp, "manifests.yaml"); + await spawnToFile("uds", args, outPath, ROOT); + const stdout = readFileSync(outPath, "utf-8"); + + const docs = parseAllDocuments(stdout); + return docs + .map(d => d.toJS() as K8sResource) + .filter((d): d is K8sResource => d != null && typeof d === "object" && "kind" in d); + } finally { + rmSync(tmp, { recursive: true, force: true }); + } +} + +function spawnToFile(cmd: string, args: string[], outPath: string, cwd: string): Promise { + return new Promise((resolve, reject) => { + const fd = openSync(outPath, "w"); + const child = spawn(cmd, args, { cwd, stdio: ["ignore", fd, "pipe"] }); + let stderr = ""; + child.stderr!.on("data", (chunk: Buffer) => { + stderr += chunk.toString(); + }); + const timer = setTimeout(() => { + child.kill(); + reject(new Error(`Timed out after 300s: ${cmd} ${args.join(" ")}`)); + }, 300_000); + child.on("close", code => { + clearTimeout(timer); + closeSync(fd); + if (code !== 0) { + reject(new Error(`${cmd} exited with code ${code}: ${stderr}`)); + } else { + resolve(); + } + }); + child.on("error", err => { + clearTimeout(timer); + closeSync(fd); + reject(err); + }); + }); +} + +export function findResource( + manifests: K8sResource[], + kind: string, + name: string, + namespace?: string, +): K8sResource | undefined { + return manifests.find( + r => + r.kind === kind && + r.metadata?.name === name && + (namespace === undefined || r.metadata?.namespace === namespace), + ); +} + +export function findResources( + manifests: K8sResource[], + kind: string, + namespace?: string, +): K8sResource[] { + return manifests.filter( + r => r.kind === kind && (namespace === undefined || r.metadata?.namespace === namespace), + ); +} + +function isRecord(value: unknown): value is Record { + return value !== null && typeof value === "object" && !Array.isArray(value); +} + +function formatPath(path: ResourcePathSegment[]): string { + return path.map(segment => (typeof segment === "number" ? `[${segment}]` : segment)).join("."); +} + +function resourceValue(resource: K8sResource | undefined, path: ResourcePathSegment[]): unknown { + if (!resource) { + throw new Error(`Cannot read ${formatPath(path)} from a missing resource`); + } + + let value: unknown = resource; + for (const segment of path) { + if (typeof segment === "number") { + if (!Array.isArray(value) || segment >= value.length) { + throw new Error(`Expected array element at ${formatPath(path)}`); + } + value = value[segment]; + } else { + if (!isRecord(value) || !(segment in value)) { + throw new Error(`Expected property at ${formatPath(path)}`); + } + value = value[segment]; + } + } + + return value; +} + +export function resourceString( + resource: K8sResource | undefined, + ...path: ResourcePathSegment[] +): string { + const value = resourceValue(resource, path); + if (typeof value !== "string") { + throw new Error(`Expected string at ${formatPath(path)}`); + } + return value; +} + +export function resourceNumber( + resource: K8sResource | undefined, + ...path: ResourcePathSegment[] +): number { + const value = resourceValue(resource, path); + if (typeof value !== "number") { + throw new Error(`Expected number at ${formatPath(path)}`); + } + return value; +} + +export function resourceStringArray( + resource: K8sResource | undefined, + ...path: ResourcePathSegment[] +): string[] { + const value = resourceValue(resource, path); + if (!Array.isArray(value) || !value.every(item => typeof item === "string")) { + throw new Error(`Expected string array at ${formatPath(path)}`); + } + return value; +} + +export function gatewayHosts(resource: K8sResource | undefined): string[] { + const servers = resourceValue(resource, ["spec", "servers"]); + if (!Array.isArray(servers)) { + throw new Error("Expected array at spec.servers"); + } + + return servers.flatMap((server, index) => { + if (!isRecord(server) || !Array.isArray(server.hosts)) { + throw new Error(`Expected host array at spec.servers[${index}].hosts`); + } + if (!server.hosts.every(host => typeof host === "string")) { + throw new Error(`Expected string hosts at spec.servers[${index}].hosts`); + } + return server.hosts; + }); +} + +export function containerEnvValue( + resource: K8sResource | undefined, + envName: string, +): string | undefined { + const containers = resourceValue(resource, ["spec", "template", "spec", "containers"]); + if (!Array.isArray(containers)) { + throw new Error("Expected array at spec.template.spec.containers"); + } + + for (const [containerIndex, container] of containers.entries()) { + if (!isRecord(container)) { + throw new Error(`Expected object at spec.template.spec.containers[${containerIndex}]`); + } + if (container.env === undefined) continue; + if (!Array.isArray(container.env)) { + throw new Error(`Expected env array for container ${containerIndex}`); + } + + for (const [envIndex, env] of container.env.entries()) { + if (!isRecord(env)) { + throw new Error(`Expected object for container ${containerIndex} env ${envIndex}`); + } + if (env.name !== envName) continue; + if (typeof env.value !== "string") { + throw new Error(`Expected string value for environment variable ${envName}`); + } + return env.value; + } + } + + return undefined; +} + +export function hasNetworkAllowDescription( + resource: K8sResource | undefined, + description: string, +): boolean { + const allows = resourceValue(resource, ["spec", "network", "allow"]); + if (!Array.isArray(allows)) { + throw new Error("Expected array at spec.network.allow"); + } + return allows.some(allow => isRecord(allow) && allow.description === description); +} + +export function allStrings(obj: unknown): string[] { + const strings: string[] = []; + const walk = (val: unknown) => { + if (typeof val === "string") { + strings.push(val); + } else if (Array.isArray(val)) { + val.forEach(walk); + } else if (val && typeof val === "object") { + Object.values(val).forEach(walk); + } + }; + walk(obj); + return strings; +} + +export function expectNoExcludedValues(manifests: K8sResource[]) { + const all = manifests.flatMap(allStrings); + expect(all.some(s => s.includes("SHOULD_NOT_APPEAR"))).toBe(false); +} + +export async function preRenderDomainScenarios(pkg: string): Promise> { + const entries = await Promise.all( + DOMAIN_SCENARIOS.map(async s => { + const manifests = await renderManifests(pkg, { values: s.values, variables: s.variables }); + return [s.name, manifests] as const; + }), + ); + return new Map(entries); +} + +export const DOMAIN_SCENARIOS: DomainScenario[] = [ + { + name: "defaults", + values: {}, + variables: {}, + expectedAdminDomain: "admin.uds.dev", + expectedDomain: "uds.dev", + }, + { + name: "domain-variable-fallback", + values: {}, + variables: { DOMAIN: "fallback.example.com" }, + expectedAdminDomain: "admin.fallback.example.com", + expectedDomain: "fallback.example.com", + }, + { + name: "domain-value", + values: { global: { domain: "custom.example.com", adminDomain: "" } }, + variables: { DOMAIN: "uds.dev" }, + expectedAdminDomain: "admin.custom.example.com", + expectedDomain: "custom.example.com", + }, + { + name: "admin-domain-value", + values: { global: { domain: "custom.example.com", adminDomain: "mgmt.example.com" } }, + variables: { DOMAIN: "uds.dev", ADMIN_DOMAIN: "ignored.example.com" }, + expectedAdminDomain: "mgmt.example.com", + expectedDomain: "custom.example.com", + }, + { + name: "admin-domain-variable", + values: { global: { domain: "custom.example.com", adminDomain: "" } }, + variables: { DOMAIN: "uds.dev", ADMIN_DOMAIN: "myadmin.example.com" }, + expectedAdminDomain: "myadmin.example.com", + expectedDomain: "custom.example.com", + }, +]; diff --git a/test/values/identity-authorization.spec.ts b/test/values/identity-authorization.spec.ts new file mode 100644 index 0000000000..c337a8d73f --- /dev/null +++ b/test/values/identity-authorization.spec.ts @@ -0,0 +1,115 @@ +/** + * Copyright 2026 Defense Unicorns + * SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + */ + +import { describe, it, expect, beforeAll } from "vitest"; +import { + renderManifests, + preRenderDomainScenarios, + findResource, + expectNoExcludedValues, + containerEnvValue, + resourceNumber, + resourceString, + DOMAIN_SCENARIOS, + K8sResource, +} from "./helpers.js"; + +const PKG = "identity-authorization"; + +let scenarioManifests: Map; + +beforeAll(async () => { + scenarioManifests = await preRenderDomainScenarios(PKG); +}); + +describe("identity-authorization package values", () => { + let manifests: K8sResource[]; + + beforeAll(async () => { + manifests = await renderManifests(PKG, { + values: { + keycloak: { + keycloak: { + podLabels: { probe: "PROBE_VISIBLE" }, + image: { repository: "SHOULD_NOT_APPEAR" }, + configImage: "ghcr.io/example/uds-identity-config:custom", + }, + }, + authservice: { + authservice: { + replicaCount: 7, + image: { repository: "SHOULD_NOT_APPEAR" }, + }, + }, + }, + }); + }); + + it("keycloak statefulset has probe label", () => { + const r = findResource(manifests, "StatefulSet", "keycloak"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE", + ); + }); + + it("keycloak uses the configured config image", () => { + const r = findResource(manifests, "StatefulSet", "keycloak"); + expect(resourceString(r, "spec", "template", "spec", "initContainers", 0, "image")).toBe( + "ghcr.io/example/uds-identity-config:custom", + ); + }); + + it("authservice deployment has seven replicas", () => { + const r = findResource(manifests, "Deployment", "authservice"); + expect(resourceNumber(r, "spec", "replicas")).toBe(7); + }); + + it("excludePaths block SHOULD_NOT_APPEAR values", () => { + expectNoExcludedValues(manifests); + }); +}); + +describe.each(DOMAIN_SCENARIOS)( + "identity-authorization domain: $name", + ({ name, expectedAdminDomain, expectedDomain }) => { + let manifests: K8sResource[]; + + beforeAll(() => { + manifests = scenarioManifests.get(name)!; + }); + + it("keycloak UDS_DOMAIN uses expected domain", () => { + const r = findResource(manifests, "StatefulSet", "keycloak"); + expect(containerEnvValue(r, "UDS_DOMAIN")).toBe(expectedDomain); + }); + + it("keycloak UDS_ADMIN_DOMAIN uses expected admin domain", () => { + const r = findResource(manifests, "StatefulSet", "keycloak"); + expect(containerEnvValue(r, "UDS_ADMIN_DOMAIN")).toBe(expectedAdminDomain); + }); + + it("envoyfilter Lua checks sso host with expected domain", () => { + const r = findResource( + manifests, + "EnvoyFilter", + "block-path-parameters-in-non-final-segments", + "istio-system", + ); + const json = JSON.stringify(r); + expect(json).toContain(`sso.${expectedDomain}`); + }); + + it("envoyfilter Lua checks keycloak host with expected admin domain", () => { + const r = findResource( + manifests, + "EnvoyFilter", + "block-path-parameters-in-non-final-segments", + "istio-system", + ); + const json = JSON.stringify(r); + expect(json).toContain(`keycloak.${expectedAdminDomain}`); + }); + }, +); diff --git a/test/values/k3d-standard/values.yaml b/test/values/k3d-standard/values.yaml new file mode 100644 index 0000000000..bffec29823 --- /dev/null +++ b/test/values/k3d-standard/values.yaml @@ -0,0 +1,84 @@ +# Copyright 2026 Defense Unicorns +# SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + +# Mirrors the k3d-standard demo bundle's static overrides (bundles/k3d-standard/uds-bundle.yaml, +# the `core` package `overrides:` block) in the component.chart namespace, for the values-deploy +# equivalency test (tasks/test.yaml: uds-core-values-e2e). Only the STATIC config is mirrored here; +# the dynamic deploy-time settings (Postgres creds, S3 keys, TLS certs) stay as Zarf variables +# injected by the dev stack. + +# The admin Istio gateway receives this shared domain as its tenant domain. With no global.adminDomain +# or ADMIN_DOMAIN, it derives admin.uds.dev. +global: + domain: "uds.dev" + +# --- base: pepr (bundle pepr var defaults) --- +pepr-uds-core: + module: + watcher: + resources: + requests: + memory: "256Mi" + cpu: "200m" + admission: + resources: + requests: + memory: "256Mi" + cpu: "200m" + +# --- identity-authorization --- +authservice: + authservice: + replicaCount: 1 +keycloak: + keycloak: + insecureAdminPasswordGeneration: + enabled: true + detailedObservability: + alerts: + enabled: true + realmInitEnv: + FLEET_CLIENT_ENABLED: "true" + GOOGLE_IDP_ENABLED: true + GOOGLE_IDP_ID: "C01881u7t" + GOOGLE_IDP_SIGNING_CERT: "MIIDdjCCAl6gAwIBAgIGAZUBt5zpMA0GCSqGSIb3DQEBCwUAMHwxFDASBgNVBAoTC0dvb2dsZSBJbmMuMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQDEwZHb29nbGUxGTAXBgNVBAsTEEdvb2dsZSBXb3Jrc3BhY2UxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMB4XDTI1MDIxMzIzNDkyNVoXDTMwMDIxMjIzNDkyNVowfDEUMBIGA1UEChMLR29vZ2xlIEluYy4xFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxDzANBgNVBAMTBkdvb2dsZTEZMBcGA1UECxMQR29vZ2xlIFdvcmtzcGFjZTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCIhy74McJ/ykhQw2zTxfe4YiTkQbupa1fzQTZSglQm8FsGZbQoihdg98QmaxyQj20SIOt3svhGEeSdromX4LSxdwxUkPwMsKrQe7ywetsUYfe7KETYCiwDs9xSpq2x1BXqJoy/oi//R/YMMrAoT6HEpE6FiU1NMuNxDiTZx+eVQ5LNlodXdUkqdXa7xsO9BumWwBdCwJgk35dW0cSkxePEBkmpKgdMgUd9SgROo1mxJG77+dQ/C3PGA/i7Gx1n3S+jjvC9sR+b5GFNJpqPYFGnSinhN2o8jQj51U0Jve7EyTV3VFgGfDrbHjYeT1CVQX9vO51FzJPtUzRsDilwpKV3AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAFpeBvkGqtN43T615DxKpJxiz1y9EqDZzi6uyhSs3xbo2kdOduXpJlziXC3Q1l94/DmItZINRJYT3Y5yh9w4yGZQn5Tc+NajjoRND6SILkMeamvEHLagXy7Qh3HzS3sO5pg5GFjwswxHIsrKxhrIoSwyNiWjz3RSvXCUPEunWjNoF4pvyS3RRs7xvi5JHUuM4ThqMY6HvwoCJqcpRMOBJiDbTooz7SJS1fpK6tVMFnXoJ6Tq89+g+yjcmmZnjV0FkeiXcb7yBR/vkuUyAQhh0Mw14B72mDwqY8Ord1AdgCdVlvRSXCrKLF/ii3AxqJ9ET0rGn0HKk5wi/lYMa3AnEZo=" + GOOGLE_IDP_NAME_ID_FORMAT: "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" + GOOGLE_IDP_CORE_ENTITY_ID: "https://sso.uds.dev/realms/uds" + GOOGLE_IDP_ADMIN_GROUP: "uds-core-dev-admin" + GOOGLE_IDP_AUDITOR_GROUP: "uds-core-dev-auditor" + +# --- logging: loki (bundle var defaults; scaled to 1 for demo/CI) --- +loki: + loki: + write: + replicas: 1 + read: + replicas: 1 + backend: + replicas: 1 + +# --- runtime-security: falco --- +falco: + falco: + falcosidekick: + replicaCount: 1 + uds-falco-config: + sandboxRulesEnabled: true + incubatingRulesEnabled: true + +# --- backup-restore: velero --- +velero: + velero: + configuration: + backupStorageLocation: + - name: default + provider: aws + bucket: "uds" + prefix: "backups" + config: + region: "uds-dev-stack" + s3ForcePathStyle: true + s3Url: "http://minio.uds-dev-stack.svc.cluster.local:9000" + credential: + name: "velero-bucket-credentials" + key: "cloud" diff --git a/test/values/logging.spec.ts b/test/values/logging.spec.ts new file mode 100644 index 0000000000..f0c98ce4d3 --- /dev/null +++ b/test/values/logging.spec.ts @@ -0,0 +1,89 @@ +/** + * Copyright 2026 Defense Unicorns + * SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + */ + +import { describe, it, expect, beforeAll } from "vitest"; +import { + renderManifests, + findResource, + expectNoExcludedValues, + hasNetworkAllowDescription, + resourceString, + K8sResource, +} from "./helpers.js"; + +const PKG = "logging"; + +describe("logging package values", () => { + let manifests: K8sResource[]; + + beforeAll(async () => { + manifests = await renderManifests(PKG, { + values: { + loki: { + loki: { + write: { podLabels: { probe: "PROBE_VISIBLE" } }, + global: { imageRegistry: "SHOULD_NOT_APPEAR" }, + }, + "uds-loki-config": { + additionalNetworkAllow: [ + { + direction: "Egress", + selector: { "app.kubernetes.io/name": "loki" }, + remoteGenerated: "Anywhere", + port: 9999, + description: "PROBE_VISIBLE", + }, + ], + }, + }, + vector: { + vector: { + podLabels: { probe: "PROBE_VISIBLE" }, + image: { repository: "SHOULD_NOT_APPEAR" }, + }, + "uds-vector-config": { + additionalNetworkAllow: [ + { + direction: "Egress", + selector: { "app.kubernetes.io/name": "vector" }, + remoteGenerated: "Anywhere", + port: 9999, + description: "PROBE_VISIBLE", + }, + ], + }, + }, + }, + }); + }); + + it("loki write statefulset has probe label", () => { + const r = findResource(manifests, "StatefulSet", "loki-write"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE", + ); + }); + + it("loki package has probe network rule", () => { + const r = findResource(manifests, "Package", "loki"); + expect(hasNetworkAllowDescription(r, "PROBE_VISIBLE")).toBe(true); + }); + + it("vector daemonset has probe label", () => { + const r = findResource(manifests, "DaemonSet", "vector"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE", + ); + }); + + it("vector package has probe network rule", () => { + const r = findResource(manifests, "Package", "vector"); + expect(hasNetworkAllowDescription(r, "PROBE_VISIBLE")).toBe(true); + }); + + it("excludePaths block SHOULD_NOT_APPEAR values", () => { + expectNoExcludedValues(manifests); + }); +}); diff --git a/test/values/monitoring.spec.ts b/test/values/monitoring.spec.ts new file mode 100644 index 0000000000..d019bacf1b --- /dev/null +++ b/test/values/monitoring.spec.ts @@ -0,0 +1,144 @@ +/** + * Copyright 2026 Defense Unicorns + * SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + */ + +import { describe, it, expect, beforeAll } from "vitest"; +import { + renderManifests, + preRenderDomainScenarios, + findResource, + expectNoExcludedValues, + hasNetworkAllowDescription, + resourceNumber, + resourceStringArray, + DOMAIN_SCENARIOS, + K8sResource, +} from "./helpers.js"; + +const PKG = "monitoring"; + +let scenarioManifests: Map; + +beforeAll(async () => { + scenarioManifests = await preRenderDomainScenarios(PKG); +}); + +describe("monitoring package values", () => { + let manifests: K8sResource[]; + + beforeAll(async () => { + manifests = await renderManifests(PKG, { + values: { + "kube-prometheus-stack": { + "kube-prometheus-stack": { + prometheus: { prometheusSpec: { replicas: 7 } }, + global: { imageRegistry: "SHOULD_NOT_APPEAR" }, + }, + "uds-prometheus-config": { + additionalNetworkAllow: [ + { direction: "Egress", remoteGenerated: "Anywhere", description: "PROBE_VISIBLE" }, + ], + }, + }, + "prometheus-blackbox-exporter": { + "prometheus-blackbox-exporter": { + replicas: 7, + image: { registry: "SHOULD_NOT_APPEAR" }, + }, + }, + grafana: { + grafana: { + extraLabels: { probe: "PROBE_VISIBLE" }, + image: { registry: "SHOULD_NOT_APPEAR" }, + }, + "uds-grafana-config": { + additionalNetworkAllow: [ + { direction: "Egress", remoteGenerated: "Anywhere", description: "PROBE_VISIBLE" }, + ], + }, + }, + }, + }); + }); + + it("prometheus has seven replicas", () => { + const r = findResource(manifests, "Prometheus", "kube-prometheus-stack-prometheus"); + expect(resourceNumber(r, "spec", "replicas")).toBe(7); + }); + + it("prometheus package has probe network rule", () => { + const r = findResource(manifests, "Package", "prometheus-stack"); + expect(hasNetworkAllowDescription(r, "PROBE_VISIBLE")).toBe(true); + }); + + it("blackbox exporter has seven replicas", () => { + const r = findResource(manifests, "Deployment", "prometheus-blackbox-exporter"); + expect(resourceNumber(r, "spec", "replicas")).toBe(7); + }); + + it("grafana deployment has probe label", () => { + const r = findResource(manifests, "Deployment", "grafana"); + expect(r!.metadata!.labels!.probe).toBe("PROBE_VISIBLE"); + }); + + it("grafana package has probe network rule", () => { + const r = findResource(manifests, "Package", "grafana"); + expect(hasNetworkAllowDescription(r, "PROBE_VISIBLE")).toBe(true); + }); + + it("excludePaths block SHOULD_NOT_APPEAR values", () => { + expectNoExcludedValues(manifests); + }); +}); + +describe.each(DOMAIN_SCENARIOS)( + "monitoring domain: $name", + ({ name, expectedAdminDomain, expectedDomain }) => { + let manifests: K8sResource[]; + + beforeAll(() => { + manifests = scenarioManifests.get(name)!; + }); + + it("grafana root_url uses expected admin domain", () => { + const r = findResource(manifests, "ConfigMap", "grafana"); + expect(r!.data!["grafana.ini"]).toContain( + `root_url = https://grafana.${expectedAdminDomain}`, + ); + }); + + it("grafana auth_url uses expected domain", () => { + const r = findResource(manifests, "ConfigMap", "grafana"); + expect(r!.data!["grafana.ini"]).toContain( + `auth_url = https://sso.${expectedDomain}/realms/uds/protocol/openid-connect/auth`, + ); + }); + + it("grafana token_url uses expected domain", () => { + const r = findResource(manifests, "ConfigMap", "grafana"); + expect(r!.data!["grafana.ini"]).toContain( + `token_url = https://sso.${expectedDomain}/realms/uds/protocol/openid-connect/token`, + ); + }); + + it("grafana signout_redirect_url uses expected domains", () => { + const r = findResource(manifests, "ConfigMap", "grafana"); + const ini = r!.data!["grafana.ini"]; + expect(ini).toContain(`sso.${expectedDomain}/realms/uds/protocol/openid-connect/logout`); + expect(ini).toContain(`grafana.${expectedAdminDomain}%2Flogin`); + }); + + it("grafana SSO redirect URI for generic_oauth uses expected admin domain", () => { + const r = findResource(manifests, "Package", "grafana"); + const redirectUris = resourceStringArray(r, "spec", "sso", 0, "redirectUris"); + expect(redirectUris).toContain(`https://grafana.${expectedAdminDomain}/login/generic_oauth`); + }); + + it("grafana SSO redirect URI for login uses expected admin domain", () => { + const r = findResource(manifests, "Package", "grafana"); + const redirectUris = resourceStringArray(r, "spec", "sso", 0, "redirectUris"); + expect(redirectUris).toContain(`https://grafana.${expectedAdminDomain}/login`); + }); + }, +); diff --git a/test/values/portal.spec.ts b/test/values/portal.spec.ts new file mode 100644 index 0000000000..0a71e8bfd3 --- /dev/null +++ b/test/values/portal.spec.ts @@ -0,0 +1,78 @@ +/** + * Copyright 2026 Defense Unicorns + * SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + */ + +import { describe, it, expect, beforeAll } from "vitest"; +import { + renderManifests, + preRenderDomainScenarios, + findResource, + expectNoExcludedValues, + containerEnvValue, + resourceNumber, + resourceStringArray, + DOMAIN_SCENARIOS, + K8sResource, +} from "./helpers.js"; + +const PKG = "portal"; + +let scenarioManifests: Map; + +beforeAll(async () => { + scenarioManifests = await preRenderDomainScenarios(PKG); +}); + +describe("portal package values", () => { + let manifests: K8sResource[]; + + beforeAll(async () => { + manifests = await renderManifests(PKG, { + values: { + "uds-portal": { + "uds-portal": { + replicaCount: 7, + image: { repository: "SHOULD_NOT_APPEAR" }, + }, + }, + }, + }); + }); + + it("portal deployment has seven replicas", () => { + const r = findResource(manifests, "Deployment", "uds-portal"); + expect(resourceNumber(r, "spec", "replicas")).toBe(7); + }); + + it("excludePaths block SHOULD_NOT_APPEAR values", () => { + expectNoExcludedValues(manifests); + }); +}); + +describe.each(DOMAIN_SCENARIOS)( + "portal domain: $name", + ({ name, expectedAdminDomain, expectedDomain }) => { + let manifests: K8sResource[]; + + beforeAll(() => { + manifests = scenarioManifests.get(name)!; + }); + + it("portal UDS_DOMAIN uses expected domain", () => { + const r = findResource(manifests, "Deployment", "uds-portal"); + expect(containerEnvValue(r, "UDS_DOMAIN")).toBe(expectedDomain); + }); + + it("portal UDS_ADMIN_DOMAIN uses expected admin domain", () => { + const r = findResource(manifests, "Deployment", "uds-portal"); + expect(containerEnvValue(r, "UDS_ADMIN_DOMAIN")).toBe(expectedAdminDomain); + }); + + it("portal SSO redirect URI uses expected domain", () => { + const r = findResource(manifests, "Package", "uds-portal"); + const redirectUris = resourceStringArray(r, "spec", "sso", 0, "redirectUris"); + expect(redirectUris).toContain(`https://portal.${expectedDomain}/auth`); + }); + }, +); diff --git a/test/values/runtime-security.spec.ts b/test/values/runtime-security.spec.ts new file mode 100644 index 0000000000..e64d37521a --- /dev/null +++ b/test/values/runtime-security.spec.ts @@ -0,0 +1,57 @@ +/** + * Copyright 2026 Defense Unicorns + * SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + */ + +import { describe, it, expect, beforeAll } from "vitest"; +import { + renderManifests, + findResource, + expectNoExcludedValues, + resourceString, + K8sResource, +} from "./helpers.js"; + +const PKG = "runtime-security"; + +describe("runtime-security package values", () => { + let manifests: K8sResource[]; + + beforeAll(async () => { + manifests = await renderManifests(PKG, { + values: { + falco: { + falco: { + podLabels: { probe: "PROBE_VISIBLE" }, + image: { registry: "SHOULD_NOT_APPEAR" }, + }, + "uds-falco-config": { + disabledRules: ["PROBE_VISIBLE"], + udsDefaultDisabledRulesStable: ["PROBE_DEFAULT"], + }, + }, + }, + }); + }); + + it("falco daemonset has probe label", () => { + const r = findResource(manifests, "DaemonSet", "falco"); + expect(resourceString(r, "spec", "template", "metadata", "labels", "probe")).toBe( + "PROBE_VISIBLE", + ); + }); + + it("falco disabled rules config has probe rule", () => { + const r = findResource(manifests, "ConfigMap", "falco-disable-rules"); + expect(r!.data!["disable-rules.yaml"]).toContain("PROBE_VISIBLE"); + }); + + it("falco default disabled rules are overridable", () => { + const r = findResource(manifests, "ConfigMap", "falco-disable-rules"); + expect(r!.data!["disable-rules.yaml"]).toContain("PROBE_DEFAULT"); + }); + + it("excludePaths block SHOULD_NOT_APPEAR values", () => { + expectNoExcludedValues(manifests); + }); +}); diff --git a/test/values/standard.spec.ts b/test/values/standard.spec.ts new file mode 100644 index 0000000000..605f80f884 --- /dev/null +++ b/test/values/standard.spec.ts @@ -0,0 +1,290 @@ +/** + * Copyright 2026 Defense Unicorns + * SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Defense-Unicorns-Commercial + */ + +import { readFileSync } from "node:fs"; +import { join } from "node:path"; +import { describe, it, expect, beforeAll } from "vitest"; +import { parse } from "yaml"; +import { + renderManifests, + findResource, + expectNoExcludedValues, + gatewayHosts, + containerEnvValue, + resourceString, + resourceStringArray, + K8sResource, +} from "./helpers.js"; + +const PKG = "standard"; + +const valuesPath = join(process.cwd(), "test/values/k3d-standard/values.yaml"); +const sharedValues = parse(readFileSync(valuesPath, "utf-8")) as Record; +const expectedDomain = "uds.dev"; +const expectedAdminDomain = "admin.uds.dev"; + +let manifests: K8sResource[]; +let variableManifests: K8sResource[]; +let nativeOverrideManifests: K8sResource[]; + +beforeAll(async () => { + manifests = await renderManifests(PKG, { values: sharedValues }); + variableManifests = await renderManifests(PKG, { + variables: { + DOMAIN: "variable.example.com", + ADMIN_DOMAIN: "admin.variable.example.com", + VELERO_BUCKET: "variable-bucket", + VELERO_BUCKET_REGION: "variable-region", + VELERO_BUCKET_PROVIDER_URL: "https://variable.example.com", + AUTHSERVICE_REDIS_URI: "redis://variable.example.com:6379", + }, + }); + nativeOverrideManifests = await renderManifests(PKG, { + values: { + ...sharedValues, + authservice: { + authservice: { + redis: { uri: "" }, + }, + }, + }, + variables: { + VELERO_BUCKET: "variable-bucket", + VELERO_BUCKET_REGION: "variable-region", + VELERO_BUCKET_PROVIDER_URL: "https://variable.example.com", + }, + }); +}); + +describe("standard package values", () => { + it("pepr deployment has expected memory request", () => { + const r = findResource(manifests, "Deployment", "pepr-uds-core", "pepr-system"); + expect( + resourceString( + r, + "spec", + "template", + "spec", + "containers", + 0, + "resources", + "requests", + "memory", + ), + ).toBe("256Mi"); + }); + + it("ClusterConfig has probe cluster name", () => { + const r = findResource(manifests, "ClusterConfig", "uds-cluster-config"); + expect(r).toBeDefined(); + }); + + it("istiod deployment exists", () => { + const r = findResource(manifests, "Deployment", "istiod", "istio-system"); + expect(r).toBeDefined(); + }); + + it("admin gateway deployment exists", () => { + const r = findResource(manifests, "Deployment", "admin-ingressgateway", "istio-admin-gateway"); + expect(r).toBeDefined(); + }); + + it("tenant gateway deployment exists", () => { + const r = findResource( + manifests, + "Deployment", + "tenant-ingressgateway", + "istio-tenant-gateway", + ); + expect(r).toBeDefined(); + }); + + it("keycloak statefulset exists", () => { + const r = findResource(manifests, "StatefulSet", "keycloak"); + expect(r).toBeDefined(); + }); + + it("grafana deployment exists", () => { + const r = findResource(manifests, "Deployment", "grafana", "grafana"); + expect(r).toBeDefined(); + }); + + it("loki write statefulset exists", () => { + const r = findResource(manifests, "StatefulSet", "loki-write"); + expect(r).toBeDefined(); + }); + + it("falco daemonset exists", () => { + const r = findResource(manifests, "DaemonSet", "falco"); + expect(r).toBeDefined(); + }); + + it("portal deployment exists", () => { + const r = findResource(manifests, "Deployment", "uds-portal", "uds-portal"); + expect(r).toBeDefined(); + }); + + it("velero deployment exists", () => { + const r = findResource(manifests, "Deployment", "velero", "velero"); + expect(r).toBeDefined(); + }); + + it("excludePaths block SHOULD_NOT_APPEAR values", () => { + expectNoExcludedValues(manifests); + }); +}); + +describe("standard variable fallbacks", () => { + it("Velero uses variable-backed storage defaults", () => { + const r = findResource(variableManifests, "BackupStorageLocation", "default", "velero"); + expect(resourceString(r, "spec", "objectStorage", "bucket")).toBe("variable-bucket"); + expect(resourceString(r, "spec", "config", "region")).toBe("variable-region"); + expect(resourceString(r, "spec", "config", "s3Url")).toBe("https://variable.example.com"); + }); + + it("Authservice uses the Redis URI variable fallback", () => { + const r = findResource(variableManifests, "Package", "authservice"); + expect(JSON.stringify(r)).toContain("Redis Session Store"); + }); + + it("native Velero values override variable-backed defaults", () => { + const r = findResource(nativeOverrideManifests, "BackupStorageLocation", "default", "velero"); + expect(resourceString(r, "spec", "objectStorage", "bucket")).toBe("uds"); + expect(resourceString(r, "spec", "config", "region")).toBe("uds-dev-stack"); + }); + + it("native Authservice values override the Redis URI variable fallback", () => { + const r = findResource(nativeOverrideManifests, "Package", "authservice"); + expect(JSON.stringify(r)).not.toContain("Redis Session Store"); + }); +}); + +describe("standard domain values", () => { + it("admin gateway wildcard host uses expected admin domain", () => { + const r = findResource(manifests, "Gateway", "admin-gateway", "istio-admin-gateway"); + const hosts = gatewayHosts(r); + expect(hosts).toContain(`*.${expectedAdminDomain}`); + }); + + it("admin gateway keycloak host uses expected admin domain", () => { + const r = findResource(manifests, "Gateway", "admin-gateway", "istio-admin-gateway"); + const hosts = gatewayHosts(r); + expect(hosts).toContain(`keycloak.${expectedAdminDomain}`); + }); + + it("tenant gateway wildcard host uses expected domain", () => { + const r = findResource(manifests, "Gateway", "tenant-gateway", "istio-tenant-gateway"); + const hosts = gatewayHosts(r); + expect(hosts).toContain(`*.${expectedDomain}`); + }); + + it("tenant gateway sso host uses expected domain", () => { + const r = findResource(manifests, "Gateway", "tenant-gateway", "istio-tenant-gateway"); + const hosts = gatewayHosts(r); + expect(hosts).toContain(`sso.${expectedDomain}`); + }); + + it("passthrough gateway wildcard host uses expected domain", () => { + const r = findResource( + manifests, + "Gateway", + "passthrough-gateway", + "istio-passthrough-gateway", + ); + const hosts = gatewayHosts(r); + expect(hosts).toContain(`*.${expectedDomain}`); + }); + + it("ClusterConfig domain uses expected domain", () => { + const r = findResource(manifests, "ClusterConfig", "uds-cluster-config"); + expect(resourceString(r, "spec", "expose", "domain")).toBe(expectedDomain); + }); + + it("ClusterConfig adminDomain uses expected admin domain", () => { + const r = findResource(manifests, "ClusterConfig", "uds-cluster-config"); + expect(resourceString(r, "spec", "expose", "adminDomain")).toBe(expectedAdminDomain); + }); + + it("keycloak UDS_DOMAIN uses expected domain", () => { + const r = findResource(manifests, "StatefulSet", "keycloak"); + expect(containerEnvValue(r, "UDS_DOMAIN")).toBe(expectedDomain); + }); + + it("keycloak UDS_ADMIN_DOMAIN uses expected admin domain", () => { + const r = findResource(manifests, "StatefulSet", "keycloak"); + expect(containerEnvValue(r, "UDS_ADMIN_DOMAIN")).toBe(expectedAdminDomain); + }); + + it("grafana root_url uses expected admin domain", () => { + const r = findResource(manifests, "ConfigMap", "grafana"); + expect(r!.data!["grafana.ini"]).toContain(`root_url = https://grafana.${expectedAdminDomain}`); + }); + + it("grafana auth_url uses expected domain", () => { + const r = findResource(manifests, "ConfigMap", "grafana"); + expect(r!.data!["grafana.ini"]).toContain( + `auth_url = https://sso.${expectedDomain}/realms/uds/protocol/openid-connect/auth`, + ); + }); + + it("grafana token_url uses expected domain", () => { + const r = findResource(manifests, "ConfigMap", "grafana"); + expect(r!.data!["grafana.ini"]).toContain( + `token_url = https://sso.${expectedDomain}/realms/uds/protocol/openid-connect/token`, + ); + }); + + it("grafana signout_redirect_url uses expected domains", () => { + const r = findResource(manifests, "ConfigMap", "grafana"); + const ini = r!.data!["grafana.ini"]; + expect(ini).toContain(`sso.${expectedDomain}/realms/uds/protocol/openid-connect/logout`); + expect(ini).toContain(`grafana.${expectedAdminDomain}%2Flogin`); + }); + + it("grafana SSO redirect URIs use expected admin domain", () => { + const r = findResource(manifests, "Package", "grafana"); + const redirectUris = resourceStringArray(r, "spec", "sso", 0, "redirectUris"); + expect(redirectUris).toContain(`https://grafana.${expectedAdminDomain}/login/generic_oauth`); + expect(redirectUris).toContain(`https://grafana.${expectedAdminDomain}/login`); + }); + + it("portal UDS_DOMAIN uses expected domain", () => { + const r = findResource(manifests, "Deployment", "uds-portal"); + expect(containerEnvValue(r, "UDS_DOMAIN")).toBe(expectedDomain); + }); + + it("portal UDS_ADMIN_DOMAIN uses expected admin domain", () => { + const r = findResource(manifests, "Deployment", "uds-portal"); + expect(containerEnvValue(r, "UDS_ADMIN_DOMAIN")).toBe(expectedAdminDomain); + }); + + it("portal SSO redirect URI uses expected domain", () => { + const r = findResource(manifests, "Package", "uds-portal"); + const redirectUris = resourceStringArray(r, "spec", "sso", 0, "redirectUris"); + expect(redirectUris).toContain(`https://portal.${expectedDomain}/auth`); + }); + + it("envoyfilter Lua checks sso host with expected domain", () => { + const r = findResource( + manifests, + "EnvoyFilter", + "block-path-parameters-in-non-final-segments", + "istio-system", + ); + const json = JSON.stringify(r); + expect(json).toContain(`sso.${expectedDomain}`); + }); + + it("envoyfilter Lua checks keycloak host with expected admin domain", () => { + const r = findResource( + manifests, + "EnvoyFilter", + "block-path-parameters-in-non-final-segments", + "istio-system", + ); + const json = JSON.stringify(r); + expect(json).toContain(`keycloak.${expectedAdminDomain}`); + }); +}); diff --git a/vitest.config.js b/vitest.config.js index 506e2718e3..753ef9f598 100644 --- a/vitest.config.js +++ b/vitest.config.js @@ -13,6 +13,8 @@ export default defineConfig({ environment: 'node', include: ['**/*.spec.ts'], exclude: ['test/vitest/**', 'scripts/**', 'uds-docs/**'], + testTimeout: 300_000, + hookTimeout: 300_000, coverage: { provider: 'v8', reporter: ['text', 'html'],