# This file was generated with kubenix k8s generator, do not edit
{
  lib,
  config,
  ...
}:
with lib; let
  types =
    lib.types
    // rec {
      str = mkOptionType {
        name = "str";
        description = "string";
        check = isString;
        merge = mergeEqualOption;
      };

      # Either value of type `finalType` or `coercedType`, the latter is
      # converted to `finalType` using `coerceFunc`.
      coercedTo = coercedType: coerceFunc: finalType:
        mkOptionType rec {
          name = "coercedTo";
          description = "${finalType.description} or ${coercedType.description}";
          check = x: finalType.check x || coercedType.check x;
          merge = loc: defs: let
            coerceVal = val:
              if finalType.check val
              then val
              else let
                coerced = coerceFunc val;
              in
                assert finalType.check coerced; coerced;
          in
            finalType.merge loc (map (def: def // {value = coerceVal def.value;}) defs);
          getSubOptions = finalType.getSubOptions;
          getSubModules = finalType.getSubModules;
          substSubModules = m: coercedTo coercedType coerceFunc (finalType.substSubModules m);
          typeMerge = t1: t2: null;
          functor = (defaultFunctor name) // {wrapped = finalType;};
        };
    };

  mkOptionDefault = mkOverride 1001;

  extraOptions = {
    kubenix = {};
  };

  mergeValuesByKey = mergeKey: values:
    listToAttrs (map
      (value:
        nameValuePair
        (
          if isAttrs value.${mergeKey}
          then toString value.${mergeKey}.content
          else (toString value.${mergeKey})
        )
        value)
      values);

  submoduleOf = ref:
    types.submodule ({name, ...}: {
      options = definitions."${ref}".options;
      config = definitions."${ref}".config;
    });

  submoduleWithMergeOf = ref: mergeKey:
    types.submodule ({name, ...}: let
      convertName = name:
        if definitions."${ref}".options.${mergeKey}.type == types.int
        then toInt name
        else name;
    in {
      options = definitions."${ref}".options;
      config =
        definitions."${ref}".config
        // {
          ${mergeKey} = mkOverride 1002 (convertName name);
        };
    });

  submoduleForDefinition = ref: resource: kind: group: version:
    types.submodule ({name, ...}: {
      options = definitions."${ref}".options // extraOptions;
      config = mkMerge ([
          definitions."${ref}".config
          {
            kind = mkOptionDefault kind;
            apiVersion = mkOptionDefault version;

            # metdata.name cannot use option default, due deep config
            metadata.name = mkOptionDefault name;
          }
        ]
        ++ (config.defaults.${resource} or [])
        ++ (config.defaults.all or []));
    });

  coerceAttrsOfSubmodulesToListByKey = ref: mergeKey: (
    types.coercedTo
    (types.listOf (submoduleOf ref))
    (mergeValuesByKey mergeKey)
    (types.attrsOf (submoduleWithMergeOf ref mergeKey))
  );

  definitions =
    {
      "google_rpc_Status" = {
        options = {
          "code" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "details" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "protobuf_types_Any"));
          };

          "message" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "code" = mkOverride 1002 null;

          "details" = mkOverride 1002 null;

          "message" = mkOverride 1002 null;
        };
      };

      "istio_adapter_bypass_Params" = {
        options = {
          "backendAddress" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "params" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Any");
          };

          "sessionBased" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };
        };

        config = {
          "backendAddress" = mkOverride 1002 null;

          "params" = mkOverride 1002 null;

          "sessionBased" = mkOverride 1002 null;
        };
      };

      "istio_adapter_circonus_Params" = {
        options = {
          "metrics" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_adapter_circonus_Params_MetricInfo"));
          };

          "submissionInterval" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "submissionUrl" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "metrics" = mkOverride 1002 null;

          "submissionInterval" = mkOverride 1002 null;

          "submissionUrl" = mkOverride 1002 null;
        };
      };

      "istio_adapter_circonus_Params_MetricInfo" = {
        options = {
          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "type" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "name" = mkOverride 1002 null;

          "type" = mkOverride 1002 null;
        };
      };

      "istio_adapter_denier_Params" = {
        options = {
          "status" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "google_rpc_Status");
          };

          "validDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "validUseCount" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "status" = mkOverride 1002 null;

          "validDuration" = mkOverride 1002 null;

          "validUseCount" = mkOverride 1002 null;
        };
      };

      "istio_adapter_dogstatsd_Params" = {
        options = {
          "address" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "bufferLength" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "globalTags" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "metrics" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "prefix" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "sampleRate" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "address" = mkOverride 1002 null;

          "bufferLength" = mkOverride 1002 null;

          "globalTags" = mkOverride 1002 null;

          "metrics" = mkOverride 1002 null;

          "prefix" = mkOverride 1002 null;

          "sampleRate" = mkOverride 1002 null;
        };
      };

      "istio_adapter_dogstatsd_Params_MetricInfo" = {
        options = {
          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "tags" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "type" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "name" = mkOverride 1002 null;

          "tags" = mkOverride 1002 null;

          "type" = mkOverride 1002 null;
        };
      };

      "istio_adapter_fluentd_Params" = {
        options = {
          "address" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "integerDuration" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };
        };

        config = {
          "address" = mkOverride 1002 null;

          "integerDuration" = mkOverride 1002 null;
        };
      };

      "istio_adapter_kubernetesenv_Params" = {
        options = {
          "cacheRefreshDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "kubeconfigPath" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "cacheRefreshDuration" = mkOverride 1002 null;

          "kubeconfigPath" = mkOverride 1002 null;
        };
      };

      "istio_adapter_list_Params" = {
        options = {
          "blacklist" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "cachingInterval" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "cachingUseCount" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "entryType" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "overrides" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "providerUrl" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "refreshInterval" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "ttl" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "blacklist" = mkOverride 1002 null;

          "cachingInterval" = mkOverride 1002 null;

          "cachingUseCount" = mkOverride 1002 null;

          "entryType" = mkOverride 1002 null;

          "overrides" = mkOverride 1002 null;

          "providerUrl" = mkOverride 1002 null;

          "refreshInterval" = mkOverride 1002 null;

          "ttl" = mkOverride 1002 null;
        };
      };

      "istio_adapter_memquota_Params" = {
        options = {
          "minDeduplicationDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "quotas" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_adapter_memquota_Params_Quota"));
          };
        };

        config = {
          "minDeduplicationDuration" = mkOverride 1002 null;

          "quotas" = mkOverride 1002 null;
        };
      };

      "istio_adapter_memquota_Params_Override" = {
        options = {
          "dimensions" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "maxAmount" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "validDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "dimensions" = mkOverride 1002 null;

          "maxAmount" = mkOverride 1002 null;

          "validDuration" = mkOverride 1002 null;
        };
      };

      "istio_adapter_memquota_Params_Quota" = {
        options = {
          "maxAmount" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "overrides" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_adapter_memquota_Params_Override"));
          };

          "validDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "maxAmount" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;

          "overrides" = mkOverride 1002 null;

          "validDuration" = mkOverride 1002 null;
        };
      };

      "istio_adapter_opa_Params" = {
        options = {
          "checkMethod" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "failClose" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "policy" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };
        };

        config = {
          "checkMethod" = mkOverride 1002 null;

          "failClose" = mkOverride 1002 null;

          "policy" = mkOverride 1002 null;
        };
      };

      "istio_adapter_prometheus_Params" = {
        options = {
          "metrics" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_adapter_prometheus_Params_MetricInfo"));
          };

          "metricsExpirationPolicy" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_adapter_prometheus_Params_MetricsExpirationPolicy");
          };
        };

        config = {
          "metrics" = mkOverride 1002 null;

          "metricsExpirationPolicy" = mkOverride 1002 null;
        };
      };

      "istio_adapter_prometheus_Params_MetricInfo" = {
        options = {
          "buckets" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_adapter_prometheus_Params_MetricInfo_BucketsDefinition");
          };

          "description" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "instanceName" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "kind" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "labelNames" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "namespace" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "buckets" = mkOverride 1002 null;

          "description" = mkOverride 1002 null;

          "instanceName" = mkOverride 1002 null;

          "kind" = mkOverride 1002 null;

          "labelNames" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;

          "namespace" = mkOverride 1002 null;
        };
      };

      "istio_adapter_prometheus_Params_MetricInfo_BucketsDefinition" = {
        options = {
          "definition" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "definition" = mkOverride 1002 null;
        };
      };

      "istio_adapter_prometheus_Params_MetricInfo_BucketsDefinition_Explicit" = {
        options = {
          "bounds" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.int);
          };
        };

        config = {
          "bounds" = mkOverride 1002 null;
        };
      };

      "istio_adapter_prometheus_Params_MetricInfo_BucketsDefinition_ExplicitBuckets" = {
        options = {
          "explicitBuckets" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_adapter_prometheus_Params_MetricInfo_BucketsDefinition_Explicit");
          };
        };

        config = {
          "explicitBuckets" = mkOverride 1002 null;
        };
      };

      "istio_adapter_prometheus_Params_MetricInfo_BucketsDefinition_Exponential" = {
        options = {
          "growthFactor" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "numFiniteBuckets" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "scale" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "growthFactor" = mkOverride 1002 null;

          "numFiniteBuckets" = mkOverride 1002 null;

          "scale" = mkOverride 1002 null;
        };
      };

      "istio_adapter_prometheus_Params_MetricInfo_BucketsDefinition_ExponentialBuckets" = {
        options = {
          "exponentialBuckets" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_adapter_prometheus_Params_MetricInfo_BucketsDefinition_Exponential");
          };
        };

        config = {
          "exponentialBuckets" = mkOverride 1002 null;
        };
      };

      "istio_adapter_prometheus_Params_MetricInfo_BucketsDefinition_Linear" = {
        options = {
          "numFiniteBuckets" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "offset" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "width" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "numFiniteBuckets" = mkOverride 1002 null;

          "offset" = mkOverride 1002 null;

          "width" = mkOverride 1002 null;
        };
      };

      "istio_adapter_prometheus_Params_MetricInfo_BucketsDefinition_LinearBuckets" = {
        options = {
          "linearBuckets" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_adapter_prometheus_Params_MetricInfo_BucketsDefinition_Linear");
          };
        };

        config = {
          "linearBuckets" = mkOverride 1002 null;
        };
      };

      "istio_adapter_prometheus_Params_MetricsExpirationPolicy" = {
        options = {
          "expiryCheckIntervalDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "metricsExpiryDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "expiryCheckIntervalDuration" = mkOverride 1002 null;

          "metricsExpiryDuration" = mkOverride 1002 null;
        };
      };

      "istio_adapter_rbac_Params" = {
        options = {
          "cacheDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "configStoreUrl" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "cacheDuration" = mkOverride 1002 null;

          "configStoreUrl" = mkOverride 1002 null;
        };
      };

      "istio_adapter_redisquota_Params" = {
        options = {
          "connectionPoolSize" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "quotas" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_adapter_redisquota_Params_Quota"));
          };

          "redisServerUrl" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "connectionPoolSize" = mkOverride 1002 null;

          "quotas" = mkOverride 1002 null;

          "redisServerUrl" = mkOverride 1002 null;
        };
      };

      "istio_adapter_redisquota_Params_Override" = {
        options = {
          "dimensions" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "maxAmount" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "dimensions" = mkOverride 1002 null;

          "maxAmount" = mkOverride 1002 null;
        };
      };

      "istio_adapter_redisquota_Params_Quota" = {
        options = {
          "bucketDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "maxAmount" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "overrides" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_adapter_redisquota_Params_Override"));
          };

          "rateLimitAlgorithm" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "validDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "bucketDuration" = mkOverride 1002 null;

          "maxAmount" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;

          "overrides" = mkOverride 1002 null;

          "rateLimitAlgorithm" = mkOverride 1002 null;

          "validDuration" = mkOverride 1002 null;
        };
      };

      "istio_adapter_servicecontrol_GcpServiceSetting" = {
        options = {
          "googleServiceName" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "meshServiceName" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "quotas" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_adapter_servicecontrol_Quota"));
          };
        };

        config = {
          "googleServiceName" = mkOverride 1002 null;

          "meshServiceName" = mkOverride 1002 null;

          "quotas" = mkOverride 1002 null;
        };
      };

      "istio_adapter_servicecontrol_Params" = {
        options = {
          "credentialPath" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "runtimeConfig" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_adapter_servicecontrol_RuntimeConfig");
          };

          "serviceConfigs" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_adapter_servicecontrol_GcpServiceSetting"));
          };
        };

        config = {
          "credentialPath" = mkOverride 1002 null;

          "runtimeConfig" = mkOverride 1002 null;

          "serviceConfigs" = mkOverride 1002 null;
        };
      };

      "istio_adapter_servicecontrol_Quota" = {
        options = {
          "expiration" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Duration");
          };

          "googleQuotaMetricName" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "expiration" = mkOverride 1002 null;

          "googleQuotaMetricName" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;
        };
      };

      "istio_adapter_servicecontrol_RuntimeConfig" = {
        options = {
          "checkCacheSize" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "checkResultExpiration" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Duration");
          };
        };

        config = {
          "checkCacheSize" = mkOverride 1002 null;

          "checkResultExpiration" = mkOverride 1002 null;
        };
      };

      "istio_adapter_signalfx_Params" = {
        options = {
          "accessToken" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "datapointInterval" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "ingestUrl" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "metrics" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_adapter_signalfx_Params_MetricConfig"));
          };
        };

        config = {
          "accessToken" = mkOverride 1002 null;

          "datapointInterval" = mkOverride 1002 null;

          "ingestUrl" = mkOverride 1002 null;

          "metrics" = mkOverride 1002 null;
        };
      };

      "istio_adapter_signalfx_Params_MetricConfig" = {
        options = {
          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "type" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "name" = mkOverride 1002 null;

          "type" = mkOverride 1002 null;
        };
      };

      "istio_adapter_solarwinds_Params" = {
        options = {
          "appopticsAccessToken" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "appopticsBatchSize" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "logs" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "metrics" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "papertrailLocalRetentionDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "papertrailUrl" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "appopticsAccessToken" = mkOverride 1002 null;

          "appopticsBatchSize" = mkOverride 1002 null;

          "logs" = mkOverride 1002 null;

          "metrics" = mkOverride 1002 null;

          "papertrailLocalRetentionDuration" = mkOverride 1002 null;

          "papertrailUrl" = mkOverride 1002 null;
        };
      };

      "istio_adapter_solarwinds_Params_LogInfo" = {
        options = {
          "payloadTemplate" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "payloadTemplate" = mkOverride 1002 null;
        };
      };

      "istio_adapter_solarwinds_Params_MetricInfo" = {
        options = {
          "labelNames" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };
        };

        config = {
          "labelNames" = mkOverride 1002 null;
        };
      };

      "istio_adapter_stackdriver_Params" = {
        options = {
          "creds" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "endpoint" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "logInfo" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "metricInfo" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "projectId" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "pushInterval" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "trace" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_adapter_stackdriver_Params_Trace");
          };
        };

        config = {
          "creds" = mkOverride 1002 null;

          "endpoint" = mkOverride 1002 null;

          "logInfo" = mkOverride 1002 null;

          "metricInfo" = mkOverride 1002 null;

          "projectId" = mkOverride 1002 null;

          "pushInterval" = mkOverride 1002 null;

          "trace" = mkOverride 1002 null;
        };
      };

      "istio_adapter_stackdriver_Params_ApiKey" = {
        options = {
          "apiKey" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "apiKey" = mkOverride 1002 null;
        };
      };

      "istio_adapter_stackdriver_Params_AppCredentials" = {
        options = {
          "appCredentials" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };
        };

        config = {
          "appCredentials" = mkOverride 1002 null;
        };
      };

      "istio_adapter_stackdriver_Params_LogInfo" = {
        options = {
          "httpMapping" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_adapter_stackdriver_Params_LogInfo_HttpRequestMapping");
          };

          "labelNames" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "payloadTemplate" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "sinkInfo" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_adapter_stackdriver_Params_LogInfo_SinkInfo");
          };
        };

        config = {
          "httpMapping" = mkOverride 1002 null;

          "labelNames" = mkOverride 1002 null;

          "payloadTemplate" = mkOverride 1002 null;

          "sinkInfo" = mkOverride 1002 null;
        };
      };

      "istio_adapter_stackdriver_Params_LogInfo_HttpRequestMapping" = {
        options = {
          "latency" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "localIp" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "method" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "referer" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "remoteIp" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "requestSize" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "responseSize" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "status" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "url" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "userAgent" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "latency" = mkOverride 1002 null;

          "localIp" = mkOverride 1002 null;

          "method" = mkOverride 1002 null;

          "referer" = mkOverride 1002 null;

          "remoteIp" = mkOverride 1002 null;

          "requestSize" = mkOverride 1002 null;

          "responseSize" = mkOverride 1002 null;

          "status" = mkOverride 1002 null;

          "url" = mkOverride 1002 null;

          "userAgent" = mkOverride 1002 null;
        };
      };

      "istio_adapter_stackdriver_Params_LogInfo_SinkInfo" = {
        options = {
          "UniqueWriterIdentity" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "UpdateDestination" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "UpdateFilter" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "UpdateIncludeChildren" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "destination" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "filter" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "id" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "UniqueWriterIdentity" = mkOverride 1002 null;

          "UpdateDestination" = mkOverride 1002 null;

          "UpdateFilter" = mkOverride 1002 null;

          "UpdateIncludeChildren" = mkOverride 1002 null;

          "destination" = mkOverride 1002 null;

          "filter" = mkOverride 1002 null;

          "id" = mkOverride 1002 null;
        };
      };

      "istio_adapter_stackdriver_Params_MetricInfo" = {
        options = {
          "buckets" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_adapter_stackdriver_Params_MetricInfo_BucketsDefinition");
          };

          "kind" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "metricType" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "value" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "buckets" = mkOverride 1002 null;

          "kind" = mkOverride 1002 null;

          "metricType" = mkOverride 1002 null;

          "value" = mkOverride 1002 null;
        };
      };

      "istio_adapter_stackdriver_Params_MetricInfo_BucketsDefinition" = {
        options = {
          "definition" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "definition" = mkOverride 1002 null;
        };
      };

      "istio_adapter_stackdriver_Params_ServiceAccountPath" = {
        options = {
          "serviceAccountPath" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "serviceAccountPath" = mkOverride 1002 null;
        };
      };

      "istio_adapter_stackdriver_Params_Trace" = {
        options = {
          "sampleProbability" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "sampleProbability" = mkOverride 1002 null;
        };
      };

      "istio_adapter_statsd_Params" = {
        options = {
          "address" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "flushBytes" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "flushDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "metrics" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "prefix" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "samplingRate" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "address" = mkOverride 1002 null;

          "flushBytes" = mkOverride 1002 null;

          "flushDuration" = mkOverride 1002 null;

          "metrics" = mkOverride 1002 null;

          "prefix" = mkOverride 1002 null;

          "samplingRate" = mkOverride 1002 null;
        };
      };

      "istio_adapter_statsd_Params_MetricInfo" = {
        options = {
          "nameTemplate" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "type" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "nameTemplate" = mkOverride 1002 null;

          "type" = mkOverride 1002 null;
        };
      };

      "istio_adapter_stdio_Params" = {
        options = {
          "logStream" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "maxDaysBeforeRotation" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "maxMegabytesBeforeRotation" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "maxRotatedFiles" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "metricLevel" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "outputAsJson" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "outputLevel" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "outputPath" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "severityLevels" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.int);
          };
        };

        config = {
          "logStream" = mkOverride 1002 null;

          "maxDaysBeforeRotation" = mkOverride 1002 null;

          "maxMegabytesBeforeRotation" = mkOverride 1002 null;

          "maxRotatedFiles" = mkOverride 1002 null;

          "metricLevel" = mkOverride 1002 null;

          "outputAsJson" = mkOverride 1002 null;

          "outputLevel" = mkOverride 1002 null;

          "outputPath" = mkOverride 1002 null;

          "severityLevels" = mkOverride 1002 null;
        };
      };

      "istio_authentication_v1alpha1_Jwt" = {
        options = {
          "audiences" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "issuer" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "jwksUri" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "jwtHeaders" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "jwtParams" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };
        };

        config = {
          "audiences" = mkOverride 1002 null;

          "issuer" = mkOverride 1002 null;

          "jwksUri" = mkOverride 1002 null;

          "jwtHeaders" = mkOverride 1002 null;

          "jwtParams" = mkOverride 1002 null;
        };
      };

      "istio_authentication_v1alpha1_MutualTls" = {
        options = {
          "allowTls" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "mode" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "allowTls" = mkOverride 1002 null;

          "mode" = mkOverride 1002 null;
        };
      };

      "istio_authentication_v1alpha1_OriginAuthenticationMethod" = {
        options = {
          "jwt" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_authentication_v1alpha1_Jwt");
          };
        };

        config = {
          "jwt" = mkOverride 1002 null;
        };
      };

      "istio_authentication_v1alpha1_PeerAuthenticationMethod" = {
        options = {
          "params" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "params" = mkOverride 1002 null;
        };
      };

      "istio_authentication_v1alpha1_PeerAuthenticationMethod_Jwt" = {
        options = {
          "jwt" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_authentication_v1alpha1_Jwt");
          };
        };

        config = {
          "jwt" = mkOverride 1002 null;
        };
      };

      "istio_authentication_v1alpha1_PeerAuthenticationMethod_Mtls" = {
        options = {
          "mtls" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_authentication_v1alpha1_MutualTls");
          };
        };

        config = {
          "mtls" = mkOverride 1002 null;
        };
      };

      "istio_authentication_v1alpha1_Policy" = {
        options = {
          "originIsOptional" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "origins" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_authentication_v1alpha1_OriginAuthenticationMethod"));
          };

          "peerIsOptional" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "peers" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_authentication_v1alpha1_PeerAuthenticationMethod"));
          };

          "principalBinding" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "targets" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_authentication_v1alpha1_TargetSelector"));
          };
        };

        config = {
          "originIsOptional" = mkOverride 1002 null;

          "origins" = mkOverride 1002 null;

          "peerIsOptional" = mkOverride 1002 null;

          "peers" = mkOverride 1002 null;

          "principalBinding" = mkOverride 1002 null;

          "targets" = mkOverride 1002 null;
        };
      };

      "istio_authentication_v1alpha1_PortSelector" = {
        options = {
          "port" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "port" = mkOverride 1002 null;
        };
      };

      "istio_authentication_v1alpha1_PortSelector_Name" = {
        options = {
          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "name" = mkOverride 1002 null;
        };
      };

      "istio_authentication_v1alpha1_PortSelector_Number" = {
        options = {
          "number" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "number" = mkOverride 1002 null;
        };
      };

      "istio_authentication_v1alpha1_TargetSelector" = {
        options = {
          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "ports" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_authentication_v1alpha1_PortSelector"));
          };
        };

        config = {
          "name" = mkOverride 1002 null;

          "ports" = mkOverride 1002 null;
        };
      };

      "istio_mesh_v1alpha1_MeshConfig" = {
        options = {
          "accessLogFile" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "authPolicy" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "connectTimeout" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_duration_Duration");
          };

          "defaultConfig" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_mesh_v1alpha1_ProxyConfig");
          };

          "disablePolicyChecks" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "enableClientSidePolicyCheck" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "enableTracing" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "ingressClass" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "ingressControllerMode" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "ingressService" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "mixerAddress" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "mixerCheckServer" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "mixerReportServer" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "outboundTrafficPolicy" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_mesh_v1alpha1_MeshConfig_OutboundTrafficPolicy");
          };

          "policyCheckFailOpen" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "proxyHttpPort" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "proxyListenPort" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "rdsRefreshDelay" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_duration_Duration");
          };

          "sdsRefreshDelay" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_duration_Duration");
          };

          "sdsUdsPath" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "accessLogFile" = mkOverride 1002 null;

          "authPolicy" = mkOverride 1002 null;

          "connectTimeout" = mkOverride 1002 null;

          "defaultConfig" = mkOverride 1002 null;

          "disablePolicyChecks" = mkOverride 1002 null;

          "enableClientSidePolicyCheck" = mkOverride 1002 null;

          "enableTracing" = mkOverride 1002 null;

          "ingressClass" = mkOverride 1002 null;

          "ingressControllerMode" = mkOverride 1002 null;

          "ingressService" = mkOverride 1002 null;

          "mixerAddress" = mkOverride 1002 null;

          "mixerCheckServer" = mkOverride 1002 null;

          "mixerReportServer" = mkOverride 1002 null;

          "outboundTrafficPolicy" = mkOverride 1002 null;

          "policyCheckFailOpen" = mkOverride 1002 null;

          "proxyHttpPort" = mkOverride 1002 null;

          "proxyListenPort" = mkOverride 1002 null;

          "rdsRefreshDelay" = mkOverride 1002 null;

          "sdsRefreshDelay" = mkOverride 1002 null;

          "sdsUdsPath" = mkOverride 1002 null;
        };
      };

      "istio_mesh_v1alpha1_MeshConfig_OutboundTrafficPolicy" = {
        options = {
          "mode" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "mode" = mkOverride 1002 null;
        };
      };

      "istio_mesh_v1alpha1_ProxyConfig" = {
        options = {
          "availabilityZone" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "binaryPath" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "concurrency" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "configPath" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "connectTimeout" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_duration_Duration");
          };

          "controlPlaneAuthPolicy" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "customConfigFile" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "discoveryAddress" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "discoveryRefreshDelay" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_duration_Duration");
          };

          "drainDuration" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_duration_Duration");
          };

          "interceptionMode" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "parentShutdownDuration" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_duration_Duration");
          };

          "proxyAdminPort" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "proxyBootstrapTemplatePath" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "serviceCluster" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "statNameLength" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "statsdUdpAddress" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "zipkinAddress" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "availabilityZone" = mkOverride 1002 null;

          "binaryPath" = mkOverride 1002 null;

          "concurrency" = mkOverride 1002 null;

          "configPath" = mkOverride 1002 null;

          "connectTimeout" = mkOverride 1002 null;

          "controlPlaneAuthPolicy" = mkOverride 1002 null;

          "customConfigFile" = mkOverride 1002 null;

          "discoveryAddress" = mkOverride 1002 null;

          "discoveryRefreshDelay" = mkOverride 1002 null;

          "drainDuration" = mkOverride 1002 null;

          "interceptionMode" = mkOverride 1002 null;

          "parentShutdownDuration" = mkOverride 1002 null;

          "proxyAdminPort" = mkOverride 1002 null;

          "proxyBootstrapTemplatePath" = mkOverride 1002 null;

          "serviceCluster" = mkOverride 1002 null;

          "statNameLength" = mkOverride 1002 null;

          "statsdUdpAddress" = mkOverride 1002 null;

          "zipkinAddress" = mkOverride 1002 null;
        };
      };

      "istio_mixer_apikey_InstanceMsg" = {
        options = {
          "api" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "apiKey" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "apiOperation" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "apiVersion" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "timestamp" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_policy_v1beta1_TimeStamp");
          };
        };

        config = {
          "api" = mkOverride 1002 null;

          "apiKey" = mkOverride 1002 null;

          "apiOperation" = mkOverride 1002 null;

          "apiVersion" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;

          "timestamp" = mkOverride 1002 null;
        };
      };

      "istio_mixer_authorization_ActionMsg" = {
        options = {
          "method" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "namespace" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "path" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "properties" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "service" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "method" = mkOverride 1002 null;

          "namespace" = mkOverride 1002 null;

          "path" = mkOverride 1002 null;

          "properties" = mkOverride 1002 null;

          "service" = mkOverride 1002 null;
        };
      };

      "istio_mixer_authorization_InstanceMsg" = {
        options = {
          "action" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_mixer_authorization_ActionMsg");
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "subject" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_mixer_authorization_SubjectMsg");
          };
        };

        config = {
          "action" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;

          "subject" = mkOverride 1002 null;
        };
      };

      "istio_mixer_authorization_SubjectMsg" = {
        options = {
          "groups" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "properties" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "user" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "groups" = mkOverride 1002 null;

          "properties" = mkOverride 1002 null;

          "user" = mkOverride 1002 null;
        };
      };

      "istio_mixer_checknothing_InstanceMsg" = {
        options = {
          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "name" = mkOverride 1002 null;
        };
      };

      "istio_mixer_edge_InstanceMsg" = {
        options = {
          "apiProtocol" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "contextProtocol" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "destinationOwner" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "destinationUid" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "destinationWorkloadName" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "destinationWorkloadNamespace" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "sourceOwner" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "sourceUid" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "sourceWorkloadName" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "sourceWorkloadNamespace" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "timestamp" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_policy_v1beta1_TimeStamp");
          };
        };

        config = {
          "apiProtocol" = mkOverride 1002 null;

          "contextProtocol" = mkOverride 1002 null;

          "destinationOwner" = mkOverride 1002 null;

          "destinationUid" = mkOverride 1002 null;

          "destinationWorkloadName" = mkOverride 1002 null;

          "destinationWorkloadNamespace" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;

          "sourceOwner" = mkOverride 1002 null;

          "sourceUid" = mkOverride 1002 null;

          "sourceWorkloadName" = mkOverride 1002 null;

          "sourceWorkloadNamespace" = mkOverride 1002 null;

          "timestamp" = mkOverride 1002 null;
        };
      };

      "istio_mixer_listentry_InstanceMsg" = {
        options = {
          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "value" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "name" = mkOverride 1002 null;

          "value" = mkOverride 1002 null;
        };
      };

      "istio_mixer_logentry_InstanceMsg" = {
        options = {
          "monitoredResourceDimensions" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "monitoredResourceType" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "severity" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "timestamp" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_policy_v1beta1_TimeStamp");
          };

          "variables" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };
        };

        config = {
          "monitoredResourceDimensions" = mkOverride 1002 null;

          "monitoredResourceType" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;

          "severity" = mkOverride 1002 null;

          "timestamp" = mkOverride 1002 null;

          "variables" = mkOverride 1002 null;
        };
      };

      "istio_mixer_metric_InstanceMsg" = {
        options = {
          "dimensions" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "monitoredResourceDimensions" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "monitoredResourceType" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "value" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_policy_v1beta1_Value");
          };
        };

        config = {
          "dimensions" = mkOverride 1002 null;

          "monitoredResourceDimensions" = mkOverride 1002 null;

          "monitoredResourceType" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;

          "value" = mkOverride 1002 null;
        };
      };

      "istio_mixer_quota_InstanceMsg" = {
        options = {
          "dimensions" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "dimensions" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;
        };
      };

      "istio_mixer_reportnothing_InstanceMsg" = {
        options = {
          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "name" = mkOverride 1002 null;
        };
      };

      "istio_mixer_tracespan_InstanceMsg" = {
        options = {
          "clientSpan" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "endTime" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_policy_v1beta1_TimeStamp");
          };

          "httpStatusCode" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "parentSpanId" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "rewriteClientSpanId" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "spanId" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "spanName" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "spanTags" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "startTime" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_policy_v1beta1_TimeStamp");
          };

          "traceId" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "clientSpan" = mkOverride 1002 null;

          "endTime" = mkOverride 1002 null;

          "httpStatusCode" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;

          "parentSpanId" = mkOverride 1002 null;

          "rewriteClientSpanId" = mkOverride 1002 null;

          "spanId" = mkOverride 1002 null;

          "spanName" = mkOverride 1002 null;

          "spanTags" = mkOverride 1002 null;

          "startTime" = mkOverride 1002 null;

          "traceId" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_Attributes" = {
        options = {
          "attributes" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };
        };

        config = {
          "attributes" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_Attributes_AttributeValue" = {
        options = {
          "value" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "value" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_CheckRequest" = {
        options = {
          "attributes" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_mixer_v1_CompressedAttributes");
          };

          "deduplicationId" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "globalWordCount" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "quotas" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };
        };

        config = {
          "attributes" = mkOverride 1002 null;

          "deduplicationId" = mkOverride 1002 null;

          "globalWordCount" = mkOverride 1002 null;

          "quotas" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_CheckRequest_QuotaParams" = {
        options = {
          "amount" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "bestEffort" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };
        };

        config = {
          "amount" = mkOverride 1002 null;

          "bestEffort" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_CheckResponse" = {
        options = {
          "precondition" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_mixer_v1_CheckResponse_PreconditionResult");
          };

          "quotas" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };
        };

        config = {
          "precondition" = mkOverride 1002 null;

          "quotas" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_CheckResponse_PreconditionResult" = {
        options = {
          "referencedAttributes" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_mixer_v1_ReferencedAttributes");
          };

          "routeDirective" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_mixer_v1_RouteDirective");
          };

          "status" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "google_rpc_Status");
          };

          "validDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "validUseCount" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "referencedAttributes" = mkOverride 1002 null;

          "routeDirective" = mkOverride 1002 null;

          "status" = mkOverride 1002 null;

          "validDuration" = mkOverride 1002 null;

          "validUseCount" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_CheckResponse_QuotaResult" = {
        options = {
          "grantedAmount" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "referencedAttributes" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_mixer_v1_ReferencedAttributes");
          };

          "validDuration" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "grantedAmount" = mkOverride 1002 null;

          "referencedAttributes" = mkOverride 1002 null;

          "validDuration" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_CompressedAttributes" = {
        options = {
          "bools" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.bool);
          };

          "bytes" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "doubles" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.int);
          };

          "durations" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.int);
          };

          "int64s" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.int);
          };

          "stringMaps" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "strings" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.int);
          };

          "timestamps" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "words" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };
        };

        config = {
          "bools" = mkOverride 1002 null;

          "bytes" = mkOverride 1002 null;

          "doubles" = mkOverride 1002 null;

          "durations" = mkOverride 1002 null;

          "int64s" = mkOverride 1002 null;

          "stringMaps" = mkOverride 1002 null;

          "strings" = mkOverride 1002 null;

          "timestamps" = mkOverride 1002 null;

          "words" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_HeaderOperation" = {
        options = {
          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "operation" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "value" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "name" = mkOverride 1002 null;

          "operation" = mkOverride 1002 null;

          "value" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_ReferencedAttributes" = {
        options = {
          "attributeMatches" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_mixer_v1_ReferencedAttributes_AttributeMatch"));
          };

          "words" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };
        };

        config = {
          "attributeMatches" = mkOverride 1002 null;

          "words" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_ReferencedAttributes_AttributeMatch" = {
        options = {
          "condition" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "mapKey" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "regex" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "condition" = mkOverride 1002 null;

          "mapKey" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;

          "regex" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_ReportRequest" = {
        options = {
          "attributes" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_mixer_v1_CompressedAttributes"));
          };

          "defaultWords" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "globalWordCount" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "attributes" = mkOverride 1002 null;

          "defaultWords" = mkOverride 1002 null;

          "globalWordCount" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_ReportResponse" = {};

      "istio_mixer_v1_RouteDirective" = {
        options = {
          "directResponseBody" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "directResponseCode" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "requestHeaderOperations" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_mixer_v1_HeaderOperation"));
          };

          "responseHeaderOperations" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_mixer_v1_HeaderOperation"));
          };
        };

        config = {
          "directResponseBody" = mkOverride 1002 null;

          "directResponseCode" = mkOverride 1002 null;

          "requestHeaderOperations" = mkOverride 1002 null;

          "responseHeaderOperations" = mkOverride 1002 null;
        };
      };

      "istio_mixer_v1_StringMap" = {
        options = {
          "entries" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.int);
          };
        };

        config = {
          "entries" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_ConnectionPoolSettings" = {
        options = {
          "http" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_ConnectionPoolSettings_HTTPSettings");
          };

          "tcp" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_ConnectionPoolSettings_TCPSettings");
          };
        };

        config = {
          "http" = mkOverride 1002 null;

          "tcp" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_ConnectionPoolSettings_HTTPSettings" = {
        options = {
          "http1MaxPendingRequests" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "http2MaxRequests" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "maxRequestsPerConnection" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "maxRetries" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "http1MaxPendingRequests" = mkOverride 1002 null;

          "http2MaxRequests" = mkOverride 1002 null;

          "maxRequestsPerConnection" = mkOverride 1002 null;

          "maxRetries" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_ConnectionPoolSettings_TCPSettings" = {
        options = {
          "connectTimeout" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Duration");
          };

          "maxConnections" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "connectTimeout" = mkOverride 1002 null;

          "maxConnections" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_CorsPolicy" = {
        options = {
          "allowCredentials" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_BoolValue");
          };

          "allowHeaders" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "allowMethods" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "allowOrigin" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "exposeHeaders" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "maxAge" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Duration");
          };
        };

        config = {
          "allowCredentials" = mkOverride 1002 null;

          "allowHeaders" = mkOverride 1002 null;

          "allowMethods" = mkOverride 1002 null;

          "allowOrigin" = mkOverride 1002 null;

          "exposeHeaders" = mkOverride 1002 null;

          "maxAge" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_Destination" = {
        options = {
          "host" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "port" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_PortSelector");
          };

          "subset" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "host" = mkOverride 1002 null;

          "port" = mkOverride 1002 null;

          "subset" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_DestinationRule" = {
        options = {
          "host" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "subsets" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_Subset"));
          };

          "trafficPolicy" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_TrafficPolicy");
          };
        };

        config = {
          "host" = mkOverride 1002 null;

          "subsets" = mkOverride 1002 null;

          "trafficPolicy" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_DestinationWeight" = {
        options = {
          "destination" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_Destination");
          };

          "weight" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "destination" = mkOverride 1002 null;

          "weight" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_EnvoyFilter" = {
        options = {
          "filters" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_EnvoyFilter_Filter"));
          };

          "workloadLabels" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };
        };

        config = {
          "filters" = mkOverride 1002 null;

          "workloadLabels" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_EnvoyFilter_Filter" = {
        options = {
          "filterConfig" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Struct");
          };

          "filterName" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "filterType" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "insertPosition" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_EnvoyFilter_InsertPosition");
          };

          "listenerMatch" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_EnvoyFilter_ListenerMatch");
          };
        };

        config = {
          "filterConfig" = mkOverride 1002 null;

          "filterName" = mkOverride 1002 null;

          "filterType" = mkOverride 1002 null;

          "insertPosition" = mkOverride 1002 null;

          "listenerMatch" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_EnvoyFilter_InsertPosition" = {
        options = {
          "index" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "relativeTo" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "index" = mkOverride 1002 null;

          "relativeTo" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_EnvoyFilter_ListenerMatch" = {
        options = {
          "address" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "listenerProtocol" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "listenerType" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "portNamePrefix" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "portNumber" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "address" = mkOverride 1002 null;

          "listenerProtocol" = mkOverride 1002 null;

          "listenerType" = mkOverride 1002 null;

          "portNamePrefix" = mkOverride 1002 null;

          "portNumber" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_Gateway" = {
        options = {
          "selector" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "servers" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_Server"));
          };
        };

        config = {
          "selector" = mkOverride 1002 null;

          "servers" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPFaultInjection" = {
        options = {
          "abort" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_HTTPFaultInjection_Abort");
          };

          "delay" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_HTTPFaultInjection_Delay");
          };
        };

        config = {
          "abort" = mkOverride 1002 null;

          "delay" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPFaultInjection_Abort" = {
        options = {
          "errorType" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "percent" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "errorType" = mkOverride 1002 null;

          "percent" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPFaultInjection_Abort_GrpcStatus" = {
        options = {
          "grpcStatus" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "grpcStatus" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPFaultInjection_Abort_Http2Error" = {
        options = {
          "http2Error" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "http2Error" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPFaultInjection_Abort_HttpStatus" = {
        options = {
          "httpStatus" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "httpStatus" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPFaultInjection_Delay" = {
        options = {
          "httpDelayType" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "percent" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "httpDelayType" = mkOverride 1002 null;

          "percent" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPFaultInjection_Delay_ExponentialDelay" = {
        options = {
          "exponentialDelay" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Duration");
          };
        };

        config = {
          "exponentialDelay" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPFaultInjection_Delay_FixedDelay" = {
        options = {
          "fixedDelay" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Duration");
          };
        };

        config = {
          "fixedDelay" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPMatchRequest" = {
        options = {
          "authority" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_StringMatch");
          };

          "gateways" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "headers" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };

          "method" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_StringMatch");
          };

          "port" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "scheme" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_StringMatch");
          };

          "sourceLabels" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "uri" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_StringMatch");
          };
        };

        config = {
          "authority" = mkOverride 1002 null;

          "gateways" = mkOverride 1002 null;

          "headers" = mkOverride 1002 null;

          "method" = mkOverride 1002 null;

          "port" = mkOverride 1002 null;

          "scheme" = mkOverride 1002 null;

          "sourceLabels" = mkOverride 1002 null;

          "uri" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPRedirect" = {
        options = {
          "authority" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "uri" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "authority" = mkOverride 1002 null;

          "uri" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPRetry" = {
        options = {
          "attempts" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "perTryTimeout" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Duration");
          };
        };

        config = {
          "attempts" = mkOverride 1002 null;

          "perTryTimeout" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPRewrite" = {
        options = {
          "authority" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "uri" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "authority" = mkOverride 1002 null;

          "uri" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_HTTPRoute" = {
        options = {
          "appendHeaders" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "corsPolicy" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_CorsPolicy");
          };

          "fault" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_HTTPFaultInjection");
          };

          "match" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_HTTPMatchRequest"));
          };

          "mirror" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_Destination");
          };

          "redirect" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_HTTPRedirect");
          };

          "removeResponseHeaders" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "retries" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_HTTPRetry");
          };

          "rewrite" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_HTTPRewrite");
          };

          "route" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_DestinationWeight"));
          };

          "timeout" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Duration");
          };

          "websocketUpgrade" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };
        };

        config = {
          "appendHeaders" = mkOverride 1002 null;

          "corsPolicy" = mkOverride 1002 null;

          "fault" = mkOverride 1002 null;

          "match" = mkOverride 1002 null;

          "mirror" = mkOverride 1002 null;

          "redirect" = mkOverride 1002 null;

          "removeResponseHeaders" = mkOverride 1002 null;

          "retries" = mkOverride 1002 null;

          "rewrite" = mkOverride 1002 null;

          "route" = mkOverride 1002 null;

          "timeout" = mkOverride 1002 null;

          "websocketUpgrade" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_L4MatchAttributes" = {
        options = {
          "destinationSubnets" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "gateways" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "port" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "sourceLabels" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "sourceSubnet" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "destinationSubnets" = mkOverride 1002 null;

          "gateways" = mkOverride 1002 null;

          "port" = mkOverride 1002 null;

          "sourceLabels" = mkOverride 1002 null;

          "sourceSubnet" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_LoadBalancerSettings" = {
        options = {
          "lbPolicy" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "lbPolicy" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_LoadBalancerSettings_ConsistentHash" = {
        options = {
          "consistentHash" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_LoadBalancerSettings_ConsistentHashLB");
          };
        };

        config = {
          "consistentHash" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_LoadBalancerSettings_ConsistentHashLB" = {
        options = {
          "hashKey" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "minimumRingSize" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "hashKey" = mkOverride 1002 null;

          "minimumRingSize" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_LoadBalancerSettings_ConsistentHashLB_HTTPCookie" = {
        options = {
          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "path" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "ttl" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "name" = mkOverride 1002 null;

          "path" = mkOverride 1002 null;

          "ttl" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_LoadBalancerSettings_ConsistentHashLB_HttpCookie" = {
        options = {
          "httpCookie" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_LoadBalancerSettings_ConsistentHashLB_HTTPCookie");
          };
        };

        config = {
          "httpCookie" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_LoadBalancerSettings_ConsistentHashLB_HttpHeaderName" = {
        options = {
          "httpHeaderName" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "httpHeaderName" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_LoadBalancerSettings_ConsistentHashLB_UseSourceIp" = {
        options = {
          "useSourceIp" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };
        };

        config = {
          "useSourceIp" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_LoadBalancerSettings_Simple" = {
        options = {
          "simple" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "simple" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_OutlierDetection" = {
        options = {
          "baseEjectionTime" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Duration");
          };

          "consecutiveErrors" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "interval" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Duration");
          };

          "maxEjectionPercent" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "baseEjectionTime" = mkOverride 1002 null;

          "consecutiveErrors" = mkOverride 1002 null;

          "interval" = mkOverride 1002 null;

          "maxEjectionPercent" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_Port" = {
        options = {
          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "number" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "protocol" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "name" = mkOverride 1002 null;

          "number" = mkOverride 1002 null;

          "protocol" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_PortSelector" = {
        options = {
          "port" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "port" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_PortSelector_Name" = {
        options = {
          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "name" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_PortSelector_Number" = {
        options = {
          "number" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "number" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_Server" = {
        options = {
          "hosts" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "port" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_Port");
          };

          "tls" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_Server_TLSOptions");
          };
        };

        config = {
          "hosts" = mkOverride 1002 null;

          "port" = mkOverride 1002 null;

          "tls" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_Server_TLSOptions" = {
        options = {
          "caCertificates" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "httpsRedirect" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };

          "mode" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "privateKey" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "serverCertificate" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "subjectAltNames" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };
        };

        config = {
          "caCertificates" = mkOverride 1002 null;

          "httpsRedirect" = mkOverride 1002 null;

          "mode" = mkOverride 1002 null;

          "privateKey" = mkOverride 1002 null;

          "serverCertificate" = mkOverride 1002 null;

          "subjectAltNames" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_ServiceEntry" = {
        options = {
          "addresses" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "endpoints" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_ServiceEntry_Endpoint"));
          };

          "hosts" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "location" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "ports" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_Port"));
          };

          "resolution" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "addresses" = mkOverride 1002 null;

          "endpoints" = mkOverride 1002 null;

          "hosts" = mkOverride 1002 null;

          "location" = mkOverride 1002 null;

          "ports" = mkOverride 1002 null;

          "resolution" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_ServiceEntry_Endpoint" = {
        options = {
          "address" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "labels" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "ports" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.int);
          };
        };

        config = {
          "address" = mkOverride 1002 null;

          "labels" = mkOverride 1002 null;

          "ports" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_StringMatch" = {
        options = {
          "matchType" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "matchType" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_StringMatch_Exact" = {
        options = {
          "exact" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "exact" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_StringMatch_Prefix" = {
        options = {
          "prefix" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "prefix" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_StringMatch_Regex" = {
        options = {
          "regex" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "regex" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_Subset" = {
        options = {
          "labels" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "trafficPolicy" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_TrafficPolicy");
          };
        };

        config = {
          "labels" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;

          "trafficPolicy" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_TCPRoute" = {
        options = {
          "match" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_L4MatchAttributes"));
          };

          "route" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_DestinationWeight"));
          };
        };

        config = {
          "match" = mkOverride 1002 null;

          "route" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_TLSMatchAttributes" = {
        options = {
          "destinationSubnets" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "gateways" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "port" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "sniHosts" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "sourceLabels" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "sourceSubnet" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "destinationSubnets" = mkOverride 1002 null;

          "gateways" = mkOverride 1002 null;

          "port" = mkOverride 1002 null;

          "sniHosts" = mkOverride 1002 null;

          "sourceLabels" = mkOverride 1002 null;

          "sourceSubnet" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_TLSRoute" = {
        options = {
          "match" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_TLSMatchAttributes"));
          };

          "route" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_DestinationWeight"));
          };
        };

        config = {
          "match" = mkOverride 1002 null;

          "route" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_TLSSettings" = {
        options = {
          "caCertificates" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "clientCertificate" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "mode" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "privateKey" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "sni" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "subjectAltNames" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };
        };

        config = {
          "caCertificates" = mkOverride 1002 null;

          "clientCertificate" = mkOverride 1002 null;

          "mode" = mkOverride 1002 null;

          "privateKey" = mkOverride 1002 null;

          "sni" = mkOverride 1002 null;

          "subjectAltNames" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_TrafficPolicy" = {
        options = {
          "connectionPool" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_ConnectionPoolSettings");
          };

          "loadBalancer" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_LoadBalancerSettings");
          };

          "outlierDetection" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_OutlierDetection");
          };

          "portLevelSettings" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_TrafficPolicy_PortTrafficPolicy"));
          };

          "tls" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_TLSSettings");
          };
        };

        config = {
          "connectionPool" = mkOverride 1002 null;

          "loadBalancer" = mkOverride 1002 null;

          "outlierDetection" = mkOverride 1002 null;

          "portLevelSettings" = mkOverride 1002 null;

          "tls" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_TrafficPolicy_PortTrafficPolicy" = {
        options = {
          "connectionPool" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_ConnectionPoolSettings");
          };

          "loadBalancer" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_LoadBalancerSettings");
          };

          "outlierDetection" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_OutlierDetection");
          };

          "port" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_PortSelector");
          };

          "tls" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_networking_v1alpha3_TLSSettings");
          };
        };

        config = {
          "connectionPool" = mkOverride 1002 null;

          "loadBalancer" = mkOverride 1002 null;

          "outlierDetection" = mkOverride 1002 null;

          "port" = mkOverride 1002 null;

          "tls" = mkOverride 1002 null;
        };
      };

      "istio_networking_v1alpha3_VirtualService" = {
        options = {
          "gateways" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "hosts" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "http" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_HTTPRoute"));
          };

          "tcp" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_TCPRoute"));
          };

          "tls" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_networking_v1alpha3_TLSRoute"));
          };
        };

        config = {
          "gateways" = mkOverride 1002 null;

          "hosts" = mkOverride 1002 null;

          "http" = mkOverride 1002 null;

          "tcp" = mkOverride 1002 null;

          "tls" = mkOverride 1002 null;
        };
      };

      "istio_policy_v1beta1_Action" = {
        options = {
          "handler" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "instances" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };
        };

        config = {
          "handler" = mkOverride 1002 null;

          "instances" = mkOverride 1002 null;
        };
      };

      "istio_policy_v1beta1_Rule" = {
        options = {
          "actions" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_policy_v1beta1_Action"));
          };

          "match" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "actions" = mkOverride 1002 null;

          "match" = mkOverride 1002 null;
        };
      };

      "istio_policy_v1beta1_TimeStamp" = {
        options = {
          "value" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "protobuf_types_Timestamp");
          };
        };

        config = {
          "value" = mkOverride 1002 null;
        };
      };

      "istio_policy_v1beta1_Value" = {
        options = {
          "value" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "value" = mkOverride 1002 null;
        };
      };

      "istio_rbac_v1alpha1_AccessRule" = {
        options = {
          "constraints" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_rbac_v1alpha1_AccessRule_Constraint"));
          };

          "methods" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "paths" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "services" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };
        };

        config = {
          "constraints" = mkOverride 1002 null;

          "methods" = mkOverride 1002 null;

          "paths" = mkOverride 1002 null;

          "services" = mkOverride 1002 null;
        };
      };

      "istio_rbac_v1alpha1_AccessRule_Constraint" = {
        options = {
          "key" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "values" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };
        };

        config = {
          "key" = mkOverride 1002 null;

          "values" = mkOverride 1002 null;
        };
      };

      "istio_rbac_v1alpha1_RbacConfig" = {
        options = {
          "exclusion" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_rbac_v1alpha1_RbacConfig_Target");
          };

          "inclusion" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_rbac_v1alpha1_RbacConfig_Target");
          };

          "mode" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "exclusion" = mkOverride 1002 null;

          "inclusion" = mkOverride 1002 null;

          "mode" = mkOverride 1002 null;
        };
      };

      "istio_rbac_v1alpha1_RbacConfig_Target" = {
        options = {
          "namespaces" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };

          "services" = mkOption {
            description = "";
            type = types.nullOr (types.listOf types.str);
          };
        };

        config = {
          "namespaces" = mkOverride 1002 null;

          "services" = mkOverride 1002 null;
        };
      };

      "istio_rbac_v1alpha1_RoleRef" = {
        options = {
          "kind" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "name" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "kind" = mkOverride 1002 null;

          "name" = mkOverride 1002 null;
        };
      };

      "istio_rbac_v1alpha1_ServiceRole" = {
        options = {
          "rules" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_rbac_v1alpha1_AccessRule"));
          };
        };

        config = {
          "rules" = mkOverride 1002 null;
        };
      };

      "istio_rbac_v1alpha1_ServiceRoleBinding" = {
        options = {
          "mode" = mkOption {
            description = "";
            type = types.unspecified;
          };

          "roleRef" = mkOption {
            description = "";
            type = types.nullOr (submoduleOf "istio_rbac_v1alpha1_RoleRef");
          };

          "subjects" = mkOption {
            description = "";
            type = types.nullOr (types.listOf (submoduleOf "istio_rbac_v1alpha1_Subject"));
          };
        };

        config = {
          "mode" = mkOverride 1002 null;

          "roleRef" = mkOverride 1002 null;

          "subjects" = mkOverride 1002 null;
        };
      };

      "istio_rbac_v1alpha1_Subject" = {
        options = {
          "group" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "properties" = mkOption {
            description = "";
            type = types.nullOr (types.attrsOf types.str);
          };

          "user" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "group" = mkOverride 1002 null;

          "properties" = mkOverride 1002 null;

          "user" = mkOverride 1002 null;
        };
      };

      "protobuf_duration_Duration" = {
        options = {
          "nanos" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "seconds" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "nanos" = mkOverride 1002 null;

          "seconds" = mkOverride 1002 null;
        };
      };

      "protobuf_types_Any" = {
        options = {
          "typeUrl" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };

          "value" = mkOption {
            description = "";
            type = types.nullOr types.str;
          };
        };

        config = {
          "typeUrl" = mkOverride 1002 null;

          "value" = mkOverride 1002 null;
        };
      };

      "protobuf_types_BoolValue" = {
        options = {
          "value" = mkOption {
            description = "";
            type = types.nullOr types.bool;
          };
        };

        config = {
          "value" = mkOverride 1002 null;
        };
      };

      "protobuf_types_Duration" = {
        options = {
          "nanos" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "seconds" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "nanos" = mkOverride 1002 null;

          "seconds" = mkOverride 1002 null;
        };
      };

      "protobuf_types_Struct" = {
        options = {
          "fields" = mkOption {
            description = "";
            type = types.nullOr types.attrs;
          };
        };

        config = {
          "fields" = mkOverride 1002 null;
        };
      };

      "protobuf_types_Timestamp" = {
        options = {
          "nanos" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };

          "seconds" = mkOption {
            description = "";
            type = types.nullOr types.int;
          };
        };

        config = {
          "nanos" = mkOverride 1002 null;

          "seconds" = mkOverride 1002 null;
        };
      };

      "protobuf_types_Value" = {
        options = {
          "kind" = mkOption {
            description = "";
            type = types.unspecified;
          };
        };

        config = {
          "kind" = mkOverride 1002 null;
        };
      };
    }
    // (import ./istio-overrides.nix {inherit definitions lib;});
in {
  kubernetes.customResources = [
    {
      group = "networking.istio.io";
      version = "v1alpha3";
      kind = "DestinationRule";
      description = "";
      module = definitions."istio_networking_v1alpha3_DestinationRule";
    }
    {
      group = "networking.istio.io";
      version = "v1alpha3";
      kind = "EnvoyFilter";
      description = "";
      module = definitions."istio_networking_v1alpha3_EnvoyFilter";
    }
    {
      group = "networking.istio.io";
      version = "v1alpha3";
      kind = "Gateway";
      description = "";
      module = definitions."istio_networking_v1alpha3_Gateway";
    }
    {
      group = "authentication.istio.io";
      version = "v1alpha1";
      kind = "Policy";
      description = "";
      module = definitions."istio_authentication_v1alpha1_Policy";
    }
    {
      group = "rbac.istio.io";
      version = "v1alpha1";
      kind = "RbacConfig";
      description = "";
      module = definitions."istio_rbac_v1alpha1_RbacConfig";
    }
    {
      group = "policy.istio.io";
      version = "v1beta1";
      kind = "Rule";
      description = "";
      module = definitions."istio_policy_v1beta1_Rule";
    }
    {
      group = "networking.istio.io";
      version = "v1alpha3";
      kind = "ServiceEntry";
      description = "";
      module = definitions."istio_networking_v1alpha3_ServiceEntry";
    }
    {
      group = "rbac.istio.io";
      version = "v1alpha1";
      kind = "ServiceRole";
      description = "";
      module = definitions."istio_rbac_v1alpha1_ServiceRole";
    }
    {
      group = "rbac.istio.io";
      version = "v1alpha1";
      kind = "ServiceRoleBinding";
      description = "";
      module = definitions."istio_rbac_v1alpha1_ServiceRoleBinding";
    }
    {
      group = "networking.istio.io";
      version = "v1alpha3";
      kind = "VirtualService";
      description = "";
      module = definitions."istio_networking_v1alpha3_VirtualService";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "apikey";
      description = "";
      module = definitions."istio_mixer_apikey_InstanceMsg";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "authorization";
      description = "";
      module = definitions."istio_mixer_authorization_InstanceMsg";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "bypass";
      description = "";
      module = definitions."istio_adapter_bypass_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "checknothing";
      description = "";
      module = definitions."istio_mixer_checknothing_InstanceMsg";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "circonus";
      description = "";
      module = definitions."istio_adapter_circonus_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "denier";
      description = "";
      module = definitions."istio_adapter_denier_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "edge";
      description = "";
      module = definitions."istio_mixer_edge_InstanceMsg";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "fluentd";
      description = "";
      module = definitions."istio_adapter_fluentd_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "kubernetesenv";
      description = "";
      module = definitions."istio_adapter_kubernetesenv_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "listentry";
      description = "";
      module = definitions."istio_mixer_listentry_InstanceMsg";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "logentry";
      description = "";
      module = definitions."istio_mixer_logentry_InstanceMsg";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "memquota";
      description = "";
      module = definitions."istio_adapter_memquota_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "metric";
      description = "";
      module = definitions."istio_mixer_metric_InstanceMsg";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "opa";
      description = "";
      module = definitions."istio_adapter_opa_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "prometheus";
      description = "";
      module = definitions."istio_adapter_prometheus_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "quota";
      description = "";
      module = definitions."istio_mixer_quota_InstanceMsg";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "rbac";
      description = "";
      module = definitions."istio_adapter_rbac_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "redisquota";
      description = "";
      module = definitions."istio_adapter_redisquota_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "reportnothing";
      description = "";
      module = definitions."istio_mixer_reportnothing_InstanceMsg";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "servicecontrol";
      description = "";
      module = definitions."istio_adapter_servicecontrol_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "signalfx";
      description = "";
      module = definitions."istio_adapter_signalfx_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "solarwinds";
      description = "";
      module = definitions."istio_adapter_solarwinds_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "stackdriver";
      description = "";
      module = definitions."istio_adapter_stackdriver_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "statsd";
      description = "";
      module = definitions."istio_adapter_statsd_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "stdio";
      description = "";
      module = definitions."istio_adapter_stdio_Params";
    }
    {
      group = "config.istio.io";
      version = "v1alpha2";
      kind = "tracespan";
      description = "";
      module = definitions."istio_mixer_tracespan_InstanceMsg";
    }
  ];
}
