From 886b07de9254bf58ffffd0983a70f36b6bfeb4a8 Mon Sep 17 00:00:00 2001 From: arewm Date: Tue, 16 Sep 2025 11:25:43 -0400 Subject: [PATCH 1/2] Bump github.com/sigstore/cosign/v2 from 2.5.3 to 2.6.0 Proposing to bump the cosign version to include new library calls to push attestations with the referrer's API. - [Release notes](https://github.com/sigstore/cosign/releases/tag/v2.6.0) - [Changelog](https://github.com/sigstore/cosign/blob/6431af15a8066c4b33c7232fc2dba3f9278a16a5/CHANGELOG.md) - [Commits](https://github.com/sigstore/cosign/compare/v2.5.3...v2.6.0) The new changes desired are sigstore/cosign/pull/4357 which should better support the work in #1409. Signed-off-by: arewm rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- go.mod | 183 +- go.sum | 423 +- vendor/cloud.google.com/go/spanner/CHANGES.md | 43 + .../database/apiv1/database_admin_client.go | 161 +- .../databasepb/spanner_database_admin.pb.go | 2081 ++- .../apiv1/spannerpb/commit_response.pb.go | 73 +- .../spanner/apiv1/spannerpb/transaction.pb.go | 397 +- vendor/cloud.google.com/go/spanner/client.go | 106 +- .../go/spanner/grpc_client.go | 93 +- vendor/cloud.google.com/go/spanner/grpc_dp.go | 24 + .../go/spanner/internal/version.go | 2 +- vendor/cloud.google.com/go/spanner/metrics.go | 11 +- .../cloud.google.com/go/spanner/ot_metrics.go | 22 +- vendor/cloud.google.com/go/spanner/pdml.go | 4 +- vendor/cloud.google.com/go/spanner/read.go | 25 +- vendor/cloud.google.com/go/spanner/retry.go | 12 +- .../go/spanner/sessionclient.go | 9 +- vendor/cloud.google.com/go/spanner/trace.go | 75 + .../go/spanner/transaction.go | 16 +- .../azure-sdk-for-go/sdk/azcore/CHANGELOG.md | 6 + .../sdk/azcore/internal/shared/constants.go | 2 +- .../sdk/azcore/runtime/policy_bearer_token.go | 4 +- .../sdk/azidentity/CHANGELOG.md | 18 + .../sdk/azidentity/TROUBLESHOOTING.md | 1 + .../azure-sdk-for-go/sdk/azidentity/ci.yml | 2 +- .../azidentity/default_azure_credential.go | 72 +- .../sdk/azidentity/environment_credential.go | 5 +- .../azidentity/managed-identity-matrix.json | 2 +- .../sdk/azidentity/managed_identity_client.go | 4 +- .../sdk/azidentity/test-resources-post.ps1 | 2 +- .../sdk/azidentity/version.go | 2 +- .../sdk/internal/errorinfo/errorinfo.go | 12 +- .../sdk/security/keyvault/azkeys/CHANGELOG.md | 18 + .../security/keyvault/azkeys/_metadata.json | 4 + .../sdk/security/keyvault/azkeys/assets.json | 2 +- .../sdk/security/keyvault/azkeys/ci.yml | 1 + .../sdk/security/keyvault/azkeys/client.go | 254 +- .../sdk/security/keyvault/azkeys/constants.go | 28 +- .../sdk/security/keyvault/azkeys/models.go | 18 + .../security/keyvault/azkeys/models_serde.go | 55 + .../sdk/security/keyvault/azkeys/options.go | 5 + .../keyvault/azkeys/platform-matrix.json | 8 +- .../sdk/security/keyvault/azkeys/responses.go | 6 + .../keyvault/azkeys/test-resources-post.ps1 | 33 +- .../keyvault/azkeys/tsp-location.yaml | 3 +- .../sdk/security/keyvault/azkeys/version.go | 2 +- .../security/keyvault/internal/CHANGELOG.md | 10 + .../keyvault/internal/challenge_policy.go | 3 - .../security/keyvault/internal/constants.go | 5 +- .../sdk/security/keyvault/internal/doc.go | 3 - .../keyvault/internal/fake_challenge.go | 36 + .../sdk/security/keyvault/internal/parse.go | 4 +- .../retry-go/v4 => Azure/go-ansiterm}/LICENSE | 12 +- vendor/github.com/Azure/go-ansiterm/README.md | 12 + .../github.com/Azure/go-ansiterm/SECURITY.md | 41 + .../github.com/Azure/go-ansiterm/constants.go | 188 + .../github.com/Azure/go-ansiterm/context.go | 7 + .../Azure/go-ansiterm/csi_entry_state.go | 49 + .../Azure/go-ansiterm/csi_param_state.go | 38 + .../go-ansiterm/escape_intermediate_state.go | 36 + .../Azure/go-ansiterm/escape_state.go | 47 + .../Azure/go-ansiterm/event_handler.go | 90 + .../Azure/go-ansiterm/ground_state.go | 24 + .../Azure/go-ansiterm/osc_string_state.go | 23 + vendor/github.com/Azure/go-ansiterm/parser.go | 151 + .../go-ansiterm/parser_action_helpers.go | 99 + .../Azure/go-ansiterm/parser_actions.go | 119 + vendor/github.com/Azure/go-ansiterm/states.go | 71 + .../github.com/Azure/go-ansiterm/utilities.go | 21 + .../Azure/go-ansiterm/winterm/ansi.go | 196 + .../Azure/go-ansiterm/winterm/api.go | 327 + .../go-ansiterm/winterm/attr_translation.go | 100 + .../go-ansiterm/winterm/cursor_helpers.go | 101 + .../go-ansiterm/winterm/erase_helpers.go | 84 + .../go-ansiterm/winterm/scroll_helper.go | 118 + .../Azure/go-ansiterm/winterm/utilities.go | 9 + .../go-ansiterm/winterm/win_event_handler.go | 743 + .../github.com/antlr4-go/antlr/v4/antlrdoc.go | 8 +- vendor/github.com/antlr4-go/antlr/v4/atn.go | 8 +- .../antlr4-go/antlr/v4/atn_config.go | 3 - .../antlr4-go/antlr/v4/input_stream.go | 2 +- .../github.com/antlr4-go/antlr/v4/jcollect.go | 5 +- vendor/github.com/antlr4-go/antlr/v4/lexer.go | 2 +- .../antlr4-go/antlr/v4/ll1_analyzer.go | 1 + vendor/github.com/antlr4-go/antlr/v4/mutex.go | 41 + .../antlr4-go/antlr/v4/mutex_nomutex.go | 32 + .../antlr/v4/parser_atn_simulator.go | 4 +- .../antlr4-go/antlr/v4/prediction_context.go | 60 +- .../antlr4-go/antlr/v4/recognizer.go | 2 +- .../antlr4-go/antlr/v4/statistics.go | 3 +- vendor/github.com/antlr4-go/antlr/v4/token.go | 82 +- vendor/github.com/antlr4-go/antlr/v4/utils.go | 53 + .../github.com/avast/retry-go/v4/.gitignore | 21 - .../avast/retry-go/v4/.godocdown.tmpl | 38 - vendor/github.com/avast/retry-go/v4/Makefile | 59 - vendor/github.com/avast/retry-go/v4/README.md | 494 - vendor/github.com/avast/retry-go/v4/VERSION | 1 - .../github.com/avast/retry-go/v4/current.txt | 26 - .../github.com/avast/retry-go/v4/generic.txt | 46 - .../github.com/avast/retry-go/v4/options.go | 280 - vendor/github.com/avast/retry-go/v4/retry.go | 347 - .../aws/aws-sdk-go-v2/aws/config.go | 12 + .../aws-sdk-go-v2/aws/go_module_metadata.go | 2 +- .../aws/aws-sdk-go-v2/aws/retry/middleware.go | 2 +- .../aws/aws-sdk-go-v2/config/CHANGELOG.md | 38 + .../config/auth_scheme_preference.go | 19 + .../aws/aws-sdk-go-v2/config/config.go | 7 + .../aws/aws-sdk-go-v2/config/env_config.go | 14 + .../config/go_module_metadata.go | 2 +- .../aws/aws-sdk-go-v2/config/load_options.go | 146 + .../aws/aws-sdk-go-v2/config/provider.go | 31 + .../aws/aws-sdk-go-v2/config/resolve.go | 31 + .../aws/aws-sdk-go-v2/config/shared_config.go | 16 + .../aws-sdk-go-v2/credentials/CHANGELOG.md | 37 + .../credentials/go_module_metadata.go | 2 +- .../feature/ec2/imds/CHANGELOG.md | 29 + .../feature/ec2/imds/api_client.go | 8 +- .../feature/ec2/imds/go_module_metadata.go | 2 +- .../internal/configsources/CHANGELOG.md | 25 + .../configsources/go_module_metadata.go | 2 +- .../endpoints/awsrulesfn/partitions.go | 134 +- .../endpoints/awsrulesfn/partitions.json | 68 +- .../internal/endpoints/v2/CHANGELOG.md | 25 + .../endpoints/v2/go_module_metadata.go | 2 +- .../aws-sdk-go-v2/service/ecr/CHANGELOG.md | 55 + .../aws-sdk-go-v2/service/ecr/api_client.go | 31 + .../ecr/api_op_BatchCheckLayerAvailability.go | 3 + .../service/ecr/api_op_BatchDeleteImage.go | 3 + .../service/ecr/api_op_BatchGetImage.go | 3 + ...BatchGetRepositoryScanningConfiguration.go | 3 + .../service/ecr/api_op_CompleteLayerUpload.go | 3 + .../ecr/api_op_CreatePullThroughCacheRule.go | 38 +- .../service/ecr/api_op_CreateRepository.go | 3 + ...api_op_CreateRepositoryCreationTemplate.go | 3 + .../ecr/api_op_DeleteLifecyclePolicy.go | 3 + .../ecr/api_op_DeletePullThroughCacheRule.go | 9 + .../ecr/api_op_DeleteRegistryPolicy.go | 3 + .../service/ecr/api_op_DeleteRepository.go | 3 + ...api_op_DeleteRepositoryCreationTemplate.go | 3 + .../ecr/api_op_DeleteRepositoryPolicy.go | 3 + .../api_op_DescribeImageReplicationStatus.go | 3 + .../ecr/api_op_DescribeImageScanFindings.go | 3 + .../service/ecr/api_op_DescribeImages.go | 15 +- .../api_op_DescribePullThroughCacheRules.go | 3 + .../service/ecr/api_op_DescribeRegistry.go | 3 + .../ecr/api_op_DescribeRepositories.go | 3 + ..._op_DescribeRepositoryCreationTemplates.go | 3 + .../service/ecr/api_op_GetAccountSetting.go | 3 + .../ecr/api_op_GetAuthorizationToken.go | 6 + .../ecr/api_op_GetDownloadUrlForLayer.go | 3 + .../service/ecr/api_op_GetLifecyclePolicy.go | 3 + .../ecr/api_op_GetLifecyclePolicyPreview.go | 11 +- .../service/ecr/api_op_GetRegistryPolicy.go | 3 + ...api_op_GetRegistryScanningConfiguration.go | 3 + .../service/ecr/api_op_GetRepositoryPolicy.go | 3 + .../service/ecr/api_op_InitiateLayerUpload.go | 3 + .../service/ecr/api_op_ListImages.go | 3 + .../service/ecr/api_op_ListTagsForResource.go | 3 + .../service/ecr/api_op_PutAccountSetting.go | 3 + .../service/ecr/api_op_PutImage.go | 3 + .../api_op_PutImageScanningConfiguration.go | 3 + .../ecr/api_op_PutImageTagMutability.go | 3 + .../service/ecr/api_op_PutLifecyclePolicy.go | 3 + .../service/ecr/api_op_PutRegistryPolicy.go | 3 + ...api_op_PutRegistryScanningConfiguration.go | 3 + .../ecr/api_op_PutReplicationConfiguration.go | 3 + .../service/ecr/api_op_SetRepositoryPolicy.go | 3 + .../service/ecr/api_op_StartImageScan.go | 16 +- .../ecr/api_op_StartLifecyclePolicyPreview.go | 3 + .../service/ecr/api_op_TagResource.go | 3 + .../service/ecr/api_op_UntagResource.go | 3 + .../ecr/api_op_UpdatePullThroughCacheRule.go | 24 +- ...api_op_UpdateRepositoryCreationTemplate.go | 3 + .../service/ecr/api_op_UploadLayerPart.go | 3 + .../api_op_ValidatePullThroughCacheRule.go | 9 + .../service/ecr/deserializers.go | 119 + .../aws-sdk-go-v2/service/ecr/endpoints.go | 95 + .../aws-sdk-go-v2/service/ecr/generated.json | 3 +- .../service/ecr/go_module_metadata.go | 2 +- .../ecr/internal/endpoints/endpoints.go | 36 + .../aws-sdk-go-v2/service/ecr/serializers.go | 15 + .../aws-sdk-go-v2/service/ecr/types/enums.go | 4 + .../aws-sdk-go-v2/service/ecr/types/types.go | 20 +- .../aws-sdk-go-v2/service/ecr/validators.go | 3 - .../service/ecrpublic/CHANGELOG.md | 31 + .../service/ecrpublic/api_client.go | 31 + .../api_op_BatchCheckLayerAvailability.go | 3 + .../ecrpublic/api_op_BatchDeleteImage.go | 3 + .../ecrpublic/api_op_CompleteLayerUpload.go | 3 + .../ecrpublic/api_op_CreateRepository.go | 3 + .../ecrpublic/api_op_DeleteRepository.go | 3 + .../api_op_DeleteRepositoryPolicy.go | 3 + .../ecrpublic/api_op_DescribeImageTags.go | 3 + .../ecrpublic/api_op_DescribeImages.go | 3 + .../ecrpublic/api_op_DescribeRegistries.go | 3 + .../ecrpublic/api_op_DescribeRepositories.go | 3 + .../ecrpublic/api_op_GetAuthorizationToken.go | 3 + .../api_op_GetRegistryCatalogData.go | 3 + .../api_op_GetRepositoryCatalogData.go | 3 + .../ecrpublic/api_op_GetRepositoryPolicy.go | 3 + .../ecrpublic/api_op_InitiateLayerUpload.go | 3 + .../ecrpublic/api_op_ListTagsForResource.go | 3 + .../service/ecrpublic/api_op_PutImage.go | 3 + .../api_op_PutRegistryCatalogData.go | 3 + .../api_op_PutRepositoryCatalogData.go | 3 + .../ecrpublic/api_op_SetRepositoryPolicy.go | 3 + .../service/ecrpublic/api_op_TagResource.go | 3 + .../service/ecrpublic/api_op_UntagResource.go | 3 + .../ecrpublic/api_op_UploadLayerPart.go | 3 + .../service/ecrpublic/endpoints.go | 19 + .../service/ecrpublic/generated.json | 3 +- .../service/ecrpublic/go_module_metadata.go | 2 +- .../ecrpublic/internal/endpoints/endpoints.go | 23 + .../internal/accept-encoding/CHANGELOG.md | 4 + .../accept-encoding/go_module_metadata.go | 2 +- .../internal/presigned-url/CHANGELOG.md | 25 + .../presigned-url/go_module_metadata.go | 2 +- .../aws-sdk-go-v2/service/kms/CHANGELOG.md | 35 + .../aws-sdk-go-v2/service/kms/api_client.go | 96 +- .../service/kms/api_op_CancelKeyDeletion.go | 30 + .../kms/api_op_ConnectCustomKeyStore.go | 30 + .../service/kms/api_op_CreateAlias.go | 34 +- .../kms/api_op_CreateCustomKeyStore.go | 30 + .../service/kms/api_op_CreateGrant.go | 30 + .../service/kms/api_op_CreateKey.go | 36 +- .../service/kms/api_op_Decrypt.go | 30 + .../service/kms/api_op_DeleteAlias.go | 30 + .../kms/api_op_DeleteCustomKeyStore.go | 30 + .../kms/api_op_DeleteImportedKeyMaterial.go | 30 + .../service/kms/api_op_DeriveSharedSecret.go | 30 + .../kms/api_op_DescribeCustomKeyStores.go | 30 + .../service/kms/api_op_DescribeKey.go | 38 +- .../service/kms/api_op_DisableKey.go | 30 + .../service/kms/api_op_DisableKeyRotation.go | 36 +- .../kms/api_op_DisconnectCustomKeyStore.go | 30 + .../service/kms/api_op_EnableKey.go | 30 + .../service/kms/api_op_EnableKeyRotation.go | 36 +- .../service/kms/api_op_Encrypt.go | 30 + .../service/kms/api_op_GenerateDataKey.go | 30 + .../service/kms/api_op_GenerateDataKeyPair.go | 30 + ..._op_GenerateDataKeyPairWithoutPlaintext.go | 30 + .../api_op_GenerateDataKeyWithoutPlaintext.go | 30 + .../service/kms/api_op_GenerateMac.go | 30 + .../service/kms/api_op_GenerateRandom.go | 30 + .../service/kms/api_op_GetKeyPolicy.go | 30 + .../kms/api_op_GetKeyRotationStatus.go | 32 +- .../kms/api_op_GetParametersForImport.go | 30 + .../service/kms/api_op_GetPublicKey.go | 30 + .../service/kms/api_op_ImportKeyMaterial.go | 30 + .../service/kms/api_op_ListAliases.go | 30 + .../service/kms/api_op_ListGrants.go | 30 + .../service/kms/api_op_ListKeyPolicies.go | 30 + .../service/kms/api_op_ListKeyRotations.go | 30 + .../service/kms/api_op_ListKeys.go | 30 + .../service/kms/api_op_ListResourceTags.go | 30 + .../service/kms/api_op_ListRetirableGrants.go | 30 + .../service/kms/api_op_PutKeyPolicy.go | 30 + .../service/kms/api_op_ReEncrypt.go | 30 + .../service/kms/api_op_ReplicateKey.go | 30 + .../service/kms/api_op_RetireGrant.go | 30 + .../service/kms/api_op_RevokeGrant.go | 30 + .../service/kms/api_op_RotateKeyOnDemand.go | 34 +- .../service/kms/api_op_ScheduleKeyDeletion.go | 30 + .../aws-sdk-go-v2/service/kms/api_op_Sign.go | 30 + .../service/kms/api_op_TagResource.go | 36 +- .../service/kms/api_op_UntagResource.go | 32 +- .../service/kms/api_op_UpdateAlias.go | 34 +- .../kms/api_op_UpdateCustomKeyStore.go | 30 + .../kms/api_op_UpdateKeyDescription.go | 30 + .../service/kms/api_op_UpdatePrimaryRegion.go | 30 + .../service/kms/api_op_Verify.go | 30 + .../service/kms/api_op_VerifyMac.go | 30 + .../aws/aws-sdk-go-v2/service/kms/auth.go | 28 +- .../service/kms/deserializers.go | 9 - .../aws/aws-sdk-go-v2/service/kms/doc.go | 6 +- .../service/kms/go_module_metadata.go | 2 +- .../aws/aws-sdk-go-v2/service/kms/options.go | 7 + .../aws-sdk-go-v2/service/sso/CHANGELOG.md | 31 + .../aws-sdk-go-v2/service/sso/api_client.go | 96 +- .../service/sso/api_op_GetRoleCredentials.go | 30 + .../service/sso/api_op_ListAccountRoles.go | 30 + .../service/sso/api_op_ListAccounts.go | 30 + .../service/sso/api_op_Logout.go | 30 + .../aws/aws-sdk-go-v2/service/sso/auth.go | 28 +- .../service/sso/deserializers.go | 10 - .../service/sso/go_module_metadata.go | 2 +- .../aws/aws-sdk-go-v2/service/sso/options.go | 7 + .../service/ssooidc/CHANGELOG.md | 35 + .../service/ssooidc/api_client.go | 96 +- .../service/ssooidc/api_op_CreateToken.go | 30 + .../ssooidc/api_op_CreateTokenWithIAM.go | 30 + .../service/ssooidc/api_op_RegisterClient.go | 30 + .../api_op_StartDeviceAuthorization.go | 30 + .../aws/aws-sdk-go-v2/service/ssooidc/auth.go | 28 +- .../service/ssooidc/deserializers.go | 10 - .../service/ssooidc/go_module_metadata.go | 2 +- .../aws-sdk-go-v2/service/ssooidc/options.go | 7 + .../aws-sdk-go-v2/service/sts/CHANGELOG.md | 32 + .../aws-sdk-go-v2/service/sts/api_client.go | 96 +- .../service/sts/api_op_AssumeRole.go | 30 + .../service/sts/api_op_AssumeRoleWithSAML.go | 30 + .../sts/api_op_AssumeRoleWithWebIdentity.go | 30 + .../service/sts/api_op_AssumeRoot.go | 30 + .../sts/api_op_DecodeAuthorizationMessage.go | 30 + .../service/sts/api_op_GetAccessKeyInfo.go | 30 + .../service/sts/api_op_GetCallerIdentity.go | 30 + .../service/sts/api_op_GetFederationToken.go | 30 + .../service/sts/api_op_GetSessionToken.go | 30 + .../aws/aws-sdk-go-v2/service/sts/auth.go | 28 +- .../service/sts/deserializers.go | 9 - .../service/sts/go_module_metadata.go | 2 +- .../aws/aws-sdk-go-v2/service/sts/options.go | 7 + .../aws/aws-sdk-go/aws/auth/bearer/token.go | 5 +- .../aws/aws-sdk-go/aws/awserr/error.go | 83 +- .../aws/aws-sdk-go/aws/awsutil/doc.go | 3 + .../aws/aws-sdk-go/aws/client/client.go | 2 + .../aws/client/metadata/client_info.go | 2 + .../aws-sdk-go/aws/corehandlers/handlers.go | 2 + .../aws-sdk-go/aws/credentials/credentials.go | 52 +- .../github.com/aws/aws-sdk-go/aws/crr/doc.go | 3 + .../github.com/aws/aws-sdk-go/aws/csm/doc.go | 61 +- .../aws/aws-sdk-go/aws/defaults/defaults.go | 3 + vendor/github.com/aws/aws-sdk-go/aws/doc.go | 35 +- .../aws/aws-sdk-go/aws/ec2metadata/service.go | 3 + .../aws/aws-sdk-go/aws/endpoints/doc.go | 3 + .../aws/aws-sdk-go/aws/request/doc.go | 3 + .../aws/aws-sdk-go/aws/session/doc.go | 731 +- .../aws/aws-sdk-go/aws/signer/v4/v4.go | 3 + .../github.com/aws/aws-sdk-go/aws/version.go | 2 +- .../aws/aws-sdk-go/service/dynamodb/doc.go | 3 + .../service/dynamodb/dynamodbattribute/doc.go | 3 + .../service/dynamodb/expression/doc.go | 95 +- .../aws/aws-sdk-go/service/sso/doc.go | 3 + .../aws/aws-sdk-go/service/ssooidc/doc.go | 3 + .../aws/aws-sdk-go/service/sts/doc.go | 3 + vendor/github.com/aws/smithy-go/CHANGELOG.md | 10 + vendor/github.com/aws/smithy-go/README.md | 4 +- .../aws/smithy-go/endpoints/endpoint.go | 2 +- .../aws/smithy-go/go_module_metadata.go | 2 +- .../smithy-go/transport/http/interceptor.go | 321 + .../transport/http/interceptor_middleware.go | 325 + .../ecr-login/api/client.go | 2 +- .../ecr-login/config/log.go | 2 +- .../buildkite/agent/v3/api/chunks.go | 4 +- .../buildkite/agent/v3/api/client.go | 17 +- .../agent/v3/internal/agenthttp/auth.go | 2 +- .../agent/v3/internal/agenthttp/do.go | 11 +- .../buildkite/agent/v3/version/VERSION | 2 +- .../go-pipeline/step_command_matrix.go | 10 +- vendor/github.com/buildkite/roko/README.md | 2 - vendor/github.com/buildkite/roko/retrier.go | 18 +- .../cenkalti/backoff/v5/exponential.go | 11 +- .../github.com/cenkalti/backoff/v5/retry.go | 4 +- .../emicklei/go-restful/v3/CHANGES.md | 5 +- .../emicklei/go-restful/v3/README.md | 2 +- .../emicklei/go-restful/v3/jsr311.go | 19 +- .../emicklei/go-restful/v3/route.go | 2 + vendor/github.com/fxamacker/cbor/v2/README.md | 607 +- .../fxamacker/cbor/v2/bytestring.go | 27 + vendor/github.com/fxamacker/cbor/v2/cache.go | 25 +- vendor/github.com/fxamacker/cbor/v2/common.go | 9 + vendor/github.com/fxamacker/cbor/v2/decode.go | 425 +- vendor/github.com/fxamacker/cbor/v2/doc.go | 51 +- vendor/github.com/fxamacker/cbor/v2/encode.go | 442 +- .../fxamacker/cbor/v2/encode_map.go | 10 +- .../fxamacker/cbor/v2/encode_map_go117.go | 60 - .../fxamacker/cbor/v2/omitzero_go124.go | 8 + .../fxamacker/cbor/v2/omitzero_pre_go124.go | 8 + .../fxamacker/cbor/v2/simplevalue.go | 29 + vendor/github.com/fxamacker/cbor/v2/stream.go | 4 +- .../fxamacker/cbor/v2/structfields.go | 18 +- vendor/github.com/fxamacker/cbor/v2/tag.go | 48 +- .../github.com/globocom/go-buffer/.gitignore | 15 - .../globocom/go-buffer/.tool-versions | 1 - vendor/github.com/globocom/go-buffer/LICENSE | 21 - vendor/github.com/globocom/go-buffer/Makefile | 2 - .../github.com/globocom/go-buffer/README.md | 143 - .../github.com/globocom/go-buffer/buffer.go | 127 - .../github.com/globocom/go-buffer/flusher.go | 15 - .../github.com/globocom/go-buffer/gopher.png | Bin 70553 -> 0 bytes .../github.com/globocom/go-buffer/gopher.xcf | Bin 187824 -> 0 bytes .../github.com/globocom/go-buffer/options.go | 115 - vendor/github.com/go-chi/chi/.travis.yml | 20 - .../go-chi/chi/middleware/content_type.go | 51 - .../go-chi/chi/middleware/profiler.go | 55 - .../github.com/go-chi/chi/{ => v5}/.gitignore | 0 .../go-chi/chi/{ => v5}/CHANGELOG.md | 157 +- .../go-chi/chi/{ => v5}/CONTRIBUTING.md | 12 +- vendor/github.com/go-chi/chi/{ => v5}/LICENSE | 0 vendor/github.com/go-chi/chi/v5/Makefile | 22 + .../github.com/go-chi/chi/{ => v5}/README.md | 180 +- vendor/github.com/go-chi/chi/v5/SECURITY.md | 5 + .../github.com/go-chi/chi/{ => v5}/chain.go | 6 +- vendor/github.com/go-chi/chi/{ => v5}/chi.go | 51 +- .../github.com/go-chi/chi/{ => v5}/context.go | 82 +- .../chi/{ => v5}/middleware/basic_auth.go | 3 +- .../go-chi/chi/v5/middleware/clean_path.go | 28 + .../chi/{ => v5}/middleware/compress.go | 79 +- .../{ => v5}/middleware/content_charset.go | 9 +- .../{ => v5}/middleware/content_encoding.go | 0 .../go-chi/chi/v5/middleware/content_type.go | 45 + .../chi/{ => v5}/middleware/get_head.go | 2 +- .../chi/{ => v5}/middleware/heartbeat.go | 2 +- .../go-chi/chi/{ => v5}/middleware/logger.go | 19 +- .../go-chi/chi/v5/middleware/maybe.go | 18 + .../chi/{ => v5}/middleware/middleware.go | 0 .../go-chi/chi/{ => v5}/middleware/nocache.go | 11 +- .../go-chi/chi/v5/middleware/page_route.go | 20 + .../go-chi/chi/v5/middleware/path_rewrite.go | 16 + .../go-chi/chi/v5/middleware/profiler.go | 49 + .../go-chi/chi/{ => v5}/middleware/realip.go | 22 +- .../chi/{ => v5}/middleware/recoverer.go | 51 +- .../chi/{ => v5}/middleware/request_id.go | 0 .../go-chi/chi/v5/middleware/request_size.go | 18 + .../chi/{ => v5}/middleware/route_headers.go | 71 +- .../go-chi/chi/{ => v5}/middleware/strip.go | 28 +- .../go-chi/chi/v5/middleware/sunset.go | 25 + .../chi/v5/middleware/supress_notfound.go | 27 + .../chi/{ => v5}/middleware/terminal.go | 0 .../chi/{ => v5}/middleware/throttle.go | 39 +- .../go-chi/chi/{ => v5}/middleware/timeout.go | 23 +- .../chi/{ => v5}/middleware/url_format.go | 51 +- .../go-chi/chi/{ => v5}/middleware/value.go | 2 +- .../chi/{ => v5}/middleware/wrap_writer.go | 83 +- vendor/github.com/go-chi/chi/{ => v5}/mux.go | 146 +- vendor/github.com/go-chi/chi/v5/path_value.go | 21 + .../go-chi/chi/v5/path_value_fallback.go | 19 + vendor/github.com/go-chi/chi/v5/pattern.go | 16 + .../go-chi/chi/v5/pattern_fallback.go | 17 + vendor/github.com/go-chi/chi/{ => v5}/tree.go | 90 +- .../github.com/go-jose/go-jose/v3/.gitignore | 2 - .../go-jose/go-jose/v3/.golangci.yml | 53 - .../github.com/go-jose/go-jose/v3/.travis.yml | 33 - .../go-jose/go-jose/v3/CHANGELOG.md | 78 - .../go-jose/go-jose/v3/CONTRIBUTING.md | 15 - .../github.com/go-jose/go-jose/v3/README.md | 108 - .../github.com/go-jose/go-jose/v3/SECURITY.md | 13 - .../go-jose/go-jose/v3/asymmetric.go | 595 - .../go-jose/go-jose/v3/cipher/cbc_hmac.go | 196 - .../go-jose/go-jose/v3/cipher/concat_kdf.go | 75 - .../go-jose/go-jose/v3/cipher/ecdh_es.go | 86 - .../go-jose/go-jose/v3/cipher/key_wrap.go | 109 - .../github.com/go-jose/go-jose/v3/crypter.go | 593 - vendor/github.com/go-jose/go-jose/v3/doc.go | 25 - .../github.com/go-jose/go-jose/v3/encoding.go | 237 - .../go-jose/go-jose/v3/json/LICENSE | 27 - .../go-jose/go-jose/v3/json/README.md | 13 - .../go-jose/go-jose/v3/json/decode.go | 1216 -- .../go-jose/go-jose/v3/json/encode.go | 1197 -- .../go-jose/go-jose/v3/json/indent.go | 141 - .../go-jose/go-jose/v3/json/scanner.go | 623 - .../go-jose/go-jose/v3/json/stream.go | 484 - .../go-jose/go-jose/v3/json/tags.go | 44 - vendor/github.com/go-jose/go-jose/v3/jwe.go | 296 - vendor/github.com/go-jose/go-jose/v3/jwk.go | 812 - vendor/github.com/go-jose/go-jose/v3/jws.go | 370 - .../go-jose/go-jose/v3/jwt/builder.go | 334 - .../go-jose/go-jose/v3/jwt/claims.go | 130 - .../github.com/go-jose/go-jose/v3/jwt/doc.go | 20 - .../go-jose/go-jose/v3/jwt/errors.go | 53 - .../github.com/go-jose/go-jose/v3/jwt/jwt.go | 133 - .../go-jose/go-jose/v3/jwt/validation.go | 120 - .../github.com/go-jose/go-jose/v3/opaque.go | 144 - .../github.com/go-jose/go-jose/v3/shared.go | 525 - .../github.com/go-jose/go-jose/v3/signing.go | 487 - .../go-jose/go-jose/v3/symmetric.go | 505 - .../go-openapi/errors/.golangci.yml | 114 +- .../go-openapi/errors/middleware.go | 4 +- .../github.com/go-openapi/errors/parsing.go | 36 +- .../github.com/go-openapi/swag/.golangci.yml | 116 +- vendor/github.com/go-openapi/swag/README.md | 168 +- .../v3 => go-openapi/swag/cmdutils}/LICENSE | 0 .../go-openapi/swag/cmdutils/cmd_utils.go | 24 + .../go-openapi/swag/cmdutils/doc.go | 16 + .../go-openapi/swag/cmdutils_iface.go | 22 + .../github.com/go-openapi/swag/conv/LICENSE | 202 + .../go-openapi/swag/conv/convert.go | 172 + .../go-openapi/swag/conv/convert_types.go | 79 + vendor/github.com/go-openapi/swag/conv/doc.go | 26 + .../github.com/go-openapi/swag/conv/format.go | 39 + .../github.com/go-openapi/swag/conv/sizeof.go | 17 + .../go-openapi/swag/conv/type_constraints.go | 40 + .../github.com/go-openapi/swag/conv_iface.go | 497 + vendor/github.com/go-openapi/swag/convert.go | 208 - .../go-openapi/swag/convert_types.go | 730 - vendor/github.com/go-openapi/swag/doc.go | 79 +- vendor/github.com/go-openapi/swag/errors.go | 15 - .../go-openapi/swag/fileutils/LICENSE | 202 + .../go-openapi/swag/fileutils/doc.go | 21 + .../go-openapi/swag/{ => fileutils}/file.go | 2 +- .../go-openapi/swag/{ => fileutils}/path.go | 8 +- .../go-openapi/swag/fileutils_iface.go | 44 + .../go-openapi/swag/initialism_index.go | 202 - vendor/github.com/go-openapi/swag/json.go | 313 - .../go-openapi/swag/jsonname/LICENSE | 202 + .../go-openapi/swag/jsonname/doc.go | 16 + .../go-openapi/swag/jsonname/name_provider.go | 149 + .../go-openapi/swag/jsonname_iface.go | 35 + .../go-openapi/swag/jsonutils/LICENSE | 202 + .../go-openapi/swag/jsonutils/concat.go | 100 + .../go-openapi/swag/jsonutils/doc.go | 18 + .../go-openapi/swag/jsonutils/json.go | 80 + .../go-openapi/swag/jsonutils/ordered_map.go | 199 + .../go-openapi/swag/jsonutils_iface.go | 76 + .../go-openapi/swag/loading/LICENSE | 202 + .../github.com/go-openapi/swag/loading/doc.go | 16 + .../go-openapi/swag/loading/errors.go | 26 + .../go-openapi/swag/loading/json.go | 22 + .../go-openapi/swag/{ => loading}/loading.go | 73 +- .../go-openapi/swag/loading/options.go | 136 + .../go-openapi/swag/loading/yaml.go | 48 + .../go-openapi/swag/loading_iface.go | 102 + .../swag/{ => mangling}/BENCHMARK.md | 48 +- .../go-openapi/swag/mangling/LICENSE | 202 + .../go-openapi/swag/mangling/doc.go | 36 + .../swag/mangling/initialism_index.go | 268 + .../go-openapi/swag/mangling/name_lexem.go | 197 + .../go-openapi/swag/mangling/name_mangler.go | 381 + .../go-openapi/swag/mangling/options.go | 161 + .../go-openapi/swag/mangling/pools.go | 134 + .../go-openapi/swag/{ => mangling}/split.go | 366 +- .../go-openapi/swag/mangling/string_bytes.go | 22 + .../go-openapi/swag/mangling/util.go | 129 + .../go-openapi/swag/mangling_iface.go | 80 + .../github.com/go-openapi/swag/name_lexem.go | 93 - .../go-openapi/swag/netutils/LICENSE | 202 + .../go-openapi/swag/netutils/doc.go | 16 + .../go-openapi/swag/{ => netutils}/net.go | 8 +- .../go-openapi/swag/netutils_iface.go | 24 + .../go-openapi/swag/string_bytes.go | 8 - .../go-openapi/swag/stringutils/LICENSE | 202 + .../swag/stringutils/collection_formats.go | 85 + .../go-openapi/swag/stringutils/doc.go | 16 + .../go-openapi/swag/stringutils/strings.go | 34 + .../go-openapi/swag/stringutils_iface.go | 45 + .../go-openapi/swag/typeutils/LICENSE | 202 + .../go-openapi/swag/typeutils/doc.go | 16 + .../go-openapi/swag/typeutils/types.go | 59 + .../go-openapi/swag/typeutils_iface.go | 23 + vendor/github.com/go-openapi/swag/util.go | 364 - vendor/github.com/go-openapi/swag/yaml.go | 481 - .../go-openapi/swag/yamlutils/LICENSE | 202 + .../go-openapi/swag/yamlutils/doc.go | 16 + .../go-openapi/swag/yamlutils/errors.go | 26 + .../go-openapi/swag/yamlutils/ordered_map.go | 210 + .../go-openapi/swag/yamlutils/yaml.go | 233 + .../go-openapi/swag/yamlutils_iface.go | 31 + vendor/github.com/golang-jwt/jwt/v5/errors.go | 40 + .../golang-jwt/jwt/v5/errors_go1_20.go | 47 - .../golang-jwt/jwt/v5/errors_go_other.go | 78 - .../github.com/golang-jwt/jwt/v5/rsa_pss.go | 3 - vendor/github.com/google/cel-go/cel/env.go | 29 +- .../github.com/google/cel-go/cel/folding.go | 2 +- .../github.com/google/cel-go/cel/program.go | 28 +- .../cel-go/cel/templates/authoring.tmpl | 6 +- .../github.com/google/cel-go/cel/validator.go | 8 + .../google/cel-go/common/types/pb/type.go | 2 +- .../google/gnostic-models/compiler/context.go | 2 +- .../gnostic-models/compiler/extensions.go | 2 +- .../google/gnostic-models/compiler/helpers.go | 2 +- .../google/gnostic-models/compiler/reader.go | 2 +- .../gnostic-models/jsonschema/models.go | 2 +- .../gnostic-models/jsonschema/reader.go | 2 +- .../gnostic-models/jsonschema/writer.go | 2 +- .../gnostic-models/openapiv2/OpenAPIv2.go | 80 +- .../gnostic-models/openapiv2/document.go | 2 +- .../gnostic-models/openapiv3/OpenAPIv3.go | 24 +- .../gnostic-models/openapiv3/document.go | 2 +- vendor/github.com/mailru/easyjson/.gitignore | 6 + vendor/github.com/mailru/easyjson/Makefile | 72 + vendor/github.com/mailru/easyjson/README.md | 408 + vendor/github.com/mailru/easyjson/helpers.go | 114 + vendor/github.com/mailru/easyjson/raw.go | 46 + .../mailru/easyjson/unknown_fields.go | 32 + vendor/github.com/moby/term/.gitignore | 8 + vendor/github.com/moby/term/LICENSE | 191 + vendor/github.com/moby/term/README.md | 36 + vendor/github.com/moby/term/ascii.go | 66 + vendor/github.com/moby/term/doc.go | 3 + vendor/github.com/moby/term/proxy.go | 88 + vendor/github.com/moby/term/term.go | 85 + vendor/github.com/moby/term/term_unix.go | 98 + vendor/github.com/moby/term/term_windows.go | 176 + vendor/github.com/moby/term/termios_bsd.go | 13 + vendor/github.com/moby/term/termios_nonbsd.go | 13 + vendor/github.com/moby/term/termios_unix.go | 35 + .../github.com/moby/term/termios_windows.go | 37 + .../moby/term/windows/ansi_reader.go | 252 + .../moby/term/windows/ansi_writer.go | 57 + .../github.com/moby/term/windows/console.go | 43 + vendor/github.com/moby/term/windows/doc.go | 5 + .../modern-go/reflect2/safe_type.go | 22 +- vendor/github.com/olekukonko/errors/README.md | 223 +- vendor/github.com/olekukonko/errors/chain.go | 610 + vendor/github.com/olekukonko/errors/errors.go | 963 +- vendor/github.com/olekukonko/errors/helper.go | 13 +- .../github.com/olekukonko/errors/inspect.go | 225 + .../olekukonko/errors/multi_error.go | 152 +- vendor/github.com/olekukonko/errors/retry.go | 100 +- .../github.com/olekukonko/ll/lh/colorized.go | 40 +- vendor/github.com/olekukonko/ll/lh/memory.go | 24 +- vendor/github.com/olekukonko/ll/lh/text.go | 36 +- vendor/github.com/olekukonko/ll/ll.go | 36 + vendor/github.com/olekukonko/ll/lx/lx.go | 10 + .../olekukonko/tablewriter/README.md | 6 +- .../olekukonko/tablewriter/config.go | 6 + .../olekukonko/tablewriter/option.go | 12 + .../tablewriter/renderer/blueprint.go | 15 +- .../olekukonko/tablewriter/stream.go | 7 +- .../olekukonko/tablewriter/tablewriter.go | 69 +- .../olekukonko/tablewriter/tw/types.go | 15 + .../github.com/olekukonko/tablewriter/zoo.go | 178 +- .../client_golang/prometheus/desc.go | 3 +- .../prometheus/internal/difflib.go | 4 +- .../prometheus/internal/go_runtime_metrics.go | 2 +- .../client_golang/prometheus/labels.go | 3 +- .../client_golang/prometheus/metric.go | 25 +- .../prometheus/process_collector_darwin.go | 6 +- .../process_collector_mem_nocgo_darwin.go | 2 +- .../process_collector_procfsenabled.go | 8 +- .../prometheus/promhttp/instrument_server.go | 2 +- .../client_golang/prometheus/vec.go | 10 +- .../client_golang/prometheus/wrap.go | 36 +- .../prometheus/common/expfmt/decode.go | 39 +- .../prometheus/common/expfmt/encode.go | 10 +- .../prometheus/common/expfmt/expfmt.go | 12 +- .../prometheus/common/expfmt/fuzz.go | 9 +- .../common/expfmt/openmetrics_create.go | 11 +- .../prometheus/common/expfmt/text_create.go | 8 +- .../prometheus/common/expfmt/text_parse.go | 48 +- .../prometheus/common/model/labels.go | 34 +- .../prometheus/common/model/labelset.go | 10 +- .../prometheus/common/model/metric.go | 196 +- .../prometheus/common/model/time.go | 37 +- .../prometheus/common/model/value.go | 15 +- .../common/model/value_histogram.go | 10 +- .../prometheus/common/model/value_type.go | 4 +- .../prometheus/procfs/.golangci.yml | 63 +- .../prometheus/procfs/Makefile.common | 10 +- vendor/github.com/prometheus/procfs/README.md | 6 +- vendor/github.com/prometheus/procfs/arp.go | 4 +- vendor/github.com/prometheus/procfs/fs.go | 10 +- .../prometheus/procfs/fs_statfs_notype.go | 4 +- .../github.com/prometheus/procfs/fscache.go | 6 +- .../prometheus/procfs/internal/fs/fs.go | 3 + .../prometheus/procfs/internal/util/parse.go | 14 + .../procfs/internal/util/sysreadfile.go | 20 + .../prometheus/procfs/mountstats.go | 27 +- .../prometheus/procfs/net_dev_snmp6.go | 96 + .../prometheus/procfs/net_ip_socket.go | 8 +- .../prometheus/procfs/net_protocols.go | 21 +- .../github.com/prometheus/procfs/net_tcp.go | 4 + .../github.com/prometheus/procfs/net_unix.go | 8 +- vendor/github.com/prometheus/procfs/proc.go | 8 +- .../prometheus/procfs/proc_cgroup.go | 2 +- .../github.com/prometheus/procfs/proc_io.go | 2 +- .../prometheus/procfs/proc_netstat.go | 224 +- .../prometheus/procfs/proc_smaps.go | 4 +- .../github.com/prometheus/procfs/proc_snmp.go | 120 +- .../prometheus/procfs/proc_snmp6.go | 150 +- .../prometheus/procfs/proc_status.go | 18 +- .../github.com/prometheus/procfs/proc_sys.go | 2 +- .../github.com/prometheus/procfs/softirqs.go | 22 +- .../cosign/v2/cmd/cosign/cli/fulcio/fulcio.go | 127 +- .../v2/cmd/cosign/cli/options/attest.go | 20 + .../v2/cmd/cosign/cli/options/attest_blob.go | 26 +- .../cosign/v2/cmd/cosign/cli/options/key.go | 13 + .../v2/cmd/cosign/cli/options/predicate.go | 10 +- .../cosign/v2/cmd/cosign/cli/options/sign.go | 19 + .../v2/cmd/cosign/cli/options/signblob.go | 16 + .../v2/cmd/cosign/cli/options/verify.go | 19 +- .../sigstore/cosign/v2/internal/auth/auth.go | 172 + .../cosign/v2/internal/pkg/cosign/common.go | 17 +- .../sigstore/cosign/v2/internal/ui/spinner.go | 66 + .../v2/pkg/cosign/bundle/protobundle.go | 68 + .../cosign/v2/pkg/cosign/bundle/sign.go | 132 + .../sigstore/cosign/v2/pkg/cosign/keys.go | 83 +- .../sigstore/cosign/v2/pkg/cosign/tlog.go | 63 +- .../sigstore/cosign/v2/pkg/cosign/tsa.go | 15 + .../sigstore/cosign/v2/pkg/cosign/tuf.go | 12 + .../sigstore/cosign/v2/pkg/cosign/verify.go | 20 +- .../cosign/v2/pkg/oci/remote/remote.go | 11 +- .../cosign/v2/pkg/oci/remote/write.go | 125 +- .../sigstore/cosign/v2/pkg/signature/keys.go | 14 +- .../cosign/v2/pkg/types/predicate.go} | 15 +- .../sigstore/rekor-tiles/pkg/client/option.go | 41 + .../rekor-tiles/pkg/client/transport.go | 47 + .../rekor-tiles/pkg/client/write/write.go | 130 + .../pkg/generated/protobuf/dsse.pb.go | 55 +- .../pkg/generated/protobuf/entry.pb.go | 75 +- .../pkg/generated/protobuf/hashedrekord.pb.go | 51 +- .../generated/protobuf/rekor_service.pb.go | 74 +- .../protobuf/rekor_service_grpc.pb.go | 2 +- .../pkg/generated/protobuf/verifier.pb.go | 65 +- .../github.com/sigstore/rekor/pkg/log/log.go | 2 +- .../rekor/pkg/types/dsse/v0.0.1/entry.go | 117 +- .../pkg/types/hashedrekord/v0.0.1/entry.go | 88 +- .../rekor/pkg/types/intoto/v0.0.1/entry.go | 82 +- .../rekor/pkg/types/intoto/v0.0.2/entry.go | 136 +- .../rekor/pkg/types/rekord/v0.0.1/entry.go | 244 +- .../sigstore/rekor/pkg/types/types.go | 16 - .../sigstore-go/pkg/root/signing_config.go | 29 +- .../sigstore-go/pkg/root/trusted_root.go | 10 +- .../sigstore-go/pkg/sign/certificate.go | 236 + .../sigstore/sigstore-go/pkg/sign/content.go | 74 + .../sigstore/sigstore-go/pkg/sign/keys.go | 181 + .../sigstore/sigstore-go/pkg/sign/signer.go | 188 + .../sigstore-go/pkg/sign/timestamping.go | 126 + .../sigstore-go/pkg/sign/transparency.go | 279 + .../sigstore/sigstore-go/pkg/tlog/entry.go | 18 +- .../sigstore/sigstore-go/pkg/util/util.go | 2 +- .../sigstore-go/pkg/verify/signed_entity.go | 36 +- .../pkg/verification/verify.go | 13 +- vendor/github.com/spf13/cobra/.golangci.yml | 28 +- vendor/github.com/spf13/cobra/README.md | 24 +- vendor/github.com/spf13/cobra/SECURITY.md | 105 + vendor/github.com/spf13/cobra/command.go | 11 +- vendor/github.com/spf13/cobra/completions.go | 19 +- vendor/github.com/spf13/pflag/flag.go | 36 +- vendor/github.com/spf13/pflag/golangflag.go | 34 + .../spf13/pflag/string_to_string.go | 10 +- vendor/github.com/spf13/pflag/time.go | 8 +- .../stoewer/go-strcase/.golangci.yml | 37 +- vendor/github.com/stoewer/go-strcase/camel.go | 3 + .../github.com/stoewer/go-strcase/helper.go | 6 + .../github.com/stretchr/testify/mock/mock.go | 72 +- .../formats/note/note_cosigv1.go | 210 + .../formats/note/note_rfc6962.go | 323 + .../formats/note/note_verifier.go | 144 + .../transparency-dev/tessera/CONTRIBUTING.md | 42 +- .../transparency-dev/tessera/README.md | 42 +- .../tessera/{dedupe.go => antispam.go} | 0 .../tessera/append_lifecycle.go | 121 +- .../transparency-dev/tessera/await.go | 150 +- .../transparency-dev/tessera/client/client.go | 66 +- .../tessera/client/fetcher.go | 23 +- .../{internal/stream => client}/stream.go | 21 +- .../tessera/internal/fetcher/fallback.go | 45 + .../tessera/internal/future/future.go | 55 + .../tessera/internal/stream/follower.go | 60 - .../tessera/internal/witness/witness.go | 2 +- .../transparency-dev/tessera/lifecycle.go | 33 +- .../transparency-dev/tessera/migrate.go | 16 +- .../tessera/migrate_lifecycle.go | 7 +- .../tessera/storage/gcp/README.md | 15 +- .../tessera/storage/gcp/antispam/gcp.go | 75 +- .../tessera/storage/gcp/gcp.go | 110 +- .../tessera/storage/internal/queue.go | 143 +- .../transparency-dev/tessera/witness.go | 157 +- .../gitlab-org/api/client-go/.gitignore | 4 +- .../gitlab-org/api/client-go/.gitlab-ci.yml | 76 +- .../gitlab-org/api/client-go/.golangci.yml | 65 +- .../gitlab-org/api/client-go/.releaserc.json | 33 + .../gitlab-org/api/client-go/.tool-versions | 6 +- .../gitlab-org/api/client-go/CHANGELOG.md | 103 + .../gitlab-org/api/client-go/Makefile | 18 +- .../gitlab-org/api/client-go/README.md | 86 + .../api/client-go/alert_management.go | 2 +- .../gitlab-org/api/client-go/buf.gen.yaml | 6 + .../gitlab-org/api/client-go/buf.lock | 6 + .../gitlab-org/api/client-go/buf.yaml | 12 + .../api/client-go/client_options.go | 8 + .../api/client-go/commitlint.config.mjs | 3 +- .../gitlab-org/api/client-go/deploy_keys.go | 2 +- .../gitlab-org/api/client-go/dora_metrics.go | 2 +- .../gitlab-org/api/client-go/epics.go | 2 + .../api/client-go/external_status_checks.go | 259 +- .../api/client-go/feature_flag_user_lists.go | 2 +- .../gitlab-org/api/client-go/geo_sites.go | 2 +- .../gitlab-org/api/client-go/gitlab.go | 67 +- .../api/client-go/group_iterations.go | 2 +- .../api/client-go/group_security_settings.go | 4 +- .../api/client-go/group_serviceaccounts.go | 6 +- .../api/client-go/group_ssh_certificates.go | 2 +- .../gitlab-org/api/client-go/import.go | 10 +- .../gitlab-org/api/client-go/integrations.go | 290 + .../api/client-go/job_token_scope.go | 8 +- .../gitlab-org/api/client-go/jobs.go | 7 +- .../api/client-go/markdown_uploads.go | 2 +- .../api/client-go/merge_requests.go | 15 +- .../gitlab-org/api/client-go/pages.go | 2 +- .../api/client-go/personal_access_tokens.go | 3 + .../gitlab-org/api/client-go/pipelines.go | 2 +- .../gitlab-org/api/client-go/plan_limits.go | 2 +- .../api/client-go/project_import_export.go | 2 +- .../api/client-go/project_markdown_uploads.go | 2 +- .../client-go/project_security_settings.go | 2 +- .../api/client-go/project_vulnerabilities.go | 4 +- .../gitlab-org/api/client-go/projects.go | 99 +- .../api/client-go/release.config.mjs | 27 - .../api/client-go/request_options.go | 4 +- .../api/client-go/resource_group.go | 2 +- .../gitlab-org/api/client-go/secure_files.go | 2 +- .../gitlab-org/api/client-go/services.go | 73 +- .../gitlab-org/api/client-go/settings.go | 2 + .../gitlab-org/api/client-go/tags.go | 2 + .../api/client-go/terraform_states.go | 31 +- .../gitlab-org/api/client-go/users.go | 36 +- .../contrib/detectors/gcp/LICENSE | 30 + .../contrib/detectors/gcp/cloud-function.go | 6 +- .../contrib/detectors/gcp/cloud-run.go | 5 +- .../contrib/detectors/gcp/detector.go | 12 +- .../contrib/detectors/gcp/gce.go | 5 +- .../contrib/detectors/gcp/gke.go | 5 +- .../contrib/detectors/gcp/version.go | 2 +- .../go.opentelemetry.io/otel/.codespellignore | 1 + vendor/go.opentelemetry.io/otel/.golangci.yml | 28 +- vendor/go.opentelemetry.io/otel/.lycheeignore | 3 + vendor/go.opentelemetry.io/otel/CHANGELOG.md | 91 +- vendor/go.opentelemetry.io/otel/CODEOWNERS | 2 +- .../go.opentelemetry.io/otel/CONTRIBUTING.md | 61 +- vendor/go.opentelemetry.io/otel/LICENSE | 30 + vendor/go.opentelemetry.io/otel/Makefile | 7 +- vendor/go.opentelemetry.io/otel/README.md | 7 + .../otel/SECURITY-INSIGHTS.yml | 203 + .../otel/attribute/encoder.go | 12 +- .../otel/attribute/filter.go | 8 +- .../otel/attribute/internal/attribute.go | 16 +- .../otel/attribute/iterator.go | 7 +- .../go.opentelemetry.io/otel/attribute/key.go | 2 +- .../go.opentelemetry.io/otel/attribute/kv.go | 2 +- .../go.opentelemetry.io/otel/attribute/set.go | 20 +- .../otel/attribute/value.go | 8 +- .../otel/baggage/baggage.go | 4 +- .../go.opentelemetry.io/otel/codes/codes.go | 4 +- .../otel/dependencies.Dockerfile | 4 +- .../otel/internal/global/internal_logging.go | 8 +- .../otel/internal/global/trace.go | 1 + .../go.opentelemetry.io/otel/metric/LICENSE | 30 + .../otel/propagation/baggage.go | 6 +- .../otel/propagation/propagation.go | 4 +- .../otel/propagation/trace_context.go | 6 +- vendor/go.opentelemetry.io/otel/sdk/LICENSE | 30 + .../otel/sdk/internal/x/x.go | 4 +- .../otel/sdk/metric/LICENSE | 30 + .../otel/sdk/metric/config.go | 46 +- .../otel/sdk/metric/doc.go | 24 + .../otel/sdk/metric/exemplar.go | 15 +- .../otel/sdk/metric/exemplar/filter.go | 4 +- .../metric/exemplar/fixed_size_reservoir.go | 16 +- .../metric/exemplar/histogram_reservoir.go | 2 +- .../otel/sdk/metric/instrument.go | 6 +- .../sdk/metric/internal/aggregate/drop.go | 4 +- .../aggregate/exponential_histogram.go | 18 +- .../metric/internal/aggregate/histogram.go | 8 +- .../metric/internal/aggregate/lastvalue.go | 16 +- .../otel/sdk/metric/internal/aggregate/sum.go | 16 +- .../otel/sdk/metric/internal/x/README.md | 35 +- .../otel/sdk/metric/internal/x/x.go | 22 +- .../otel/sdk/metric/manual_reader.go | 2 +- .../otel/sdk/metric/meter.go | 3 +- .../otel/sdk/metric/periodic_reader.go | 6 +- .../otel/sdk/metric/pipeline.go | 54 +- .../otel/sdk/metric/provider.go | 2 +- .../otel/sdk/metric/reader.go | 2 +- .../otel/sdk/metric/version.go | 2 +- .../otel/sdk/resource/builtin.go | 4 +- .../otel/sdk/resource/container.go | 4 +- .../otel/sdk/resource/env.go | 2 +- .../otel/sdk/resource/host_id.go | 4 +- .../otel/sdk/resource/os.go | 6 +- .../otel/sdk/resource/os_release_unix.go | 6 +- .../otel/sdk/resource/process.go | 18 +- .../otel/sdk/resource/resource.go | 4 +- .../go.opentelemetry.io/otel/sdk/version.go | 2 +- .../otel/semconv/internal/v2/http.go | 28 +- .../otel/semconv/v1.34.0/attribute_group.go | 210 + .../otel/semconv/v1.34.0/error_type.go | 31 + .../otel/semconv/v1.37.0/MIGRATION.md | 41 + .../otel/semconv/v1.37.0/README.md | 3 + .../otel/semconv/v1.37.0/attribute_group.go | 15193 ++++++++++++++++ .../otel/semconv/v1.37.0/doc.go | 9 + .../otel/semconv/v1.37.0/error_type.go | 31 + .../otel/semconv/v1.37.0/exception.go | 9 + .../otel/semconv/v1.37.0/schema.go | 9 + vendor/go.opentelemetry.io/otel/trace/LICENSE | 30 + vendor/go.opentelemetry.io/otel/trace/auto.go | 6 +- .../go.opentelemetry.io/otel/trace/config.go | 4 +- vendor/go.opentelemetry.io/otel/trace/hex.go | 38 + .../otel/trace/internal/telemetry/attr.go | 2 +- .../otel/trace/internal/telemetry/id.go | 6 +- .../otel/trace/internal/telemetry/value.go | 4 +- vendor/go.opentelemetry.io/otel/trace/noop.go | 4 +- .../otel/trace/noop/noop.go | 2 +- .../go.opentelemetry.io/otel/trace/trace.go | 156 +- .../otel/trace/tracestate.go | 6 +- vendor/go.opentelemetry.io/otel/version.go | 2 +- vendor/go.opentelemetry.io/otel/versions.yaml | 8 +- vendor/go.yaml.in/yaml/v3/LICENSE | 50 + .../yaml/v3/NOTICE} | 16 +- vendor/go.yaml.in/yaml/v3/README.md | 171 + vendor/go.yaml.in/yaml/v3/apic.go | 747 + vendor/go.yaml.in/yaml/v3/decode.go | 1018 ++ vendor/go.yaml.in/yaml/v3/emitterc.go | 2054 +++ vendor/go.yaml.in/yaml/v3/encode.go | 577 + vendor/go.yaml.in/yaml/v3/parserc.go | 1274 ++ vendor/go.yaml.in/yaml/v3/readerc.go | 434 + vendor/go.yaml.in/yaml/v3/resolve.go | 326 + vendor/go.yaml.in/yaml/v3/scannerc.go | 3040 ++++ vendor/go.yaml.in/yaml/v3/sorter.go | 134 + vendor/go.yaml.in/yaml/v3/writerc.go | 48 + vendor/go.yaml.in/yaml/v3/yaml.go | 703 + vendor/go.yaml.in/yaml/v3/yamlh.go | 811 + vendor/go.yaml.in/yaml/v3/yamlprivateh.go | 198 + .../x/crypto/curve25519/curve25519.go | 2 +- vendor/golang.org/x/crypto/ssh/common.go | 2 + vendor/golang.org/x/crypto/ssh/kex.go | 32 +- .../x/crypto/ssh/knownhosts/knownhosts.go | 22 +- vendor/golang.org/x/crypto/ssh/mlkem.go | 15 - .../golang.org/x/sys/plan9/pwd_go15_plan9.go | 21 - vendor/golang.org/x/sys/plan9/pwd_plan9.go | 14 +- .../golang.org/x/sys/unix/affinity_linux.go | 4 +- .../golang.org/x/sys/unix/syscall_solaris.go | 2 +- .../x/sys/unix/zsyscall_solaris_amd64.go | 8 +- vendor/golang.org/x/sys/unix/ztypes_linux.go | 41 + .../sys/windows/registry/zsyscall_windows.go | 16 +- .../golang.org/x/sys/windows/types_windows.go | 6 + .../x/sys/windows/zsyscall_windows.go | 966 +- .../x/tools/go/ast/astutil/enclosing.go | 2 +- .../x/tools/go/ast/inspector/inspector.go | 1 + .../x/tools/go/ast/inspector/typeof.go | 2 - vendor/golang.org/x/tools/go/packages/doc.go | 2 + vendor/golang.org/x/tools/go/ssa/builder.go | 2 +- .../tools/internal/imports/source_modindex.go | 47 +- .../x/tools/internal/modindex/directories.go | 148 +- .../x/tools/internal/modindex/index.go | 233 +- .../x/tools/internal/modindex/modindex.go | 205 +- .../x/tools/internal/modindex/symbols.go | 69 +- .../x/tools/internal/modindex/types.go | 25 - .../google.golang.org/api/internal/version.go | 2 +- .../api/storage/v1/storage-api.json | 14 +- .../api/storage/v1/storage-gen.go | 6 + .../internal/editionssupport/editions.go | 2 +- .../protobuf/internal/filedesc/editions.go | 12 +- .../protobuf/internal/genid/api_gen.go | 6 + .../protobuf/internal/version/version.go | 2 +- .../types/descriptorpb/descriptor.pb.go | 10 +- .../v1beta1/generated.pb.go | 5038 +++-- .../v1beta1/generated.proto | 301 + .../admissionregistration/v1beta1/register.go | 4 + .../admissionregistration/v1beta1/types.go | 331 +- .../v1beta1/types_swagger_doc_generated.go | 95 + .../v1beta1/zz_generated.deepcopy.go | 254 +- .../zz_generated.prerelease-lifecycle.go | 72 + vendor/k8s.io/api/apps/v1/generated.proto | 2 +- vendor/k8s.io/api/apps/v1/types.go | 2 +- .../apps/v1/types_swagger_doc_generated.go | 2 +- .../k8s.io/api/apps/v1beta1/generated.proto | 3 + vendor/k8s.io/api/apps/v1beta1/types.go | 4 + .../k8s.io/api/apps/v1beta2/generated.proto | 5 +- vendor/k8s.io/api/apps/v1beta2/types.go | 6 +- .../v1beta2/types_swagger_doc_generated.go | 2 +- .../api/authorization/v1/generated.proto | 6 - vendor/k8s.io/api/authorization/v1/types.go | 6 - .../v1/types_swagger_doc_generated.go | 4 +- .../k8s.io/api/autoscaling/v1/generated.proto | 3 + vendor/k8s.io/api/autoscaling/v1/types.go | 4 + vendor/k8s.io/api/batch/v1/generated.proto | 7 +- vendor/k8s.io/api/batch/v1/types.go | 7 +- .../batch/v1/types_swagger_doc_generated.go | 6 +- .../api/certificates/v1/generated.proto | 7 + vendor/k8s.io/api/certificates/v1/types.go | 7 + .../api/certificates/v1alpha1/generated.pb.go | 1511 +- .../api/certificates/v1alpha1/generated.proto | 205 + .../api/certificates/v1alpha1/register.go | 2 + .../k8s.io/api/certificates/v1alpha1/types.go | 231 + .../v1alpha1/types_swagger_doc_generated.go | 52 + .../v1alpha1/zz_generated.deepcopy.go | 128 + .../zz_generated.prerelease-lifecycle.go | 36 + .../api/certificates/v1beta1/generated.proto | 7 + .../k8s.io/api/certificates/v1beta1/types.go | 7 + vendor/k8s.io/api/core/v1/generated.pb.go | 5809 ++++-- vendor/k8s.io/api/core/v1/generated.proto | 305 +- vendor/k8s.io/api/core/v1/types.go | 320 +- .../core/v1/types_swagger_doc_generated.go | 149 +- .../api/core/v1/zz_generated.deepcopy.go | 155 + vendor/k8s.io/api/extensions/v1beta1/doc.go | 2 + .../api/extensions/v1beta1/generated.proto | 5 +- vendor/k8s.io/api/extensions/v1beta1/types.go | 6 +- .../v1beta1/types_swagger_doc_generated.go | 2 +- .../v1beta1/zz_generated.validations.go | 78 + .../k8s.io/api/networking/v1/generated.proto | 7 +- vendor/k8s.io/api/networking/v1/types.go | 7 +- .../v1/types_swagger_doc_generated.go | 2 +- .../api/networking/v1alpha1/generated.pb.go | 1929 -- .../api/networking/v1alpha1/generated.proto | 142 - .../k8s.io/api/networking/v1alpha1/types.go | 154 - .../v1alpha1/types_swagger_doc_generated.go | 110 - .../networking/v1alpha1/well_known_labels.go | 33 - .../v1alpha1/zz_generated.deepcopy.go | 229 - .../zz_generated.prerelease-lifecycle.go | 94 - vendor/k8s.io/api/resource/v1/devicetaint.go | 35 + .../v1alpha1 => resource/v1}/doc.go | 9 +- vendor/k8s.io/api/resource/v1/generated.pb.go | 12777 +++++++++++++ vendor/k8s.io/api/resource/v1/generated.proto | 1589 ++ .../v1alpha1 => resource/v1}/register.go | 46 +- vendor/k8s.io/api/resource/v1/types.go | 1873 ++ .../v1/types_swagger_doc_generated.go | 510 + .../api/resource/v1/zz_generated.deepcopy.go | 1257 ++ .../v1/zz_generated.prerelease-lifecycle.go | 70 + .../api/resource/v1alpha3/devicetaint.go | 35 + .../api/resource/v1alpha3/generated.pb.go | 11648 +----------- .../api/resource/v1alpha3/generated.proto | 1160 +- .../k8s.io/api/resource/v1alpha3/register.go | 8 - vendor/k8s.io/api/resource/v1alpha3/types.go | 1534 +- .../v1alpha3/types_swagger_doc_generated.go | 395 - .../v1alpha3/zz_generated.deepcopy.go | 1099 +- .../zz_generated.prerelease-lifecycle.go | 196 - .../api/resource/v1beta1/generated.pb.go | 2280 ++- .../api/resource/v1beta1/generated.proto | 313 +- vendor/k8s.io/api/resource/v1beta1/types.go | 331 +- .../v1beta1/types_swagger_doc_generated.go | 102 +- .../resource/v1beta1/zz_generated.deepcopy.go | 165 + .../api/resource/v1beta2/generated.pb.go | 2520 ++- .../api/resource/v1beta2/generated.proto | 313 +- vendor/k8s.io/api/resource/v1beta2/types.go | 331 +- .../v1beta2/types_swagger_doc_generated.go | 104 +- .../resource/v1beta2/zz_generated.deepcopy.go | 165 + vendor/k8s.io/api/storage/v1/generated.pb.go | 828 +- vendor/k8s.io/api/storage/v1/generated.proto | 47 +- vendor/k8s.io/api/storage/v1/register.go | 3 + vendor/k8s.io/api/storage/v1/types.go | 59 +- .../storage/v1/types_swagger_doc_generated.go | 27 +- .../api/storage/v1/zz_generated.deepcopy.go | 66 + .../v1/zz_generated.prerelease-lifecycle.go | 12 + vendor/k8s.io/api/storage/v1alpha1/types.go | 4 + .../zz_generated.prerelease-lifecycle.go | 12 + .../api/storage/v1beta1/generated.proto | 7 +- vendor/k8s.io/api/storage/v1beta1/types.go | 11 +- .../v1beta1/types_swagger_doc_generated.go | 6 +- .../zz_generated.prerelease-lifecycle.go | 12 + .../apimachinery/pkg/api/errors/errors.go | 2 +- .../pkg/api/operation/operation.go | 50 +- .../k8s.io/apimachinery/pkg/api/safe/safe.go | 59 + .../apimachinery/pkg/api/validate/README.md | 64 + .../apimachinery/pkg/api/validate/common.go | 28 + .../api/validate/constraints/constraints.go | 32 + .../pkg/api/validate/content/errors.go | 39 + .../apimachinery/pkg/api/validate/doc.go | 50 + .../apimachinery/pkg/api/validate/each.go | 171 + .../apimachinery/pkg/api/validate/enum.go | 40 + .../apimachinery/pkg/api/validate/equality.go | 38 + .../pkg/api/validate/immutable.go | 64 + .../apimachinery/pkg/api/validate/item.go | 72 + .../apimachinery/pkg/api/validate/limits.go | 37 + .../apimachinery/pkg/api/validate/required.go | 133 + .../apimachinery/pkg/api/validate/subfield.go | 46 + .../apimachinery/pkg/api/validate/testing.go | 35 + .../apimachinery/pkg/api/validate/union.go | 212 + .../pkg/api/validate/zeroorone.go | 54 + .../pkg/api/validation/objectmeta.go | 6 +- .../internalversion/validation/validation.go | 76 - .../apimachinery/pkg/apis/meta/v1/types.go | 16 +- .../pkg/apis/meta/v1/validation/validation.go | 4 +- .../k8s.io/apimachinery/pkg/labels/labels.go | 9 + .../apimachinery/pkg/labels/selector.go | 32 +- .../apimachinery/pkg/runtime/converter.go | 29 +- .../apimachinery/pkg/runtime/interfaces.go | 6 + .../k8s.io/apimachinery/pkg/runtime/scheme.go | 78 +- .../pkg/runtime/serializer/cbor/cbor.go | 6 - .../runtime/serializer/cbor/direct/direct.go | 22 +- .../serializer/cbor/internal/modes/custom.go | 422 - .../serializer/cbor/internal/modes/decode.go | 22 +- .../serializer/cbor/internal/modes/encode.go | 24 +- .../cbor/internal/modes/transcoding.go | 108 + .../k8s.io/apimachinery/pkg/util/diff/cmp.go | 31 + .../k8s.io/apimachinery/pkg/util/diff/diff.go | 142 +- .../apimachinery/pkg/util/diff/legacy_diff.go | 67 + .../apimachinery/pkg/util/errors/errors.go | 2 + .../pkg/util/managedfields/extract.go | 4 +- .../pkg/util/managedfields/fieldmanager.go | 2 +- .../pkg/util/managedfields/gvkparser.go | 4 +- .../managedfields/internal/capmanagers.go | 2 +- .../util/managedfields/internal/conflict.go | 4 +- .../managedfields/internal/fieldmanager.go | 2 +- .../pkg/util/managedfields/internal/fields.go | 2 +- .../internal/lastappliedmanager.go | 4 +- .../managedfields/internal/managedfields.go | 2 +- .../internal/managedfieldsupdater.go | 2 +- .../util/managedfields/internal/manager.go | 2 +- .../managedfields/internal/pathelement.go | 4 +- .../internal/runtimetypeconverter.go | 62 + .../managedfields/internal/skipnonapplied.go | 3 + .../util/managedfields/internal/stripmeta.go | 2 +- .../managedfields/internal/structuredmerge.go | 6 +- .../managedfields/internal/typeconverter.go | 6 +- .../internal/versionconverter.go | 6 +- .../pkg/util/managedfields/scalehandler.go | 2 +- .../pkg/util/managedfields/typeconverter.go | 9 + .../apimachinery/pkg/util/runtime/runtime.go | 25 +- .../util/validation/field/error_matcher.go | 14 +- .../pkg/util/validation/field/errors.go | 78 +- .../pkg/util/validation/validation.go | 2 +- .../apimachinery/pkg/util/yaml/decoder.go | 4 +- .../v1/mutatingwebhookconfiguration.go | 17 + .../v1/validatingadmissionpolicy.go | 17 + .../v1/validatingadmissionpolicybinding.go | 17 + .../v1/validatingwebhookconfiguration.go | 17 + .../v1alpha1/mutatingadmissionpolicy.go | 17 + .../mutatingadmissionpolicybinding.go | 17 + .../v1alpha1/validatingadmissionpolicy.go | 17 + .../validatingadmissionpolicybinding.go | 17 + .../v1beta1/applyconfiguration.go | 39 + .../v1beta1/jsonpatch.go | 39 + .../v1beta1/mutatingadmissionpolicy.go | 270 + .../v1beta1/mutatingadmissionpolicybinding.go | 270 + .../mutatingadmissionpolicybindingspec.go | 57 + .../v1beta1/mutatingadmissionpolicyspec.go | 113 + .../v1beta1/mutatingwebhook.go | 27 +- .../v1beta1/mutatingwebhookconfiguration.go | 17 + .../admissionregistration/v1beta1/mutation.go | 61 + .../v1beta1/validatingadmissionpolicy.go | 17 + .../validatingadmissionpolicybinding.go | 17 + .../v1beta1/validatingwebhookconfiguration.go | 17 + .../v1alpha1/storageversion.go | 17 + .../apps/v1/controllerrevision.go | 17 + .../applyconfigurations/apps/v1/daemonset.go | 17 + .../applyconfigurations/apps/v1/deployment.go | 17 + .../applyconfigurations/apps/v1/replicaset.go | 17 + .../apps/v1/statefulset.go | 17 + .../apps/v1beta1/controllerrevision.go | 17 + .../apps/v1beta1/deployment.go | 17 + .../apps/v1beta1/statefulset.go | 17 + .../apps/v1beta2/controllerrevision.go | 17 + .../apps/v1beta2/daemonset.go | 17 + .../apps/v1beta2/deployment.go | 17 + .../apps/v1beta2/replicaset.go | 17 + .../applyconfigurations/apps/v1beta2/scale.go | 17 + .../apps/v1beta2/statefulset.go | 17 + .../autoscaling/v1/horizontalpodautoscaler.go | 17 + .../autoscaling/v1/scale.go | 17 + .../autoscaling/v2/horizontalpodautoscaler.go | 17 + .../v2beta1/horizontalpodautoscaler.go | 17 + .../v2beta2/horizontalpodautoscaler.go | 17 + .../applyconfigurations/batch/v1/cronjob.go | 17 + .../applyconfigurations/batch/v1/job.go | 17 + .../batch/v1/jobtemplatespec.go | 6 + .../batch/v1beta1/cronjob.go | 17 + .../batch/v1beta1/jobtemplatespec.go | 6 + .../v1/certificatesigningrequest.go | 17 + .../v1alpha1/clustertrustbundle.go | 17 + .../v1alpha1/podcertificaterequest.go} | 109 +- .../v1alpha1/podcertificaterequestspec.go | 128 + .../v1alpha1/podcertificaterequeststatus.go | 85 + .../v1beta1/certificatesigningrequest.go | 17 + .../v1beta1/clustertrustbundle.go | 17 + .../coordination/v1/lease.go | 17 + .../coordination/v1alpha2/leasecandidate.go | 17 + .../coordination/v1beta1/lease.go | 17 + .../coordination/v1beta1/leasecandidate.go | 17 + .../core/v1/componentstatus.go | 17 + .../applyconfigurations/core/v1/configmap.go | 17 + .../applyconfigurations/core/v1/container.go | 14 + .../v1/containerextendedresourcerequest.go | 57 + .../core/v1/containerrestartrule.go | 52 + .../v1/containerrestartruleonexitcodes.go | 54 + .../applyconfigurations/core/v1/endpoints.go | 17 + .../core/v1/envvarsource.go | 9 + .../core/v1/ephemeralcontainer.go | 13 + .../core/v1/ephemeralcontainercommon.go | 14 + .../applyconfigurations/core/v1/event.go | 17 + .../core/v1/filekeyselector.go | 66 + .../applyconfigurations/core/v1/limitrange.go | 17 + .../applyconfigurations/core/v1/namespace.go | 17 + .../applyconfigurations/core/v1/node.go | 17 + .../core/v1/persistentvolume.go | 17 + .../core/v1/persistentvolumeclaim.go | 17 + .../core/v1/persistentvolumeclaimtemplate.go | 6 + .../applyconfigurations/core/v1/pod.go | 17 + .../core/v1/podcertificateprojection.go | 84 + .../core/v1/podextendedresourceclaimstatus.go | 53 + .../applyconfigurations/core/v1/podspec.go | 9 + .../applyconfigurations/core/v1/podstatus.go | 43 +- .../core/v1/podtemplate.go | 17 + .../core/v1/podtemplatespec.go | 6 + .../core/v1/replicationcontroller.go | 17 + .../core/v1/resourcequota.go | 17 + .../applyconfigurations/core/v1/secret.go | 17 + .../applyconfigurations/core/v1/service.go | 17 + .../core/v1/serviceaccount.go | 17 + .../core/v1/volumeprojection.go | 9 + .../discovery/v1/endpointslice.go | 17 + .../discovery/v1beta1/endpointslice.go | 17 + .../client-go/applyconfigurations/doc.go | 1 - .../applyconfigurations/events/v1/event.go | 17 + .../events/v1beta1/event.go | 17 + .../extensions/v1beta1/daemonset.go | 17 + .../extensions/v1beta1/deployment.go | 17 + .../extensions/v1beta1/ingress.go | 17 + .../extensions/v1beta1/networkpolicy.go | 17 + .../extensions/v1beta1/replicaset.go | 17 + .../extensions/v1beta1/scale.go | 17 + .../flowcontrol/v1/flowschema.go | 17 + .../v1/prioritylevelconfiguration.go | 17 + .../flowcontrol/v1beta1/flowschema.go | 17 + .../v1beta1/prioritylevelconfiguration.go | 17 + .../flowcontrol/v1beta2/flowschema.go | 17 + .../v1beta2/prioritylevelconfiguration.go | 17 + .../flowcontrol/v1beta3/flowschema.go | 17 + .../v1beta3/prioritylevelconfiguration.go | 17 + .../imagepolicy/v1alpha1/imagereview.go | 17 + .../applyconfigurations/internal/internal.go | 1057 +- .../meta/v1/deleteoptions.go | 11 + .../applyconfigurations/meta/v1/objectmeta.go | 5 + .../applyconfigurations/meta/v1/typemeta.go | 10 + .../meta/v1/unstructured.go | 2 +- .../networking/v1/ingress.go | 17 + .../networking/v1/ingressclass.go | 17 + .../networking/v1/ipaddress.go | 17 + .../networking/v1/networkpolicy.go | 17 + .../networking/v1/servicecidr.go | 17 + .../networking/v1alpha1/ipaddress.go | 253 - .../networking/v1alpha1/ipaddressspec.go | 39 - .../networking/v1alpha1/parentreference.go | 66 - .../networking/v1alpha1/servicecidrspec.go | 41 - .../networking/v1alpha1/servicecidrstatus.go | 48 - .../networking/v1beta1/ingress.go | 17 + .../networking/v1beta1/ingressclass.go | 17 + .../networking/v1beta1/ipaddress.go | 17 + .../networking/v1beta1/servicecidr.go | 17 + .../node/v1/runtimeclass.go | 17 + .../node/v1alpha1/runtimeclass.go | 17 + .../node/v1beta1/runtimeclass.go | 17 + .../applyconfigurations/policy/v1/eviction.go | 17 + .../policy/v1/poddisruptionbudget.go | 17 + .../policy/v1beta1/eviction.go | 17 + .../policy/v1beta1/poddisruptionbudget.go | 17 + .../rbac/v1/clusterrole.go | 17 + .../rbac/v1/clusterrolebinding.go | 17 + .../applyconfigurations/rbac/v1/role.go | 17 + .../rbac/v1/rolebinding.go | 17 + .../rbac/v1alpha1/clusterrole.go | 17 + .../rbac/v1alpha1/clusterrolebinding.go | 17 + .../applyconfigurations/rbac/v1alpha1/role.go | 17 + .../rbac/v1alpha1/rolebinding.go | 17 + .../rbac/v1beta1/clusterrole.go | 17 + .../rbac/v1beta1/clusterrolebinding.go | 17 + .../applyconfigurations/rbac/v1beta1/role.go | 17 + .../rbac/v1beta1/rolebinding.go | 17 + .../{v1alpha3 => v1}/allocateddevicestatus.go | 17 +- .../{v1alpha3 => v1}/allocationresult.go | 20 +- .../resource/v1/capacityrequestpolicy.go | 63 + .../resource/v1/capacityrequestpolicyrange.go | 61 + .../resource/v1/capacityrequirements.go | 50 + .../resource/v1/celdeviceselector.go | 39 + .../resource/{v1alpha3 => v1}/counter.go | 2 +- .../resource/{v1alpha3 => v1}/counterset.go | 2 +- .../applyconfigurations/resource/v1/device.go | 169 + .../deviceallocationconfiguration.go | 10 +- .../deviceallocationresult.go | 2 +- .../{v1alpha3 => v1}/deviceattribute.go | 2 +- .../resource/v1/devicecapacity.go | 52 + .../resource/{v1alpha3 => v1}/deviceclaim.go | 2 +- .../deviceclaimconfiguration.go | 2 +- .../resource/{v1alpha3 => v1}/deviceclass.go | 51 +- .../deviceclassconfiguration.go | 2 +- .../{v1alpha3 => v1}/deviceclassspec.go | 15 +- .../{v1alpha3 => v1}/deviceconfiguration.go | 2 +- .../{v1alpha3 => v1}/deviceconstraint.go | 19 +- .../devicecounterconsumption.go | 2 +- .../resource/v1/devicerequest.go | 62 + .../devicerequestallocationresult.go | 66 +- .../resource/v1/deviceselector.go | 39 + .../{v1alpha3 => v1}/devicesubrequest.go | 27 +- .../resource/v1/devicetaint.go | 71 + .../{v1alpha3 => v1}/devicetoleration.go | 18 +- .../exactdevicerequest.go} | 70 +- .../{v1alpha3 => v1}/networkdevicedata.go | 2 +- .../opaquedeviceconfiguration.go | 2 +- .../{v1alpha3 => v1}/resourceclaim.go | 53 +- .../resourceclaimconsumerreference.go | 2 +- .../{v1alpha3 => v1}/resourceclaimspec.go | 2 +- .../{v1alpha3 => v1}/resourceclaimstatus.go | 2 +- .../{v1alpha3 => v1}/resourceclaimtemplate.go | 51 +- .../resourceclaimtemplatespec.go | 24 +- .../resource/{v1alpha3 => v1}/resourcepool.go | 2 +- .../{v1alpha3 => v1}/resourceslice.go | 51 +- .../{v1alpha3 => v1}/resourceslicespec.go | 22 +- .../resource/v1alpha3/basicdevice.go | 121 - .../resource/v1alpha3/device.go | 48 - .../resource/v1alpha3/devicetaintrule.go | 17 + .../resource/v1beta1/allocateddevicestatus.go | 9 + .../resource/v1beta1/allocationresult.go | 14 +- .../resource/v1beta1/basicdevice.go | 54 +- .../resource/v1beta1/capacityrequestpolicy.go | 63 + .../v1beta1/capacityrequestpolicyrange.go | 61 + .../resource/v1beta1/capacityrequirements.go | 50 + .../resource/v1beta1/devicecapacity.go | 11 +- .../resource/v1beta1/deviceclass.go | 17 + .../resource/v1beta1/deviceclassspec.go | 13 +- .../resource/v1beta1/deviceconstraint.go | 13 +- .../resource/v1beta1/devicerequest.go | 25 +- .../v1beta1/devicerequestallocationresult.go | 64 +- .../resource/v1beta1/devicesubrequest.go | 21 +- .../resource/v1beta1/resourceclaim.go | 17 + .../resource/v1beta1/resourceclaimtemplate.go | 17 + .../v1beta1/resourceclaimtemplatespec.go | 6 + .../resource/v1beta1/resourceslice.go | 17 + .../resource/v1beta2/allocateddevicestatus.go | 9 + .../resource/v1beta2/allocationresult.go | 14 +- .../resource/v1beta2/capacityrequestpolicy.go | 63 + .../v1beta2/capacityrequestpolicyrange.go | 61 + .../resource/v1beta2/capacityrequirements.go | 50 + .../resource/v1beta2/device.go | 56 +- .../resource/v1beta2/devicecapacity.go | 11 +- .../resource/v1beta2/deviceclass.go | 17 + .../resource/v1beta2/deviceclassspec.go | 13 +- .../resource/v1beta2/deviceconstraint.go | 13 +- .../v1beta2/devicerequestallocationresult.go | 64 +- .../resource/v1beta2/devicesubrequest.go | 21 +- .../resource/v1beta2/exactdevicerequest.go | 21 +- .../resource/v1beta2/resourceclaim.go | 17 + .../resource/v1beta2/resourceclaimtemplate.go | 17 + .../v1beta2/resourceclaimtemplatespec.go | 6 + .../resource/v1beta2/resourceslice.go | 17 + .../scheduling/v1/priorityclass.go | 17 + .../scheduling/v1alpha1/priorityclass.go | 17 + .../scheduling/v1beta1/priorityclass.go | 17 + .../storage/v1/csidriver.go | 17 + .../applyconfigurations/storage/v1/csinode.go | 17 + .../storage/v1/csistoragecapacity.go | 17 + .../storage/v1/storageclass.go | 17 + .../storage/v1/volumeattachment.go | 17 + .../storage/v1/volumeattributesclass.go | 285 + .../storage/v1alpha1/csistoragecapacity.go | 17 + .../storage/v1alpha1/volumeattachment.go | 17 + .../storage/v1alpha1/volumeattributesclass.go | 17 + .../storage/v1beta1/csidriver.go | 17 + .../storage/v1beta1/csinode.go | 17 + .../storage/v1beta1/csistoragecapacity.go | 17 + .../storage/v1beta1/storageclass.go | 17 + .../storage/v1beta1/volumeattachment.go | 17 + .../storage/v1beta1/volumeattributesclass.go | 17 + .../v1alpha1/storageversionmigration.go | 17 + .../client-go/applyconfigurations/utils.go | 214 +- vendor/k8s.io/client-go/dynamic/simple.go | 46 +- .../client-go/features/known_features.go | 31 +- vendor/k8s.io/client-go/gentype/type.go | 39 - .../v1beta1/interface.go | 14 + .../v1beta1/mutatingadmissionpolicy.go | 101 + .../v1beta1/mutatingadmissionpolicybinding.go | 101 + .../certificates/v1alpha1/interface.go | 7 + .../v1alpha1/podcertificaterequest.go | 102 + vendor/k8s.io/client-go/informers/generic.go | 34 +- .../informers/networking/interface.go | 8 - .../networking/v1alpha1/interface.go | 52 - .../networking/v1alpha1/ipaddress.go | 101 - .../networking/v1alpha1/servicecidr.go | 101 - .../client-go/informers/resource/interface.go | 8 + .../resource/{v1alpha3 => v1}/deviceclass.go | 34 +- .../informers/resource/v1/interface.go | 66 + .../{v1alpha3 => v1}/resourceclaim.go | 34 +- .../{v1alpha3 => v1}/resourceclaimtemplate.go | 34 +- .../{v1alpha3 => v1}/resourceslice.go | 34 +- .../informers/resource/v1alpha3/interface.go | 28 - .../informers/storage/v1/interface.go | 7 + .../storage/v1/volumeattributesclass.go | 101 + .../k8s.io/client-go/kubernetes/clientset.go | 26 +- .../kubernetes/fake/clientset_generated.go | 18 +- .../client-go/kubernetes/fake/register.go | 4 +- .../client-go/kubernetes/scheme/register.go | 4 +- .../v1beta1/admissionregistration_client.go | 10 + .../fake/fake_admissionregistration_client.go | 8 + .../fake/fake_mutatingadmissionpolicy.go | 53 + .../fake_mutatingadmissionpolicybinding.go | 55 + .../v1beta1/generated_expansion.go | 4 + .../v1beta1/mutatingadmissionpolicy.go | 75 + .../v1beta1/mutatingadmissionpolicybinding.go | 75 + .../v1alpha1/certificates_client.go | 5 + .../v1alpha1/fake/fake_certificates_client.go | 4 + .../fake/fake_podcertificaterequest.go | 53 + .../v1alpha1/generated_expansion.go | 2 + .../v1alpha1/podcertificaterequest.go | 79 + .../v1alpha1/fake/fake_ipaddress.go | 51 - .../v1alpha1/fake/fake_servicecidr.go | 53 - .../typed/networking/v1alpha1/ipaddress.go | 71 - .../typed/networking/v1alpha1/servicecidr.go | 75 - .../typed/resource/v1/deviceclass.go | 71 + .../v1alpha1 => resource/v1}/doc.go | 2 +- .../v1alpha1 => resource/v1}/fake/doc.go | 0 .../resource/v1/fake/fake_deviceclass.go | 49 + .../v1/fake/fake_resource_client.go} | 22 +- .../resource/v1/fake/fake_resourceclaim.go | 51 + .../v1/fake/fake_resourceclaimtemplate.go | 53 + .../resource/v1/fake/fake_resourceslice.go | 51 + .../v1}/generated_expansion.go | 10 +- .../v1/resource_client.go} | 56 +- .../typed/resource/v1/resourceclaim.go | 75 + .../resource/v1/resourceclaimtemplate.go | 71 + .../typed/resource/v1/resourceslice.go | 71 + .../typed/resource/v1alpha3/deviceclass.go | 71 - .../v1alpha3/fake/fake_deviceclass.go | 53 - .../v1alpha3/fake/fake_resource_client.go | 16 - .../v1alpha3/fake/fake_resourceclaim.go | 53 - .../fake/fake_resourceclaimtemplate.go | 53 - .../v1alpha3/fake/fake_resourceslice.go | 53 - .../resource/v1alpha3/generated_expansion.go | 8 - .../resource/v1alpha3/resource_client.go | 20 - .../typed/resource/v1alpha3/resourceclaim.go | 75 - .../v1alpha3/resourceclaimtemplate.go | 73 - .../typed/resource/v1alpha3/resourceslice.go | 71 - .../storage/v1/fake/fake_storage_client.go | 4 + .../v1/fake/fake_volumeattributesclass.go | 53 + .../typed/storage/v1/generated_expansion.go | 2 + .../typed/storage/v1/storage_client.go | 5 + .../typed/storage/v1/volumeattributesclass.go | 71 + .../v1beta1/expansion_generated.go | 8 + .../v1beta1/mutatingadmissionpolicy.go | 48 + .../v1beta1/mutatingadmissionpolicybinding.go | 48 + .../v1alpha1/expansion_generated.go | 8 + .../v1alpha1/podcertificaterequest.go | 70 + .../listers/networking/v1alpha1/ipaddress.go | 48 - .../networking/v1alpha1/servicecidr.go | 48 - .../resource/{v1alpha3 => v1}/deviceclass.go | 12 +- .../resource/v1/expansion_generated.go | 43 + .../{v1alpha3 => v1}/resourceclaim.go | 18 +- .../{v1alpha3 => v1}/resourceclaimtemplate.go | 18 +- .../{v1alpha3 => v1}/resourceslice.go | 12 +- .../resource/v1alpha3/expansion_generated.go | 24 - .../listers/storage/v1/expansion_generated.go | 4 + .../storage/v1/volumeattributesclass.go | 48 + vendor/k8s.io/client-go/openapi/client.go | 4 + vendor/k8s.io/client-go/pkg/version/base.go | 8 +- vendor/k8s.io/client-go/rest/request.go | 211 +- vendor/k8s.io/client-go/testing/fixture.go | 79 +- .../client-go/tools/cache/controller.go | 16 +- .../client-go/tools/cache/delta_fifo.go | 5 + .../k8s.io/client-go/tools/cache/listers.go | 8 + .../k8s.io/client-go/tools/cache/listwatch.go | 4 + .../k8s.io/client-go/tools/cache/reflector.go | 109 +- .../client-go/tools/cache/shared_informer.go | 1 - vendor/k8s.io/client-go/tools/cache/store.go | 37 +- .../client-go/tools/cache/the_real_fifo.go | 10 +- .../client-go/tools/clientcmd/api/types.go | 17 +- .../client-go/tools/clientcmd/api/v1/types.go | 7 +- .../tools/leaderelection/leaderelection.go | 18 +- .../leaderelection/resourcelock/interface.go | 16 +- .../leaderelection/resourcelock/leaselock.go | 15 +- .../data_consistency_detector.go | 22 +- .../list_data_consistency_detector.go | 76 - .../watch_list_data_consistency_detector.go | 54 - vendor/k8s.io/client-go/util/retry/util.go | 2 +- .../client-go/util/watchlist/watch_list.go | 82 - vendor/k8s.io/client-go/util/workqueue/doc.go | 1 + .../k8s.io/client-go/util/workqueue/queue.go | 73 +- vendor/k8s.io/gengo/v2/codetags/extractor.go | 85 + vendor/k8s.io/gengo/v2/codetags/parser.go | 407 + vendor/k8s.io/gengo/v2/codetags/scanner.go | 228 + vendor/k8s.io/gengo/v2/codetags/types.go | 169 + vendor/k8s.io/gengo/v2/comments.go | 234 +- .../k8s.io/kube-openapi/pkg/common/common.go | 4 +- .../kube-openapi/pkg/schemaconv/openapi.go | 2 +- .../pkg/schemaconv/proto_models.go | 2 +- .../k8s.io/kube-openapi/pkg/schemaconv/smd.go | 2 +- .../kube-openapi/pkg/util/proto/document.go | 2 +- .../pkg/util/proto/document_v3.go | 2 +- vendor/k8s.io/utils/buffer/ring_growing.go | 122 +- vendor/modules.txt | 316 +- .../structured-merge-diff/{v4 => v6}/LICENSE | 0 .../{v4 => v6}/fieldpath/doc.go | 0 .../{v4 => v6}/fieldpath/element.go | 73 +- .../{v4 => v6}/fieldpath/fromvalue.go | 2 +- .../{v4 => v6}/fieldpath/managers.go | 0 .../{v4 => v6}/fieldpath/path.go | 2 +- .../{v4 => v6}/fieldpath/pathelementmap.go | 2 +- .../{v4 => v6}/fieldpath/serialize-pe.go | 28 +- .../{v4 => v6}/fieldpath/serialize.go | 0 .../{v4 => v6}/fieldpath/set.go | 43 +- .../{v4 => v6}/merge/conflict.go | 2 +- .../{v4 => v6}/merge/update.go | 7 +- .../{v4 => v6}/schema/doc.go | 0 .../{v4 => v6}/schema/elements.go | 0 .../{v4 => v6}/schema/equals.go | 0 .../{v4 => v6}/schema/schemaschema.go | 0 .../{v4 => v6}/typed/compare.go | 6 +- .../{v4 => v6}/typed/doc.go | 0 .../{v4 => v6}/typed/helpers.go | 15 +- .../{v4 => v6}/typed/merge.go | 6 +- .../{v4 => v6}/typed/parser.go | 6 +- .../{v4 => v6}/typed/reconcile_schema.go | 4 +- .../{v4 => v6}/typed/remove.go | 6 +- .../{v4 => v6}/typed/tofieldset.go | 6 +- .../{v4 => v6}/typed/typed.go | 6 +- .../{v4 => v6}/typed/validate.go | 10 +- .../{v4 => v6}/value/allocator.go | 0 .../{v4 => v6}/value/doc.go | 0 .../{v4 => v6}/value/fields.go | 8 + .../{v4 => v6}/value/jsontagutil.go | 63 +- .../{v4 => v6}/value/list.go | 0 .../{v4 => v6}/value/listreflect.go | 0 .../{v4 => v6}/value/listunstructured.go | 0 .../{v4 => v6}/value/map.go | 0 .../{v4 => v6}/value/mapreflect.go | 0 .../{v4 => v6}/value/mapunstructured.go | 0 .../{v4 => v6}/value/reflectcache.go | 14 +- .../{v4 => v6}/value/scalar.go | 0 .../{v4 => v6}/value/structreflect.go | 0 .../{v4 => v6}/value/value.go | 19 +- .../{v4 => v6}/value/valuereflect.go | 0 .../{v4 => v6}/value/valueunstructured.go | 0 vendor/sigs.k8s.io/yaml/goyaml.v2/README.md | 71 - .../yaml/goyaml.v2/yaml_aliases.go | 85 - 1502 files changed, 110526 insertions(+), 48934 deletions(-) create mode 100644 vendor/cloud.google.com/go/spanner/grpc_dp.go create mode 100644 vendor/cloud.google.com/go/spanner/trace.go create mode 100644 vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/_metadata.json create mode 100644 vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/fake_challenge.go rename vendor/github.com/{avast/retry-go/v4 => Azure/go-ansiterm}/LICENSE (86%) create mode 100644 vendor/github.com/Azure/go-ansiterm/README.md create mode 100644 vendor/github.com/Azure/go-ansiterm/SECURITY.md create mode 100644 vendor/github.com/Azure/go-ansiterm/constants.go create mode 100644 vendor/github.com/Azure/go-ansiterm/context.go create mode 100644 vendor/github.com/Azure/go-ansiterm/csi_entry_state.go create mode 100644 vendor/github.com/Azure/go-ansiterm/csi_param_state.go create mode 100644 vendor/github.com/Azure/go-ansiterm/escape_intermediate_state.go create mode 100644 vendor/github.com/Azure/go-ansiterm/escape_state.go create mode 100644 vendor/github.com/Azure/go-ansiterm/event_handler.go create mode 100644 vendor/github.com/Azure/go-ansiterm/ground_state.go create mode 100644 vendor/github.com/Azure/go-ansiterm/osc_string_state.go create mode 100644 vendor/github.com/Azure/go-ansiterm/parser.go create mode 100644 vendor/github.com/Azure/go-ansiterm/parser_action_helpers.go create mode 100644 vendor/github.com/Azure/go-ansiterm/parser_actions.go create mode 100644 vendor/github.com/Azure/go-ansiterm/states.go create mode 100644 vendor/github.com/Azure/go-ansiterm/utilities.go create mode 100644 vendor/github.com/Azure/go-ansiterm/winterm/ansi.go create mode 100644 vendor/github.com/Azure/go-ansiterm/winterm/api.go create mode 100644 vendor/github.com/Azure/go-ansiterm/winterm/attr_translation.go create mode 100644 vendor/github.com/Azure/go-ansiterm/winterm/cursor_helpers.go create mode 100644 vendor/github.com/Azure/go-ansiterm/winterm/erase_helpers.go create mode 100644 vendor/github.com/Azure/go-ansiterm/winterm/scroll_helper.go create mode 100644 vendor/github.com/Azure/go-ansiterm/winterm/utilities.go create mode 100644 vendor/github.com/Azure/go-ansiterm/winterm/win_event_handler.go create mode 100644 vendor/github.com/antlr4-go/antlr/v4/mutex.go create mode 100644 vendor/github.com/antlr4-go/antlr/v4/mutex_nomutex.go delete mode 100644 vendor/github.com/avast/retry-go/v4/.gitignore delete mode 100644 vendor/github.com/avast/retry-go/v4/.godocdown.tmpl delete mode 100644 vendor/github.com/avast/retry-go/v4/Makefile delete mode 100644 vendor/github.com/avast/retry-go/v4/README.md delete mode 100644 vendor/github.com/avast/retry-go/v4/VERSION delete mode 100644 vendor/github.com/avast/retry-go/v4/current.txt delete mode 100644 vendor/github.com/avast/retry-go/v4/generic.txt delete mode 100644 vendor/github.com/avast/retry-go/v4/options.go delete mode 100644 vendor/github.com/avast/retry-go/v4/retry.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/config/auth_scheme_preference.go create mode 100644 vendor/github.com/aws/aws-sdk-go/aws/awsutil/doc.go create mode 100644 vendor/github.com/aws/aws-sdk-go/aws/crr/doc.go create mode 100644 vendor/github.com/aws/aws-sdk-go/aws/request/doc.go create mode 100644 vendor/github.com/aws/smithy-go/transport/http/interceptor.go create mode 100644 vendor/github.com/aws/smithy-go/transport/http/interceptor_middleware.go delete mode 100644 vendor/github.com/fxamacker/cbor/v2/encode_map_go117.go create mode 100644 vendor/github.com/fxamacker/cbor/v2/omitzero_go124.go create mode 100644 vendor/github.com/fxamacker/cbor/v2/omitzero_pre_go124.go delete mode 100644 vendor/github.com/globocom/go-buffer/.gitignore delete mode 100644 vendor/github.com/globocom/go-buffer/.tool-versions delete mode 100644 vendor/github.com/globocom/go-buffer/LICENSE delete mode 100644 vendor/github.com/globocom/go-buffer/Makefile delete mode 100644 vendor/github.com/globocom/go-buffer/README.md delete mode 100644 vendor/github.com/globocom/go-buffer/buffer.go delete mode 100644 vendor/github.com/globocom/go-buffer/flusher.go delete mode 100644 vendor/github.com/globocom/go-buffer/gopher.png delete mode 100644 vendor/github.com/globocom/go-buffer/gopher.xcf delete mode 100644 vendor/github.com/globocom/go-buffer/options.go delete mode 100644 vendor/github.com/go-chi/chi/.travis.yml delete mode 100644 vendor/github.com/go-chi/chi/middleware/content_type.go delete mode 100644 vendor/github.com/go-chi/chi/middleware/profiler.go rename vendor/github.com/go-chi/chi/{ => v5}/.gitignore (100%) rename vendor/github.com/go-chi/chi/{ => v5}/CHANGELOG.md (51%) rename vendor/github.com/go-chi/chi/{ => v5}/CONTRIBUTING.md (58%) rename vendor/github.com/go-chi/chi/{ => v5}/LICENSE (100%) create mode 100644 vendor/github.com/go-chi/chi/v5/Makefile rename vendor/github.com/go-chi/chi/{ => v5}/README.md (61%) create mode 100644 vendor/github.com/go-chi/chi/v5/SECURITY.md rename vendor/github.com/go-chi/chi/{ => v5}/chain.go (94%) rename vendor/github.com/go-chi/chi/{ => v5}/chi.go (80%) rename vendor/github.com/go-chi/chi/{ => v5}/context.go (73%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/basic_auth.go (87%) create mode 100644 vendor/github.com/go-chi/chi/v5/middleware/clean_path.go rename vendor/github.com/go-chi/chi/{ => v5}/middleware/compress.go (87%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/content_charset.go (88%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/content_encoding.go (100%) create mode 100644 vendor/github.com/go-chi/chi/v5/middleware/content_type.go rename vendor/github.com/go-chi/chi/{ => v5}/middleware/get_head.go (97%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/heartbeat.go (87%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/logger.go (89%) create mode 100644 vendor/github.com/go-chi/chi/v5/middleware/maybe.go rename vendor/github.com/go-chi/chi/{ => v5}/middleware/middleware.go (100%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/nocache.go (83%) create mode 100644 vendor/github.com/go-chi/chi/v5/middleware/page_route.go create mode 100644 vendor/github.com/go-chi/chi/v5/middleware/path_rewrite.go create mode 100644 vendor/github.com/go-chi/chi/v5/middleware/profiler.go rename vendor/github.com/go-chi/chi/{ => v5}/middleware/realip.go (74%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/recoverer.go (78%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/request_id.go (100%) create mode 100644 vendor/github.com/go-chi/chi/v5/middleware/request_size.go rename vendor/github.com/go-chi/chi/{ => v5}/middleware/route_headers.go (67%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/strip.go (64%) create mode 100644 vendor/github.com/go-chi/chi/v5/middleware/sunset.go create mode 100644 vendor/github.com/go-chi/chi/v5/middleware/supress_notfound.go rename vendor/github.com/go-chi/chi/{ => v5}/middleware/terminal.go (100%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/throttle.go (80%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/timeout.go (72%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/url_format.go (55%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/value.go (80%) rename vendor/github.com/go-chi/chi/{ => v5}/middleware/wrap_writer.go (71%) rename vendor/github.com/go-chi/chi/{ => v5}/mux.go (83%) create mode 100644 vendor/github.com/go-chi/chi/v5/path_value.go create mode 100644 vendor/github.com/go-chi/chi/v5/path_value_fallback.go create mode 100644 vendor/github.com/go-chi/chi/v5/pattern.go create mode 100644 vendor/github.com/go-chi/chi/v5/pattern_fallback.go rename vendor/github.com/go-chi/chi/{ => v5}/tree.go (95%) delete mode 100644 vendor/github.com/go-jose/go-jose/v3/.gitignore delete mode 100644 vendor/github.com/go-jose/go-jose/v3/.golangci.yml delete mode 100644 vendor/github.com/go-jose/go-jose/v3/.travis.yml delete mode 100644 vendor/github.com/go-jose/go-jose/v3/CHANGELOG.md delete mode 100644 vendor/github.com/go-jose/go-jose/v3/CONTRIBUTING.md delete mode 100644 vendor/github.com/go-jose/go-jose/v3/README.md delete mode 100644 vendor/github.com/go-jose/go-jose/v3/SECURITY.md delete mode 100644 vendor/github.com/go-jose/go-jose/v3/asymmetric.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/cipher/cbc_hmac.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/cipher/concat_kdf.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/cipher/ecdh_es.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/cipher/key_wrap.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/crypter.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/doc.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/encoding.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/json/LICENSE delete mode 100644 vendor/github.com/go-jose/go-jose/v3/json/README.md delete mode 100644 vendor/github.com/go-jose/go-jose/v3/json/decode.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/json/encode.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/json/indent.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/json/scanner.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/json/stream.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/json/tags.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/jwe.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/jwk.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/jws.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/jwt/builder.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/jwt/claims.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/jwt/doc.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/jwt/errors.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/jwt/jwt.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/jwt/validation.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/opaque.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/shared.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/signing.go delete mode 100644 vendor/github.com/go-jose/go-jose/v3/symmetric.go rename vendor/github.com/{go-jose/go-jose/v3 => go-openapi/swag/cmdutils}/LICENSE (100%) create mode 100644 vendor/github.com/go-openapi/swag/cmdutils/cmd_utils.go create mode 100644 vendor/github.com/go-openapi/swag/cmdutils/doc.go create mode 100644 vendor/github.com/go-openapi/swag/cmdutils_iface.go create mode 100644 vendor/github.com/go-openapi/swag/conv/LICENSE create mode 100644 vendor/github.com/go-openapi/swag/conv/convert.go create mode 100644 vendor/github.com/go-openapi/swag/conv/convert_types.go create mode 100644 vendor/github.com/go-openapi/swag/conv/doc.go create mode 100644 vendor/github.com/go-openapi/swag/conv/format.go create mode 100644 vendor/github.com/go-openapi/swag/conv/sizeof.go create mode 100644 vendor/github.com/go-openapi/swag/conv/type_constraints.go create mode 100644 vendor/github.com/go-openapi/swag/conv_iface.go delete mode 100644 vendor/github.com/go-openapi/swag/convert.go delete mode 100644 vendor/github.com/go-openapi/swag/convert_types.go delete mode 100644 vendor/github.com/go-openapi/swag/errors.go create mode 100644 vendor/github.com/go-openapi/swag/fileutils/LICENSE create mode 100644 vendor/github.com/go-openapi/swag/fileutils/doc.go rename vendor/github.com/go-openapi/swag/{ => fileutils}/file.go (98%) rename vendor/github.com/go-openapi/swag/{ => fileutils}/path.go (94%) create mode 100644 vendor/github.com/go-openapi/swag/fileutils_iface.go delete mode 100644 vendor/github.com/go-openapi/swag/initialism_index.go delete mode 100644 vendor/github.com/go-openapi/swag/json.go create mode 100644 vendor/github.com/go-openapi/swag/jsonname/LICENSE create mode 100644 vendor/github.com/go-openapi/swag/jsonname/doc.go create mode 100644 vendor/github.com/go-openapi/swag/jsonname/name_provider.go create mode 100644 vendor/github.com/go-openapi/swag/jsonname_iface.go create mode 100644 vendor/github.com/go-openapi/swag/jsonutils/LICENSE create mode 100644 vendor/github.com/go-openapi/swag/jsonutils/concat.go create mode 100644 vendor/github.com/go-openapi/swag/jsonutils/doc.go create mode 100644 vendor/github.com/go-openapi/swag/jsonutils/json.go create mode 100644 vendor/github.com/go-openapi/swag/jsonutils/ordered_map.go create mode 100644 vendor/github.com/go-openapi/swag/jsonutils_iface.go create mode 100644 vendor/github.com/go-openapi/swag/loading/LICENSE create mode 100644 vendor/github.com/go-openapi/swag/loading/doc.go create mode 100644 vendor/github.com/go-openapi/swag/loading/errors.go create mode 100644 vendor/github.com/go-openapi/swag/loading/json.go rename vendor/github.com/go-openapi/swag/{ => loading}/loading.go (70%) create mode 100644 vendor/github.com/go-openapi/swag/loading/options.go create mode 100644 vendor/github.com/go-openapi/swag/loading/yaml.go create mode 100644 vendor/github.com/go-openapi/swag/loading_iface.go rename vendor/github.com/go-openapi/swag/{ => mangling}/BENCHMARK.md (53%) create mode 100644 vendor/github.com/go-openapi/swag/mangling/LICENSE create mode 100644 vendor/github.com/go-openapi/swag/mangling/doc.go create mode 100644 vendor/github.com/go-openapi/swag/mangling/initialism_index.go create mode 100644 vendor/github.com/go-openapi/swag/mangling/name_lexem.go create mode 100644 vendor/github.com/go-openapi/swag/mangling/name_mangler.go create mode 100644 vendor/github.com/go-openapi/swag/mangling/options.go create mode 100644 vendor/github.com/go-openapi/swag/mangling/pools.go rename vendor/github.com/go-openapi/swag/{ => mangling}/split.go (52%) create mode 100644 vendor/github.com/go-openapi/swag/mangling/string_bytes.go create mode 100644 vendor/github.com/go-openapi/swag/mangling/util.go create mode 100644 vendor/github.com/go-openapi/swag/mangling_iface.go delete mode 100644 vendor/github.com/go-openapi/swag/name_lexem.go create mode 100644 vendor/github.com/go-openapi/swag/netutils/LICENSE create mode 100644 vendor/github.com/go-openapi/swag/netutils/doc.go rename vendor/github.com/go-openapi/swag/{ => netutils}/net.go (85%) create mode 100644 vendor/github.com/go-openapi/swag/netutils_iface.go delete mode 100644 vendor/github.com/go-openapi/swag/string_bytes.go create mode 100644 vendor/github.com/go-openapi/swag/stringutils/LICENSE create mode 100644 vendor/github.com/go-openapi/swag/stringutils/collection_formats.go create mode 100644 vendor/github.com/go-openapi/swag/stringutils/doc.go create mode 100644 vendor/github.com/go-openapi/swag/stringutils/strings.go create mode 100644 vendor/github.com/go-openapi/swag/stringutils_iface.go create mode 100644 vendor/github.com/go-openapi/swag/typeutils/LICENSE create mode 100644 vendor/github.com/go-openapi/swag/typeutils/doc.go create mode 100644 vendor/github.com/go-openapi/swag/typeutils/types.go create mode 100644 vendor/github.com/go-openapi/swag/typeutils_iface.go delete mode 100644 vendor/github.com/go-openapi/swag/util.go delete mode 100644 vendor/github.com/go-openapi/swag/yaml.go create mode 100644 vendor/github.com/go-openapi/swag/yamlutils/LICENSE create mode 100644 vendor/github.com/go-openapi/swag/yamlutils/doc.go create mode 100644 vendor/github.com/go-openapi/swag/yamlutils/errors.go create mode 100644 vendor/github.com/go-openapi/swag/yamlutils/ordered_map.go create mode 100644 vendor/github.com/go-openapi/swag/yamlutils/yaml.go create mode 100644 vendor/github.com/go-openapi/swag/yamlutils_iface.go delete mode 100644 vendor/github.com/golang-jwt/jwt/v5/errors_go1_20.go delete mode 100644 vendor/github.com/golang-jwt/jwt/v5/errors_go_other.go create mode 100644 vendor/github.com/mailru/easyjson/.gitignore create mode 100644 vendor/github.com/mailru/easyjson/Makefile create mode 100644 vendor/github.com/mailru/easyjson/README.md create mode 100644 vendor/github.com/mailru/easyjson/helpers.go create mode 100644 vendor/github.com/mailru/easyjson/raw.go create mode 100644 vendor/github.com/mailru/easyjson/unknown_fields.go create mode 100644 vendor/github.com/moby/term/.gitignore create mode 100644 vendor/github.com/moby/term/LICENSE create mode 100644 vendor/github.com/moby/term/README.md create mode 100644 vendor/github.com/moby/term/ascii.go create mode 100644 vendor/github.com/moby/term/doc.go create mode 100644 vendor/github.com/moby/term/proxy.go create mode 100644 vendor/github.com/moby/term/term.go create mode 100644 vendor/github.com/moby/term/term_unix.go create mode 100644 vendor/github.com/moby/term/term_windows.go create mode 100644 vendor/github.com/moby/term/termios_bsd.go create mode 100644 vendor/github.com/moby/term/termios_nonbsd.go create mode 100644 vendor/github.com/moby/term/termios_unix.go create mode 100644 vendor/github.com/moby/term/termios_windows.go create mode 100644 vendor/github.com/moby/term/windows/ansi_reader.go create mode 100644 vendor/github.com/moby/term/windows/ansi_writer.go create mode 100644 vendor/github.com/moby/term/windows/console.go create mode 100644 vendor/github.com/moby/term/windows/doc.go create mode 100644 vendor/github.com/olekukonko/errors/chain.go create mode 100644 vendor/github.com/olekukonko/errors/inspect.go create mode 100644 vendor/github.com/prometheus/procfs/net_dev_snmp6.go create mode 100644 vendor/github.com/sigstore/cosign/v2/internal/auth/auth.go create mode 100644 vendor/github.com/sigstore/cosign/v2/internal/ui/spinner.go create mode 100644 vendor/github.com/sigstore/cosign/v2/pkg/cosign/bundle/sign.go rename vendor/github.com/{transparency-dev/tessera/internal/stream/otel.go => sigstore/cosign/v2/pkg/types/predicate.go} (72%) create mode 100644 vendor/github.com/sigstore/rekor-tiles/pkg/client/option.go create mode 100644 vendor/github.com/sigstore/rekor-tiles/pkg/client/transport.go create mode 100644 vendor/github.com/sigstore/rekor-tiles/pkg/client/write/write.go create mode 100644 vendor/github.com/sigstore/sigstore-go/pkg/sign/certificate.go create mode 100644 vendor/github.com/sigstore/sigstore-go/pkg/sign/content.go create mode 100644 vendor/github.com/sigstore/sigstore-go/pkg/sign/keys.go create mode 100644 vendor/github.com/sigstore/sigstore-go/pkg/sign/signer.go create mode 100644 vendor/github.com/sigstore/sigstore-go/pkg/sign/timestamping.go create mode 100644 vendor/github.com/sigstore/sigstore-go/pkg/sign/transparency.go create mode 100644 vendor/github.com/spf13/cobra/SECURITY.md create mode 100644 vendor/github.com/transparency-dev/formats/note/note_cosigv1.go create mode 100644 vendor/github.com/transparency-dev/formats/note/note_rfc6962.go create mode 100644 vendor/github.com/transparency-dev/formats/note/note_verifier.go rename vendor/github.com/transparency-dev/tessera/{dedupe.go => antispam.go} (100%) rename vendor/github.com/transparency-dev/tessera/{internal/stream => client}/stream.go (88%) create mode 100644 vendor/github.com/transparency-dev/tessera/internal/fetcher/fallback.go create mode 100644 vendor/github.com/transparency-dev/tessera/internal/future/future.go delete mode 100644 vendor/github.com/transparency-dev/tessera/internal/stream/follower.go create mode 100644 vendor/gitlab.com/gitlab-org/api/client-go/.releaserc.json create mode 100644 vendor/gitlab.com/gitlab-org/api/client-go/buf.gen.yaml create mode 100644 vendor/gitlab.com/gitlab-org/api/client-go/buf.lock create mode 100644 vendor/gitlab.com/gitlab-org/api/client-go/buf.yaml create mode 100644 vendor/gitlab.com/gitlab-org/api/client-go/integrations.go delete mode 100644 vendor/gitlab.com/gitlab-org/api/client-go/release.config.mjs create mode 100644 vendor/go.opentelemetry.io/otel/SECURITY-INSIGHTS.yml create mode 100644 vendor/go.opentelemetry.io/otel/semconv/v1.34.0/error_type.go create mode 100644 vendor/go.opentelemetry.io/otel/semconv/v1.37.0/MIGRATION.md create mode 100644 vendor/go.opentelemetry.io/otel/semconv/v1.37.0/README.md create mode 100644 vendor/go.opentelemetry.io/otel/semconv/v1.37.0/attribute_group.go create mode 100644 vendor/go.opentelemetry.io/otel/semconv/v1.37.0/doc.go create mode 100644 vendor/go.opentelemetry.io/otel/semconv/v1.37.0/error_type.go create mode 100644 vendor/go.opentelemetry.io/otel/semconv/v1.37.0/exception.go create mode 100644 vendor/go.opentelemetry.io/otel/semconv/v1.37.0/schema.go create mode 100644 vendor/go.opentelemetry.io/otel/trace/hex.go create mode 100644 vendor/go.yaml.in/yaml/v3/LICENSE rename vendor/{k8s.io/client-go/listers/networking/v1alpha1/expansion_generated.go => go.yaml.in/yaml/v3/NOTICE} (58%) create mode 100644 vendor/go.yaml.in/yaml/v3/README.md create mode 100644 vendor/go.yaml.in/yaml/v3/apic.go create mode 100644 vendor/go.yaml.in/yaml/v3/decode.go create mode 100644 vendor/go.yaml.in/yaml/v3/emitterc.go create mode 100644 vendor/go.yaml.in/yaml/v3/encode.go create mode 100644 vendor/go.yaml.in/yaml/v3/parserc.go create mode 100644 vendor/go.yaml.in/yaml/v3/readerc.go create mode 100644 vendor/go.yaml.in/yaml/v3/resolve.go create mode 100644 vendor/go.yaml.in/yaml/v3/scannerc.go create mode 100644 vendor/go.yaml.in/yaml/v3/sorter.go create mode 100644 vendor/go.yaml.in/yaml/v3/writerc.go create mode 100644 vendor/go.yaml.in/yaml/v3/yaml.go create mode 100644 vendor/go.yaml.in/yaml/v3/yamlh.go create mode 100644 vendor/go.yaml.in/yaml/v3/yamlprivateh.go delete mode 100644 vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go delete mode 100644 vendor/golang.org/x/tools/internal/modindex/types.go create mode 100644 vendor/k8s.io/api/extensions/v1beta1/zz_generated.validations.go delete mode 100644 vendor/k8s.io/api/networking/v1alpha1/generated.pb.go delete mode 100644 vendor/k8s.io/api/networking/v1alpha1/generated.proto delete mode 100644 vendor/k8s.io/api/networking/v1alpha1/types.go delete mode 100644 vendor/k8s.io/api/networking/v1alpha1/types_swagger_doc_generated.go delete mode 100644 vendor/k8s.io/api/networking/v1alpha1/well_known_labels.go delete mode 100644 vendor/k8s.io/api/networking/v1alpha1/zz_generated.deepcopy.go delete mode 100644 vendor/k8s.io/api/networking/v1alpha1/zz_generated.prerelease-lifecycle.go create mode 100644 vendor/k8s.io/api/resource/v1/devicetaint.go rename vendor/k8s.io/api/{networking/v1alpha1 => resource/v1}/doc.go (83%) create mode 100644 vendor/k8s.io/api/resource/v1/generated.pb.go create mode 100644 vendor/k8s.io/api/resource/v1/generated.proto rename vendor/k8s.io/api/{networking/v1alpha1 => resource/v1}/register.go (54%) create mode 100644 vendor/k8s.io/api/resource/v1/types.go create mode 100644 vendor/k8s.io/api/resource/v1/types_swagger_doc_generated.go create mode 100644 vendor/k8s.io/api/resource/v1/zz_generated.deepcopy.go create mode 100644 vendor/k8s.io/api/resource/v1/zz_generated.prerelease-lifecycle.go create mode 100644 vendor/k8s.io/api/resource/v1alpha3/devicetaint.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/safe/safe.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/README.md create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/common.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/constraints/constraints.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/content/errors.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/doc.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/each.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/enum.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/equality.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/immutable.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/item.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/limits.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/required.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/subfield.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/testing.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/union.go create mode 100644 vendor/k8s.io/apimachinery/pkg/api/validate/zeroorone.go delete mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/validation/validation.go delete mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/custom.go create mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/cbor/internal/modes/transcoding.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/diff/cmp.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/diff/legacy_diff.go create mode 100644 vendor/k8s.io/apimachinery/pkg/util/managedfields/internal/runtimetypeconverter.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/applyconfiguration.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/jsonpatch.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingadmissionpolicy.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingadmissionpolicybinding.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingadmissionpolicybindingspec.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutatingadmissionpolicyspec.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1/mutation.go rename vendor/k8s.io/client-go/applyconfigurations/{networking/v1alpha1/servicecidr.go => certificates/v1alpha1/podcertificaterequest.go} (62%) create mode 100644 vendor/k8s.io/client-go/applyconfigurations/certificates/v1alpha1/podcertificaterequestspec.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/certificates/v1alpha1/podcertificaterequeststatus.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/containerextendedresourcerequest.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/containerrestartrule.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/containerrestartruleonexitcodes.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/filekeyselector.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/podcertificateprojection.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/core/v1/podextendedresourceclaimstatus.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/ipaddress.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/ipaddressspec.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/parentreference.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidrspec.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/servicecidrstatus.go rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/allocateddevicestatus.go (85%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/allocationresult.go (66%) create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1/capacityrequestpolicy.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1/capacityrequestpolicyrange.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1/capacityrequirements.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1/celdeviceselector.go rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/counter.go (98%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/counterset.go (99%) create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1/device.go rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/deviceallocationconfiguration.go (89%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/deviceallocationresult.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/deviceattribute.go (99%) create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1/devicecapacity.go rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/deviceclaim.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/deviceclaimconfiguration.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/deviceclass.go (86%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/deviceclassconfiguration.go (98%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/deviceclassspec.go (73%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/deviceconfiguration.go (98%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/deviceconstraint.go (69%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/devicecounterconsumption.go (99%) create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1/devicerequest.go rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/devicerequestallocationresult.go (52%) create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1/deviceselector.go rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/devicesubrequest.go (76%) create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1/devicetaint.go rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/devicetoleration.go (82%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3/devicerequest.go => v1/exactdevicerequest.go} (52%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/networkdevicedata.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/opaquedeviceconfiguration.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/resourceclaim.go (86%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/resourceclaimconsumerreference.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/resourceclaimspec.go (98%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/resourceclaimstatus.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/resourceclaimtemplate.go (86%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/resourceclaimtemplatespec.go (91%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/resourcepool.go (99%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/resourceslice.go (86%) rename vendor/k8s.io/client-go/applyconfigurations/resource/{v1alpha3 => v1}/resourceslicespec.go (84%) delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/basicdevice.go delete mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1alpha3/device.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/capacityrequestpolicy.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/capacityrequestpolicyrange.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1beta1/capacityrequirements.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1beta2/capacityrequestpolicy.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1beta2/capacityrequestpolicyrange.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/resource/v1beta2/capacityrequirements.go create mode 100644 vendor/k8s.io/client-go/applyconfigurations/storage/v1/volumeattributesclass.go create mode 100644 vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingadmissionpolicy.go create mode 100644 vendor/k8s.io/client-go/informers/admissionregistration/v1beta1/mutatingadmissionpolicybinding.go create mode 100644 vendor/k8s.io/client-go/informers/certificates/v1alpha1/podcertificaterequest.go delete mode 100644 vendor/k8s.io/client-go/informers/networking/v1alpha1/interface.go delete mode 100644 vendor/k8s.io/client-go/informers/networking/v1alpha1/ipaddress.go delete mode 100644 vendor/k8s.io/client-go/informers/networking/v1alpha1/servicecidr.go rename vendor/k8s.io/client-go/informers/resource/{v1alpha3 => v1}/deviceclass.go (71%) create mode 100644 vendor/k8s.io/client-go/informers/resource/v1/interface.go rename vendor/k8s.io/client-go/informers/resource/{v1alpha3 => v1}/resourceclaim.go (71%) rename vendor/k8s.io/client-go/informers/resource/{v1alpha3 => v1}/resourceclaimtemplate.go (70%) rename vendor/k8s.io/client-go/informers/resource/{v1alpha3 => v1}/resourceslice.go (71%) create mode 100644 vendor/k8s.io/client-go/informers/storage/v1/volumeattributesclass.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_mutatingadmissionpolicy.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_mutatingadmissionpolicybinding.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/mutatingadmissionpolicy.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/mutatingadmissionpolicybinding.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/fake/fake_podcertificaterequest.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1alpha1/podcertificaterequest.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_ipaddress.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_servicecidr.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/ipaddress.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/servicecidr.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1/deviceclass.go rename vendor/k8s.io/client-go/kubernetes/typed/{networking/v1alpha1 => resource/v1}/doc.go (97%) rename vendor/k8s.io/client-go/kubernetes/typed/{networking/v1alpha1 => resource/v1}/fake/doc.go (100%) create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1/fake/fake_deviceclass.go rename vendor/k8s.io/client-go/kubernetes/typed/{networking/v1alpha1/fake/fake_networking_client.go => resource/v1/fake/fake_resource_client.go} (58%) create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1/fake/fake_resourceclaim.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1/fake/fake_resourceclaimtemplate.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1/fake/fake_resourceslice.go rename vendor/k8s.io/client-go/kubernetes/typed/{networking/v1alpha1 => resource/v1}/generated_expansion.go (77%) rename vendor/k8s.io/client-go/kubernetes/typed/{networking/v1alpha1/networking_client.go => resource/v1/resource_client.go} (56%) create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1/resourceclaim.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1/resourceclaimtemplate.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1/resourceslice.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/deviceclass.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_deviceclass.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resourceclaim.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resourceclaimtemplate.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/fake/fake_resourceslice.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resourceclaim.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resourceclaimtemplate.go delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/resource/v1alpha3/resourceslice.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_volumeattributesclass.go create mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/volumeattributesclass.go create mode 100644 vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/mutatingadmissionpolicy.go create mode 100644 vendor/k8s.io/client-go/listers/admissionregistration/v1beta1/mutatingadmissionpolicybinding.go create mode 100644 vendor/k8s.io/client-go/listers/certificates/v1alpha1/podcertificaterequest.go delete mode 100644 vendor/k8s.io/client-go/listers/networking/v1alpha1/ipaddress.go delete mode 100644 vendor/k8s.io/client-go/listers/networking/v1alpha1/servicecidr.go rename vendor/k8s.io/client-go/listers/resource/{v1alpha3 => v1}/deviceclass.go (78%) create mode 100644 vendor/k8s.io/client-go/listers/resource/v1/expansion_generated.go rename vendor/k8s.io/client-go/listers/resource/{v1alpha3 => v1}/resourceclaim.go (79%) rename vendor/k8s.io/client-go/listers/resource/{v1alpha3 => v1}/resourceclaimtemplate.go (78%) rename vendor/k8s.io/client-go/listers/resource/{v1alpha3 => v1}/resourceslice.go (77%) create mode 100644 vendor/k8s.io/client-go/listers/storage/v1/volumeattributesclass.go delete mode 100644 vendor/k8s.io/client-go/util/consistencydetector/list_data_consistency_detector.go delete mode 100644 vendor/k8s.io/client-go/util/consistencydetector/watch_list_data_consistency_detector.go delete mode 100644 vendor/k8s.io/client-go/util/watchlist/watch_list.go create mode 100644 vendor/k8s.io/gengo/v2/codetags/extractor.go create mode 100644 vendor/k8s.io/gengo/v2/codetags/parser.go create mode 100644 vendor/k8s.io/gengo/v2/codetags/scanner.go create mode 100644 vendor/k8s.io/gengo/v2/codetags/types.go rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/LICENSE (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/fieldpath/doc.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/fieldpath/element.go (78%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/fieldpath/fromvalue.go (98%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/fieldpath/managers.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/fieldpath/path.go (98%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/fieldpath/pathelementmap.go (98%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/fieldpath/serialize-pe.go (84%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/fieldpath/serialize.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/fieldpath/set.go (95%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/merge/conflict.go (98%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/merge/update.go (99%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/schema/doc.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/schema/elements.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/schema/equals.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/schema/schemaschema.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/typed/compare.go (98%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/typed/doc.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/typed/helpers.go (93%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/typed/merge.go (98%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/typed/parser.go (97%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/typed/reconcile_schema.go (98%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/typed/remove.go (97%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/typed/tofieldset.go (96%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/typed/typed.go (98%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/typed/validate.go (96%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/allocator.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/doc.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/fields.go (92%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/jsontagutil.go (57%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/list.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/listreflect.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/listunstructured.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/map.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/mapreflect.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/mapunstructured.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/reflectcache.go (97%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/scalar.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/structreflect.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/value.go (94%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/valuereflect.go (100%) rename vendor/sigs.k8s.io/structured-merge-diff/{v4 => v6}/value/valueunstructured.go (100%) delete mode 100644 vendor/sigs.k8s.io/yaml/goyaml.v2/README.md delete mode 100644 vendor/sigs.k8s.io/yaml/goyaml.v2/yaml_aliases.go diff --git a/go.mod b/go.mod index e35a82f36e..fcaf9c361e 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module github.com/tektoncd/chains -go 1.24.3 - -toolchain go1.24.6 +go 1.24.6 require ( cloud.google.com/go/compute/metadata v0.8.0 @@ -23,15 +21,15 @@ require ( github.com/opencontainers/go-digest v1.0.0 github.com/pkg/errors v0.9.1 github.com/secure-systems-lab/go-securesystemslib v0.9.1 - github.com/sigstore/cosign/v2 v2.5.3 - github.com/sigstore/rekor v1.4.0 - github.com/sigstore/sigstore v1.9.5 + github.com/sigstore/cosign/v2 v2.6.0 + github.com/sigstore/rekor v1.4.2 + github.com/sigstore/sigstore v1.9.6-0.20250729224751-181c5d3339b3 github.com/sigstore/sigstore/pkg/signature/kms/aws v1.9.5 github.com/sigstore/sigstore/pkg/signature/kms/azure v1.9.5 github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.9.6-0.20250729224751-181c5d3339b3 github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.9.5 github.com/spiffe/go-spiffe/v2 v2.6.0 - github.com/stretchr/testify v1.11.0 + github.com/stretchr/testify v1.11.1 github.com/tektoncd/pipeline v1.3.1 github.com/tektoncd/plumbing v0.0.0-20250115133002-f515628dffea go.opencensus.io v0.24.0 @@ -39,13 +37,13 @@ require ( gocloud.dev v0.43.0 gocloud.dev/docstore/mongodocstore v0.43.0 gocloud.dev/pubsub/kafkapubsub v0.43.0 - golang.org/x/crypto v0.41.0 - golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 + golang.org/x/crypto v0.42.0 + golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.7 - k8s.io/api v0.33.4 - k8s.io/apimachinery v0.33.4 - k8s.io/client-go v0.33.4 + google.golang.org/protobuf v1.36.9 + k8s.io/api v0.34.1 + k8s.io/apimachinery v0.34.1 + k8s.io/client-go v0.34.1 k8s.io/code-generator v0.33.4 knative.dev/pkg v0.0.0-20250415155312-ed3e2158b883 sigs.k8s.io/yaml v1.6.0 @@ -63,7 +61,7 @@ require ( cloud.google.com/go/kms v1.22.0 // indirect cloud.google.com/go/longrunning v0.6.7 // indirect cloud.google.com/go/monitoring v1.24.2 // indirect - cloud.google.com/go/spanner v1.83.0 // indirect + cloud.google.com/go/spanner v1.84.1 // indirect contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d // indirect contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect github.com/4meepo/tagalign v1.4.2 // indirect @@ -73,11 +71,12 @@ require ( github.com/Antonboom/nilnil v1.0.1 // indirect github.com/Antonboom/testifylint v1.5.2 // indirect github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.3.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.2 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.11.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect + github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.4.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0 // indirect + github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.29 // indirect github.com/Azure/go-autorest/autorest/adal v0.9.23 // indirect @@ -116,29 +115,28 @@ require ( github.com/alingse/asasalint v0.0.11 // indirect github.com/alingse/nilnesserr v0.1.2 // indirect github.com/aliyun/credentials-go v1.3.2 // indirect - github.com/antlr4-go/antlr/v4 v4.13.0 // indirect + github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/ashanbrown/forbidigo v1.6.0 // indirect github.com/ashanbrown/makezero v1.2.0 // indirect - github.com/avast/retry-go/v4 v4.6.1 // indirect - github.com/aws/aws-sdk-go v1.55.7 // indirect - github.com/aws/aws-sdk-go-v2 v1.36.5 // indirect - github.com/aws/aws-sdk-go-v2/config v1.29.17 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.70 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 // indirect + github.com/aws/aws-sdk-go v1.55.8 // indirect + github.com/aws/aws-sdk-go-v2 v1.38.1 // indirect + github.com/aws/aws-sdk-go-v2/config v1.31.3 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.18.7 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.4 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.4 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.4 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ecr v1.40.3 // indirect - github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.31.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 // indirect - github.com/aws/aws-sdk-go-v2/service/kms v1.41.2 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 // indirect - github.com/aws/smithy-go v1.22.4 // indirect - github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.9.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ecr v1.45.1 // indirect + github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.33.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.4 // indirect + github.com/aws/aws-sdk-go-v2/service/kms v1.44.2 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.28.2 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.38.0 // indirect + github.com/aws/smithy-go v1.22.5 // indirect + github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.10.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bkielbasa/cyclop v1.2.3 // indirect github.com/blang/semver v3.5.1+incompatible // indirect @@ -149,16 +147,16 @@ require ( github.com/bombsimon/wsl/v4 v4.5.0 // indirect github.com/breml/bidichk v0.3.2 // indirect github.com/breml/errchkjson v0.4.0 // indirect - github.com/buildkite/agent/v3 v3.102.1 // indirect - github.com/buildkite/go-pipeline v0.14.0 // indirect + github.com/buildkite/agent/v3 v3.104.0 // indirect + github.com/buildkite/go-pipeline v0.15.0 // indirect github.com/buildkite/interpolate v0.1.5 // indirect - github.com/buildkite/roko v1.3.1 // indirect + github.com/buildkite/roko v1.4.0 // indirect github.com/butuzov/ireturn v0.3.1 // indirect github.com/butuzov/mirror v1.3.0 // indirect github.com/catenacyber/perfsprint v0.8.2 // indirect github.com/ccojocar/zxcvbn-go v1.0.2 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect - github.com/cenkalti/backoff/v5 v5.0.2 // indirect + github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charithe/durationcheck v0.0.10 // indirect @@ -187,7 +185,7 @@ require ( github.com/eapache/go-xerial-snappy v0.0.0-20230731223053-c322873962e3 // indirect github.com/eapache/queue v1.1.0 // indirect github.com/edwarnicke/gitoid v0.0.0-20220710194850-1be5bfda1f9d // indirect - github.com/emicklei/go-restful/v3 v3.12.1 // indirect + github.com/emicklei/go-restful/v3 v3.12.2 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect @@ -197,27 +195,36 @@ require ( github.com/fatih/structtag v1.2.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/firefart/nonamedreturns v1.0.5 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect github.com/ghostiam/protogetter v0.3.9 // indirect - github.com/globocom/go-buffer v1.2.2 // indirect - github.com/go-chi/chi v4.1.2+incompatible // indirect + github.com/go-chi/chi/v5 v5.2.3 // indirect github.com/go-critic/go-critic v0.12.0 // indirect - github.com/go-jose/go-jose/v3 v3.0.4 // indirect github.com/go-jose/go-jose/v4 v4.1.2 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/analysis v0.23.0 // indirect - github.com/go-openapi/errors v0.22.1 // indirect + github.com/go-openapi/errors v0.22.2 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect github.com/go-openapi/loads v0.22.0 // indirect github.com/go-openapi/runtime v0.28.0 // indirect github.com/go-openapi/spec v0.21.0 // indirect github.com/go-openapi/strfmt v0.23.0 // indirect - github.com/go-openapi/swag v0.23.1 // indirect + github.com/go-openapi/swag v0.24.1 // indirect + github.com/go-openapi/swag/cmdutils v0.24.0 // indirect + github.com/go-openapi/swag/conv v0.24.0 // indirect + github.com/go-openapi/swag/fileutils v0.24.0 // indirect + github.com/go-openapi/swag/jsonname v0.24.0 // indirect + github.com/go-openapi/swag/jsonutils v0.24.0 // indirect + github.com/go-openapi/swag/loading v0.24.0 // indirect + github.com/go-openapi/swag/mangling v0.24.0 // indirect + github.com/go-openapi/swag/netutils v0.24.0 // indirect + github.com/go-openapi/swag/stringutils v0.24.0 // indirect + github.com/go-openapi/swag/typeutils v0.24.0 // indirect + github.com/go-openapi/swag/yamlutils v0.24.0 // indirect github.com/go-openapi/validate v0.24.0 // indirect github.com/go-toolsmith/astcast v1.1.0 // indirect github.com/go-toolsmith/astcopy v1.1.0 // indirect @@ -232,7 +239,7 @@ require ( github.com/gofrs/flock v0.12.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v4 v4.5.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.3 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v1.0.0 // indirect @@ -243,9 +250,9 @@ require ( github.com/golangci/plugin-module-register v0.1.1 // indirect github.com/golangci/revgrep v0.8.0 // indirect github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect - github.com/google/cel-go v0.26.0 // indirect + github.com/google/cel-go v0.26.1 // indirect github.com/google/certificate-transparency-go v1.3.2 // indirect - github.com/google/gnostic-models v0.6.9 // indirect + github.com/google/gnostic-models v0.7.0 // indirect github.com/google/go-containerregistry/pkg/authn/kubernetes v0.0.0-20240108195214-a0658aa1d0cc // indirect github.com/google/go-github/v73 v73.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect @@ -260,7 +267,7 @@ require ( github.com/gostaticanalysis/comment v1.5.0 // indirect github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect github.com/gostaticanalysis/nilerr v0.1.1 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect @@ -321,8 +328,9 @@ require ( github.com/miekg/pkcs11 v1.1.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c // indirect + github.com/moby/term v0.5.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/montanaflynn/stats v0.7.1 // indirect github.com/moricho/tparallel v0.3.2 // indirect github.com/mozillazg/docker-credential-acr-helper v0.4.0 // indirect @@ -334,9 +342,9 @@ require ( github.com/nunnatsa/ginkgolinter v0.19.1 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/oleiade/reflections v1.1.0 // indirect - github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 // indirect - github.com/olekukonko/ll v0.0.8 // indirect - github.com/olekukonko/tablewriter v1.0.8 // indirect + github.com/olekukonko/errors v1.1.0 // indirect + github.com/olekukonko/ll v0.0.9 // indirect + github.com/olekukonko/tablewriter v1.0.9 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/openzipkin/zipkin-go v0.4.3 // indirect @@ -347,10 +355,10 @@ require ( github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/polyfloyd/go-errorlint v1.7.1 // indirect - github.com/prometheus/client_golang v1.22.0 // indirect + github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.63.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/prometheus/statsd_exporter v0.22.7 // indirect github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect @@ -376,9 +384,9 @@ require ( github.com/shibumi/go-pathspec v1.3.0 // indirect github.com/sigstore/fulcio v1.7.1 // indirect github.com/sigstore/protobuf-specs v0.5.0 // indirect - github.com/sigstore/rekor-tiles v0.1.7-0.20250624231741-98cd4a77300f // indirect - github.com/sigstore/sigstore-go v1.1.0 // indirect - github.com/sigstore/timestamp-authority v1.2.8 // indirect + github.com/sigstore/rekor-tiles v0.1.11 // indirect + github.com/sigstore/sigstore-go v1.1.2 // indirect + github.com/sigstore/timestamp-authority v1.2.9 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/sivchari/containedctx v1.0.3 // indirect github.com/sivchari/tenv v1.12.1 // indirect @@ -388,13 +396,13 @@ require ( github.com/sourcegraph/go-diff v0.7.0 // indirect github.com/spf13/afero v1.14.0 // indirect github.com/spf13/cast v1.8.0 // indirect - github.com/spf13/cobra v1.9.1 // indirect - github.com/spf13/pflag v1.0.7 // indirect + github.com/spf13/cobra v1.10.1 // indirect + github.com/spf13/pflag v1.0.10 // indirect github.com/spf13/viper v1.20.1 // indirect github.com/src-d/gcfg v1.4.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect - github.com/stoewer/go-strcase v1.3.0 // indirect + github.com/stoewer/go-strcase v1.3.1 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect @@ -411,7 +419,7 @@ require ( github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect github.com/transparency-dev/formats v0.0.0-20250421220931-bb8ad4d07c26 // indirect github.com/transparency-dev/merkle v0.0.2 // indirect - github.com/transparency-dev/tessera v0.2.1-0.20250610150926-8ee4e93b2823 // indirect + github.com/transparency-dev/tessera v1.0.0-rc3 // indirect github.com/ultraware/funlen v0.2.0 // indirect github.com/ultraware/whitespace v0.2.0 // indirect github.com/uudashr/gocognit v1.2.0 // indirect @@ -428,37 +436,38 @@ require ( github.com/ykadowak/zerologlint v0.1.5 // indirect github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect gitlab.com/bosi/decorder v0.4.2 // indirect - gitlab.com/gitlab-org/api/client-go v0.134.0 // indirect + gitlab.com/gitlab-org/api/client-go v0.143.3 // indirect go-simpler.org/musttag v0.13.0 // indirect go-simpler.org/sloglint v0.9.0 // indirect go.mongodb.org/mongo-driver v1.17.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.37.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.38.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 // indirect - go.opentelemetry.io/otel v1.37.0 // indirect - go.opentelemetry.io/otel/metric v1.37.0 // indirect - go.opentelemetry.io/otel/sdk v1.37.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect - go.opentelemetry.io/otel/trace v1.37.0 // indirect + go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/sdk v1.38.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect - golang.org/x/mod v0.26.0 // indirect + golang.org/x/mod v0.28.0 // indirect golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/term v0.34.0 // indirect - golang.org/x/text v0.28.0 // indirect + golang.org/x/oauth2 v0.31.0 // indirect + golang.org/x/sync v0.17.0 // indirect + golang.org/x/sys v0.36.0 // indirect + golang.org/x/term v0.35.0 // indirect + golang.org/x/text v0.29.0 // indirect golang.org/x/time v0.12.0 // indirect - golang.org/x/tools v0.35.0 // indirect + golang.org/x/tools v0.36.0 // indirect golang.org/x/tools/go/expect v0.1.1-deprecated // indirect golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect - google.golang.org/api v0.247.0 // indirect + google.golang.org/api v0.248.0 // indirect google.golang.org/genproto v0.0.0-20250715232539-7130f93afb79 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect @@ -472,16 +481,16 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect honnef.co/go/tools v0.6.1 // indirect k8s.io/apiextensions-apiserver v0.32.6 // indirect - k8s.io/gengo/v2 v2.0.0-20250207200755-1244d31929d7 // indirect + k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect - k8s.io/utils v0.0.0-20241210054802-24370beab758 // indirect + k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect + k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect mvdan.cc/gofumpt v0.7.0 // indirect mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect sigs.k8s.io/randfill v1.0.0 // indirect - sigs.k8s.io/release-utils v0.12.0 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect + sigs.k8s.io/release-utils v0.12.1 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect ) // Replace glog to fix flag collision between klog and glog. diff --git a/go.sum b/go.sum index f516e695b1..26c4069313 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ 4d63.com/gocheckcompilerdirectives v1.3.0/go.mod h1:ofsJ4zx2QAuIP/NO/NAh1ig6R1Fb18/GI7RVMwz7kAY= 4d63.com/gochecknoglobals v0.2.2 h1:H1vdnwnMaZdQW/N+NrkT1SZMTBmcwHe9Vq8lJcYYTtU= 4d63.com/gochecknoglobals v0.2.2/go.mod h1:lLxwTQjL5eIesRbvnzIP3jZtG140FnTdz+AlMa+ogt0= +al.essio.dev/pkg/shellescape v1.6.0 h1:NxFcEqzFSEVCGN2yq7Huv/9hyCEGVa/TncnOOBBeXHA= +al.essio.dev/pkg/shellescape v1.6.0/go.mod h1:6sIqp7X2P6mThCQ7twERpZTuigpr6KbZWtls1U8I890= cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= @@ -449,8 +451,10 @@ cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcd cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= -cloud.google.com/go/pubsub v1.49.0 h1:5054IkbslnrMCgA2MAEPcsN3Ky+AyMpEZcii/DoySPo= -cloud.google.com/go/pubsub v1.49.0/go.mod h1:K1FswTWP+C1tI/nfi3HQecoVeFvL4HUOB1tdaNXKhUY= +cloud.google.com/go/pubsub v1.50.0 h1:hnYpOIxVlgVD1Z8LN7est4DQZK3K6tvZNurZjIVjUe0= +cloud.google.com/go/pubsub v1.50.0/go.mod h1:Di2Y+nqXBpIS+dXUEJPQzLh8PbIQZMLE9IVUFhf2zmM= +cloud.google.com/go/pubsub/v2 v2.0.0 h1:0qS6mRJ41gD1lNmM/vdm6bR7DQu6coQcVwD+VPf0Bz0= +cloud.google.com/go/pubsub/v2 v2.0.0/go.mod h1:0aztFxNzVQIRSZ8vUr79uH2bS3jwLebwK6q1sgEub+E= cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= @@ -540,8 +544,8 @@ cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+ cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= -cloud.google.com/go/spanner v1.83.0 h1:AH3QIoSIa01l3WbeTppkwCEYFNK1AER6drcYhPmwhxY= -cloud.google.com/go/spanner v1.83.0/go.mod h1:QSWcjxszT0WRHNd8zyGI0WctrYA1N7j0yTFsWyol9Yw= +cloud.google.com/go/spanner v1.84.1 h1:ShH4Y3YeDtmHa55dFiSS3YtQ0dmCuP0okfAoHp/d68w= +cloud.google.com/go/spanner v1.84.1/go.mod h1:3GMEIjOcXINJSvb42H3M6TdlGCDzaCFpiiNQpjHPlCM= cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= @@ -634,10 +638,6 @@ contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d h contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d/go.mod h1:IshRmMJBhDfFj5Y67nVhMYTTIze91RUeT73ipWKs/GY= contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg= contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9fpw1KeYcjrnC1J8B+JKjsZyRQ= -cuelabs.dev/go/oci/ociregistry v0.0.0-20241125120445-2c00c104c6e1 h1:mRwydyTyhtRX2wXS3mqYWzR2qlv6KsmoKXmlz5vInjg= -cuelabs.dev/go/oci/ociregistry v0.0.0-20241125120445-2c00c104c6e1/go.mod h1:5A4xfTzHTXfeVJBU6RAUf+QrlfTCW+017q/QiW+sMLg= -cuelang.org/go v0.12.1 h1:5I+zxmXim9MmiN2tqRapIqowQxABv2NKTgbOspud1Eo= -cuelang.org/go v0.12.1/go.mod h1:B4+kjvGGQnbkz+GuAv1dq/R308gTkp0sO28FdMrJ2Kw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= @@ -663,18 +663,20 @@ github.com/Antonboom/testifylint v1.5.2 h1:4s3Xhuv5AvdIgbd8wOOEeo0uZG7PbDKQyKY5l github.com/Antonboom/testifylint v1.5.2/go.mod h1:vxy8VJ0bc6NavlYqjZfmp6EfqXMtBgQ4+mhCojwC1P8= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 h1:Wc1ml6QlJs2BHQ/9Bqu1jiyggbsSjramq2oUmp5WeIo= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.2 h1:Hr5FTipp7SL07o2FvoVOX9HRiRH3CR3Mj8pxqCcdD5A= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.2/go.mod h1:QyVsSSN64v5TGltphKLQ2sQxe4OBQg0J1eKRcVBnfgE= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.11.0 h1:MhRfI58HblXzCtWEZCO0feHs8LweePB3s90r7WaR1KU= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.11.0/go.mod h1:okZ+ZURbArNdlJ+ptXoyHNuOETzOl1Oww19rm8I2WLA= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.3.1 h1:Wgf5rZba3YZqeTNJPtvqZoBu1sBN/L4sry+u2U3Y75w= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.3.1/go.mod h1:xxCBG/f/4Vbmh2XQJBsOmNdxWUY5j/s27jujKPbQf14= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.1 h1:bFWuoEKg+gImo7pvkiQEFAc8ocibADgXeiLAxWhWmkI= -github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.1/go.mod h1:Vih/3yc6yac2JzU4hzpaDupBJP0Flaia9rXXrU8xyww= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.4.0 h1:E4MgwLBGeVB5f2MdcIVD3ELVAWpr+WD6MUe1i+tM/PA= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.4.0/go.mod h1:Y2b/1clN4zsAoUd/pgNAQHjLDnTis/6ROkUfyob6psM= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0 h1:nCYfgcSyHZXJI8J0IWE5MsCGlb2xp9fJiXyxWgmOFg4= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0/go.mod h1:ucUjca2JtSZboY8IoUqyQyuuXvwbMBVwFOm0vdQPNhA= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc= @@ -735,8 +737,6 @@ github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsu github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= github.com/ThalesIgnite/crypto11 v1.2.5 h1:1IiIIEqYmBvUYFeMnHqRft4bwf/O36jryEUpY+9ef8E= github.com/ThalesIgnite/crypto11 v1.2.5/go.mod h1:ILDKtnCKiQ7zRoNxcp36Y1ZR8LBPmR2E23+wTQe/MlE= -github.com/agnivade/levenshtein v1.2.1 h1:EHBY3UOn1gwdy/VbFwgo4cxecRznFk7fKWN1KOX7eoM= -github.com/agnivade/levenshtein v1.2.1/go.mod h1:QVVI16kDrtSuwcpd0p1+xMC6Z/VfhtCyDIjcwga4/DU= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= @@ -755,8 +755,6 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVKJUX0= -github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30= github.com/alexkohler/nakedret/v2 v2.0.5 h1:fP5qLgtwbx9EJE8dGEERT02YwS8En4r9nnZ71RK+EVU= github.com/alexkohler/nakedret/v2 v2.0.5/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= @@ -810,8 +808,8 @@ github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYU github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= -github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= +github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= +github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= @@ -823,44 +821,42 @@ github.com/ashanbrown/forbidigo v1.6.0 h1:D3aewfM37Yb3pxHujIPSpTf6oQk9sc9WZi8ger github.com/ashanbrown/forbidigo v1.6.0/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9IEUU= github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4= -github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= -github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= -github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= -github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= -github.com/aws/aws-sdk-go-v2 v1.36.5 h1:0OF9RiEMEdDdZEMqF9MRjevyxAQcf6gY+E7vwBILFj0= -github.com/aws/aws-sdk-go-v2 v1.36.5/go.mod h1:EYrzvCCN9CMUTa5+6lf6MM4tq3Zjp8UhSGR/cBsjai0= -github.com/aws/aws-sdk-go-v2/config v1.29.17 h1:jSuiQ5jEe4SAMH6lLRMY9OVC+TqJLP5655pBGjmnjr0= -github.com/aws/aws-sdk-go-v2/config v1.29.17/go.mod h1:9P4wwACpbeXs9Pm9w1QTh6BwWwJjwYvJ1iCt5QbCXh8= -github.com/aws/aws-sdk-go-v2/credentials v1.17.70 h1:ONnH5CM16RTXRkS8Z1qg7/s2eDOhHhaXVd72mmyv4/0= -github.com/aws/aws-sdk-go-v2/credentials v1.17.70/go.mod h1:M+lWhhmomVGgtuPOhO85u4pEa3SmssPTdcYpP/5J/xc= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32 h1:KAXP9JSHO1vKGCr5f4O6WmlVKLFFXgWYAGoJosorxzU= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.32/go.mod h1:h4Sg6FQdexC1yYG9RDnOvLbW1a/P986++/Y/a+GyEM8= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 h1:SsytQyTMHMDPspp+spo7XwXTP44aJZZAC7fBV2C5+5s= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36/go.mod h1:Q1lnJArKRXkenyog6+Y+zr7WDpk4e6XlR6gs20bbeNo= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 h1:i2vNHQiXUvKhs3quBR6aqlgJaiaexz/aNvdCktW/kAM= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36/go.mod h1:UdyGa7Q91id/sdyHPwth+043HhmP6yP9MBHgbZM0xo8= +github.com/aws/aws-sdk-go v1.55.8 h1:JRmEUbU52aJQZ2AjX4q4Wu7t4uZjOu71uyNmaWlUkJQ= +github.com/aws/aws-sdk-go v1.55.8/go.mod h1:ZkViS9AqA6otK+JBBNH2++sx1sgxrPKcSzPPvQkUtXk= +github.com/aws/aws-sdk-go-v2 v1.38.1 h1:j7sc33amE74Rz0M/PoCpsZQ6OunLqys/m5antM0J+Z8= +github.com/aws/aws-sdk-go-v2 v1.38.1/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg= +github.com/aws/aws-sdk-go-v2/config v1.31.3 h1:RIb3yr/+PZ18YYNe6MDiG/3jVoJrPmdoCARwNkMGvco= +github.com/aws/aws-sdk-go-v2/config v1.31.3/go.mod h1:jjgx1n7x0FAKl6TnakqrpkHWWKcX3xfWtdnIJs5K9CE= +github.com/aws/aws-sdk-go-v2/credentials v1.18.7 h1:zqg4OMrKj+t5HlswDApgvAHjxKtlduKS7KicXB+7RLg= +github.com/aws/aws-sdk-go-v2/credentials v1.18.7/go.mod h1:/4M5OidTskkgkv+nCIfC9/tbiQ/c8qTox9QcUDV0cgc= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.4 h1:lpdMwTzmuDLkgW7086jE94HweHCqG+uOJwHf3LZs7T0= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.4/go.mod h1:9xzb8/SV62W6gHQGC/8rrvgNXU6ZoYM3sAIJCIrXJxY= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.4 h1:IdCLsiiIj5YJ3AFevsewURCPV+YWUlOW8JiPhoAy8vg= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.4/go.mod h1:l4bdfCD7XyyZA9BolKBo1eLqgaJxl0/x91PL4Yqe0ao= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.4 h1:j7vjtr1YIssWQOMeOWRbh3z8g2oY/xPjnZH2gLY4sGw= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.4/go.mod h1:yDmJgqOiH4EA8Hndnv4KwAo8jCGTSnM5ASG1nBI+toA= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/service/ecr v1.40.3 h1:a+210FCU/pR5hhKRaskRfX/ogcyyzFBrehcTk5DTAyU= -github.com/aws/aws-sdk-go-v2/service/ecr v1.40.3/go.mod h1:dtD3a4sjUjVL86e0NUvaqdGvds5ED6itUiZPDaT+Gh8= -github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.31.2 h1:E6/Myrj9HgLF22medmDrKmbpm4ULsa+cIBNx3phirBk= -github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.31.2/go.mod h1:OQ8NALFcchBJ/qruak6zKUQodovnTKKaReTuCkc5/9Y= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 h1:CXV68E2dNqhuynZJPB80bhPQwAKqBWVer887figW6Jc= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4/go.mod h1:/xFi9KtvBXP97ppCz1TAEvU1Uf66qvid89rbem3wCzQ= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 h1:t0E6FzREdtCsiLIoLCWsYliNsRBgyGD/MCK571qk4MI= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17/go.mod h1:ygpklyoaypuyDvOM5ujWGrYWpAK3h7ugnmKCU/76Ys4= -github.com/aws/aws-sdk-go-v2/service/kms v1.41.2 h1:zJeUxFP7+XP52u23vrp4zMcVhShTWbNO8dHV6xCSvFo= -github.com/aws/aws-sdk-go-v2/service/kms v1.41.2/go.mod h1:Pqd9k4TuespkireN206cK2QBsaBTL6X+VPAez5Qcijk= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.5 h1:AIRJ3lfb2w/1/8wOOSqYb9fUKGwQbtysJ2H1MofRUPg= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.5/go.mod h1:b7SiVprpU+iGazDUqvRSLf5XmCdn+JtT1on7uNL6Ipc= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3 h1:BpOxT3yhLwSJ77qIY3DoHAQjZsc4HEGfMCE4NGy3uFg= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.3/go.mod h1:vq/GQR1gOFLquZMSrxUK/cpvKCNVYibNyJ1m7JrU88E= -github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 h1:NFOJ/NXEGV4Rq//71Hs1jC/NvPs1ezajK+yQmkwnPV0= -github.com/aws/aws-sdk-go-v2/service/sts v1.34.0/go.mod h1:7ph2tGpfQvwzgistp2+zga9f+bCjlQJPkPUmMgDSD7w= -github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw= -github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= -github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.9.1 h1:50sS0RWhGpW/yZx2KcDNEb1u1MANv5BMEkJgcieEDTA= -github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.9.1/go.mod h1:ErZOtbzuHabipRTDTor0inoRlYwbsV1ovwSxjGs/uJo= +github.com/aws/aws-sdk-go-v2/service/ecr v1.45.1 h1:Bwzh202Aq7/MYnAjXA9VawCf6u+hjwMdoYmZ4HYsdf8= +github.com/aws/aws-sdk-go-v2/service/ecr v1.45.1/go.mod h1:xZzWl9AXYa6zsLLH41HBFW8KRKJRIzlGmvSM0mVMIX4= +github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.33.2 h1:XJ/AEFYj9VFPJdF+VFi4SUPEDfz1akHwxxm07JfZJcs= +github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.33.2/go.mod h1:JUBHdhvKbbKmhaHjLsKJAWnQL80T6nURmhB/LEprV+4= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.4 h1:ueB2Te0NacDMnaC+68za9jLwkjzxGWm0KB5HTUHjLTI= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.4/go.mod h1:nLEfLnVMmLvyIG58/6gsSA03F1voKGaCfHV7+lR8S7s= +github.com/aws/aws-sdk-go-v2/service/kms v1.44.2 h1:yTtMSIGWk8KzPDX2pS9k7wNCPKiNWpiJ9DdB2mCAMzo= +github.com/aws/aws-sdk-go-v2/service/kms v1.44.2/go.mod h1:zgkQ8ige7qtxldA4cGtiXdbql3dBo4TfsP6uQyHwq0E= +github.com/aws/aws-sdk-go-v2/service/sso v1.28.2 h1:ve9dYBB8CfJGTFqcQ3ZLAAb/KXWgYlgu/2R2TZL2Ko0= +github.com/aws/aws-sdk-go-v2/service/sso v1.28.2/go.mod h1:n9bTZFZcBa9hGGqVz3i/a6+NG0zmZgtkB9qVVFDqPA8= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.0 h1:Bnr+fXrlrPEoR1MAFrHVsge3M/WoK4n23VNhRM7TPHI= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.0/go.mod h1:eknndR9rU8UpE/OmFpqU78V1EcXPKFTTm5l/buZYgvM= +github.com/aws/aws-sdk-go-v2/service/sts v1.38.0 h1:iV1Ko4Em/lkJIsoKyGfc0nQySi+v0Udxr6Igq+y9JZc= +github.com/aws/aws-sdk-go-v2/service/sts v1.38.0/go.mod h1:bEPcjW7IbolPfK67G1nilqWyoxYMSPrDiIQ3RdIdKgo= +github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= +github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.10.1 h1:6lMw4/QGLFPvbKQ0eri/9Oh3YX5Nm6BPrUlZR8yuJHg= +github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.10.1/go.mod h1:EVJOSYOVeoD3VFFZ/dWCAzWJp5wZr9lTOCjW8ejAmO0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -888,14 +884,14 @@ github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs= github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos= github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk= github.com/breml/errchkjson v0.4.0/go.mod h1:AuBOSTHyLSaaAFlWsRSuRBIroCh3eh7ZHh5YeelDIk8= -github.com/buildkite/agent/v3 v3.102.1 h1:F84htzPXvCuLUyEG5BtPrDBAJKtxffwupkEgQ2UL+RQ= -github.com/buildkite/agent/v3 v3.102.1/go.mod h1:7PZMzECwPdNOtTZGKGV17OdAyKx1kjZf8DG0nm25X4Q= -github.com/buildkite/go-pipeline v0.14.0 h1:TMkFalrkniy2l5wEfmGyckT5kf21akWOY07i4esosAI= -github.com/buildkite/go-pipeline v0.14.0/go.mod h1:VE37qY3X5pmAKKUMoDZvPsHOQuyakB9cmXj9Qn6QasA= +github.com/buildkite/agent/v3 v3.104.0 h1:VLwNHHb5cmOeWp7clutY3Qnz88lfKb8yj+OTWrwDp+o= +github.com/buildkite/agent/v3 v3.104.0/go.mod h1:HPO/Bv8C/aC2wfwVarAgU8LSXjUh/fTa9P3pxuGB+vw= +github.com/buildkite/go-pipeline v0.15.0 h1:ae/TEXC/4HhajbED2vKcRL5vZTtb9C71cajzwoBlP8s= +github.com/buildkite/go-pipeline v0.15.0/go.mod h1:VE37qY3X5pmAKKUMoDZvPsHOQuyakB9cmXj9Qn6QasA= github.com/buildkite/interpolate v0.1.5 h1:v2Ji3voik69UZlbfoqzx+qfcsOKLA61nHdU79VV+tPU= github.com/buildkite/interpolate v0.1.5/go.mod h1:dHnrwHew5O8VNOAgMDpwRlFnhL5VSN6M1bHVmRZ9Ccc= -github.com/buildkite/roko v1.3.1 h1:t7K30ceLLYn6k7hQP4oq1c7dVlhgD5nRcuSRDEEnY1s= -github.com/buildkite/roko v1.3.1/go.mod h1:23R9e6nHxgedznkwwfmqZ6+0VJZJZ2Sg/uVcp2cP46I= +github.com/buildkite/roko v1.4.0 h1:DxixoCdpNqxu4/1lXrXbfsKbJSd7r1qoxtef/TT2J80= +github.com/buildkite/roko v1.4.0/go.mod h1:0vbODqUFEcVf4v2xVXRfZZRsqJVsCCHTG/TBRByGK4E= github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY= github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M= github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= @@ -906,8 +902,8 @@ github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I github.com/ccojocar/zxcvbn-go v1.0.2/go.mod h1:g1qkXtUSvHP8lhHp5GrSmTz6uWALGRMQdw6Qnz/hi60= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/cenkalti/backoff/v5 v5.0.2 h1:rIfFVxEf1QsI7E1ZHfp/B4DF/6QBAUhmgkxc0H7Zss8= -github.com/cenkalti/backoff/v5 v5.0.2/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= +github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= @@ -950,8 +946,6 @@ github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= -github.com/cockroachdb/apd/v3 v3.2.1 h1:U+8j7t0axsIgvQUqthuNm82HIrYXodOV2iWLWtEaIwg= -github.com/cockroachdb/apd/v3 v3.2.1/go.mod h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ= @@ -964,6 +958,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.19 h1:tUN6H7LWqNx4hQVxomd0CVsDwaDr9gaRQaI4GpSmrsA= +github.com/creack/pty v1.1.19/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 h1:uX1JmpONuD549D73r6cgnxyUu18Zb7yHAy5AYU0Pm4Q= @@ -982,8 +978,6 @@ github.com/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42 github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= github.com/depcheck-test/depcheck-test v0.0.0-20220607135614-199033aaa936 h1:foGzavPWwtoyBvjWyKJYDYsyzy+23iBV7NKTwdk+LRY= github.com/depcheck-test/depcheck-test v0.0.0-20220607135614-199033aaa936/go.mod h1:ttKPnOepYt4LLzD+loXQ1rT6EmpyIYHro7TAJuIIlHo= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= -github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/digitorus/pkcs7 v0.0.0-20230713084857-e76b763bdc49/go.mod h1:SKVExuS+vpu2l9IoOc0RwqE7NYnb0JlcFHFnEJkVDzc= github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 h1:ge14PCmCvPjpMQMIAH7uKg0lrtNSOdpYsRXlwk3QbaE= github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352/go.mod h1:SKVExuS+vpu2l9IoOc0RwqE7NYnb0JlcFHFnEJkVDzc= @@ -1011,10 +1005,8 @@ github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edwarnicke/gitoid v0.0.0-20220710194850-1be5bfda1f9d h1:4l+Uq5zFWSagXgGFaKRRVWJrnlzeathyagWgYUltCgY= github.com/edwarnicke/gitoid v0.0.0-20220710194850-1be5bfda1f9d/go.mod h1:WxWwA3EYuCQjlR5EBUX3uaTS8bh9BOa7BcqVREHQ0uQ= -github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU= -github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emicklei/proto v1.13.4 h1:myn1fyf8t7tAqIzV91Tj9qXpvyXXGXk8OS2H6IBSc9g= -github.com/emicklei/proto v1.13.4/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A= +github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU= +github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= @@ -1067,8 +1059,8 @@ github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4 github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= +github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -1077,10 +1069,8 @@ github.com/ghostiam/protogetter v0.3.9/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJR github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= -github.com/globocom/go-buffer v1.2.2 h1:ICgtlUe5GIYIZFdAVj57+5WYBR4DA56cX+PYZDhGDwc= -github.com/globocom/go-buffer v1.2.2/go.mod h1:kY1ALQS0ChiiThmWhsFoT5CYSiuad0t3keIew5LsWdM= -github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= -github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/chi/v5 v5.2.3 h1:WQIt9uxdsAbgIYgid+BpYc+liqQZGMHRaUwp0JUcvdE= +github.com/go-chi/chi/v5 v5.2.3/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= github.com/go-critic/go-critic v0.12.0 h1:iLosHZuye812wnkEz1Xu3aBwn5ocCPfc9yqmFG9pa6w= github.com/go-critic/go-critic v0.12.0/go.mod h1:DpE0P6OVc6JzVYzmM5gq5jMU31zLr4am5mB/VfFK64w= github.com/go-fed/httpsig v1.1.0 h1:9M+hb0jkEICD8/cAiNqEB66R87tTINszBRTjwjQzWcI= @@ -1093,10 +1083,6 @@ github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmn github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A= -github.com/go-ini/ini v1.67.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= -github.com/go-jose/go-jose/v3 v3.0.4 h1:Wp5HA7bLQcKnf6YYao/4kpRpVMp/yf6+pJKV8WFSaNY= -github.com/go-jose/go-jose/v3 v3.0.4/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= github.com/go-jose/go-jose/v4 v4.1.2 h1:TK/7NqRQZfgAh+Td8AlsrvtPoUyiHh0LqVvokh+1vHI= github.com/go-jose/go-jose/v4 v4.1.2/go.mod h1:22cg9HWM1pOlnRiY+9cQYJ9XHmya1bYW8OeDM6Ku6Oo= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -1121,8 +1107,8 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo= -github.com/go-openapi/errors v0.22.1 h1:kslMRRnK7NCb/CvR1q1VWuEQCEIsBGn5GgKD9e+HYhU= -github.com/go-openapi/errors v0.22.1/go.mod h1:+n/5UdIqdVnLIJ6Q9Se8HNGUXYaY6CN8ImWzfi/Gzp0= +github.com/go-openapi/errors v0.22.2 h1:rdxhzcBUazEcGccKqbY1Y7NS8FDcMyIRr0934jrYnZg= +github.com/go-openapi/errors v0.22.2/go.mod h1:+n/5UdIqdVnLIJ6Q9Se8HNGUXYaY6CN8ImWzfi/Gzp0= github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= @@ -1135,14 +1121,34 @@ github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9Z github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= -github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU= -github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0= +github.com/go-openapi/swag v0.24.1 h1:DPdYTZKo6AQCRqzwr/kGkxJzHhpKxZ9i/oX0zag+MF8= +github.com/go-openapi/swag v0.24.1/go.mod h1:sm8I3lCPlspsBBwUm1t5oZeWZS0s7m/A+Psg0ooRU0A= +github.com/go-openapi/swag/cmdutils v0.24.0 h1:KlRCffHwXFI6E5MV9n8o8zBRElpY4uK4yWyAMWETo9I= +github.com/go-openapi/swag/cmdutils v0.24.0/go.mod h1:uxib2FAeQMByyHomTlsP8h1TtPd54Msu2ZDU/H5Vuf8= +github.com/go-openapi/swag/conv v0.24.0 h1:ejB9+7yogkWly6pnruRX45D1/6J+ZxRu92YFivx54ik= +github.com/go-openapi/swag/conv v0.24.0/go.mod h1:jbn140mZd7EW2g8a8Y5bwm8/Wy1slLySQQ0ND6DPc2c= +github.com/go-openapi/swag/fileutils v0.24.0 h1:U9pCpqp4RUytnD689Ek/N1d2N/a//XCeqoH508H5oak= +github.com/go-openapi/swag/fileutils v0.24.0/go.mod h1:3SCrCSBHyP1/N+3oErQ1gP+OX1GV2QYFSnrTbzwli90= +github.com/go-openapi/swag/jsonname v0.24.0 h1:2wKS9bgRV/xB8c62Qg16w4AUiIrqqiniJFtZGi3dg5k= +github.com/go-openapi/swag/jsonname v0.24.0/go.mod h1:GXqrPzGJe611P7LG4QB9JKPtUZ7flE4DOVechNaDd7Q= +github.com/go-openapi/swag/jsonutils v0.24.0 h1:F1vE1q4pg1xtO3HTyJYRmEuJ4jmIp2iZ30bzW5XgZts= +github.com/go-openapi/swag/jsonutils v0.24.0/go.mod h1:vBowZtF5Z4DDApIoxcIVfR8v0l9oq5PpYRUuteVu6f0= +github.com/go-openapi/swag/loading v0.24.0 h1:ln/fWTwJp2Zkj5DdaX4JPiddFC5CHQpvaBKycOlceYc= +github.com/go-openapi/swag/loading v0.24.0/go.mod h1:gShCN4woKZYIxPxbfbyHgjXAhO61m88tmjy0lp/LkJk= +github.com/go-openapi/swag/mangling v0.24.0 h1:PGOQpViCOUroIeak/Uj/sjGAq9LADS3mOyjznmHy2pk= +github.com/go-openapi/swag/mangling v0.24.0/go.mod h1:Jm5Go9LHkycsz0wfoaBDkdc4CkpuSnIEf62brzyCbhc= +github.com/go-openapi/swag/netutils v0.24.0 h1:Bz02HRjYv8046Ycg/w80q3g9QCWeIqTvlyOjQPDjD8w= +github.com/go-openapi/swag/netutils v0.24.0/go.mod h1:WRgiHcYTnx+IqfMCtu0hy9oOaPR0HnPbmArSRN1SkZM= +github.com/go-openapi/swag/stringutils v0.24.0 h1:i4Z/Jawf9EvXOLUbT97O0HbPUja18VdBxeadyAqS1FM= +github.com/go-openapi/swag/stringutils v0.24.0/go.mod h1:5nUXB4xA0kw2df5PRipZDslPJgJut+NjL7D25zPZ/4w= +github.com/go-openapi/swag/typeutils v0.24.0 h1:d3szEGzGDf4L2y1gYOSSLeK6h46F+zibnEas2Jm/wIw= +github.com/go-openapi/swag/typeutils v0.24.0/go.mod h1:q8C3Kmk/vh2VhpCLaoR2MVWOGP8y7Jc8l82qCTd1DYI= +github.com/go-openapi/swag/yamlutils v0.24.0 h1:bhw4894A7Iw6ne+639hsBNRHg9iZg/ISrOVr+sJGp4c= +github.com/go-openapi/swag/yamlutils v0.24.0/go.mod h1:DpKv5aYuaGm/sULePoeiG8uwMpZSfReo1HR3Ik0yaG8= github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-piv/piv-go/v2 v2.3.0 h1:kKkrYlgLQTMPA6BiSL25A7/x4CEh2YCG7rtb/aTkx+g= -github.com/go-piv/piv-go/v2 v2.3.0/go.mod h1:ShZi74nnrWNQEdWzRUd/3cSig3uNOcEZp+EWl0oewnI= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-rod/rod v0.116.2 h1:A5t2Ky2A+5eD/ZJQr1EfsQSe5rms5Xof/qj296e+ZqA= @@ -1196,8 +1202,8 @@ github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzw github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang-jwt/jwt/v5 v5.2.3 h1:kkGXqQOBSDDWRhWNXTFpqGSCMyh/PLnqUvMGJPDJDs0= -github.com/golang-jwt/jwt/v5 v5.2.3/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -1260,13 +1266,13 @@ github.com/google/addlicense v1.2.0 h1:W+DP4A639JGkcwBGMDvjSurZHvaq2FN0pP7se9czs github.com/google/addlicense v1.2.0/go.mod h1:Sm/DHu7Jk+T5miFHHehdIjbi4M5+dJDRS3Cq0rncIxA= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/cel-go v0.26.0 h1:DPGjXackMpJWH680oGY4lZhYjIameYmR+/6RBdDGmaI= -github.com/google/cel-go v0.26.0/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= +github.com/google/cel-go v0.26.1 h1:iPbVVEdkhTX++hpe3lzSk7D3G3QSYqLGoHOcEio+UXQ= +github.com/google/cel-go v0.26.1/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= github.com/google/certificate-transparency-go v1.3.2 h1:9ahSNZF2o7SYMaKaXhAumVEzXB2QaayzII9C8rv7v+A= github.com/google/certificate-transparency-go v1.3.2/go.mod h1:H5FpMUaGa5Ab2+KCYsxg6sELw3Flkl7pGZzWdBoYLXs= github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= -github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= +github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= +github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -1397,8 +1403,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4G github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -1607,21 +1613,22 @@ github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa1 github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= -github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= +github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= +github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8= +github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE= github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI= @@ -1653,15 +1660,14 @@ github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oleiade/reflections v1.1.0 h1:D+I/UsXQB4esMathlt0kkZRJZdUDmhv5zGi/HOwYTWo= github.com/oleiade/reflections v1.1.0/go.mod h1:mCxx0QseeVCHs5Um5HhJeCKVC7AwS8kO67tky4rdisA= -github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6 h1:r3FaAI0NZK3hSmtTDrBVREhKULp8oUeqLT5Eyl2mSPo= -github.com/olekukonko/errors v0.0.0-20250405072817-4e6d85265da6/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= -github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= -github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= -github.com/olekukonko/tablewriter v1.0.8 h1:f6wJzHg4QUtJdvrVPKco4QTrAylgaU0+b9br/lJxEiQ= -github.com/olekukonko/tablewriter v1.0.8/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= +github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= +github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI= +github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTHR0FqfL8= +github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= @@ -1674,8 +1680,6 @@ github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAl github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= -github.com/open-policy-agent/opa v1.6.0 h1:/S/cnNQJ2MUMNzizHPbisTWBHowmLkPrugY5jjkPlRQ= -github.com/open-policy-agent/opa v1.6.0/go.mod h1:zFmw4P+W62+CWGYRDDswfVYSCnPo6oYaktQnfIaRFC4= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= @@ -1729,8 +1733,8 @@ github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqr github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1744,20 +1748,18 @@ github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9 github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= -github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT1pX2CziuyQR0= github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= -github.com/protocolbuffers/txtpbfmt v0.0.0-20241112170944-20d2c9ebc01d h1:HWfigq7lB31IeJL8iy7jkUmU/PG1Sr8jVGhS749dbUA= -github.com/protocolbuffers/txtpbfmt v0.0.0-20241112170944-20d2c9ebc01d/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c= github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo= github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE= @@ -1772,8 +1774,6 @@ github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74 github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU= github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 h1:bsUq1dX0N8AOIL7EB/X911+m4EHsnWEHeJ0c+3TTBrg= github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/redis/go-redis/v9 v9.10.0 h1:FxwK3eV8p/CQa0Ch276C7u2d0eNC9kCmAYQ7mCXCzVs= -github.com/redis/go-redis/v9 v9.10.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= @@ -1807,7 +1807,6 @@ github.com/sassoftware/relic v7.2.1+incompatible h1:Pwyh1F3I0r4clFJXkSI8bOyJINGq github.com/sassoftware/relic v7.2.1+incompatible/go.mod h1:CWfAxv73/iLZ17rbyhIEq3K9hs5w6FpNMdUT//qR+zk= github.com/sassoftware/relic/v7 v7.6.2 h1:rS44Lbv9G9eXsukknS4mSjIAuuX+lMq/FnStgmZlUv4= github.com/sassoftware/relic/v7 v7.6.2/go.mod h1:kjmP0IBVkJZ6gXeAu35/KCEfca//+PKM6vTAsyDPY+k= -github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/secure-systems-lab/go-securesystemslib v0.9.1 h1:nZZaNz4DiERIQguNy0cL5qTdn9lR8XKHf4RUyG1Sx3g= github.com/secure-systems-lab/go-securesystemslib v0.9.1/go.mod h1:np53YzT0zXGMv6x4iEWc9Z59uR+x+ndLwCLqPYpLXVU= github.com/securego/gosec/v2 v2.22.2 h1:IXbuI7cJninj0nRpZSLCUlotsj8jGusohfONMrHoF6g= @@ -1826,20 +1825,20 @@ github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxr github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f h1:tygelZueB1EtXkPI6mQ4o9DQ0+FKW41hTbunoXZCTqk= github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f/go.mod h1:AuYgA5Kyo4c7HfUmvRGs/6rGlMMV/6B1bVnB9JxJEEg= -github.com/sigstore/cosign/v2 v2.5.3 h1:5SzfUNTgwMDC8hq1pW0xV4zsrW56l0uvDMjCR9Yl6hU= -github.com/sigstore/cosign/v2 v2.5.3/go.mod h1:eihZ0ZZyx7dtrwQA3UbkQLetICc2HAiJ8jnt8aMfSvI= +github.com/sigstore/cosign/v2 v2.6.0 h1:7DYqkc8RUnoteFhbeYMWu1qkvTDgCYU2MT/2xQPvDks= +github.com/sigstore/cosign/v2 v2.6.0/go.mod h1:/6AgUhKRfkn3aWRxdrUGyu/vBK4hGrvtZHFQoSx15D4= github.com/sigstore/fulcio v1.7.1 h1:RcoW20Nz49IGeZyu3y9QYhyyV3ZKQ85T+FXPKkvE+aQ= github.com/sigstore/fulcio v1.7.1/go.mod h1:7lYY+hsd8Dt+IvKQRC+KEhWpCZ/GlmNvwIa5JhypMS8= github.com/sigstore/protobuf-specs v0.5.0 h1:F8YTI65xOHw70NrvPwJ5PhAzsvTnuJMGLkA4FIkofAY= github.com/sigstore/protobuf-specs v0.5.0/go.mod h1:+gXR+38nIa2oEupqDdzg4qSBT0Os+sP7oYv6alWewWc= -github.com/sigstore/rekor v1.4.0 h1:K3DyH8309yzjYKUCQOVEIYpGp6Y9BQ8GpLhRj0D5CZk= -github.com/sigstore/rekor v1.4.0/go.mod h1:teR57QMQA1nYXPoZL7o26Txky21RfWslM0E9w5Z57Ro= -github.com/sigstore/rekor-tiles v0.1.7-0.20250624231741-98cd4a77300f h1:zaqWahYAlVouSm5qwCH+2vZ3eenZFBwzzuBz/IZyy5c= -github.com/sigstore/rekor-tiles v0.1.7-0.20250624231741-98cd4a77300f/go.mod h1:1Epq0PQ73v5Z276rAY241JyaP8gtD64I6sgYIECHPvc= -github.com/sigstore/sigstore v1.9.5 h1:Wm1LT9yF4LhQdEMy5A2JeGRHTrAWGjT3ubE5JUSrGVU= -github.com/sigstore/sigstore v1.9.5/go.mod h1:VtxgvGqCmEZN9X2zhFSOkfXxvKUjpy8RpUW39oCtoII= -github.com/sigstore/sigstore-go v1.1.0 h1:NBfyvL/LiBIplnIZAtC7GtDZ7qj82A/GTpn0+5WV7BM= -github.com/sigstore/sigstore-go v1.1.0/go.mod h1:97lDVpZVBCTFX114KPAManEsShVe934KyaVhZGhPVBM= +github.com/sigstore/rekor v1.4.2 h1:Lx2xby7loviFYdg2C9pB1mESk2QU/LqcYSGsqqZwmg8= +github.com/sigstore/rekor v1.4.2/go.mod h1:nX/OYaLqpTeCOuMEt7ELE0+5cVjZWFnFKM+cZ+3hQRA= +github.com/sigstore/rekor-tiles v0.1.11 h1:0NAJ2EhD1r6DH95FUuDTqUDd+c31LSKzoXGW5ZCzFq0= +github.com/sigstore/rekor-tiles v0.1.11/go.mod h1:eGIeqASh52pgWpmp/j5KZDjmKdVwob7eTYskVVRCu5k= +github.com/sigstore/sigstore v1.9.6-0.20250729224751-181c5d3339b3 h1:IEhSeWfhTd0kaBpHUXniWU2Tl5K5OUACN69mi1WGd+8= +github.com/sigstore/sigstore v1.9.6-0.20250729224751-181c5d3339b3/go.mod h1:JuqyPRJYnkNl6OTnQiG503EUnKih4P5EV6FUw+1B0iA= +github.com/sigstore/sigstore-go v1.1.2 h1:VFfqVQvUm3m7uAiqJFK+hDSH3I2rCBYH4l3wIDy+Ozo= +github.com/sigstore/sigstore-go v1.1.2/go.mod h1:mF7i7L6NlKYuUEnbUUxwtKQuz8BxQ7SGEqXDgnysbKc= github.com/sigstore/sigstore/pkg/signature/kms/aws v1.9.5 h1:qp2VFyKuFQvTGmZwk5Q7m5nE4NwnF9tHwkyz0gtWAck= github.com/sigstore/sigstore/pkg/signature/kms/aws v1.9.5/go.mod h1:DKlQjjr+GsWljEYPycI0Sf8URLCk4EbGA9qYjF47j4g= github.com/sigstore/sigstore/pkg/signature/kms/azure v1.9.5 h1:CRZcdYn5AOptStsLRAAACudAVmb1qUbhMlzrvm7ju3o= @@ -1848,8 +1847,8 @@ github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.9.6-0.20250729224751-181c5 github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.9.6-0.20250729224751-181c5d3339b3/go.mod h1:tRtJzSZ48MXJV9bmS8pkb3mP36PCad/Cs+BmVJ3Z4O4= github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.9.5 h1:S2ukEfN1orLKw2wEQIUHDDlzk0YcylhcheeZ5TGk8LI= github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.9.5/go.mod h1:m7sQxVJmDa+rsmS1m6biQxaLX83pzNS7ThUEyjOqkCU= -github.com/sigstore/timestamp-authority v1.2.8 h1:BEV3fkphwU4zBp3allFAhCqQb99HkiyCXB853RIwuEE= -github.com/sigstore/timestamp-authority v1.2.8/go.mod h1:G2/0hAZmLPnevEwT1S9IvtNHUm9Ktzvso6xuRhl94ZY= +github.com/sigstore/timestamp-authority v1.2.9 h1:L9Fj070/EbMC8qUk8BchkrYCS1BT5i93Bl6McwydkFs= +github.com/sigstore/timestamp-authority v1.2.9/go.mod h1:QyRnZchz4o+xdHyK5rvCWacCHxWmpX+mgvJwB1OXcLY= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= @@ -1880,12 +1879,12 @@ github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZ github.com/spf13/cast v1.8.0 h1:gEN9K4b8Xws4EX0+a0reLmhq8moKn7ntRlQYgjPeCDk= github.com/spf13/cast v1.8.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= -github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= -github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= -github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/spiffe/go-spiffe/v2 v2.6.0 h1:l+DolpxNWYgruGQVV0xsfeya3CsC7m8iBzDnMpsbLuo= @@ -1898,8 +1897,8 @@ github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YE github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4= github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk= -github.com/stoewer/go-strcase v1.3.0 h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs= -github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= +github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= +github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -1920,15 +1919,13 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8= -github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= -github.com/tchap/go-patricia/v2 v2.3.2 h1:xTHFutuitO2zqKAQ5rCROYgUb7Or/+IC3fts9/Yc7nM= -github.com/tchap/go-patricia/v2 v2.3.2/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= github.com/tdakkota/asciicheck v0.4.1 h1:bm0tbcmi0jezRA2b5kg4ozmMuGAFotKI3RZfrhfovg8= github.com/tdakkota/asciicheck v0.4.1/go.mod h1:0k7M3rCfRXb0Z6bwgvkEIMleKH3kXNz9UqJ9Xuqopr8= github.com/tektoncd/pipeline v1.3.1 h1:GOp49pAMPCXYX1E/cSc2JAm7j4vEB68DOOhGkSoaAmI= @@ -1972,8 +1969,8 @@ github.com/transparency-dev/formats v0.0.0-20250421220931-bb8ad4d07c26 h1:YTbkeF github.com/transparency-dev/formats v0.0.0-20250421220931-bb8ad4d07c26/go.mod h1:ODywn0gGarHMMdSkWT56ULoK8Hk71luOyRseKek9COw= github.com/transparency-dev/merkle v0.0.2 h1:Q9nBoQcZcgPamMkGn7ghV8XiTZ/kRxn1yCG81+twTK4= github.com/transparency-dev/merkle v0.0.2/go.mod h1:pqSy+OXefQ1EDUVmAJ8MUhHB9TXGuzVAT58PqBoHz1A= -github.com/transparency-dev/tessera v0.2.1-0.20250610150926-8ee4e93b2823 h1:s3p7wNrK/mnKI2bdp9PrQd9eBVxo1i5rU6O5hKkN0zc= -github.com/transparency-dev/tessera v0.2.1-0.20250610150926-8ee4e93b2823/go.mod h1:Jv2IDwG1q8QNXZTaI1X6QX8s96WlJn73ka2hT1n4N5c= +github.com/transparency-dev/tessera v1.0.0-rc3 h1:v385KqMekDUKI3ZVJHCHE5MAz8LBrWsEKa6OzYLrz0k= +github.com/transparency-dev/tessera v1.0.0-rc3/go.mod h1:aaLlvG/sEPMzT96iIF4hua6Z9pLzkfDtkbaUAR4IL8I= github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= github.com/ultraware/funlen v0.2.0/go.mod h1:ZE0q4TsJ8T1SQcjmkhN/w+MceuatI6pBFSxxyteHIJA= github.com/ultraware/whitespace v0.2.0 h1:TYowo2m9Nfj1baEQBjuHzvMRbp19i+RCcRYrSWoFa+g= @@ -1988,8 +1985,6 @@ github.com/vbatts/tar-split v0.12.1 h1:CqKoORW7BUWBe7UL/iqTVvkTBOF8UvOMKOIZykxnn github.com/vbatts/tar-split v0.12.1/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA= github.com/vdemeester/cr-20160607 v1.0.1 h1:nHyI7BZNR04QFtgItJFVAr8SLeoVIFd8co+DODxnPKE= github.com/vdemeester/cr-20160607 v1.0.1/go.mod h1:QHeKZtZ3F3FOE+/uIXCBAp8POwnUYekpLwr1dtQa5r0= -github.com/vektah/gqlparser/v2 v2.5.30 h1:EqLwGAFLIzt1wpx1IPpY67DwUujF1OfzgEyDsLrN6kE= -github.com/vektah/gqlparser/v2 v2.5.30/go.mod h1:D1/VCZtV3LPnQrcPBeR/q5jkSQIPti0uYCP/RI0gIeo= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= @@ -2001,16 +1996,10 @@ github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= -github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= -github.com/yashtewari/glob-intersection v0.2.0 h1:8iuHdN88yYuCzCdjt0gDe+6bAhUwBeEWqThExu54RFg= -github.com/yashtewari/glob-intersection v0.2.0/go.mod h1:LK7pIC3piUjovexikBbJ26Yml7g8xa5bsjfx2v1fwok= github.com/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs= github.com/yeya24/promlinter v0.3.0/go.mod h1:cDfJQQYv9uYciW60QT0eeHlFodotkYZlL+YcPQN+mW4= github.com/ykadowak/zerologlint v0.1.5 h1:Gy/fMz1dFQN9JZTPjv1hxEk+sRWm05row04Yoolgdiw= @@ -2035,14 +2024,14 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zalando/go-keyring v0.2.3 h1:v9CUu9phlABObO4LPWycf+zwMG7nlbb3t/B5wa97yms= -github.com/zalando/go-keyring v0.2.3/go.mod h1:HL4k+OXQfJUWaMnqyuSOc0drfGPX2b51Du6K+MRgZMk= +github.com/zalando/go-keyring v0.2.6 h1:r7Yc3+H+Ux0+M72zacZoItR3UDxeWfKTcabvkI8ua9s= +github.com/zalando/go-keyring v0.2.6/go.mod h1:2TCrxYrbUNYfNS/Kgy/LSrkSQzZ5UPVH85RwfczwvcI= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= -gitlab.com/gitlab-org/api/client-go v0.134.0 h1:J4i6qPN5hRLsqatPxVbe9w2C0A3JEItyCQrzsP52S2k= -gitlab.com/gitlab-org/api/client-go v0.134.0/go.mod h1:crkp9sCwMQ8gDwuMLgk11sDT336t6U3kESBT0BGsOBo= +gitlab.com/gitlab-org/api/client-go v0.143.3 h1:4Q4zumLVUnxn/s06RD9U3fyibD1/zr43gTDDtRkjqbA= +gitlab.com/gitlab-org/api/client-go v0.143.3/go.mod h1:rw89Kl9AsKmxRhzkfUSfZ+1jpTewwueKvAYwoYmUoQ8= go-simpler.org/assert v0.9.0 h1:PfpmcSvL7yAnWyChSjOz6Sp6m9j5lyK8Ok9pEL31YkQ= go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= go-simpler.org/musttag v0.13.0 h1:Q/YAW0AHvaoaIbsPj3bvEI5/QFP7w696IMUpnKXQfCE= @@ -2062,35 +2051,35 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/detectors/gcp v1.37.0 h1:B+WbN9RPsvobe6q4vP6KgM8/9plR/HNjgGBrfcOlweA= -go.opentelemetry.io/contrib/detectors/gcp v1.37.0/go.mod h1:K5zQ3TT7p2ru9Qkzk0bKtCql0RGkPj9pRjpXgZJZ+rU= +go.opentelemetry.io/contrib/detectors/gcp v1.38.0 h1:ZoYbqX7OaA/TAikspPl3ozPI6iY6LiIY9I8cUfm+pJs= +go.opentelemetry.io/contrib/detectors/gcp v1.38.0/go.mod h1:SU+iU7nu5ud4oCb3LQOhIZ3nRLj6FNVrKgtflbaf2ts= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 h1:rbRJ8BBoVMsQShESYZ0FkvcITu8X8QNwJogcLUmDNNw= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0/go.mod h1:ru6KHrNtNHxM4nD/vd6QrLVWgKhxPYgblq4VAtNawTQ= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 h1:Hf9xI/XLML9ElpiHVDNwvqI0hIFlzV8dgIr35kV1kRU= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0/go.mod h1:NfchwuyNoMcZ5MLHwPrODwUF1HWCXWrL31s8gSAdIKY= -go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0 h1:bDMKF3RUSxshZ5OjOTi8rsHGaPKsAt76FaqgvIUySLc= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0/go.mod h1:dDT67G/IkA46Mr2l9Uj7HsQVwsjASyV9SjGofsiUZDA= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0 h1:6VjV6Et+1Hd2iLZEPtdV7vie80Yyqf7oikJLjQ/myi0= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.37.0/go.mod h1:u8hcp8ji5gaM/RfcOo8z9NMnf1pVLfVY7lBY2VOGuUU= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= -go.step.sm/crypto v0.67.0 h1:1km9LmxMKG/p+mKa1R4luPN04vlJYnRLlLQrWv7egGU= -go.step.sm/crypto v0.67.0/go.mod h1:+AoDpB0mZxbW/PmOXuwkPSpXRgaUaoIK+/Wx/HGgtAU= +go.step.sm/crypto v0.70.0 h1:Q9Ft7N637mucyZcHZd1+0VVQJVwDCKqcb9CYcYi7cds= +go.step.sm/crypto v0.70.0/go.mod h1:pzfUhS5/ue7ev64PLlEgXvhx1opwbhFCjkvlhsxVds0= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= @@ -2104,8 +2093,8 @@ go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= -go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= -go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= gocloud.dev v0.43.0 h1:aW3eq4RMyehbJ54PMsh4hsp7iX8cO/98ZRzJJOzN/5M= gocloud.dev v0.43.0/go.mod h1:eD8rkg7LhKUHrzkEdLTZ+Ty/vgPHPCd+yMQdfelQVu4= gocloud.dev/docstore/mongodocstore v0.43.0 h1:Ay6NbJcqZOQYS3JULkv3QeaOhmEcVhU5OQEZCBJdCnM= @@ -2136,9 +2125,8 @@ golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45 golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2154,8 +2142,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 h1:y5zboxd6LQAqYIhHnB48p0ByQ/GnQx2BE33L8BOHQkI= -golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6/go.mod h1:U6Lno4MTRCDY+Ba7aCcauB9T60gsv5s4ralQzP72ZoQ= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac h1:TSSpLIG4v+p0rPv1pNOQtl1I8knsO4S9trOxNMOLVP4= @@ -2206,8 +2194,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= -golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U= +golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2313,8 +2301,8 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= +golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2335,8 +2323,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2372,7 +2360,6 @@ golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2442,9 +2429,8 @@ golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -2459,9 +2445,8 @@ golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= -golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= +golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= +golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2481,8 +2466,8 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2570,8 +2555,8 @@ golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= -golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= -golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= @@ -2657,8 +2642,8 @@ google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/ google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.247.0 h1:tSd/e0QrUlLsrwMKmkbQhYVa109qIintOls2Wh6bngc= -google.golang.org/api v0.247.0/go.mod h1:r1qZOPmxXffXg6xS5uhx16Fa/UFY8QU/K4bfKrnvovM= +google.golang.org/api v0.248.0 h1:hUotakSkcwGdYUqzCRc5yGYsg4wXxpkKlW5ryVqvC1Y= +google.golang.org/api v0.248.0/go.mod h1:yAFUAF56Li7IuIQbTFoLwXTCI6XCFKueOlS7S9e4F9k= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2868,8 +2853,8 @@ google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A= -google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2920,25 +2905,25 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= -k8s.io/api v0.33.4 h1:oTzrFVNPXBjMu0IlpA2eDDIU49jsuEorGHB4cvKupkk= -k8s.io/api v0.33.4/go.mod h1:VHQZ4cuxQ9sCUMESJV5+Fe8bGnqAARZ08tSTdHWfeAc= +k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= +k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= k8s.io/apiextensions-apiserver v0.32.6 h1:B9zv1tpW+090Prav3GP53A4W2Bv908AAouZYJWp0fy8= k8s.io/apiextensions-apiserver v0.32.6/go.mod h1:3lAgylV3582qpXg8NWW4NOLdzxLC8mTcfPqqjAzOSTs= -k8s.io/apimachinery v0.33.4 h1:SOf/JW33TP0eppJMkIgQ+L6atlDiP/090oaX0y9pd9s= -k8s.io/apimachinery v0.33.4/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM= -k8s.io/client-go v0.33.4 h1:TNH+CSu8EmXfitntjUPwaKVPN0AYMbc9F1bBS8/ABpw= -k8s.io/client-go v0.33.4/go.mod h1:LsA0+hBG2DPwovjd931L/AoaezMPX9CmBgyVyBZmbCY= +k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= +k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= +k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= k8s.io/code-generator v0.33.4 h1:DiA801QxqApRIBh3OWULasVAUA237XnYvFNMh+E34Y8= k8s.io/code-generator v0.33.4/go.mod h1:ifWxKWhEl/Z1K7WmWAyOBEf3ex/i546ingCzLC8YVIY= -k8s.io/gengo/v2 v2.0.0-20250207200755-1244d31929d7 h1:2OX19X59HxDprNCVrWi6jb7LW1PoqTlYqEq5H2oetog= -k8s.io/gengo/v2 v2.0.0-20250207200755-1244d31929d7/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU= +k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f h1:SLb+kxmzfA87x4E4brQzB33VBbT2+x7Zq9ROIHmGn9Q= +k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU= k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4= -k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8= -k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJJI8IUa1AmH/qa0= -k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA= +k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= +k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= knative.dev/pkg v0.0.0-20250415155312-ed3e2158b883 h1:UeOY7009M0EHwdyW3P35Fc1U6FJHzBrj6Gf370do8zY= knative.dev/pkg v0.0.0-20250415155312-ed3e2158b883/go.mod h1:ptwLYr04MAyeoRvhnhhz0FFkVZTdYJV2QWnw9sZyFSM= lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= @@ -2985,14 +2970,12 @@ rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= -sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= -sigs.k8s.io/release-utils v0.12.0 h1:+Z8cEUAaxItrMcTOJ0jtUg3Fm1uNgPNol+VIL6XtQqQ= -sigs.k8s.io/release-utils v0.12.0/go.mod h1:TveYRPK4Mq6qXA0PJiUMEOlWvvIQG0Mh5APQmHD5JpA= -sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc= -sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/release-utils v0.12.1 h1:3p9w137wBTTApHlL8izdJHcCuaBe8wZhQz+B0QIAaBE= +sigs.k8s.io/release-utils v0.12.1/go.mod h1:0z7JOb7iQcuDQcemQw5CSVrkH8evRHY0DMMjcyRB1e4= +sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= +sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= software.sslmate.com/src/go-pkcs12 v0.4.0 h1:H2g08FrTvSFKUj+D309j1DPfk5APnIdAQAB8aEykJ5k= diff --git a/vendor/cloud.google.com/go/spanner/CHANGES.md b/vendor/cloud.google.com/go/spanner/CHANGES.md index b7c72ee73f..88e806c1ba 100644 --- a/vendor/cloud.google.com/go/spanner/CHANGES.md +++ b/vendor/cloud.google.com/go/spanner/CHANGES.md @@ -1,5 +1,48 @@ # Changes +## [1.84.1](https://github.com/googleapis/google-cloud-go/compare/spanner/v1.84.0...spanner/v1.84.1) (2025-08-06) + + +### Features + +* **spanner:** Release 1.84.1 ([#12663](https://github.com/googleapis/google-cloud-go/issues/12663)) ([8b410ec](https://github.com/googleapis/google-cloud-go/commit/8b410ec689591a591aecb46831f2f50706cb973f)) + + +### Miscellaneous Chores + +* **spanner:** Release 1.84.1 ([#12665](https://github.com/googleapis/google-cloud-go/issues/12665)) ([a1ce8c2](https://github.com/googleapis/google-cloud-go/commit/a1ce8c26651e7a0ba4f1b20aba4c0fefbab0b972)) + +## [1.84.0](https://github.com/googleapis/google-cloud-go/compare/spanner/v1.83.0...spanner/v1.84.0) (2025-08-05) + + +### Features + +* **spanner/adapter:** Add last field in AdaptMessageResponse for internal optimization usage ([c574e28](https://github.com/googleapis/google-cloud-go/commit/c574e287f49cc1c3b069b35d95b98da2bc9b948f)) +* **spanner/admin/database:** Proto changes for an internal api ([eeb4b1f](https://github.com/googleapis/google-cloud-go/commit/eeb4b1fe8eb83b73ec31b0bd46e3704bdc0212c3)) +* **spanner:** A new field `snapshot_timestamp` is added to message `.google.spanner.v1.CommitResponse` ([ac4970b](https://github.com/googleapis/google-cloud-go/commit/ac4970b5a6318dbfcdca7da5ee256852ca49ea23)) +* **spanner:** Add GCP standard otel attributes ([#11652](https://github.com/googleapis/google-cloud-go/issues/11652)) ([f59fcff](https://github.com/googleapis/google-cloud-go/commit/f59fcfffdfcd01ef5b436b76fa83351e2b695920)) + + +### Bug Fixes + +* **spanner:** Context cancel in traces in case of skipping trailers ([#12635](https://github.com/googleapis/google-cloud-go/issues/12635)) ([509dc90](https://github.com/googleapis/google-cloud-go/commit/509dc90cd13061f8302d20451af1d9f7e186641f)) +* **spanner:** Enforce only one resource header ([#12618](https://github.com/googleapis/google-cloud-go/issues/12618)) ([4e04b7e](https://github.com/googleapis/google-cloud-go/commit/4e04b7efd68a979837f78d94ac1dbc930c2e5efb)) +* **spanner:** Fix blind retry for ResourceExhausted ([#12523](https://github.com/googleapis/google-cloud-go/issues/12523)) ([f9b6e88](https://github.com/googleapis/google-cloud-go/commit/f9b6e88bd3fce735ea58f70e3a7634837886d393)) +* **spanner:** Remove stream wrapper for direct path check ([#12622](https://github.com/googleapis/google-cloud-go/issues/12622)) ([88a36cd](https://github.com/googleapis/google-cloud-go/commit/88a36cdfb7f7d1d265f45ed8795b6c08915fe183)) + + +### Documentation + +* **spanner:** A comment for enum value `OPTIMISTIC` in enum `ReadLockMode` is changed ([ac4970b](https://github.com/googleapis/google-cloud-go/commit/ac4970b5a6318dbfcdca7da5ee256852ca49ea23)) +* **spanner:** A comment for enum value `PESSIMISTIC` in enum `ReadLockMode` is changed ([ac4970b](https://github.com/googleapis/google-cloud-go/commit/ac4970b5a6318dbfcdca7da5ee256852ca49ea23)) +* **spanner:** A comment for enum value `READ_LOCK_MODE_UNSPECIFIED` in enum `ReadLockMode` is changed ([ac4970b](https://github.com/googleapis/google-cloud-go/commit/ac4970b5a6318dbfcdca7da5ee256852ca49ea23)) +* **spanner:** A comment for field `commit_stats` in message `.google.spanner.v1.CommitResponse` is changed ([ac4970b](https://github.com/googleapis/google-cloud-go/commit/ac4970b5a6318dbfcdca7da5ee256852ca49ea23)) +* **spanner:** A comment for field `exclude_txn_from_change_streams` in message `.google.spanner.v1.TransactionOptions` is changed ([ac4970b](https://github.com/googleapis/google-cloud-go/commit/ac4970b5a6318dbfcdca7da5ee256852ca49ea23)) +* **spanner:** A comment for field `multiplexed_session_previous_transaction_id` in message `.google.spanner.v1.TransactionOptions` is changed ([ac4970b](https://github.com/googleapis/google-cloud-go/commit/ac4970b5a6318dbfcdca7da5ee256852ca49ea23)) +* **spanner:** A comment for field `precommit_token` in message `.google.spanner.v1.CommitResponse` is changed ([ac4970b](https://github.com/googleapis/google-cloud-go/commit/ac4970b5a6318dbfcdca7da5ee256852ca49ea23)) +* **spanner:** A comment for message `.google.spanner.v1.MultiplexedSessionPrecommitToken` is changed ([ac4970b](https://github.com/googleapis/google-cloud-go/commit/ac4970b5a6318dbfcdca7da5ee256852ca49ea23)) +* **spanner:** A comment for message `.google.spanner.v1.TransactionOptions` is changed ([ac4970b](https://github.com/googleapis/google-cloud-go/commit/ac4970b5a6318dbfcdca7da5ee256852ca49ea23)) + ## [1.83.0](https://github.com/googleapis/google-cloud-go/compare/spanner/v1.82.0...spanner/v1.83.0) (2025-06-27) diff --git a/vendor/cloud.google.com/go/spanner/admin/database/apiv1/database_admin_client.go b/vendor/cloud.google.com/go/spanner/admin/database/apiv1/database_admin_client.go index ba85f8d0ab..db26bbca7f 100644 --- a/vendor/cloud.google.com/go/spanner/admin/database/apiv1/database_admin_client.go +++ b/vendor/cloud.google.com/go/spanner/admin/database/apiv1/database_admin_client.go @@ -47,36 +47,37 @@ var newDatabaseAdminClientHook clientHook // DatabaseAdminCallOptions contains the retry settings for each method of DatabaseAdminClient. type DatabaseAdminCallOptions struct { - ListDatabases []gax.CallOption - CreateDatabase []gax.CallOption - GetDatabase []gax.CallOption - UpdateDatabase []gax.CallOption - UpdateDatabaseDdl []gax.CallOption - DropDatabase []gax.CallOption - GetDatabaseDdl []gax.CallOption - SetIamPolicy []gax.CallOption - GetIamPolicy []gax.CallOption - TestIamPermissions []gax.CallOption - CreateBackup []gax.CallOption - CopyBackup []gax.CallOption - GetBackup []gax.CallOption - UpdateBackup []gax.CallOption - DeleteBackup []gax.CallOption - ListBackups []gax.CallOption - RestoreDatabase []gax.CallOption - ListDatabaseOperations []gax.CallOption - ListBackupOperations []gax.CallOption - ListDatabaseRoles []gax.CallOption - AddSplitPoints []gax.CallOption - CreateBackupSchedule []gax.CallOption - GetBackupSchedule []gax.CallOption - UpdateBackupSchedule []gax.CallOption - DeleteBackupSchedule []gax.CallOption - ListBackupSchedules []gax.CallOption - CancelOperation []gax.CallOption - DeleteOperation []gax.CallOption - GetOperation []gax.CallOption - ListOperations []gax.CallOption + ListDatabases []gax.CallOption + CreateDatabase []gax.CallOption + GetDatabase []gax.CallOption + UpdateDatabase []gax.CallOption + UpdateDatabaseDdl []gax.CallOption + DropDatabase []gax.CallOption + GetDatabaseDdl []gax.CallOption + SetIamPolicy []gax.CallOption + GetIamPolicy []gax.CallOption + TestIamPermissions []gax.CallOption + CreateBackup []gax.CallOption + CopyBackup []gax.CallOption + GetBackup []gax.CallOption + UpdateBackup []gax.CallOption + DeleteBackup []gax.CallOption + ListBackups []gax.CallOption + RestoreDatabase []gax.CallOption + ListDatabaseOperations []gax.CallOption + ListBackupOperations []gax.CallOption + ListDatabaseRoles []gax.CallOption + AddSplitPoints []gax.CallOption + CreateBackupSchedule []gax.CallOption + GetBackupSchedule []gax.CallOption + UpdateBackupSchedule []gax.CallOption + DeleteBackupSchedule []gax.CallOption + ListBackupSchedules []gax.CallOption + InternalUpdateGraphOperation []gax.CallOption + CancelOperation []gax.CallOption + DeleteOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption } func defaultDatabaseAdminGRPCClientOptions() []option.ClientOption { @@ -374,10 +375,11 @@ func defaultDatabaseAdminCallOptions() *DatabaseAdminCallOptions { }) }), }, - CancelOperation: []gax.CallOption{}, - DeleteOperation: []gax.CallOption{}, - GetOperation: []gax.CallOption{}, - ListOperations: []gax.CallOption{}, + InternalUpdateGraphOperation: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, } } @@ -641,10 +643,11 @@ func defaultDatabaseAdminRESTCallOptions() *DatabaseAdminCallOptions { http.StatusGatewayTimeout) }), }, - CancelOperation: []gax.CallOption{}, - DeleteOperation: []gax.CallOption{}, - GetOperation: []gax.CallOption{}, - ListOperations: []gax.CallOption{}, + InternalUpdateGraphOperation: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, } } @@ -685,6 +688,7 @@ type internalDatabaseAdminClient interface { UpdateBackupSchedule(context.Context, *databasepb.UpdateBackupScheduleRequest, ...gax.CallOption) (*databasepb.BackupSchedule, error) DeleteBackupSchedule(context.Context, *databasepb.DeleteBackupScheduleRequest, ...gax.CallOption) error ListBackupSchedules(context.Context, *databasepb.ListBackupSchedulesRequest, ...gax.CallOption) *BackupScheduleIterator + InternalUpdateGraphOperation(context.Context, *databasepb.InternalUpdateGraphOperationRequest, ...gax.CallOption) (*databasepb.InternalUpdateGraphOperationResponse, error) CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error DeleteOperation(context.Context, *longrunningpb.DeleteOperationRequest, ...gax.CallOption) error GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) @@ -1048,6 +1052,12 @@ func (c *DatabaseAdminClient) ListBackupSchedules(ctx context.Context, req *data return c.internalClient.ListBackupSchedules(ctx, req, opts...) } +// InternalUpdateGraphOperation this is an internal API called by Spanner Graph jobs. You should never need +// to call this API directly. +func (c *DatabaseAdminClient) InternalUpdateGraphOperation(ctx context.Context, req *databasepb.InternalUpdateGraphOperationRequest, opts ...gax.CallOption) (*databasepb.InternalUpdateGraphOperationResponse, error) { + return c.internalClient.InternalUpdateGraphOperation(ctx, req, opts...) +} + // CancelOperation is a utility method from google.longrunning.Operations. func (c *DatabaseAdminClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { return c.internalClient.CancelOperation(ctx, req, opts...) @@ -1911,6 +1921,21 @@ func (c *databaseAdminGRPCClient) ListBackupSchedules(ctx context.Context, req * return it } +func (c *databaseAdminGRPCClient) InternalUpdateGraphOperation(ctx context.Context, req *databasepb.InternalUpdateGraphOperationRequest, opts ...gax.CallOption) (*databasepb.InternalUpdateGraphOperationResponse, error) { + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) + opts = append((*c.CallOptions).InternalUpdateGraphOperation[0:len((*c.CallOptions).InternalUpdateGraphOperation):len((*c.CallOptions).InternalUpdateGraphOperation)], opts...) + var resp *databasepb.InternalUpdateGraphOperationResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.databaseAdminClient.InternalUpdateGraphOperation, req, settings.GRPC, c.logger, "InternalUpdateGraphOperation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + func (c *databaseAdminGRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} @@ -3709,6 +3734,66 @@ func (c *databaseAdminRESTClient) ListBackupSchedules(ctx context.Context, req * return it } +// InternalUpdateGraphOperation this is an internal API called by Spanner Graph jobs. You should never need +// to call this API directly. +func (c *databaseAdminRESTClient) InternalUpdateGraphOperation(ctx context.Context, req *databasepb.InternalUpdateGraphOperationRequest, opts ...gax.CallOption) (*databasepb.InternalUpdateGraphOperationResponse, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("") + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + params.Add("database", fmt.Sprintf("%v", req.GetDatabase())) + params.Add("operationId", fmt.Sprintf("%v", req.GetOperationId())) + if req.GetProgress() != 0 { + params.Add("progress", fmt.Sprintf("%v", req.GetProgress())) + } + if req.GetStatus().GetCode() != 0 { + params.Add("status.code", fmt.Sprintf("%v", req.GetStatus().GetCode())) + } + if req.GetStatus().GetMessage() != "" { + params.Add("status.message", fmt.Sprintf("%v", req.GetStatus().GetMessage())) + } + params.Add("vmIdentityToken", fmt.Sprintf("%v", req.GetVmIdentityToken())) + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).InternalUpdateGraphOperation[0:len((*c.CallOptions).InternalUpdateGraphOperation):len((*c.CallOptions).InternalUpdateGraphOperation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &databasepb.InternalUpdateGraphOperationResponse{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "InternalUpdateGraphOperation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + // CancelOperation is a utility method from google.longrunning.Operations. func (c *databaseAdminRESTClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { baseUrl, err := url.Parse(c.endpoint) diff --git a/vendor/cloud.google.com/go/spanner/admin/database/apiv1/databasepb/spanner_database_admin.pb.go b/vendor/cloud.google.com/go/spanner/admin/database/apiv1/databasepb/spanner_database_admin.pb.go index 0f7c0ba13a..a33e23cfd2 100644 --- a/vendor/cloud.google.com/go/spanner/admin/database/apiv1/databasepb/spanner_database_admin.pb.go +++ b/vendor/cloud.google.com/go/spanner/admin/database/apiv1/databasepb/spanner_database_admin.pb.go @@ -25,9 +25,10 @@ import ( longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" context "context" _ "google.golang.org/genproto/googleapis/api/annotations" + status "google.golang.org/genproto/googleapis/rpc/status" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" + status1 "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" emptypb "google.golang.org/protobuf/types/known/emptypb" @@ -2376,6 +2377,126 @@ func (x *SplitPoints) GetExpireTime() *timestamppb.Timestamp { return nil } +// Internal request proto, do not use directly. +type InternalUpdateGraphOperationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Internal field, do not use directly. + Database string `protobuf:"bytes,1,opt,name=database,proto3" json:"database,omitempty"` + // Internal field, do not use directly. + OperationId string `protobuf:"bytes,2,opt,name=operation_id,json=operationId,proto3" json:"operation_id,omitempty"` + // Internal field, do not use directly. + VmIdentityToken string `protobuf:"bytes,5,opt,name=vm_identity_token,json=vmIdentityToken,proto3" json:"vm_identity_token,omitempty"` + // Internal field, do not use directly. + Progress float64 `protobuf:"fixed64,3,opt,name=progress,proto3" json:"progress,omitempty"` + // Internal field, do not use directly. + Status *status.Status `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` +} + +func (x *InternalUpdateGraphOperationRequest) Reset() { + *x = InternalUpdateGraphOperationRequest{} + mi := &file_google_spanner_admin_database_v1_spanner_database_admin_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InternalUpdateGraphOperationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InternalUpdateGraphOperationRequest) ProtoMessage() {} + +func (x *InternalUpdateGraphOperationRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_spanner_admin_database_v1_spanner_database_admin_proto_msgTypes[27] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InternalUpdateGraphOperationRequest.ProtoReflect.Descriptor instead. +func (*InternalUpdateGraphOperationRequest) Descriptor() ([]byte, []int) { + return file_google_spanner_admin_database_v1_spanner_database_admin_proto_rawDescGZIP(), []int{27} +} + +func (x *InternalUpdateGraphOperationRequest) GetDatabase() string { + if x != nil { + return x.Database + } + return "" +} + +func (x *InternalUpdateGraphOperationRequest) GetOperationId() string { + if x != nil { + return x.OperationId + } + return "" +} + +func (x *InternalUpdateGraphOperationRequest) GetVmIdentityToken() string { + if x != nil { + return x.VmIdentityToken + } + return "" +} + +func (x *InternalUpdateGraphOperationRequest) GetProgress() float64 { + if x != nil { + return x.Progress + } + return 0 +} + +func (x *InternalUpdateGraphOperationRequest) GetStatus() *status.Status { + if x != nil { + return x.Status + } + return nil +} + +// Internal response proto, do not use directly. +type InternalUpdateGraphOperationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *InternalUpdateGraphOperationResponse) Reset() { + *x = InternalUpdateGraphOperationResponse{} + mi := &file_google_spanner_admin_database_v1_spanner_database_admin_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *InternalUpdateGraphOperationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InternalUpdateGraphOperationResponse) ProtoMessage() {} + +func (x *InternalUpdateGraphOperationResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_spanner_admin_database_v1_spanner_database_admin_proto_msgTypes[28] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InternalUpdateGraphOperationResponse.ProtoReflect.Descriptor instead. +func (*InternalUpdateGraphOperationResponse) Descriptor() ([]byte, []int) { + return file_google_spanner_admin_database_v1_spanner_database_admin_proto_rawDescGZIP(), []int{28} +} + // A split key. type SplitPoints_Key struct { state protoimpl.MessageState @@ -2388,7 +2509,7 @@ type SplitPoints_Key struct { func (x *SplitPoints_Key) Reset() { *x = SplitPoints_Key{} - mi := &file_google_spanner_admin_database_v1_spanner_database_admin_proto_msgTypes[27] + mi := &file_google_spanner_admin_database_v1_spanner_database_admin_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2400,7 +2521,7 @@ func (x *SplitPoints_Key) String() string { func (*SplitPoints_Key) ProtoMessage() {} func (x *SplitPoints_Key) ProtoReflect() protoreflect.Message { - mi := &file_google_spanner_admin_database_v1_spanner_database_admin_proto_msgTypes[27] + mi := &file_google_spanner_admin_database_v1_spanner_database_admin_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2453,858 +2574,892 @@ var file_google_spanner_admin_database_v1_spanner_database_admin_proto_rawDesc = 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x36, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, - 0x65, 0x72, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc3, 0x01, 0x0a, 0x0b, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x54, 0x0a, 0x0b, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x4f, 0x0a, 0x0b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, - 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, - 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, - 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, - 0x82, 0x08, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, + 0x73, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xc3, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x54, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4f, 0x0a, 0x0b, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0a, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x82, 0x08, 0x0a, 0x08, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4b, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x55, 0x0a, + 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, + 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x64, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0f, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, + 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x18, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x16, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x53, 0x0a, 0x15, 0x65, 0x61, 0x72, + 0x6c, 0x69, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x13, 0x65, 0x61, 0x72, 0x6c, 0x69, + 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, + 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x61, 0x0a, 0x10, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, - 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x64, 0x0a, 0x11, 0x65, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x5e, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, + 0x44, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x34, 0x0a, + 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x6f, + 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x72, 0x6f, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x22, 0x4d, 0x0a, 0x05, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, + 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x41, 0x44, + 0x59, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x4f, 0x50, 0x54, + 0x49, 0x4d, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x3a, 0x62, 0xea, 0x41, 0x5f, 0x0a, 0x1f, + 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, + 0x3c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x7d, 0x22, 0x93, 0x01, + 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, + 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, + 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x09, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0xb3, 0x03, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x10, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x72, 0x61, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x64, 0x0a, 0x11, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x61, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x69, 0x61, + 0x6c, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x3d, 0x0a, 0x18, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x74, - 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x12, 0x53, 0x0a, 0x15, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x13, 0x65, 0x61, 0x72, 0x6c, 0x69, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4c, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x12, 0x61, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x69, - 0x61, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x69, 0x61, - 0x6c, 0x65, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, - 0x72, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x72, 0x6f, 0x70, - 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0b, 0x72, 0x65, - 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, - 0x67, 0x22, 0x4d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, - 0x09, 0x0a, 0x05, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, - 0x41, 0x44, 0x59, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x03, - 0x3a, 0x62, 0xea, 0x41, 0x5f, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x3c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x7d, 0x2f, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x7d, 0x22, 0x93, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, - 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x15, 0x4c, - 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x12, 0x26, - 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb3, 0x03, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, - 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x2e, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x0f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x64, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x61, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x5f, 0x64, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, - 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x69, 0x61, - 0x6c, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x44, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x11, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x5a, 0x0a, 0x16, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, - 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, 0x51, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, - 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x15, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xf9, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, + 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x69, 0x61, 0x6c, + 0x65, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x5a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x51, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, + 0x40, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x22, 0x51, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, + 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, + 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, - 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x54, 0x69, 0x6d, 0x65, - 0x22, 0x87, 0x02, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, - 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x11, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x0f, - 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x74, 0x68, 0x72, 0x6f, - 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x74, 0x0a, 0x16, 0x44, 0x64, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x22, 0x8e, 0x03, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, - 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x47, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x21, 0x0a, 0x09, 0x74, 0x68, 0x72, - 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x09, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x12, 0x4f, 0x0a, 0x08, - 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x52, 0x0a, - 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x64, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0x5a, 0x0a, 0x13, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, 0x5c, 0x0a, - 0x15, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x52, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xf9, 0x01, + 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x51, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x08, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3b, 0x0a, 0x0b, + 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x87, 0x02, 0x0a, 0x18, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, 0x65, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, - 0x72, 0x73, 0x22, 0xb4, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, - 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x1e, 0x4c, 0x69, - 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, - 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, - 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, - 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x22, 0xbc, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, - 0x24, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x06, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x70, 0x61, 0x6e, - 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x06, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x12, 0x73, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x22, 0xde, 0x03, 0x0a, 0x1f, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7e, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, - 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, - 0x01, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, - 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x0a, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x0d, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, - 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, - 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x55, 0x53, 0x45, 0x5f, 0x43, 0x4f, - 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4f, 0x52, 0x5f, - 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0x5f, 0x44, 0x45, - 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, - 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x5f, 0x4d, - 0x41, 0x4e, 0x41, 0x47, 0x45, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x03, 0x22, 0xe0, 0x03, 0x0a, 0x17, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x38, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xfa, - 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x0b, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x4f, 0x0a, 0x0b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, - 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, - 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x4f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, - 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x47, - 0x0a, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1d, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, - 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xad, 0x01, 0x0a, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6d, - 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, + 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, + 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x70, 0x75, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x22, 0x74, 0x0a, 0x16, 0x44, 0x64, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x8e, 0x03, 0x0a, 0x19, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x47, 0x0a, 0x11, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x73, 0x12, 0x21, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x74, 0x68, 0x72, 0x6f, + 0x74, 0x74, 0x6c, 0x65, 0x64, 0x12, 0x4f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x08, 0x70, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x3a, 0x7b, 0xea, 0x41, 0x78, 0x0a, 0x23, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x51, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x6c, 0x65, 0x7d, 0x22, 0x97, 0x01, - 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9a, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x52, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x64, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x07, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x5a, 0x0a, 0x13, 0x44, 0x72, + 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x43, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, + 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, 0x5c, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x43, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, + 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x22, 0x65, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, + 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x22, 0xb4, 0x01, 0x0a, 0x1d, + 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xbc, 0x02, 0x0a, + 0x16, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, + 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x3c, + 0x0a, 0x06, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, + 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x48, 0x00, 0x52, 0x06, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x73, 0x0a, 0x11, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xde, 0x03, 0x0a, 0x1f, + 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x7e, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x4b, 0x0a, 0x0c, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, + 0x52, 0x0a, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x0d, + 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x0b, + 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x0e, + 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, + 0x0a, 0x1b, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x2b, 0x0a, 0x27, 0x55, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x44, 0x45, + 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4f, 0x52, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, + 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, + 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x45, + 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x43, + 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x44, 0x5f, + 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x22, 0xe0, 0x03, 0x0a, + 0x17, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, + 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4f, 0x0a, 0x0b, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x0d, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, - 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd6, 0x01, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x53, 0x70, 0x6c, 0x69, - 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, - 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, - 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x0c, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x6c, - 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x73, - 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x09, 0x69, 0x6e, - 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x18, 0x0a, - 0x16, 0x41, 0x64, 0x64, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8c, 0x02, 0x0a, 0x0b, 0x53, 0x70, 0x6c, 0x69, - 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x4a, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, - 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x2e, 0x4b, 0x65, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, - 0x40, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, + 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x0a, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4f, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6d, + 0x69, 0x7a, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x1d, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x42, 0x0d, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, + 0xad, 0x01, 0x0a, 0x20, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4f, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, + 0xa4, 0x01, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x7b, 0xea, 0x41, 0x78, 0x0a, 0x23, + 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, + 0x6f, 0x6c, 0x65, 0x12, 0x51, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x7d, 0x2f, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x2f, + 0x7b, 0x72, 0x6f, 0x6c, 0x65, 0x7d, 0x22, 0x97, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, + 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x22, 0x9a, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, + 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd6, 0x01, + 0x0a, 0x15, 0x41, 0x64, 0x64, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x0c, + 0x73, 0x70, 0x6c, 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x09, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x18, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x53, 0x70, 0x6c, + 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x8c, 0x02, 0x0a, 0x0b, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x4a, 0x0a, 0x04, + 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, + 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2e, 0x4b, 0x65, 0x79, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x43, 0x0a, 0x03, 0x4b, 0x65, + 0x79, 0x12, 0x3c, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x1a, 0x43, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, - 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6b, 0x65, - 0x79, 0x50, 0x61, 0x72, 0x74, 0x73, 0x2a, 0x35, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x01, 0x32, 0x83, 0x33, - 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, - 0xc0, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x73, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, - 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x3e, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x50, 0x61, 0x72, 0x74, 0x73, 0x22, + 0x95, 0x02, 0x0a, 0x23, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x21, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x0c, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x11, 0x76, 0x6d, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x76, 0x6d, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x72, + 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x26, 0x0a, 0x24, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, + 0x35, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x41, + 0x43, 0x4b, 0x55, 0x50, 0x10, 0x01, 0x32, 0xcd, 0x34, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0xc0, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0xda, 0x41, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, + 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x12, 0xa4, 0x02, 0x0a, 0x0e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x37, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x01, 0xca, 0x41, 0x64, 0x0a, 0x29, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x37, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xda, 0x41, 0x17, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, + 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x73, 0x12, 0xa4, 0x02, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, + 0x65, 0x73, 0x12, 0xad, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x22, 0x3c, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, + 0x2a, 0x7d, 0x12, 0xef, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, - 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x01, - 0xca, 0x41, 0x64, 0x0a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, - 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x37, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x17, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x2c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x12, 0xad, 0x01, 0x0a, 0x0b, 0x47, 0x65, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, - 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, 0x3c, 0xda, 0x41, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xef, 0x01, 0x0a, 0x0e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x37, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, - 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, 0xca, 0x41, 0x22, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x12, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x14, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x32, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x9d, 0x02, 0x0a, 0x11, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x64, - 0x6c, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, + 0xca, 0x41, 0x22, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x16, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x14, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x42, 0x3a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x32, 0x36, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x9d, 0x02, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xac, 0x01, 0xca, 0x41, 0x53, 0x0a, 0x15, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x12, 0x3a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xac, 0x01, 0xca, - 0x41, 0x53, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x13, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x2c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x3a, 0x3a, 0x01, 0x2a, 0x32, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x64, 0x6c, 0x12, 0xa3, 0x01, 0x0a, 0x0c, - 0x44, 0x72, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x35, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x72, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x44, 0xda, 0x41, 0x08, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, - 0x7d, 0x12, 0xcd, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x44, 0x64, 0x6c, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, - 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, + 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, + 0x13, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x32, 0x35, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x64, 0x64, 0x6c, 0x12, 0xa3, 0x01, 0x0a, 0x0c, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x44, 0xda, 0x41, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xcd, 0x01, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0xda, 0x41, 0x08, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x44, 0x64, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x48, 0xda, 0x41, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x64, 0x6c, 0x12, 0xc2, 0x02, 0x0a, 0x0c, 0x53, + 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x49, + 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xf6, 0x01, 0xda, 0x41, 0x0f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x2c, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0xdd, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x41, 0x3a, 0x01, 0x2a, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, - 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x64, - 0x6c, 0x12, 0xc2, 0x02, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xf6, 0x01, - 0xda, 0x41, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdd, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x41, 0x3a, 0x01, - 0x2a, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, - 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5a, - 0x55, 0x3a, 0x01, 0x2a, 0x22, 0x50, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x61, 0x6d, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x61, 0x6d, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0xbb, 0x02, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x49, 0x61, - 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x22, 0xef, 0x01, 0xda, 0x41, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdd, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x41, 0x3a, 0x01, 0x2a, 0x22, - 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, - 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5a, 0x55, 0x3a, - 0x01, 0x2a, 0x22, 0x50, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x12, 0xd4, 0x03, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, - 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, - 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xe8, 0x02, 0xda, 0x41, 0x14, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x70, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xca, - 0x02, 0x3a, 0x01, 0x2a, 0x5a, 0x47, 0x3a, 0x01, 0x2a, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, 0x65, 0x73, 0x74, 0x49, - 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x5b, 0x3a, - 0x01, 0x2a, 0x22, 0x56, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x59, 0x3a, 0x01, 0x2a, 0x22, - 0x54, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, + 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, + 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5a, 0x55, 0x3a, 0x01, 0x2a, 0x22, 0x50, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x2f, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, + 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, + 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, - 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x2f, - 0x2a, 0x7d, 0x3a, 0x74, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x9f, 0x02, 0x0a, 0x0c, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x35, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, - 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0xb8, 0x01, 0xca, 0x41, 0x60, 0x0a, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x12, 0x35, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, - 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x17, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x2c, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2c, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, - 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x06, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, + 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, + 0xbb, 0x02, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xef, 0x01, 0xda, 0x41, + 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xdd, 0x01, + 0x3a, 0x01, 0x2a, 0x5a, 0x41, 0x3a, 0x01, 0x2a, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5a, 0x55, 0x3a, 0x01, 0x2a, 0x22, 0x50, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, + 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x3e, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0xd4, 0x03, + 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe8, 0x02, 0xda, 0x41, 0x14, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xca, 0x02, 0x3a, 0x01, 0x2a, 0x5a, 0x47, 0x3a, + 0x01, 0x2a, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, + 0x2f, 0x2a, 0x7d, 0x3a, 0x74, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x5a, 0x5b, 0x3a, 0x01, 0x2a, 0x22, 0x56, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, + 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x74, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x5a, 0x59, 0x3a, 0x01, 0x2a, 0x22, 0x54, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, 0x65, 0x73, 0x74, + 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x44, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0xac, 0x02, - 0x0a, 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x33, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x70, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, - 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0xc9, 0x01, 0xca, 0x41, 0x5e, 0x0a, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, + 0x7d, 0x3a, 0x74, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x9f, 0x02, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, - 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, + 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb8, 0x01, 0xca, 0x41, + 0x60, 0x0a, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x35, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xda, 0x41, 0x17, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x62, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x2c, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x35, 0x3a, 0x06, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0xac, 0x02, 0x0a, 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc9, 0x01, 0xca, 0x41, 0x5e, 0x0a, + 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x2a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x2c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2c, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x3a, 0x63, 0x6f, 0x70, 0x79, 0x12, 0xa5, 0x01, 0x0a, - 0x09, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, + 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x2a, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, + 0x2c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2c, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, + 0x3a, 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, + 0x3a, 0x63, 0x6f, 0x70, 0x79, 0x12, 0xa5, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, + 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x22, 0x3a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, + 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xc8, 0x01, + 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x3a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, + 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, + 0x57, 0xda, 0x41, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x06, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x32, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x62, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x99, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xc8, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, + 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x73, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, + 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x3c, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, + 0xb1, 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, + 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, + 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc4, 0x01, 0xca, + 0x41, 0x65, 0x0a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, + 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x22, 0x57, 0xda, 0x41, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x3c, 0x3a, 0x06, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x32, 0x32, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x12, - 0x99, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, - 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x3a, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x2a, 0x2b, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x2c, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x2c, 0x62, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x01, 0x2a, 0x22, 0x35, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, - 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x0b, - 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x34, 0x2e, 0x67, 0x6f, + 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x3a, 0x72, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x12, 0xe4, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x47, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xdc, 0x01, 0x0a, 0x14, 0x4c, + 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, + 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x45, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xdc, 0x01, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, + 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, - 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x12, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0xb1, 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, - 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0xc4, 0x01, 0xca, 0x41, 0x65, 0x0a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x12, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, - 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, - 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x5f, 0x69, 0x64, 0x2c, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, - 0x3a, 0x01, 0x2a, 0x22, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0xe8, 0x01, 0x0a, 0x0e, 0x41, 0x64, 0x64, + 0x53, 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x37, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x64, 0x64, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, + 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x70, 0x6c, 0x69, 0x74, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, + 0xda, 0x41, 0x15, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2c, 0x73, 0x70, 0x6c, 0x69, + 0x74, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x3a, 0x01, + 0x2a, 0x22, 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x73, 0x3a, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0xe4, 0x01, 0x0a, 0x16, 0x4c, - 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x7b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0xdc, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x64, 0x64, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x12, 0x8e, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x3d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x84, 0x01, + 0xda, 0x41, 0x29, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x2c, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x52, 0x3a, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x22, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x73, 0x12, 0xd1, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0xda, 0x41, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0xdc, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, - 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x4e, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, - 0x12, 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, - 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, - 0xe8, 0x01, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, - 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x64, 0x64, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0xda, 0x41, 0x15, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x2c, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x3a, 0x01, 0x2a, 0x22, 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x64, 0x64, 0x53, - 0x70, 0x6c, 0x69, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x8e, 0x02, 0x0a, 0x14, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x4e, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x90, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, + 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x22, 0x86, 0x01, 0xda, 0x41, 0x1b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, 0x3a, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x32, 0x4f, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xbd, 0x01, 0x0a, 0x14, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, + 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4e, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x2a, 0x3f, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xe4, 0x01, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x73, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, - 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x22, 0x84, 0x01, 0xda, 0x41, 0x29, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x2c, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x2c, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x52, 0x3a, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x3f, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0xd1, 0x01, 0x0a, 0x11, - 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, + 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, - 0x4e, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, - 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, - 0x90, 0x02, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, 0x86, 0x01, 0xda, 0x41, 0x1b, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x2c, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, - 0x3a, 0x0f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x32, 0x4f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x2f, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, - 0x2a, 0x7d, 0x12, 0xbd, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x3d, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x4e, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x41, 0x2a, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x2f, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2f, - 0x2a, 0x7d, 0x12, 0xe4, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x50, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, + 0x2a, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x73, 0x12, 0xc7, 0x01, 0x0a, 0x1c, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, + 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x1a, 0x78, 0xca, 0x41, 0x16, 0x73, 0x70, + 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, + 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x18, 0xda, 0x41, 0x15, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2c, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x1a, 0x78, 0xca, 0x41, + 0x16, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x5c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x42, 0xd6, 0x03, 0xea, 0x41, 0x4a, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x5c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, - 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x42, 0xd6, 0x03, 0xea, 0x41, 0x4a, 0x0a, 0x1f, 0x73, 0x70, 0x61, 0x6e, 0x6e, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x27, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x7d, 0xea, 0x41, 0x7b, 0x0a, 0x28, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x27, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x7d, 0xea, 0x41, 0x7b, 0x0a, 0x28, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x4f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x7d, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, - 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x19, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x46, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, - 0x72, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, - 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x70, - 0x62, 0x3b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x70, 0x62, 0xaa, 0x02, 0x26, 0x47, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x70, 0x61, 0x6e, - 0x6e, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, - 0x73, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x26, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5c, 0x41, 0x64, 0x6d, - 0x69, 0x6e, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5c, 0x56, 0x31, 0xea, 0x02, - 0x2b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, - 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x3a, 0x3a, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x6d, 0x2f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x7d, 0x2f, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x19, 0x53, 0x70, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x46, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x70, 0x61, + 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x61, 0x73, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x70, 0x62, 0x3b, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x70, 0x62, 0xaa, + 0x02, 0x26, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, + 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x26, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5c, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5c, 0x56, + 0x31, 0xea, 0x02, 0x2b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x3a, 0x3a, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3a, 0x3a, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3320,7 +3475,7 @@ func file_google_spanner_admin_database_v1_spanner_database_admin_proto_rawDescG } var file_google_spanner_admin_database_v1_spanner_database_admin_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_google_spanner_admin_database_v1_spanner_database_admin_proto_msgTypes = make([]protoimpl.MessageInfo, 28) +var file_google_spanner_admin_database_v1_spanner_database_admin_proto_msgTypes = make([]protoimpl.MessageInfo, 30) var file_google_spanner_admin_database_v1_spanner_database_admin_proto_goTypes = []any{ (RestoreSourceType)(0), // 0: google.spanner.admin.database.v1.RestoreSourceType (Database_State)(0), // 1: google.spanner.admin.database.v1.Database.State @@ -3352,131 +3507,137 @@ var file_google_spanner_admin_database_v1_spanner_database_admin_proto_goTypes = (*AddSplitPointsRequest)(nil), // 27: google.spanner.admin.database.v1.AddSplitPointsRequest (*AddSplitPointsResponse)(nil), // 28: google.spanner.admin.database.v1.AddSplitPointsResponse (*SplitPoints)(nil), // 29: google.spanner.admin.database.v1.SplitPoints - (*SplitPoints_Key)(nil), // 30: google.spanner.admin.database.v1.SplitPoints.Key - (*BackupInfo)(nil), // 31: google.spanner.admin.database.v1.BackupInfo - (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp - (*EncryptionConfig)(nil), // 33: google.spanner.admin.database.v1.EncryptionConfig - (*EncryptionInfo)(nil), // 34: google.spanner.admin.database.v1.EncryptionInfo - (DatabaseDialect)(0), // 35: google.spanner.admin.database.v1.DatabaseDialect - (*fieldmaskpb.FieldMask)(nil), // 36: google.protobuf.FieldMask - (*OperationProgress)(nil), // 37: google.spanner.admin.database.v1.OperationProgress - (*longrunningpb.Operation)(nil), // 38: google.longrunning.Operation - (*structpb.ListValue)(nil), // 39: google.protobuf.ListValue - (*iampb.SetIamPolicyRequest)(nil), // 40: google.iam.v1.SetIamPolicyRequest - (*iampb.GetIamPolicyRequest)(nil), // 41: google.iam.v1.GetIamPolicyRequest - (*iampb.TestIamPermissionsRequest)(nil), // 42: google.iam.v1.TestIamPermissionsRequest - (*CreateBackupRequest)(nil), // 43: google.spanner.admin.database.v1.CreateBackupRequest - (*CopyBackupRequest)(nil), // 44: google.spanner.admin.database.v1.CopyBackupRequest - (*GetBackupRequest)(nil), // 45: google.spanner.admin.database.v1.GetBackupRequest - (*UpdateBackupRequest)(nil), // 46: google.spanner.admin.database.v1.UpdateBackupRequest - (*DeleteBackupRequest)(nil), // 47: google.spanner.admin.database.v1.DeleteBackupRequest - (*ListBackupsRequest)(nil), // 48: google.spanner.admin.database.v1.ListBackupsRequest - (*ListBackupOperationsRequest)(nil), // 49: google.spanner.admin.database.v1.ListBackupOperationsRequest - (*CreateBackupScheduleRequest)(nil), // 50: google.spanner.admin.database.v1.CreateBackupScheduleRequest - (*GetBackupScheduleRequest)(nil), // 51: google.spanner.admin.database.v1.GetBackupScheduleRequest - (*UpdateBackupScheduleRequest)(nil), // 52: google.spanner.admin.database.v1.UpdateBackupScheduleRequest - (*DeleteBackupScheduleRequest)(nil), // 53: google.spanner.admin.database.v1.DeleteBackupScheduleRequest - (*ListBackupSchedulesRequest)(nil), // 54: google.spanner.admin.database.v1.ListBackupSchedulesRequest - (*emptypb.Empty)(nil), // 55: google.protobuf.Empty - (*iampb.Policy)(nil), // 56: google.iam.v1.Policy - (*iampb.TestIamPermissionsResponse)(nil), // 57: google.iam.v1.TestIamPermissionsResponse - (*Backup)(nil), // 58: google.spanner.admin.database.v1.Backup - (*ListBackupsResponse)(nil), // 59: google.spanner.admin.database.v1.ListBackupsResponse - (*ListBackupOperationsResponse)(nil), // 60: google.spanner.admin.database.v1.ListBackupOperationsResponse - (*BackupSchedule)(nil), // 61: google.spanner.admin.database.v1.BackupSchedule - (*ListBackupSchedulesResponse)(nil), // 62: google.spanner.admin.database.v1.ListBackupSchedulesResponse + (*InternalUpdateGraphOperationRequest)(nil), // 30: google.spanner.admin.database.v1.InternalUpdateGraphOperationRequest + (*InternalUpdateGraphOperationResponse)(nil), // 31: google.spanner.admin.database.v1.InternalUpdateGraphOperationResponse + (*SplitPoints_Key)(nil), // 32: google.spanner.admin.database.v1.SplitPoints.Key + (*BackupInfo)(nil), // 33: google.spanner.admin.database.v1.BackupInfo + (*timestamppb.Timestamp)(nil), // 34: google.protobuf.Timestamp + (*EncryptionConfig)(nil), // 35: google.spanner.admin.database.v1.EncryptionConfig + (*EncryptionInfo)(nil), // 36: google.spanner.admin.database.v1.EncryptionInfo + (DatabaseDialect)(0), // 37: google.spanner.admin.database.v1.DatabaseDialect + (*fieldmaskpb.FieldMask)(nil), // 38: google.protobuf.FieldMask + (*OperationProgress)(nil), // 39: google.spanner.admin.database.v1.OperationProgress + (*longrunningpb.Operation)(nil), // 40: google.longrunning.Operation + (*status.Status)(nil), // 41: google.rpc.Status + (*structpb.ListValue)(nil), // 42: google.protobuf.ListValue + (*iampb.SetIamPolicyRequest)(nil), // 43: google.iam.v1.SetIamPolicyRequest + (*iampb.GetIamPolicyRequest)(nil), // 44: google.iam.v1.GetIamPolicyRequest + (*iampb.TestIamPermissionsRequest)(nil), // 45: google.iam.v1.TestIamPermissionsRequest + (*CreateBackupRequest)(nil), // 46: google.spanner.admin.database.v1.CreateBackupRequest + (*CopyBackupRequest)(nil), // 47: google.spanner.admin.database.v1.CopyBackupRequest + (*GetBackupRequest)(nil), // 48: google.spanner.admin.database.v1.GetBackupRequest + (*UpdateBackupRequest)(nil), // 49: google.spanner.admin.database.v1.UpdateBackupRequest + (*DeleteBackupRequest)(nil), // 50: google.spanner.admin.database.v1.DeleteBackupRequest + (*ListBackupsRequest)(nil), // 51: google.spanner.admin.database.v1.ListBackupsRequest + (*ListBackupOperationsRequest)(nil), // 52: google.spanner.admin.database.v1.ListBackupOperationsRequest + (*CreateBackupScheduleRequest)(nil), // 53: google.spanner.admin.database.v1.CreateBackupScheduleRequest + (*GetBackupScheduleRequest)(nil), // 54: google.spanner.admin.database.v1.GetBackupScheduleRequest + (*UpdateBackupScheduleRequest)(nil), // 55: google.spanner.admin.database.v1.UpdateBackupScheduleRequest + (*DeleteBackupScheduleRequest)(nil), // 56: google.spanner.admin.database.v1.DeleteBackupScheduleRequest + (*ListBackupSchedulesRequest)(nil), // 57: google.spanner.admin.database.v1.ListBackupSchedulesRequest + (*emptypb.Empty)(nil), // 58: google.protobuf.Empty + (*iampb.Policy)(nil), // 59: google.iam.v1.Policy + (*iampb.TestIamPermissionsResponse)(nil), // 60: google.iam.v1.TestIamPermissionsResponse + (*Backup)(nil), // 61: google.spanner.admin.database.v1.Backup + (*ListBackupsResponse)(nil), // 62: google.spanner.admin.database.v1.ListBackupsResponse + (*ListBackupOperationsResponse)(nil), // 63: google.spanner.admin.database.v1.ListBackupOperationsResponse + (*BackupSchedule)(nil), // 64: google.spanner.admin.database.v1.BackupSchedule + (*ListBackupSchedulesResponse)(nil), // 65: google.spanner.admin.database.v1.ListBackupSchedulesResponse } var file_google_spanner_admin_database_v1_spanner_database_admin_proto_depIdxs = []int32{ 0, // 0: google.spanner.admin.database.v1.RestoreInfo.source_type:type_name -> google.spanner.admin.database.v1.RestoreSourceType - 31, // 1: google.spanner.admin.database.v1.RestoreInfo.backup_info:type_name -> google.spanner.admin.database.v1.BackupInfo + 33, // 1: google.spanner.admin.database.v1.RestoreInfo.backup_info:type_name -> google.spanner.admin.database.v1.BackupInfo 1, // 2: google.spanner.admin.database.v1.Database.state:type_name -> google.spanner.admin.database.v1.Database.State - 32, // 3: google.spanner.admin.database.v1.Database.create_time:type_name -> google.protobuf.Timestamp + 34, // 3: google.spanner.admin.database.v1.Database.create_time:type_name -> google.protobuf.Timestamp 3, // 4: google.spanner.admin.database.v1.Database.restore_info:type_name -> google.spanner.admin.database.v1.RestoreInfo - 33, // 5: google.spanner.admin.database.v1.Database.encryption_config:type_name -> google.spanner.admin.database.v1.EncryptionConfig - 34, // 6: google.spanner.admin.database.v1.Database.encryption_info:type_name -> google.spanner.admin.database.v1.EncryptionInfo - 32, // 7: google.spanner.admin.database.v1.Database.earliest_version_time:type_name -> google.protobuf.Timestamp - 35, // 8: google.spanner.admin.database.v1.Database.database_dialect:type_name -> google.spanner.admin.database.v1.DatabaseDialect + 35, // 5: google.spanner.admin.database.v1.Database.encryption_config:type_name -> google.spanner.admin.database.v1.EncryptionConfig + 36, // 6: google.spanner.admin.database.v1.Database.encryption_info:type_name -> google.spanner.admin.database.v1.EncryptionInfo + 34, // 7: google.spanner.admin.database.v1.Database.earliest_version_time:type_name -> google.protobuf.Timestamp + 37, // 8: google.spanner.admin.database.v1.Database.database_dialect:type_name -> google.spanner.admin.database.v1.DatabaseDialect 4, // 9: google.spanner.admin.database.v1.ListDatabasesResponse.databases:type_name -> google.spanner.admin.database.v1.Database - 33, // 10: google.spanner.admin.database.v1.CreateDatabaseRequest.encryption_config:type_name -> google.spanner.admin.database.v1.EncryptionConfig - 35, // 11: google.spanner.admin.database.v1.CreateDatabaseRequest.database_dialect:type_name -> google.spanner.admin.database.v1.DatabaseDialect + 35, // 10: google.spanner.admin.database.v1.CreateDatabaseRequest.encryption_config:type_name -> google.spanner.admin.database.v1.EncryptionConfig + 37, // 11: google.spanner.admin.database.v1.CreateDatabaseRequest.database_dialect:type_name -> google.spanner.admin.database.v1.DatabaseDialect 4, // 12: google.spanner.admin.database.v1.UpdateDatabaseRequest.database:type_name -> google.spanner.admin.database.v1.Database - 36, // 13: google.spanner.admin.database.v1.UpdateDatabaseRequest.update_mask:type_name -> google.protobuf.FieldMask + 38, // 13: google.spanner.admin.database.v1.UpdateDatabaseRequest.update_mask:type_name -> google.protobuf.FieldMask 10, // 14: google.spanner.admin.database.v1.UpdateDatabaseMetadata.request:type_name -> google.spanner.admin.database.v1.UpdateDatabaseRequest - 37, // 15: google.spanner.admin.database.v1.UpdateDatabaseMetadata.progress:type_name -> google.spanner.admin.database.v1.OperationProgress - 32, // 16: google.spanner.admin.database.v1.UpdateDatabaseMetadata.cancel_time:type_name -> google.protobuf.Timestamp - 32, // 17: google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata.commit_timestamps:type_name -> google.protobuf.Timestamp - 37, // 18: google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata.progress:type_name -> google.spanner.admin.database.v1.OperationProgress + 39, // 15: google.spanner.admin.database.v1.UpdateDatabaseMetadata.progress:type_name -> google.spanner.admin.database.v1.OperationProgress + 34, // 16: google.spanner.admin.database.v1.UpdateDatabaseMetadata.cancel_time:type_name -> google.protobuf.Timestamp + 34, // 17: google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata.commit_timestamps:type_name -> google.protobuf.Timestamp + 39, // 18: google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata.progress:type_name -> google.spanner.admin.database.v1.OperationProgress 13, // 19: google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata.actions:type_name -> google.spanner.admin.database.v1.DdlStatementActionInfo - 38, // 20: google.spanner.admin.database.v1.ListDatabaseOperationsResponse.operations:type_name -> google.longrunning.Operation + 40, // 20: google.spanner.admin.database.v1.ListDatabaseOperationsResponse.operations:type_name -> google.longrunning.Operation 21, // 21: google.spanner.admin.database.v1.RestoreDatabaseRequest.encryption_config:type_name -> google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig 2, // 22: google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig.encryption_type:type_name -> google.spanner.admin.database.v1.RestoreDatabaseEncryptionConfig.EncryptionType 0, // 23: google.spanner.admin.database.v1.RestoreDatabaseMetadata.source_type:type_name -> google.spanner.admin.database.v1.RestoreSourceType - 31, // 24: google.spanner.admin.database.v1.RestoreDatabaseMetadata.backup_info:type_name -> google.spanner.admin.database.v1.BackupInfo - 37, // 25: google.spanner.admin.database.v1.RestoreDatabaseMetadata.progress:type_name -> google.spanner.admin.database.v1.OperationProgress - 32, // 26: google.spanner.admin.database.v1.RestoreDatabaseMetadata.cancel_time:type_name -> google.protobuf.Timestamp - 37, // 27: google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata.progress:type_name -> google.spanner.admin.database.v1.OperationProgress + 33, // 24: google.spanner.admin.database.v1.RestoreDatabaseMetadata.backup_info:type_name -> google.spanner.admin.database.v1.BackupInfo + 39, // 25: google.spanner.admin.database.v1.RestoreDatabaseMetadata.progress:type_name -> google.spanner.admin.database.v1.OperationProgress + 34, // 26: google.spanner.admin.database.v1.RestoreDatabaseMetadata.cancel_time:type_name -> google.protobuf.Timestamp + 39, // 27: google.spanner.admin.database.v1.OptimizeRestoredDatabaseMetadata.progress:type_name -> google.spanner.admin.database.v1.OperationProgress 24, // 28: google.spanner.admin.database.v1.ListDatabaseRolesResponse.database_roles:type_name -> google.spanner.admin.database.v1.DatabaseRole 29, // 29: google.spanner.admin.database.v1.AddSplitPointsRequest.split_points:type_name -> google.spanner.admin.database.v1.SplitPoints - 30, // 30: google.spanner.admin.database.v1.SplitPoints.keys:type_name -> google.spanner.admin.database.v1.SplitPoints.Key - 32, // 31: google.spanner.admin.database.v1.SplitPoints.expire_time:type_name -> google.protobuf.Timestamp - 39, // 32: google.spanner.admin.database.v1.SplitPoints.Key.key_parts:type_name -> google.protobuf.ListValue - 5, // 33: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabases:input_type -> google.spanner.admin.database.v1.ListDatabasesRequest - 7, // 34: google.spanner.admin.database.v1.DatabaseAdmin.CreateDatabase:input_type -> google.spanner.admin.database.v1.CreateDatabaseRequest - 9, // 35: google.spanner.admin.database.v1.DatabaseAdmin.GetDatabase:input_type -> google.spanner.admin.database.v1.GetDatabaseRequest - 10, // 36: google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase:input_type -> google.spanner.admin.database.v1.UpdateDatabaseRequest - 12, // 37: google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl:input_type -> google.spanner.admin.database.v1.UpdateDatabaseDdlRequest - 15, // 38: google.spanner.admin.database.v1.DatabaseAdmin.DropDatabase:input_type -> google.spanner.admin.database.v1.DropDatabaseRequest - 16, // 39: google.spanner.admin.database.v1.DatabaseAdmin.GetDatabaseDdl:input_type -> google.spanner.admin.database.v1.GetDatabaseDdlRequest - 40, // 40: google.spanner.admin.database.v1.DatabaseAdmin.SetIamPolicy:input_type -> google.iam.v1.SetIamPolicyRequest - 41, // 41: google.spanner.admin.database.v1.DatabaseAdmin.GetIamPolicy:input_type -> google.iam.v1.GetIamPolicyRequest - 42, // 42: google.spanner.admin.database.v1.DatabaseAdmin.TestIamPermissions:input_type -> google.iam.v1.TestIamPermissionsRequest - 43, // 43: google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup:input_type -> google.spanner.admin.database.v1.CreateBackupRequest - 44, // 44: google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup:input_type -> google.spanner.admin.database.v1.CopyBackupRequest - 45, // 45: google.spanner.admin.database.v1.DatabaseAdmin.GetBackup:input_type -> google.spanner.admin.database.v1.GetBackupRequest - 46, // 46: google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup:input_type -> google.spanner.admin.database.v1.UpdateBackupRequest - 47, // 47: google.spanner.admin.database.v1.DatabaseAdmin.DeleteBackup:input_type -> google.spanner.admin.database.v1.DeleteBackupRequest - 48, // 48: google.spanner.admin.database.v1.DatabaseAdmin.ListBackups:input_type -> google.spanner.admin.database.v1.ListBackupsRequest - 20, // 49: google.spanner.admin.database.v1.DatabaseAdmin.RestoreDatabase:input_type -> google.spanner.admin.database.v1.RestoreDatabaseRequest - 18, // 50: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabaseOperations:input_type -> google.spanner.admin.database.v1.ListDatabaseOperationsRequest - 49, // 51: google.spanner.admin.database.v1.DatabaseAdmin.ListBackupOperations:input_type -> google.spanner.admin.database.v1.ListBackupOperationsRequest - 25, // 52: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabaseRoles:input_type -> google.spanner.admin.database.v1.ListDatabaseRolesRequest - 27, // 53: google.spanner.admin.database.v1.DatabaseAdmin.AddSplitPoints:input_type -> google.spanner.admin.database.v1.AddSplitPointsRequest - 50, // 54: google.spanner.admin.database.v1.DatabaseAdmin.CreateBackupSchedule:input_type -> google.spanner.admin.database.v1.CreateBackupScheduleRequest - 51, // 55: google.spanner.admin.database.v1.DatabaseAdmin.GetBackupSchedule:input_type -> google.spanner.admin.database.v1.GetBackupScheduleRequest - 52, // 56: google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackupSchedule:input_type -> google.spanner.admin.database.v1.UpdateBackupScheduleRequest - 53, // 57: google.spanner.admin.database.v1.DatabaseAdmin.DeleteBackupSchedule:input_type -> google.spanner.admin.database.v1.DeleteBackupScheduleRequest - 54, // 58: google.spanner.admin.database.v1.DatabaseAdmin.ListBackupSchedules:input_type -> google.spanner.admin.database.v1.ListBackupSchedulesRequest - 6, // 59: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabases:output_type -> google.spanner.admin.database.v1.ListDatabasesResponse - 38, // 60: google.spanner.admin.database.v1.DatabaseAdmin.CreateDatabase:output_type -> google.longrunning.Operation - 4, // 61: google.spanner.admin.database.v1.DatabaseAdmin.GetDatabase:output_type -> google.spanner.admin.database.v1.Database - 38, // 62: google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase:output_type -> google.longrunning.Operation - 38, // 63: google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl:output_type -> google.longrunning.Operation - 55, // 64: google.spanner.admin.database.v1.DatabaseAdmin.DropDatabase:output_type -> google.protobuf.Empty - 17, // 65: google.spanner.admin.database.v1.DatabaseAdmin.GetDatabaseDdl:output_type -> google.spanner.admin.database.v1.GetDatabaseDdlResponse - 56, // 66: google.spanner.admin.database.v1.DatabaseAdmin.SetIamPolicy:output_type -> google.iam.v1.Policy - 56, // 67: google.spanner.admin.database.v1.DatabaseAdmin.GetIamPolicy:output_type -> google.iam.v1.Policy - 57, // 68: google.spanner.admin.database.v1.DatabaseAdmin.TestIamPermissions:output_type -> google.iam.v1.TestIamPermissionsResponse - 38, // 69: google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup:output_type -> google.longrunning.Operation - 38, // 70: google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup:output_type -> google.longrunning.Operation - 58, // 71: google.spanner.admin.database.v1.DatabaseAdmin.GetBackup:output_type -> google.spanner.admin.database.v1.Backup - 58, // 72: google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup:output_type -> google.spanner.admin.database.v1.Backup - 55, // 73: google.spanner.admin.database.v1.DatabaseAdmin.DeleteBackup:output_type -> google.protobuf.Empty - 59, // 74: google.spanner.admin.database.v1.DatabaseAdmin.ListBackups:output_type -> google.spanner.admin.database.v1.ListBackupsResponse - 38, // 75: google.spanner.admin.database.v1.DatabaseAdmin.RestoreDatabase:output_type -> google.longrunning.Operation - 19, // 76: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabaseOperations:output_type -> google.spanner.admin.database.v1.ListDatabaseOperationsResponse - 60, // 77: google.spanner.admin.database.v1.DatabaseAdmin.ListBackupOperations:output_type -> google.spanner.admin.database.v1.ListBackupOperationsResponse - 26, // 78: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabaseRoles:output_type -> google.spanner.admin.database.v1.ListDatabaseRolesResponse - 28, // 79: google.spanner.admin.database.v1.DatabaseAdmin.AddSplitPoints:output_type -> google.spanner.admin.database.v1.AddSplitPointsResponse - 61, // 80: google.spanner.admin.database.v1.DatabaseAdmin.CreateBackupSchedule:output_type -> google.spanner.admin.database.v1.BackupSchedule - 61, // 81: google.spanner.admin.database.v1.DatabaseAdmin.GetBackupSchedule:output_type -> google.spanner.admin.database.v1.BackupSchedule - 61, // 82: google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackupSchedule:output_type -> google.spanner.admin.database.v1.BackupSchedule - 55, // 83: google.spanner.admin.database.v1.DatabaseAdmin.DeleteBackupSchedule:output_type -> google.protobuf.Empty - 62, // 84: google.spanner.admin.database.v1.DatabaseAdmin.ListBackupSchedules:output_type -> google.spanner.admin.database.v1.ListBackupSchedulesResponse - 59, // [59:85] is the sub-list for method output_type - 33, // [33:59] is the sub-list for method input_type - 33, // [33:33] is the sub-list for extension type_name - 33, // [33:33] is the sub-list for extension extendee - 0, // [0:33] is the sub-list for field type_name + 32, // 30: google.spanner.admin.database.v1.SplitPoints.keys:type_name -> google.spanner.admin.database.v1.SplitPoints.Key + 34, // 31: google.spanner.admin.database.v1.SplitPoints.expire_time:type_name -> google.protobuf.Timestamp + 41, // 32: google.spanner.admin.database.v1.InternalUpdateGraphOperationRequest.status:type_name -> google.rpc.Status + 42, // 33: google.spanner.admin.database.v1.SplitPoints.Key.key_parts:type_name -> google.protobuf.ListValue + 5, // 34: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabases:input_type -> google.spanner.admin.database.v1.ListDatabasesRequest + 7, // 35: google.spanner.admin.database.v1.DatabaseAdmin.CreateDatabase:input_type -> google.spanner.admin.database.v1.CreateDatabaseRequest + 9, // 36: google.spanner.admin.database.v1.DatabaseAdmin.GetDatabase:input_type -> google.spanner.admin.database.v1.GetDatabaseRequest + 10, // 37: google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase:input_type -> google.spanner.admin.database.v1.UpdateDatabaseRequest + 12, // 38: google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl:input_type -> google.spanner.admin.database.v1.UpdateDatabaseDdlRequest + 15, // 39: google.spanner.admin.database.v1.DatabaseAdmin.DropDatabase:input_type -> google.spanner.admin.database.v1.DropDatabaseRequest + 16, // 40: google.spanner.admin.database.v1.DatabaseAdmin.GetDatabaseDdl:input_type -> google.spanner.admin.database.v1.GetDatabaseDdlRequest + 43, // 41: google.spanner.admin.database.v1.DatabaseAdmin.SetIamPolicy:input_type -> google.iam.v1.SetIamPolicyRequest + 44, // 42: google.spanner.admin.database.v1.DatabaseAdmin.GetIamPolicy:input_type -> google.iam.v1.GetIamPolicyRequest + 45, // 43: google.spanner.admin.database.v1.DatabaseAdmin.TestIamPermissions:input_type -> google.iam.v1.TestIamPermissionsRequest + 46, // 44: google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup:input_type -> google.spanner.admin.database.v1.CreateBackupRequest + 47, // 45: google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup:input_type -> google.spanner.admin.database.v1.CopyBackupRequest + 48, // 46: google.spanner.admin.database.v1.DatabaseAdmin.GetBackup:input_type -> google.spanner.admin.database.v1.GetBackupRequest + 49, // 47: google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup:input_type -> google.spanner.admin.database.v1.UpdateBackupRequest + 50, // 48: google.spanner.admin.database.v1.DatabaseAdmin.DeleteBackup:input_type -> google.spanner.admin.database.v1.DeleteBackupRequest + 51, // 49: google.spanner.admin.database.v1.DatabaseAdmin.ListBackups:input_type -> google.spanner.admin.database.v1.ListBackupsRequest + 20, // 50: google.spanner.admin.database.v1.DatabaseAdmin.RestoreDatabase:input_type -> google.spanner.admin.database.v1.RestoreDatabaseRequest + 18, // 51: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabaseOperations:input_type -> google.spanner.admin.database.v1.ListDatabaseOperationsRequest + 52, // 52: google.spanner.admin.database.v1.DatabaseAdmin.ListBackupOperations:input_type -> google.spanner.admin.database.v1.ListBackupOperationsRequest + 25, // 53: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabaseRoles:input_type -> google.spanner.admin.database.v1.ListDatabaseRolesRequest + 27, // 54: google.spanner.admin.database.v1.DatabaseAdmin.AddSplitPoints:input_type -> google.spanner.admin.database.v1.AddSplitPointsRequest + 53, // 55: google.spanner.admin.database.v1.DatabaseAdmin.CreateBackupSchedule:input_type -> google.spanner.admin.database.v1.CreateBackupScheduleRequest + 54, // 56: google.spanner.admin.database.v1.DatabaseAdmin.GetBackupSchedule:input_type -> google.spanner.admin.database.v1.GetBackupScheduleRequest + 55, // 57: google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackupSchedule:input_type -> google.spanner.admin.database.v1.UpdateBackupScheduleRequest + 56, // 58: google.spanner.admin.database.v1.DatabaseAdmin.DeleteBackupSchedule:input_type -> google.spanner.admin.database.v1.DeleteBackupScheduleRequest + 57, // 59: google.spanner.admin.database.v1.DatabaseAdmin.ListBackupSchedules:input_type -> google.spanner.admin.database.v1.ListBackupSchedulesRequest + 30, // 60: google.spanner.admin.database.v1.DatabaseAdmin.InternalUpdateGraphOperation:input_type -> google.spanner.admin.database.v1.InternalUpdateGraphOperationRequest + 6, // 61: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabases:output_type -> google.spanner.admin.database.v1.ListDatabasesResponse + 40, // 62: google.spanner.admin.database.v1.DatabaseAdmin.CreateDatabase:output_type -> google.longrunning.Operation + 4, // 63: google.spanner.admin.database.v1.DatabaseAdmin.GetDatabase:output_type -> google.spanner.admin.database.v1.Database + 40, // 64: google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabase:output_type -> google.longrunning.Operation + 40, // 65: google.spanner.admin.database.v1.DatabaseAdmin.UpdateDatabaseDdl:output_type -> google.longrunning.Operation + 58, // 66: google.spanner.admin.database.v1.DatabaseAdmin.DropDatabase:output_type -> google.protobuf.Empty + 17, // 67: google.spanner.admin.database.v1.DatabaseAdmin.GetDatabaseDdl:output_type -> google.spanner.admin.database.v1.GetDatabaseDdlResponse + 59, // 68: google.spanner.admin.database.v1.DatabaseAdmin.SetIamPolicy:output_type -> google.iam.v1.Policy + 59, // 69: google.spanner.admin.database.v1.DatabaseAdmin.GetIamPolicy:output_type -> google.iam.v1.Policy + 60, // 70: google.spanner.admin.database.v1.DatabaseAdmin.TestIamPermissions:output_type -> google.iam.v1.TestIamPermissionsResponse + 40, // 71: google.spanner.admin.database.v1.DatabaseAdmin.CreateBackup:output_type -> google.longrunning.Operation + 40, // 72: google.spanner.admin.database.v1.DatabaseAdmin.CopyBackup:output_type -> google.longrunning.Operation + 61, // 73: google.spanner.admin.database.v1.DatabaseAdmin.GetBackup:output_type -> google.spanner.admin.database.v1.Backup + 61, // 74: google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackup:output_type -> google.spanner.admin.database.v1.Backup + 58, // 75: google.spanner.admin.database.v1.DatabaseAdmin.DeleteBackup:output_type -> google.protobuf.Empty + 62, // 76: google.spanner.admin.database.v1.DatabaseAdmin.ListBackups:output_type -> google.spanner.admin.database.v1.ListBackupsResponse + 40, // 77: google.spanner.admin.database.v1.DatabaseAdmin.RestoreDatabase:output_type -> google.longrunning.Operation + 19, // 78: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabaseOperations:output_type -> google.spanner.admin.database.v1.ListDatabaseOperationsResponse + 63, // 79: google.spanner.admin.database.v1.DatabaseAdmin.ListBackupOperations:output_type -> google.spanner.admin.database.v1.ListBackupOperationsResponse + 26, // 80: google.spanner.admin.database.v1.DatabaseAdmin.ListDatabaseRoles:output_type -> google.spanner.admin.database.v1.ListDatabaseRolesResponse + 28, // 81: google.spanner.admin.database.v1.DatabaseAdmin.AddSplitPoints:output_type -> google.spanner.admin.database.v1.AddSplitPointsResponse + 64, // 82: google.spanner.admin.database.v1.DatabaseAdmin.CreateBackupSchedule:output_type -> google.spanner.admin.database.v1.BackupSchedule + 64, // 83: google.spanner.admin.database.v1.DatabaseAdmin.GetBackupSchedule:output_type -> google.spanner.admin.database.v1.BackupSchedule + 64, // 84: google.spanner.admin.database.v1.DatabaseAdmin.UpdateBackupSchedule:output_type -> google.spanner.admin.database.v1.BackupSchedule + 58, // 85: google.spanner.admin.database.v1.DatabaseAdmin.DeleteBackupSchedule:output_type -> google.protobuf.Empty + 65, // 86: google.spanner.admin.database.v1.DatabaseAdmin.ListBackupSchedules:output_type -> google.spanner.admin.database.v1.ListBackupSchedulesResponse + 31, // 87: google.spanner.admin.database.v1.DatabaseAdmin.InternalUpdateGraphOperation:output_type -> google.spanner.admin.database.v1.InternalUpdateGraphOperationResponse + 61, // [61:88] is the sub-list for method output_type + 34, // [34:61] is the sub-list for method input_type + 34, // [34:34] is the sub-list for extension type_name + 34, // [34:34] is the sub-list for extension extendee + 0, // [0:34] is the sub-list for field type_name } func init() { file_google_spanner_admin_database_v1_spanner_database_admin_proto_init() } @@ -3502,7 +3663,7 @@ func file_google_spanner_admin_database_v1_spanner_database_admin_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_spanner_admin_database_v1_spanner_database_admin_proto_rawDesc, NumEnums: 3, - NumMessages: 28, + NumMessages: 30, NumExtensions: 0, NumServices: 1, }, @@ -3718,6 +3879,9 @@ type DatabaseAdminClient interface { DeleteBackupSchedule(ctx context.Context, in *DeleteBackupScheduleRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // Lists all the backup schedules for the database. ListBackupSchedules(ctx context.Context, in *ListBackupSchedulesRequest, opts ...grpc.CallOption) (*ListBackupSchedulesResponse, error) + // This is an internal API called by Spanner Graph jobs. You should never need + // to call this API directly. + InternalUpdateGraphOperation(ctx context.Context, in *InternalUpdateGraphOperationRequest, opts ...grpc.CallOption) (*InternalUpdateGraphOperationResponse, error) } type databaseAdminClient struct { @@ -3962,6 +4126,15 @@ func (c *databaseAdminClient) ListBackupSchedules(ctx context.Context, in *ListB return out, nil } +func (c *databaseAdminClient) InternalUpdateGraphOperation(ctx context.Context, in *InternalUpdateGraphOperationRequest, opts ...grpc.CallOption) (*InternalUpdateGraphOperationResponse, error) { + out := new(InternalUpdateGraphOperationResponse) + err := c.cc.Invoke(ctx, "/google.spanner.admin.database.v1.DatabaseAdmin/InternalUpdateGraphOperation", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // DatabaseAdminServer is the server API for DatabaseAdmin service. type DatabaseAdminServer interface { // Lists Cloud Spanner databases. @@ -4153,6 +4326,9 @@ type DatabaseAdminServer interface { DeleteBackupSchedule(context.Context, *DeleteBackupScheduleRequest) (*emptypb.Empty, error) // Lists all the backup schedules for the database. ListBackupSchedules(context.Context, *ListBackupSchedulesRequest) (*ListBackupSchedulesResponse, error) + // This is an internal API called by Spanner Graph jobs. You should never need + // to call this API directly. + InternalUpdateGraphOperation(context.Context, *InternalUpdateGraphOperationRequest) (*InternalUpdateGraphOperationResponse, error) } // UnimplementedDatabaseAdminServer can be embedded to have forward compatible implementations. @@ -4160,82 +4336,85 @@ type UnimplementedDatabaseAdminServer struct { } func (*UnimplementedDatabaseAdminServer) ListDatabases(context.Context, *ListDatabasesRequest) (*ListDatabasesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListDatabases not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method ListDatabases not implemented") } func (*UnimplementedDatabaseAdminServer) CreateDatabase(context.Context, *CreateDatabaseRequest) (*longrunningpb.Operation, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateDatabase not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method CreateDatabase not implemented") } func (*UnimplementedDatabaseAdminServer) GetDatabase(context.Context, *GetDatabaseRequest) (*Database, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetDatabase not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method GetDatabase not implemented") } func (*UnimplementedDatabaseAdminServer) UpdateDatabase(context.Context, *UpdateDatabaseRequest) (*longrunningpb.Operation, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateDatabase not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method UpdateDatabase not implemented") } func (*UnimplementedDatabaseAdminServer) UpdateDatabaseDdl(context.Context, *UpdateDatabaseDdlRequest) (*longrunningpb.Operation, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateDatabaseDdl not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method UpdateDatabaseDdl not implemented") } func (*UnimplementedDatabaseAdminServer) DropDatabase(context.Context, *DropDatabaseRequest) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DropDatabase not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method DropDatabase not implemented") } func (*UnimplementedDatabaseAdminServer) GetDatabaseDdl(context.Context, *GetDatabaseDdlRequest) (*GetDatabaseDdlResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetDatabaseDdl not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method GetDatabaseDdl not implemented") } func (*UnimplementedDatabaseAdminServer) SetIamPolicy(context.Context, *iampb.SetIamPolicyRequest) (*iampb.Policy, error) { - return nil, status.Errorf(codes.Unimplemented, "method SetIamPolicy not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method SetIamPolicy not implemented") } func (*UnimplementedDatabaseAdminServer) GetIamPolicy(context.Context, *iampb.GetIamPolicyRequest) (*iampb.Policy, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetIamPolicy not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method GetIamPolicy not implemented") } func (*UnimplementedDatabaseAdminServer) TestIamPermissions(context.Context, *iampb.TestIamPermissionsRequest) (*iampb.TestIamPermissionsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method TestIamPermissions not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method TestIamPermissions not implemented") } func (*UnimplementedDatabaseAdminServer) CreateBackup(context.Context, *CreateBackupRequest) (*longrunningpb.Operation, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateBackup not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method CreateBackup not implemented") } func (*UnimplementedDatabaseAdminServer) CopyBackup(context.Context, *CopyBackupRequest) (*longrunningpb.Operation, error) { - return nil, status.Errorf(codes.Unimplemented, "method CopyBackup not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method CopyBackup not implemented") } func (*UnimplementedDatabaseAdminServer) GetBackup(context.Context, *GetBackupRequest) (*Backup, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetBackup not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method GetBackup not implemented") } func (*UnimplementedDatabaseAdminServer) UpdateBackup(context.Context, *UpdateBackupRequest) (*Backup, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateBackup not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method UpdateBackup not implemented") } func (*UnimplementedDatabaseAdminServer) DeleteBackup(context.Context, *DeleteBackupRequest) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteBackup not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method DeleteBackup not implemented") } func (*UnimplementedDatabaseAdminServer) ListBackups(context.Context, *ListBackupsRequest) (*ListBackupsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBackups not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method ListBackups not implemented") } func (*UnimplementedDatabaseAdminServer) RestoreDatabase(context.Context, *RestoreDatabaseRequest) (*longrunningpb.Operation, error) { - return nil, status.Errorf(codes.Unimplemented, "method RestoreDatabase not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method RestoreDatabase not implemented") } func (*UnimplementedDatabaseAdminServer) ListDatabaseOperations(context.Context, *ListDatabaseOperationsRequest) (*ListDatabaseOperationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListDatabaseOperations not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method ListDatabaseOperations not implemented") } func (*UnimplementedDatabaseAdminServer) ListBackupOperations(context.Context, *ListBackupOperationsRequest) (*ListBackupOperationsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBackupOperations not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method ListBackupOperations not implemented") } func (*UnimplementedDatabaseAdminServer) ListDatabaseRoles(context.Context, *ListDatabaseRolesRequest) (*ListDatabaseRolesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListDatabaseRoles not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method ListDatabaseRoles not implemented") } func (*UnimplementedDatabaseAdminServer) AddSplitPoints(context.Context, *AddSplitPointsRequest) (*AddSplitPointsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddSplitPoints not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method AddSplitPoints not implemented") } func (*UnimplementedDatabaseAdminServer) CreateBackupSchedule(context.Context, *CreateBackupScheduleRequest) (*BackupSchedule, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateBackupSchedule not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method CreateBackupSchedule not implemented") } func (*UnimplementedDatabaseAdminServer) GetBackupSchedule(context.Context, *GetBackupScheduleRequest) (*BackupSchedule, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetBackupSchedule not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method GetBackupSchedule not implemented") } func (*UnimplementedDatabaseAdminServer) UpdateBackupSchedule(context.Context, *UpdateBackupScheduleRequest) (*BackupSchedule, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateBackupSchedule not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method UpdateBackupSchedule not implemented") } func (*UnimplementedDatabaseAdminServer) DeleteBackupSchedule(context.Context, *DeleteBackupScheduleRequest) (*emptypb.Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteBackupSchedule not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method DeleteBackupSchedule not implemented") } func (*UnimplementedDatabaseAdminServer) ListBackupSchedules(context.Context, *ListBackupSchedulesRequest) (*ListBackupSchedulesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListBackupSchedules not implemented") + return nil, status1.Errorf(codes.Unimplemented, "method ListBackupSchedules not implemented") +} +func (*UnimplementedDatabaseAdminServer) InternalUpdateGraphOperation(context.Context, *InternalUpdateGraphOperationRequest) (*InternalUpdateGraphOperationResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method InternalUpdateGraphOperation not implemented") } func RegisterDatabaseAdminServer(s *grpc.Server, srv DatabaseAdminServer) { @@ -4710,6 +4889,24 @@ func _DatabaseAdmin_ListBackupSchedules_Handler(srv interface{}, ctx context.Con return interceptor(ctx, in, info, handler) } +func _DatabaseAdmin_InternalUpdateGraphOperation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InternalUpdateGraphOperationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DatabaseAdminServer).InternalUpdateGraphOperation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.spanner.admin.database.v1.DatabaseAdmin/InternalUpdateGraphOperation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DatabaseAdminServer).InternalUpdateGraphOperation(ctx, req.(*InternalUpdateGraphOperationRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _DatabaseAdmin_serviceDesc = grpc.ServiceDesc{ ServiceName: "google.spanner.admin.database.v1.DatabaseAdmin", HandlerType: (*DatabaseAdminServer)(nil), @@ -4818,6 +5015,10 @@ var _DatabaseAdmin_serviceDesc = grpc.ServiceDesc{ MethodName: "ListBackupSchedules", Handler: _DatabaseAdmin_ListBackupSchedules_Handler, }, + { + MethodName: "InternalUpdateGraphOperation", + Handler: _DatabaseAdmin_InternalUpdateGraphOperation_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "google/spanner/admin/database/v1/spanner_database_admin.proto", diff --git a/vendor/cloud.google.com/go/spanner/apiv1/spannerpb/commit_response.pb.go b/vendor/cloud.google.com/go/spanner/apiv1/spannerpb/commit_response.pb.go index f84e88e85f..ce31f15243 100644 --- a/vendor/cloud.google.com/go/spanner/apiv1/spannerpb/commit_response.pb.go +++ b/vendor/cloud.google.com/go/spanner/apiv1/spannerpb/commit_response.pb.go @@ -43,17 +43,21 @@ type CommitResponse struct { // The Cloud Spanner timestamp at which the transaction committed. CommitTimestamp *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=commit_timestamp,json=commitTimestamp,proto3" json:"commit_timestamp,omitempty"` - // The statistics about this Commit. Not returned by default. + // The statistics about this `Commit`. Not returned by default. // For more information, see // [CommitRequest.return_commit_stats][google.spanner.v1.CommitRequest.return_commit_stats]. CommitStats *CommitResponse_CommitStats `protobuf:"bytes,2,opt,name=commit_stats,json=commitStats,proto3" json:"commit_stats,omitempty"` - // Clients should examine and retry the commit if any of the following - // reasons are populated. + // You must examine and retry the commit if the following is populated. // // Types that are assignable to MultiplexedSessionRetry: // // *CommitResponse_PrecommitToken MultiplexedSessionRetry isCommitResponse_MultiplexedSessionRetry `protobuf_oneof:"MultiplexedSessionRetry"` + // If `TransactionOptions.isolation_level` is set to + // `IsolationLevel.REPEATABLE_READ`, then the snapshot timestamp is the + // timestamp at which all reads in the transaction ran. This timestamp is + // never returned. + SnapshotTimestamp *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=snapshot_timestamp,json=snapshotTimestamp,proto3" json:"snapshot_timestamp,omitempty"` } func (x *CommitResponse) Reset() { @@ -114,13 +118,20 @@ func (x *CommitResponse) GetPrecommitToken() *MultiplexedSessionPrecommitToken { return nil } +func (x *CommitResponse) GetSnapshotTimestamp() *timestamppb.Timestamp { + if x != nil { + return x.SnapshotTimestamp + } + return nil +} + type isCommitResponse_MultiplexedSessionRetry interface { isCommitResponse_MultiplexedSessionRetry() } type CommitResponse_PrecommitToken struct { // If specified, transaction has not committed yet. - // Clients must retry the commit with the new precommit token. + // You must retry the commit with the new precommit token. PrecommitToken *MultiplexedSessionPrecommitToken `protobuf:"bytes,4,opt,name=precommit_token,json=precommitToken,proto3,oneof"` } @@ -190,7 +201,7 @@ var file_google_spanner_v1_commit_response_proto_rawDesc = []byte{ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xda, 0x02, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, + 0x74, 0x6f, 0x22, 0xa5, 0x03, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, @@ -206,24 +217,29 @@ var file_google_spanner_v1_commit_response_proto_rawDesc = []byte{ 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x78, 0x65, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x0e, - 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x1a, 0x34, - 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x25, 0x0a, - 0x0e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, - 0x78, 0x65, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, - 0xb6, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, - 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x13, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x35, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x61, 0x70, - 0x69, 0x76, 0x31, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x70, 0x62, 0x3b, 0x73, 0x70, - 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x70, 0x62, 0xaa, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x56, - 0x31, 0xca, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x5c, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1a, 0x47, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x53, 0x70, 0x61, - 0x6e, 0x6e, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x49, + 0x0a, 0x12, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x1a, 0x34, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x75, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0d, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, + 0x19, 0x0a, 0x17, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x78, 0x65, 0x64, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0xb6, 0x01, 0x0a, 0x15, 0x63, + 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x42, 0x13, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, + 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x73, + 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x70, 0x62, 0x3b, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, + 0x70, 0x62, 0xaa, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x17, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x70, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, + 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3a, + 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -249,11 +265,12 @@ var file_google_spanner_v1_commit_response_proto_depIdxs = []int32{ 2, // 0: google.spanner.v1.CommitResponse.commit_timestamp:type_name -> google.protobuf.Timestamp 1, // 1: google.spanner.v1.CommitResponse.commit_stats:type_name -> google.spanner.v1.CommitResponse.CommitStats 3, // 2: google.spanner.v1.CommitResponse.precommit_token:type_name -> google.spanner.v1.MultiplexedSessionPrecommitToken - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 2, // 3: google.spanner.v1.CommitResponse.snapshot_timestamp:type_name -> google.protobuf.Timestamp + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_google_spanner_v1_commit_response_proto_init() } diff --git a/vendor/cloud.google.com/go/spanner/apiv1/spannerpb/transaction.pb.go b/vendor/cloud.google.com/go/spanner/apiv1/spannerpb/transaction.pb.go index bbdc6b41d5..6557286511 100644 --- a/vendor/cloud.google.com/go/spanner/apiv1/spannerpb/transaction.pb.go +++ b/vendor/cloud.google.com/go/spanner/apiv1/spannerpb/transaction.pb.go @@ -55,9 +55,9 @@ const ( // https://cloud.google.com/spanner/docs/true-time-external-consistency#serializability. TransactionOptions_SERIALIZABLE TransactionOptions_IsolationLevel = 1 // All reads performed during the transaction observe a consistent snapshot - // of the database, and the transaction will only successfully commit in the - // absence of conflicts between its updates and any concurrent updates that - // have occurred since that snapshot. Consequently, in contrast to + // of the database, and the transaction is only successfully committed in + // the absence of conflicts between its updates and any concurrent updates + // that have occurred since that snapshot. Consequently, in contrast to // `SERIALIZABLE` transactions, only write-write conflicts are detected in // snapshot transactions. // @@ -117,29 +117,34 @@ type TransactionOptions_ReadWrite_ReadLockMode int32 const ( // Default value. // - // - If isolation level is `REPEATABLE_READ`, then it is an error to - // specify `read_lock_mode`. Locking semantics default to `OPTIMISTIC`. - // No validation checks are done for reads, except for: + // - If isolation level is + // [REPEATABLE_READ][google.spanner.v1.TransactionOptions.IsolationLevel.REPEATABLE_READ], + // then it is an error to specify `read_lock_mode`. Locking semantics + // default to `OPTIMISTIC`. No validation checks are done for reads, + // except to validate that the data that was served at the snapshot time + // is unchanged at commit time in the following cases: // 1. reads done as part of queries that use `SELECT FOR UPDATE` // 2. reads done as part of statements with a `LOCK_SCANNED_RANGES` // hint // 3. reads done as part of DML statements - // to validate that the data that was served at the snapshot time is - // unchanged at commit time. // - At all other isolation levels, if `read_lock_mode` is the default - // value, then pessimistic read lock is used. + // value, then pessimistic read locks are used. TransactionOptions_ReadWrite_READ_LOCK_MODE_UNSPECIFIED TransactionOptions_ReadWrite_ReadLockMode = 0 // Pessimistic lock mode. // // Read locks are acquired immediately on read. - // Semantics described only applies to `SERIALIZABLE` isolation. + // Semantics described only applies to + // [SERIALIZABLE][google.spanner.v1.TransactionOptions.IsolationLevel.SERIALIZABLE] + // isolation. TransactionOptions_ReadWrite_PESSIMISTIC TransactionOptions_ReadWrite_ReadLockMode = 1 // Optimistic lock mode. // // Locks for reads within the transaction are not acquired on read. // Instead the locks are acquired on a commit to validate that // read/queried data has not changed since the transaction started. - // Semantics described only applies to `SERIALIZABLE` isolation. + // Semantics described only applies to + // [SERIALIZABLE][google.spanner.v1.TransactionOptions.IsolationLevel.SERIALIZABLE] + // isolation. TransactionOptions_ReadWrite_OPTIMISTIC TransactionOptions_ReadWrite_ReadLockMode = 2 ) @@ -184,330 +189,7 @@ func (TransactionOptions_ReadWrite_ReadLockMode) EnumDescriptor() ([]byte, []int return file_google_spanner_v1_transaction_proto_rawDescGZIP(), []int{0, 0, 0} } -// Transactions: -// -// Each session can have at most one active transaction at a time (note that -// standalone reads and queries use a transaction internally and do count -// towards the one transaction limit). After the active transaction is -// completed, the session can immediately be re-used for the next transaction. -// It is not necessary to create a new session for each transaction. -// -// Transaction modes: -// -// Cloud Spanner supports three transaction modes: -// -// 1. Locking read-write. This type of transaction is the only way -// to write data into Cloud Spanner. These transactions rely on -// pessimistic locking and, if necessary, two-phase commit. -// Locking read-write transactions may abort, requiring the -// application to retry. -// -// 2. Snapshot read-only. Snapshot read-only transactions provide guaranteed -// consistency across several reads, but do not allow -// writes. Snapshot read-only transactions can be configured to read at -// timestamps in the past, or configured to perform a strong read -// (where Spanner will select a timestamp such that the read is -// guaranteed to see the effects of all transactions that have committed -// before the start of the read). Snapshot read-only transactions do not -// need to be committed. -// -// Queries on change streams must be performed with the snapshot read-only -// transaction mode, specifying a strong read. Please see -// [TransactionOptions.ReadOnly.strong][google.spanner.v1.TransactionOptions.ReadOnly.strong] -// for more details. -// -// 3. Partitioned DML. This type of transaction is used to execute -// a single Partitioned DML statement. Partitioned DML partitions -// the key space and runs the DML statement over each partition -// in parallel using separate, internal transactions that commit -// independently. Partitioned DML transactions do not need to be -// committed. -// -// For transactions that only read, snapshot read-only transactions -// provide simpler semantics and are almost always faster. In -// particular, read-only transactions do not take locks, so they do -// not conflict with read-write transactions. As a consequence of not -// taking locks, they also do not abort, so retry loops are not needed. -// -// Transactions may only read-write data in a single database. They -// may, however, read-write data in different tables within that -// database. -// -// Locking read-write transactions: -// -// Locking transactions may be used to atomically read-modify-write -// data anywhere in a database. This type of transaction is externally -// consistent. -// -// Clients should attempt to minimize the amount of time a transaction -// is active. Faster transactions commit with higher probability -// and cause less contention. Cloud Spanner attempts to keep read locks -// active as long as the transaction continues to do reads, and the -// transaction has not been terminated by -// [Commit][google.spanner.v1.Spanner.Commit] or -// [Rollback][google.spanner.v1.Spanner.Rollback]. Long periods of -// inactivity at the client may cause Cloud Spanner to release a -// transaction's locks and abort it. -// -// Conceptually, a read-write transaction consists of zero or more -// reads or SQL statements followed by -// [Commit][google.spanner.v1.Spanner.Commit]. At any time before -// [Commit][google.spanner.v1.Spanner.Commit], the client can send a -// [Rollback][google.spanner.v1.Spanner.Rollback] request to abort the -// transaction. -// -// Semantics: -// -// Cloud Spanner can commit the transaction if all read locks it acquired -// are still valid at commit time, and it is able to acquire write -// locks for all writes. Cloud Spanner can abort the transaction for any -// reason. If a commit attempt returns `ABORTED`, Cloud Spanner guarantees -// that the transaction has not modified any user data in Cloud Spanner. -// -// Unless the transaction commits, Cloud Spanner makes no guarantees about -// how long the transaction's locks were held for. It is an error to -// use Cloud Spanner locks for any sort of mutual exclusion other than -// between Cloud Spanner transactions themselves. -// -// Retrying aborted transactions: -// -// When a transaction aborts, the application can choose to retry the -// whole transaction again. To maximize the chances of successfully -// committing the retry, the client should execute the retry in the -// same session as the original attempt. The original session's lock -// priority increases with each consecutive abort, meaning that each -// attempt has a slightly better chance of success than the previous. -// -// Under some circumstances (for example, many transactions attempting to -// modify the same row(s)), a transaction can abort many times in a -// short period before successfully committing. Thus, it is not a good -// idea to cap the number of retries a transaction can attempt; -// instead, it is better to limit the total amount of time spent -// retrying. -// -// Idle transactions: -// -// A transaction is considered idle if it has no outstanding reads or -// SQL queries and has not started a read or SQL query within the last 10 -// seconds. Idle transactions can be aborted by Cloud Spanner so that they -// don't hold on to locks indefinitely. If an idle transaction is aborted, the -// commit will fail with error `ABORTED`. -// -// If this behavior is undesirable, periodically executing a simple -// SQL query in the transaction (for example, `SELECT 1`) prevents the -// transaction from becoming idle. -// -// Snapshot read-only transactions: -// -// Snapshot read-only transactions provides a simpler method than -// locking read-write transactions for doing several consistent -// reads. However, this type of transaction does not support writes. -// -// Snapshot transactions do not take locks. Instead, they work by -// choosing a Cloud Spanner timestamp, then executing all reads at that -// timestamp. Since they do not acquire locks, they do not block -// concurrent read-write transactions. -// -// Unlike locking read-write transactions, snapshot read-only -// transactions never abort. They can fail if the chosen read -// timestamp is garbage collected; however, the default garbage -// collection policy is generous enough that most applications do not -// need to worry about this in practice. -// -// Snapshot read-only transactions do not need to call -// [Commit][google.spanner.v1.Spanner.Commit] or -// [Rollback][google.spanner.v1.Spanner.Rollback] (and in fact are not -// permitted to do so). -// -// To execute a snapshot transaction, the client specifies a timestamp -// bound, which tells Cloud Spanner how to choose a read timestamp. -// -// The types of timestamp bound are: -// -// - Strong (the default). -// - Bounded staleness. -// - Exact staleness. -// -// If the Cloud Spanner database to be read is geographically distributed, -// stale read-only transactions can execute more quickly than strong -// or read-write transactions, because they are able to execute far -// from the leader replica. -// -// Each type of timestamp bound is discussed in detail below. -// -// Strong: Strong reads are guaranteed to see the effects of all transactions -// that have committed before the start of the read. Furthermore, all -// rows yielded by a single read are consistent with each other -- if -// any part of the read observes a transaction, all parts of the read -// see the transaction. -// -// Strong reads are not repeatable: two consecutive strong read-only -// transactions might return inconsistent results if there are -// concurrent writes. If consistency across reads is required, the -// reads should be executed within a transaction or at an exact read -// timestamp. -// -// Queries on change streams (see below for more details) must also specify -// the strong read timestamp bound. -// -// See -// [TransactionOptions.ReadOnly.strong][google.spanner.v1.TransactionOptions.ReadOnly.strong]. -// -// Exact staleness: -// -// These timestamp bounds execute reads at a user-specified -// timestamp. Reads at a timestamp are guaranteed to see a consistent -// prefix of the global transaction history: they observe -// modifications done by all transactions with a commit timestamp less than or -// equal to the read timestamp, and observe none of the modifications done by -// transactions with a larger commit timestamp. They will block until -// all conflicting transactions that may be assigned commit timestamps -// <= the read timestamp have finished. -// -// The timestamp can either be expressed as an absolute Cloud Spanner commit -// timestamp or a staleness relative to the current time. -// -// These modes do not require a "negotiation phase" to pick a -// timestamp. As a result, they execute slightly faster than the -// equivalent boundedly stale concurrency modes. On the other hand, -// boundedly stale reads usually return fresher results. -// -// See -// [TransactionOptions.ReadOnly.read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.read_timestamp] -// and -// [TransactionOptions.ReadOnly.exact_staleness][google.spanner.v1.TransactionOptions.ReadOnly.exact_staleness]. -// -// Bounded staleness: -// -// Bounded staleness modes allow Cloud Spanner to pick the read timestamp, -// subject to a user-provided staleness bound. Cloud Spanner chooses the -// newest timestamp within the staleness bound that allows execution -// of the reads at the closest available replica without blocking. -// -// All rows yielded are consistent with each other -- if any part of -// the read observes a transaction, all parts of the read see the -// transaction. Boundedly stale reads are not repeatable: two stale -// reads, even if they use the same staleness bound, can execute at -// different timestamps and thus return inconsistent results. -// -// Boundedly stale reads execute in two phases: the first phase -// negotiates a timestamp among all replicas needed to serve the -// read. In the second phase, reads are executed at the negotiated -// timestamp. -// -// As a result of the two phase execution, bounded staleness reads are -// usually a little slower than comparable exact staleness -// reads. However, they are typically able to return fresher -// results, and are more likely to execute at the closest replica. -// -// Because the timestamp negotiation requires up-front knowledge of -// which rows will be read, it can only be used with single-use -// read-only transactions. -// -// See -// [TransactionOptions.ReadOnly.max_staleness][google.spanner.v1.TransactionOptions.ReadOnly.max_staleness] -// and -// [TransactionOptions.ReadOnly.min_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.min_read_timestamp]. -// -// Old read timestamps and garbage collection: -// -// Cloud Spanner continuously garbage collects deleted and overwritten data -// in the background to reclaim storage space. This process is known -// as "version GC". By default, version GC reclaims versions after they -// are one hour old. Because of this, Cloud Spanner cannot perform reads -// at read timestamps more than one hour in the past. This -// restriction also applies to in-progress reads and/or SQL queries whose -// timestamp become too old while executing. Reads and SQL queries with -// too-old read timestamps fail with the error `FAILED_PRECONDITION`. -// -// You can configure and extend the `VERSION_RETENTION_PERIOD` of a -// database up to a period as long as one week, which allows Cloud Spanner -// to perform reads up to one week in the past. -// -// Querying change Streams: -// -// A Change Stream is a schema object that can be configured to watch data -// changes on the entire database, a set of tables, or a set of columns -// in a database. -// -// When a change stream is created, Spanner automatically defines a -// corresponding SQL Table-Valued Function (TVF) that can be used to query -// the change records in the associated change stream using the -// ExecuteStreamingSql API. The name of the TVF for a change stream is -// generated from the name of the change stream: READ_. -// -// All queries on change stream TVFs must be executed using the -// ExecuteStreamingSql API with a single-use read-only transaction with a -// strong read-only timestamp_bound. The change stream TVF allows users to -// specify the start_timestamp and end_timestamp for the time range of -// interest. All change records within the retention period is accessible -// using the strong read-only timestamp_bound. All other TransactionOptions -// are invalid for change stream queries. -// -// In addition, if TransactionOptions.read_only.return_read_timestamp is set -// to true, a special value of 2^63 - 2 will be returned in the -// [Transaction][google.spanner.v1.Transaction] message that describes the -// transaction, instead of a valid read timestamp. This special value should be -// discarded and not used for any subsequent queries. -// -// Please see https://cloud.google.com/spanner/docs/change-streams -// for more details on how to query the change stream TVFs. -// -// Partitioned DML transactions: -// -// Partitioned DML transactions are used to execute DML statements with a -// different execution strategy that provides different, and often better, -// scalability properties for large, table-wide operations than DML in a -// ReadWrite transaction. Smaller scoped statements, such as an OLTP workload, -// should prefer using ReadWrite transactions. -// -// Partitioned DML partitions the keyspace and runs the DML statement on each -// partition in separate, internal transactions. These transactions commit -// automatically when complete, and run independently from one another. -// -// To reduce lock contention, this execution strategy only acquires read locks -// on rows that match the WHERE clause of the statement. Additionally, the -// smaller per-partition transactions hold locks for less time. -// -// That said, Partitioned DML is not a drop-in replacement for standard DML used -// in ReadWrite transactions. -// -// - The DML statement must be fully-partitionable. Specifically, the statement -// must be expressible as the union of many statements which each access only -// a single row of the table. -// -// - The statement is not applied atomically to all rows of the table. Rather, -// the statement is applied atomically to partitions of the table, in -// independent transactions. Secondary index rows are updated atomically -// with the base table rows. -// -// - Partitioned DML does not guarantee exactly-once execution semantics -// against a partition. The statement will be applied at least once to each -// partition. It is strongly recommended that the DML statement should be -// idempotent to avoid unexpected results. For instance, it is potentially -// dangerous to run a statement such as -// `UPDATE table SET column = column + 1` as it could be run multiple times -// against some rows. -// -// - The partitions are committed automatically - there is no support for -// Commit or Rollback. If the call returns an error, or if the client issuing -// the ExecuteSql call dies, it is possible that some rows had the statement -// executed on them successfully. It is also possible that statement was -// never executed against other rows. -// -// - Partitioned DML transactions may only contain the execution of a single -// DML statement via ExecuteSql or ExecuteStreamingSql. -// -// - If any error is encountered during the execution of the partitioned DML -// operation (for instance, a UNIQUE INDEX violation, division by zero, or a -// value that cannot be stored due to schema constraints), then the -// operation is stopped at that point and an error is returned. It is -// possible that at this point, some partitions have been committed (or even -// committed multiple times), and other partitions have not been run at all. -// -// Given the above, Partitioned DML is good fit for large, database-wide, -// operations that are idempotent, such as deleting old rows from a very large -// table. +// Options to use for transactions. type TransactionOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -521,20 +203,25 @@ type TransactionOptions struct { // *TransactionOptions_PartitionedDml_ // *TransactionOptions_ReadOnly_ Mode isTransactionOptions_Mode `protobuf_oneof:"mode"` - // When `exclude_txn_from_change_streams` is set to `true`: - // - Mutations from this transaction will not be recorded in change streams - // with DDL option `allow_txn_exclusion=true` that are tracking columns - // modified by these transactions. - // - Mutations from this transaction will be recorded in change streams with - // DDL option `allow_txn_exclusion=false or not set` that are tracking - // columns modified by these transactions. + // When `exclude_txn_from_change_streams` is set to `true`, it prevents read + // or write transactions from being tracked in change streams. + // + // * If the DDL option `allow_txn_exclusion` is set to `true`, then the + // updates + // + // made within this transaction aren't recorded in the change stream. + // + // - If you don't set the DDL option `allow_txn_exclusion` or if it's + // set to `false`, then the updates made within this transaction are + // recorded in the change stream. // // When `exclude_txn_from_change_streams` is set to `false` or not set, - // mutations from this transaction will be recorded in all change streams that - // are tracking columns modified by these transactions. - // `exclude_txn_from_change_streams` may only be specified for read-write or - // partitioned-dml transactions, otherwise the API will return an - // `INVALID_ARGUMENT` error. + // modifications from this transaction are recorded in all change streams + // that are tracking columns modified by these transactions. + // + // The `exclude_txn_from_change_streams` option can only be specified + // for read-write or partitioned DML transactions, otherwise the API returns + // an `INVALID_ARGUMENT` error. ExcludeTxnFromChangeStreams bool `protobuf:"varint,5,opt,name=exclude_txn_from_change_streams,json=excludeTxnFromChangeStreams,proto3" json:"exclude_txn_from_change_streams,omitempty"` // Isolation level for the transaction. IsolationLevel TransactionOptions_IsolationLevel `protobuf:"varint,6,opt,name=isolation_level,json=isolationLevel,proto3,enum=google.spanner.v1.TransactionOptions_IsolationLevel" json:"isolation_level,omitempty"` @@ -635,7 +322,7 @@ type TransactionOptions_PartitionedDml_ struct { } type TransactionOptions_ReadOnly_ struct { - // Transaction will not write. + // Transaction does not write. // // Authorization to begin a read-only transaction requires // `spanner.databases.beginReadOnlyTransaction` permission @@ -671,15 +358,13 @@ type Transaction struct { // A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. // Example: `"2014-10-02T15:01:23.045123456Z"`. ReadTimestamp *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=read_timestamp,json=readTimestamp,proto3" json:"read_timestamp,omitempty"` - // A precommit token will be included in the response of a BeginTransaction + // A precommit token is included in the response of a BeginTransaction // request if the read-write transaction is on a multiplexed session and // a mutation_key was specified in the // [BeginTransaction][google.spanner.v1.BeginTransactionRequest]. // The precommit token with the highest sequence number from this transaction // attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit] // request for this transaction. - // This feature is not yet supported and will result in an UNIMPLEMENTED - // error. PrecommitToken *MultiplexedSessionPrecommitToken `protobuf:"bytes,3,opt,name=precommit_token,json=precommitToken,proto3" json:"precommit_token,omitempty"` } @@ -846,8 +531,10 @@ func (*TransactionSelector_Begin) isTransactionSelector_Selector() {} // When a read-write transaction is executed on a multiplexed session, // this precommit token is sent back to the client -// as a part of the [Transaction] message in the BeginTransaction response and -// also as a part of the [ResultSet] and [PartialResultSet] responses. +// as a part of the [Transaction][google.spanner.v1.Transaction] message in the +// [BeginTransaction][google.spanner.v1.BeginTransactionRequest] response and +// also as a part of the [ResultSet][google.spanner.v1.ResultSet] and +// [PartialResultSet][google.spanner.v1.PartialResultSet] responses. type MultiplexedSessionPrecommitToken struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -917,8 +604,6 @@ type TransactionOptions_ReadWrite struct { // Optional. Clients should pass the transaction ID of the previous // transaction attempt that was aborted if this transaction is being // executed on a multiplexed session. - // This feature is not yet supported and will result in an UNIMPLEMENTED - // error. MultiplexedSessionPreviousTransactionId []byte `protobuf:"bytes,2,opt,name=multiplexed_session_previous_transaction_id,json=multiplexedSessionPreviousTransactionId,proto3" json:"multiplexed_session_previous_transaction_id,omitempty"` } @@ -1149,7 +834,7 @@ type TransactionOptions_ReadOnly_ReadTimestamp struct { // Executes all reads at the given timestamp. Unlike other modes, // reads at a specific timestamp are repeatable; the same read at // the same timestamp always returns the same data. If the - // timestamp is in the future, the read will block until the + // timestamp is in the future, the read is blocked until the // specified timestamp, modulo the read's deadline. // // Useful for large scale consistent reads such as mapreduces, or diff --git a/vendor/cloud.google.com/go/spanner/client.go b/vendor/cloud.google.com/go/spanner/client.go index d02e6e1332..256c5563cc 100644 --- a/vendor/cloud.google.com/go/spanner/client.go +++ b/vendor/cloud.google.com/go/spanner/client.go @@ -18,7 +18,6 @@ package spanner import ( "context" - "errors" "fmt" "io" "log" @@ -36,6 +35,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/metric/noop" + otrace "go.opentelemetry.io/otel/trace" "google.golang.org/api/iterator" "google.golang.org/api/option" "google.golang.org/api/option/internaloption" @@ -50,11 +50,6 @@ import ( vkit "cloud.google.com/go/spanner/apiv1" "cloud.google.com/go/spanner/internal" - - // Install google-c2p resolver, which is required for direct path. - _ "google.golang.org/grpc/xds/googledirectpath" - // Install RLS load balancer policy, which is needed for gRPC RLS. - _ "google.golang.org/grpc/balancer/rls" ) const ( @@ -377,6 +372,7 @@ type ClientConfig struct { type openTelemetryConfig struct { enabled bool meterProvider metric.MeterProvider + commonTraceStartOptions []otrace.SpanStartOption attributeMap []attribute.KeyValue attributeMapWithMultiplexed []attribute.KeyValue attributeMapWithoutMultiplexed []attribute.KeyValue @@ -395,6 +391,8 @@ type openTelemetryConfig struct { func contextWithOutgoingMetadata(ctx context.Context, md metadata.MD, disableRouteToLeader bool) context.Context { existing, ok := metadata.FromOutgoingContext(ctx) if ok { + // Make sure that we only send one resource header. + existing.Delete(resourcePrefixHeader) md = metadata.Join(existing, md) } if !disableRouteToLeader { @@ -422,8 +420,8 @@ func newClientWithConfig(ctx context.Context, database string, config ClientConf return nil, err } - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.NewClient") - defer func() { trace.EndSpan(ctx, err) }() + ctx, _ = startSpan(ctx, "NewClient") + defer func() { endSpan(ctx, err) }() // Explicitly disable some gRPC experiments as they are not stable yet. gRPCPickFirstEnvVarName := "GRPC_EXPERIMENTAL_ENABLE_NEW_PICK_FIRST" @@ -586,8 +584,8 @@ func newClientWithConfig(ctx context.Context, database string, config ClientConf // Create a session client. sc := newSessionClient(pool, database, config.UserAgent, sessionLabels, config.DatabaseRole, config.DisableRouteToLeader, md, config.BatchTimeout, config.Logger, config.CallOptions) - // Create a OpenTelemetry configuration - otConfig, err := createOpenTelemetryConfig(config.OpenTelemetryMeterProvider, config.Logger, sc.id, database) + // Create an OpenTelemetry configuration + otConfig, err := createOpenTelemetryConfig(ctx, config.OpenTelemetryMeterProvider, config.Logger, sc.id, database) if err != nil { // The error returned here will be due to database name parsing return nil, err @@ -721,69 +719,16 @@ func metricsInterceptor() grpc.UnaryClientInterceptor { statusCode, _ := status.FromError(err) mt.currOp.currAttempt.setStatus(statusCode.Code().String()) - - isDirectPathUsed := false - if peerInfo.Addr != nil { - remoteIP := peerInfo.Addr.String() - if strings.HasPrefix(remoteIP, directPathIPV4Prefix) || strings.HasPrefix(remoteIP, directPathIPV6Prefix) { - isDirectPathUsed = true - } - } - - mt.currOp.currAttempt.setDirectPathUsed(isDirectPathUsed) - metrics := parseServerTimingHeader(md) - mt.currOp.currAttempt.setServerTimingMetrics(metrics) + mt.currOp.currAttempt.setDirectPathUsed(peer.NewContext(ctx, peerInfo)) + latencies := parseServerTimingHeader(md) + span := otrace.SpanFromContext(ctx) + setGFEAndAFESpanAttributes(span, latencies) + mt.currOp.currAttempt.setServerTimingMetrics(latencies) recordAttemptCompletion(mt) return err } } -// wrappedStream wraps around the embedded grpc.ClientStream, and intercepts the RecvMsg and -// SendMsg method call. -type wrappedStream struct { - method string - target string - grpc.ClientStream -} - -func (w *wrappedStream) RecvMsg(m any) error { - err := w.ClientStream.RecvMsg(m) - if errors.Is(err, io.EOF) { - return err - } - ctx := w.ClientStream.Context() - mt, ok := ctx.Value(metricsTracerKey).(*builtinMetricsTracer) - if !ok { - return err - } - mt.method = w.method - if strings.HasPrefix(w.target, "google-c2p") { - mt.currOp.setDirectPathEnabled(true) - } - isDirectPathUsed := false - peerInfo, ok := peer.FromContext(ctx) - if ok { - if peerInfo.Addr != nil { - remoteIP := peerInfo.Addr.String() - if strings.HasPrefix(remoteIP, directPathIPV4Prefix) || strings.HasPrefix(remoteIP, directPathIPV6Prefix) { - isDirectPathUsed = true - } - } - } - if mt.currOp.currAttempt != nil { - mt.currOp.currAttempt.setDirectPathUsed(isDirectPathUsed) - } - return err -} - -func (w *wrappedStream) SendMsg(m any) error { - return w.ClientStream.SendMsg(m) -} - -func newWrappedStream(s grpc.ClientStream, method, target string) grpc.ClientStream { - return &wrappedStream{ClientStream: s, method: method, target: target} -} - // metricsInterceptor is a gRPC stream client interceptor that records metrics for stream RPCs. func metricsStreamInterceptor() grpc.StreamClientInterceptor { return func( @@ -798,7 +743,14 @@ func metricsStreamInterceptor() grpc.StreamClientInterceptor { if err != nil { return nil, err } - return newWrappedStream(s, method, cc.Target()), nil + mt, ok := ctx.Value(metricsTracerKey).(*builtinMetricsTracer) + if ok && mt != nil { + mt.method = method + if strings.HasPrefix(cc.Target(), "google-c2p") { + mt.currOp.setDirectPathEnabled(true) + } + } + return s, nil } } @@ -1061,8 +1013,8 @@ func checkNestedTxn(ctx context.Context) error { // See https://godoc.org/cloud.google.com/go/spanner#ReadWriteTransaction for // more details. func (c *Client) ReadWriteTransaction(ctx context.Context, f func(context.Context, *ReadWriteTransaction) error) (commitTimestamp time.Time, err error) { - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.ReadWriteTransaction") - defer func() { trace.EndSpan(ctx, err) }() + ctx, _ = startSpan(ctx, "ReadWriteTransaction", c.otConfig.commonTraceStartOptions...) + defer func() { endSpan(ctx, err) }() resp, err := c.rwTransaction(ctx, f, TransactionOptions{}) return resp.CommitTs, err } @@ -1075,8 +1027,8 @@ func (c *Client) ReadWriteTransaction(ctx context.Context, f func(context.Contex // See https://godoc.org/cloud.google.com/go/spanner#ReadWriteTransaction for // more details. func (c *Client) ReadWriteTransactionWithOptions(ctx context.Context, f func(context.Context, *ReadWriteTransaction) error, options TransactionOptions) (resp CommitResponse, err error) { - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.ReadWriteTransactionWithOptions") - defer func() { trace.EndSpan(ctx, err) }() + ctx, _ = startSpan(ctx, "ReadWriteTransactionWithOptions", c.otConfig.commonTraceStartOptions...) + defer func() { endSpan(ctx, err) }() resp, err = c.rwTransaction(ctx, f, options) return resp, err } @@ -1258,8 +1210,8 @@ func (c *Client) Apply(ctx context.Context, ms []*Mutation, opts ...ApplyOption) opt(ao) } - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.Apply") - defer func() { trace.EndSpan(ctx, err) }() + ctx, _ = startSpan(ctx, "Apply", c.otConfig.commonTraceStartOptions...) + defer func() { endSpan(ctx, err) }() if !ao.atLeastOnce { resp, err := c.ReadWriteTransactionWithOptions(ctx, func(ctx context.Context, t *ReadWriteTransaction) error { @@ -1431,7 +1383,7 @@ func (c *Client) BatchWrite(ctx context.Context, mgs []*MutationGroup) *BatchWri // BatchWriteWithOptions is same as BatchWrite. It accepts additional options to customize the request. func (c *Client) BatchWriteWithOptions(ctx context.Context, mgs []*MutationGroup, opts BatchWriteOptions) *BatchWriteResponseIterator { - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.BatchWrite") + ctx, _ = startSpan(ctx, "BatchWrite", c.otConfig.commonTraceStartOptions...) var err error defer func() { @@ -1492,7 +1444,7 @@ func (c *Client) BatchWriteWithOptions(ctx context.Context, mgs []*MutationGroup } ctx, cancel := context.WithCancel(ctx) - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.BatchWriteResponseIterator") + ctx, _ = startSpan(ctx, "BatchWriteResponseIterator", c.otConfig.commonTraceStartOptions...) return &BatchWriteResponseIterator{ ctx: ctx, meterTracerFactory: c.metricsTracerFactory, diff --git a/vendor/cloud.google.com/go/spanner/grpc_client.go b/vendor/cloud.google.com/go/spanner/grpc_client.go index 00d7674a69..e51582f781 100644 --- a/vendor/cloud.google.com/go/spanner/grpc_client.go +++ b/vendor/cloud.google.com/go/spanner/grpc_client.go @@ -20,11 +20,14 @@ import ( "context" "strings" "sync/atomic" + "time" vkit "cloud.google.com/go/spanner/apiv1" "cloud.google.com/go/spanner/apiv1/spannerpb" "cloud.google.com/go/spanner/internal" "github.com/googleapis/gax-go/v2" + "go.opentelemetry.io/otel/attribute" + oteltrace "go.opentelemetry.io/otel/trace" "google.golang.org/api/option" "google.golang.org/grpc" "google.golang.org/grpc/peer" @@ -171,7 +174,66 @@ func (g *grpcSpannerClient) DeleteSession(ctx context.Context, req *spannerpb.De return err } +// setSpanAttributes dynamically sets span attributes based on the request type. +func setSpanAttributes[T any](span oteltrace.Span, req T) { + if !span.IsRecording() { + return + } + + var attrs []attribute.KeyValue + + if r, ok := any(req).(interface { + GetRequestOptions() *spannerpb.RequestOptions + }); ok { + if tag := r.GetRequestOptions().GetTransactionTag(); tag != "" { + attrs = append(attrs, attribute.String("transaction.tag", tag)) + } + if tag := r.GetRequestOptions().GetRequestTag(); tag != "" { + attrs = append(attrs, attribute.String("statement.tag", tag)) + } + } + + if r, ok := any(req).(interface{ GetSql() string }); ok { + if sql := r.GetSql(); sql != "" { + attrs = append(attrs, attribute.String("db.statement", sql)) + } + } else if r, ok := any(req).(interface { + GetStatements() []*spannerpb.ExecuteBatchDmlRequest_Statement + }); ok { + if stmts := r.GetStatements(); len(stmts) > 0 { + sqls := make([]string, len(stmts)) + for i, stmt := range stmts { + sqls[i] = stmt.GetSql() + } + attrs = append(attrs, attribute.StringSlice("db.statement", sqls)) + } + } + + if r, ok := any(req).(interface{ GetTable() string }); ok { + if table := r.GetTable(); table != "" { + attrs = append(attrs, attribute.String("db.table", table)) + } + } + + span.SetAttributes(attrs...) +} + +func setGFEAndAFESpanAttributes(span oteltrace.Span, latencyMap map[string]time.Duration) { + if !span.IsRecording() { + return + } + for t, v := range latencyMap { + if t == gfeTimingHeader || t == afeTimingHeader { + span.SetAttributes( + attribute.Float64(t[:3]+".latency_ms", float64(v.Nanoseconds())/1e6), + ) + } + } +} + func (g *grpcSpannerClient) ExecuteSql(ctx context.Context, req *spannerpb.ExecuteSqlRequest, opts ...gax.CallOption) (*spannerpb.ResultSet, error) { + span := oteltrace.SpanFromContext(ctx) + setSpanAttributes(span, req) mt := g.newBuiltinMetricsTracer(ctx) defer recordOperationCompletion(mt) ctx = context.WithValue(ctx, metricsTracerKey, mt) @@ -182,6 +244,8 @@ func (g *grpcSpannerClient) ExecuteSql(ctx context.Context, req *spannerpb.Execu } func (g *grpcSpannerClient) ExecuteStreamingSql(ctx context.Context, req *spannerpb.ExecuteSqlRequest, opts ...gax.CallOption) (spannerpb.Spanner_ExecuteStreamingSqlClient, error) { + span := oteltrace.SpanFromContext(ctx) + setSpanAttributes(span, req) // Note: This method does not add g.optsWithNextRequestID to inject x-goog-spanner-request-id // as it is already manually added when creating Stream iterators for ExecuteStreamingSql. client, err := g.raw.ExecuteStreamingSql(peer.NewContext(ctx, &peer.Peer{}), req, opts...) @@ -191,12 +255,17 @@ func (g *grpcSpannerClient) ExecuteStreamingSql(ctx context.Context, req *spanne } if mt != nil && client != nil && mt.currOp.currAttempt != nil { md, _ := client.Header() - mt.currOp.currAttempt.setServerTimingMetrics(parseServerTimingHeader(md)) + latencyMap := parseServerTimingHeader(md) + setGFEAndAFESpanAttributes(span, latencyMap) + mt.currOp.currAttempt.setServerTimingMetrics(latencyMap) + mt.currOp.currAttempt.setDirectPathUsed(client.Context()) } return client, err } func (g *grpcSpannerClient) ExecuteBatchDml(ctx context.Context, req *spannerpb.ExecuteBatchDmlRequest, opts ...gax.CallOption) (*spannerpb.ExecuteBatchDmlResponse, error) { + span := oteltrace.SpanFromContext(ctx) + setSpanAttributes(span, req) mt := g.newBuiltinMetricsTracer(ctx) defer recordOperationCompletion(mt) ctx = context.WithValue(ctx, metricsTracerKey, mt) @@ -207,6 +276,8 @@ func (g *grpcSpannerClient) ExecuteBatchDml(ctx context.Context, req *spannerpb. } func (g *grpcSpannerClient) Read(ctx context.Context, req *spannerpb.ReadRequest, opts ...gax.CallOption) (*spannerpb.ResultSet, error) { + span := oteltrace.SpanFromContext(ctx) + setSpanAttributes(span, req) mt := g.newBuiltinMetricsTracer(ctx) defer recordOperationCompletion(mt) ctx = context.WithValue(ctx, metricsTracerKey, mt) @@ -219,6 +290,8 @@ func (g *grpcSpannerClient) Read(ctx context.Context, req *spannerpb.ReadRequest func (g *grpcSpannerClient) StreamingRead(ctx context.Context, req *spannerpb.ReadRequest, opts ...gax.CallOption) (spannerpb.Spanner_StreamingReadClient, error) { // Note: This method does not add g.optsWithNextRequestID, as it is already // manually added when creating Stream iterators for StreamingRead. + span := oteltrace.SpanFromContext(ctx) + setSpanAttributes(span, req) client, err := g.raw.StreamingRead(peer.NewContext(ctx, &peer.Peer{}), req, opts...) mt, ok := ctx.Value(metricsTracerKey).(*builtinMetricsTracer) if !ok { @@ -226,7 +299,10 @@ func (g *grpcSpannerClient) StreamingRead(ctx context.Context, req *spannerpb.Re } if mt != nil && client != nil && mt.currOp.currAttempt != nil { md, _ := client.Header() - mt.currOp.currAttempt.setServerTimingMetrics(parseServerTimingHeader(md)) + latencyMap := parseServerTimingHeader(md) + setGFEAndAFESpanAttributes(span, latencyMap) + mt.currOp.currAttempt.setServerTimingMetrics(latencyMap) + mt.currOp.currAttempt.setDirectPathUsed(client.Context()) } return client, err } @@ -242,6 +318,8 @@ func (g *grpcSpannerClient) BeginTransaction(ctx context.Context, req *spannerpb } func (g *grpcSpannerClient) Commit(ctx context.Context, req *spannerpb.CommitRequest, opts ...gax.CallOption) (*spannerpb.CommitResponse, error) { + span := oteltrace.SpanFromContext(ctx) + setSpanAttributes(span, req) mt := g.newBuiltinMetricsTracer(ctx) defer recordOperationCompletion(mt) ctx = context.WithValue(ctx, metricsTracerKey, mt) @@ -262,6 +340,8 @@ func (g *grpcSpannerClient) Rollback(ctx context.Context, req *spannerpb.Rollbac } func (g *grpcSpannerClient) PartitionQuery(ctx context.Context, req *spannerpb.PartitionQueryRequest, opts ...gax.CallOption) (*spannerpb.PartitionResponse, error) { + span := oteltrace.SpanFromContext(ctx) + setSpanAttributes(span, req) mt := g.newBuiltinMetricsTracer(ctx) defer recordOperationCompletion(mt) ctx = context.WithValue(ctx, metricsTracerKey, mt) @@ -272,6 +352,8 @@ func (g *grpcSpannerClient) PartitionQuery(ctx context.Context, req *spannerpb.P } func (g *grpcSpannerClient) PartitionRead(ctx context.Context, req *spannerpb.PartitionReadRequest, opts ...gax.CallOption) (*spannerpb.PartitionResponse, error) { + span := oteltrace.SpanFromContext(ctx) + setSpanAttributes(span, req) mt := g.newBuiltinMetricsTracer(ctx) defer recordOperationCompletion(mt) ctx = context.WithValue(ctx, metricsTracerKey, mt) @@ -282,6 +364,8 @@ func (g *grpcSpannerClient) PartitionRead(ctx context.Context, req *spannerpb.Pa } func (g *grpcSpannerClient) BatchWrite(ctx context.Context, req *spannerpb.BatchWriteRequest, opts ...gax.CallOption) (spannerpb.Spanner_BatchWriteClient, error) { + span := oteltrace.SpanFromContext(ctx) + setSpanAttributes(span, req) client, err := g.raw.BatchWrite(peer.NewContext(ctx, &peer.Peer{}), req, g.optsWithNextRequestID(opts)...) mt, ok := ctx.Value(metricsTracerKey).(*builtinMetricsTracer) if !ok { @@ -289,7 +373,10 @@ func (g *grpcSpannerClient) BatchWrite(ctx context.Context, req *spannerpb.Batch } if mt != nil && client != nil && mt.currOp.currAttempt != nil { md, _ := client.Header() - mt.currOp.currAttempt.setServerTimingMetrics(parseServerTimingHeader(md)) + latencyMap := parseServerTimingHeader(md) + setGFEAndAFESpanAttributes(span, latencyMap) + mt.currOp.currAttempt.setServerTimingMetrics(latencyMap) + mt.currOp.currAttempt.setDirectPathUsed(client.Context()) } return client, err } diff --git a/vendor/cloud.google.com/go/spanner/grpc_dp.go b/vendor/cloud.google.com/go/spanner/grpc_dp.go new file mode 100644 index 0000000000..3a60c835c9 --- /dev/null +++ b/vendor/cloud.google.com/go/spanner/grpc_dp.go @@ -0,0 +1,24 @@ +//go:build !disable_grpc_modules + +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spanner + +import ( + // Install google-c2p resolver, which is required for direct path. + _ "google.golang.org/grpc/xds/googledirectpath" + // Install RLS load balancer policy, which is needed for gRPC RLS. + _ "google.golang.org/grpc/balancer/rls" +) diff --git a/vendor/cloud.google.com/go/spanner/internal/version.go b/vendor/cloud.google.com/go/spanner/internal/version.go index 33fa31c9cb..9cf22b3c90 100644 --- a/vendor/cloud.google.com/go/spanner/internal/version.go +++ b/vendor/cloud.google.com/go/spanner/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.83.0" +const Version = "1.84.1" diff --git a/vendor/cloud.google.com/go/spanner/metrics.go b/vendor/cloud.google.com/go/spanner/metrics.go index 2b73157dad..d37ccc2020 100644 --- a/vendor/cloud.google.com/go/spanner/metrics.go +++ b/vendor/cloud.google.com/go/spanner/metrics.go @@ -38,6 +38,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/experimental/stats" + "google.golang.org/grpc/peer" "google.golang.org/grpc/stats/opentelemetry" "google.golang.org/grpc/status" @@ -508,8 +509,14 @@ func (o *opTracer) incrementAttemptCount() { } // setDirectPathUsed sets whether DirectPath was used for the attempt. -func (a *attemptTracer) setDirectPathUsed(used bool) { - a.directPathUsed = used +func (a *attemptTracer) setDirectPathUsed(ctx context.Context) { + peerInfo, ok := peer.FromContext(ctx) + if ok && peerInfo.Addr != nil { + remoteIP := peerInfo.Addr.String() + if strings.HasPrefix(remoteIP, directPathIPV4Prefix) || strings.HasPrefix(remoteIP, directPathIPV6Prefix) { + a.directPathUsed = true + } + } } func (a *attemptTracer) setServerTimingMetrics(metrics map[string]time.Duration) { diff --git a/vendor/cloud.google.com/go/spanner/ot_metrics.go b/vendor/cloud.google.com/go/spanner/ot_metrics.go index e2e3a53f73..ecef1f46e8 100644 --- a/vendor/cloud.google.com/go/spanner/ot_metrics.go +++ b/vendor/cloud.google.com/go/spanner/ot_metrics.go @@ -23,6 +23,7 @@ import ( "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/trace" "google.golang.org/grpc/metadata" ) @@ -47,22 +48,31 @@ var ( otMu = sync.RWMutex{} ) -func createOpenTelemetryConfig(mp metric.MeterProvider, logger *log.Logger, sessionClientID string, db string) (*openTelemetryConfig, error) { +func createOpenTelemetryConfig(ctx context.Context, mp metric.MeterProvider, logger *log.Logger, sessionClientID string, db string) (*openTelemetryConfig, error) { // Important: snapshot the value of the global variable to ensure a // consistent value for the lifetime of this client. enabled := IsOpenTelemetryMetricsEnabled() - + _, instance, database, err := parseDatabaseName(db) + if err != nil { + return nil, err + } config := &openTelemetryConfig{ enabled: enabled, attributeMap: []attribute.KeyValue{}, + commonTraceStartOptions: []trace.SpanStartOption{ + trace.WithAttributes( + attribute.String("db.name", database), + attribute.String("instance.name", instance), + attribute.String("cloud.region", detectClientLocation(ctx)), + attribute.String("gcp.client.version", internal.Version), + attribute.String("gcp.client.repo", gcpClientRepo), + attribute.String("gcp.client.artifact", gcpClientArtifact), + ), + }, } if !enabled { return config, nil } - _, instance, database, err := parseDatabaseName(db) - if err != nil { - return nil, err - } // Construct attributes for Metrics attributeMap := []attribute.KeyValue{ diff --git a/vendor/cloud.google.com/go/spanner/pdml.go b/vendor/cloud.google.com/go/spanner/pdml.go index 217e475e09..60b639d776 100644 --- a/vendor/cloud.google.com/go/spanner/pdml.go +++ b/vendor/cloud.google.com/go/spanner/pdml.go @@ -46,8 +46,8 @@ func (c *Client) PartitionedUpdateWithOptions(ctx context.Context, statement Sta } func (c *Client) partitionedUpdate(ctx context.Context, statement Statement, options QueryOptions) (count int64, err error) { - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.PartitionedUpdate") - defer func() { trace.EndSpan(ctx, err) }() + ctx, _ = startSpan(ctx, "PartitionedUpdate", c.otConfig.commonTraceStartOptions...) + defer func() { endSpan(ctx, err) }() if err := checkNestedTxn(ctx); err != nil { return 0, err } diff --git a/vendor/cloud.google.com/go/spanner/read.go b/vendor/cloud.google.com/go/spanner/read.go index 090336ac84..3e9cfe4ea0 100644 --- a/vendor/cloud.google.com/go/spanner/read.go +++ b/vendor/cloud.google.com/go/spanner/read.go @@ -28,6 +28,8 @@ import ( "cloud.google.com/go/internal/trace" sppb "cloud.google.com/go/spanner/apiv1/spannerpb" "github.com/googleapis/gax-go/v2" + otcodes "go.opentelemetry.io/otel/codes" + otrace "go.opentelemetry.io/otel/trace" "google.golang.org/api/iterator" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -39,6 +41,7 @@ import ( // stream. type streamingReceiver interface { Recv() (*sppb.PartialResultSet, error) + Context() context.Context } // errEarlyReadEnd returns error for read finishes when gRPC stream is still @@ -92,7 +95,7 @@ func streamWithReplaceSessionFunc( gsc *grpcSpannerClient, ) *RowIterator { ctx, cancel := context.WithCancel(ctx) - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.RowIterator") + ctx, _ = startSpan(ctx, "RowIterator") return &RowIterator{ meterTracerFactory: meterTracerFactory, streamd: newResumableStreamDecoder(ctx, cancel, logger, rpc, replaceSession, gsc), @@ -677,13 +680,19 @@ func (d *resumableStreamDecoder) tryRecv(mt *builtinMetricsTracer, retryer gax.R if d.err == nil { d.q.push(res) if res.GetLast() { - go func(s streamingReceiver) { - _, _ = s.Recv() - // Cancel the context after receiving trailers - if d.cancel != nil { - d.cancel() - } - }(d.stream) + if span := otrace.SpanFromContext(d.stream.Context()); span != nil && span.IsRecording() { + span.SetStatus(otcodes.Ok, "Stream finished successfully") + span.End() + } + if d.cancel != nil { + // Remove the cancel function to prevent iter.Stop from also calling it. + cancel := d.cancel + d.cancel = nil + go func() { + _, _ = d.stream.Recv() + cancel() + }() + } d.changeState(finished) return } diff --git a/vendor/cloud.google.com/go/spanner/retry.go b/vendor/cloud.google.com/go/spanner/retry.go index 8eecb5c084..9fa0cadeda 100644 --- a/vendor/cloud.google.com/go/spanner/retry.go +++ b/vendor/cloud.google.com/go/spanner/retry.go @@ -59,7 +59,8 @@ func onCodes(bo gax.Backoff, cc ...codes.Code) gax.Retryer { // Retry returns the retry delay returned by Cloud Spanner if that is present. // Otherwise it returns the retry delay calculated by the generic gax Retryer. func (r *spannerRetryer) Retry(err error) (time.Duration, bool) { - if status.Code(err) == codes.Internal && + errCode := status.Code(err) + if errCode == codes.Internal && !strings.Contains(err.Error(), "stream terminated by RST_STREAM") && // See b/25451313. !strings.Contains(err.Error(), "HTTP/2 error code: INTERNAL_ERROR") && @@ -74,7 +75,14 @@ func (r *spannerRetryer) Retry(err error) (time.Duration, bool) { if !shouldRetry { return 0, false } - if serverDelay, hasServerDelay := ExtractRetryDelay(err); hasServerDelay { + + serverDelay, hasServerDelay := ExtractRetryDelay(err) + // Retry ResourceExhausted error only if there's a server delay in the trailer + if errCode == codes.ResourceExhausted && (!hasServerDelay || serverDelay <= 0) { + return 0, false + } + + if hasServerDelay { delay = serverDelay } return delay, true diff --git a/vendor/cloud.google.com/go/spanner/sessionclient.go b/vendor/cloud.google.com/go/spanner/sessionclient.go index 42f16f6cfa..b89bf4dda7 100644 --- a/vendor/cloud.google.com/go/spanner/sessionclient.go +++ b/vendor/cloud.google.com/go/spanner/sessionclient.go @@ -32,6 +32,7 @@ import ( "github.com/googleapis/gax-go/v2" "go.opencensus.io/tag" "google.golang.org/api/option" + gtransport "google.golang.org/api/transport/grpc" "google.golang.org/grpc" "google.golang.org/grpc/codes" @@ -269,8 +270,8 @@ func (sc *sessionClient) executeBatchCreateSessions(client spannerClient, create defer sc.waitWorkers.Done() ctx, cancel := context.WithTimeout(context.Background(), sc.batchTimeout) defer cancel() - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.BatchCreateSessions") - defer func() { trace.EndSpan(ctx, nil) }() + ctx, _ = startSpan(ctx, "BatchCreateSessions", sc.otConfig.commonTraceStartOptions...) + defer func() { endSpan(ctx, nil) }() trace.TracePrintf(ctx, nil, "Creating a batch of %d sessions", createCount) remainingCreateCount := createCount @@ -341,8 +342,8 @@ func (sc *sessionClient) executeBatchCreateSessions(client spannerClient, create } func (sc *sessionClient) executeCreateMultiplexedSession(ctx context.Context, client spannerClient, md metadata.MD, consumer sessionConsumer) { - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.CreateSession") - defer func() { trace.EndSpan(ctx, nil) }() + ctx, _ = startSpan(ctx, "CreateSession", sc.otConfig.commonTraceStartOptions...) + defer func() { endSpan(ctx, nil) }() trace.TracePrintf(ctx, nil, "Creating a multiplexed session") sc.mu.Lock() closed := sc.closed diff --git a/vendor/cloud.google.com/go/spanner/trace.go b/vendor/cloud.google.com/go/spanner/trace.go new file mode 100644 index 0000000000..bc3cf25759 --- /dev/null +++ b/vendor/cloud.google.com/go/spanner/trace.go @@ -0,0 +1,75 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package spanner + +import ( + "context" + "errors" + "fmt" + + "cloud.google.com/go/spanner/internal" + "go.opentelemetry.io/otel" + otelcodes "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/trace" + "google.golang.org/api/googleapi" + "google.golang.org/grpc/status" +) + +const ( + defaultTracerName = "cloud.google.com/go/spanner" + gcpClientRepo = "googleapis/google-cloud-go" + gcpClientArtifact = "cloud.google.com/go/spanner" +) + +func tracer() trace.Tracer { + return otel.Tracer(defaultTracerName, trace.WithInstrumentationVersion(internal.Version)) +} + +// startSpan creates a span and a context.Context containing the newly-created span. +// If the context.Context provided in `ctx` contains a span then the newly-created +// span will be a child of that span, otherwise it will be a root span. +func startSpan(ctx context.Context, name string, opts ...trace.SpanStartOption) (context.Context, trace.Span) { + name = prependPackageName(name) + ctx, span := tracer().Start(ctx, name, opts...) + return ctx, span +} + +// endSpan retrieves the current span from ctx and completes the span. +// If an error occurs, the error is recorded as an exception span event for this span, +// and the span status is set in the form of a code and a description. +func endSpan(ctx context.Context, err error) { + span := trace.SpanFromContext(ctx) + if err != nil { + span.SetStatus(otelcodes.Error, toOpenTelemetryStatusDescription(err)) + span.RecordError(err) + } + span.End() +} + +// toOpenTelemetryStatus converts an error to an equivalent OpenTelemetry status description. +func toOpenTelemetryStatusDescription(err error) string { + var err2 *googleapi.Error + if ok := errors.As(err, &err2); ok { + return err2.Message + } else if s, ok := status.FromError(err); ok { + return s.Message() + } else { + return err.Error() + } +} + +func prependPackageName(spanName string) string { + return fmt.Sprintf("%s.%s", gcpClientArtifact, spanName) +} diff --git a/vendor/cloud.google.com/go/spanner/transaction.go b/vendor/cloud.google.com/go/spanner/transaction.go index 525decefac..019b1e64f4 100644 --- a/vendor/cloud.google.com/go/spanner/transaction.go +++ b/vendor/cloud.google.com/go/spanner/transaction.go @@ -297,8 +297,8 @@ func (ro ReadOptions) merge(opts ReadOptions) ReadOptions { // ReadWithOptions returns a RowIterator for reading multiple rows from the // database. Pass a ReadOptions to modify the read operation. func (t *txReadOnly) ReadWithOptions(ctx context.Context, table string, keys KeySet, columns []string, opts *ReadOptions) (ri *RowIterator) { - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.Read") - defer func() { trace.EndSpan(ctx, ri.err) }() + ctx, _ = startSpan(ctx, "Read", t.otConfig.commonTraceStartOptions...) + defer func() { endSpan(ctx, ri.err) }() var ( sh *sessionHandle ts *sppb.TransactionSelector @@ -680,8 +680,8 @@ func (t *txReadOnly) AnalyzeQuery(ctx context.Context, statement Statement) (*sp } func (t *txReadOnly) query(ctx context.Context, statement Statement, options QueryOptions) (ri *RowIterator) { - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.Query") - defer func() { trace.EndSpan(ctx, ri.err) }() + ctx, _ = startSpan(ctx, "Query", t.otConfig.commonTraceStartOptions...) + defer func() { endSpan(ctx, ri.err) }() req, sh, err := t.prepareExecuteSQL(ctx, statement, options) if err != nil { return &RowIterator{ @@ -1375,8 +1375,8 @@ func (t *ReadWriteTransaction) UpdateWithOptions(ctx context.Context, stmt State } func (t *ReadWriteTransaction) update(ctx context.Context, stmt Statement, opts QueryOptions) (rowCount int64, err error) { - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.Update") - defer func() { trace.EndSpan(ctx, err) }() + ctx, _ = startSpan(ctx, "Update", t.otConfig.commonTraceStartOptions...) + defer func() { endSpan(ctx, err) }() req, sh, err := t.prepareExecuteSQL(ctx, stmt, opts) if err != nil { return 0, err @@ -1451,8 +1451,8 @@ func (t *ReadWriteTransaction) BatchUpdateWithOptions(ctx context.Context, stmts } func (t *ReadWriteTransaction) batchUpdateWithOptions(ctx context.Context, stmts []Statement, opts QueryOptions) (_ []int64, err error) { - ctx = trace.StartSpan(ctx, "cloud.google.com/go/spanner.BatchUpdate") - defer func() { trace.EndSpan(ctx, err) }() + ctx, _ = startSpan(ctx, "BatchUpdate", t.otConfig.commonTraceStartOptions...) + defer func() { endSpan(ctx, err) }() sh, ts, err := t.acquire(ctx) if err != nil { diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/CHANGELOG.md b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/CHANGELOG.md index d99d530934..a2261b7a3d 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/CHANGELOG.md +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 1.18.2 (2025-07-31) + +### Bugs Fixed + +* Fixed a case in which `BearerTokenPolicy` didn't ensure an authentication error is non-retriable + ## 1.18.1 (2025-07-10) ### Bugs Fixed diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared/constants.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared/constants.go index 23788b14d9..ccca7b769d 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared/constants.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/internal/shared/constants.go @@ -40,5 +40,5 @@ const ( Module = "azcore" // Version is the semantic version (see http://semver.org) of this module. - Version = "v1.18.1" + Version = "v1.18.2" ) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_bearer_token.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_bearer_token.go index 1950a2e5b3..547e5a327f 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_bearer_token.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/policy_bearer_token.go @@ -97,7 +97,9 @@ func (b *BearerTokenPolicy) authenticateAndAuthorize(req *policy.Request) func(p as := acquiringResourceState{p: b, req: req, tro: tro} tk, err := b.mainResource.Get(as) if err != nil { - return err + // consider this error non-retriable because if it could be resolved by + // retrying authentication, the credential would have done so already + return errorinfo.NonRetriableError(err) } req.Raw().Header.Set(shared.HeaderAuthorization, shared.BearerTokenPrefix+tk.Token) return nil diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/CHANGELOG.md b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/CHANGELOG.md index 84e7941e4f..9e68cf6701 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/CHANGELOG.md +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/CHANGELOG.md @@ -1,5 +1,23 @@ # Release History +## 1.11.0 (2025-08-05) + +### Other Changes +- `DefaultAzureCredential` tries its next credential when a dev tool credential such as + `AzureCLICredential` returns an error + +## 1.11.0-beta.1 (2025-07-15) + +### Features Added +- `DefaultAzureCredential` allows selecting one of its credential types by name via environment variable + `AZURE_TOKEN_CREDENTIALS`. It will use only the selected type at runtime. For example, set + `AZURE_TOKEN_CREDENTIALS=WorkloadIdentityCredential` to have `DefaultAzureCredential` use only + `WorkloadIdentityCredential`. + +### Other Changes +- By default, `ManagedIdentityCredential` retries IMDS requests for a maximum of ~70 seconds as recommended + in IMDS documentation. In previous versions, it would stop retrying after ~54 seconds by default. + ## 1.10.1 (2025-06-10) ### Bugs Fixed diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/TROUBLESHOOTING.md b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/TROUBLESHOOTING.md index 91f4f05cc0..6ac513846d 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/TROUBLESHOOTING.md +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/TROUBLESHOOTING.md @@ -86,6 +86,7 @@ azlog.SetEvents(azidentity.EventAuthentication) |"DefaultAzureCredential failed to acquire a token"|No credential in the `DefaultAzureCredential` chain provided a token|
  • [Enable logging](#enable-and-configure-logging) to get further diagnostic information.
  • Consult the troubleshooting guide for underlying credential types for more information.
    • [EnvironmentCredential](#troubleshoot-environmentcredential-authentication-issues)
    • [ManagedIdentityCredential](#troubleshoot-managedidentitycredential-authentication-issues)
    • [AzureCLICredential](#troubleshoot-azureclicredential-authentication-issues)
    | |Error from the client with a status code of 401 or 403|Authentication succeeded but the authorizing Azure service responded with a 401 (Unauthorized), or 403 (Forbidden) status code|
    • [Enable logging](#enable-and-configure-logging) to determine which credential in the chain returned the authenticating token.
    • If an unexpected credential is returning a token, check application configuration such as environment variables.
    • Ensure the correct role is assigned to the authenticated identity. For example, a service specific role rather than the subscription Owner role.
    | |"managed identity timed out"|`DefaultAzureCredential` sets a short timeout on its first managed identity authentication attempt to prevent very long timeouts during local development when no managed identity is available. That timeout causes this error in production when an application requests a token before the hosting environment is ready to provide one.|Use [ManagedIdentityCredential](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#ManagedIdentityCredential) directly, at least in production. It doesn't set a timeout on its authentication attempts.| +|invalid AZURE_TOKEN_CREDENTIALS value "..."|AZURE_TOKEN_CREDENTIALS has an unexpected value|Specify a valid value as described in [DefaultAzureCredential documentation](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/azidentity#DefaultAzureCredential) ## Troubleshoot EnvironmentCredential authentication issues diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/ci.yml b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/ci.yml index c3af0cdc2d..38445e8536 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/ci.yml +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/ci.yml @@ -43,4 +43,4 @@ extends: Selection: sparse MatrixReplace: - Pool=.*LINUXPOOL.*/azsdk-pool-mms-ubuntu-2204-identitymsi - - OSVmImage=.*LINUXNEXTVMIMAGE.*/azsdk-pool-mms-ubuntu-2204-1espt + - OSVmImage=.*LINUXVMIMAGE.*/azsdk-pool-mms-ubuntu-2204-1espt diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/default_azure_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/default_azure_credential.go index f2a31ee6ac..2b94270a8c 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/default_azure_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/default_azure_credential.go @@ -19,6 +19,15 @@ import ( const azureTokenCredentials = "AZURE_TOKEN_CREDENTIALS" +// bit flags NewDefaultAzureCredential uses to parse AZURE_TOKEN_CREDENTIALS +const ( + env = uint8(1) << iota + workloadIdentity + managedIdentity + az + azd +) + // DefaultAzureCredentialOptions contains optional parameters for DefaultAzureCredential. // These options may not apply to all credentials in the chain. type DefaultAzureCredentialOptions struct { @@ -63,6 +72,16 @@ type DefaultAzureCredentialOptions struct { // Once a credential has successfully authenticated, DefaultAzureCredential will use that credential for // every subsequent authentication. // +// # Selecting credentials +// +// Set environment variable AZURE_TOKEN_CREDENTIALS to select a subset of the credential chain described above. +// DefaultAzureCredential will try only the specified credential(s), but its other behavior remains the same. +// Valid values for AZURE_TOKEN_CREDENTIALS are the name of any single type in the above chain, for example +// "EnvironmentCredential" or "AzureCLICredential", and these special values: +// +// - "dev": try [AzureCLICredential] and [AzureDeveloperCLICredential], in that order +// - "prod": try [EnvironmentCredential], [WorkloadIdentityCredential], and [ManagedIdentityCredential], in that order +// // [DefaultAzureCredential overview]: https://aka.ms/azsdk/go/identity/credential-chains#defaultazurecredential-overview type DefaultAzureCredential struct { chain *ChainedTokenCredential @@ -71,19 +90,29 @@ type DefaultAzureCredential struct { // NewDefaultAzureCredential creates a DefaultAzureCredential. Pass nil for options to accept defaults. func NewDefaultAzureCredential(options *DefaultAzureCredentialOptions) (*DefaultAzureCredential, error) { var ( - creds []azcore.TokenCredential - errorMessages []string - includeDev, includeProd = true, true + creds []azcore.TokenCredential + errorMessages []string + selected = env | workloadIdentity | managedIdentity | az | azd ) - if c, ok := os.LookupEnv(azureTokenCredentials); ok { - switch c { - case "dev": - includeProd = false - case "prod": - includeDev = false + if atc, ok := os.LookupEnv(azureTokenCredentials); ok { + switch { + case atc == "dev": + selected = az | azd + case atc == "prod": + selected = env | workloadIdentity | managedIdentity + case strings.EqualFold(atc, credNameEnvironment): + selected = env + case strings.EqualFold(atc, credNameWorkloadIdentity): + selected = workloadIdentity + case strings.EqualFold(atc, credNameManagedIdentity): + selected = managedIdentity + case strings.EqualFold(atc, credNameAzureCLI): + selected = az + case strings.EqualFold(atc, credNameAzureDeveloperCLI): + selected = azd default: - return nil, fmt.Errorf(`invalid %s value %q. Valid values are "dev" and "prod"`, azureTokenCredentials, c) + return nil, fmt.Errorf(`invalid %s value %q. Valid values are "dev", "prod", or the name of any credential type in the default chain. See https://aka.ms/azsdk/go/identity/docs#DefaultAzureCredential for more information`, azureTokenCredentials, atc) } } @@ -96,8 +125,7 @@ func NewDefaultAzureCredential(options *DefaultAzureCredentialOptions) (*Default additionalTenants = strings.Split(tenants, ";") } } - - if includeProd { + if selected&env != 0 { envCred, err := NewEnvironmentCredential(&EnvironmentCredentialOptions{ ClientOptions: options.ClientOptions, DisableInstanceDiscovery: options.DisableInstanceDiscovery, @@ -107,9 +135,10 @@ func NewDefaultAzureCredential(options *DefaultAzureCredentialOptions) (*Default creds = append(creds, envCred) } else { errorMessages = append(errorMessages, "EnvironmentCredential: "+err.Error()) - creds = append(creds, &defaultCredentialErrorReporter{credType: "EnvironmentCredential", err: err}) + creds = append(creds, &defaultCredentialErrorReporter{credType: credNameEnvironment, err: err}) } - + } + if selected&workloadIdentity != 0 { wic, err := NewWorkloadIdentityCredential(&WorkloadIdentityCredentialOptions{ AdditionallyAllowedTenants: additionalTenants, ClientOptions: options.ClientOptions, @@ -122,7 +151,8 @@ func NewDefaultAzureCredential(options *DefaultAzureCredentialOptions) (*Default errorMessages = append(errorMessages, credNameWorkloadIdentity+": "+err.Error()) creds = append(creds, &defaultCredentialErrorReporter{credType: credNameWorkloadIdentity, err: err}) } - + } + if selected&managedIdentity != 0 { o := &ManagedIdentityCredentialOptions{ClientOptions: options.ClientOptions, dac: true} if ID, ok := os.LookupEnv(azureClientID); ok { o.ID = ClientID(ID) @@ -135,18 +165,24 @@ func NewDefaultAzureCredential(options *DefaultAzureCredentialOptions) (*Default creds = append(creds, &defaultCredentialErrorReporter{credType: credNameManagedIdentity, err: err}) } } - if includeDev { - azCred, err := NewAzureCLICredential(&AzureCLICredentialOptions{AdditionallyAllowedTenants: additionalTenants, TenantID: options.TenantID}) + if selected&az != 0 { + azCred, err := NewAzureCLICredential(&AzureCLICredentialOptions{ + AdditionallyAllowedTenants: additionalTenants, + TenantID: options.TenantID, + inDefaultChain: true, + }) if err == nil { creds = append(creds, azCred) } else { errorMessages = append(errorMessages, credNameAzureCLI+": "+err.Error()) creds = append(creds, &defaultCredentialErrorReporter{credType: credNameAzureCLI, err: err}) } - + } + if selected&azd != 0 { azdCred, err := NewAzureDeveloperCLICredential(&AzureDeveloperCLICredentialOptions{ AdditionallyAllowedTenants: additionalTenants, TenantID: options.TenantID, + inDefaultChain: true, }) if err == nil { creds = append(creds, azdCred) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/environment_credential.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/environment_credential.go index 9b5e17dcde..f04d40ea4e 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/environment_credential.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/environment_credential.go @@ -18,7 +18,10 @@ import ( "github.com/Azure/azure-sdk-for-go/sdk/internal/log" ) -const envVarSendCertChain = "AZURE_CLIENT_SEND_CERTIFICATE_CHAIN" +const ( + credNameEnvironment = "EnvironmentCredential" + envVarSendCertChain = "AZURE_CLIENT_SEND_CERTIFICATE_CHAIN" +) // EnvironmentCredentialOptions contains optional parameters for EnvironmentCredential type EnvironmentCredentialOptions struct { diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed-identity-matrix.json b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed-identity-matrix.json index edd56f9d57..f92245533f 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed-identity-matrix.json +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed-identity-matrix.json @@ -4,7 +4,7 @@ "Agent": { "msi_image": { "ArmTemplateParameters": "@{deployResources = $true}", - "OSVmImage": "env:LINUXNEXTVMIMAGE", + "OSVmImage": "env:LINUXVMIMAGE", "Pool": "env:LINUXPOOL" } }, diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_client.go index b3a0f85883..0735d1fcbe 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/managed_identity_client.go @@ -54,10 +54,10 @@ type managedIdentityClient struct { // setIMDSRetryOptionDefaults sets zero-valued fields to default values appropriate for IMDS func setIMDSRetryOptionDefaults(o *policy.RetryOptions) { if o.MaxRetries == 0 { - o.MaxRetries = 5 + o.MaxRetries = 6 } if o.MaxRetryDelay == 0 { - o.MaxRetryDelay = 1 * time.Minute + o.MaxRetryDelay = 25 * time.Second } if o.RetryDelay == 0 { o.RetryDelay = 2 * time.Second diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources-post.ps1 b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources-post.ps1 index 67f97fbb2b..874d4ef37d 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources-post.ps1 +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/test-resources-post.ps1 @@ -100,7 +100,7 @@ $idName = $DeploymentOutputs['AZIDENTITY_USER_ASSIGNED_IDENTITY_NAME'] $issuer = az aks show -g $rg -n $aksName --query "oidcIssuerProfile.issuerUrl" -otsv $podName = "azidentity-test" $serviceAccountName = "workload-identity-sa" -az identity federated-credential create -g $rg --identity-name $idName --issuer $issuer --name $idName --subject system:serviceaccount:default:$serviceAccountName +az identity federated-credential create -g $rg --identity-name $idName --issuer $issuer --name $idName --subject system:serviceaccount:default:$serviceAccountName --audiences api://AzureADTokenExchange Write-Host "Deploying to AKS" az aks get-credentials -g $rg -n $aksName az aks update --attach-acr $DeploymentOutputs['AZIDENTITY_ACR_NAME'] -g $rg -n $aksName diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go index 2b767762fa..c3a70c4f2e 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/azidentity/version.go @@ -14,5 +14,5 @@ const ( module = "github.com/Azure/azure-sdk-for-go/sdk/" + component // Version is the semantic version (see http://semver.org) of this module. - version = "v1.10.1" + version = "v1.11.0" ) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo/errorinfo.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo/errorinfo.go index 8ee66b5267..779657b23b 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo/errorinfo.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/internal/errorinfo/errorinfo.go @@ -6,6 +6,8 @@ package errorinfo +import "errors" + // NonRetriable represents a non-transient error. This works in // conjunction with the retry policy, indicating that the error condition // is idempotent, so no retries will be attempted. @@ -15,10 +17,14 @@ type NonRetriable interface { NonRetriable() } -// NonRetriableError marks the specified error as non-retriable. -// This function takes an error as input and returns a new error that is marked as non-retriable. +// NonRetriableError ensures the specified error is [NonRetriable]. If +// the error is already [NonRetriable], it returns that error unchanged. +// Otherwise, it returns a new, [NonRetriable] error. func NonRetriableError(err error) error { - return &nonRetriableError{err} + if !errors.As(err, new(NonRetriable)) { + err = &nonRetriableError{err} + } + return err } // nonRetriableError is a struct that embeds the error interface. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/CHANGELOG.md b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/CHANGELOG.md index 8b0a775a34..e79d39ab02 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/CHANGELOG.md +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/CHANGELOG.md @@ -1,5 +1,23 @@ # Release History +## 1.4.0 (2025-06-12) + +### Features Added +* Add fakes support (https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/samples/fakes) + +### Other Changes +* Upgraded to API service version `7.6` + +## 1.4.0-beta.1 (2025-04-10) + +### Features Added +* Added `GetKeyAttestation` operation +* Added `EncryptionAlgorithmCKMAESKEYWRAP` and `EncryptionAlgorithmCKMAESKEYWRAPPAD` +* Added `SignatureAlgorithm`, `SignatureAlgorithmHS256`, `SignatureAlgorithmHS384`, and `SignatureAlgorithmHS512` + +### Other Changes +* Upgraded to API service version `7.6-preview.2` + ## 1.3.1 (2025-02-13) ### Other Changes diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/_metadata.json b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/_metadata.json new file mode 100644 index 0000000000..a5de6037c9 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/_metadata.json @@ -0,0 +1,4 @@ +{ + "apiVersion": "7.6", + "emitterVersion": "0.4.11" +} \ No newline at end of file diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/assets.json b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/assets.json index 27217d4ff7..49b1b30c69 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/assets.json +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "go", "TagPrefix": "go/security/keyvault/azkeys", - "Tag": "go/security/keyvault/azkeys_d53919c433" + "Tag": "go/security/keyvault/azkeys_90867d0fd1" } diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/ci.yml b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/ci.yml index 9b3a65805c..ef75240d7b 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/ci.yml +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/ci.yml @@ -28,6 +28,7 @@ extends: ServiceDirectory: 'security/keyvault/azkeys' RunLiveTests: true UsePipelineProxy: false + PersistOidcToken: true # Due to the high cost of Managed HSMs, we only want to test using them weekly. ${{ if contains(variables['Build.DefinitionName'], 'weekly') }}: diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/client.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/client.go index 0120d4206e..ff684c4a4b 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/client.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/client.go @@ -35,12 +35,14 @@ type Client struct { // in an EU geographical area. This operation requires the key/backup permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key. // - options - BackupKeyOptions contains the optional parameters for the Client.BackupKey method. func (client *Client) BackupKey(ctx context.Context, name string, options *BackupKeyOptions) (BackupKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.BackupKey", client.internal.Tracer(), nil) + const operationName = "Client.BackupKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.backupKeyCreateRequest(ctx, name, options) if err != nil { @@ -72,7 +74,7 @@ func (client *Client) backupKeyCreateRequest(ctx context.Context, name string, _ return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} return req, nil @@ -93,7 +95,7 @@ func (client *Client) backupKeyHandleResponse(resp *http.Response) (BackupKeyRes // Key Vault creates a new version of the key. It requires the keys/create permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name for the new key. The system will generate the version name for the new key. The value you provide may be // copied globally for the purpose of running the service. The value provided should not include personally identifiable or // sensitive information. @@ -101,7 +103,9 @@ func (client *Client) backupKeyHandleResponse(resp *http.Response) (BackupKeyRes // - options - CreateKeyOptions contains the optional parameters for the Client.CreateKey method. func (client *Client) CreateKey(ctx context.Context, name string, parameters CreateKeyParameters, options *CreateKeyOptions) (CreateKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.CreateKey", client.internal.Tracer(), nil) + const operationName = "Client.CreateKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.createKeyCreateRequest(ctx, name, parameters, options) if err != nil { @@ -133,7 +137,7 @@ func (client *Client) createKeyCreateRequest(ctx context.Context, name string, p return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} @@ -159,17 +163,19 @@ func (client *Client) createKeyHandleResponse(resp *http.Response) (CreateKeyRes // block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric // keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. // Microsoft recommends not to use CBC algorithms for decryption without first ensuring the integrity of the ciphertext using -// an HMAC, for example. See https://docs.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. +// an HMAC, for example. See https://learn.microsoft.com/dotnet/standard/security/vulnerabilities-cbc-mode for more information. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key. // - version - The version of the key. // - parameters - The parameters for the decryption operation. // - options - DecryptOptions contains the optional parameters for the Client.Decrypt method. func (client *Client) Decrypt(ctx context.Context, name string, version string, parameters KeyOperationParameters, options *DecryptOptions) (DecryptResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.Decrypt", client.internal.Tracer(), nil) + const operationName = "Client.Decrypt" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.decryptCreateRequest(ctx, name, version, parameters, options) if err != nil { @@ -202,7 +208,7 @@ func (client *Client) decryptCreateRequest(ctx context.Context, name string, ver return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} @@ -228,12 +234,14 @@ func (client *Client) decryptHandleResponse(resp *http.Response) (DecryptRespons // This operation requires the keys/delete permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key to delete. // - options - DeleteKeyOptions contains the optional parameters for the Client.DeleteKey method. func (client *Client) DeleteKey(ctx context.Context, name string, options *DeleteKeyOptions) (DeleteKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.DeleteKey", client.internal.Tracer(), nil) + const operationName = "Client.DeleteKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.deleteKeyCreateRequest(ctx, name, options) if err != nil { @@ -265,7 +273,7 @@ func (client *Client) deleteKeyCreateRequest(ctx context.Context, name string, _ return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} return req, nil @@ -290,14 +298,16 @@ func (client *Client) deleteKeyHandleResponse(resp *http.Response) (DeleteKeyRes // key material. This operation requires the keys/encrypt permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key. // - version - The version of the key. // - parameters - The parameters for the encryption operation. // - options - EncryptOptions contains the optional parameters for the Client.Encrypt method. func (client *Client) Encrypt(ctx context.Context, name string, version string, parameters KeyOperationParameters, options *EncryptOptions) (EncryptResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.Encrypt", client.internal.Tracer(), nil) + const operationName = "Client.Encrypt" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.encryptCreateRequest(ctx, name, version, parameters, options) if err != nil { @@ -330,7 +340,7 @@ func (client *Client) encryptCreateRequest(ctx context.Context, name string, ver return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} @@ -355,12 +365,14 @@ func (client *Client) encryptHandleResponse(resp *http.Response) (EncryptRespons // it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key. // - options - GetDeletedKeyOptions contains the optional parameters for the Client.GetDeletedKey method. func (client *Client) GetDeletedKey(ctx context.Context, name string, options *GetDeletedKeyOptions) (GetDeletedKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.GetDeletedKey", client.internal.Tracer(), nil) + const operationName = "Client.GetDeletedKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.getDeletedKeyCreateRequest(ctx, name, options) if err != nil { @@ -392,7 +404,7 @@ func (client *Client) getDeletedKeyCreateRequest(ctx context.Context, name strin return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} return req, nil @@ -413,14 +425,16 @@ func (client *Client) getDeletedKeyHandleResponse(resp *http.Response) (GetDelet // in the response. This operation requires the keys/get permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key to get. // - version - Adding the version parameter retrieves a specific version of a key. This URI fragment is optional. If not specified, // the latest version of the key is returned. // - options - GetKeyOptions contains the optional parameters for the Client.GetKey method. func (client *Client) GetKey(ctx context.Context, name string, version string, options *GetKeyOptions) (GetKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.GetKey", client.internal.Tracer(), nil) + const operationName = "Client.GetKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.getKeyCreateRequest(ctx, name, version, options) if err != nil { @@ -453,7 +467,7 @@ func (client *Client) getKeyCreateRequest(ctx context.Context, name string, vers return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} return req, nil @@ -468,18 +482,83 @@ func (client *Client) getKeyHandleResponse(resp *http.Response) (GetKeyResponse, return result, nil } +// GetKeyAttestation - Gets the public part of a stored key along with its attestation blob. +// +// The get key attestation operation returns the key along with its attestation blob. This operation requires the keys/get +// permission. +// If the operation fails it returns an *azcore.ResponseError type. +// +// Generated from API version 7.6 +// - name - The name of the key to retrieve attestation for. +// - version - Adding the version parameter retrieves attestation blob for specific version of a key. This URI fragment is optional. +// If not specified, the latest version of the key attestation blob is returned. +// - options - GetKeyAttestationOptions contains the optional parameters for the Client.GetKeyAttestation method. +func (client *Client) GetKeyAttestation(ctx context.Context, name string, version string, options *GetKeyAttestationOptions) (GetKeyAttestationResponse, error) { + var err error + const operationName = "Client.GetKeyAttestation" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() + req, err := client.getKeyAttestationCreateRequest(ctx, name, version, options) + if err != nil { + return GetKeyAttestationResponse{}, err + } + httpResp, err := client.internal.Pipeline().Do(req) + if err != nil { + return GetKeyAttestationResponse{}, err + } + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return GetKeyAttestationResponse{}, err + } + resp, err := client.getKeyAttestationHandleResponse(httpResp) + return resp, err +} + +// getKeyAttestationCreateRequest creates the GetKeyAttestation request. +func (client *Client) getKeyAttestationCreateRequest(ctx context.Context, name string, version string, _ *GetKeyAttestationOptions) (*policy.Request, error) { + host := "{vaultBaseUrl}" + host = strings.ReplaceAll(host, "{vaultBaseUrl}", client.vaultBaseUrl) + urlPath := "/keys/{key-name}/{key-version}/attestation" + if name == "" { + return nil, errors.New("parameter name cannot be empty") + } + urlPath = strings.ReplaceAll(urlPath, "{key-name}", url.PathEscape(name)) + urlPath = strings.ReplaceAll(urlPath, "{key-version}", url.PathEscape(version)) + req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(host, urlPath)) + if err != nil { + return nil, err + } + reqQP := req.Raw().URL.Query() + reqQP.Set("api-version", "7.6") + req.Raw().URL.RawQuery = reqQP.Encode() + req.Raw().Header["Accept"] = []string{"application/json"} + return req, nil +} + +// getKeyAttestationHandleResponse handles the GetKeyAttestation response. +func (client *Client) getKeyAttestationHandleResponse(resp *http.Response) (GetKeyAttestationResponse, error) { + result := GetKeyAttestationResponse{} + if err := runtime.UnmarshalAsJSON(resp, &result.KeyBundle); err != nil { + return GetKeyAttestationResponse{}, err + } + return result, nil +} + // GetKeyRotationPolicy - Lists the policy for a key. // // The GetKeyRotationPolicy operation returns the specified key policy resources in the specified key vault. This operation // requires the keys/get permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key in a given key vault. // - options - GetKeyRotationPolicyOptions contains the optional parameters for the Client.GetKeyRotationPolicy method. func (client *Client) GetKeyRotationPolicy(ctx context.Context, name string, options *GetKeyRotationPolicyOptions) (GetKeyRotationPolicyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.GetKeyRotationPolicy", client.internal.Tracer(), nil) + const operationName = "Client.GetKeyRotationPolicy" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.getKeyRotationPolicyCreateRequest(ctx, name, options) if err != nil { @@ -511,7 +590,7 @@ func (client *Client) getKeyRotationPolicyCreateRequest(ctx context.Context, nam return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} return req, nil @@ -531,12 +610,14 @@ func (client *Client) getKeyRotationPolicyHandleResponse(resp *http.Response) (G // Get the requested number of bytes containing random values from a managed HSM. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - parameters - The request object to get random bytes. // - options - GetRandomBytesOptions contains the optional parameters for the Client.GetRandomBytes method. func (client *Client) GetRandomBytes(ctx context.Context, parameters GetRandomBytesParameters, options *GetRandomBytesOptions) (GetRandomBytesResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.GetRandomBytes", client.internal.Tracer(), nil) + const operationName = "Client.GetRandomBytes" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.getRandomBytesCreateRequest(ctx, parameters, options) if err != nil { @@ -564,7 +645,7 @@ func (client *Client) getRandomBytesCreateRequest(ctx context.Context, parameter return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} @@ -589,14 +670,16 @@ func (client *Client) getRandomBytesHandleResponse(resp *http.Response) (GetRand // Key Vault creates a new version of the key. This operation requires the keys/import permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - Name for the imported key. The value you provide may be copied globally for the purpose of running the service. // The value provided should not include personally identifiable or sensitive information. // - parameters - The parameters to import a key. // - options - ImportKeyOptions contains the optional parameters for the Client.ImportKey method. func (client *Client) ImportKey(ctx context.Context, name string, parameters ImportKeyParameters, options *ImportKeyOptions) (ImportKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.ImportKey", client.internal.Tracer(), nil) + const operationName = "Client.ImportKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.importKeyCreateRequest(ctx, name, parameters, options) if err != nil { @@ -628,7 +711,7 @@ func (client *Client) importKeyCreateRequest(ctx context.Context, name string, p return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} @@ -654,7 +737,7 @@ func (client *Client) importKeyHandleResponse(resp *http.Response) (ImportKeyRes // for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete // enabled vault. This operation requires the keys/list permission. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - options - ListDeletedKeyPropertiesOptions contains the optional parameters for the Client.NewListDeletedKeyPropertiesPager // method. func (client *Client) NewListDeletedKeyPropertiesPager(options *ListDeletedKeyPropertiesOptions) *runtime.Pager[ListDeletedKeyPropertiesResponse] { @@ -663,6 +746,7 @@ func (client *Client) NewListDeletedKeyPropertiesPager(options *ListDeletedKeyPr return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ListDeletedKeyPropertiesResponse) (ListDeletedKeyPropertiesResponse, error) { + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "Client.NewListDeletedKeyPropertiesPager") nextLink := "" if page != nil { nextLink = *page.NextLink @@ -680,7 +764,7 @@ func (client *Client) NewListDeletedKeyPropertiesPager(options *ListDeletedKeyPr } // listDeletedKeyPropertiesCreateRequest creates the ListDeletedKeyProperties request. -func (client *Client) listDeletedKeyPropertiesCreateRequest(ctx context.Context, options *ListDeletedKeyPropertiesOptions) (*policy.Request, error) { +func (client *Client) listDeletedKeyPropertiesCreateRequest(ctx context.Context, _ *ListDeletedKeyPropertiesOptions) (*policy.Request, error) { host := "{vaultBaseUrl}" host = strings.ReplaceAll(host, "{vaultBaseUrl}", client.vaultBaseUrl) urlPath := "/deletedkeys" @@ -689,7 +773,7 @@ func (client *Client) listDeletedKeyPropertiesCreateRequest(ctx context.Context, return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} return req, nil @@ -710,7 +794,7 @@ func (client *Client) listDeletedKeyPropertiesHandleResponse(resp *http.Response // The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided // in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - options - ListKeyPropertiesOptions contains the optional parameters for the Client.NewListKeyPropertiesPager method. func (client *Client) NewListKeyPropertiesPager(options *ListKeyPropertiesOptions) *runtime.Pager[ListKeyPropertiesResponse] { return runtime.NewPager(runtime.PagingHandler[ListKeyPropertiesResponse]{ @@ -718,6 +802,7 @@ func (client *Client) NewListKeyPropertiesPager(options *ListKeyPropertiesOption return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ListKeyPropertiesResponse) (ListKeyPropertiesResponse, error) { + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "Client.NewListKeyPropertiesPager") nextLink := "" if page != nil { nextLink = *page.NextLink @@ -735,7 +820,7 @@ func (client *Client) NewListKeyPropertiesPager(options *ListKeyPropertiesOption } // listKeyPropertiesCreateRequest creates the ListKeyProperties request. -func (client *Client) listKeyPropertiesCreateRequest(ctx context.Context, options *ListKeyPropertiesOptions) (*policy.Request, error) { +func (client *Client) listKeyPropertiesCreateRequest(ctx context.Context, _ *ListKeyPropertiesOptions) (*policy.Request, error) { host := "{vaultBaseUrl}" host = strings.ReplaceAll(host, "{vaultBaseUrl}", client.vaultBaseUrl) urlPath := "/keys" @@ -744,7 +829,7 @@ func (client *Client) listKeyPropertiesCreateRequest(ctx context.Context, option return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} return req, nil @@ -763,7 +848,7 @@ func (client *Client) listKeyPropertiesHandleResponse(resp *http.Response) (List // // The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key. // - options - ListKeyPropertiesVersionsOptions contains the optional parameters for the Client.NewListKeyPropertiesVersionsPager // method. @@ -773,6 +858,7 @@ func (client *Client) NewListKeyPropertiesVersionsPager(name string, options *Li return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ListKeyPropertiesVersionsResponse) (ListKeyPropertiesVersionsResponse, error) { + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "Client.NewListKeyPropertiesVersionsPager") nextLink := "" if page != nil { nextLink = *page.NextLink @@ -790,7 +876,7 @@ func (client *Client) NewListKeyPropertiesVersionsPager(name string, options *Li } // listKeyPropertiesVersionsCreateRequest creates the ListKeyPropertiesVersions request. -func (client *Client) listKeyPropertiesVersionsCreateRequest(ctx context.Context, name string, options *ListKeyPropertiesVersionsOptions) (*policy.Request, error) { +func (client *Client) listKeyPropertiesVersionsCreateRequest(ctx context.Context, name string, _ *ListKeyPropertiesVersionsOptions) (*policy.Request, error) { host := "{vaultBaseUrl}" host = strings.ReplaceAll(host, "{vaultBaseUrl}", client.vaultBaseUrl) urlPath := "/keys/{key-name}/versions" @@ -803,7 +889,7 @@ func (client *Client) listKeyPropertiesVersionsCreateRequest(ctx context.Context return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} return req, nil @@ -824,12 +910,14 @@ func (client *Client) listKeyPropertiesVersionsHandleResponse(resp *http.Respons // vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key // - options - PurgeDeletedKeyOptions contains the optional parameters for the Client.PurgeDeletedKey method. func (client *Client) PurgeDeletedKey(ctx context.Context, name string, options *PurgeDeletedKeyOptions) (PurgeDeletedKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.PurgeDeletedKey", client.internal.Tracer(), nil) + const operationName = "Client.PurgeDeletedKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.purgeDeletedKeyCreateRequest(ctx, name, options) if err != nil { @@ -860,7 +948,7 @@ func (client *Client) purgeDeletedKeyCreateRequest(ctx context.Context, name str return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} return req, nil @@ -873,12 +961,14 @@ func (client *Client) purgeDeletedKeyCreateRequest(ctx context.Context, name str // the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the deleted key. // - options - RecoverDeletedKeyOptions contains the optional parameters for the Client.RecoverDeletedKey method. func (client *Client) RecoverDeletedKey(ctx context.Context, name string, options *RecoverDeletedKeyOptions) (RecoverDeletedKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.RecoverDeletedKey", client.internal.Tracer(), nil) + const operationName = "Client.RecoverDeletedKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.recoverDeletedKeyCreateRequest(ctx, name, options) if err != nil { @@ -910,7 +1000,7 @@ func (client *Client) recoverDeletedKeyCreateRequest(ctx context.Context, name s return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} return req, nil @@ -931,14 +1021,16 @@ func (client *Client) recoverDeletedKeyHandleResponse(resp *http.Response) (Reco // the keys/release permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key to get. // - version - Adding the version parameter retrieves a specific version of a key. // - parameters - The parameters for the key release operation. // - options - ReleaseOptions contains the optional parameters for the Client.Release method. func (client *Client) Release(ctx context.Context, name string, version string, parameters ReleaseParameters, options *ReleaseOptions) (ReleaseResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.Release", client.internal.Tracer(), nil) + const operationName = "Client.Release" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.releaseCreateRequest(ctx, name, version, parameters, options) if err != nil { @@ -971,7 +1063,7 @@ func (client *Client) releaseCreateRequest(ctx context.Context, name string, ver return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} @@ -1002,12 +1094,14 @@ func (client *Client) releaseHandleResponse(resp *http.Response) (ReleaseRespons // Vault. This operation requires the keys/restore permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - parameters - The parameters to restore the key. // - options - RestoreKeyOptions contains the optional parameters for the Client.RestoreKey method. func (client *Client) RestoreKey(ctx context.Context, parameters RestoreKeyParameters, options *RestoreKeyOptions) (RestoreKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.RestoreKey", client.internal.Tracer(), nil) + const operationName = "Client.RestoreKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.restoreKeyCreateRequest(ctx, parameters, options) if err != nil { @@ -1035,7 +1129,7 @@ func (client *Client) restoreKeyCreateRequest(ctx context.Context, parameters Re return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} @@ -1059,12 +1153,14 @@ func (client *Client) restoreKeyHandleResponse(resp *http.Response) (RestoreKeyR // The operation will rotate the key based on the key policy. It requires the keys/rotate permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of key to be rotated. The system will generate a new version in the specified key. // - options - RotateKeyOptions contains the optional parameters for the Client.RotateKey method. func (client *Client) RotateKey(ctx context.Context, name string, options *RotateKeyOptions) (RotateKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.RotateKey", client.internal.Tracer(), nil) + const operationName = "Client.RotateKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.rotateKeyCreateRequest(ctx, name, options) if err != nil { @@ -1096,7 +1192,7 @@ func (client *Client) rotateKeyCreateRequest(ctx context.Context, name string, _ return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} return req, nil @@ -1117,14 +1213,16 @@ func (client *Client) rotateKeyHandleResponse(resp *http.Response) (RotateKeyRes // private portion of the key. This operation requires the keys/sign permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key. // - version - The version of the key. // - parameters - The parameters for the signing operation. // - options - SignOptions contains the optional parameters for the Client.Sign method. func (client *Client) Sign(ctx context.Context, name string, version string, parameters SignParameters, options *SignOptions) (SignResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.Sign", client.internal.Tracer(), nil) + const operationName = "Client.Sign" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.signCreateRequest(ctx, name, version, parameters, options) if err != nil { @@ -1157,7 +1255,7 @@ func (client *Client) signCreateRequest(ctx context.Context, name string, versio return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} @@ -1183,14 +1281,16 @@ func (client *Client) signHandleResponse(resp *http.Response) (SignResponse, err // since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key. // - version - The version of the key. // - parameters - The parameters for the key operation. // - options - UnwrapKeyOptions contains the optional parameters for the Client.UnwrapKey method. func (client *Client) UnwrapKey(ctx context.Context, name string, version string, parameters KeyOperationParameters, options *UnwrapKeyOptions) (UnwrapKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.UnwrapKey", client.internal.Tracer(), nil) + const operationName = "Client.UnwrapKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.unwrapKeyCreateRequest(ctx, name, version, parameters, options) if err != nil { @@ -1223,7 +1323,7 @@ func (client *Client) unwrapKeyCreateRequest(ctx context.Context, name string, v return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} @@ -1249,14 +1349,16 @@ func (client *Client) unwrapKeyHandleResponse(resp *http.Response) (UnwrapKeyRes // key itself cannot be changed. This operation requires the keys/update permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of key to update. // - version - The version of the key to update. // - parameters - The parameters of the key to update. // - options - UpdateKeyOptions contains the optional parameters for the Client.UpdateKey method. func (client *Client) UpdateKey(ctx context.Context, name string, version string, parameters UpdateKeyParameters, options *UpdateKeyOptions) (UpdateKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.UpdateKey", client.internal.Tracer(), nil) + const operationName = "Client.UpdateKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.updateKeyCreateRequest(ctx, name, version, parameters, options) if err != nil { @@ -1289,7 +1391,7 @@ func (client *Client) updateKeyCreateRequest(ctx context.Context, name string, v return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} @@ -1313,13 +1415,15 @@ func (client *Client) updateKeyHandleResponse(resp *http.Response) (UpdateKeyRes // Set specified members in the key policy. Leave others as undefined. This operation requires the keys/update permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key in the given vault. // - keyRotationPolicy - The policy for the key. // - options - UpdateKeyRotationPolicyOptions contains the optional parameters for the Client.UpdateKeyRotationPolicy method. func (client *Client) UpdateKeyRotationPolicy(ctx context.Context, name string, keyRotationPolicy KeyRotationPolicy, options *UpdateKeyRotationPolicyOptions) (UpdateKeyRotationPolicyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.UpdateKeyRotationPolicy", client.internal.Tracer(), nil) + const operationName = "Client.UpdateKeyRotationPolicy" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.updateKeyRotationPolicyCreateRequest(ctx, name, keyRotationPolicy, options) if err != nil { @@ -1351,7 +1455,7 @@ func (client *Client) updateKeyRotationPolicyCreateRequest(ctx context.Context, return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} @@ -1378,14 +1482,16 @@ func (client *Client) updateKeyRotationPolicyHandleResponse(resp *http.Response) // This operation requires the keys/verify permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key. // - version - The version of the key. // - parameters - The parameters for verify operations. // - options - VerifyOptions contains the optional parameters for the Client.Verify method. func (client *Client) Verify(ctx context.Context, name string, version string, parameters VerifyParameters, options *VerifyOptions) (VerifyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.Verify", client.internal.Tracer(), nil) + const operationName = "Client.Verify" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.verifyCreateRequest(ctx, name, version, parameters, options) if err != nil { @@ -1418,7 +1524,7 @@ func (client *Client) verifyCreateRequest(ctx context.Context, name string, vers return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} @@ -1446,14 +1552,16 @@ func (client *Client) verifyHandleResponse(resp *http.Response) (VerifyResponse, // requires the keys/wrapKey permission. // If the operation fails it returns an *azcore.ResponseError type. // -// Generated from API version 7.5 +// Generated from API version 7.6 // - name - The name of the key. // - version - The version of the key. // - parameters - The parameters for wrap operation. // - options - WrapKeyOptions contains the optional parameters for the Client.WrapKey method. func (client *Client) WrapKey(ctx context.Context, name string, version string, parameters KeyOperationParameters, options *WrapKeyOptions) (WrapKeyResponse, error) { var err error - ctx, endSpan := runtime.StartSpan(ctx, "Client.WrapKey", client.internal.Tracer(), nil) + const operationName = "Client.WrapKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) defer func() { endSpan(err) }() req, err := client.wrapKeyCreateRequest(ctx, name, version, parameters, options) if err != nil { @@ -1486,7 +1594,7 @@ func (client *Client) wrapKeyCreateRequest(ctx context.Context, name string, ver return nil, err } reqQP := req.Raw().URL.Query() - reqQP.Set("api-version", "7.5") + reqQP.Set("api-version", "7.6") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} req.Raw().Header["Content-Type"] = []string{"application/json"} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/constants.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/constants.go index de3f3a8133..b842a88eaf 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/constants.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/constants.go @@ -56,11 +56,20 @@ const ( EncryptionAlgorithmA256GCM EncryptionAlgorithm = "A256GCM" // EncryptionAlgorithmA256KW - 256-bit AES key wrap. EncryptionAlgorithmA256KW EncryptionAlgorithm = "A256KW" - // EncryptionAlgorithmRSA15 - RSAES-PKCS1-V1_5 key encryption, as described in https://tools.ietf.org/html/rfc3447. + // EncryptionAlgorithmCKMAESKEYWRAP - CKM AES key wrap. + EncryptionAlgorithmCKMAESKEYWRAP EncryptionAlgorithm = "CKM_AES_KEY_WRAP" + // EncryptionAlgorithmCKMAESKEYWRAPPAD - CKM AES key wrap with padding. + EncryptionAlgorithmCKMAESKEYWRAPPAD EncryptionAlgorithm = "CKM_AES_KEY_WRAP_PAD" + // EncryptionAlgorithmRSA15 - [Not recommended] RSAES-PKCS1-V1_5 key encryption, as described in https://tools.ietf.org/html/rfc3447. + // Microsoft recommends using RSA_OAEP_256 or stronger algorithms for enhanced security. Microsoft does *not* recommend RSA_1_5, + // which is included solely for backwards compatibility. Cryptographic standards no longer consider RSA with the PKCS#1 v1.5 + // padding scheme secure for encryption. EncryptionAlgorithmRSA15 EncryptionAlgorithm = "RSA1_5" - // EncryptionAlgorithmRSAOAEP - RSAES using Optimal Asymmetric Encryption Padding (OAEP), as described in https://tools.ietf.org/html/rfc3447, - // with the default parameters specified by RFC 3447 in Section A.2.1. Those default parameters are using a hash function - // of SHA-1 and a mask generation function of MGF1 with SHA-1. + // EncryptionAlgorithmRSAOAEP - [Not recommended] RSAES using Optimal Asymmetric Encryption Padding (OAEP), as described in + // https://tools.ietf.org/html/rfc3447, with the default parameters specified by RFC 3447 in Section A.2.1. Those default + // parameters are using a hash function of SHA-1 and a mask generation function of MGF1 with SHA-1. Microsoft recommends using + // RSA_OAEP_256 or stronger algorithms for enhanced security. Microsoft does *not* recommend RSA_OAEP, which is included solely + // for backwards compatibility. RSA_OAEP utilizes SHA1, which has known collision problems. EncryptionAlgorithmRSAOAEP EncryptionAlgorithm = "RSA-OAEP" // EncryptionAlgorithmRSAOAEP256 - RSAES using Optimal Asymmetric Encryption Padding with a hash function of SHA-256 and a // mask generation function of MGF1 with SHA-256. @@ -82,6 +91,8 @@ func PossibleEncryptionAlgorithmValues() []EncryptionAlgorithm { EncryptionAlgorithmA256CBCPAD, EncryptionAlgorithmA256GCM, EncryptionAlgorithmA256KW, + EncryptionAlgorithmCKMAESKEYWRAP, + EncryptionAlgorithmCKMAESKEYWRAPPAD, EncryptionAlgorithmRSA15, EncryptionAlgorithmRSAOAEP, EncryptionAlgorithmRSAOAEP256, @@ -204,6 +215,12 @@ const ( SignatureAlgorithmES384 SignatureAlgorithm = "ES384" // SignatureAlgorithmES512 - ECDSA using P-521 and SHA-512, as described in https://tools.ietf.org/html/rfc7518 SignatureAlgorithmES512 SignatureAlgorithm = "ES512" + // SignatureAlgorithmHS256 - HMAC using SHA-256, as described in https://tools.ietf.org/html/rfc7518 + SignatureAlgorithmHS256 SignatureAlgorithm = "HS256" + // SignatureAlgorithmHS384 - HMAC using SHA-384, as described in https://tools.ietf.org/html/rfc7518 + SignatureAlgorithmHS384 SignatureAlgorithm = "HS384" + // SignatureAlgorithmHS512 - HMAC using SHA-512, as described in https://tools.ietf.org/html/rfc7518 + SignatureAlgorithmHS512 SignatureAlgorithm = "HS512" // SignatureAlgorithmPS256 - RSASSA-PSS using SHA-256 and MGF1 with SHA-256, as described in https://tools.ietf.org/html/rfc7518 SignatureAlgorithmPS256 SignatureAlgorithm = "PS256" // SignatureAlgorithmPS384 - RSASSA-PSS using SHA-384 and MGF1 with SHA-384, as described in https://tools.ietf.org/html/rfc7518 @@ -225,6 +242,9 @@ func PossibleSignatureAlgorithmValues() []SignatureAlgorithm { SignatureAlgorithmES256K, SignatureAlgorithmES384, SignatureAlgorithmES512, + SignatureAlgorithmHS256, + SignatureAlgorithmHS384, + SignatureAlgorithmHS512, SignatureAlgorithmPS256, SignatureAlgorithmPS384, SignatureAlgorithmPS512, diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/models.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/models.go index 36bdd166bf..e9752268bb 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/models.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/models.go @@ -177,6 +177,21 @@ type JSONWebKey struct { Y []byte } +// KeyAttestation - The key attestation information. +type KeyAttestation struct { + // A base64url-encoded string containing certificates in PEM format, used for attestation validation. + CertificatePEMFile []byte + + // The attestation blob bytes encoded as base64url string corresponding to a private key. + PrivateKeyAttestation []byte + + // The attestation blob bytes encoded as base64url string corresponding to a public key in case of asymmetric key. + PublicKeyAttestation []byte + + // The version of the attestation. + Version *string +} + // KeyAttributes - The attributes of a key managed by the key vault service. type KeyAttributes struct { // Determines whether the object is enabled. @@ -192,6 +207,9 @@ type KeyAttributes struct { // Not before date in UTC. NotBefore *time.Time + // READ-ONLY; The key or key version attestation information. + Attestation *KeyAttestation + // READ-ONLY; Creation time in UTC. Created *time.Time diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/models_serde.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/models_serde.go index 1f0a620c91..2c171ea615 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/models_serde.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/models_serde.go @@ -441,9 +441,61 @@ func (j *JSONWebKey) UnmarshalJSON(data []byte) error { return nil } +// MarshalJSON implements the json.Marshaller interface for type KeyAttestation. +func (k KeyAttestation) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]any) + populateByteArray(objectMap, "certificatePemFile", k.CertificatePEMFile, func() any { + return runtime.EncodeByteArray(k.CertificatePEMFile, runtime.Base64URLFormat) + }) + populateByteArray(objectMap, "privateKeyAttestation", k.PrivateKeyAttestation, func() any { + return runtime.EncodeByteArray(k.PrivateKeyAttestation, runtime.Base64URLFormat) + }) + populateByteArray(objectMap, "publicKeyAttestation", k.PublicKeyAttestation, func() any { + return runtime.EncodeByteArray(k.PublicKeyAttestation, runtime.Base64URLFormat) + }) + populate(objectMap, "version", k.Version) + return json.Marshal(objectMap) +} + +// UnmarshalJSON implements the json.Unmarshaller interface for type KeyAttestation. +func (k *KeyAttestation) UnmarshalJSON(data []byte) error { + var rawMsg map[string]json.RawMessage + if err := json.Unmarshal(data, &rawMsg); err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + for key, val := range rawMsg { + var err error + switch key { + case "certificatePemFile": + if val != nil && string(val) != "null" { + err = runtime.DecodeByteArray(string(val), &k.CertificatePEMFile, runtime.Base64URLFormat) + } + delete(rawMsg, key) + case "privateKeyAttestation": + if val != nil && string(val) != "null" { + err = runtime.DecodeByteArray(string(val), &k.PrivateKeyAttestation, runtime.Base64URLFormat) + } + delete(rawMsg, key) + case "publicKeyAttestation": + if val != nil && string(val) != "null" { + err = runtime.DecodeByteArray(string(val), &k.PublicKeyAttestation, runtime.Base64URLFormat) + } + delete(rawMsg, key) + case "version": + err = unpopulate(val, "Version", &k.Version) + delete(rawMsg, key) + } + if err != nil { + return fmt.Errorf("unmarshalling type %T: %v", k, err) + } + } + return nil +} + // MarshalJSON implements the json.Marshaller interface for type KeyAttributes. func (k KeyAttributes) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) + populate(objectMap, "attestation", k.Attestation) populateTimeUnix(objectMap, "created", k.Created) populate(objectMap, "enabled", k.Enabled) populateTimeUnix(objectMap, "exp", k.Expires) @@ -465,6 +517,9 @@ func (k *KeyAttributes) UnmarshalJSON(data []byte) error { for key, val := range rawMsg { var err error switch key { + case "attestation": + err = unpopulate(val, "Attestation", &k.Attestation) + delete(rawMsg, key) case "created": err = unpopulateTimeUnix(val, "Created", &k.Created) delete(rawMsg, key) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/options.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/options.go index 3fa3e08881..556e794f14 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/options.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/options.go @@ -34,6 +34,11 @@ type GetDeletedKeyOptions struct { // placeholder for future optional parameters } +// GetKeyAttestationOptions contains the optional parameters for the Client.GetKeyAttestation method. +type GetKeyAttestationOptions struct { + // placeholder for future optional parameters +} + // GetKeyOptions contains the optional parameters for the Client.GetKey method. type GetKeyOptions struct { // placeholder for future optional parameters diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/platform-matrix.json b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/platform-matrix.json index a2a6f970f0..539db300d8 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/platform-matrix.json +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/platform-matrix.json @@ -5,13 +5,13 @@ "include": [ { "Agent": { - "ubuntu-20.04": { + "ubuntu_go": { "OSVmImage": "env:LINUXVMIMAGE", "Pool": "env:LINUXPOOL" } }, - "ArmTemplateParameters": "@{ enableHsm = $true }", - "GoVersion": ["1.18"] + "GoVersion": ["env:GO_VERSION_PREVIOUS"], + "ArmTemplateParameters": "@{ enableHsm = $true }" } ] -} \ No newline at end of file +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/responses.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/responses.go index 17e2451be1..617910427b 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/responses.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/responses.go @@ -40,6 +40,12 @@ type GetDeletedKeyResponse struct { DeletedKey } +// GetKeyAttestationResponse contains the response from method Client.GetKeyAttestation. +type GetKeyAttestationResponse struct { + // A KeyBundle consisting of a WebKey plus its attributes. + KeyBundle +} + // GetKeyResponse contains the response from method Client.GetKey. type GetKeyResponse struct { // A KeyBundle consisting of a WebKey plus its attributes. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/test-resources-post.ps1 b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/test-resources-post.ps1 index 80f20c0cbf..6a05021a2a 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/test-resources-post.ps1 +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/test-resources-post.ps1 @@ -12,8 +12,28 @@ using namespace System.Security.Cryptography.X509Certificates # Use same parameter names as declared in eng/New-TestResources.ps1 (assume validation therein). [CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = 'Medium')] param ( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string] $SubscriptionId, + + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string] $TenantId, + + [Parameter(Mandatory = $true)] + [ValidatePattern('^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$')] + [string] $TestApplicationId, + + [Parameter(Mandatory = $true)] + [ValidatePattern('^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$')] + [string] $TestApplicationOid, + + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string] $Environment, + [Parameter()] - [hashtable] $DeploymentOutputs, + [switch] $CI = ($null -ne $env:SYSTEM_TEAMPROJECTID), # Captures any arguments from eng/New-TestResources.ps1 not declared here (no parameter errors). [Parameter(ValueFromRemainingArguments = $true)] @@ -73,6 +93,15 @@ if (!$DeploymentOutputs['AZURE_MANAGEDHSM_URL']) { exit } +if ($CI) { + Log "Refreshing login" + Connect-AzAccount -ServicePrincipal ` + -TenantId $TenantId ` + -ApplicationId $TestApplicationId ` + -FederatedToken $env:ARM_OIDC_TOKEN + Select-AzSubscription -Subscription $SubscriptionId +} + [Uri] $hsmUrl = $DeploymentOutputs['AZURE_MANAGEDHSM_URL'] $hsmName = $hsmUrl.Host.Substring(0, $hsmUrl.Host.IndexOf('.')) @@ -115,4 +144,4 @@ Log "Creating additional required role assignments for '$testApplicationOid'" $null = New-AzKeyVaultRoleAssignment -HsmName $hsmName -RoleDefinitionName 'Managed HSM Crypto Officer' -ObjectID $testApplicationOid $null = New-AzKeyVaultRoleAssignment -HsmName $hsmName -RoleDefinitionName 'Managed HSM Crypto User' -ObjectID $testApplicationOid -Log "Role assignments created for '$testApplicationOid'" \ No newline at end of file +Log "Role assignments created for '$testApplicationOid'" diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/tsp-location.yaml b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/tsp-location.yaml index cecc086985..0a50db5b21 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/tsp-location.yaml +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/tsp-location.yaml @@ -1,6 +1,5 @@ directory: specification/keyvault/Security.KeyVault.Keys -commit: de825aa1e9bc91476240630a2142d42a380de1c9 +commit: e4ee008e38fd34b530df834ef8b966835a641b13 repo: Azure/azure-rest-api-specs additionalDirectories: - specification/keyvault/Security.KeyVault.Common/ -# https://github.com/Azure/azure-rest-api-specs/tree/de825aa1e9bc91476240630a2142d42a380de1c9/specification/keyvault/Security.KeyVault.Keys diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/version.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/version.go index 7be3860c79..549bfc83c2 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/version.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys/version.go @@ -5,5 +5,5 @@ package azkeys const ( moduleName = "github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys" - version = "v1.3.1" + version = "v1.4.0" ) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/CHANGELOG.md b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/CHANGELOG.md index 8027787cd6..e27dab7797 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/CHANGELOG.md +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/CHANGELOG.md @@ -1,5 +1,15 @@ # Release History +## 1.2.0 (2025-06-12) + +### Other Changes +* Upgrade dependencies + +## 1.2.0-beta.1 (2025-03-11) + +### Features Added +* Added fakes support + ## 1.1.1 (2025-02-13) ### Bugs Fixed diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/challenge_policy.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/challenge_policy.go index b6d21970b7..40c987a11e 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/challenge_policy.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/challenge_policy.go @@ -1,6 +1,3 @@ -//go:build go1.18 -// +build go1.18 - // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/constants.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/constants.go index 40eef60bd1..00213e7b46 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/constants.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/constants.go @@ -1,11 +1,8 @@ -//go:build go1.18 -// +build go1.18 - // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. package internal const ( - version = "v1.1.1" //nolint + version = "v1.2.0" //nolint ) diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/doc.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/doc.go index d8f93492f5..d629f2366d 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/doc.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/doc.go @@ -1,6 +1,3 @@ -//go:build go1.18 -// +build go1.18 - // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/fake_challenge.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/fake_challenge.go new file mode 100644 index 0000000000..4bb2e7bea2 --- /dev/null +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/fake_challenge.go @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. + +package internal + +import ( + "fmt" + "net/http" + "strings" +) + +// FakeChallenge is used by fake servers to fake the authentication challenge. +type FakeChallenge struct{} + +// Do initiates an authentication challenge IFF req doesn't contain an Authorization header. +// When the last return value is true, the fake server will use the returned response/error. +func (m *FakeChallenge) Do(req *http.Request) (*http.Response, error, bool) { + if req.Header.Get("Authorization") != "" { + // presence of an authorization header means we don't need to elicit a challenge + return nil, nil, false + } + + resp := &http.Response{ + Request: req, + Status: "fake unauthorized", + StatusCode: http.StatusUnauthorized, + Body: http.NoBody, + Header: http.Header{}, + } + + s := strings.Split(req.URL.Host, ".") + resource := fmt.Sprintf("%s://%s", req.URL.Scheme, strings.Join(s[len(s)-3:], ".")) + resp.Header.Set("WWW-Authenticate", fmt.Sprintf(`Bearer authorization="https://fake.local/tenant" resource="%s"`, resource)) + + return resp, nil, true +} diff --git a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/parse.go b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/parse.go index 8511832d27..1e93ebae8f 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/parse.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal/parse.go @@ -1,8 +1,6 @@ -//go:build go1.18 -// +build go1.18 - // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. + package internal import ( diff --git a/vendor/github.com/avast/retry-go/v4/LICENSE b/vendor/github.com/Azure/go-ansiterm/LICENSE similarity index 86% rename from vendor/github.com/avast/retry-go/v4/LICENSE rename to vendor/github.com/Azure/go-ansiterm/LICENSE index f63fca814f..e3d9a64d1d 100644 --- a/vendor/github.com/avast/retry-go/v4/LICENSE +++ b/vendor/github.com/Azure/go-ansiterm/LICENSE @@ -1,6 +1,6 @@ -MIT License +The MIT License (MIT) -Copyright (c) 2017 Avast +Copyright (c) 2015 Microsoft Corporation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/github.com/Azure/go-ansiterm/README.md b/vendor/github.com/Azure/go-ansiterm/README.md new file mode 100644 index 0000000000..261c041e7a --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/README.md @@ -0,0 +1,12 @@ +# go-ansiterm + +This is a cross platform Ansi Terminal Emulation library. It reads a stream of Ansi characters and produces the appropriate function calls. The results of the function calls are platform dependent. + +For example the parser might receive "ESC, [, A" as a stream of three characters. This is the code for Cursor Up (http://www.vt100.net/docs/vt510-rm/CUU). The parser then calls the cursor up function (CUU()) on an event handler. The event handler determines what platform specific work must be done to cause the cursor to move up one position. + +The parser (parser.go) is a partial implementation of this state machine (http://vt100.net/emu/vt500_parser.png). There are also two event handler implementations, one for tests (test_event_handler.go) to validate that the expected events are being produced and called, the other is a Windows implementation (winterm/win_event_handler.go). + +See parser_test.go for examples exercising the state machine and generating appropriate function calls. + +----- +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/vendor/github.com/Azure/go-ansiterm/SECURITY.md b/vendor/github.com/Azure/go-ansiterm/SECURITY.md new file mode 100644 index 0000000000..e138ec5d6a --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/SECURITY.md @@ -0,0 +1,41 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). + +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). + + diff --git a/vendor/github.com/Azure/go-ansiterm/constants.go b/vendor/github.com/Azure/go-ansiterm/constants.go new file mode 100644 index 0000000000..96504a33bc --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/constants.go @@ -0,0 +1,188 @@ +package ansiterm + +const LogEnv = "DEBUG_TERMINAL" + +// ANSI constants +// References: +// -- http://www.ecma-international.org/publications/standards/Ecma-048.htm +// -- http://man7.org/linux/man-pages/man4/console_codes.4.html +// -- http://manpages.ubuntu.com/manpages/intrepid/man4/console_codes.4.html +// -- http://en.wikipedia.org/wiki/ANSI_escape_code +// -- http://vt100.net/emu/dec_ansi_parser +// -- http://vt100.net/emu/vt500_parser.svg +// -- http://invisible-island.net/xterm/ctlseqs/ctlseqs.html +// -- http://www.inwap.com/pdp10/ansicode.txt +const ( + // ECMA-48 Set Graphics Rendition + // Note: + // -- Constants leading with an underscore (e.g., _ANSI_xxx) are unsupported or reserved + // -- Fonts could possibly be supported via SetCurrentConsoleFontEx + // -- Windows does not expose the per-window cursor (i.e., caret) blink times + ANSI_SGR_RESET = 0 + ANSI_SGR_BOLD = 1 + ANSI_SGR_DIM = 2 + _ANSI_SGR_ITALIC = 3 + ANSI_SGR_UNDERLINE = 4 + _ANSI_SGR_BLINKSLOW = 5 + _ANSI_SGR_BLINKFAST = 6 + ANSI_SGR_REVERSE = 7 + _ANSI_SGR_INVISIBLE = 8 + _ANSI_SGR_LINETHROUGH = 9 + _ANSI_SGR_FONT_00 = 10 + _ANSI_SGR_FONT_01 = 11 + _ANSI_SGR_FONT_02 = 12 + _ANSI_SGR_FONT_03 = 13 + _ANSI_SGR_FONT_04 = 14 + _ANSI_SGR_FONT_05 = 15 + _ANSI_SGR_FONT_06 = 16 + _ANSI_SGR_FONT_07 = 17 + _ANSI_SGR_FONT_08 = 18 + _ANSI_SGR_FONT_09 = 19 + _ANSI_SGR_FONT_10 = 20 + _ANSI_SGR_DOUBLEUNDERLINE = 21 + ANSI_SGR_BOLD_DIM_OFF = 22 + _ANSI_SGR_ITALIC_OFF = 23 + ANSI_SGR_UNDERLINE_OFF = 24 + _ANSI_SGR_BLINK_OFF = 25 + _ANSI_SGR_RESERVED_00 = 26 + ANSI_SGR_REVERSE_OFF = 27 + _ANSI_SGR_INVISIBLE_OFF = 28 + _ANSI_SGR_LINETHROUGH_OFF = 29 + ANSI_SGR_FOREGROUND_BLACK = 30 + ANSI_SGR_FOREGROUND_RED = 31 + ANSI_SGR_FOREGROUND_GREEN = 32 + ANSI_SGR_FOREGROUND_YELLOW = 33 + ANSI_SGR_FOREGROUND_BLUE = 34 + ANSI_SGR_FOREGROUND_MAGENTA = 35 + ANSI_SGR_FOREGROUND_CYAN = 36 + ANSI_SGR_FOREGROUND_WHITE = 37 + _ANSI_SGR_RESERVED_01 = 38 + ANSI_SGR_FOREGROUND_DEFAULT = 39 + ANSI_SGR_BACKGROUND_BLACK = 40 + ANSI_SGR_BACKGROUND_RED = 41 + ANSI_SGR_BACKGROUND_GREEN = 42 + ANSI_SGR_BACKGROUND_YELLOW = 43 + ANSI_SGR_BACKGROUND_BLUE = 44 + ANSI_SGR_BACKGROUND_MAGENTA = 45 + ANSI_SGR_BACKGROUND_CYAN = 46 + ANSI_SGR_BACKGROUND_WHITE = 47 + _ANSI_SGR_RESERVED_02 = 48 + ANSI_SGR_BACKGROUND_DEFAULT = 49 + // 50 - 65: Unsupported + + ANSI_MAX_CMD_LENGTH = 4096 + + MAX_INPUT_EVENTS = 128 + DEFAULT_WIDTH = 80 + DEFAULT_HEIGHT = 24 + + ANSI_BEL = 0x07 + ANSI_BACKSPACE = 0x08 + ANSI_TAB = 0x09 + ANSI_LINE_FEED = 0x0A + ANSI_VERTICAL_TAB = 0x0B + ANSI_FORM_FEED = 0x0C + ANSI_CARRIAGE_RETURN = 0x0D + ANSI_ESCAPE_PRIMARY = 0x1B + ANSI_ESCAPE_SECONDARY = 0x5B + ANSI_OSC_STRING_ENTRY = 0x5D + ANSI_COMMAND_FIRST = 0x40 + ANSI_COMMAND_LAST = 0x7E + DCS_ENTRY = 0x90 + CSI_ENTRY = 0x9B + OSC_STRING = 0x9D + ANSI_PARAMETER_SEP = ";" + ANSI_CMD_G0 = '(' + ANSI_CMD_G1 = ')' + ANSI_CMD_G2 = '*' + ANSI_CMD_G3 = '+' + ANSI_CMD_DECPNM = '>' + ANSI_CMD_DECPAM = '=' + ANSI_CMD_OSC = ']' + ANSI_CMD_STR_TERM = '\\' + + KEY_CONTROL_PARAM_2 = ";2" + KEY_CONTROL_PARAM_3 = ";3" + KEY_CONTROL_PARAM_4 = ";4" + KEY_CONTROL_PARAM_5 = ";5" + KEY_CONTROL_PARAM_6 = ";6" + KEY_CONTROL_PARAM_7 = ";7" + KEY_CONTROL_PARAM_8 = ";8" + KEY_ESC_CSI = "\x1B[" + KEY_ESC_N = "\x1BN" + KEY_ESC_O = "\x1BO" + + FILL_CHARACTER = ' ' +) + +func getByteRange(start byte, end byte) []byte { + bytes := make([]byte, 0, 32) + for i := start; i <= end; i++ { + bytes = append(bytes, byte(i)) + } + + return bytes +} + +var toGroundBytes = getToGroundBytes() +var executors = getExecuteBytes() + +// SPACE 20+A0 hex Always and everywhere a blank space +// Intermediate 20-2F hex !"#$%&'()*+,-./ +var intermeds = getByteRange(0x20, 0x2F) + +// Parameters 30-3F hex 0123456789:;<=>? +// CSI Parameters 30-39, 3B hex 0123456789; +var csiParams = getByteRange(0x30, 0x3F) + +var csiCollectables = append(getByteRange(0x30, 0x39), getByteRange(0x3B, 0x3F)...) + +// Uppercase 40-5F hex @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ +var upperCase = getByteRange(0x40, 0x5F) + +// Lowercase 60-7E hex `abcdefghijlkmnopqrstuvwxyz{|}~ +var lowerCase = getByteRange(0x60, 0x7E) + +// Alphabetics 40-7E hex (all of upper and lower case) +var alphabetics = append(upperCase, lowerCase...) + +var printables = getByteRange(0x20, 0x7F) + +var escapeIntermediateToGroundBytes = getByteRange(0x30, 0x7E) +var escapeToGroundBytes = getEscapeToGroundBytes() + +// See http://www.vt100.net/emu/vt500_parser.png for description of the complex +// byte ranges below + +func getEscapeToGroundBytes() []byte { + escapeToGroundBytes := getByteRange(0x30, 0x4F) + escapeToGroundBytes = append(escapeToGroundBytes, getByteRange(0x51, 0x57)...) + escapeToGroundBytes = append(escapeToGroundBytes, 0x59) + escapeToGroundBytes = append(escapeToGroundBytes, 0x5A) + escapeToGroundBytes = append(escapeToGroundBytes, 0x5C) + escapeToGroundBytes = append(escapeToGroundBytes, getByteRange(0x60, 0x7E)...) + return escapeToGroundBytes +} + +func getExecuteBytes() []byte { + executeBytes := getByteRange(0x00, 0x17) + executeBytes = append(executeBytes, 0x19) + executeBytes = append(executeBytes, getByteRange(0x1C, 0x1F)...) + return executeBytes +} + +func getToGroundBytes() []byte { + groundBytes := []byte{0x18} + groundBytes = append(groundBytes, 0x1A) + groundBytes = append(groundBytes, getByteRange(0x80, 0x8F)...) + groundBytes = append(groundBytes, getByteRange(0x91, 0x97)...) + groundBytes = append(groundBytes, 0x99) + groundBytes = append(groundBytes, 0x9A) + groundBytes = append(groundBytes, 0x9C) + return groundBytes +} + +// Delete 7F hex Always and everywhere ignored +// C1 Control 80-9F hex 32 additional control characters +// G1 Displayable A1-FE hex 94 additional displayable characters +// Special A0+FF hex Same as SPACE and DELETE diff --git a/vendor/github.com/Azure/go-ansiterm/context.go b/vendor/github.com/Azure/go-ansiterm/context.go new file mode 100644 index 0000000000..8d66e777c0 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/context.go @@ -0,0 +1,7 @@ +package ansiterm + +type ansiContext struct { + currentChar byte + paramBuffer []byte + interBuffer []byte +} diff --git a/vendor/github.com/Azure/go-ansiterm/csi_entry_state.go b/vendor/github.com/Azure/go-ansiterm/csi_entry_state.go new file mode 100644 index 0000000000..bcbe00d0c5 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/csi_entry_state.go @@ -0,0 +1,49 @@ +package ansiterm + +type csiEntryState struct { + baseState +} + +func (csiState csiEntryState) Handle(b byte) (s state, e error) { + csiState.parser.logf("CsiEntry::Handle %#x", b) + + nextState, err := csiState.baseState.Handle(b) + if nextState != nil || err != nil { + return nextState, err + } + + switch { + case sliceContains(alphabetics, b): + return csiState.parser.ground, nil + case sliceContains(csiCollectables, b): + return csiState.parser.csiParam, nil + case sliceContains(executors, b): + return csiState, csiState.parser.execute() + } + + return csiState, nil +} + +func (csiState csiEntryState) Transition(s state) error { + csiState.parser.logf("CsiEntry::Transition %s --> %s", csiState.Name(), s.Name()) + csiState.baseState.Transition(s) + + switch s { + case csiState.parser.ground: + return csiState.parser.csiDispatch() + case csiState.parser.csiParam: + switch { + case sliceContains(csiParams, csiState.parser.context.currentChar): + csiState.parser.collectParam() + case sliceContains(intermeds, csiState.parser.context.currentChar): + csiState.parser.collectInter() + } + } + + return nil +} + +func (csiState csiEntryState) Enter() error { + csiState.parser.clear() + return nil +} diff --git a/vendor/github.com/Azure/go-ansiterm/csi_param_state.go b/vendor/github.com/Azure/go-ansiterm/csi_param_state.go new file mode 100644 index 0000000000..7ed5e01c34 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/csi_param_state.go @@ -0,0 +1,38 @@ +package ansiterm + +type csiParamState struct { + baseState +} + +func (csiState csiParamState) Handle(b byte) (s state, e error) { + csiState.parser.logf("CsiParam::Handle %#x", b) + + nextState, err := csiState.baseState.Handle(b) + if nextState != nil || err != nil { + return nextState, err + } + + switch { + case sliceContains(alphabetics, b): + return csiState.parser.ground, nil + case sliceContains(csiCollectables, b): + csiState.parser.collectParam() + return csiState, nil + case sliceContains(executors, b): + return csiState, csiState.parser.execute() + } + + return csiState, nil +} + +func (csiState csiParamState) Transition(s state) error { + csiState.parser.logf("CsiParam::Transition %s --> %s", csiState.Name(), s.Name()) + csiState.baseState.Transition(s) + + switch s { + case csiState.parser.ground: + return csiState.parser.csiDispatch() + } + + return nil +} diff --git a/vendor/github.com/Azure/go-ansiterm/escape_intermediate_state.go b/vendor/github.com/Azure/go-ansiterm/escape_intermediate_state.go new file mode 100644 index 0000000000..1c719db9e4 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/escape_intermediate_state.go @@ -0,0 +1,36 @@ +package ansiterm + +type escapeIntermediateState struct { + baseState +} + +func (escState escapeIntermediateState) Handle(b byte) (s state, e error) { + escState.parser.logf("escapeIntermediateState::Handle %#x", b) + nextState, err := escState.baseState.Handle(b) + if nextState != nil || err != nil { + return nextState, err + } + + switch { + case sliceContains(intermeds, b): + return escState, escState.parser.collectInter() + case sliceContains(executors, b): + return escState, escState.parser.execute() + case sliceContains(escapeIntermediateToGroundBytes, b): + return escState.parser.ground, nil + } + + return escState, nil +} + +func (escState escapeIntermediateState) Transition(s state) error { + escState.parser.logf("escapeIntermediateState::Transition %s --> %s", escState.Name(), s.Name()) + escState.baseState.Transition(s) + + switch s { + case escState.parser.ground: + return escState.parser.escDispatch() + } + + return nil +} diff --git a/vendor/github.com/Azure/go-ansiterm/escape_state.go b/vendor/github.com/Azure/go-ansiterm/escape_state.go new file mode 100644 index 0000000000..6390abd231 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/escape_state.go @@ -0,0 +1,47 @@ +package ansiterm + +type escapeState struct { + baseState +} + +func (escState escapeState) Handle(b byte) (s state, e error) { + escState.parser.logf("escapeState::Handle %#x", b) + nextState, err := escState.baseState.Handle(b) + if nextState != nil || err != nil { + return nextState, err + } + + switch { + case b == ANSI_ESCAPE_SECONDARY: + return escState.parser.csiEntry, nil + case b == ANSI_OSC_STRING_ENTRY: + return escState.parser.oscString, nil + case sliceContains(executors, b): + return escState, escState.parser.execute() + case sliceContains(escapeToGroundBytes, b): + return escState.parser.ground, nil + case sliceContains(intermeds, b): + return escState.parser.escapeIntermediate, nil + } + + return escState, nil +} + +func (escState escapeState) Transition(s state) error { + escState.parser.logf("Escape::Transition %s --> %s", escState.Name(), s.Name()) + escState.baseState.Transition(s) + + switch s { + case escState.parser.ground: + return escState.parser.escDispatch() + case escState.parser.escapeIntermediate: + return escState.parser.collectInter() + } + + return nil +} + +func (escState escapeState) Enter() error { + escState.parser.clear() + return nil +} diff --git a/vendor/github.com/Azure/go-ansiterm/event_handler.go b/vendor/github.com/Azure/go-ansiterm/event_handler.go new file mode 100644 index 0000000000..98087b38c2 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/event_handler.go @@ -0,0 +1,90 @@ +package ansiterm + +type AnsiEventHandler interface { + // Print + Print(b byte) error + + // Execute C0 commands + Execute(b byte) error + + // CUrsor Up + CUU(int) error + + // CUrsor Down + CUD(int) error + + // CUrsor Forward + CUF(int) error + + // CUrsor Backward + CUB(int) error + + // Cursor to Next Line + CNL(int) error + + // Cursor to Previous Line + CPL(int) error + + // Cursor Horizontal position Absolute + CHA(int) error + + // Vertical line Position Absolute + VPA(int) error + + // CUrsor Position + CUP(int, int) error + + // Horizontal and Vertical Position (depends on PUM) + HVP(int, int) error + + // Text Cursor Enable Mode + DECTCEM(bool) error + + // Origin Mode + DECOM(bool) error + + // 132 Column Mode + DECCOLM(bool) error + + // Erase in Display + ED(int) error + + // Erase in Line + EL(int) error + + // Insert Line + IL(int) error + + // Delete Line + DL(int) error + + // Insert Character + ICH(int) error + + // Delete Character + DCH(int) error + + // Set Graphics Rendition + SGR([]int) error + + // Pan Down + SU(int) error + + // Pan Up + SD(int) error + + // Device Attributes + DA([]string) error + + // Set Top and Bottom Margins + DECSTBM(int, int) error + + // Index + IND() error + + // Reverse Index + RI() error + + // Flush updates from previous commands + Flush() error +} diff --git a/vendor/github.com/Azure/go-ansiterm/ground_state.go b/vendor/github.com/Azure/go-ansiterm/ground_state.go new file mode 100644 index 0000000000..52451e9469 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/ground_state.go @@ -0,0 +1,24 @@ +package ansiterm + +type groundState struct { + baseState +} + +func (gs groundState) Handle(b byte) (s state, e error) { + gs.parser.context.currentChar = b + + nextState, err := gs.baseState.Handle(b) + if nextState != nil || err != nil { + return nextState, err + } + + switch { + case sliceContains(printables, b): + return gs, gs.parser.print() + + case sliceContains(executors, b): + return gs, gs.parser.execute() + } + + return gs, nil +} diff --git a/vendor/github.com/Azure/go-ansiterm/osc_string_state.go b/vendor/github.com/Azure/go-ansiterm/osc_string_state.go new file mode 100644 index 0000000000..194d5e9c94 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/osc_string_state.go @@ -0,0 +1,23 @@ +package ansiterm + +type oscStringState struct { + baseState +} + +func (oscState oscStringState) Handle(b byte) (s state, e error) { + oscState.parser.logf("OscString::Handle %#x", b) + nextState, err := oscState.baseState.Handle(b) + if nextState != nil || err != nil { + return nextState, err + } + + // There are several control characters and sequences which can + // terminate an OSC string. Most of them are handled by the baseState + // handler. The ANSI_BEL character is a special case which behaves as a + // terminator only for an OSC string. + if b == ANSI_BEL { + return oscState.parser.ground, nil + } + + return oscState, nil +} diff --git a/vendor/github.com/Azure/go-ansiterm/parser.go b/vendor/github.com/Azure/go-ansiterm/parser.go new file mode 100644 index 0000000000..03cec7ada6 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/parser.go @@ -0,0 +1,151 @@ +package ansiterm + +import ( + "errors" + "log" + "os" +) + +type AnsiParser struct { + currState state + eventHandler AnsiEventHandler + context *ansiContext + csiEntry state + csiParam state + dcsEntry state + escape state + escapeIntermediate state + error state + ground state + oscString state + stateMap []state + + logf func(string, ...interface{}) +} + +type Option func(*AnsiParser) + +func WithLogf(f func(string, ...interface{})) Option { + return func(ap *AnsiParser) { + ap.logf = f + } +} + +func CreateParser(initialState string, evtHandler AnsiEventHandler, opts ...Option) *AnsiParser { + ap := &AnsiParser{ + eventHandler: evtHandler, + context: &ansiContext{}, + } + for _, o := range opts { + o(ap) + } + + if isDebugEnv := os.Getenv(LogEnv); isDebugEnv == "1" { + logFile, _ := os.Create("ansiParser.log") + logger := log.New(logFile, "", log.LstdFlags) + if ap.logf != nil { + l := ap.logf + ap.logf = func(s string, v ...interface{}) { + l(s, v...) + logger.Printf(s, v...) + } + } else { + ap.logf = logger.Printf + } + } + + if ap.logf == nil { + ap.logf = func(string, ...interface{}) {} + } + + ap.csiEntry = csiEntryState{baseState{name: "CsiEntry", parser: ap}} + ap.csiParam = csiParamState{baseState{name: "CsiParam", parser: ap}} + ap.dcsEntry = dcsEntryState{baseState{name: "DcsEntry", parser: ap}} + ap.escape = escapeState{baseState{name: "Escape", parser: ap}} + ap.escapeIntermediate = escapeIntermediateState{baseState{name: "EscapeIntermediate", parser: ap}} + ap.error = errorState{baseState{name: "Error", parser: ap}} + ap.ground = groundState{baseState{name: "Ground", parser: ap}} + ap.oscString = oscStringState{baseState{name: "OscString", parser: ap}} + + ap.stateMap = []state{ + ap.csiEntry, + ap.csiParam, + ap.dcsEntry, + ap.escape, + ap.escapeIntermediate, + ap.error, + ap.ground, + ap.oscString, + } + + ap.currState = getState(initialState, ap.stateMap) + + ap.logf("CreateParser: parser %p", ap) + return ap +} + +func getState(name string, states []state) state { + for _, el := range states { + if el.Name() == name { + return el + } + } + + return nil +} + +func (ap *AnsiParser) Parse(bytes []byte) (int, error) { + for i, b := range bytes { + if err := ap.handle(b); err != nil { + return i, err + } + } + + return len(bytes), ap.eventHandler.Flush() +} + +func (ap *AnsiParser) handle(b byte) error { + ap.context.currentChar = b + newState, err := ap.currState.Handle(b) + if err != nil { + return err + } + + if newState == nil { + ap.logf("WARNING: newState is nil") + return errors.New("New state of 'nil' is invalid.") + } + + if newState != ap.currState { + if err := ap.changeState(newState); err != nil { + return err + } + } + + return nil +} + +func (ap *AnsiParser) changeState(newState state) error { + ap.logf("ChangeState %s --> %s", ap.currState.Name(), newState.Name()) + + // Exit old state + if err := ap.currState.Exit(); err != nil { + ap.logf("Exit state '%s' failed with : '%v'", ap.currState.Name(), err) + return err + } + + // Perform transition action + if err := ap.currState.Transition(newState); err != nil { + ap.logf("Transition from '%s' to '%s' failed with: '%v'", ap.currState.Name(), newState.Name, err) + return err + } + + // Enter new state + if err := newState.Enter(); err != nil { + ap.logf("Enter state '%s' failed with: '%v'", newState.Name(), err) + return err + } + + ap.currState = newState + return nil +} diff --git a/vendor/github.com/Azure/go-ansiterm/parser_action_helpers.go b/vendor/github.com/Azure/go-ansiterm/parser_action_helpers.go new file mode 100644 index 0000000000..de0a1f9cde --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/parser_action_helpers.go @@ -0,0 +1,99 @@ +package ansiterm + +import ( + "strconv" +) + +func parseParams(bytes []byte) ([]string, error) { + paramBuff := make([]byte, 0, 0) + params := []string{} + + for _, v := range bytes { + if v == ';' { + if len(paramBuff) > 0 { + // Completed parameter, append it to the list + s := string(paramBuff) + params = append(params, s) + paramBuff = make([]byte, 0, 0) + } + } else { + paramBuff = append(paramBuff, v) + } + } + + // Last parameter may not be terminated with ';' + if len(paramBuff) > 0 { + s := string(paramBuff) + params = append(params, s) + } + + return params, nil +} + +func parseCmd(context ansiContext) (string, error) { + return string(context.currentChar), nil +} + +func getInt(params []string, dflt int) int { + i := getInts(params, 1, dflt)[0] + return i +} + +func getInts(params []string, minCount int, dflt int) []int { + ints := []int{} + + for _, v := range params { + i, _ := strconv.Atoi(v) + // Zero is mapped to the default value in VT100. + if i == 0 { + i = dflt + } + ints = append(ints, i) + } + + if len(ints) < minCount { + remaining := minCount - len(ints) + for i := 0; i < remaining; i++ { + ints = append(ints, dflt) + } + } + + return ints +} + +func (ap *AnsiParser) modeDispatch(param string, set bool) error { + switch param { + case "?3": + return ap.eventHandler.DECCOLM(set) + case "?6": + return ap.eventHandler.DECOM(set) + case "?25": + return ap.eventHandler.DECTCEM(set) + } + return nil +} + +func (ap *AnsiParser) hDispatch(params []string) error { + if len(params) == 1 { + return ap.modeDispatch(params[0], true) + } + + return nil +} + +func (ap *AnsiParser) lDispatch(params []string) error { + if len(params) == 1 { + return ap.modeDispatch(params[0], false) + } + + return nil +} + +func getEraseParam(params []string) int { + param := getInt(params, 0) + if param < 0 || 3 < param { + param = 0 + } + + return param +} diff --git a/vendor/github.com/Azure/go-ansiterm/parser_actions.go b/vendor/github.com/Azure/go-ansiterm/parser_actions.go new file mode 100644 index 0000000000..0bb5e51e9a --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/parser_actions.go @@ -0,0 +1,119 @@ +package ansiterm + +func (ap *AnsiParser) collectParam() error { + currChar := ap.context.currentChar + ap.logf("collectParam %#x", currChar) + ap.context.paramBuffer = append(ap.context.paramBuffer, currChar) + return nil +} + +func (ap *AnsiParser) collectInter() error { + currChar := ap.context.currentChar + ap.logf("collectInter %#x", currChar) + ap.context.paramBuffer = append(ap.context.interBuffer, currChar) + return nil +} + +func (ap *AnsiParser) escDispatch() error { + cmd, _ := parseCmd(*ap.context) + intermeds := ap.context.interBuffer + ap.logf("escDispatch currentChar: %#x", ap.context.currentChar) + ap.logf("escDispatch: %v(%v)", cmd, intermeds) + + switch cmd { + case "D": // IND + return ap.eventHandler.IND() + case "E": // NEL, equivalent to CRLF + err := ap.eventHandler.Execute(ANSI_CARRIAGE_RETURN) + if err == nil { + err = ap.eventHandler.Execute(ANSI_LINE_FEED) + } + return err + case "M": // RI + return ap.eventHandler.RI() + } + + return nil +} + +func (ap *AnsiParser) csiDispatch() error { + cmd, _ := parseCmd(*ap.context) + params, _ := parseParams(ap.context.paramBuffer) + ap.logf("Parsed params: %v with length: %d", params, len(params)) + + ap.logf("csiDispatch: %v(%v)", cmd, params) + + switch cmd { + case "@": + return ap.eventHandler.ICH(getInt(params, 1)) + case "A": + return ap.eventHandler.CUU(getInt(params, 1)) + case "B": + return ap.eventHandler.CUD(getInt(params, 1)) + case "C": + return ap.eventHandler.CUF(getInt(params, 1)) + case "D": + return ap.eventHandler.CUB(getInt(params, 1)) + case "E": + return ap.eventHandler.CNL(getInt(params, 1)) + case "F": + return ap.eventHandler.CPL(getInt(params, 1)) + case "G": + return ap.eventHandler.CHA(getInt(params, 1)) + case "H": + ints := getInts(params, 2, 1) + x, y := ints[0], ints[1] + return ap.eventHandler.CUP(x, y) + case "J": + param := getEraseParam(params) + return ap.eventHandler.ED(param) + case "K": + param := getEraseParam(params) + return ap.eventHandler.EL(param) + case "L": + return ap.eventHandler.IL(getInt(params, 1)) + case "M": + return ap.eventHandler.DL(getInt(params, 1)) + case "P": + return ap.eventHandler.DCH(getInt(params, 1)) + case "S": + return ap.eventHandler.SU(getInt(params, 1)) + case "T": + return ap.eventHandler.SD(getInt(params, 1)) + case "c": + return ap.eventHandler.DA(params) + case "d": + return ap.eventHandler.VPA(getInt(params, 1)) + case "f": + ints := getInts(params, 2, 1) + x, y := ints[0], ints[1] + return ap.eventHandler.HVP(x, y) + case "h": + return ap.hDispatch(params) + case "l": + return ap.lDispatch(params) + case "m": + return ap.eventHandler.SGR(getInts(params, 1, 0)) + case "r": + ints := getInts(params, 2, 1) + top, bottom := ints[0], ints[1] + return ap.eventHandler.DECSTBM(top, bottom) + default: + ap.logf("ERROR: Unsupported CSI command: '%s', with full context: %v", cmd, ap.context) + return nil + } + +} + +func (ap *AnsiParser) print() error { + return ap.eventHandler.Print(ap.context.currentChar) +} + +func (ap *AnsiParser) clear() error { + ap.context = &ansiContext{} + return nil +} + +func (ap *AnsiParser) execute() error { + return ap.eventHandler.Execute(ap.context.currentChar) +} diff --git a/vendor/github.com/Azure/go-ansiterm/states.go b/vendor/github.com/Azure/go-ansiterm/states.go new file mode 100644 index 0000000000..f2ea1fcd12 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/states.go @@ -0,0 +1,71 @@ +package ansiterm + +type stateID int + +type state interface { + Enter() error + Exit() error + Handle(byte) (state, error) + Name() string + Transition(state) error +} + +type baseState struct { + name string + parser *AnsiParser +} + +func (base baseState) Enter() error { + return nil +} + +func (base baseState) Exit() error { + return nil +} + +func (base baseState) Handle(b byte) (s state, e error) { + + switch { + case b == CSI_ENTRY: + return base.parser.csiEntry, nil + case b == DCS_ENTRY: + return base.parser.dcsEntry, nil + case b == ANSI_ESCAPE_PRIMARY: + return base.parser.escape, nil + case b == OSC_STRING: + return base.parser.oscString, nil + case sliceContains(toGroundBytes, b): + return base.parser.ground, nil + } + + return nil, nil +} + +func (base baseState) Name() string { + return base.name +} + +func (base baseState) Transition(s state) error { + if s == base.parser.ground { + execBytes := []byte{0x18} + execBytes = append(execBytes, 0x1A) + execBytes = append(execBytes, getByteRange(0x80, 0x8F)...) + execBytes = append(execBytes, getByteRange(0x91, 0x97)...) + execBytes = append(execBytes, 0x99) + execBytes = append(execBytes, 0x9A) + + if sliceContains(execBytes, base.parser.context.currentChar) { + return base.parser.execute() + } + } + + return nil +} + +type dcsEntryState struct { + baseState +} + +type errorState struct { + baseState +} diff --git a/vendor/github.com/Azure/go-ansiterm/utilities.go b/vendor/github.com/Azure/go-ansiterm/utilities.go new file mode 100644 index 0000000000..392114493a --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/utilities.go @@ -0,0 +1,21 @@ +package ansiterm + +import ( + "strconv" +) + +func sliceContains(bytes []byte, b byte) bool { + for _, v := range bytes { + if v == b { + return true + } + } + + return false +} + +func convertBytesToInteger(bytes []byte) int { + s := string(bytes) + i, _ := strconv.Atoi(s) + return i +} diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/ansi.go b/vendor/github.com/Azure/go-ansiterm/winterm/ansi.go new file mode 100644 index 0000000000..5599082ae9 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/winterm/ansi.go @@ -0,0 +1,196 @@ +// +build windows + +package winterm + +import ( + "fmt" + "os" + "strconv" + "strings" + "syscall" + + "github.com/Azure/go-ansiterm" + windows "golang.org/x/sys/windows" +) + +// Windows keyboard constants +// See https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx. +const ( + VK_PRIOR = 0x21 // PAGE UP key + VK_NEXT = 0x22 // PAGE DOWN key + VK_END = 0x23 // END key + VK_HOME = 0x24 // HOME key + VK_LEFT = 0x25 // LEFT ARROW key + VK_UP = 0x26 // UP ARROW key + VK_RIGHT = 0x27 // RIGHT ARROW key + VK_DOWN = 0x28 // DOWN ARROW key + VK_SELECT = 0x29 // SELECT key + VK_PRINT = 0x2A // PRINT key + VK_EXECUTE = 0x2B // EXECUTE key + VK_SNAPSHOT = 0x2C // PRINT SCREEN key + VK_INSERT = 0x2D // INS key + VK_DELETE = 0x2E // DEL key + VK_HELP = 0x2F // HELP key + VK_F1 = 0x70 // F1 key + VK_F2 = 0x71 // F2 key + VK_F3 = 0x72 // F3 key + VK_F4 = 0x73 // F4 key + VK_F5 = 0x74 // F5 key + VK_F6 = 0x75 // F6 key + VK_F7 = 0x76 // F7 key + VK_F8 = 0x77 // F8 key + VK_F9 = 0x78 // F9 key + VK_F10 = 0x79 // F10 key + VK_F11 = 0x7A // F11 key + VK_F12 = 0x7B // F12 key + + RIGHT_ALT_PRESSED = 0x0001 + LEFT_ALT_PRESSED = 0x0002 + RIGHT_CTRL_PRESSED = 0x0004 + LEFT_CTRL_PRESSED = 0x0008 + SHIFT_PRESSED = 0x0010 + NUMLOCK_ON = 0x0020 + SCROLLLOCK_ON = 0x0040 + CAPSLOCK_ON = 0x0080 + ENHANCED_KEY = 0x0100 +) + +type ansiCommand struct { + CommandBytes []byte + Command string + Parameters []string + IsSpecial bool +} + +func newAnsiCommand(command []byte) *ansiCommand { + + if isCharacterSelectionCmdChar(command[1]) { + // Is Character Set Selection commands + return &ansiCommand{ + CommandBytes: command, + Command: string(command), + IsSpecial: true, + } + } + + // last char is command character + lastCharIndex := len(command) - 1 + + ac := &ansiCommand{ + CommandBytes: command, + Command: string(command[lastCharIndex]), + IsSpecial: false, + } + + // more than a single escape + if lastCharIndex != 0 { + start := 1 + // skip if double char escape sequence + if command[0] == ansiterm.ANSI_ESCAPE_PRIMARY && command[1] == ansiterm.ANSI_ESCAPE_SECONDARY { + start++ + } + // convert this to GetNextParam method + ac.Parameters = strings.Split(string(command[start:lastCharIndex]), ansiterm.ANSI_PARAMETER_SEP) + } + + return ac +} + +func (ac *ansiCommand) paramAsSHORT(index int, defaultValue int16) int16 { + if index < 0 || index >= len(ac.Parameters) { + return defaultValue + } + + param, err := strconv.ParseInt(ac.Parameters[index], 10, 16) + if err != nil { + return defaultValue + } + + return int16(param) +} + +func (ac *ansiCommand) String() string { + return fmt.Sprintf("0x%v \"%v\" (\"%v\")", + bytesToHex(ac.CommandBytes), + ac.Command, + strings.Join(ac.Parameters, "\",\"")) +} + +// isAnsiCommandChar returns true if the passed byte falls within the range of ANSI commands. +// See http://manpages.ubuntu.com/manpages/intrepid/man4/console_codes.4.html. +func isAnsiCommandChar(b byte) bool { + switch { + case ansiterm.ANSI_COMMAND_FIRST <= b && b <= ansiterm.ANSI_COMMAND_LAST && b != ansiterm.ANSI_ESCAPE_SECONDARY: + return true + case b == ansiterm.ANSI_CMD_G1 || b == ansiterm.ANSI_CMD_OSC || b == ansiterm.ANSI_CMD_DECPAM || b == ansiterm.ANSI_CMD_DECPNM: + // non-CSI escape sequence terminator + return true + case b == ansiterm.ANSI_CMD_STR_TERM || b == ansiterm.ANSI_BEL: + // String escape sequence terminator + return true + } + return false +} + +func isXtermOscSequence(command []byte, current byte) bool { + return (len(command) >= 2 && command[0] == ansiterm.ANSI_ESCAPE_PRIMARY && command[1] == ansiterm.ANSI_CMD_OSC && current != ansiterm.ANSI_BEL) +} + +func isCharacterSelectionCmdChar(b byte) bool { + return (b == ansiterm.ANSI_CMD_G0 || b == ansiterm.ANSI_CMD_G1 || b == ansiterm.ANSI_CMD_G2 || b == ansiterm.ANSI_CMD_G3) +} + +// bytesToHex converts a slice of bytes to a human-readable string. +func bytesToHex(b []byte) string { + hex := make([]string, len(b)) + for i, ch := range b { + hex[i] = fmt.Sprintf("%X", ch) + } + return strings.Join(hex, "") +} + +// ensureInRange adjusts the passed value, if necessary, to ensure it is within +// the passed min / max range. +func ensureInRange(n int16, min int16, max int16) int16 { + if n < min { + return min + } else if n > max { + return max + } else { + return n + } +} + +func GetStdFile(nFile int) (*os.File, uintptr) { + var file *os.File + + // syscall uses negative numbers + // windows package uses very big uint32 + // Keep these switches split so we don't have to convert ints too much. + switch uint32(nFile) { + case windows.STD_INPUT_HANDLE: + file = os.Stdin + case windows.STD_OUTPUT_HANDLE: + file = os.Stdout + case windows.STD_ERROR_HANDLE: + file = os.Stderr + default: + switch nFile { + case syscall.STD_INPUT_HANDLE: + file = os.Stdin + case syscall.STD_OUTPUT_HANDLE: + file = os.Stdout + case syscall.STD_ERROR_HANDLE: + file = os.Stderr + default: + panic(fmt.Errorf("Invalid standard handle identifier: %v", nFile)) + } + } + + fd, err := syscall.GetStdHandle(nFile) + if err != nil { + panic(fmt.Errorf("Invalid standard handle identifier: %v -- %v", nFile, err)) + } + + return file, uintptr(fd) +} diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/api.go b/vendor/github.com/Azure/go-ansiterm/winterm/api.go new file mode 100644 index 0000000000..6055e33b91 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/winterm/api.go @@ -0,0 +1,327 @@ +// +build windows + +package winterm + +import ( + "fmt" + "syscall" + "unsafe" +) + +//=========================================================================================================== +// IMPORTANT NOTE: +// +// The methods below make extensive use of the "unsafe" package to obtain the required pointers. +// Beginning in Go 1.3, the garbage collector may release local variables (e.g., incoming arguments, stack +// variables) the pointers reference *before* the API completes. +// +// As a result, in those cases, the code must hint that the variables remain in active by invoking the +// dummy method "use" (see below). Newer versions of Go are planned to change the mechanism to no longer +// require unsafe pointers. +// +// If you add or modify methods, ENSURE protection of local variables through the "use" builtin to inform +// the garbage collector the variables remain in use if: +// +// -- The value is not a pointer (e.g., int32, struct) +// -- The value is not referenced by the method after passing the pointer to Windows +// +// See http://golang.org/doc/go1.3. +//=========================================================================================================== + +var ( + kernel32DLL = syscall.NewLazyDLL("kernel32.dll") + + getConsoleCursorInfoProc = kernel32DLL.NewProc("GetConsoleCursorInfo") + setConsoleCursorInfoProc = kernel32DLL.NewProc("SetConsoleCursorInfo") + setConsoleCursorPositionProc = kernel32DLL.NewProc("SetConsoleCursorPosition") + setConsoleModeProc = kernel32DLL.NewProc("SetConsoleMode") + getConsoleScreenBufferInfoProc = kernel32DLL.NewProc("GetConsoleScreenBufferInfo") + setConsoleScreenBufferSizeProc = kernel32DLL.NewProc("SetConsoleScreenBufferSize") + scrollConsoleScreenBufferProc = kernel32DLL.NewProc("ScrollConsoleScreenBufferA") + setConsoleTextAttributeProc = kernel32DLL.NewProc("SetConsoleTextAttribute") + setConsoleWindowInfoProc = kernel32DLL.NewProc("SetConsoleWindowInfo") + writeConsoleOutputProc = kernel32DLL.NewProc("WriteConsoleOutputW") + readConsoleInputProc = kernel32DLL.NewProc("ReadConsoleInputW") + waitForSingleObjectProc = kernel32DLL.NewProc("WaitForSingleObject") +) + +// Windows Console constants +const ( + // Console modes + // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v=vs.85).aspx. + ENABLE_PROCESSED_INPUT = 0x0001 + ENABLE_LINE_INPUT = 0x0002 + ENABLE_ECHO_INPUT = 0x0004 + ENABLE_WINDOW_INPUT = 0x0008 + ENABLE_MOUSE_INPUT = 0x0010 + ENABLE_INSERT_MODE = 0x0020 + ENABLE_QUICK_EDIT_MODE = 0x0040 + ENABLE_EXTENDED_FLAGS = 0x0080 + ENABLE_AUTO_POSITION = 0x0100 + ENABLE_VIRTUAL_TERMINAL_INPUT = 0x0200 + + ENABLE_PROCESSED_OUTPUT = 0x0001 + ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002 + ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004 + DISABLE_NEWLINE_AUTO_RETURN = 0x0008 + ENABLE_LVB_GRID_WORLDWIDE = 0x0010 + + // Character attributes + // Note: + // -- The attributes are combined to produce various colors (e.g., Blue + Green will create Cyan). + // Clearing all foreground or background colors results in black; setting all creates white. + // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms682088(v=vs.85).aspx#_win32_character_attributes. + FOREGROUND_BLUE uint16 = 0x0001 + FOREGROUND_GREEN uint16 = 0x0002 + FOREGROUND_RED uint16 = 0x0004 + FOREGROUND_INTENSITY uint16 = 0x0008 + FOREGROUND_MASK uint16 = 0x000F + + BACKGROUND_BLUE uint16 = 0x0010 + BACKGROUND_GREEN uint16 = 0x0020 + BACKGROUND_RED uint16 = 0x0040 + BACKGROUND_INTENSITY uint16 = 0x0080 + BACKGROUND_MASK uint16 = 0x00F0 + + COMMON_LVB_MASK uint16 = 0xFF00 + COMMON_LVB_REVERSE_VIDEO uint16 = 0x4000 + COMMON_LVB_UNDERSCORE uint16 = 0x8000 + + // Input event types + // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms683499(v=vs.85).aspx. + KEY_EVENT = 0x0001 + MOUSE_EVENT = 0x0002 + WINDOW_BUFFER_SIZE_EVENT = 0x0004 + MENU_EVENT = 0x0008 + FOCUS_EVENT = 0x0010 + + // WaitForSingleObject return codes + WAIT_ABANDONED = 0x00000080 + WAIT_FAILED = 0xFFFFFFFF + WAIT_SIGNALED = 0x0000000 + WAIT_TIMEOUT = 0x00000102 + + // WaitForSingleObject wait duration + WAIT_INFINITE = 0xFFFFFFFF + WAIT_ONE_SECOND = 1000 + WAIT_HALF_SECOND = 500 + WAIT_QUARTER_SECOND = 250 +) + +// Windows API Console types +// -- See https://msdn.microsoft.com/en-us/library/windows/desktop/ms682101(v=vs.85).aspx for Console specific types (e.g., COORD) +// -- See https://msdn.microsoft.com/en-us/library/aa296569(v=vs.60).aspx for comments on alignment +type ( + CHAR_INFO struct { + UnicodeChar uint16 + Attributes uint16 + } + + CONSOLE_CURSOR_INFO struct { + Size uint32 + Visible int32 + } + + CONSOLE_SCREEN_BUFFER_INFO struct { + Size COORD + CursorPosition COORD + Attributes uint16 + Window SMALL_RECT + MaximumWindowSize COORD + } + + COORD struct { + X int16 + Y int16 + } + + SMALL_RECT struct { + Left int16 + Top int16 + Right int16 + Bottom int16 + } + + // INPUT_RECORD is a C/C++ union of which KEY_EVENT_RECORD is one case, it is also the largest + // See https://msdn.microsoft.com/en-us/library/windows/desktop/ms683499(v=vs.85).aspx. + INPUT_RECORD struct { + EventType uint16 + KeyEvent KEY_EVENT_RECORD + } + + KEY_EVENT_RECORD struct { + KeyDown int32 + RepeatCount uint16 + VirtualKeyCode uint16 + VirtualScanCode uint16 + UnicodeChar uint16 + ControlKeyState uint32 + } + + WINDOW_BUFFER_SIZE struct { + Size COORD + } +) + +// boolToBOOL converts a Go bool into a Windows int32. +func boolToBOOL(f bool) int32 { + if f { + return int32(1) + } else { + return int32(0) + } +} + +// GetConsoleCursorInfo retrieves information about the size and visiblity of the console cursor. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms683163(v=vs.85).aspx. +func GetConsoleCursorInfo(handle uintptr, cursorInfo *CONSOLE_CURSOR_INFO) error { + r1, r2, err := getConsoleCursorInfoProc.Call(handle, uintptr(unsafe.Pointer(cursorInfo)), 0) + return checkError(r1, r2, err) +} + +// SetConsoleCursorInfo sets the size and visiblity of the console cursor. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms686019(v=vs.85).aspx. +func SetConsoleCursorInfo(handle uintptr, cursorInfo *CONSOLE_CURSOR_INFO) error { + r1, r2, err := setConsoleCursorInfoProc.Call(handle, uintptr(unsafe.Pointer(cursorInfo)), 0) + return checkError(r1, r2, err) +} + +// SetConsoleCursorPosition location of the console cursor. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms686025(v=vs.85).aspx. +func SetConsoleCursorPosition(handle uintptr, coord COORD) error { + r1, r2, err := setConsoleCursorPositionProc.Call(handle, coordToPointer(coord)) + use(coord) + return checkError(r1, r2, err) +} + +// GetConsoleMode gets the console mode for given file descriptor +// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms683167(v=vs.85).aspx. +func GetConsoleMode(handle uintptr) (mode uint32, err error) { + err = syscall.GetConsoleMode(syscall.Handle(handle), &mode) + return mode, err +} + +// SetConsoleMode sets the console mode for given file descriptor +// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v=vs.85).aspx. +func SetConsoleMode(handle uintptr, mode uint32) error { + r1, r2, err := setConsoleModeProc.Call(handle, uintptr(mode), 0) + use(mode) + return checkError(r1, r2, err) +} + +// GetConsoleScreenBufferInfo retrieves information about the specified console screen buffer. +// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms683171(v=vs.85).aspx. +func GetConsoleScreenBufferInfo(handle uintptr) (*CONSOLE_SCREEN_BUFFER_INFO, error) { + info := CONSOLE_SCREEN_BUFFER_INFO{} + err := checkError(getConsoleScreenBufferInfoProc.Call(handle, uintptr(unsafe.Pointer(&info)), 0)) + if err != nil { + return nil, err + } + return &info, nil +} + +func ScrollConsoleScreenBuffer(handle uintptr, scrollRect SMALL_RECT, clipRect SMALL_RECT, destOrigin COORD, char CHAR_INFO) error { + r1, r2, err := scrollConsoleScreenBufferProc.Call(handle, uintptr(unsafe.Pointer(&scrollRect)), uintptr(unsafe.Pointer(&clipRect)), coordToPointer(destOrigin), uintptr(unsafe.Pointer(&char))) + use(scrollRect) + use(clipRect) + use(destOrigin) + use(char) + return checkError(r1, r2, err) +} + +// SetConsoleScreenBufferSize sets the size of the console screen buffer. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms686044(v=vs.85).aspx. +func SetConsoleScreenBufferSize(handle uintptr, coord COORD) error { + r1, r2, err := setConsoleScreenBufferSizeProc.Call(handle, coordToPointer(coord)) + use(coord) + return checkError(r1, r2, err) +} + +// SetConsoleTextAttribute sets the attributes of characters written to the +// console screen buffer by the WriteFile or WriteConsole function. +// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms686047(v=vs.85).aspx. +func SetConsoleTextAttribute(handle uintptr, attribute uint16) error { + r1, r2, err := setConsoleTextAttributeProc.Call(handle, uintptr(attribute), 0) + use(attribute) + return checkError(r1, r2, err) +} + +// SetConsoleWindowInfo sets the size and position of the console screen buffer's window. +// Note that the size and location must be within and no larger than the backing console screen buffer. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms686125(v=vs.85).aspx. +func SetConsoleWindowInfo(handle uintptr, isAbsolute bool, rect SMALL_RECT) error { + r1, r2, err := setConsoleWindowInfoProc.Call(handle, uintptr(boolToBOOL(isAbsolute)), uintptr(unsafe.Pointer(&rect))) + use(isAbsolute) + use(rect) + return checkError(r1, r2, err) +} + +// WriteConsoleOutput writes the CHAR_INFOs from the provided buffer to the active console buffer. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms687404(v=vs.85).aspx. +func WriteConsoleOutput(handle uintptr, buffer []CHAR_INFO, bufferSize COORD, bufferCoord COORD, writeRegion *SMALL_RECT) error { + r1, r2, err := writeConsoleOutputProc.Call(handle, uintptr(unsafe.Pointer(&buffer[0])), coordToPointer(bufferSize), coordToPointer(bufferCoord), uintptr(unsafe.Pointer(writeRegion))) + use(buffer) + use(bufferSize) + use(bufferCoord) + return checkError(r1, r2, err) +} + +// ReadConsoleInput reads (and removes) data from the console input buffer. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684961(v=vs.85).aspx. +func ReadConsoleInput(handle uintptr, buffer []INPUT_RECORD, count *uint32) error { + r1, r2, err := readConsoleInputProc.Call(handle, uintptr(unsafe.Pointer(&buffer[0])), uintptr(len(buffer)), uintptr(unsafe.Pointer(count))) + use(buffer) + return checkError(r1, r2, err) +} + +// WaitForSingleObject waits for the passed handle to be signaled. +// It returns true if the handle was signaled; false otherwise. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms687032(v=vs.85).aspx. +func WaitForSingleObject(handle uintptr, msWait uint32) (bool, error) { + r1, _, err := waitForSingleObjectProc.Call(handle, uintptr(uint32(msWait))) + switch r1 { + case WAIT_ABANDONED, WAIT_TIMEOUT: + return false, nil + case WAIT_SIGNALED: + return true, nil + } + use(msWait) + return false, err +} + +// String helpers +func (info CONSOLE_SCREEN_BUFFER_INFO) String() string { + return fmt.Sprintf("Size(%v) Cursor(%v) Window(%v) Max(%v)", info.Size, info.CursorPosition, info.Window, info.MaximumWindowSize) +} + +func (coord COORD) String() string { + return fmt.Sprintf("%v,%v", coord.X, coord.Y) +} + +func (rect SMALL_RECT) String() string { + return fmt.Sprintf("(%v,%v),(%v,%v)", rect.Left, rect.Top, rect.Right, rect.Bottom) +} + +// checkError evaluates the results of a Windows API call and returns the error if it failed. +func checkError(r1, r2 uintptr, err error) error { + // Windows APIs return non-zero to indicate success + if r1 != 0 { + return nil + } + + // Return the error if provided, otherwise default to EINVAL + if err != nil { + return err + } + return syscall.EINVAL +} + +// coordToPointer converts a COORD into a uintptr (by fooling the type system). +func coordToPointer(c COORD) uintptr { + // Note: This code assumes the two SHORTs are correctly laid out; the "cast" to uint32 is just to get a pointer to pass. + return uintptr(*((*uint32)(unsafe.Pointer(&c)))) +} + +// use is a no-op, but the compiler cannot see that it is. +// Calling use(p) ensures that p is kept live until that point. +func use(p interface{}) {} diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/attr_translation.go b/vendor/github.com/Azure/go-ansiterm/winterm/attr_translation.go new file mode 100644 index 0000000000..cbec8f728f --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/winterm/attr_translation.go @@ -0,0 +1,100 @@ +// +build windows + +package winterm + +import "github.com/Azure/go-ansiterm" + +const ( + FOREGROUND_COLOR_MASK = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE + BACKGROUND_COLOR_MASK = BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE +) + +// collectAnsiIntoWindowsAttributes modifies the passed Windows text mode flags to reflect the +// request represented by the passed ANSI mode. +func collectAnsiIntoWindowsAttributes(windowsMode uint16, inverted bool, baseMode uint16, ansiMode int16) (uint16, bool) { + switch ansiMode { + + // Mode styles + case ansiterm.ANSI_SGR_BOLD: + windowsMode = windowsMode | FOREGROUND_INTENSITY + + case ansiterm.ANSI_SGR_DIM, ansiterm.ANSI_SGR_BOLD_DIM_OFF: + windowsMode &^= FOREGROUND_INTENSITY + + case ansiterm.ANSI_SGR_UNDERLINE: + windowsMode = windowsMode | COMMON_LVB_UNDERSCORE + + case ansiterm.ANSI_SGR_REVERSE: + inverted = true + + case ansiterm.ANSI_SGR_REVERSE_OFF: + inverted = false + + case ansiterm.ANSI_SGR_UNDERLINE_OFF: + windowsMode &^= COMMON_LVB_UNDERSCORE + + // Foreground colors + case ansiterm.ANSI_SGR_FOREGROUND_DEFAULT: + windowsMode = (windowsMode &^ FOREGROUND_MASK) | (baseMode & FOREGROUND_MASK) + + case ansiterm.ANSI_SGR_FOREGROUND_BLACK: + windowsMode = (windowsMode &^ FOREGROUND_COLOR_MASK) + + case ansiterm.ANSI_SGR_FOREGROUND_RED: + windowsMode = (windowsMode &^ FOREGROUND_COLOR_MASK) | FOREGROUND_RED + + case ansiterm.ANSI_SGR_FOREGROUND_GREEN: + windowsMode = (windowsMode &^ FOREGROUND_COLOR_MASK) | FOREGROUND_GREEN + + case ansiterm.ANSI_SGR_FOREGROUND_YELLOW: + windowsMode = (windowsMode &^ FOREGROUND_COLOR_MASK) | FOREGROUND_RED | FOREGROUND_GREEN + + case ansiterm.ANSI_SGR_FOREGROUND_BLUE: + windowsMode = (windowsMode &^ FOREGROUND_COLOR_MASK) | FOREGROUND_BLUE + + case ansiterm.ANSI_SGR_FOREGROUND_MAGENTA: + windowsMode = (windowsMode &^ FOREGROUND_COLOR_MASK) | FOREGROUND_RED | FOREGROUND_BLUE + + case ansiterm.ANSI_SGR_FOREGROUND_CYAN: + windowsMode = (windowsMode &^ FOREGROUND_COLOR_MASK) | FOREGROUND_GREEN | FOREGROUND_BLUE + + case ansiterm.ANSI_SGR_FOREGROUND_WHITE: + windowsMode = (windowsMode &^ FOREGROUND_COLOR_MASK) | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE + + // Background colors + case ansiterm.ANSI_SGR_BACKGROUND_DEFAULT: + // Black with no intensity + windowsMode = (windowsMode &^ BACKGROUND_MASK) | (baseMode & BACKGROUND_MASK) + + case ansiterm.ANSI_SGR_BACKGROUND_BLACK: + windowsMode = (windowsMode &^ BACKGROUND_COLOR_MASK) + + case ansiterm.ANSI_SGR_BACKGROUND_RED: + windowsMode = (windowsMode &^ BACKGROUND_COLOR_MASK) | BACKGROUND_RED + + case ansiterm.ANSI_SGR_BACKGROUND_GREEN: + windowsMode = (windowsMode &^ BACKGROUND_COLOR_MASK) | BACKGROUND_GREEN + + case ansiterm.ANSI_SGR_BACKGROUND_YELLOW: + windowsMode = (windowsMode &^ BACKGROUND_COLOR_MASK) | BACKGROUND_RED | BACKGROUND_GREEN + + case ansiterm.ANSI_SGR_BACKGROUND_BLUE: + windowsMode = (windowsMode &^ BACKGROUND_COLOR_MASK) | BACKGROUND_BLUE + + case ansiterm.ANSI_SGR_BACKGROUND_MAGENTA: + windowsMode = (windowsMode &^ BACKGROUND_COLOR_MASK) | BACKGROUND_RED | BACKGROUND_BLUE + + case ansiterm.ANSI_SGR_BACKGROUND_CYAN: + windowsMode = (windowsMode &^ BACKGROUND_COLOR_MASK) | BACKGROUND_GREEN | BACKGROUND_BLUE + + case ansiterm.ANSI_SGR_BACKGROUND_WHITE: + windowsMode = (windowsMode &^ BACKGROUND_COLOR_MASK) | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE + } + + return windowsMode, inverted +} + +// invertAttributes inverts the foreground and background colors of a Windows attributes value +func invertAttributes(windowsMode uint16) uint16 { + return (COMMON_LVB_MASK & windowsMode) | ((FOREGROUND_MASK & windowsMode) << 4) | ((BACKGROUND_MASK & windowsMode) >> 4) +} diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/cursor_helpers.go b/vendor/github.com/Azure/go-ansiterm/winterm/cursor_helpers.go new file mode 100644 index 0000000000..3ee06ea728 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/winterm/cursor_helpers.go @@ -0,0 +1,101 @@ +// +build windows + +package winterm + +const ( + horizontal = iota + vertical +) + +func (h *windowsAnsiEventHandler) getCursorWindow(info *CONSOLE_SCREEN_BUFFER_INFO) SMALL_RECT { + if h.originMode { + sr := h.effectiveSr(info.Window) + return SMALL_RECT{ + Top: sr.top, + Bottom: sr.bottom, + Left: 0, + Right: info.Size.X - 1, + } + } else { + return SMALL_RECT{ + Top: info.Window.Top, + Bottom: info.Window.Bottom, + Left: 0, + Right: info.Size.X - 1, + } + } +} + +// setCursorPosition sets the cursor to the specified position, bounded to the screen size +func (h *windowsAnsiEventHandler) setCursorPosition(position COORD, window SMALL_RECT) error { + position.X = ensureInRange(position.X, window.Left, window.Right) + position.Y = ensureInRange(position.Y, window.Top, window.Bottom) + err := SetConsoleCursorPosition(h.fd, position) + if err != nil { + return err + } + h.logf("Cursor position set: (%d, %d)", position.X, position.Y) + return err +} + +func (h *windowsAnsiEventHandler) moveCursorVertical(param int) error { + return h.moveCursor(vertical, param) +} + +func (h *windowsAnsiEventHandler) moveCursorHorizontal(param int) error { + return h.moveCursor(horizontal, param) +} + +func (h *windowsAnsiEventHandler) moveCursor(moveMode int, param int) error { + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + + position := info.CursorPosition + switch moveMode { + case horizontal: + position.X += int16(param) + case vertical: + position.Y += int16(param) + } + + if err = h.setCursorPosition(position, h.getCursorWindow(info)); err != nil { + return err + } + + return nil +} + +func (h *windowsAnsiEventHandler) moveCursorLine(param int) error { + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + + position := info.CursorPosition + position.X = 0 + position.Y += int16(param) + + if err = h.setCursorPosition(position, h.getCursorWindow(info)); err != nil { + return err + } + + return nil +} + +func (h *windowsAnsiEventHandler) moveCursorColumn(param int) error { + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + + position := info.CursorPosition + position.X = int16(param) - 1 + + if err = h.setCursorPosition(position, h.getCursorWindow(info)); err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/erase_helpers.go b/vendor/github.com/Azure/go-ansiterm/winterm/erase_helpers.go new file mode 100644 index 0000000000..244b5fa25e --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/winterm/erase_helpers.go @@ -0,0 +1,84 @@ +// +build windows + +package winterm + +import "github.com/Azure/go-ansiterm" + +func (h *windowsAnsiEventHandler) clearRange(attributes uint16, fromCoord COORD, toCoord COORD) error { + // Ignore an invalid (negative area) request + if toCoord.Y < fromCoord.Y { + return nil + } + + var err error + + var coordStart = COORD{} + var coordEnd = COORD{} + + xCurrent, yCurrent := fromCoord.X, fromCoord.Y + xEnd, yEnd := toCoord.X, toCoord.Y + + // Clear any partial initial line + if xCurrent > 0 { + coordStart.X, coordStart.Y = xCurrent, yCurrent + coordEnd.X, coordEnd.Y = xEnd, yCurrent + + err = h.clearRect(attributes, coordStart, coordEnd) + if err != nil { + return err + } + + xCurrent = 0 + yCurrent += 1 + } + + // Clear intervening rectangular section + if yCurrent < yEnd { + coordStart.X, coordStart.Y = xCurrent, yCurrent + coordEnd.X, coordEnd.Y = xEnd, yEnd-1 + + err = h.clearRect(attributes, coordStart, coordEnd) + if err != nil { + return err + } + + xCurrent = 0 + yCurrent = yEnd + } + + // Clear remaining partial ending line + coordStart.X, coordStart.Y = xCurrent, yCurrent + coordEnd.X, coordEnd.Y = xEnd, yEnd + + err = h.clearRect(attributes, coordStart, coordEnd) + if err != nil { + return err + } + + return nil +} + +func (h *windowsAnsiEventHandler) clearRect(attributes uint16, fromCoord COORD, toCoord COORD) error { + region := SMALL_RECT{Top: fromCoord.Y, Left: fromCoord.X, Bottom: toCoord.Y, Right: toCoord.X} + width := toCoord.X - fromCoord.X + 1 + height := toCoord.Y - fromCoord.Y + 1 + size := uint32(width) * uint32(height) + + if size <= 0 { + return nil + } + + buffer := make([]CHAR_INFO, size) + + char := CHAR_INFO{ansiterm.FILL_CHARACTER, attributes} + for i := 0; i < int(size); i++ { + buffer[i] = char + } + + err := WriteConsoleOutput(h.fd, buffer, COORD{X: width, Y: height}, COORD{X: 0, Y: 0}, ®ion) + if err != nil { + return err + } + + return nil +} diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/scroll_helper.go b/vendor/github.com/Azure/go-ansiterm/winterm/scroll_helper.go new file mode 100644 index 0000000000..2d27fa1d02 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/winterm/scroll_helper.go @@ -0,0 +1,118 @@ +// +build windows + +package winterm + +// effectiveSr gets the current effective scroll region in buffer coordinates +func (h *windowsAnsiEventHandler) effectiveSr(window SMALL_RECT) scrollRegion { + top := addInRange(window.Top, h.sr.top, window.Top, window.Bottom) + bottom := addInRange(window.Top, h.sr.bottom, window.Top, window.Bottom) + if top >= bottom { + top = window.Top + bottom = window.Bottom + } + return scrollRegion{top: top, bottom: bottom} +} + +func (h *windowsAnsiEventHandler) scrollUp(param int) error { + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + + sr := h.effectiveSr(info.Window) + return h.scroll(param, sr, info) +} + +func (h *windowsAnsiEventHandler) scrollDown(param int) error { + return h.scrollUp(-param) +} + +func (h *windowsAnsiEventHandler) deleteLines(param int) error { + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + + start := info.CursorPosition.Y + sr := h.effectiveSr(info.Window) + // Lines cannot be inserted or deleted outside the scrolling region. + if start >= sr.top && start <= sr.bottom { + sr.top = start + return h.scroll(param, sr, info) + } else { + return nil + } +} + +func (h *windowsAnsiEventHandler) insertLines(param int) error { + return h.deleteLines(-param) +} + +// scroll scrolls the provided scroll region by param lines. The scroll region is in buffer coordinates. +func (h *windowsAnsiEventHandler) scroll(param int, sr scrollRegion, info *CONSOLE_SCREEN_BUFFER_INFO) error { + h.logf("scroll: scrollTop: %d, scrollBottom: %d", sr.top, sr.bottom) + h.logf("scroll: windowTop: %d, windowBottom: %d", info.Window.Top, info.Window.Bottom) + + // Copy from and clip to the scroll region (full buffer width) + scrollRect := SMALL_RECT{ + Top: sr.top, + Bottom: sr.bottom, + Left: 0, + Right: info.Size.X - 1, + } + + // Origin to which area should be copied + destOrigin := COORD{ + X: 0, + Y: sr.top - int16(param), + } + + char := CHAR_INFO{ + UnicodeChar: ' ', + Attributes: h.attributes, + } + + if err := ScrollConsoleScreenBuffer(h.fd, scrollRect, scrollRect, destOrigin, char); err != nil { + return err + } + return nil +} + +func (h *windowsAnsiEventHandler) deleteCharacters(param int) error { + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + return h.scrollLine(param, info.CursorPosition, info) +} + +func (h *windowsAnsiEventHandler) insertCharacters(param int) error { + return h.deleteCharacters(-param) +} + +// scrollLine scrolls a line horizontally starting at the provided position by a number of columns. +func (h *windowsAnsiEventHandler) scrollLine(columns int, position COORD, info *CONSOLE_SCREEN_BUFFER_INFO) error { + // Copy from and clip to the scroll region (full buffer width) + scrollRect := SMALL_RECT{ + Top: position.Y, + Bottom: position.Y, + Left: position.X, + Right: info.Size.X - 1, + } + + // Origin to which area should be copied + destOrigin := COORD{ + X: position.X - int16(columns), + Y: position.Y, + } + + char := CHAR_INFO{ + UnicodeChar: ' ', + Attributes: h.attributes, + } + + if err := ScrollConsoleScreenBuffer(h.fd, scrollRect, scrollRect, destOrigin, char); err != nil { + return err + } + return nil +} diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/utilities.go b/vendor/github.com/Azure/go-ansiterm/winterm/utilities.go new file mode 100644 index 0000000000..afa7635d77 --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/winterm/utilities.go @@ -0,0 +1,9 @@ +// +build windows + +package winterm + +// AddInRange increments a value by the passed quantity while ensuring the values +// always remain within the supplied min / max range. +func addInRange(n int16, increment int16, min int16, max int16) int16 { + return ensureInRange(n+increment, min, max) +} diff --git a/vendor/github.com/Azure/go-ansiterm/winterm/win_event_handler.go b/vendor/github.com/Azure/go-ansiterm/winterm/win_event_handler.go new file mode 100644 index 0000000000..2d40fb75ad --- /dev/null +++ b/vendor/github.com/Azure/go-ansiterm/winterm/win_event_handler.go @@ -0,0 +1,743 @@ +// +build windows + +package winterm + +import ( + "bytes" + "log" + "os" + "strconv" + + "github.com/Azure/go-ansiterm" +) + +type windowsAnsiEventHandler struct { + fd uintptr + file *os.File + infoReset *CONSOLE_SCREEN_BUFFER_INFO + sr scrollRegion + buffer bytes.Buffer + attributes uint16 + inverted bool + wrapNext bool + drewMarginByte bool + originMode bool + marginByte byte + curInfo *CONSOLE_SCREEN_BUFFER_INFO + curPos COORD + logf func(string, ...interface{}) +} + +type Option func(*windowsAnsiEventHandler) + +func WithLogf(f func(string, ...interface{})) Option { + return func(w *windowsAnsiEventHandler) { + w.logf = f + } +} + +func CreateWinEventHandler(fd uintptr, file *os.File, opts ...Option) ansiterm.AnsiEventHandler { + infoReset, err := GetConsoleScreenBufferInfo(fd) + if err != nil { + return nil + } + + h := &windowsAnsiEventHandler{ + fd: fd, + file: file, + infoReset: infoReset, + attributes: infoReset.Attributes, + } + for _, o := range opts { + o(h) + } + + if isDebugEnv := os.Getenv(ansiterm.LogEnv); isDebugEnv == "1" { + logFile, _ := os.Create("winEventHandler.log") + logger := log.New(logFile, "", log.LstdFlags) + if h.logf != nil { + l := h.logf + h.logf = func(s string, v ...interface{}) { + l(s, v...) + logger.Printf(s, v...) + } + } else { + h.logf = logger.Printf + } + } + + if h.logf == nil { + h.logf = func(string, ...interface{}) {} + } + + return h +} + +type scrollRegion struct { + top int16 + bottom int16 +} + +// simulateLF simulates a LF or CR+LF by scrolling if necessary to handle the +// current cursor position and scroll region settings, in which case it returns +// true. If no special handling is necessary, then it does nothing and returns +// false. +// +// In the false case, the caller should ensure that a carriage return +// and line feed are inserted or that the text is otherwise wrapped. +func (h *windowsAnsiEventHandler) simulateLF(includeCR bool) (bool, error) { + if h.wrapNext { + if err := h.Flush(); err != nil { + return false, err + } + h.clearWrap() + } + pos, info, err := h.getCurrentInfo() + if err != nil { + return false, err + } + sr := h.effectiveSr(info.Window) + if pos.Y == sr.bottom { + // Scrolling is necessary. Let Windows automatically scroll if the scrolling region + // is the full window. + if sr.top == info.Window.Top && sr.bottom == info.Window.Bottom { + if includeCR { + pos.X = 0 + h.updatePos(pos) + } + return false, nil + } + + // A custom scroll region is active. Scroll the window manually to simulate + // the LF. + if err := h.Flush(); err != nil { + return false, err + } + h.logf("Simulating LF inside scroll region") + if err := h.scrollUp(1); err != nil { + return false, err + } + if includeCR { + pos.X = 0 + if err := SetConsoleCursorPosition(h.fd, pos); err != nil { + return false, err + } + } + return true, nil + + } else if pos.Y < info.Window.Bottom { + // Let Windows handle the LF. + pos.Y++ + if includeCR { + pos.X = 0 + } + h.updatePos(pos) + return false, nil + } else { + // The cursor is at the bottom of the screen but outside the scroll + // region. Skip the LF. + h.logf("Simulating LF outside scroll region") + if includeCR { + if err := h.Flush(); err != nil { + return false, err + } + pos.X = 0 + if err := SetConsoleCursorPosition(h.fd, pos); err != nil { + return false, err + } + } + return true, nil + } +} + +// executeLF executes a LF without a CR. +func (h *windowsAnsiEventHandler) executeLF() error { + handled, err := h.simulateLF(false) + if err != nil { + return err + } + if !handled { + // Windows LF will reset the cursor column position. Write the LF + // and restore the cursor position. + pos, _, err := h.getCurrentInfo() + if err != nil { + return err + } + h.buffer.WriteByte(ansiterm.ANSI_LINE_FEED) + if pos.X != 0 { + if err := h.Flush(); err != nil { + return err + } + h.logf("Resetting cursor position for LF without CR") + if err := SetConsoleCursorPosition(h.fd, pos); err != nil { + return err + } + } + } + return nil +} + +func (h *windowsAnsiEventHandler) Print(b byte) error { + if h.wrapNext { + h.buffer.WriteByte(h.marginByte) + h.clearWrap() + if _, err := h.simulateLF(true); err != nil { + return err + } + } + pos, info, err := h.getCurrentInfo() + if err != nil { + return err + } + if pos.X == info.Size.X-1 { + h.wrapNext = true + h.marginByte = b + } else { + pos.X++ + h.updatePos(pos) + h.buffer.WriteByte(b) + } + return nil +} + +func (h *windowsAnsiEventHandler) Execute(b byte) error { + switch b { + case ansiterm.ANSI_TAB: + h.logf("Execute(TAB)") + // Move to the next tab stop, but preserve auto-wrap if already set. + if !h.wrapNext { + pos, info, err := h.getCurrentInfo() + if err != nil { + return err + } + pos.X = (pos.X + 8) - pos.X%8 + if pos.X >= info.Size.X { + pos.X = info.Size.X - 1 + } + if err := h.Flush(); err != nil { + return err + } + if err := SetConsoleCursorPosition(h.fd, pos); err != nil { + return err + } + } + return nil + + case ansiterm.ANSI_BEL: + h.buffer.WriteByte(ansiterm.ANSI_BEL) + return nil + + case ansiterm.ANSI_BACKSPACE: + if h.wrapNext { + if err := h.Flush(); err != nil { + return err + } + h.clearWrap() + } + pos, _, err := h.getCurrentInfo() + if err != nil { + return err + } + if pos.X > 0 { + pos.X-- + h.updatePos(pos) + h.buffer.WriteByte(ansiterm.ANSI_BACKSPACE) + } + return nil + + case ansiterm.ANSI_VERTICAL_TAB, ansiterm.ANSI_FORM_FEED: + // Treat as true LF. + return h.executeLF() + + case ansiterm.ANSI_LINE_FEED: + // Simulate a CR and LF for now since there is no way in go-ansiterm + // to tell if the LF should include CR (and more things break when it's + // missing than when it's incorrectly added). + handled, err := h.simulateLF(true) + if handled || err != nil { + return err + } + return h.buffer.WriteByte(ansiterm.ANSI_LINE_FEED) + + case ansiterm.ANSI_CARRIAGE_RETURN: + if h.wrapNext { + if err := h.Flush(); err != nil { + return err + } + h.clearWrap() + } + pos, _, err := h.getCurrentInfo() + if err != nil { + return err + } + if pos.X != 0 { + pos.X = 0 + h.updatePos(pos) + h.buffer.WriteByte(ansiterm.ANSI_CARRIAGE_RETURN) + } + return nil + + default: + return nil + } +} + +func (h *windowsAnsiEventHandler) CUU(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("CUU: [%v]", []string{strconv.Itoa(param)}) + h.clearWrap() + return h.moveCursorVertical(-param) +} + +func (h *windowsAnsiEventHandler) CUD(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("CUD: [%v]", []string{strconv.Itoa(param)}) + h.clearWrap() + return h.moveCursorVertical(param) +} + +func (h *windowsAnsiEventHandler) CUF(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("CUF: [%v]", []string{strconv.Itoa(param)}) + h.clearWrap() + return h.moveCursorHorizontal(param) +} + +func (h *windowsAnsiEventHandler) CUB(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("CUB: [%v]", []string{strconv.Itoa(param)}) + h.clearWrap() + return h.moveCursorHorizontal(-param) +} + +func (h *windowsAnsiEventHandler) CNL(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("CNL: [%v]", []string{strconv.Itoa(param)}) + h.clearWrap() + return h.moveCursorLine(param) +} + +func (h *windowsAnsiEventHandler) CPL(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("CPL: [%v]", []string{strconv.Itoa(param)}) + h.clearWrap() + return h.moveCursorLine(-param) +} + +func (h *windowsAnsiEventHandler) CHA(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("CHA: [%v]", []string{strconv.Itoa(param)}) + h.clearWrap() + return h.moveCursorColumn(param) +} + +func (h *windowsAnsiEventHandler) VPA(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("VPA: [[%d]]", param) + h.clearWrap() + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + window := h.getCursorWindow(info) + position := info.CursorPosition + position.Y = window.Top + int16(param) - 1 + return h.setCursorPosition(position, window) +} + +func (h *windowsAnsiEventHandler) CUP(row int, col int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("CUP: [[%d %d]]", row, col) + h.clearWrap() + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + + window := h.getCursorWindow(info) + position := COORD{window.Left + int16(col) - 1, window.Top + int16(row) - 1} + return h.setCursorPosition(position, window) +} + +func (h *windowsAnsiEventHandler) HVP(row int, col int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("HVP: [[%d %d]]", row, col) + h.clearWrap() + return h.CUP(row, col) +} + +func (h *windowsAnsiEventHandler) DECTCEM(visible bool) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("DECTCEM: [%v]", []string{strconv.FormatBool(visible)}) + h.clearWrap() + return nil +} + +func (h *windowsAnsiEventHandler) DECOM(enable bool) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("DECOM: [%v]", []string{strconv.FormatBool(enable)}) + h.clearWrap() + h.originMode = enable + return h.CUP(1, 1) +} + +func (h *windowsAnsiEventHandler) DECCOLM(use132 bool) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("DECCOLM: [%v]", []string{strconv.FormatBool(use132)}) + h.clearWrap() + if err := h.ED(2); err != nil { + return err + } + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + targetWidth := int16(80) + if use132 { + targetWidth = 132 + } + if info.Size.X < targetWidth { + if err := SetConsoleScreenBufferSize(h.fd, COORD{targetWidth, info.Size.Y}); err != nil { + h.logf("set buffer failed: %v", err) + return err + } + } + window := info.Window + window.Left = 0 + window.Right = targetWidth - 1 + if err := SetConsoleWindowInfo(h.fd, true, window); err != nil { + h.logf("set window failed: %v", err) + return err + } + if info.Size.X > targetWidth { + if err := SetConsoleScreenBufferSize(h.fd, COORD{targetWidth, info.Size.Y}); err != nil { + h.logf("set buffer failed: %v", err) + return err + } + } + return SetConsoleCursorPosition(h.fd, COORD{0, 0}) +} + +func (h *windowsAnsiEventHandler) ED(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("ED: [%v]", []string{strconv.Itoa(param)}) + h.clearWrap() + + // [J -- Erases from the cursor to the end of the screen, including the cursor position. + // [1J -- Erases from the beginning of the screen to the cursor, including the cursor position. + // [2J -- Erases the complete display. The cursor does not move. + // Notes: + // -- Clearing the entire buffer, versus just the Window, works best for Windows Consoles + + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + + var start COORD + var end COORD + + switch param { + case 0: + start = info.CursorPosition + end = COORD{info.Size.X - 1, info.Size.Y - 1} + + case 1: + start = COORD{0, 0} + end = info.CursorPosition + + case 2: + start = COORD{0, 0} + end = COORD{info.Size.X - 1, info.Size.Y - 1} + } + + err = h.clearRange(h.attributes, start, end) + if err != nil { + return err + } + + // If the whole buffer was cleared, move the window to the top while preserving + // the window-relative cursor position. + if param == 2 { + pos := info.CursorPosition + window := info.Window + pos.Y -= window.Top + window.Bottom -= window.Top + window.Top = 0 + if err := SetConsoleCursorPosition(h.fd, pos); err != nil { + return err + } + if err := SetConsoleWindowInfo(h.fd, true, window); err != nil { + return err + } + } + + return nil +} + +func (h *windowsAnsiEventHandler) EL(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("EL: [%v]", strconv.Itoa(param)) + h.clearWrap() + + // [K -- Erases from the cursor to the end of the line, including the cursor position. + // [1K -- Erases from the beginning of the line to the cursor, including the cursor position. + // [2K -- Erases the complete line. + + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + + var start COORD + var end COORD + + switch param { + case 0: + start = info.CursorPosition + end = COORD{info.Size.X, info.CursorPosition.Y} + + case 1: + start = COORD{0, info.CursorPosition.Y} + end = info.CursorPosition + + case 2: + start = COORD{0, info.CursorPosition.Y} + end = COORD{info.Size.X, info.CursorPosition.Y} + } + + err = h.clearRange(h.attributes, start, end) + if err != nil { + return err + } + + return nil +} + +func (h *windowsAnsiEventHandler) IL(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("IL: [%v]", strconv.Itoa(param)) + h.clearWrap() + return h.insertLines(param) +} + +func (h *windowsAnsiEventHandler) DL(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("DL: [%v]", strconv.Itoa(param)) + h.clearWrap() + return h.deleteLines(param) +} + +func (h *windowsAnsiEventHandler) ICH(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("ICH: [%v]", strconv.Itoa(param)) + h.clearWrap() + return h.insertCharacters(param) +} + +func (h *windowsAnsiEventHandler) DCH(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("DCH: [%v]", strconv.Itoa(param)) + h.clearWrap() + return h.deleteCharacters(param) +} + +func (h *windowsAnsiEventHandler) SGR(params []int) error { + if err := h.Flush(); err != nil { + return err + } + strings := []string{} + for _, v := range params { + strings = append(strings, strconv.Itoa(v)) + } + + h.logf("SGR: [%v]", strings) + + if len(params) <= 0 { + h.attributes = h.infoReset.Attributes + h.inverted = false + } else { + for _, attr := range params { + + if attr == ansiterm.ANSI_SGR_RESET { + h.attributes = h.infoReset.Attributes + h.inverted = false + continue + } + + h.attributes, h.inverted = collectAnsiIntoWindowsAttributes(h.attributes, h.inverted, h.infoReset.Attributes, int16(attr)) + } + } + + attributes := h.attributes + if h.inverted { + attributes = invertAttributes(attributes) + } + err := SetConsoleTextAttribute(h.fd, attributes) + if err != nil { + return err + } + + return nil +} + +func (h *windowsAnsiEventHandler) SU(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("SU: [%v]", []string{strconv.Itoa(param)}) + h.clearWrap() + return h.scrollUp(param) +} + +func (h *windowsAnsiEventHandler) SD(param int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("SD: [%v]", []string{strconv.Itoa(param)}) + h.clearWrap() + return h.scrollDown(param) +} + +func (h *windowsAnsiEventHandler) DA(params []string) error { + h.logf("DA: [%v]", params) + // DA cannot be implemented because it must send data on the VT100 input stream, + // which is not available to go-ansiterm. + return nil +} + +func (h *windowsAnsiEventHandler) DECSTBM(top int, bottom int) error { + if err := h.Flush(); err != nil { + return err + } + h.logf("DECSTBM: [%d, %d]", top, bottom) + + // Windows is 0 indexed, Linux is 1 indexed + h.sr.top = int16(top - 1) + h.sr.bottom = int16(bottom - 1) + + // This command also moves the cursor to the origin. + h.clearWrap() + return h.CUP(1, 1) +} + +func (h *windowsAnsiEventHandler) RI() error { + if err := h.Flush(); err != nil { + return err + } + h.logf("RI: []") + h.clearWrap() + + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + + sr := h.effectiveSr(info.Window) + if info.CursorPosition.Y == sr.top { + return h.scrollDown(1) + } + + return h.moveCursorVertical(-1) +} + +func (h *windowsAnsiEventHandler) IND() error { + h.logf("IND: []") + return h.executeLF() +} + +func (h *windowsAnsiEventHandler) Flush() error { + h.curInfo = nil + if h.buffer.Len() > 0 { + h.logf("Flush: [%s]", h.buffer.Bytes()) + if _, err := h.buffer.WriteTo(h.file); err != nil { + return err + } + } + + if h.wrapNext && !h.drewMarginByte { + h.logf("Flush: drawing margin byte '%c'", h.marginByte) + + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return err + } + + charInfo := []CHAR_INFO{{UnicodeChar: uint16(h.marginByte), Attributes: info.Attributes}} + size := COORD{1, 1} + position := COORD{0, 0} + region := SMALL_RECT{Left: info.CursorPosition.X, Top: info.CursorPosition.Y, Right: info.CursorPosition.X, Bottom: info.CursorPosition.Y} + if err := WriteConsoleOutput(h.fd, charInfo, size, position, ®ion); err != nil { + return err + } + h.drewMarginByte = true + } + return nil +} + +// cacheConsoleInfo ensures that the current console screen information has been queried +// since the last call to Flush(). It must be called before accessing h.curInfo or h.curPos. +func (h *windowsAnsiEventHandler) getCurrentInfo() (COORD, *CONSOLE_SCREEN_BUFFER_INFO, error) { + if h.curInfo == nil { + info, err := GetConsoleScreenBufferInfo(h.fd) + if err != nil { + return COORD{}, nil, err + } + h.curInfo = info + h.curPos = info.CursorPosition + } + return h.curPos, h.curInfo, nil +} + +func (h *windowsAnsiEventHandler) updatePos(pos COORD) { + if h.curInfo == nil { + panic("failed to call getCurrentInfo before calling updatePos") + } + h.curPos = pos +} + +// clearWrap clears the state where the cursor is in the margin +// waiting for the next character before wrapping the line. This must +// be done before most operations that act on the cursor. +func (h *windowsAnsiEventHandler) clearWrap() { + h.wrapNext = false + h.drewMarginByte = false +} diff --git a/vendor/github.com/antlr4-go/antlr/v4/antlrdoc.go b/vendor/github.com/antlr4-go/antlr/v4/antlrdoc.go index 3bb4fd7c4e..48bd362bf5 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/antlrdoc.go +++ b/vendor/github.com/antlr4-go/antlr/v4/antlrdoc.go @@ -17,9 +17,9 @@ ANTLR4 that it is compatible with (I.E. uses the /v4 path). However, this was found to be problematic, as it meant that with the runtime embedded so far underneath the root of the repo, the `go get` and related commands could not properly resolve the location of the go runtime source code. This meant that the reference to the runtime in your `go.mod` file would refer to the correct source code, but would not -list the release tag such as @4.12.0 - this was confusing, to say the least. +list the release tag such as @4.13.1 - this was confusing, to say the least. -As of 4.12.1, the runtime is now available as a go module in its own repo, and can be imported as `github.com/antlr4-go/antlr` +As of 4.13.0, the runtime is now available as a go module in its own repo, and can be imported as `github.com/antlr4-go/antlr` (the go get command should also be used with this path). See the main documentation for the ANTLR4 project for more information, which is available at [ANTLR docs]. The documentation for using the Go runtime is available at [Go runtime docs]. @@ -49,7 +49,7 @@ Here is a general/recommended template for an ANTLR based recognizer in Go: . ├── parser │ ├── mygrammar.g4 - │ ├── antlr-4.12.1-complete.jar + │ ├── antlr-4.13.1-complete.jar │ ├── generate.go │ └── generate.sh ├── parsing - generated code goes here @@ -71,7 +71,7 @@ And the generate.sh file will look similar to this: #!/bin/sh - alias antlr4='java -Xmx500M -cp "./antlr4-4.12.1-complete.jar:$CLASSPATH" org.antlr.v4.Tool' + alias antlr4='java -Xmx500M -cp "./antlr4-4.13.1-complete.jar:$CLASSPATH" org.antlr.v4.Tool' antlr4 -Dlanguage=Go -no-visitor -package parsing *.g4 depending on whether you want visitors or listeners or any other ANTLR options. Not that another option here diff --git a/vendor/github.com/antlr4-go/antlr/v4/atn.go b/vendor/github.com/antlr4-go/antlr/v4/atn.go index cdeefed247..e749ebd0cf 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/atn.go +++ b/vendor/github.com/antlr4-go/antlr/v4/atn.go @@ -4,8 +4,6 @@ package antlr -import "sync" - // ATNInvalidAltNumber is used to represent an ALT number that has yet to be calculated or // which is invalid for a particular struct such as [*antlr.BaseRuleContext] var ATNInvalidAltNumber int @@ -56,9 +54,9 @@ type ATN struct { // states []ATNState - mu sync.Mutex - stateMu sync.RWMutex - edgeMu sync.RWMutex + mu Mutex + stateMu RWMutex + edgeMu RWMutex } // NewATN returns a new ATN struct representing the given grammarType and is used diff --git a/vendor/github.com/antlr4-go/antlr/v4/atn_config.go b/vendor/github.com/antlr4-go/antlr/v4/atn_config.go index a83f25d349..267308bb3d 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/atn_config.go +++ b/vendor/github.com/antlr4-go/antlr/v4/atn_config.go @@ -73,9 +73,6 @@ func NewATNConfig1(c *ATNConfig, state ATNState, context *PredictionContext) *AT // NewATNConfig creates a new ATNConfig instance given an existing config, a state, a context and a semantic context, other 'constructors' // are just wrappers around this one. func NewATNConfig(c *ATNConfig, state ATNState, context *PredictionContext, semanticContext SemanticContext) *ATNConfig { - if semanticContext == nil { - panic("semanticContext cannot be nil") // TODO: Remove this - probably put here for some bug that is now fixed - } b := &ATNConfig{} b.InitATNConfig(c, state, c.GetAlt(), context, semanticContext) b.cType = parserConfig diff --git a/vendor/github.com/antlr4-go/antlr/v4/input_stream.go b/vendor/github.com/antlr4-go/antlr/v4/input_stream.go index b737fe85fb..ab4e96be52 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/input_stream.go +++ b/vendor/github.com/antlr4-go/antlr/v4/input_stream.go @@ -148,7 +148,7 @@ func (is *InputStream) GetTextFromInterval(i Interval) string { } func (*InputStream) GetSourceName() string { - return "" + return "Obtained from string" } // String returns the entire input stream as a string diff --git a/vendor/github.com/antlr4-go/antlr/v4/jcollect.go b/vendor/github.com/antlr4-go/antlr/v4/jcollect.go index ceccd96d25..6d668f7983 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/jcollect.go +++ b/vendor/github.com/antlr4-go/antlr/v4/jcollect.go @@ -8,7 +8,6 @@ import ( "container/list" "runtime/debug" "sort" - "sync" ) // Collectable is an interface that a struct should implement if it is to be @@ -587,12 +586,12 @@ type VisitRecord struct { type VisitList struct { cache *list.List - lock sync.RWMutex + lock RWMutex } var visitListPool = VisitList{ cache: list.New(), - lock: sync.RWMutex{}, + lock: RWMutex{}, } // NewVisitRecord returns a new VisitRecord instance from the pool if available. diff --git a/vendor/github.com/antlr4-go/antlr/v4/lexer.go b/vendor/github.com/antlr4-go/antlr/v4/lexer.go index 3c7896a918..e5594b2168 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/lexer.go +++ b/vendor/github.com/antlr4-go/antlr/v4/lexer.go @@ -207,7 +207,7 @@ func (b *BaseLexer) NextToken() Token { for { b.thetype = TokenInvalidType - ttype := b.safeMatch() + ttype := b.safeMatch() // Defaults to LexerSkip if b.input.LA(1) == TokenEOF { b.hitEOF = true diff --git a/vendor/github.com/antlr4-go/antlr/v4/ll1_analyzer.go b/vendor/github.com/antlr4-go/antlr/v4/ll1_analyzer.go index 4955ac876f..dfdff000bc 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/ll1_analyzer.go +++ b/vendor/github.com/antlr4-go/antlr/v4/ll1_analyzer.go @@ -40,6 +40,7 @@ func (la *LL1Analyzer) getDecisionLookahead(s ATNState) []*IntervalSet { for alt := 0; alt < count; alt++ { look[alt] = NewIntervalSet() + // TODO: This is one of the reasons that ATNConfigs are allocated and freed all the time - fix this tomorrow jim! lookBusy := NewJStore[*ATNConfig, Comparator[*ATNConfig]](aConfEqInst, ClosureBusyCollection, "LL1Analyzer.getDecisionLookahead for lookBusy") la.look1(s.GetTransitions()[alt].getTarget(), nil, BasePredictionContextEMPTY, look[alt], lookBusy, NewBitSet(), false, false) diff --git a/vendor/github.com/antlr4-go/antlr/v4/mutex.go b/vendor/github.com/antlr4-go/antlr/v4/mutex.go new file mode 100644 index 0000000000..2b0cda4745 --- /dev/null +++ b/vendor/github.com/antlr4-go/antlr/v4/mutex.go @@ -0,0 +1,41 @@ +//go:build !antlr.nomutex +// +build !antlr.nomutex + +package antlr + +import "sync" + +// Mutex is a simple mutex implementation which just delegates to sync.Mutex, it +// is used to provide a mutex implementation for the antlr package, which users +// can turn off with the build tag -tags antlr.nomutex +type Mutex struct { + mu sync.Mutex +} + +func (m *Mutex) Lock() { + m.mu.Lock() +} + +func (m *Mutex) Unlock() { + m.mu.Unlock() +} + +type RWMutex struct { + mu sync.RWMutex +} + +func (m *RWMutex) Lock() { + m.mu.Lock() +} + +func (m *RWMutex) Unlock() { + m.mu.Unlock() +} + +func (m *RWMutex) RLock() { + m.mu.RLock() +} + +func (m *RWMutex) RUnlock() { + m.mu.RUnlock() +} diff --git a/vendor/github.com/antlr4-go/antlr/v4/mutex_nomutex.go b/vendor/github.com/antlr4-go/antlr/v4/mutex_nomutex.go new file mode 100644 index 0000000000..35ce4353ee --- /dev/null +++ b/vendor/github.com/antlr4-go/antlr/v4/mutex_nomutex.go @@ -0,0 +1,32 @@ +//go:build antlr.nomutex +// +build antlr.nomutex + +package antlr + +type Mutex struct{} + +func (m *Mutex) Lock() { + // No-op +} + +func (m *Mutex) Unlock() { + // No-op +} + +type RWMutex struct{} + +func (m *RWMutex) Lock() { + // No-op +} + +func (m *RWMutex) Unlock() { + // No-op +} + +func (m *RWMutex) RLock() { + // No-op +} + +func (m *RWMutex) RUnlock() { + // No-op +} diff --git a/vendor/github.com/antlr4-go/antlr/v4/parser_atn_simulator.go b/vendor/github.com/antlr4-go/antlr/v4/parser_atn_simulator.go index ae2869692a..724fa17a19 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/parser_atn_simulator.go +++ b/vendor/github.com/antlr4-go/antlr/v4/parser_atn_simulator.go @@ -10,8 +10,6 @@ import ( "strings" ) -var () - // ClosureBusy is a store of ATNConfigs and is a tiny abstraction layer over // a standard JStore so that we can use Lazy instantiation of the JStore, mostly // to avoid polluting the stats module with a ton of JStore instances with nothing in them. @@ -883,7 +881,7 @@ func (p *ParserATNSimulator) getPredicatePredictions(ambigAlts *BitSet, altToPre // the ERROR state was reached, outerContext as the initial parser context from the paper // or the parser stack at the instant before prediction commences. // -// Teh func returns the value to return from [AdaptivePredict], or +// The func returns the value to return from [AdaptivePredict], or // [ATNInvalidAltNumber] if a suitable alternative was not // identified and [AdaptivePredict] should report an error instead. func (p *ParserATNSimulator) getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(configs *ATNConfigSet, outerContext ParserRuleContext) int { diff --git a/vendor/github.com/antlr4-go/antlr/v4/prediction_context.go b/vendor/github.com/antlr4-go/antlr/v4/prediction_context.go index c1b80cc1f0..a1d5186b8f 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/prediction_context.go +++ b/vendor/github.com/antlr4-go/antlr/v4/prediction_context.go @@ -6,7 +6,6 @@ package antlr import ( "fmt" - "golang.org/x/exp/slices" "strconv" ) @@ -101,7 +100,7 @@ func NewArrayPredictionContext(parents []*PredictionContext, returnStates []int) hash = murmurUpdate(hash, returnState) } hash = murmurFinish(hash, len(parents)<<1) - + nec := &PredictionContext{} nec.cachedHash = hash nec.pcType = PredictionContextArray @@ -115,6 +114,9 @@ func (p *PredictionContext) Hash() int { } func (p *PredictionContext) Equals(other Collectable[*PredictionContext]) bool { + if p == other { + return true + } switch p.pcType { case PredictionContextEmpty: otherP := other.(*PredictionContext) @@ -138,13 +140,11 @@ func (p *PredictionContext) ArrayEquals(o Collectable[*PredictionContext]) bool if p.cachedHash != other.Hash() { return false // can't be same if hash is different } - + // Must compare the actual array elements and not just the array address // - return slices.Equal(p.returnStates, other.returnStates) && - slices.EqualFunc(p.parents, other.parents, func(x, y *PredictionContext) bool { - return x.Equals(y) - }) + return intSlicesEqual(p.returnStates, other.returnStates) && + pcSliceEqual(p.parents, other.parents) } func (p *PredictionContext) SingletonEquals(other Collectable[*PredictionContext]) bool { @@ -152,23 +152,23 @@ func (p *PredictionContext) SingletonEquals(other Collectable[*PredictionContext return false } otherP := other.(*PredictionContext) - if otherP == nil { + if otherP == nil || otherP.pcType != PredictionContextSingleton { return false } - + if p.cachedHash != otherP.Hash() { return false // Can't be same if hash is different } - + if p.returnState != otherP.getReturnState(0) { return false } - + // Both parents must be nil if one is if p.parentCtx == nil { return otherP.parentCtx == nil } - + return p.parentCtx.Equals(otherP.parentCtx) } @@ -225,27 +225,27 @@ func (p *PredictionContext) String() string { return "$" case PredictionContextSingleton: var up string - + if p.parentCtx == nil { up = "" } else { up = p.parentCtx.String() } - + if len(up) == 0 { if p.returnState == BasePredictionContextEmptyReturnState { return "$" } - + return strconv.Itoa(p.returnState) } - + return strconv.Itoa(p.returnState) + " " + up case PredictionContextArray: if p.isEmpty() { return "[]" } - + s := "[" for i := 0; i < len(p.returnStates); i++ { if i > 0 { @@ -263,7 +263,7 @@ func (p *PredictionContext) String() string { } } return s + "]" - + default: return "unknown" } @@ -309,18 +309,18 @@ func predictionContextFromRuleContext(a *ATN, outerContext RuleContext) *Predict parent := predictionContextFromRuleContext(a, outerContext.GetParent().(RuleContext)) state := a.states[outerContext.GetInvokingState()] transition := state.GetTransitions()[0] - + return SingletonBasePredictionContextCreate(parent, transition.(*RuleTransition).followState.GetStateNumber()) } func merge(a, b *PredictionContext, rootIsWildcard bool, mergeCache *JPCMap) *PredictionContext { - + // Share same graph if both same // if a == b || a.Equals(b) { return a } - + if a.pcType == PredictionContextSingleton && b.pcType == PredictionContextSingleton { return mergeSingletons(a, b, rootIsWildcard, mergeCache) } @@ -334,7 +334,7 @@ func merge(a, b *PredictionContext, rootIsWildcard bool, mergeCache *JPCMap) *Pr return b } } - + // Convert either Singleton or Empty to arrays, so that we can merge them // ara := convertToArray(a) @@ -395,7 +395,7 @@ func mergeSingletons(a, b *PredictionContext, rootIsWildcard bool, mergeCache *J return previous } } - + rootMerge := mergeRoot(a, b, rootIsWildcard) if rootMerge != nil { if mergeCache != nil { @@ -564,7 +564,7 @@ func mergeArrays(a, b *PredictionContext, rootIsWildcard bool, mergeCache *JPCMa i := 0 // walks a j := 0 // walks b k := 0 // walks target M array - + mergedReturnStates := make([]int, len(a.returnStates)+len(b.returnStates)) mergedParents := make([]*PredictionContext, len(a.returnStates)+len(b.returnStates)) // walk and merge to yield mergedParents, mergedReturnStates @@ -626,9 +626,9 @@ func mergeArrays(a, b *PredictionContext, rootIsWildcard bool, mergeCache *JPCMa mergedParents = mergedParents[0:k] mergedReturnStates = mergedReturnStates[0:k] } - + M := NewArrayPredictionContext(mergedParents, mergedReturnStates) - + // if we created same array as a or b, return that instead // TODO: JI track whether this is possible above during merge sort for speed and possibly avoid an allocation if M.Equals(a) { @@ -650,7 +650,7 @@ func mergeArrays(a, b *PredictionContext, rootIsWildcard bool, mergeCache *JPCMa return b } combineCommonParents(&mergedParents) - + if mergeCache != nil { mergeCache.Put(a, b, M) } @@ -666,7 +666,7 @@ func mergeArrays(a, b *PredictionContext, rootIsWildcard bool, mergeCache *JPCMa //goland:noinspection GoUnusedFunction func combineCommonParents(parents *[]*PredictionContext) { uniqueParents := NewJStore[*PredictionContext, Comparator[*PredictionContext]](pContextEqInst, PredictionContextCollection, "combineCommonParents for PredictionContext") - + for p := 0; p < len(*parents); p++ { parent := (*parents)[p] _, _ = uniqueParents.Put(parent) @@ -685,7 +685,7 @@ func getCachedBasePredictionContext(context *PredictionContext, contextCache *Pr if present { return existing } - + existing, present = contextCache.Get(context) if present { visited.Put(context, existing) @@ -722,6 +722,6 @@ func getCachedBasePredictionContext(context *PredictionContext, contextCache *Pr contextCache.add(updated) visited.Put(updated, updated) visited.Put(context, updated) - + return updated } diff --git a/vendor/github.com/antlr4-go/antlr/v4/recognizer.go b/vendor/github.com/antlr4-go/antlr/v4/recognizer.go index 2e0b504fb3..dcb8548cd1 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/recognizer.go +++ b/vendor/github.com/antlr4-go/antlr/v4/recognizer.go @@ -56,7 +56,7 @@ var tokenTypeMapCache = make(map[string]int) var ruleIndexMapCache = make(map[string]int) func (b *BaseRecognizer) checkVersion(toolVersion string) { - runtimeVersion := "4.12.0" + runtimeVersion := "4.13.1" if runtimeVersion != toolVersion { fmt.Println("ANTLR runtime and generated code versions disagree: " + runtimeVersion + "!=" + toolVersion) } diff --git a/vendor/github.com/antlr4-go/antlr/v4/statistics.go b/vendor/github.com/antlr4-go/antlr/v4/statistics.go index 70c0673a0f..8cb5f3ed6f 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/statistics.go +++ b/vendor/github.com/antlr4-go/antlr/v4/statistics.go @@ -9,7 +9,6 @@ import ( "path/filepath" "sort" "strconv" - "sync" ) // This file allows the user to collect statistics about the runtime of the ANTLR runtime. It is not enabled by default @@ -30,7 +29,7 @@ type goRunStats struct { // within this package. // jStats []*JStatRec - jStatsLock sync.RWMutex + jStatsLock RWMutex topN int topNByMax []*JStatRec topNByUsed []*JStatRec diff --git a/vendor/github.com/antlr4-go/antlr/v4/token.go b/vendor/github.com/antlr4-go/antlr/v4/token.go index 9670efb829..f5bc34229d 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/token.go +++ b/vendor/github.com/antlr4-go/antlr/v4/token.go @@ -104,6 +104,25 @@ func (b *BaseToken) GetSource() *TokenSourceCharStreamPair { return b.source } +func (b *BaseToken) GetText() string { + if b.text != "" { + return b.text + } + input := b.GetInputStream() + if input == nil { + return "" + } + n := input.Size() + if b.GetStart() < n && b.GetStop() < n { + return input.GetTextFromInterval(NewInterval(b.GetStart(), b.GetStop())) + } + return "" +} + +func (b *BaseToken) SetText(text string) { + b.text = text +} + func (b *BaseToken) GetTokenIndex() int { return b.tokenIndex } @@ -120,6 +139,28 @@ func (b *BaseToken) GetInputStream() CharStream { return b.source.charStream } +func (b *BaseToken) String() string { + txt := b.GetText() + if txt != "" { + txt = strings.Replace(txt, "\n", "\\n", -1) + txt = strings.Replace(txt, "\r", "\\r", -1) + txt = strings.Replace(txt, "\t", "\\t", -1) + } else { + txt = "" + } + + var ch string + if b.GetChannel() > 0 { + ch = ",channel=" + strconv.Itoa(b.GetChannel()) + } else { + ch = "" + } + + return "[@" + strconv.Itoa(b.GetTokenIndex()) + "," + strconv.Itoa(b.GetStart()) + ":" + strconv.Itoa(b.GetStop()) + "='" + + txt + "',<" + strconv.Itoa(b.GetTokenType()) + ">" + + ch + "," + strconv.Itoa(b.GetLine()) + ":" + strconv.Itoa(b.GetColumn()) + "]" +} + type CommonToken struct { BaseToken } @@ -170,44 +211,3 @@ func (c *CommonToken) clone() *CommonToken { t.text = c.GetText() return t } - -func (c *CommonToken) GetText() string { - if c.text != "" { - return c.text - } - input := c.GetInputStream() - if input == nil { - return "" - } - n := input.Size() - if c.start < n && c.stop < n { - return input.GetTextFromInterval(NewInterval(c.start, c.stop)) - } - return "" -} - -func (c *CommonToken) SetText(text string) { - c.text = text -} - -func (c *CommonToken) String() string { - txt := c.GetText() - if txt != "" { - txt = strings.Replace(txt, "\n", "\\n", -1) - txt = strings.Replace(txt, "\r", "\\r", -1) - txt = strings.Replace(txt, "\t", "\\t", -1) - } else { - txt = "" - } - - var ch string - if c.channel > 0 { - ch = ",channel=" + strconv.Itoa(c.channel) - } else { - ch = "" - } - - return "[@" + strconv.Itoa(c.tokenIndex) + "," + strconv.Itoa(c.start) + ":" + strconv.Itoa(c.stop) + "='" + - txt + "',<" + strconv.Itoa(c.tokenType) + ">" + - ch + "," + strconv.Itoa(c.line) + ":" + strconv.Itoa(c.column) + "]" -} diff --git a/vendor/github.com/antlr4-go/antlr/v4/utils.go b/vendor/github.com/antlr4-go/antlr/v4/utils.go index 733d7df9dc..36a37f247a 100644 --- a/vendor/github.com/antlr4-go/antlr/v4/utils.go +++ b/vendor/github.com/antlr4-go/antlr/v4/utils.go @@ -326,3 +326,56 @@ func isDirectory(dir string) (bool, error) { } return fileInfo.IsDir(), err } + +// intSlicesEqual returns true if the two slices of ints are equal, and is a little +// faster than slices.Equal. +func intSlicesEqual(s1, s2 []int) bool { + if s1 == nil && s2 == nil { + return true + } + if s1 == nil || s2 == nil { + return false + } + if len(s1) == 0 && len(s2) == 0 { + return true + } + + if len(s1) == 0 || len(s2) == 0 || len(s1) != len(s2) { + return false + } + // If the slices are using the same memory, then they are the same slice + if &s1[0] == &s2[0] { + return true + } + for i, v := range s1 { + if v != s2[i] { + return false + } + } + return true +} + +func pcSliceEqual(s1, s2 []*PredictionContext) bool { + if s1 == nil && s2 == nil { + return true + } + if s1 == nil || s2 == nil { + return false + } + if len(s1) == 0 && len(s2) == 0 { + return true + } + if len(s1) == 0 || len(s2) == 0 || len(s1) != len(s2) { + return false + } + // If the slices are using the same memory, then they are the same slice + if &s1[0] == &s2[0] { + return true + } + for i, v := range s1 { + if !v.Equals(s2[i]) { + return false + } + } + return true +} diff --git a/vendor/github.com/avast/retry-go/v4/.gitignore b/vendor/github.com/avast/retry-go/v4/.gitignore deleted file mode 100644 index c40eb23f95..0000000000 --- a/vendor/github.com/avast/retry-go/v4/.gitignore +++ /dev/null @@ -1,21 +0,0 @@ -# Binaries for programs and plugins -*.exe -*.dll -*.so -*.dylib - -# Test binary, build with `go test -c` -*.test - -# Output of the go coverage tool, specifically when used with LiteIDE -*.out - -# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 -.glide/ - -# dep -vendor/ -Gopkg.lock - -# cover -coverage.txt diff --git a/vendor/github.com/avast/retry-go/v4/.godocdown.tmpl b/vendor/github.com/avast/retry-go/v4/.godocdown.tmpl deleted file mode 100644 index 32b80df81b..0000000000 --- a/vendor/github.com/avast/retry-go/v4/.godocdown.tmpl +++ /dev/null @@ -1,38 +0,0 @@ -# {{ .Name }} - -[![Release](https://img.shields.io/github/release/avast/retry-go.svg?style=flat-square)](https://github.com/avast/retry-go/releases/latest) -[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md) -![GitHub Actions](https://github.com/avast/retry-go/actions/workflows/workflow.yaml/badge.svg) -[![Go Report Card](https://goreportcard.com/badge/github.com/avast/retry-go?style=flat-square)](https://goreportcard.com/report/github.com/avast/retry-go) -[![Go Reference](https://pkg.go.dev/badge/github.com/avast/retry-go/v4.svg)](https://pkg.go.dev/github.com/avast/retry-go/v4) -[![codecov.io](https://codecov.io/github/avast/retry-go/coverage.svg?branch=master)](https://codecov.io/github/avast/retry-go?branch=master) -[![Sourcegraph](https://sourcegraph.com/github.com/avast/retry-go/-/badge.svg)](https://sourcegraph.com/github.com/avast/retry-go?badge) - -{{ .EmitSynopsis }} - -{{ .EmitUsage }} - -## Contributing - -Contributions are very much welcome. - -### Makefile - -Makefile provides several handy rules, like README.md `generator` , `setup` for prepare build/dev environment, `test`, `cover`, etc... - -Try `make help` for more information. - -### Before pull request - -> maybe you need `make setup` in order to setup environment - -please try: -* run tests (`make test`) -* run linter (`make lint`) -* if your IDE don't automaticaly do `go fmt`, run `go fmt` (`make fmt`) - -### README - -README.md are generate from template [.godocdown.tmpl](.godocdown.tmpl) and code documentation via [godocdown](https://github.com/robertkrimen/godocdown). - -Never edit README.md direct, because your change will be lost. diff --git a/vendor/github.com/avast/retry-go/v4/Makefile b/vendor/github.com/avast/retry-go/v4/Makefile deleted file mode 100644 index 86544d239a..0000000000 --- a/vendor/github.com/avast/retry-go/v4/Makefile +++ /dev/null @@ -1,59 +0,0 @@ -SOURCE_FILES?=$$(go list ./... | grep -v /vendor/) -TEST_PATTERN?=. -TEST_OPTIONS?= -VERSION?=$$(cat VERSION) -LINTER?=$$(which golangci-lint) -LINTER_VERSION=1.50.0 - -ifeq ($(OS),Windows_NT) - LINTER_FILE=golangci-lint-$(LINTER_VERSION)-windows-amd64.zip - LINTER_UNPACK= >| app.zip; unzip -j app.zip -d $$GOPATH/bin; rm app.zip -else ifeq ($(OS), Darwin) - LINTER_FILE=golangci-lint-$(LINTER_VERSION)-darwin-amd64.tar.gz - LINTER_UNPACK= | tar xzf - -C $$GOPATH/bin --wildcards --strip 1 "**/golangci-lint" -else - LINTER_FILE=golangci-lint-$(LINTER_VERSION)-linux-amd64.tar.gz - LINTER_UNPACK= | tar xzf - -C $$GOPATH/bin --wildcards --strip 1 "**/golangci-lint" -endif - -setup: - go install github.com/pierrre/gotestcover@latest - go install golang.org/x/tools/cmd/cover@latest - go install github.com/robertkrimen/godocdown/godocdown@latest - go mod download - -generate: ## Generate README.md - godocdown >| README.md - -test: generate test_and_cover_report lint - -test_and_cover_report: - gotestcover $(TEST_OPTIONS) -covermode=atomic -coverprofile=coverage.txt $(SOURCE_FILES) -run $(TEST_PATTERN) -timeout=2m - -cover: test ## Run all the tests and opens the coverage report - go tool cover -html=coverage.txt - -fmt: ## gofmt and goimports all go files - find . -name '*.go' -not -wholename './vendor/*' | while read -r file; do gofmt -w -s "$$file"; goimports -w "$$file"; done - -lint: ## Run all the linters - @if [ "$(LINTER)" = "" ]; then\ - curl -L https://github.com/golangci/golangci-lint/releases/download/v$(LINTER_VERSION)/$(LINTER_FILE) $(LINTER_UNPACK) ;\ - chmod +x $$GOPATH/bin/golangci-lint;\ - fi - - golangci-lint run - -ci: test_and_cover_report ## Run all the tests but no linters - use https://golangci.com integration instead - -build: - go build - -release: ## Release new version - git tag | grep -q $(VERSION) && echo This version was released! Increase VERSION! || git tag $(VERSION) && git push origin $(VERSION) && git tag v$(VERSION) && git push origin v$(VERSION) - -# Absolutely awesome: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html -help: - @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' - -.DEFAULT_GOAL := build diff --git a/vendor/github.com/avast/retry-go/v4/README.md b/vendor/github.com/avast/retry-go/v4/README.md deleted file mode 100644 index b730343395..0000000000 --- a/vendor/github.com/avast/retry-go/v4/README.md +++ /dev/null @@ -1,494 +0,0 @@ -# retry - -[![Release](https://img.shields.io/github/release/avast/retry-go.svg?style=flat-square)](https://github.com/avast/retry-go/releases/latest) -[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md) -![GitHub Actions](https://github.com/avast/retry-go/actions/workflows/workflow.yaml/badge.svg) -[![Go Report Card](https://goreportcard.com/badge/github.com/avast/retry-go?style=flat-square)](https://goreportcard.com/report/github.com/avast/retry-go) -[![Go Reference](https://pkg.go.dev/badge/github.com/avast/retry-go/v4.svg)](https://pkg.go.dev/github.com/avast/retry-go/v4) -[![codecov.io](https://codecov.io/github/avast/retry-go/coverage.svg?branch=master)](https://codecov.io/github/avast/retry-go?branch=master) -[![Sourcegraph](https://sourcegraph.com/github.com/avast/retry-go/-/badge.svg)](https://sourcegraph.com/github.com/avast/retry-go?badge) - -Simple library for retry mechanism - -Slightly inspired by -[Try::Tiny::Retry](https://metacpan.org/pod/Try::Tiny::Retry) - -# SYNOPSIS - -HTTP GET with retry: - - url := "http://example.com" - var body []byte - - err := retry.Do( - func() error { - resp, err := http.Get(url) - if err != nil { - return err - } - defer resp.Body.Close() - body, err = ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - return nil - }, - ) - - if err != nil { - // handle error - } - - fmt.Println(string(body)) - -HTTP GET with retry with data: - - url := "http://example.com" - - body, err := retry.DoWithData( - func() ([]byte, error) { - resp, err := http.Get(url) - if err != nil { - return nil, err - } - defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - return body, nil - }, - ) - - if err != nil { - // handle error - } - - fmt.Println(string(body)) - -[More examples](https://github.com/avast/retry-go/tree/master/examples) - -# SEE ALSO - -* [giantswarm/retry-go](https://github.com/giantswarm/retry-go) - slightly -complicated interface. - -* [sethgrid/pester](https://github.com/sethgrid/pester) - only http retry for -http calls with retries and backoff - -* [cenkalti/backoff](https://github.com/cenkalti/backoff) - Go port of the -exponential backoff algorithm from Google's HTTP Client Library for Java. Really -complicated interface. - -* [rafaeljesus/retry-go](https://github.com/rafaeljesus/retry-go) - looks good, -slightly similar as this package, don't have 'simple' `Retry` method - -* [matryer/try](https://github.com/matryer/try) - very popular package, -nonintuitive interface (for me) - -# BREAKING CHANGES - -* 4.0.0 - - - infinity retry is possible by set `Attempts(0)` by PR [#49](https://github.com/avast/retry-go/pull/49) - -* 3.0.0 - - - `DelayTypeFunc` accepts a new parameter `err` - this breaking change affects only your custom Delay Functions. This change allow [make delay functions based on error](examples/delay_based_on_error_test.go). - -* 1.0.2 -> 2.0.0 - - - argument of `retry.Delay` is final delay (no multiplication by `retry.Units` anymore) - - function `retry.Units` are removed - - [more about this breaking change](https://github.com/avast/retry-go/issues/7) - -* 0.3.0 -> 1.0.0 - - - `retry.Retry` function are changed to `retry.Do` function - - `retry.RetryCustom` (OnRetry) and `retry.RetryCustomWithOpts` functions are now implement via functions produces Options (aka `retry.OnRetry`) - -## Usage - -#### func BackOffDelay - -```go -func BackOffDelay(n uint, _ error, config *Config) time.Duration -``` -BackOffDelay is a DelayType which increases delay between consecutive retries - -#### func Do - -```go -func Do(retryableFunc RetryableFunc, opts ...Option) error -``` - -#### func DoWithData - -```go -func DoWithData[T any](retryableFunc RetryableFuncWithData[T], opts ...Option) (T, error) -``` - -#### func FixedDelay - -```go -func FixedDelay(_ uint, _ error, config *Config) time.Duration -``` -FixedDelay is a DelayType which keeps delay the same through all iterations - -#### func IsRecoverable - -```go -func IsRecoverable(err error) bool -``` -IsRecoverable checks if error is an instance of `unrecoverableError` - -#### func RandomDelay - -```go -func RandomDelay(_ uint, _ error, config *Config) time.Duration -``` -RandomDelay is a DelayType which picks a random delay up to config.maxJitter - -#### func Unrecoverable - -```go -func Unrecoverable(err error) error -``` -Unrecoverable wraps an error in `unrecoverableError` struct - -#### type Config - -```go -type Config struct { -} -``` - - -#### type DelayTypeFunc - -```go -type DelayTypeFunc func(n uint, err error, config *Config) time.Duration -``` - -DelayTypeFunc is called to return the next delay to wait after the retriable -function fails on `err` after `n` attempts. - -#### func CombineDelay - -```go -func CombineDelay(delays ...DelayTypeFunc) DelayTypeFunc -``` -CombineDelay is a DelayType the combines all of the specified delays into a new -DelayTypeFunc - -#### type Error - -```go -type Error []error -``` - -Error type represents list of errors in retry - -#### func (Error) As - -```go -func (e Error) As(target interface{}) bool -``` - -#### func (Error) Error - -```go -func (e Error) Error() string -``` -Error method return string representation of Error It is an implementation of -error interface - -#### func (Error) Is - -```go -func (e Error) Is(target error) bool -``` - -#### func (Error) Unwrap - -```go -func (e Error) Unwrap() error -``` -Unwrap the last error for compatibility with `errors.Unwrap()`. When you need to -unwrap all errors, you should use `WrappedErrors()` instead. - - err := Do( - func() error { - return errors.New("original error") - }, - Attempts(1), - ) - - fmt.Println(errors.Unwrap(err)) # "original error" is printed - -Added in version 4.2.0. - -#### func (Error) WrappedErrors - -```go -func (e Error) WrappedErrors() []error -``` -WrappedErrors returns the list of errors that this Error is wrapping. It is an -implementation of the `errwrap.Wrapper` interface in package -[errwrap](https://github.com/hashicorp/errwrap) so that `retry.Error` can be -used with that library. - -#### type OnRetryFunc - -```go -type OnRetryFunc func(attempt uint, err error) -``` - -Function signature of OnRetry function - -#### type Option - -```go -type Option func(*Config) -``` - -Option represents an option for retry. - -#### func Attempts - -```go -func Attempts(attempts uint) Option -``` -Attempts set count of retry. Setting to 0 will retry until the retried function -succeeds. default is 10 - -#### func AttemptsForError - -```go -func AttemptsForError(attempts uint, err error) Option -``` -AttemptsForError sets count of retry in case execution results in given `err` -Retries for the given `err` are also counted against total retries. The retry -will stop if any of given retries is exhausted. - -added in 4.3.0 - -#### func Context - -```go -func Context(ctx context.Context) Option -``` -Context allow to set context of retry default are Background context - -example of immediately cancellation (maybe it isn't the best example, but it -describes behavior enough; I hope) - - ctx, cancel := context.WithCancel(context.Background()) - cancel() - - retry.Do( - func() error { - ... - }, - retry.Context(ctx), - ) - -#### func Delay - -```go -func Delay(delay time.Duration) Option -``` -Delay set delay between retry default is 100ms - -#### func DelayType - -```go -func DelayType(delayType DelayTypeFunc) Option -``` -DelayType set type of the delay between retries default is BackOff - -#### func LastErrorOnly - -```go -func LastErrorOnly(lastErrorOnly bool) Option -``` -return the direct last error that came from the retried function default is -false (return wrapped errors with everything) - -#### func MaxDelay - -```go -func MaxDelay(maxDelay time.Duration) Option -``` -MaxDelay set maximum delay between retry does not apply by default - -#### func MaxJitter - -```go -func MaxJitter(maxJitter time.Duration) Option -``` -MaxJitter sets the maximum random Jitter between retries for RandomDelay - -#### func OnRetry - -```go -func OnRetry(onRetry OnRetryFunc) Option -``` -OnRetry function callback are called each retry - -log each retry example: - - retry.Do( - func() error { - return errors.New("some error") - }, - retry.OnRetry(func(n uint, err error) { - log.Printf("#%d: %s\n", n, err) - }), - ) - -#### func RetryIf - -```go -func RetryIf(retryIf RetryIfFunc) Option -``` -RetryIf controls whether a retry should be attempted after an error (assuming -there are any retry attempts remaining) - -skip retry if special error example: - - retry.Do( - func() error { - return errors.New("special error") - }, - retry.RetryIf(func(err error) bool { - if err.Error() == "special error" { - return false - } - return true - }) - ) - -By default RetryIf stops execution if the error is wrapped using -`retry.Unrecoverable`, so above example may also be shortened to: - - retry.Do( - func() error { - return retry.Unrecoverable(errors.New("special error")) - } - ) - -#### func UntilSucceeded - -```go -func UntilSucceeded() Option -``` -UntilSucceeded will retry until the retried function succeeds. Equivalent to -setting Attempts(0). - -#### func WithTimer - -```go -func WithTimer(t Timer) Option -``` -WithTimer provides a way to swap out timer module implementations. This -primarily is useful for mocking/testing, where you may not want to explicitly -wait for a set duration for retries. - -example of augmenting time.After with a print statement - - type struct MyTimer {} - - func (t *MyTimer) After(d time.Duration) <- chan time.Time { - fmt.Print("Timer called!") - return time.After(d) - } - - retry.Do( - func() error { ... }, - retry.WithTimer(&MyTimer{}) - ) - -#### func WrapContextErrorWithLastError - -```go -func WrapContextErrorWithLastError(wrapContextErrorWithLastError bool) Option -``` -WrapContextErrorWithLastError allows the context error to be returned wrapped -with the last error that the retried function returned. This is only applicable -when Attempts is set to 0 to retry indefinitly and when using a context to -cancel / timeout - -default is false - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - retry.Do( - func() error { - ... - }, - retry.Context(ctx), - retry.Attempts(0), - retry.WrapContextErrorWithLastError(true), - ) - -#### type RetryIfFunc - -```go -type RetryIfFunc func(error) bool -``` - -Function signature of retry if function - -#### type RetryableFunc - -```go -type RetryableFunc func() error -``` - -Function signature of retryable function - -#### type RetryableFuncWithData - -```go -type RetryableFuncWithData[T any] func() (T, error) -``` - -Function signature of retryable function with data - -#### type Timer - -```go -type Timer interface { - After(time.Duration) <-chan time.Time -} -``` - -Timer represents the timer used to track time for a retry. - -## Contributing - -Contributions are very much welcome. - -### Makefile - -Makefile provides several handy rules, like README.md `generator` , `setup` for prepare build/dev environment, `test`, `cover`, etc... - -Try `make help` for more information. - -### Before pull request - -> maybe you need `make setup` in order to setup environment - -please try: -* run tests (`make test`) -* run linter (`make lint`) -* if your IDE don't automaticaly do `go fmt`, run `go fmt` (`make fmt`) - -### README - -README.md are generate from template [.godocdown.tmpl](.godocdown.tmpl) and code documentation via [godocdown](https://github.com/robertkrimen/godocdown). - -Never edit README.md direct, because your change will be lost. diff --git a/vendor/github.com/avast/retry-go/v4/VERSION b/vendor/github.com/avast/retry-go/v4/VERSION deleted file mode 100644 index 8ac28bf9f0..0000000000 --- a/vendor/github.com/avast/retry-go/v4/VERSION +++ /dev/null @@ -1 +0,0 @@ -4.6.1 diff --git a/vendor/github.com/avast/retry-go/v4/current.txt b/vendor/github.com/avast/retry-go/v4/current.txt deleted file mode 100644 index 406b14fe8e..0000000000 --- a/vendor/github.com/avast/retry-go/v4/current.txt +++ /dev/null @@ -1,26 +0,0 @@ -goos: darwin -goarch: amd64 -pkg: github.com/avast/retry-go/v4 -cpu: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz -BenchmarkDo-16 3 474128987 ns/op 2730 B/op 48 allocs/op -BenchmarkDo-16 3 441499631 ns/op 2725 B/op 47 allocs/op -BenchmarkDo-16 3 449390845 ns/op 2693 B/op 47 allocs/op -BenchmarkDo-16 3 488695333 ns/op 2725 B/op 47 allocs/op -BenchmarkDo-16 2 601685067 ns/op 2704 B/op 48 allocs/op -BenchmarkDo-16 3 336872997 ns/op 2693 B/op 47 allocs/op -BenchmarkDo-16 3 384347911 ns/op 2725 B/op 47 allocs/op -BenchmarkDo-16 3 480906307 ns/op 2693 B/op 47 allocs/op -BenchmarkDo-16 3 455362447 ns/op 2693 B/op 47 allocs/op -BenchmarkDo-16 3 443170384 ns/op 2693 B/op 47 allocs/op -BenchmarkDoNoErrors-16 6872852 159.4 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7650360 161.3 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7235683 159.3 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7465636 160.2 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7549692 160.7 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7510610 159.8 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7438124 160.3 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7416504 160.2 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7356183 160.4 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7393480 160.1 ns/op 208 B/op 4 allocs/op -PASS -ok github.com/avast/retry-go/v4 35.971s diff --git a/vendor/github.com/avast/retry-go/v4/generic.txt b/vendor/github.com/avast/retry-go/v4/generic.txt deleted file mode 100644 index 116a09645f..0000000000 --- a/vendor/github.com/avast/retry-go/v4/generic.txt +++ /dev/null @@ -1,46 +0,0 @@ -goos: darwin -goarch: amd64 -pkg: github.com/avast/retry-go/v4 -cpu: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz -BenchmarkDo-16 3 406306609 ns/op 2701 B/op 48 allocs/op -BenchmarkDo-16 3 419470846 ns/op 2693 B/op 47 allocs/op -BenchmarkDo-16 2 567716303 ns/op 2696 B/op 47 allocs/op -BenchmarkDo-16 2 562713288 ns/op 2696 B/op 47 allocs/op -BenchmarkDo-16 3 418301987 ns/op 2693 B/op 47 allocs/op -BenchmarkDo-16 2 541207332 ns/op 2696 B/op 47 allocs/op -BenchmarkDo-16 2 526211617 ns/op 2696 B/op 47 allocs/op -BenchmarkDo-16 2 517419526 ns/op 2696 B/op 47 allocs/op -BenchmarkDo-16 3 478391497 ns/op 2693 B/op 47 allocs/op -BenchmarkDo-16 3 452548175 ns/op 2725 B/op 47 allocs/op -BenchmarkDoWithData-16 3 463040866 ns/op 2693 B/op 47 allocs/op -BenchmarkDoWithData-16 3 496158943 ns/op 2693 B/op 47 allocs/op -BenchmarkDoWithData-16 3 488367012 ns/op 2725 B/op 47 allocs/op -BenchmarkDoWithData-16 3 454618897 ns/op 2693 B/op 47 allocs/op -BenchmarkDoWithData-16 3 435430056 ns/op 2693 B/op 47 allocs/op -BenchmarkDoWithData-16 2 552289967 ns/op 2744 B/op 48 allocs/op -BenchmarkDoWithData-16 3 569748815 ns/op 2693 B/op 47 allocs/op -BenchmarkDoWithData-16 3 416597207 ns/op 2725 B/op 47 allocs/op -BenchmarkDoWithData-16 3 358455415 ns/op 2725 B/op 47 allocs/op -BenchmarkDoWithData-16 3 455297803 ns/op 2725 B/op 47 allocs/op -BenchmarkDoNoErrors-16 7035135 161.9 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7389806 161.3 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7394016 161.5 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7380039 162.2 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7424865 162.2 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7111860 160.5 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7285305 162.6 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7410627 160.7 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7340961 161.6 ns/op 208 B/op 4 allocs/op -BenchmarkDoNoErrors-16 7295727 164.1 ns/op 208 B/op 4 allocs/op -BenchmarkDoWithDataNoErrors-16 7357304 159.9 ns/op 208 B/op 4 allocs/op -BenchmarkDoWithDataNoErrors-16 6649852 166.9 ns/op 208 B/op 4 allocs/op -BenchmarkDoWithDataNoErrors-16 6938404 176.3 ns/op 208 B/op 4 allocs/op -BenchmarkDoWithDataNoErrors-16 7181965 160.4 ns/op 208 B/op 4 allocs/op -BenchmarkDoWithDataNoErrors-16 7311484 166.2 ns/op 208 B/op 4 allocs/op -BenchmarkDoWithDataNoErrors-16 6939157 169.7 ns/op 208 B/op 4 allocs/op -BenchmarkDoWithDataNoErrors-16 6648344 179.0 ns/op 208 B/op 4 allocs/op -BenchmarkDoWithDataNoErrors-16 6794847 177.0 ns/op 208 B/op 4 allocs/op -BenchmarkDoWithDataNoErrors-16 6782588 171.4 ns/op 208 B/op 4 allocs/op -BenchmarkDoWithDataNoErrors-16 7279119 166.9 ns/op 208 B/op 4 allocs/op -PASS -ok github.com/avast/retry-go/v4 73.128s diff --git a/vendor/github.com/avast/retry-go/v4/options.go b/vendor/github.com/avast/retry-go/v4/options.go deleted file mode 100644 index 5577ee7cbd..0000000000 --- a/vendor/github.com/avast/retry-go/v4/options.go +++ /dev/null @@ -1,280 +0,0 @@ -package retry - -import ( - "context" - "math" - "math/rand" - "time" -) - -// Function signature of retry if function -type RetryIfFunc func(error) bool - -// Function signature of OnRetry function -type OnRetryFunc func(attempt uint, err error) - -// DelayTypeFunc is called to return the next delay to wait after the retriable function fails on `err` after `n` attempts. -type DelayTypeFunc func(n uint, err error, config *Config) time.Duration - -// Timer represents the timer used to track time for a retry. -type Timer interface { - After(time.Duration) <-chan time.Time -} - -type Config struct { - attempts uint - attemptsForError map[error]uint - delay time.Duration - maxDelay time.Duration - maxJitter time.Duration - onRetry OnRetryFunc - retryIf RetryIfFunc - delayType DelayTypeFunc - lastErrorOnly bool - context context.Context - timer Timer - wrapContextErrorWithLastError bool - - maxBackOffN uint -} - -// Option represents an option for retry. -type Option func(*Config) - -func emptyOption(c *Config) {} - -// return the direct last error that came from the retried function -// default is false (return wrapped errors with everything) -func LastErrorOnly(lastErrorOnly bool) Option { - return func(c *Config) { - c.lastErrorOnly = lastErrorOnly - } -} - -// Attempts set count of retry. Setting to 0 will retry until the retried function succeeds. -// default is 10 -func Attempts(attempts uint) Option { - return func(c *Config) { - c.attempts = attempts - } -} - -// UntilSucceeded will retry until the retried function succeeds. Equivalent to setting Attempts(0). -func UntilSucceeded() Option { - return func(c *Config) { - c.attempts = 0 - } -} - -// AttemptsForError sets count of retry in case execution results in given `err` -// Retries for the given `err` are also counted against total retries. -// The retry will stop if any of given retries is exhausted. -// -// added in 4.3.0 -func AttemptsForError(attempts uint, err error) Option { - return func(c *Config) { - c.attemptsForError[err] = attempts - } -} - -// Delay set delay between retry -// default is 100ms -func Delay(delay time.Duration) Option { - return func(c *Config) { - c.delay = delay - } -} - -// MaxDelay set maximum delay between retry -// does not apply by default -func MaxDelay(maxDelay time.Duration) Option { - return func(c *Config) { - c.maxDelay = maxDelay - } -} - -// MaxJitter sets the maximum random Jitter between retries for RandomDelay -func MaxJitter(maxJitter time.Duration) Option { - return func(c *Config) { - c.maxJitter = maxJitter - } -} - -// DelayType set type of the delay between retries -// default is BackOff -func DelayType(delayType DelayTypeFunc) Option { - if delayType == nil { - return emptyOption - } - return func(c *Config) { - c.delayType = delayType - } -} - -// BackOffDelay is a DelayType which increases delay between consecutive retries -func BackOffDelay(n uint, _ error, config *Config) time.Duration { - // 1 << 63 would overflow signed int64 (time.Duration), thus 62. - const max uint = 62 - - if config.maxBackOffN == 0 { - if config.delay <= 0 { - config.delay = 1 - } - - config.maxBackOffN = max - uint(math.Floor(math.Log2(float64(config.delay)))) - } - - if n > config.maxBackOffN { - n = config.maxBackOffN - } - - return config.delay << n -} - -// FixedDelay is a DelayType which keeps delay the same through all iterations -func FixedDelay(_ uint, _ error, config *Config) time.Duration { - return config.delay -} - -// RandomDelay is a DelayType which picks a random delay up to config.maxJitter -func RandomDelay(_ uint, _ error, config *Config) time.Duration { - return time.Duration(rand.Int63n(int64(config.maxJitter))) -} - -// CombineDelay is a DelayType the combines all of the specified delays into a new DelayTypeFunc -func CombineDelay(delays ...DelayTypeFunc) DelayTypeFunc { - const maxInt64 = uint64(math.MaxInt64) - - return func(n uint, err error, config *Config) time.Duration { - var total uint64 - for _, delay := range delays { - total += uint64(delay(n, err, config)) - if total > maxInt64 { - total = maxInt64 - } - } - - return time.Duration(total) - } -} - -// OnRetry function callback are called each retry -// -// log each retry example: -// -// retry.Do( -// func() error { -// return errors.New("some error") -// }, -// retry.OnRetry(func(n uint, err error) { -// log.Printf("#%d: %s\n", n, err) -// }), -// ) -func OnRetry(onRetry OnRetryFunc) Option { - if onRetry == nil { - return emptyOption - } - return func(c *Config) { - c.onRetry = onRetry - } -} - -// RetryIf controls whether a retry should be attempted after an error -// (assuming there are any retry attempts remaining) -// -// skip retry if special error example: -// -// retry.Do( -// func() error { -// return errors.New("special error") -// }, -// retry.RetryIf(func(err error) bool { -// if err.Error() == "special error" { -// return false -// } -// return true -// }) -// ) -// -// By default RetryIf stops execution if the error is wrapped using `retry.Unrecoverable`, -// so above example may also be shortened to: -// -// retry.Do( -// func() error { -// return retry.Unrecoverable(errors.New("special error")) -// } -// ) -func RetryIf(retryIf RetryIfFunc) Option { - if retryIf == nil { - return emptyOption - } - return func(c *Config) { - c.retryIf = retryIf - } -} - -// Context allow to set context of retry -// default are Background context -// -// example of immediately cancellation (maybe it isn't the best example, but it describes behavior enough; I hope) -// -// ctx, cancel := context.WithCancel(context.Background()) -// cancel() -// -// retry.Do( -// func() error { -// ... -// }, -// retry.Context(ctx), -// ) -func Context(ctx context.Context) Option { - return func(c *Config) { - c.context = ctx - } -} - -// WithTimer provides a way to swap out timer module implementations. -// This primarily is useful for mocking/testing, where you may not want to explicitly wait for a set duration -// for retries. -// -// example of augmenting time.After with a print statement -// -// type struct MyTimer {} -// -// func (t *MyTimer) After(d time.Duration) <- chan time.Time { -// fmt.Print("Timer called!") -// return time.After(d) -// } -// -// retry.Do( -// func() error { ... }, -// retry.WithTimer(&MyTimer{}) -// ) -func WithTimer(t Timer) Option { - return func(c *Config) { - c.timer = t - } -} - -// WrapContextErrorWithLastError allows the context error to be returned wrapped with the last error that the -// retried function returned. This is only applicable when Attempts is set to 0 to retry indefinitly and when -// using a context to cancel / timeout -// -// default is false -// -// ctx, cancel := context.WithCancel(context.Background()) -// defer cancel() -// -// retry.Do( -// func() error { -// ... -// }, -// retry.Context(ctx), -// retry.Attempts(0), -// retry.WrapContextErrorWithLastError(true), -// ) -func WrapContextErrorWithLastError(wrapContextErrorWithLastError bool) Option { - return func(c *Config) { - c.wrapContextErrorWithLastError = wrapContextErrorWithLastError - } -} diff --git a/vendor/github.com/avast/retry-go/v4/retry.go b/vendor/github.com/avast/retry-go/v4/retry.go deleted file mode 100644 index 1812a1b03e..0000000000 --- a/vendor/github.com/avast/retry-go/v4/retry.go +++ /dev/null @@ -1,347 +0,0 @@ -/* -Simple library for retry mechanism - -Slightly inspired by [Try::Tiny::Retry](https://metacpan.org/pod/Try::Tiny::Retry) - -# SYNOPSIS - -HTTP GET with retry: - - url := "http://example.com" - var body []byte - - err := retry.Do( - func() error { - resp, err := http.Get(url) - if err != nil { - return err - } - defer resp.Body.Close() - body, err = ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - return nil - }, - ) - - if err != nil { - // handle error - } - - fmt.Println(string(body)) - -HTTP GET with retry with data: - - url := "http://example.com" - - body, err := retry.DoWithData( - func() ([]byte, error) { - resp, err := http.Get(url) - if err != nil { - return nil, err - } - defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - return body, nil - }, - ) - - if err != nil { - // handle error - } - - fmt.Println(string(body)) - -[More examples](https://github.com/avast/retry-go/tree/master/examples) - -# SEE ALSO - -* [giantswarm/retry-go](https://github.com/giantswarm/retry-go) - slightly complicated interface. - -* [sethgrid/pester](https://github.com/sethgrid/pester) - only http retry for http calls with retries and backoff - -* [cenkalti/backoff](https://github.com/cenkalti/backoff) - Go port of the exponential backoff algorithm from Google's HTTP Client Library for Java. Really complicated interface. - -* [rafaeljesus/retry-go](https://github.com/rafaeljesus/retry-go) - looks good, slightly similar as this package, don't have 'simple' `Retry` method - -* [matryer/try](https://github.com/matryer/try) - very popular package, nonintuitive interface (for me) - -# BREAKING CHANGES - -* 4.0.0 - - infinity retry is possible by set `Attempts(0)` by PR [#49](https://github.com/avast/retry-go/pull/49) - -* 3.0.0 - - `DelayTypeFunc` accepts a new parameter `err` - this breaking change affects only your custom Delay Functions. This change allow [make delay functions based on error](examples/delay_based_on_error_test.go). - -* 1.0.2 -> 2.0.0 - - argument of `retry.Delay` is final delay (no multiplication by `retry.Units` anymore) - - function `retry.Units` are removed - - [more about this breaking change](https://github.com/avast/retry-go/issues/7) - -* 0.3.0 -> 1.0.0 - - `retry.Retry` function are changed to `retry.Do` function - - `retry.RetryCustom` (OnRetry) and `retry.RetryCustomWithOpts` functions are now implement via functions produces Options (aka `retry.OnRetry`) -*/ -package retry - -import ( - "context" - "errors" - "fmt" - "strings" - "time" -) - -// Function signature of retryable function -type RetryableFunc func() error - -// Function signature of retryable function with data -type RetryableFuncWithData[T any] func() (T, error) - -// Default timer is a wrapper around time.After -type timerImpl struct{} - -func (t *timerImpl) After(d time.Duration) <-chan time.Time { - return time.After(d) -} - -func Do(retryableFunc RetryableFunc, opts ...Option) error { - retryableFuncWithData := func() (any, error) { - return nil, retryableFunc() - } - - _, err := DoWithData(retryableFuncWithData, opts...) - return err -} - -func DoWithData[T any](retryableFunc RetryableFuncWithData[T], opts ...Option) (T, error) { - var n uint - var emptyT T - - // default - config := newDefaultRetryConfig() - - // apply opts - for _, opt := range opts { - opt(config) - } - - if err := config.context.Err(); err != nil { - return emptyT, err - } - - // Setting attempts to 0 means we'll retry until we succeed - var lastErr error - if config.attempts == 0 { - for { - t, err := retryableFunc() - if err == nil { - return t, nil - } - - if !IsRecoverable(err) { - return emptyT, err - } - - if !config.retryIf(err) { - return emptyT, err - } - - lastErr = err - - config.onRetry(n, err) - n++ - select { - case <-config.timer.After(delay(config, n, err)): - case <-config.context.Done(): - if config.wrapContextErrorWithLastError { - return emptyT, Error{config.context.Err(), lastErr} - } - return emptyT, config.context.Err() - } - } - } - - errorLog := Error{} - - attemptsForError := make(map[error]uint, len(config.attemptsForError)) - for err, attempts := range config.attemptsForError { - attemptsForError[err] = attempts - } - - shouldRetry := true - for shouldRetry { - t, err := retryableFunc() - if err == nil { - return t, nil - } - - errorLog = append(errorLog, unpackUnrecoverable(err)) - - if !config.retryIf(err) { - break - } - - config.onRetry(n, err) - - for errToCheck, attempts := range attemptsForError { - if errors.Is(err, errToCheck) { - attempts-- - attemptsForError[errToCheck] = attempts - shouldRetry = shouldRetry && attempts > 0 - } - } - - // if this is last attempt - don't wait - if n == config.attempts-1 { - break - } - n++ - select { - case <-config.timer.After(delay(config, n, err)): - case <-config.context.Done(): - if config.lastErrorOnly { - return emptyT, config.context.Err() - } - - return emptyT, append(errorLog, config.context.Err()) - } - - shouldRetry = shouldRetry && n < config.attempts - } - - if config.lastErrorOnly { - return emptyT, errorLog.Unwrap() - } - return emptyT, errorLog -} - -func newDefaultRetryConfig() *Config { - return &Config{ - attempts: uint(10), - attemptsForError: make(map[error]uint), - delay: 100 * time.Millisecond, - maxJitter: 100 * time.Millisecond, - onRetry: func(n uint, err error) {}, - retryIf: IsRecoverable, - delayType: CombineDelay(BackOffDelay, RandomDelay), - lastErrorOnly: false, - context: context.Background(), - timer: &timerImpl{}, - } -} - -// Error type represents list of errors in retry -type Error []error - -// Error method return string representation of Error -// It is an implementation of error interface -func (e Error) Error() string { - logWithNumber := make([]string, len(e)) - for i, l := range e { - if l != nil { - logWithNumber[i] = fmt.Sprintf("#%d: %s", i+1, l.Error()) - } - } - - return fmt.Sprintf("All attempts fail:\n%s", strings.Join(logWithNumber, "\n")) -} - -func (e Error) Is(target error) bool { - for _, v := range e { - if errors.Is(v, target) { - return true - } - } - return false -} - -func (e Error) As(target interface{}) bool { - for _, v := range e { - if errors.As(v, target) { - return true - } - } - return false -} - -/* -Unwrap the last error for compatibility with `errors.Unwrap()`. -When you need to unwrap all errors, you should use `WrappedErrors()` instead. - - err := Do( - func() error { - return errors.New("original error") - }, - Attempts(1), - ) - - fmt.Println(errors.Unwrap(err)) # "original error" is printed - -Added in version 4.2.0. -*/ -func (e Error) Unwrap() error { - return e[len(e)-1] -} - -// WrappedErrors returns the list of errors that this Error is wrapping. -// It is an implementation of the `errwrap.Wrapper` interface -// in package [errwrap](https://github.com/hashicorp/errwrap) so that -// `retry.Error` can be used with that library. -func (e Error) WrappedErrors() []error { - return e -} - -type unrecoverableError struct { - error -} - -func (e unrecoverableError) Error() string { - if e.error == nil { - return "unrecoverable error" - } - return e.error.Error() -} - -func (e unrecoverableError) Unwrap() error { - return e.error -} - -// Unrecoverable wraps an error in `unrecoverableError` struct -func Unrecoverable(err error) error { - return unrecoverableError{err} -} - -// IsRecoverable checks if error is an instance of `unrecoverableError` -func IsRecoverable(err error) bool { - return !errors.Is(err, unrecoverableError{}) -} - -// Adds support for errors.Is usage on unrecoverableError -func (unrecoverableError) Is(err error) bool { - _, isUnrecoverable := err.(unrecoverableError) - return isUnrecoverable -} - -func unpackUnrecoverable(err error) error { - if unrecoverable, isUnrecoverable := err.(unrecoverableError); isUnrecoverable { - return unrecoverable.error - } - - return err -} - -func delay(config *Config, n uint, err error) time.Duration { - delayTime := config.delayType(n, err, config) - if config.maxDelay > 0 && delayTime > config.maxDelay { - delayTime = config.maxDelay - } - - return delayTime -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/config.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/config.go index a015cc5b20..3219517dab 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/config.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/config.go @@ -6,6 +6,7 @@ import ( smithybearer "github.com/aws/smithy-go/auth/bearer" "github.com/aws/smithy-go/logging" "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" ) // HTTPClient provides the interface to provide custom HTTPClients. Generally @@ -192,6 +193,17 @@ type Config struct { // This variable is sourced from environment variable AWS_RESPONSE_CHECKSUM_VALIDATION or // the shared config profile attribute "response_checksum_validation". ResponseChecksumValidation ResponseChecksumValidation + + // Registry of HTTP interceptors. + Interceptors smithyhttp.InterceptorRegistry + + // Priority list of preferred auth scheme IDs. + AuthSchemePreference []string + + // ServiceOptions provides service specific configuration options that will be applied + // when constructing clients for specific services. Each callback function receives the service ID + // and the service's Options struct, allowing for dynamic configuration based on the service. + ServiceOptions []func(string, any) } // NewConfig returns a new Config pointer that can be chained with builder diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go index d0f3094bc8..89449f67b2 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go @@ -3,4 +3,4 @@ package aws // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.36.5" +const goModuleVersion = "1.38.1" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go index 52d59b04bf..5549922ab8 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go @@ -260,7 +260,7 @@ func (r *Attempt) handleAttempt( // Get a retry token that will be released after the releaseRetryToken, retryTokenErr := r.retryer.GetRetryToken(ctx, err) if retryTokenErr != nil { - return out, attemptResult, nopRelease, retryTokenErr + return out, attemptResult, nopRelease, errors.Join(err, retryTokenErr) } //------------------------------ diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md index a3e49f8931..7c5a87fbe7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/CHANGELOG.md @@ -1,3 +1,41 @@ +# v1.31.3 (2025-08-26) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.31.2 (2025-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.31.1 (2025-08-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.31.0 (2025-08-11) + +* **Feature**: Add support for configuring per-service Options via callback on global config. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.3 (2025-08-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.2 (2025-07-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.1 (2025-07-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.0 (2025-07-28) + +* **Feature**: Add support for HTTP interceptors. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.29.18 (2025-07-19) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.29.17 (2025-06-17) * **Dependency Update**: Update to smithy-go v1.22.4. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/auth_scheme_preference.go b/vendor/github.com/aws/aws-sdk-go-v2/config/auth_scheme_preference.go new file mode 100644 index 0000000000..99e1236614 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/auth_scheme_preference.go @@ -0,0 +1,19 @@ +package config + +import "strings" + +func toAuthSchemePreferenceList(cfg string) []string { + if len(cfg) == 0 { + return nil + } + parts := strings.Split(cfg, ",") + ids := make([]string, 0, len(parts)) + + for _, p := range parts { + if id := strings.TrimSpace(p); len(id) > 0 { + ids = append(ids, id) + } + } + + return ids +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/config.go b/vendor/github.com/aws/aws-sdk-go-v2/config/config.go index 09d9b63116..caa20a158a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/config.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/config.go @@ -89,6 +89,13 @@ var defaultAWSConfigResolvers = []awsConfigResolver{ // Sets the ResponseChecksumValidation if present in env var or shared config profile resolveResponseChecksumValidation, + + resolveInterceptors, + + resolveAuthSchemePreference, + + // Sets the ServiceOptions if present in LoadOptions + resolveServiceOptions, } // A Config represents a generic configuration value or set of values. This type diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/env_config.go b/vendor/github.com/aws/aws-sdk-go-v2/config/env_config.go index 9db507e38e..e932c63dfb 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/env_config.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/env_config.go @@ -85,6 +85,8 @@ const ( awsRequestChecksumCalculation = "AWS_REQUEST_CHECKSUM_CALCULATION" awsResponseChecksumValidation = "AWS_RESPONSE_CHECKSUM_VALIDATION" + + awsAuthSchemePreferenceEnv = "AWS_AUTH_SCHEME_PREFERENCE" ) var ( @@ -304,6 +306,9 @@ type EnvConfig struct { // Indicates whether response checksum should be validated ResponseChecksumValidation aws.ResponseChecksumValidation + + // Priority list of preferred auth scheme names (e.g. sigv4a). + AuthSchemePreference []string } // loadEnvConfig reads configuration values from the OS's environment variables. @@ -415,6 +420,8 @@ func NewEnvConfig() (EnvConfig, error) { return cfg, err } + cfg.AuthSchemePreference = toAuthSchemePreferenceList(os.Getenv(awsAuthSchemePreferenceEnv)) + return cfg, nil } @@ -916,3 +923,10 @@ func (c EnvConfig) GetS3DisableExpressAuth() (value, ok bool) { return *c.S3DisableExpressAuth, true } + +func (c EnvConfig) getAuthSchemePreference() ([]string, bool) { + if len(c.AuthSchemePreference) > 0 { + return c.AuthSchemePreference, true + } + return nil, false +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go index ef19c0a7f5..0e8449a5f0 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/go_module_metadata.go @@ -3,4 +3,4 @@ package config // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.29.17" +const goModuleVersion = "1.31.3" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/load_options.go b/vendor/github.com/aws/aws-sdk-go-v2/config/load_options.go index 0810ecf16a..7cb5a13658 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/load_options.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/load_options.go @@ -14,6 +14,7 @@ import ( smithybearer "github.com/aws/smithy-go/auth/bearer" "github.com/aws/smithy-go/logging" "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" ) // LoadOptionsFunc is a type alias for LoadOptions functional option @@ -228,6 +229,17 @@ type LoadOptions struct { // Service endpoint override. This value is not necessarily final and is // passed to the service's EndpointResolverV2 for further delegation. BaseEndpoint string + + // Registry of operation interceptors. + Interceptors smithyhttp.InterceptorRegistry + + // Priority list of preferred auth scheme names (e.g. sigv4a). + AuthSchemePreference []string + + // ServiceOptions provides service specific configuration options that will be applied + // when constructing clients for specific services. Each callback function receives the service ID + // and the service's Options struct, allowing for dynamic configuration based on the service. + ServiceOptions []func(string, any) } func (o LoadOptions) getDefaultsMode(ctx context.Context) (aws.DefaultsMode, bool, error) { @@ -307,6 +319,10 @@ func (o LoadOptions) getBaseEndpoint(context.Context) (string, bool, error) { return o.BaseEndpoint, o.BaseEndpoint != "", nil } +func (o LoadOptions) getServiceOptions(context.Context) ([]func(string, any), bool, error) { + return o.ServiceOptions, len(o.ServiceOptions) > 0, nil +} + // GetServiceBaseEndpoint satisfies (internal/configsources).ServiceBaseEndpointProvider. // // The sdkID value is unused because LoadOptions only supports setting a GLOBAL @@ -1207,3 +1223,133 @@ func WithBaseEndpoint(v string) LoadOptionsFunc { return nil } } + +// WithServiceOptions is a helper function to construct functional options +// that sets ServiceOptions on config's LoadOptions. +func WithServiceOptions(callbacks ...func(string, any)) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.ServiceOptions = append(o.ServiceOptions, callbacks...) + return nil + } +} + +// WithBeforeExecution adds the BeforeExecutionInterceptor to config. +func WithBeforeExecution(i smithyhttp.BeforeExecutionInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.BeforeExecution = append(o.Interceptors.BeforeExecution, i) + return nil + } +} + +// WithBeforeSerialization adds the BeforeSerializationInterceptor to config. +func WithBeforeSerialization(i smithyhttp.BeforeSerializationInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.BeforeSerialization = append(o.Interceptors.BeforeSerialization, i) + return nil + } +} + +// WithAfterSerialization adds the AfterSerializationInterceptor to config. +func WithAfterSerialization(i smithyhttp.AfterSerializationInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.AfterSerialization = append(o.Interceptors.AfterSerialization, i) + return nil + } +} + +// WithBeforeRetryLoop adds the BeforeRetryLoopInterceptor to config. +func WithBeforeRetryLoop(i smithyhttp.BeforeRetryLoopInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.BeforeRetryLoop = append(o.Interceptors.BeforeRetryLoop, i) + return nil + } +} + +// WithBeforeAttempt adds the BeforeAttemptInterceptor to config. +func WithBeforeAttempt(i smithyhttp.BeforeAttemptInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.BeforeAttempt = append(o.Interceptors.BeforeAttempt, i) + return nil + } +} + +// WithBeforeSigning adds the BeforeSigningInterceptor to config. +func WithBeforeSigning(i smithyhttp.BeforeSigningInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.BeforeSigning = append(o.Interceptors.BeforeSigning, i) + return nil + } +} + +// WithAfterSigning adds the AfterSigningInterceptor to config. +func WithAfterSigning(i smithyhttp.AfterSigningInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.AfterSigning = append(o.Interceptors.AfterSigning, i) + return nil + } +} + +// WithBeforeTransmit adds the BeforeTransmitInterceptor to config. +func WithBeforeTransmit(i smithyhttp.BeforeTransmitInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.BeforeTransmit = append(o.Interceptors.BeforeTransmit, i) + return nil + } +} + +// WithAfterTransmit adds the AfterTransmitInterceptor to config. +func WithAfterTransmit(i smithyhttp.AfterTransmitInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.AfterTransmit = append(o.Interceptors.AfterTransmit, i) + return nil + } +} + +// WithBeforeDeserialization adds the BeforeDeserializationInterceptor to config. +func WithBeforeDeserialization(i smithyhttp.BeforeDeserializationInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.BeforeDeserialization = append(o.Interceptors.BeforeDeserialization, i) + return nil + } +} + +// WithAfterDeserialization adds the AfterDeserializationInterceptor to config. +func WithAfterDeserialization(i smithyhttp.AfterDeserializationInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.AfterDeserialization = append(o.Interceptors.AfterDeserialization, i) + return nil + } +} + +// WithAfterAttempt adds the AfterAttemptInterceptor to config. +func WithAfterAttempt(i smithyhttp.AfterAttemptInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.AfterAttempt = append(o.Interceptors.AfterAttempt, i) + return nil + } +} + +// WithAfterExecution adds the AfterExecutionInterceptor to config. +func WithAfterExecution(i smithyhttp.AfterExecutionInterceptor) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.Interceptors.AfterExecution = append(o.Interceptors.AfterExecution, i) + return nil + } +} + +// WithAuthSchemePreference sets the priority order of auth schemes on config. +// +// Schemes are expressed as names e.g. sigv4a or sigv4. +func WithAuthSchemePreference(schemeIDs ...string) LoadOptionsFunc { + return func(o *LoadOptions) error { + o.AuthSchemePreference = schemeIDs + return nil + } +} + +func (o LoadOptions) getAuthSchemePreference() ([]string, bool) { + if len(o.AuthSchemePreference) > 0 { + return o.AuthSchemePreference, true + } + return nil, false +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/provider.go b/vendor/github.com/aws/aws-sdk-go-v2/config/provider.go index a8ff40d846..18b9b5ad20 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/provider.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/provider.go @@ -753,3 +753,34 @@ func getRetryMode(ctx context.Context, configs configs) (v aws.RetryMode, found } return v, found, err } + +func getAuthSchemePreference(ctx context.Context, configs configs) ([]string, bool) { + type provider interface { + getAuthSchemePreference() ([]string, bool) + } + + for _, cfg := range configs { + if p, ok := cfg.(provider); ok { + if v, ok := p.getAuthSchemePreference(); ok { + return v, true + } + } + } + return nil, false +} + +type serviceOptionsProvider interface { + getServiceOptions(ctx context.Context) ([]func(string, any), bool, error) +} + +func getServiceOptions(ctx context.Context, configs configs) (v []func(string, any), found bool, err error) { + for _, c := range configs { + if p, ok := c.(serviceOptionsProvider); ok { + v, found, err = p.getServiceOptions(ctx) + if err != nil || found { + break + } + } + } + return v, found, err +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/resolve.go b/vendor/github.com/aws/aws-sdk-go-v2/config/resolve.go index a68bd0993f..92a16d718d 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/resolve.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/resolve.go @@ -411,3 +411,34 @@ func resolveRetryMode(ctx context.Context, cfg *aws.Config, configs configs) err return nil } + +func resolveInterceptors(ctx context.Context, cfg *aws.Config, configs configs) error { + // LoadOptions is the only thing that you can really configure interceptors + // on so just check that directly. + for _, c := range configs { + if loadopts, ok := c.(LoadOptions); ok { + cfg.Interceptors = loadopts.Interceptors.Copy() + } + } + return nil +} + +func resolveAuthSchemePreference(ctx context.Context, cfg *aws.Config, configs configs) error { + if pref, ok := getAuthSchemePreference(ctx, configs); ok { + cfg.AuthSchemePreference = pref + } + return nil +} + +func resolveServiceOptions(ctx context.Context, cfg *aws.Config, configs configs) error { + serviceOptions, found, err := getServiceOptions(ctx, configs) + if err != nil { + return err + } + if !found { + return nil + } + + cfg.ServiceOptions = serviceOptions + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/config/shared_config.go b/vendor/github.com/aws/aws-sdk-go-v2/config/shared_config.go index 00b071fe6f..97be3f7569 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/config/shared_config.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/config/shared_config.go @@ -123,6 +123,8 @@ const ( responseChecksumValidationKey = "response_checksum_validation" checksumWhenSupported = "when_supported" checksumWhenRequired = "when_required" + + authSchemePreferenceKey = "auth_scheme_preference" ) // defaultSharedConfigProfile allows for swapping the default profile for testing @@ -357,6 +359,9 @@ type SharedConfig struct { // ResponseChecksumValidation indicates if the response checksum should be validated ResponseChecksumValidation aws.ResponseChecksumValidation + + // Priority list of preferred auth scheme names (e.g. sigv4a). + AuthSchemePreference []string } func (c SharedConfig) getDefaultsMode(ctx context.Context) (value aws.DefaultsMode, ok bool, err error) { @@ -890,6 +895,8 @@ func mergeSections(dst *ini.Sections, src ini.Sections) error { ssoRegionKey, ssoRoleNameKey, ssoStartURLKey, + + authSchemePreferenceKey, } for i := range stringKeys { if err := mergeStringKey(&srcSection, &dstSection, sectionName, stringKeys[i]); err != nil { @@ -1166,6 +1173,8 @@ func (c *SharedConfig) setFromIniSection(profile string, section ini.Section) er updateString(&c.ServicesSectionName, section, servicesSectionKey) + c.AuthSchemePreference = toAuthSchemePreferenceList(section.String(authSchemePreferenceKey)) + return nil } @@ -1678,3 +1687,10 @@ func updateUseFIPSEndpoint(dst *aws.FIPSEndpointState, section ini.Section, key return } + +func (c SharedConfig) getAuthSchemePreference() ([]string, bool) { + if len(c.AuthSchemePreference) > 0 { + return c.AuthSchemePreference, true + } + return nil, false +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md index 1df7649ff7..6a3ab82df5 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/CHANGELOG.md @@ -1,3 +1,40 @@ +# v1.18.7 (2025-08-26) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.6 (2025-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.5 (2025-08-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.4 (2025-08-11) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.3 (2025-08-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.2 (2025-07-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.1 (2025-07-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.0 (2025-07-28) + +* **Feature**: Add support for HTTP interceptors. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.71 (2025-07-19) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.17.70 (2025-06-17) * **Dependency Update**: Update to smithy-go v1.22.4. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go index 729137d857..9d3c95a4e8 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/credentials/go_module_metadata.go @@ -3,4 +3,4 @@ package credentials // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.17.70" +const goModuleVersion = "1.18.7" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md index b204386b53..dcda88e206 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/CHANGELOG.md @@ -1,3 +1,32 @@ +# v1.18.4 (2025-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.3 (2025-08-11) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.2 (2025-08-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.1 (2025-07-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.0 (2025-07-29) + +* **Feature**: Add config switch `DisableDefaultMaxBackoff` that allows you to disable the default maximum backoff (1 second) for IMDS calls retry attempt + +# v1.17.0 (2025-07-28) + +* **Feature**: Add support for HTTP interceptors. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.33 (2025-07-19) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.16.32 (2025-06-17) * **Dependency Update**: Update to smithy-go v1.22.4. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_client.go index 3f4a10e2c1..75edc4e9d6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/api_client.go @@ -75,7 +75,9 @@ func New(options Options, optFns ...func(*Options)) *Client { if options.Retryer == nil { options.Retryer = retry.NewStandard() } - options.Retryer = retry.AddWithMaxBackoffDelay(options.Retryer, 1*time.Second) + if !options.DisableDefaultMaxBackoff { + options.Retryer = retry.AddWithMaxBackoffDelay(options.Retryer, 1*time.Second) + } if options.ClientEnableState == ClientDefaultEnableState { if v := os.Getenv(disableClientEnvVar); strings.EqualFold(v, "true") { @@ -189,6 +191,10 @@ type Options struct { // can disable that behavior with this setting. DisableDefaultTimeout bool + // By default all IMDS client operations enforce a 1-second retry delay at maximum. + // You can disable that behavior with this setting. + DisableDefaultMaxBackoff bool + // provides the caching of API tokens used for operation calls. If unset, // the API token will not be retrieved for the operation. tokenProvider *tokenProvider diff --git a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go index ebd98386e0..48db67d7e2 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/feature/ec2/imds/go_module_metadata.go @@ -3,4 +3,4 @@ package imds // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.16.32" +const goModuleVersion = "1.18.4" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md index a9d68c515b..48b7efd9d6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md @@ -1,3 +1,28 @@ +# v1.4.4 (2025-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.4.3 (2025-08-11) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.4.2 (2025-08-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.4.1 (2025-07-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.4.0 (2025-07-28) + +* **Feature**: Add support for HTTP interceptors. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.37 (2025-07-19) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.3.36 (2025-06-17) * **Dependency Update**: Update to smithy-go v1.22.4. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go index dfc815100b..e304ef67cf 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go @@ -3,4 +3,4 @@ package configsources // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.3.36" +const goModuleVersion = "1.4.4" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go index 5f0779997d..83e5ac62bf 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go @@ -11,7 +11,7 @@ func GetPartition(region string) *PartitionConfig { var partitions = []Partition{ { ID: "aws", - RegionRegex: "^(us|eu|ap|sa|ca|me|af|il)\\-\\w+\\-\\d+$", + RegionRegex: "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", DefaultConfig: PartitionConfig{ Name: "aws", DnsSuffix: "amazonaws.com", @@ -35,6 +35,13 @@ var partitions = []Partition{ SupportsFIPS: nil, SupportsDualStack: nil, }, + "ap-east-2": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, "ap-northeast-1": { Name: nil, DnsSuffix: nil, @@ -98,6 +105,20 @@ var partitions = []Partition{ SupportsFIPS: nil, SupportsDualStack: nil, }, + "ap-southeast-5": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "ap-southeast-7": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, "aws-global": { Name: nil, DnsSuffix: nil, @@ -196,6 +217,13 @@ var partitions = []Partition{ SupportsFIPS: nil, SupportsDualStack: nil, }, + "mx-central-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, "sa-east-1": { Name: nil, DnsSuffix: nil, @@ -269,32 +297,18 @@ var partitions = []Partition{ }, }, { - ID: "aws-us-gov", - RegionRegex: "^us\\-gov\\-\\w+\\-\\d+$", + ID: "aws-eusc", + RegionRegex: "^eusc\\-(de)\\-\\w+\\-\\d+$", DefaultConfig: PartitionConfig{ - Name: "aws-us-gov", - DnsSuffix: "amazonaws.com", - DualStackDnsSuffix: "api.aws", + Name: "aws-eusc", + DnsSuffix: "amazonaws.eu", + DualStackDnsSuffix: "api.amazonwebservices.eu", SupportsFIPS: true, - SupportsDualStack: true, - ImplicitGlobalRegion: "us-gov-west-1", + SupportsDualStack: false, + ImplicitGlobalRegion: "eusc-de-east-1", }, Regions: map[string]RegionOverrides{ - "aws-us-gov-global": { - Name: nil, - DnsSuffix: nil, - DualStackDnsSuffix: nil, - SupportsFIPS: nil, - SupportsDualStack: nil, - }, - "us-gov-east-1": { - Name: nil, - DnsSuffix: nil, - DualStackDnsSuffix: nil, - SupportsFIPS: nil, - SupportsDualStack: nil, - }, - "us-gov-west-1": { + "eusc-de-east-1": { Name: nil, DnsSuffix: nil, DualStackDnsSuffix: nil, @@ -309,7 +323,7 @@ var partitions = []Partition{ DefaultConfig: PartitionConfig{ Name: "aws-iso", DnsSuffix: "c2s.ic.gov", - DualStackDnsSuffix: "c2s.ic.gov", + DualStackDnsSuffix: "api.aws.ic.gov", SupportsFIPS: true, SupportsDualStack: false, ImplicitGlobalRegion: "us-iso-east-1", @@ -344,7 +358,7 @@ var partitions = []Partition{ DefaultConfig: PartitionConfig{ Name: "aws-iso-b", DnsSuffix: "sc2s.sgov.gov", - DualStackDnsSuffix: "sc2s.sgov.gov", + DualStackDnsSuffix: "api.aws.scloud", SupportsFIPS: true, SupportsDualStack: false, ImplicitGlobalRegion: "us-isob-east-1", @@ -372,12 +386,19 @@ var partitions = []Partition{ DefaultConfig: PartitionConfig{ Name: "aws-iso-e", DnsSuffix: "cloud.adc-e.uk", - DualStackDnsSuffix: "cloud.adc-e.uk", + DualStackDnsSuffix: "api.cloud-aws.adc-e.uk", SupportsFIPS: true, SupportsDualStack: false, ImplicitGlobalRegion: "eu-isoe-west-1", }, Regions: map[string]RegionOverrides{ + "aws-iso-e-global": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, "eu-isoe-west-1": { Name: nil, DnsSuffix: nil, @@ -393,11 +414,68 @@ var partitions = []Partition{ DefaultConfig: PartitionConfig{ Name: "aws-iso-f", DnsSuffix: "csp.hci.ic.gov", - DualStackDnsSuffix: "csp.hci.ic.gov", + DualStackDnsSuffix: "api.aws.hci.ic.gov", SupportsFIPS: true, SupportsDualStack: false, ImplicitGlobalRegion: "us-isof-south-1", }, - Regions: map[string]RegionOverrides{}, + Regions: map[string]RegionOverrides{ + "aws-iso-f-global": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-isof-east-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-isof-south-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + }, + }, + { + ID: "aws-us-gov", + RegionRegex: "^us\\-gov\\-\\w+\\-\\d+$", + DefaultConfig: PartitionConfig{ + Name: "aws-us-gov", + DnsSuffix: "amazonaws.com", + DualStackDnsSuffix: "api.aws", + SupportsFIPS: true, + SupportsDualStack: true, + ImplicitGlobalRegion: "us-gov-west-1", + }, + Regions: map[string]RegionOverrides{ + "aws-us-gov-global": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-gov-east-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + "us-gov-west-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, + }, }, } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json index 456b07fca6..299cb22041 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json @@ -54,7 +54,7 @@ "description" : "Asia Pacific (Thailand)" }, "aws-global" : { - "description" : "AWS Standard global region" + "description" : "aws global region" }, "ca-central-1" : { "description" : "Canada (Central)" @@ -127,7 +127,7 @@ "regionRegex" : "^cn\\-\\w+\\-\\d+$", "regions" : { "aws-cn-global" : { - "description" : "AWS China global region" + "description" : "aws-cn global region" }, "cn-north-1" : { "description" : "China (Beijing)" @@ -137,32 +137,26 @@ } } }, { - "id" : "aws-us-gov", + "id" : "aws-eusc", "outputs" : { - "dnsSuffix" : "amazonaws.com", - "dualStackDnsSuffix" : "api.aws", - "implicitGlobalRegion" : "us-gov-west-1", - "name" : "aws-us-gov", - "supportsDualStack" : true, + "dnsSuffix" : "amazonaws.eu", + "dualStackDnsSuffix" : "api.amazonwebservices.eu", + "implicitGlobalRegion" : "eusc-de-east-1", + "name" : "aws-eusc", + "supportsDualStack" : false, "supportsFIPS" : true }, - "regionRegex" : "^us\\-gov\\-\\w+\\-\\d+$", + "regionRegex" : "^eusc\\-(de)\\-\\w+\\-\\d+$", "regions" : { - "aws-us-gov-global" : { - "description" : "AWS GovCloud (US) global region" - }, - "us-gov-east-1" : { - "description" : "AWS GovCloud (US-East)" - }, - "us-gov-west-1" : { - "description" : "AWS GovCloud (US-West)" + "eusc-de-east-1" : { + "description" : "EU (Germany)" } } }, { "id" : "aws-iso", "outputs" : { "dnsSuffix" : "c2s.ic.gov", - "dualStackDnsSuffix" : "c2s.ic.gov", + "dualStackDnsSuffix" : "api.aws.ic.gov", "implicitGlobalRegion" : "us-iso-east-1", "name" : "aws-iso", "supportsDualStack" : false, @@ -171,7 +165,7 @@ "regionRegex" : "^us\\-iso\\-\\w+\\-\\d+$", "regions" : { "aws-iso-global" : { - "description" : "AWS ISO (US) global region" + "description" : "aws-iso global region" }, "us-iso-east-1" : { "description" : "US ISO East" @@ -184,7 +178,7 @@ "id" : "aws-iso-b", "outputs" : { "dnsSuffix" : "sc2s.sgov.gov", - "dualStackDnsSuffix" : "sc2s.sgov.gov", + "dualStackDnsSuffix" : "api.aws.scloud", "implicitGlobalRegion" : "us-isob-east-1", "name" : "aws-iso-b", "supportsDualStack" : false, @@ -193,7 +187,7 @@ "regionRegex" : "^us\\-isob\\-\\w+\\-\\d+$", "regions" : { "aws-iso-b-global" : { - "description" : "AWS ISOB (US) global region" + "description" : "aws-iso-b global region" }, "us-isob-east-1" : { "description" : "US ISOB East (Ohio)" @@ -203,7 +197,7 @@ "id" : "aws-iso-e", "outputs" : { "dnsSuffix" : "cloud.adc-e.uk", - "dualStackDnsSuffix" : "cloud.adc-e.uk", + "dualStackDnsSuffix" : "api.cloud-aws.adc-e.uk", "implicitGlobalRegion" : "eu-isoe-west-1", "name" : "aws-iso-e", "supportsDualStack" : false, @@ -212,7 +206,7 @@ "regionRegex" : "^eu\\-isoe\\-\\w+\\-\\d+$", "regions" : { "aws-iso-e-global" : { - "description" : "AWS ISOE (Europe) global region" + "description" : "aws-iso-e global region" }, "eu-isoe-west-1" : { "description" : "EU ISOE West" @@ -222,7 +216,7 @@ "id" : "aws-iso-f", "outputs" : { "dnsSuffix" : "csp.hci.ic.gov", - "dualStackDnsSuffix" : "csp.hci.ic.gov", + "dualStackDnsSuffix" : "api.aws.hci.ic.gov", "implicitGlobalRegion" : "us-isof-south-1", "name" : "aws-iso-f", "supportsDualStack" : false, @@ -231,7 +225,7 @@ "regionRegex" : "^us\\-isof\\-\\w+\\-\\d+$", "regions" : { "aws-iso-f-global" : { - "description" : "AWS ISOF global region" + "description" : "aws-iso-f global region" }, "us-isof-east-1" : { "description" : "US ISOF EAST" @@ -241,19 +235,25 @@ } } }, { - "id" : "aws-eusc", + "id" : "aws-us-gov", "outputs" : { - "dnsSuffix" : "amazonaws.eu", - "dualStackDnsSuffix" : "amazonaws.eu", - "implicitGlobalRegion" : "eusc-de-east-1", - "name" : "aws-eusc", - "supportsDualStack" : false, + "dnsSuffix" : "amazonaws.com", + "dualStackDnsSuffix" : "api.aws", + "implicitGlobalRegion" : "us-gov-west-1", + "name" : "aws-us-gov", + "supportsDualStack" : true, "supportsFIPS" : true }, - "regionRegex" : "^eusc\\-(de)\\-\\w+\\-\\d+$", + "regionRegex" : "^us\\-gov\\-\\w+\\-\\d+$", "regions" : { - "eusc-de-east-1" : { - "description" : "EU (Germany)" + "aws-us-gov-global" : { + "description" : "aws-us-gov global region" + }, + "us-gov-east-1" : { + "description" : "AWS GovCloud (US-East)" + }, + "us-gov-west-1" : { + "description" : "AWS GovCloud (US-West)" } } } ], diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md index 01dc55c873..ec7d54beff 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md @@ -1,3 +1,28 @@ +# v2.7.4 (2025-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.7.3 (2025-08-11) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.7.2 (2025-08-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.7.1 (2025-07-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.7.0 (2025-07-28) + +* **Feature**: Add support for HTTP interceptors. +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.37 (2025-07-19) + +* **Dependency Update**: Updated to the latest SDK module versions + # v2.6.36 (2025-06-17) * **Dependency Update**: Update to smithy-go v1.22.4. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go index 44c39bc0ac..e7b4e1cd18 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go @@ -3,4 +3,4 @@ package endpoints // goModuleVersion is the tagged release for this module -const goModuleVersion = "2.6.36" +const goModuleVersion = "2.7.4" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/CHANGELOG.md index 4c2604e6b5..41abdb8aa6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/CHANGELOG.md @@ -1,3 +1,58 @@ +# v1.45.1 (2025-06-17) + +* **Dependency Update**: Update to smithy-go v1.22.4. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.45.0 (2025-06-16) + +* **Feature**: The `DescribeImageScanning` API now includes `lastInUseAt` and `InUseCount` fields that can be used to prioritize vulnerability remediation for images that are actively being used. + +# v1.44.2 (2025-06-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.44.1 (2025-06-06) + +* No change notes available for this release. + +# v1.44.0 (2025-04-30) + +* **Feature**: Adds dualstack support for Amazon Elastic Container Registry (Amazon ECR). + +# v1.43.3 (2025-04-10) + +* No change notes available for this release. + +# v1.43.2 (2025-04-03) + +* No change notes available for this release. + +# v1.43.1 (2025-04-02) + +* **Documentation**: Fix for customer issues related to AWS account ID and size limitation for token. + +# v1.43.0 (2025-03-11) + +* **Feature**: This release adds Amazon ECR to Amazon ECR pull through cache rules support. + +# v1.42.1 (2025-03-04.2) + +* **Bug Fix**: Add assurance test for operation order. + +# v1.42.0 (2025-02-27) + +* **Feature**: Track credential providers via User-Agent Feature ids +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.41.1 (2025-02-18) + +* **Bug Fix**: Bump go version to 1.22 +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.41.0 (2025-02-07) + +* **Feature**: Adds support to handle the new basic scanning daily quota. + # v1.40.3 (2025-02-05) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_client.go index 1cc8f55cfd..3d7c13163c 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_client.go @@ -762,6 +762,37 @@ func addUserAgentRetryMode(stack *middleware.Stack, options Options) error { return nil } +type setCredentialSourceMiddleware struct { + ua *awsmiddleware.RequestUserAgent + options Options +} + +func (m setCredentialSourceMiddleware) ID() string { return "SetCredentialSourceMiddleware" } + +func (m setCredentialSourceMiddleware) HandleBuild(ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler) ( + out middleware.BuildOutput, metadata middleware.Metadata, err error, +) { + asProviderSource, ok := m.options.Credentials.(aws.CredentialProviderSource) + if !ok { + return next.HandleBuild(ctx, in) + } + providerSources := asProviderSource.ProviderSources() + for _, source := range providerSources { + m.ua.AddCredentialsSource(source) + } + return next.HandleBuild(ctx, in) +} + +func addCredentialSource(stack *middleware.Stack, options Options) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + mw := setCredentialSourceMiddleware{ua: ua, options: options} + return stack.Build.Insert(&mw, "UserAgent", middleware.Before) +} + func resolveTracerProvider(options *Options) { if options.TracerProvider == nil { options.TracerProvider = &tracing.NopTracerProvider{} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchCheckLayerAvailability.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchCheckLayerAvailability.go index a0a36f6a6c..6c3e55194c 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchCheckLayerAvailability.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchCheckLayerAvailability.go @@ -134,6 +134,9 @@ func (c *Client) addOperationBatchCheckLayerAvailabilityMiddlewares(stack *middl if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpBatchCheckLayerAvailabilityValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchDeleteImage.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchDeleteImage.go index ea63234bbf..239a497691 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchDeleteImage.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchDeleteImage.go @@ -136,6 +136,9 @@ func (c *Client) addOperationBatchDeleteImageMiddlewares(stack *middleware.Stack if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpBatchDeleteImageValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchGetImage.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchGetImage.go index 5bff06008f..8548e4a11d 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchGetImage.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchGetImage.go @@ -137,6 +137,9 @@ func (c *Client) addOperationBatchGetImageMiddlewares(stack *middleware.Stack, o if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpBatchGetImageValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchGetRepositoryScanningConfiguration.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchGetRepositoryScanningConfiguration.go index ba467c87b6..44709d157b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchGetRepositoryScanningConfiguration.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_BatchGetRepositoryScanningConfiguration.go @@ -115,6 +115,9 @@ func (c *Client) addOperationBatchGetRepositoryScanningConfigurationMiddlewares( if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpBatchGetRepositoryScanningConfigurationValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CompleteLayerUpload.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CompleteLayerUpload.go index 3106abb294..78eddc3380 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CompleteLayerUpload.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CompleteLayerUpload.go @@ -144,6 +144,9 @@ func (c *Client) addOperationCompleteLayerUploadMiddlewares(stack *middleware.St if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpCompleteLayerUploadValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CreatePullThroughCacheRule.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CreatePullThroughCacheRule.go index b7f4e1407f..e4c95171a4 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CreatePullThroughCacheRule.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CreatePullThroughCacheRule.go @@ -37,6 +37,9 @@ type CreatePullThroughCacheRuleInput struct { // The repository name prefix to use when caching images from the source registry. // + // There is always an assumed / applied to the end of the prefix. If you specify + // ecr-public as the prefix, Amazon ECR treats that as ecr-public/ . + // // This member is required. EcrRepositoryPrefix *string @@ -44,19 +47,24 @@ type CreatePullThroughCacheRuleInput struct { // pull through cache rule. The following is the syntax to use for each supported // upstream registry. // - // - Amazon ECR Public ( ecr-public ) - public.ecr.aws + // - Amazon ECR ( ecr ) – .dkr.ecr..amazonaws.com + // + // - Amazon ECR Public ( ecr-public ) – public.ecr.aws // - // - Docker Hub ( docker-hub ) - registry-1.docker.io + // - Docker Hub ( docker-hub ) – registry-1.docker.io // - // - Quay ( quay ) - quay.io + // - GitHub Container Registry ( github-container-registry ) – ghcr.io // - // - Kubernetes ( k8s ) - registry.k8s.io + // - GitLab Container Registry ( gitlab-container-registry ) – + // registry.gitlab.com // - // - GitHub Container Registry ( github-container-registry ) - ghcr.io + // - Kubernetes ( k8s ) – registry.k8s.io // - // - Microsoft Azure Container Registry ( azure-container-registry ) - + // - Microsoft Azure Container Registry ( azure-container-registry ) – // .azurecr.io // + // - Quay ( quay ) – quay.io + // // This member is required. UpstreamRegistryUrl *string @@ -64,6 +72,11 @@ type CreatePullThroughCacheRuleInput struct { // secret that identifies the credentials to authenticate to the upstream registry. CredentialArn *string + // Amazon Resource Name (ARN) of the IAM role to be assumed by Amazon ECR to + // authenticate to the ECR upstream registry. This role must be in the same account + // as the registry that you are configuring. + CustomRoleArn *string + // The Amazon Web Services account ID associated with the registry to create the // pull through cache rule for. If you do not specify a registry, the default // registry is assumed. @@ -72,6 +85,10 @@ type CreatePullThroughCacheRuleInput struct { // The name of the upstream registry. UpstreamRegistry types.UpstreamRegistry + // The repository name prefix of the upstream registry to match with the upstream + // repository name. When this field isn't specified, Amazon ECR will use the ROOT . + UpstreamRepositoryPrefix *string + noSmithyDocumentSerde } @@ -85,6 +102,9 @@ type CreatePullThroughCacheRuleOutput struct { // secret associated with the pull through cache rule. CredentialArn *string + // The ARN of the IAM role associated with the pull through cache rule. + CustomRoleArn *string + // The Amazon ECR repository prefix associated with the pull through cache rule. EcrRepositoryPrefix *string @@ -97,6 +117,9 @@ type CreatePullThroughCacheRuleOutput struct { // The upstream registry URL associated with the pull through cache rule. UpstreamRegistryUrl *string + // The upstream repository prefix associated with the pull through cache rule. + UpstreamRepositoryPrefix *string + // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata @@ -167,6 +190,9 @@ func (c *Client) addOperationCreatePullThroughCacheRuleMiddlewares(stack *middle if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpCreatePullThroughCacheRuleValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CreateRepository.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CreateRepository.go index b51da6915d..b0f280577a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CreateRepository.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CreateRepository.go @@ -145,6 +145,9 @@ func (c *Client) addOperationCreateRepositoryMiddlewares(stack *middleware.Stack if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpCreateRepositoryValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CreateRepositoryCreationTemplate.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CreateRepositoryCreationTemplate.go index 5f94b037de..5af5ec0bb4 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CreateRepositoryCreationTemplate.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_CreateRepositoryCreationTemplate.go @@ -172,6 +172,9 @@ func (c *Client) addOperationCreateRepositoryCreationTemplateMiddlewares(stack * if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpCreateRepositoryCreationTemplateValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteLifecyclePolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteLifecyclePolicy.go index 73f3f88266..cbea5a7789 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteLifecyclePolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteLifecyclePolicy.go @@ -126,6 +126,9 @@ func (c *Client) addOperationDeleteLifecyclePolicyMiddlewares(stack *middleware. if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpDeleteLifecyclePolicyValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeletePullThroughCacheRule.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeletePullThroughCacheRule.go index 8fabe7584d..5677192fc4 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeletePullThroughCacheRule.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeletePullThroughCacheRule.go @@ -52,6 +52,9 @@ type DeletePullThroughCacheRuleOutput struct { // secret associated with the pull through cache rule. CredentialArn *string + // The ARN of the IAM role associated with the pull through cache rule. + CustomRoleArn *string + // The Amazon ECR repository prefix associated with the request. EcrRepositoryPrefix *string @@ -61,6 +64,9 @@ type DeletePullThroughCacheRuleOutput struct { // The upstream registry URL associated with the pull through cache rule. UpstreamRegistryUrl *string + // The upstream repository prefix associated with the pull through cache rule. + UpstreamRepositoryPrefix *string + // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata @@ -131,6 +137,9 @@ func (c *Client) addOperationDeletePullThroughCacheRuleMiddlewares(stack *middle if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpDeletePullThroughCacheRuleValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRegistryPolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRegistryPolicy.go index 05405eee71..4e70c924f5 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRegistryPolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRegistryPolicy.go @@ -108,6 +108,9 @@ func (c *Client) addOperationDeleteRegistryPolicyMiddlewares(stack *middleware.S if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteRegistryPolicy(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRepository.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRepository.go index feea5319fb..c0084e8783 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRepository.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRepository.go @@ -123,6 +123,9 @@ func (c *Client) addOperationDeleteRepositoryMiddlewares(stack *middleware.Stack if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpDeleteRepositoryValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRepositoryCreationTemplate.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRepositoryCreationTemplate.go index 98fa1cd10a..45384c6a01 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRepositoryCreationTemplate.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRepositoryCreationTemplate.go @@ -116,6 +116,9 @@ func (c *Client) addOperationDeleteRepositoryCreationTemplateMiddlewares(stack * if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpDeleteRepositoryCreationTemplateValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRepositoryPolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRepositoryPolicy.go index 9ad27321f1..2aab4fa0cd 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRepositoryPolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DeleteRepositoryPolicy.go @@ -123,6 +123,9 @@ func (c *Client) addOperationDeleteRepositoryPolicyMiddlewares(stack *middleware if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpDeleteRepositoryPolicyValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeImageReplicationStatus.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeImageReplicationStatus.go index f674ea0cbe..595e5f314e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeImageReplicationStatus.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeImageReplicationStatus.go @@ -127,6 +127,9 @@ func (c *Client) addOperationDescribeImageReplicationStatusMiddlewares(stack *mi if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpDescribeImageReplicationStatusValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeImageScanFindings.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeImageScanFindings.go index b332e59383..2cd1025c1f 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeImageScanFindings.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeImageScanFindings.go @@ -160,6 +160,9 @@ func (c *Client) addOperationDescribeImageScanFindingsMiddlewares(stack *middlew if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpDescribeImageScanFindingsValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeImages.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeImages.go index 7d7e1a705d..07698b6252 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeImages.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeImages.go @@ -13,10 +13,16 @@ import ( // Returns metadata about the images in a repository. // -// Beginning with Docker version 1.9, the Docker client compresses image layers +// Starting with Docker version 1.9, the Docker client compresses image layers // before pushing them to a V2 Docker registry. The output of the docker images -// command shows the uncompressed image size, so it may return a larger image size -// than the image sizes returned by DescribeImages. +// command shows the uncompressed image size. Therefore, Docker might return a +// larger image than the image shown in the Amazon Web Services Management Console. +// +// The new version of Amazon ECR Basic Scanning doesn't use the ImageDetail$imageScanFindingsSummary and ImageDetail$imageScanStatus attributes +// from the API response to return scan results. Use the DescribeImageScanFindingsAPI instead. For more +// information about Amazon Web Services native basic scanning, see [Scan images for software vulnerabilities in Amazon ECR]. +// +// [Scan images for software vulnerabilities in Amazon ECR]: https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html func (c *Client) DescribeImages(ctx context.Context, params *DescribeImagesInput, optFns ...func(*Options)) (*DescribeImagesOutput, error) { if params == nil { params = &DescribeImagesInput{} @@ -151,6 +157,9 @@ func (c *Client) addOperationDescribeImagesMiddlewares(stack *middleware.Stack, if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpDescribeImagesValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribePullThroughCacheRules.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribePullThroughCacheRules.go index 95933334e0..871d5b4718 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribePullThroughCacheRules.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribePullThroughCacheRules.go @@ -141,6 +141,9 @@ func (c *Client) addOperationDescribePullThroughCacheRulesMiddlewares(stack *mid if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribePullThroughCacheRules(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeRegistry.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeRegistry.go index 5d5620ec0c..42a63bcd7a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeRegistry.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeRegistry.go @@ -110,6 +110,9 @@ func (c *Client) addOperationDescribeRegistryMiddlewares(stack *middleware.Stack if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeRegistry(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeRepositories.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeRepositories.go index dc23fd0fb4..ea17aecc16 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeRepositories.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeRepositories.go @@ -144,6 +144,9 @@ func (c *Client) addOperationDescribeRepositoriesMiddlewares(stack *middleware.S if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeRepositories(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeRepositoryCreationTemplates.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeRepositoryCreationTemplates.go index a5b6cd7086..3e5e401717 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeRepositoryCreationTemplates.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_DescribeRepositoryCreationTemplates.go @@ -144,6 +144,9 @@ func (c *Client) addOperationDescribeRepositoryCreationTemplatesMiddlewares(stac if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeRepositoryCreationTemplates(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetAccountSetting.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetAccountSetting.go index 81d103ae23..581b1f2141 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetAccountSetting.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetAccountSetting.go @@ -117,6 +117,9 @@ func (c *Client) addOperationGetAccountSettingMiddlewares(stack *middleware.Stac if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpGetAccountSettingValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetAuthorizationToken.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetAuthorizationToken.go index c29ba7b44e..af6d9aeef5 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetAuthorizationToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetAuthorizationToken.go @@ -56,6 +56,9 @@ type GetAuthorizationTokenOutput struct { // A list of authorization token data objects that correspond to the registryIds // values in the request. + // + // The size of the authorization token returned by Amazon ECR is not fixed. We + // recommend that you don't make assumptions about the maximum size. AuthorizationData []types.AuthorizationData // Metadata pertaining to the operation's result. @@ -128,6 +131,9 @@ func (c *Client) addOperationGetAuthorizationTokenMiddlewares(stack *middleware. if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetAuthorizationToken(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetDownloadUrlForLayer.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetDownloadUrlForLayer.go index 891045572e..32b64e13ce 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetDownloadUrlForLayer.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetDownloadUrlForLayer.go @@ -132,6 +132,9 @@ func (c *Client) addOperationGetDownloadUrlForLayerMiddlewares(stack *middleware if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpGetDownloadUrlForLayerValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetLifecyclePolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetLifecyclePolicy.go index 408a61534d..7ca491b17f 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetLifecyclePolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetLifecyclePolicy.go @@ -126,6 +126,9 @@ func (c *Client) addOperationGetLifecyclePolicyMiddlewares(stack *middleware.Sta if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpGetLifecyclePolicyValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetLifecyclePolicyPreview.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetLifecyclePolicyPreview.go index 482152df72..7067e11fd4 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetLifecyclePolicyPreview.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetLifecyclePolicyPreview.go @@ -51,8 +51,8 @@ type GetLifecyclePolicyPreviewInput struct { // single page along with a nextToken 
 response element. The remaining results of // the initial request can be seen by sending
 another // GetLifecyclePolicyPreviewRequest request with the returned nextToken 
 value. - // This value can be between 1 and 1000. If this
 parameter is not used, then - // GetLifecyclePolicyPreviewRequest returns up to
 100 results and a nextToken + // This value can be between 1 and 100. If this
 parameter is not used, then + // GetLifecyclePolicyPreviewRequest returns up to
100 results and a nextToken // value, if
 applicable. This option cannot be used when you specify images with // imageIds . MaxResults *int32 @@ -169,6 +169,9 @@ func (c *Client) addOperationGetLifecyclePolicyPreviewMiddlewares(stack *middlew if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpGetLifecyclePolicyPreviewValidationMiddleware(stack); err != nil { return err } @@ -404,8 +407,8 @@ type GetLifecyclePolicyPreviewPaginatorOptions struct { // single page along with a nextToken 
 response element. The remaining results of // the initial request can be seen by sending
 another // GetLifecyclePolicyPreviewRequest request with the returned nextToken 
 value. - // This value can be between 1 and 1000. If this
 parameter is not used, then - // GetLifecyclePolicyPreviewRequest returns up to
 100 results and a nextToken + // This value can be between 1 and 100. If this
 parameter is not used, then + // GetLifecyclePolicyPreviewRequest returns up to
100 results and a nextToken // value, if
 applicable. This option cannot be used when you specify images with // imageIds . Limit int32 diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetRegistryPolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetRegistryPolicy.go index 420344e663..98a7305b56 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetRegistryPolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetRegistryPolicy.go @@ -108,6 +108,9 @@ func (c *Client) addOperationGetRegistryPolicyMiddlewares(stack *middleware.Stac if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetRegistryPolicy(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetRegistryScanningConfiguration.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetRegistryScanningConfiguration.go index 5955ff467e..242a3b1906 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetRegistryScanningConfiguration.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetRegistryScanningConfiguration.go @@ -109,6 +109,9 @@ func (c *Client) addOperationGetRegistryScanningConfigurationMiddlewares(stack * if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetRegistryScanningConfiguration(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetRepositoryPolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetRepositoryPolicy.go index a7325987f8..7cb52dcdfb 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetRepositoryPolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_GetRepositoryPolicy.go @@ -122,6 +122,9 @@ func (c *Client) addOperationGetRepositoryPolicyMiddlewares(stack *middleware.St if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpGetRepositoryPolicyValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_InitiateLayerUpload.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_InitiateLayerUpload.go index f5b62d505e..b2bf031817 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_InitiateLayerUpload.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_InitiateLayerUpload.go @@ -128,6 +128,9 @@ func (c *Client) addOperationInitiateLayerUploadMiddlewares(stack *middleware.St if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpInitiateLayerUploadValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_ListImages.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_ListImages.go index 09f0f065a3..8f56a7b82d 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_ListImages.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_ListImages.go @@ -150,6 +150,9 @@ func (c *Client) addOperationListImagesMiddlewares(stack *middleware.Stack, opti if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpListImagesValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_ListTagsForResource.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_ListTagsForResource.go index 00ecd807f1..1b88b19148 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_ListTagsForResource.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_ListTagsForResource.go @@ -113,6 +113,9 @@ func (c *Client) addOperationListTagsForResourceMiddlewares(stack *middleware.St if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpListTagsForResourceValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutAccountSetting.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutAccountSetting.go index 2075a4127e..2c673b0391 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutAccountSetting.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutAccountSetting.go @@ -122,6 +122,9 @@ func (c *Client) addOperationPutAccountSettingMiddlewares(stack *middleware.Stac if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpPutAccountSettingValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutImage.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutImage.go index d63228f6d1..d3847a108d 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutImage.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutImage.go @@ -143,6 +143,9 @@ func (c *Client) addOperationPutImageMiddlewares(stack *middleware.Stack, option if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpPutImageValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutImageScanningConfiguration.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutImageScanningConfiguration.go index 322c84dae0..fc448205a9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutImageScanningConfiguration.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutImageScanningConfiguration.go @@ -135,6 +135,9 @@ func (c *Client) addOperationPutImageScanningConfigurationMiddlewares(stack *mid if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpPutImageScanningConfigurationValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutImageTagMutability.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutImageTagMutability.go index e1b4c3c93e..f5149a1878 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutImageTagMutability.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutImageTagMutability.go @@ -133,6 +133,9 @@ func (c *Client) addOperationPutImageTagMutabilityMiddlewares(stack *middleware. if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpPutImageTagMutabilityValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutLifecyclePolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutLifecyclePolicy.go index 4e8121861b..2b1db900a4 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutLifecyclePolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutLifecyclePolicy.go @@ -130,6 +130,9 @@ func (c *Client) addOperationPutLifecyclePolicyMiddlewares(stack *middleware.Sta if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpPutLifecyclePolicyValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutRegistryPolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutRegistryPolicy.go index c806dbf572..5572b91fe0 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutRegistryPolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutRegistryPolicy.go @@ -124,6 +124,9 @@ func (c *Client) addOperationPutRegistryPolicyMiddlewares(stack *middleware.Stac if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpPutRegistryPolicyValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutRegistryScanningConfiguration.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutRegistryScanningConfiguration.go index c57f87d7d5..ca11412d0a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutRegistryScanningConfiguration.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutRegistryScanningConfiguration.go @@ -126,6 +126,9 @@ func (c *Client) addOperationPutRegistryScanningConfigurationMiddlewares(stack * if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpPutRegistryScanningConfigurationValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutReplicationConfiguration.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutReplicationConfiguration.go index 24fd26d696..1203765be0 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutReplicationConfiguration.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_PutReplicationConfiguration.go @@ -124,6 +124,9 @@ func (c *Client) addOperationPutReplicationConfigurationMiddlewares(stack *middl if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpPutReplicationConfigurationValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_SetRepositoryPolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_SetRepositoryPolicy.go index 36a788b70a..69880d99fb 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_SetRepositoryPolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_SetRepositoryPolicy.go @@ -139,6 +139,9 @@ func (c *Client) addOperationSetRepositoryPolicyMiddlewares(stack *middleware.St if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpSetRepositoryPolicyValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_StartImageScan.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_StartImageScan.go index 1f3e794e84..e32329bad5 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_StartImageScan.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_StartImageScan.go @@ -11,12 +11,15 @@ import ( smithyhttp "github.com/aws/smithy-go/transport/http" ) -// Starts an image vulnerability scan. An image scan can only be started once per -// 24 hours on an individual image. This limit includes if an image was scanned on -// initial push. For more information, see [Image scanning]in the Amazon Elastic Container -// Registry User Guide. +// Starts a basic image vulnerability scan. // -// [Image scanning]: https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html +// A basic image scan can only be started once per 24 hours on an individual +// image. This limit includes if an image was scanned on initial push. You can +// start up to 100,000 basic scans per 24 hours. This limit includes both scans on +// initial push and scans initiated by the StartImageScan API. For more +// information, see [Basic scanning]in the Amazon Elastic Container Registry User Guide. +// +// [Basic scanning]: https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning-basic.html func (c *Client) StartImageScan(ctx context.Context, params *StartImageScanInput, optFns ...func(*Options)) (*StartImageScanOutput, error) { if params == nil { params = &StartImageScanInput{} @@ -136,6 +139,9 @@ func (c *Client) addOperationStartImageScanMiddlewares(stack *middleware.Stack, if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpStartImageScanValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_StartLifecyclePolicyPreview.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_StartLifecyclePolicyPreview.go index a2b2bb1b44..9c8a8783d2 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_StartLifecyclePolicyPreview.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_StartLifecyclePolicyPreview.go @@ -132,6 +132,9 @@ func (c *Client) addOperationStartLifecyclePolicyPreviewMiddlewares(stack *middl if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpStartLifecyclePolicyPreviewValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_TagResource.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_TagResource.go index 3974ab0268..2637c4ff61 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_TagResource.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_TagResource.go @@ -117,6 +117,9 @@ func (c *Client) addOperationTagResourceMiddlewares(stack *middleware.Stack, opt if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpTagResourceValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UntagResource.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UntagResource.go index e28d0d0182..3f74cb345f 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UntagResource.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UntagResource.go @@ -113,6 +113,9 @@ func (c *Client) addOperationUntagResourceMiddlewares(stack *middleware.Stack, o if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpUntagResourceValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UpdatePullThroughCacheRule.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UpdatePullThroughCacheRule.go index d40712e4f6..525a4107a2 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UpdatePullThroughCacheRule.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UpdatePullThroughCacheRule.go @@ -29,17 +29,20 @@ func (c *Client) UpdatePullThroughCacheRule(ctx context.Context, params *UpdateP type UpdatePullThroughCacheRuleInput struct { - // The Amazon Resource Name (ARN) of the Amazon Web Services Secrets Manager - // secret that identifies the credentials to authenticate to the upstream registry. - // - // This member is required. - CredentialArn *string - // The repository name prefix to use when caching images from the source registry. // // This member is required. EcrRepositoryPrefix *string + // The Amazon Resource Name (ARN) of the Amazon Web Services Secrets Manager + // secret that identifies the credentials to authenticate to the upstream registry. + CredentialArn *string + + // Amazon Resource Name (ARN) of the IAM role to be assumed by Amazon ECR to + // authenticate to the ECR upstream registry. This role must be in the same account + // as the registry that you are configuring. + CustomRoleArn *string + // The Amazon Web Services account ID associated with the registry associated with // the pull through cache rule. If you do not specify a registry, the default // registry is assumed. @@ -54,6 +57,9 @@ type UpdatePullThroughCacheRuleOutput struct { // secret associated with the pull through cache rule. CredentialArn *string + // The ARN of the IAM role associated with the pull through cache rule. + CustomRoleArn *string + // The Amazon ECR repository prefix associated with the pull through cache rule. EcrRepositoryPrefix *string @@ -64,6 +70,9 @@ type UpdatePullThroughCacheRuleOutput struct { // was updated. UpdatedAt *time.Time + // The upstream repository prefix associated with the pull through cache rule. + UpstreamRepositoryPrefix *string + // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata @@ -134,6 +143,9 @@ func (c *Client) addOperationUpdatePullThroughCacheRuleMiddlewares(stack *middle if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpUpdatePullThroughCacheRuleValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UpdateRepositoryCreationTemplate.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UpdateRepositoryCreationTemplate.go index 1371216054..302e6fc8e7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UpdateRepositoryCreationTemplate.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UpdateRepositoryCreationTemplate.go @@ -161,6 +161,9 @@ func (c *Client) addOperationUpdateRepositoryCreationTemplateMiddlewares(stack * if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpUpdateRepositoryCreationTemplateValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UploadLayerPart.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UploadLayerPart.go index acfbd50e25..3f29d65939 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UploadLayerPart.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_UploadLayerPart.go @@ -154,6 +154,9 @@ func (c *Client) addOperationUploadLayerPartMiddlewares(stack *middleware.Stack, if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpUploadLayerPartValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_ValidatePullThroughCacheRule.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_ValidatePullThroughCacheRule.go index 34eeb8959c..e7c8f78236 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_ValidatePullThroughCacheRule.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/api_op_ValidatePullThroughCacheRule.go @@ -49,6 +49,9 @@ type ValidatePullThroughCacheRuleOutput struct { // secret associated with the pull through cache rule. CredentialArn *string + // The ARN of the IAM role associated with the pull through cache rule. + CustomRoleArn *string + // The Amazon ECR repository prefix associated with the pull through cache rule. EcrRepositoryPrefix *string @@ -70,6 +73,9 @@ type ValidatePullThroughCacheRuleOutput struct { // The upstream registry URL associated with the pull through cache rule. UpstreamRegistryUrl *string + // The upstream repository prefix associated with the pull through cache rule. + UpstreamRepositoryPrefix *string + // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata @@ -140,6 +146,9 @@ func (c *Client) addOperationValidatePullThroughCacheRuleMiddlewares(stack *midd if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpValidatePullThroughCacheRuleValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/deserializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/deserializers.go index ac5093fcdb..dc6758fc5b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/deserializers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/deserializers.go @@ -7627,6 +7627,35 @@ func awsAwsjson11_deserializeDocumentAwsEcrContainerImageDetails(v **types.AwsEc return err } + case "inUseCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected InUseCount to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.InUseCount = ptr.Int64(i64) + } + + case "lastInUseAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.LastInUseAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Date to be a JSON Number, got %T instead", value) + + } + } + case "platform": if value != nil { jtv, ok := value.(string) @@ -10661,6 +10690,15 @@ func awsAwsjson11_deserializeDocumentPullThroughCacheRule(v **types.PullThroughC sv.CredentialArn = ptr.String(jtv) } + case "customRoleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CustomRoleArn to be of type string, got %T instead", value) + } + sv.CustomRoleArn = ptr.String(jtv) + } + case "ecrRepositoryPrefix": if value != nil { jtv, ok := value.(string) @@ -10713,6 +10751,15 @@ func awsAwsjson11_deserializeDocumentPullThroughCacheRule(v **types.PullThroughC sv.UpstreamRegistryUrl = ptr.String(jtv) } + case "upstreamRepositoryPrefix": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected PullThroughCacheRuleRepositoryPrefix to be of type string, got %T instead", value) + } + sv.UpstreamRepositoryPrefix = ptr.String(jtv) + } + default: _, _ = key, value @@ -13525,6 +13572,15 @@ func awsAwsjson11_deserializeOpDocumentCreatePullThroughCacheRuleOutput(v **Crea sv.CredentialArn = ptr.String(jtv) } + case "customRoleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CustomRoleArn to be of type string, got %T instead", value) + } + sv.CustomRoleArn = ptr.String(jtv) + } + case "ecrRepositoryPrefix": if value != nil { jtv, ok := value.(string) @@ -13561,6 +13617,15 @@ func awsAwsjson11_deserializeOpDocumentCreatePullThroughCacheRuleOutput(v **Crea sv.UpstreamRegistryUrl = ptr.String(jtv) } + case "upstreamRepositoryPrefix": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected PullThroughCacheRuleRepositoryPrefix to be of type string, got %T instead", value) + } + sv.UpstreamRepositoryPrefix = ptr.String(jtv) + } + default: _, _ = key, value @@ -13772,6 +13837,15 @@ func awsAwsjson11_deserializeOpDocumentDeletePullThroughCacheRuleOutput(v **Dele sv.CredentialArn = ptr.String(jtv) } + case "customRoleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CustomRoleArn to be of type string, got %T instead", value) + } + sv.CustomRoleArn = ptr.String(jtv) + } + case "ecrRepositoryPrefix": if value != nil { jtv, ok := value.(string) @@ -13799,6 +13873,15 @@ func awsAwsjson11_deserializeOpDocumentDeletePullThroughCacheRuleOutput(v **Dele sv.UpstreamRegistryUrl = ptr.String(jtv) } + case "upstreamRepositoryPrefix": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected PullThroughCacheRuleRepositoryPrefix to be of type string, got %T instead", value) + } + sv.UpstreamRepositoryPrefix = ptr.String(jtv) + } + default: _, _ = key, value @@ -15586,6 +15669,15 @@ func awsAwsjson11_deserializeOpDocumentUpdatePullThroughCacheRuleOutput(v **Upda sv.CredentialArn = ptr.String(jtv) } + case "customRoleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CustomRoleArn to be of type string, got %T instead", value) + } + sv.CustomRoleArn = ptr.String(jtv) + } + case "ecrRepositoryPrefix": if value != nil { jtv, ok := value.(string) @@ -15620,6 +15712,15 @@ func awsAwsjson11_deserializeOpDocumentUpdatePullThroughCacheRuleOutput(v **Upda } } + case "upstreamRepositoryPrefix": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected PullThroughCacheRuleRepositoryPrefix to be of type string, got %T instead", value) + } + sv.UpstreamRepositoryPrefix = ptr.String(jtv) + } + default: _, _ = key, value @@ -15776,6 +15877,15 @@ func awsAwsjson11_deserializeOpDocumentValidatePullThroughCacheRuleOutput(v **Va sv.CredentialArn = ptr.String(jtv) } + case "customRoleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CustomRoleArn to be of type string, got %T instead", value) + } + sv.CustomRoleArn = ptr.String(jtv) + } + case "ecrRepositoryPrefix": if value != nil { jtv, ok := value.(string) @@ -15821,6 +15931,15 @@ func awsAwsjson11_deserializeOpDocumentValidatePullThroughCacheRuleOutput(v **Va sv.UpstreamRegistryUrl = ptr.String(jtv) } + case "upstreamRepositoryPrefix": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected PullThroughCacheRuleRepositoryPrefix to be of type string, got %T instead", value) + } + sv.UpstreamRepositoryPrefix = ptr.String(jtv) + } + default: _, _ = key, value diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/endpoints.go index c593447cd6..e61e54695c 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/endpoints.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/endpoints.go @@ -361,6 +361,44 @@ func (r *resolver) ResolveEndpoint( if _UseDualStack == true { if true == _PartitionResult.SupportsFIPS { if true == _PartitionResult.SupportsDualStack { + if "aws" == _PartitionResult.Name { + uriString := func() string { + var out strings.Builder + out.WriteString("https://ecr-fips.") + out.WriteString(_Region) + out.WriteString(".api.aws") + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + if "aws-us-gov" == _PartitionResult.Name { + uriString := func() string { + var out strings.Builder + out.WriteString("https://ecr-fips.") + out.WriteString(_Region) + out.WriteString(".api.aws") + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } uriString := func() string { var out strings.Builder out.WriteString("https://api.ecr-fips.") @@ -447,6 +485,63 @@ func (r *resolver) ResolveEndpoint( } if _UseDualStack == true { if true == _PartitionResult.SupportsDualStack { + if "aws" == _PartitionResult.Name { + uriString := func() string { + var out strings.Builder + out.WriteString("https://ecr.") + out.WriteString(_Region) + out.WriteString(".api.aws") + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + if "aws-cn" == _PartitionResult.Name { + uriString := func() string { + var out strings.Builder + out.WriteString("https://ecr.") + out.WriteString(_Region) + out.WriteString(".api.amazonwebservices.com.cn") + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + if "aws-us-gov" == _PartitionResult.Name { + uriString := func() string { + var out strings.Builder + out.WriteString("https://ecr.") + out.WriteString(_Region) + out.WriteString(".api.aws") + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } uriString := func() string { var out strings.Builder out.WriteString("https://api.ecr.") diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/generated.json b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/generated.json index ed8ecd06af..e9160421d9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/generated.json +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/generated.json @@ -70,12 +70,13 @@ "protocol_test.go", "serializers.go", "snapshot_test.go", + "sra_operation_order_test.go", "types/enums.go", "types/errors.go", "types/types.go", "validators.go" ], - "go": "1.15", + "go": "1.22", "module": "github.com/aws/aws-sdk-go-v2/service/ecr", "unstable": false } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/go_module_metadata.go index 0adcf28e30..d861242c1f 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/go_module_metadata.go @@ -3,4 +3,4 @@ package ecr // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.40.3" +const goModuleVersion = "1.45.1" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/internal/endpoints/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/internal/endpoints/endpoints.go index ebf04b8807..58b2e76cb3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/internal/endpoints/endpoints.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/internal/endpoints/endpoints.go @@ -87,6 +87,7 @@ func New() *Resolver { var partitionRegexp = struct { Aws *regexp.Regexp AwsCn *regexp.Regexp + AwsEusc *regexp.Regexp AwsIso *regexp.Regexp AwsIsoB *regexp.Regexp AwsIsoE *regexp.Regexp @@ -96,6 +97,7 @@ var partitionRegexp = struct { Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$"), AwsCn: regexp.MustCompile("^cn\\-\\w+\\-\\d+$"), + AwsEusc: regexp.MustCompile("^eusc\\-(de)\\-\\w+\\-\\d+$"), AwsIso: regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"), AwsIsoB: regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"), AwsIsoE: regexp.MustCompile("^eu\\-isoe\\-\\w+\\-\\d+$"), @@ -173,6 +175,9 @@ var defaultPartitions = endpoints.Partitions{ Region: "ap-east-1", }, }, + endpoints.EndpointKey{ + Region: "ap-east-2", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "ap-northeast-1", }: endpoints.Endpoint{ @@ -972,6 +977,27 @@ var defaultPartitions = endpoints.Partitions{ }, }, }, + { + ID: "aws-eusc", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "api.ecr-fips.{region}.amazonaws.eu", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "api.ecr.{region}.amazonaws.eu", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsEusc, + IsRegionalized: true, + }, { ID: "aws-iso", Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ @@ -1062,6 +1088,16 @@ var defaultPartitions = endpoints.Partitions{ }, RegionRegex: partitionRegexp.AwsIsoE, IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "eu-isoe-west-1", + }: endpoints.Endpoint{ + Hostname: "api.ecr.eu-isoe-west-1.cloud.adc-e.uk", + CredentialScope: endpoints.CredentialScope{ + Region: "eu-isoe-west-1", + }, + }, + }, }, { ID: "aws-iso-f", diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/serializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/serializers.go index db1b0d7a16..5deaebee8c 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/serializers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/serializers.go @@ -3557,6 +3557,11 @@ func awsAwsjson11_serializeOpDocumentCreatePullThroughCacheRuleInput(v *CreatePu ok.String(*v.CredentialArn) } + if v.CustomRoleArn != nil { + ok := object.Key("customRoleArn") + ok.String(*v.CustomRoleArn) + } + if v.EcrRepositoryPrefix != nil { ok := object.Key("ecrRepositoryPrefix") ok.String(*v.EcrRepositoryPrefix) @@ -3577,6 +3582,11 @@ func awsAwsjson11_serializeOpDocumentCreatePullThroughCacheRuleInput(v *CreatePu ok.String(*v.UpstreamRegistryUrl) } + if v.UpstreamRepositoryPrefix != nil { + ok := object.Key("upstreamRepositoryPrefix") + ok.String(*v.UpstreamRepositoryPrefix) + } + return nil } @@ -4448,6 +4458,11 @@ func awsAwsjson11_serializeOpDocumentUpdatePullThroughCacheRuleInput(v *UpdatePu ok.String(*v.CredentialArn) } + if v.CustomRoleArn != nil { + ok := object.Key("customRoleArn") + ok.String(*v.CustomRoleArn) + } + if v.EcrRepositoryPrefix != nil { ok := object.Key("ecrRepositoryPrefix") ok.String(*v.EcrRepositoryPrefix) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/types/enums.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/types/enums.go index 52470b4ebe..5ecc1326dc 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/types/enums.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/types/enums.go @@ -309,6 +309,7 @@ const ( ScanStatusPending ScanStatus = "PENDING" ScanStatusScanEligibilityExpired ScanStatus = "SCAN_ELIGIBILITY_EXPIRED" ScanStatusFindingsUnavailable ScanStatus = "FINDINGS_UNAVAILABLE" + ScanStatusLimitExceeded ScanStatus = "LIMIT_EXCEEDED" ) // Values returns all known values for ScanStatus. Note that this can be expanded @@ -325,6 +326,7 @@ func (ScanStatus) Values() []ScanStatus { "PENDING", "SCAN_ELIGIBILITY_EXPIRED", "FINDINGS_UNAVAILABLE", + "LIMIT_EXCEEDED", } } @@ -372,6 +374,7 @@ type UpstreamRegistry string // Enum values for UpstreamRegistry const ( + UpstreamRegistryEcr UpstreamRegistry = "ecr" UpstreamRegistryEcrPublic UpstreamRegistry = "ecr-public" UpstreamRegistryQuay UpstreamRegistry = "quay" UpstreamRegistryK8s UpstreamRegistry = "k8s" @@ -387,6 +390,7 @@ const ( // The ordering of this slice is not guaranteed to be stable across updates. func (UpstreamRegistry) Values() []UpstreamRegistry { return []UpstreamRegistry{ + "ecr", "ecr-public", "quay", "k8s", diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/types/types.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/types/types.go index 7bab166264..7040606617 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/types/types.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/types/types.go @@ -57,6 +57,12 @@ type AwsEcrContainerImageDetails struct { // The image tags attached to the Amazon ECR container image. ImageTags []string + // The number of Amazon ECS or Amazon EKS clusters currently running the image. + InUseCount *int64 + + // The most recent date and time a cluster was running the image. + LastInUseAt *time.Time + // The platform of the Amazon ECR container image. Platform *string @@ -326,10 +332,10 @@ type ImageDetail struct { // If the image is a manifest list, this will be the max size of all manifests in // the list. // - // Beginning with Docker version 1.9, the Docker client compresses image layers + // Starting with Docker version 1.9, the Docker client compresses image layers // before pushing them to a V2 Docker registry. The output of the docker images - // command shows the uncompressed image size, so it may return a larger image size - // than the image sizes returned by DescribeImages. + // command shows the uncompressed image size. Therefore, Docker might return a + // larger image than the image shown in the Amazon Web Services Management Console. ImageSizeInBytes *int64 // The list of tags associated with this image. @@ -626,6 +632,9 @@ type PullThroughCacheRule struct { // rule. CredentialArn *string + // The ARN of the IAM role associated with the pull through cache rule. + CustomRoleArn *string + // The Amazon ECR repository prefix associated with the pull through cache rule. EcrRepositoryPrefix *string @@ -644,6 +653,9 @@ type PullThroughCacheRule struct { // The upstream registry URL associated with the pull through cache rule. UpstreamRegistryUrl *string + // The upstream repository prefix associated with the pull through cache rule. + UpstreamRepositoryPrefix *string + noSmithyDocumentSerde } @@ -823,7 +835,7 @@ type RepositoryCreationTemplate struct { // template. Prefix *string - // he repository policy to apply to repositories created using the template. A + // The repository policy to apply to repositories created using the template. A // repository policy is a permissions policy associated with a repository to // control access permissions. RepositoryPolicy *string diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/validators.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/validators.go index 930a3ccd83..52b1104c13 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/validators.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecr/validators.go @@ -1913,9 +1913,6 @@ func validateOpUpdatePullThroughCacheRuleInput(v *UpdatePullThroughCacheRuleInpu if v.EcrRepositoryPrefix == nil { invalidParams.Add(smithy.NewErrParamRequired("EcrRepositoryPrefix")) } - if v.CredentialArn == nil { - invalidParams.Add(smithy.NewErrParamRequired("CredentialArn")) - } if invalidParams.Len() > 0 { return invalidParams } else { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/CHANGELOG.md index 4b60c6b16d..d93e75b7c7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/CHANGELOG.md @@ -1,3 +1,34 @@ +# v1.33.2 (2025-06-17) + +* **Dependency Update**: Update to smithy-go v1.22.4. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.33.1 (2025-06-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.33.0 (2025-04-30) + +* **Feature**: Adds dualstack support for Amazon Elastic Container Registry Public (Amazon ECR Public). + +# v1.32.2 (2025-04-03) + +* No change notes available for this release. + +# v1.32.1 (2025-03-04.2) + +* **Bug Fix**: Add assurance test for operation order. + +# v1.32.0 (2025-02-27) + +* **Feature**: Track credential providers via User-Agent Feature ids +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.31.3 (2025-02-18) + +* **Bug Fix**: Bump go version to 1.22 +* **Dependency Update**: Updated to the latest SDK module versions + # v1.31.2 (2025-02-05) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_client.go index 6ec6c3ec1c..9d7e183d2f 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_client.go @@ -762,6 +762,37 @@ func addUserAgentRetryMode(stack *middleware.Stack, options Options) error { return nil } +type setCredentialSourceMiddleware struct { + ua *awsmiddleware.RequestUserAgent + options Options +} + +func (m setCredentialSourceMiddleware) ID() string { return "SetCredentialSourceMiddleware" } + +func (m setCredentialSourceMiddleware) HandleBuild(ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler) ( + out middleware.BuildOutput, metadata middleware.Metadata, err error, +) { + asProviderSource, ok := m.options.Credentials.(aws.CredentialProviderSource) + if !ok { + return next.HandleBuild(ctx, in) + } + providerSources := asProviderSource.ProviderSources() + for _, source := range providerSources { + m.ua.AddCredentialsSource(source) + } + return next.HandleBuild(ctx, in) +} + +func addCredentialSource(stack *middleware.Stack, options Options) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + mw := setCredentialSourceMiddleware{ua: ua, options: options} + return stack.Build.Insert(&mw, "UserAgent", middleware.Before) +} + func resolveTracerProvider(options *Options) { if options.TracerProvider == nil { options.TracerProvider = &tracing.NopTracerProvider{} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_BatchCheckLayerAvailability.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_BatchCheckLayerAvailability.go index dc0aeccdcd..1e2e234bec 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_BatchCheckLayerAvailability.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_BatchCheckLayerAvailability.go @@ -133,6 +133,9 @@ func (c *Client) addOperationBatchCheckLayerAvailabilityMiddlewares(stack *middl if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpBatchCheckLayerAvailabilityValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_BatchDeleteImage.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_BatchDeleteImage.go index 01302e7712..f5b14b6bf0 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_BatchDeleteImage.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_BatchDeleteImage.go @@ -134,6 +134,9 @@ func (c *Client) addOperationBatchDeleteImageMiddlewares(stack *middleware.Stack if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpBatchDeleteImageValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_CompleteLayerUpload.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_CompleteLayerUpload.go index 0e5f50ea9e..41d822b8e9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_CompleteLayerUpload.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_CompleteLayerUpload.go @@ -145,6 +145,9 @@ func (c *Client) addOperationCompleteLayerUploadMiddlewares(stack *middleware.St if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpCompleteLayerUploadValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_CreateRepository.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_CreateRepository.go index 4ca5c18847..8ff307b8ea 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_CreateRepository.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_CreateRepository.go @@ -132,6 +132,9 @@ func (c *Client) addOperationCreateRepositoryMiddlewares(stack *middleware.Stack if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpCreateRepositoryValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DeleteRepository.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DeleteRepository.go index ca7cd7d3fb..afac66ba36 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DeleteRepository.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DeleteRepository.go @@ -124,6 +124,9 @@ func (c *Client) addOperationDeleteRepositoryMiddlewares(stack *middleware.Stack if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpDeleteRepositoryValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DeleteRepositoryPolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DeleteRepositoryPolicy.go index 831a8483e4..395c5168ac 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DeleteRepositoryPolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DeleteRepositoryPolicy.go @@ -123,6 +123,9 @@ func (c *Client) addOperationDeleteRepositoryPolicyMiddlewares(stack *middleware if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpDeleteRepositoryPolicyValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeImageTags.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeImageTags.go index f43b7776f6..78efb512cb 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeImageTags.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeImageTags.go @@ -140,6 +140,9 @@ func (c *Client) addOperationDescribeImageTagsMiddlewares(stack *middleware.Stac if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpDescribeImageTagsValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeImages.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeImages.go index d77c2e2ac0..f4e94d832a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeImages.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeImages.go @@ -149,6 +149,9 @@ func (c *Client) addOperationDescribeImagesMiddlewares(stack *middleware.Stack, if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpDescribeImagesValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeRegistries.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeRegistries.go index 47aa6f4076..a82daac2ec 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeRegistries.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeRegistries.go @@ -135,6 +135,9 @@ func (c *Client) addOperationDescribeRegistriesMiddlewares(stack *middleware.Sta if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeRegistries(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeRepositories.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeRepositories.go index 96642a085b..6f10382df2 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeRepositories.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_DescribeRepositories.go @@ -144,6 +144,9 @@ func (c *Client) addOperationDescribeRepositoriesMiddlewares(stack *middleware.S if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeRepositories(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetAuthorizationToken.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetAuthorizationToken.go index ced2aec493..3857357bc4 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetAuthorizationToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetAuthorizationToken.go @@ -110,6 +110,9 @@ func (c *Client) addOperationGetAuthorizationTokenMiddlewares(stack *middleware. if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetAuthorizationToken(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetRegistryCatalogData.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetRegistryCatalogData.go index 3b46f123ec..f9e1f6e3eb 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetRegistryCatalogData.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetRegistryCatalogData.go @@ -108,6 +108,9 @@ func (c *Client) addOperationGetRegistryCatalogDataMiddlewares(stack *middleware if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetRegistryCatalogData(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetRepositoryCatalogData.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetRepositoryCatalogData.go index 5f80026f18..8f8b6b91f2 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetRepositoryCatalogData.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetRepositoryCatalogData.go @@ -118,6 +118,9 @@ func (c *Client) addOperationGetRepositoryCatalogDataMiddlewares(stack *middlewa if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpGetRepositoryCatalogDataValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetRepositoryPolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetRepositoryPolicy.go index ea637e3af4..4493fd529a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetRepositoryPolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_GetRepositoryPolicy.go @@ -123,6 +123,9 @@ func (c *Client) addOperationGetRepositoryPolicyMiddlewares(stack *middleware.St if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpGetRepositoryPolicyValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_InitiateLayerUpload.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_InitiateLayerUpload.go index a8e642aab2..0e48a830f5 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_InitiateLayerUpload.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_InitiateLayerUpload.go @@ -128,6 +128,9 @@ func (c *Client) addOperationInitiateLayerUploadMiddlewares(stack *middleware.St if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpInitiateLayerUploadValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_ListTagsForResource.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_ListTagsForResource.go index 9624524c06..53c4f38418 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_ListTagsForResource.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_ListTagsForResource.go @@ -113,6 +113,9 @@ func (c *Client) addOperationListTagsForResourceMiddlewares(stack *middleware.St if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpListTagsForResourceValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_PutImage.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_PutImage.go index 25f8cda005..d160dec595 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_PutImage.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_PutImage.go @@ -144,6 +144,9 @@ func (c *Client) addOperationPutImageMiddlewares(stack *middleware.Stack, option if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpPutImageValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_PutRegistryCatalogData.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_PutRegistryCatalogData.go index 233fba1575..7f3c79e3ac 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_PutRegistryCatalogData.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_PutRegistryCatalogData.go @@ -116,6 +116,9 @@ func (c *Client) addOperationPutRegistryCatalogDataMiddlewares(stack *middleware if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opPutRegistryCatalogData(options.Region), middleware.Before); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_PutRepositoryCatalogData.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_PutRepositoryCatalogData.go index 59bf740b22..1af5ece102 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_PutRepositoryCatalogData.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_PutRepositoryCatalogData.go @@ -123,6 +123,9 @@ func (c *Client) addOperationPutRepositoryCatalogDataMiddlewares(stack *middlewa if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpPutRepositoryCatalogDataValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_SetRepositoryPolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_SetRepositoryPolicy.go index d49bc941be..7c0237f992 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_SetRepositoryPolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_SetRepositoryPolicy.go @@ -139,6 +139,9 @@ func (c *Client) addOperationSetRepositoryPolicyMiddlewares(stack *middleware.St if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpSetRepositoryPolicyValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_TagResource.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_TagResource.go index 1dfb2dd784..e7d8550c5b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_TagResource.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_TagResource.go @@ -119,6 +119,9 @@ func (c *Client) addOperationTagResourceMiddlewares(stack *middleware.Stack, opt if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpTagResourceValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_UntagResource.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_UntagResource.go index 83b57e0ad9..a0c2f475cd 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_UntagResource.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_UntagResource.go @@ -113,6 +113,9 @@ func (c *Client) addOperationUntagResourceMiddlewares(stack *middleware.Stack, o if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpUntagResourceValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_UploadLayerPart.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_UploadLayerPart.go index 9a81c0597f..cc6712300a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_UploadLayerPart.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/api_op_UploadLayerPart.go @@ -154,6 +154,9 @@ func (c *Client) addOperationUploadLayerPartMiddlewares(stack *middleware.Stack, if err = addUserAgentRetryMode(stack, options); err != nil { return err } + if err = addCredentialSource(stack, options); err != nil { + return err + } if err = addOpUploadLayerPartValidationMiddleware(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/endpoints.go index 39d8005662..4af6f11388 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/endpoints.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/endpoints.go @@ -409,6 +409,25 @@ func (r *resolver) ResolveEndpoint( } if _UseDualStack == true { if true == _PartitionResult.SupportsDualStack { + if "aws" == _PartitionResult.Name { + uriString := func() string { + var out strings.Builder + out.WriteString("https://ecr-public.") + out.WriteString(_Region) + out.WriteString(".api.aws") + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } uriString := func() string { var out strings.Builder out.WriteString("https://api.ecr-public.") diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/generated.json b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/generated.json index f11524a5fe..04e54760c0 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/generated.json +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/generated.json @@ -44,12 +44,13 @@ "protocol_test.go", "serializers.go", "snapshot_test.go", + "sra_operation_order_test.go", "types/enums.go", "types/errors.go", "types/types.go", "validators.go" ], - "go": "1.15", + "go": "1.22", "module": "github.com/aws/aws-sdk-go-v2/service/ecrpublic", "unstable": false } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/go_module_metadata.go index 8fd54c55f3..872cb8f5ea 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/go_module_metadata.go @@ -3,4 +3,4 @@ package ecrpublic // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.31.2" +const goModuleVersion = "1.33.2" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/internal/endpoints/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/internal/endpoints/endpoints.go index 9a16fe412b..78baf149cf 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/internal/endpoints/endpoints.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecrpublic/internal/endpoints/endpoints.go @@ -87,6 +87,7 @@ func New() *Resolver { var partitionRegexp = struct { Aws *regexp.Regexp AwsCn *regexp.Regexp + AwsEusc *regexp.Regexp AwsIso *regexp.Regexp AwsIsoB *regexp.Regexp AwsIsoE *regexp.Regexp @@ -96,6 +97,7 @@ var partitionRegexp = struct { Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$"), AwsCn: regexp.MustCompile("^cn\\-\\w+\\-\\d+$"), + AwsEusc: regexp.MustCompile("^eusc\\-(de)\\-\\w+\\-\\d+$"), AwsIso: regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"), AwsIsoB: regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"), AwsIsoE: regexp.MustCompile("^eu\\-isoe\\-\\w+\\-\\d+$"), @@ -201,6 +203,27 @@ var defaultPartitions = endpoints.Partitions{ RegionRegex: partitionRegexp.AwsCn, IsRegionalized: true, }, + { + ID: "aws-eusc", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "api.ecr-public-fips.{region}.amazonaws.eu", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "api.ecr-public.{region}.amazonaws.eu", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsEusc, + IsRegionalized: true, + }, { ID: "aws-iso", Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md index 899b3db39f..32c9d51574 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/CHANGELOG.md @@ -1,3 +1,7 @@ +# v1.13.0 (2025-07-28) + +* **Feature**: Add support for HTTP interceptors. + # v1.12.4 (2025-06-17) * **Dependency Update**: Update to smithy-go v1.22.4. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go index c20427da9e..f4b9f0b948 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/go_module_metadata.go @@ -3,4 +3,4 @@ package acceptencoding // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.12.4" +const goModuleVersion = "1.13.0" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md index 9bbbf0eb43..62da8050f3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/CHANGELOG.md @@ -1,3 +1,28 @@ +# v1.13.4 (2025-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.3 (2025-08-11) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.2 (2025-08-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.1 (2025-07-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.0 (2025-07-28) + +* **Feature**: Add support for HTTP interceptors. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.18 (2025-07-19) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.12.17 (2025-06-17) * **Dependency Update**: Update to smithy-go v1.22.4. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go index 72de22c689..4a0c6ae3c9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/go_module_metadata.go @@ -3,4 +3,4 @@ package presignedurl // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.12.17" +const goModuleVersion = "1.13.4" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/CHANGELOG.md index acf702efc1..e8c45e2e67 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/CHANGELOG.md @@ -1,3 +1,38 @@ +# v1.44.2 (2025-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.44.1 (2025-08-20) + +* **Bug Fix**: Remove unused deserialization code. + +# v1.44.0 (2025-08-11) + +* **Feature**: Add support for configuring per-service Options via callback on global config. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.43.0 (2025-08-04) + +* **Feature**: Support configurable auth scheme preferences in service clients via AWS_AUTH_SCHEME_PREFERENCE in the environment, auth_scheme_preference in the config file, and through in-code settings on LoadDefaultConfig and client constructor methods. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.42.1 (2025-07-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.42.0 (2025-07-28) + +* **Feature**: Add support for HTTP interceptors. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.41.4 (2025-07-25) + +* **Documentation**: Doc only update: fixed grammatical errors. + +# v1.41.3 (2025-07-19) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.41.2 (2025-06-26) * **Documentation**: This release updates AWS CLI examples for KMS APIs. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_client.go index 1969e996ce..38c17c28a2 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_client.go @@ -420,24 +420,33 @@ func setResolvedDefaultsMode(o *Options) { // NewFromConfig returns a new client from the provided config. func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { opts := Options{ - Region: cfg.Region, - DefaultsMode: cfg.DefaultsMode, - RuntimeEnvironment: cfg.RuntimeEnvironment, - HTTPClient: cfg.HTTPClient, - Credentials: cfg.Credentials, - APIOptions: cfg.APIOptions, - Logger: cfg.Logger, - ClientLogMode: cfg.ClientLogMode, - AppID: cfg.AppID, + Region: cfg.Region, + DefaultsMode: cfg.DefaultsMode, + RuntimeEnvironment: cfg.RuntimeEnvironment, + HTTPClient: cfg.HTTPClient, + Credentials: cfg.Credentials, + APIOptions: cfg.APIOptions, + Logger: cfg.Logger, + ClientLogMode: cfg.ClientLogMode, + AppID: cfg.AppID, + AuthSchemePreference: cfg.AuthSchemePreference, } resolveAWSRetryerProvider(cfg, &opts) resolveAWSRetryMaxAttempts(cfg, &opts) resolveAWSRetryMode(cfg, &opts) resolveAWSEndpointResolver(cfg, &opts) + resolveInterceptors(cfg, &opts) resolveUseDualStackEndpoint(cfg, &opts) resolveUseFIPSEndpoint(cfg, &opts) resolveBaseEndpoint(cfg, &opts) - return New(opts, optFns...) + return New(opts, func(o *Options) { + for _, opt := range cfg.ServiceOptions { + opt(ServiceID, o) + } + for _, opt := range optFns { + opt(o) + } + }) } func resolveHTTPClient(o *Options) { @@ -551,6 +560,10 @@ func resolveAWSEndpointResolver(cfg aws.Config, o *Options) { o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions) } +func resolveInterceptors(cfg aws.Config, o *Options) { + o.Interceptors = cfg.Interceptors.Copy() +} + func addClientUserAgent(stack *middleware.Stack, options Options) error { ua, err := getOrAddRequestUserAgent(stack) if err != nil { @@ -857,6 +870,69 @@ func addDisableHTTPSMiddleware(stack *middleware.Stack, o Options) error { }, "ResolveEndpointV2", middleware.After) } +func addInterceptBeforeRetryLoop(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptBeforeRetryLoop{ + Interceptors: opts.Interceptors.BeforeRetryLoop, + }, "Retry", middleware.Before) +} + +func addInterceptAttempt(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptAttempt{ + BeforeAttempt: opts.Interceptors.BeforeAttempt, + AfterAttempt: opts.Interceptors.AfterAttempt, + }, "Retry", middleware.After) +} + +func addInterceptExecution(stack *middleware.Stack, opts Options) error { + return stack.Initialize.Add(&smithyhttp.InterceptExecution{ + BeforeExecution: opts.Interceptors.BeforeExecution, + AfterExecution: opts.Interceptors.AfterExecution, + }, middleware.Before) +} + +func addInterceptBeforeSerialization(stack *middleware.Stack, opts Options) error { + return stack.Serialize.Insert(&smithyhttp.InterceptBeforeSerialization{ + Interceptors: opts.Interceptors.BeforeSerialization, + }, "OperationSerializer", middleware.Before) +} + +func addInterceptAfterSerialization(stack *middleware.Stack, opts Options) error { + return stack.Serialize.Insert(&smithyhttp.InterceptAfterSerialization{ + Interceptors: opts.Interceptors.AfterSerialization, + }, "OperationSerializer", middleware.After) +} + +func addInterceptBeforeSigning(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptBeforeSigning{ + Interceptors: opts.Interceptors.BeforeSigning, + }, "Signing", middleware.Before) +} + +func addInterceptAfterSigning(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptAfterSigning{ + Interceptors: opts.Interceptors.AfterSigning, + }, "Signing", middleware.After) +} + +func addInterceptTransmit(stack *middleware.Stack, opts Options) error { + return stack.Deserialize.Add(&smithyhttp.InterceptTransmit{ + BeforeTransmit: opts.Interceptors.BeforeTransmit, + AfterTransmit: opts.Interceptors.AfterTransmit, + }, middleware.After) +} + +func addInterceptBeforeDeserialization(stack *middleware.Stack, opts Options) error { + return stack.Deserialize.Insert(&smithyhttp.InterceptBeforeDeserialization{ + Interceptors: opts.Interceptors.BeforeDeserialization, + }, "OperationDeserializer", middleware.After) // (deserialize stack is called in reverse) +} + +func addInterceptAfterDeserialization(stack *middleware.Stack, opts Options) error { + return stack.Deserialize.Insert(&smithyhttp.InterceptAfterDeserialization{ + Interceptors: opts.Interceptors.AfterDeserialization, + }, "OperationDeserializer", middleware.Before) +} + type spanInitializeStart struct { } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CancelKeyDeletion.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CancelKeyDeletion.go index 7ed501c8be..7f3710d8e7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CancelKeyDeletion.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CancelKeyDeletion.go @@ -170,6 +170,36 @@ func (c *Client) addOperationCancelKeyDeletionMiddlewares(stack *middleware.Stac if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ConnectCustomKeyStore.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ConnectCustomKeyStore.go index 7a12c3740e..484d825871 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ConnectCustomKeyStore.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ConnectCustomKeyStore.go @@ -223,6 +223,36 @@ func (c *Client) addOperationConnectCustomKeyStoreMiddlewares(stack *middleware. if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateAlias.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateAlias.go index 9ccf678de7..2e341e01b5 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateAlias.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateAlias.go @@ -94,7 +94,7 @@ type CreateAliasInput struct { // The alias name cannot begin with alias/aws/ . The alias/aws/ prefix is reserved // for [Amazon Web Services managed keys]. // - // [Amazon Web Services managed keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk + // [Amazon Web Services managed keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-key // // This member is required. AliasName *string @@ -119,7 +119,7 @@ type CreateAliasInput struct { // // To get the key ID and key ARN for a KMS key, use ListKeys or DescribeKey. // - // [customer managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk + // [customer managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key // [Find the key ID and key ARN]: https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html // // This member is required. @@ -223,6 +223,36 @@ func (c *Client) addOperationCreateAliasMiddlewares(stack *middleware.Stack, opt if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateCustomKeyStore.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateCustomKeyStore.go index 1f4292ed0f..a020bfceb7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateCustomKeyStore.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateCustomKeyStore.go @@ -368,6 +368,36 @@ func (c *Client) addOperationCreateCustomKeyStoreMiddlewares(stack *middleware.S if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateGrant.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateGrant.go index 07fa25e581..8d012641a1 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateGrant.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateGrant.go @@ -330,6 +330,36 @@ func (c *Client) addOperationCreateGrantMiddlewares(stack *middleware.Stack, opt if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateKey.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateKey.go index 0972863fb8..2184388545 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateKey.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_CreateKey.go @@ -23,9 +23,9 @@ import ( // Use the parameters of CreateKey to specify the type of KMS key, the source of // its key material, its key policy, description, tags, and other properties. // -// KMS has replaced the term customer master key (CMK) with KMS key and KMS key. -// The concept has not changed. To prevent breaking changes, KMS is keeping some -// variations of this term. +// KMS has replaced the term customer master key (CMK) with Key Management Service +// key and KMS key. The concept has not changed. To prevent breaking changes, KMS +// is keeping some variations of this term. // // To create different types of KMS keys, use the following guidance: // @@ -599,6 +599,36 @@ func (c *Client) addOperationCreateKeyMiddlewares(stack *middleware.Stack, optio if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Decrypt.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Decrypt.go index 27e045ae96..4d434382c3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Decrypt.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Decrypt.go @@ -346,6 +346,36 @@ func (c *Client) addOperationDecryptMiddlewares(stack *middleware.Stack, options if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeleteAlias.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeleteAlias.go index e377f5cb2a..9cda26a7a5 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeleteAlias.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeleteAlias.go @@ -173,6 +173,36 @@ func (c *Client) addOperationDeleteAliasMiddlewares(stack *middleware.Stack, opt if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeleteCustomKeyStore.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeleteCustomKeyStore.go index 9a38c3ef47..0f497524f6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeleteCustomKeyStore.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeleteCustomKeyStore.go @@ -189,6 +189,36 @@ func (c *Client) addOperationDeleteCustomKeyStoreMiddlewares(stack *middleware.S if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeleteImportedKeyMaterial.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeleteImportedKeyMaterial.go index c87556a9da..cf31955cdc 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeleteImportedKeyMaterial.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeleteImportedKeyMaterial.go @@ -191,6 +191,36 @@ func (c *Client) addOperationDeleteImportedKeyMaterialMiddlewares(stack *middlew if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeriveSharedSecret.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeriveSharedSecret.go index 952d7ed393..8cd12d3f81 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeriveSharedSecret.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DeriveSharedSecret.go @@ -343,6 +343,36 @@ func (c *Client) addOperationDeriveSharedSecretMiddlewares(stack *middleware.Sta if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DescribeCustomKeyStores.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DescribeCustomKeyStores.go index 6e9f9cc1df..a86f45b858 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DescribeCustomKeyStores.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DescribeCustomKeyStores.go @@ -220,6 +220,36 @@ func (c *Client) addOperationDescribeCustomKeyStoresMiddlewares(stack *middlewar if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DescribeKey.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DescribeKey.go index e86fcc4ed6..6e68b04e85 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DescribeKey.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DescribeKey.go @@ -72,12 +72,12 @@ import ( // [CloudHSM key stores]: https://docs.aws.amazon.com/kms/latest/developerguide/keystore-cloudhsm.html // [external key stores]: https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html // [How key rotation works]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotate-keys-how-it-works -// [customer managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk +// [customer managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key // [kms:DescribeKey]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html // [multi-Region keys]: https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html -// [Amazon Web Services managed keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk +// [Amazon Web Services managed keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-key // [KMS eventual consistency]: https://docs.aws.amazon.com/kms/latest/developerguide/accessing-kms.html#programming-eventual-consistency -// [Amazon Web Services managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk +// [Amazon Web Services managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-key func (c *Client) DescribeKey(ctx context.Context, params *DescribeKeyInput, optFns ...func(*Options)) (*DescribeKeyOutput, error) { if params == nil { params = &DescribeKeyInput{} @@ -119,7 +119,7 @@ type DescribeKeyInput struct { // To get the key ID and key ARN for a KMS key, use ListKeys or DescribeKey. To get the alias name // and alias ARN, use ListAliases. // - // [Amazon Web Services managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html##aws-managed-cmk + // [Amazon Web Services managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-key // // This member is required. KeyId *string @@ -236,6 +236,36 @@ func (c *Client) addOperationDescribeKeyMiddlewares(stack *middleware.Stack, opt if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DisableKey.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DisableKey.go index d0be2426ff..0761727fc3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DisableKey.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DisableKey.go @@ -162,6 +162,36 @@ func (c *Client) addOperationDisableKeyMiddlewares(stack *middleware.Stack, opti if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DisableKeyRotation.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DisableKeyRotation.go index 051a923f43..91d59ba2ef 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DisableKeyRotation.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DisableKeyRotation.go @@ -48,11 +48,11 @@ import ( // [imported key material]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html // [Key states of KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html // [HMAC KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html -// [Amazon Web Services managed KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk +// [Amazon Web Services managed KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-key // [automatic rotation of the key material]: https://docs.aws.amazon.com/kms/latest/developerguide/rotating-keys-enable-disable.html // [asymmetric KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html -// [customer managed KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk -// [Amazon Web Services owned KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk +// [customer managed KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key +// [Amazon Web Services owned KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key // [kms:DisableKeyRotation]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html // [multi-Region keys]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#multi-region-rotate // [KMS eventual consistency]: https://docs.aws.amazon.com/kms/latest/developerguide/accessing-kms.html#programming-eventual-consistency @@ -194,6 +194,36 @@ func (c *Client) addOperationDisableKeyRotationMiddlewares(stack *middleware.Sta if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DisconnectCustomKeyStore.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DisconnectCustomKeyStore.go index 6180c2f456..bab498173c 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DisconnectCustomKeyStore.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_DisconnectCustomKeyStore.go @@ -178,6 +178,36 @@ func (c *Client) addOperationDisconnectCustomKeyStoreMiddlewares(stack *middlewa if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_EnableKey.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_EnableKey.go index 52d28ad919..d36e6fa026 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_EnableKey.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_EnableKey.go @@ -161,6 +161,36 @@ func (c *Client) addOperationEnableKeyMiddlewares(stack *middleware.Stack, optio if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_EnableKeyRotation.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_EnableKeyRotation.go index 15705fa285..f9d7e409f3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_EnableKeyRotation.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_EnableKeyRotation.go @@ -73,11 +73,11 @@ import ( // [imported key material]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html // [Key states of KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html // [HMAC KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html -// [Amazon Web Services managed KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk -// [customer managed KMS key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk +// [Amazon Web Services managed KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-key +// [customer managed KMS key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key // [automatic rotation of the key material]: https://docs.aws.amazon.com/kms/latest/developerguide/rotating-keys-enable-disable.html // [asymmetric KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html -// [Amazon Web Services owned KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk +// [Amazon Web Services owned KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key // [multi-Region keys]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#multi-region-rotate // [KMS eventual consistency]: https://docs.aws.amazon.com/kms/latest/developerguide/accessing-kms.html#programming-eventual-consistency // [custom key store]: https://docs.aws.amazon.com/kms/latest/developerguide/key-store-overview.html @@ -233,6 +233,36 @@ func (c *Client) addOperationEnableKeyRotationMiddlewares(stack *middleware.Stac if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Encrypt.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Encrypt.go index 43be16d900..c41a237319 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Encrypt.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Encrypt.go @@ -301,6 +301,36 @@ func (c *Client) addOperationEncryptMiddlewares(stack *middleware.Stack, options if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKey.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKey.go index a7b6562b67..db8c44bdf6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKey.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKey.go @@ -360,6 +360,36 @@ func (c *Client) addOperationGenerateDataKeyMiddlewares(stack *middleware.Stack, if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKeyPair.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKeyPair.go index 9a977048e3..574ee2de11 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKeyPair.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKeyPair.go @@ -358,6 +358,36 @@ func (c *Client) addOperationGenerateDataKeyPairMiddlewares(stack *middleware.St if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKeyPairWithoutPlaintext.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKeyPairWithoutPlaintext.go index d56ed2123d..5f7bcbb7da 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKeyPairWithoutPlaintext.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKeyPairWithoutPlaintext.go @@ -285,6 +285,36 @@ func (c *Client) addOperationGenerateDataKeyPairWithoutPlaintextMiddlewares(stac if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKeyWithoutPlaintext.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKeyWithoutPlaintext.go index 914f2b0e66..c5dc82133e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKeyWithoutPlaintext.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateDataKeyWithoutPlaintext.go @@ -284,6 +284,36 @@ func (c *Client) addOperationGenerateDataKeyWithoutPlaintextMiddlewares(stack *m if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateMac.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateMac.go index fce1275cc3..76be873973 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateMac.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateMac.go @@ -226,6 +226,36 @@ func (c *Client) addOperationGenerateMacMiddlewares(stack *middleware.Stack, opt if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateRandom.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateRandom.go index 6e9aa4192f..699f759869 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateRandom.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GenerateRandom.go @@ -212,6 +212,36 @@ func (c *Client) addOperationGenerateRandomMiddlewares(stack *middleware.Stack, if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetKeyPolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetKeyPolicy.go index c91dc43430..e5254e7947 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetKeyPolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetKeyPolicy.go @@ -168,6 +168,36 @@ func (c *Client) addOperationGetKeyPolicyMiddlewares(stack *middleware.Stack, op if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetKeyRotationStatus.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetKeyRotationStatus.go index 032f8d4a98..b1a7ebfd76 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetKeyRotationStatus.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetKeyRotationStatus.go @@ -73,7 +73,7 @@ import ( // [Key states of KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html // [HMAC KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html // [rotation period]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#rotation-period -// [Amazon Web Services managed KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk +// [Amazon Web Services managed KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-key // [kms:GetKeyRotationStatus]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html // [automatic rotation of the key material]: https://docs.aws.amazon.com/kms/latest/developerguide/rotating-keys-enable-disable.html // [asymmetric KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html @@ -236,6 +236,36 @@ func (c *Client) addOperationGetKeyRotationStatusMiddlewares(stack *middleware.S if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetParametersForImport.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetParametersForImport.go index 411f555769..cac99a284a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetParametersForImport.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetParametersForImport.go @@ -286,6 +286,36 @@ func (c *Client) addOperationGetParametersForImportMiddlewares(stack *middleware if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetPublicKey.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetPublicKey.go index faeb8c05b2..7278028089 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetPublicKey.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_GetPublicKey.go @@ -277,6 +277,36 @@ func (c *Client) addOperationGetPublicKeyMiddlewares(stack *middleware.Stack, op if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ImportKeyMaterial.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ImportKeyMaterial.go index 089f73b1f1..181f70ee5e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ImportKeyMaterial.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ImportKeyMaterial.go @@ -350,6 +350,36 @@ func (c *Client) addOperationImportKeyMaterialMiddlewares(stack *middleware.Stac if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListAliases.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListAliases.go index c48e558f16..29658da3b1 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListAliases.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListAliases.go @@ -208,6 +208,36 @@ func (c *Client) addOperationListAliasesMiddlewares(stack *middleware.Stack, opt if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListGrants.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListGrants.go index 0cfe73532e..0728f413c4 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListGrants.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListGrants.go @@ -217,6 +217,36 @@ func (c *Client) addOperationListGrantsMiddlewares(stack *middleware.Stack, opti if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListKeyPolicies.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListKeyPolicies.go index ce74f3993e..0924a17ad2 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListKeyPolicies.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListKeyPolicies.go @@ -191,6 +191,36 @@ func (c *Client) addOperationListKeyPoliciesMiddlewares(stack *middleware.Stack, if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListKeyRotations.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListKeyRotations.go index 19a7da63f3..937a82bb05 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListKeyRotations.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListKeyRotations.go @@ -215,6 +215,36 @@ func (c *Client) addOperationListKeyRotationsMiddlewares(stack *middleware.Stack if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListKeys.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListKeys.go index 9119d5ac0f..92e0535223 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListKeys.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListKeys.go @@ -173,6 +173,36 @@ func (c *Client) addOperationListKeysMiddlewares(stack *middleware.Stack, option if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListResourceTags.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListResourceTags.go index fa54b4ebc4..36ac6e18cb 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListResourceTags.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListResourceTags.go @@ -207,6 +207,36 @@ func (c *Client) addOperationListResourceTagsMiddlewares(stack *middleware.Stack if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListRetirableGrants.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListRetirableGrants.go index 9244dbeaa0..f4a1ca5ef8 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListRetirableGrants.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ListRetirableGrants.go @@ -212,6 +212,36 @@ func (c *Client) addOperationListRetirableGrantsMiddlewares(stack *middleware.St if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_PutKeyPolicy.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_PutKeyPolicy.go index 3280fb324c..1bafead08c 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_PutKeyPolicy.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_PutKeyPolicy.go @@ -236,6 +236,36 @@ func (c *Client) addOperationPutKeyPolicyMiddlewares(stack *middleware.Stack, op if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ReEncrypt.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ReEncrypt.go index 96c271930a..8df9542c13 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ReEncrypt.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ReEncrypt.go @@ -389,6 +389,36 @@ func (c *Client) addOperationReEncryptMiddlewares(stack *middleware.Stack, optio if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ReplicateKey.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ReplicateKey.go index f896669b94..0e7853289c 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ReplicateKey.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ReplicateKey.go @@ -366,6 +366,36 @@ func (c *Client) addOperationReplicateKeyMiddlewares(stack *middleware.Stack, op if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_RetireGrant.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_RetireGrant.go index 353e6fa140..4051f3ecb8 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_RetireGrant.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_RetireGrant.go @@ -191,6 +191,36 @@ func (c *Client) addOperationRetireGrantMiddlewares(stack *middleware.Stack, opt if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_RevokeGrant.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_RevokeGrant.go index 346d074485..cd600365d1 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_RevokeGrant.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_RevokeGrant.go @@ -194,6 +194,36 @@ func (c *Client) addOperationRevokeGrantMiddlewares(stack *middleware.Stack, opt if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_RotateKeyOnDemand.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_RotateKeyOnDemand.go index 049f651502..ffe5396ae3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_RotateKeyOnDemand.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_RotateKeyOnDemand.go @@ -68,7 +68,7 @@ import ( // // [new key material]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys-import-key-material.html // [on-demand rotation]: https://docs.aws.amazon.com/kms/latest/developerguide/rotating-keys-on-demand.html -// [Amazon Web Services owned KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk +// [Amazon Web Services owned KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key // [automatic key rotation]: https://docs.aws.amazon.com/kms/latest/developerguide/rotating-keys-enable-disable.html // [kms:RotateKeyOnDemand]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html // [multi-Region keys]: https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html#multi-region-rotate @@ -76,7 +76,7 @@ import ( // [imported key material]: https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html // [Key states of KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html // [HMAC KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/hmac.html -// [Amazon Web Services managed KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk +// [Amazon Web Services managed KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-key // [asymmetric KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html // [custom key store]: https://docs.aws.amazon.com/kms/latest/developerguide/key-store-overview.html func (c *Client) RotateKeyOnDemand(ctx context.Context, params *RotateKeyOnDemandInput, optFns ...func(*Options)) (*RotateKeyOnDemandOutput, error) { @@ -224,6 +224,36 @@ func (c *Client) addOperationRotateKeyOnDemandMiddlewares(stack *middleware.Stac if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ScheduleKeyDeletion.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ScheduleKeyDeletion.go index 2d3bba4545..06fccbcbf0 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ScheduleKeyDeletion.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_ScheduleKeyDeletion.go @@ -248,6 +248,36 @@ func (c *Client) addOperationScheduleKeyDeletionMiddlewares(stack *middleware.St if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Sign.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Sign.go index 72f9af4068..5540f0d010 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Sign.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Sign.go @@ -314,6 +314,36 @@ func (c *Client) addOperationSignMiddlewares(stack *middleware.Stack, options Op if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_TagResource.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_TagResource.go index 6a9d0dbbaa..4242281b83 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_TagResource.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_TagResource.go @@ -50,15 +50,15 @@ import ( // Eventual consistency: The KMS API follows an eventual consistency model. For // more information, see [KMS eventual consistency]. // -// [Amazon Web Services owned key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk +// [Amazon Web Services owned key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-key // [Key states of KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html // [kms:TagResource]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html -// [customer managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk +// [customer managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key // [Tagging keys]: https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html // [alias]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html // [ABAC for KMS]: https://docs.aws.amazon.com/kms/latest/developerguide/abac.html // [KMS eventual consistency]: https://docs.aws.amazon.com/kms/latest/developerguide/accessing-kms.html#programming-eventual-consistency -// [Amazon Web Services managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk +// [Amazon Web Services managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-key // [custom key store]: https://docs.aws.amazon.com/kms/latest/developerguide/key-store-overview.html // [Tagging Amazon Web Services resources]: https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html func (c *Client) TagResource(ctx context.Context, params *TagResourceInput, optFns ...func(*Options)) (*TagResourceOutput, error) { @@ -205,6 +205,36 @@ func (c *Client) addOperationTagResourceMiddlewares(stack *middleware.Stack, opt if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UntagResource.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UntagResource.go index 3396eab1b3..1da9310021 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UntagResource.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UntagResource.go @@ -47,7 +47,7 @@ import ( // // [Key states of KMS keys]: https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html // [kms:UntagResource]: https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html -// [customer managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk +// [customer managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key // [Tagging keys]: https://docs.aws.amazon.com/kms/latest/developerguide/tagging-keys.html // [ABAC for KMS]: https://docs.aws.amazon.com/kms/latest/developerguide/abac.html // [KMS eventual consistency]: https://docs.aws.amazon.com/kms/latest/developerguide/accessing-kms.html#programming-eventual-consistency @@ -188,6 +188,36 @@ func (c *Client) addOperationUntagResourceMiddlewares(stack *middleware.Stack, o if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdateAlias.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdateAlias.go index 041d8fdc6e..0ae8d17b00 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdateAlias.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdateAlias.go @@ -115,8 +115,8 @@ type UpdateAliasInput struct { // // To verify that the alias is mapped to the correct KMS key, use ListAliases. // - // [customer managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk - // [Amazon Web Services managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk + // [customer managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key + // [Amazon Web Services managed key]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-key // // This member is required. TargetKeyId *string @@ -219,6 +219,36 @@ func (c *Client) addOperationUpdateAliasMiddlewares(stack *middleware.Stack, opt if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdateCustomKeyStore.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdateCustomKeyStore.go index caf5e0aced..6035e519b9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdateCustomKeyStore.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdateCustomKeyStore.go @@ -328,6 +328,36 @@ func (c *Client) addOperationUpdateCustomKeyStoreMiddlewares(stack *middleware.S if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdateKeyDescription.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdateKeyDescription.go index 9fb225c3bc..a9b18f3a33 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdateKeyDescription.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdateKeyDescription.go @@ -172,6 +172,36 @@ func (c *Client) addOperationUpdateKeyDescriptionMiddlewares(stack *middleware.S if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdatePrimaryRegion.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdatePrimaryRegion.go index 0064f84298..d944ae544e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdatePrimaryRegion.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_UpdatePrimaryRegion.go @@ -227,6 +227,36 @@ func (c *Client) addOperationUpdatePrimaryRegionMiddlewares(stack *middleware.St if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Verify.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Verify.go index 1a82529a13..6df67d4797 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Verify.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_Verify.go @@ -300,6 +300,36 @@ func (c *Client) addOperationVerifyMiddlewares(stack *middleware.Stack, options if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_VerifyMac.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_VerifyMac.go index 42a3447ef6..12eb74c756 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_VerifyMac.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/api_op_VerifyMac.go @@ -225,6 +225,36 @@ func (c *Client) addOperationVerifyMacMiddlewares(stack *middleware.Stack, optio if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/auth.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/auth.go index f9d4ef0354..a2665c2d29 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/auth.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/auth.go @@ -12,6 +12,8 @@ import ( "github.com/aws/smithy-go/middleware" "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" + "slices" + "strings" ) func bindAuthParamsRegion(_ interface{}, params *AuthResolverParameters, _ interface{}, options Options) { @@ -169,7 +171,8 @@ func (m *resolveAuthSchemeMiddleware) HandleFinalize(ctx context.Context, in mid } func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) (*resolvedAuthScheme, bool) { - for _, option := range options { + sorted := sortAuthOptions(options, m.options.AuthSchemePreference) + for _, option := range sorted { if option.SchemeID == smithyauth.SchemeIDAnonymous { return newResolvedAuthScheme(smithyhttp.NewAnonymousScheme(), option), true } @@ -188,6 +191,29 @@ func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) return nil, false } +func sortAuthOptions(options []*smithyauth.Option, preferred []string) []*smithyauth.Option { + byPriority := make([]*smithyauth.Option, 0, len(options)) + for _, prefName := range preferred { + for _, option := range options { + optName := option.SchemeID + if parts := strings.Split(option.SchemeID, "#"); len(parts) == 2 { + optName = parts[1] + } + if prefName == optName { + byPriority = append(byPriority, option) + } + } + } + for _, option := range options { + if !slices.ContainsFunc(byPriority, func(o *smithyauth.Option) bool { + return o.SchemeID == option.SchemeID + }) { + byPriority = append(byPriority, option) + } + } + return byPriority +} + type resolvedAuthSchemeKey struct{} type resolvedAuthScheme struct { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/deserializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/deserializers.go index 1008c7e239..bc5b16e3f9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/deserializers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/deserializers.go @@ -20,17 +20,8 @@ import ( "io" "io/ioutil" "strings" - "time" ) -func deserializeS3Expires(v string) (*time.Time, error) { - t, err := smithytime.ParseHTTPDate(v) - if err != nil { - return nil, nil - } - return &t, nil -} - type awsAwsjson11_deserializeOpCancelKeyDeletion struct { } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/doc.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/doc.go index cdd54c69c8..01fa8015a9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/doc.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/doc.go @@ -9,9 +9,9 @@ // This guide describes the KMS operations that you can call programmatically. For // general information about KMS, see the [Key Management Service Developer Guide]. // -// KMS has replaced the term customer master key (CMK) with KMS key and KMS key. -// The concept has not changed. To prevent breaking changes, KMS is keeping some -// variations of this term. +// KMS has replaced the term customer master key (CMK) with Key Management Service +// key and KMS key. The concept has not changed. To prevent breaking changes, KMS +// is keeping some variations of this term. // // Amazon Web Services provides SDKs that consist of libraries and sample code for // various programming languages and platforms (Java, Rust, Python, Ruby, .Net, diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/go_module_metadata.go index 30c4bda156..401afb3184 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/go_module_metadata.go @@ -3,4 +3,4 @@ package kms // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.41.2" +const goModuleVersion = "1.44.2" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/options.go b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/options.go index e7f5513b48..c33436b91b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/kms/options.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/kms/options.go @@ -119,12 +119,18 @@ type Options struct { // implementation if nil. HTTPClient HTTPClient + // Client registry of operation interceptors. + Interceptors smithyhttp.InterceptorRegistry + // The auth scheme resolver which determines how to authenticate for each // operation. AuthSchemeResolver AuthSchemeResolver // The list of auth schemes supported by the client. AuthSchemes []smithyhttp.AuthScheme + + // Priority list of preferred auth scheme names (e.g. sigv4a). + AuthSchemePreference []string } // Copy creates a clone where the APIOptions list is deep copied. @@ -132,6 +138,7 @@ func (o Options) Copy() Options { to := o to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) copy(to.APIOptions, o.APIOptions) + to.Interceptors = o.Interceptors.Copy() return to } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md index 6fdc4a2fa8..dafddce704 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/CHANGELOG.md @@ -1,3 +1,34 @@ +# v1.28.2 (2025-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.1 (2025-08-20) + +* **Bug Fix**: Remove unused deserialization code. + +# v1.28.0 (2025-08-11) + +* **Feature**: Add support for configuring per-service Options via callback on global config. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.0 (2025-08-04) + +* **Feature**: Support configurable auth scheme preferences in service clients via AWS_AUTH_SCHEME_PREFERENCE in the environment, auth_scheme_preference in the config file, and through in-code settings on LoadDefaultConfig and client constructor methods. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.1 (2025-07-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.0 (2025-07-28) + +* **Feature**: Add support for HTTP interceptors. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.25.6 (2025-07-19) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.25.5 (2025-06-17) * **Dependency Update**: Update to smithy-go v1.22.4. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_client.go index 9f10e65ad7..2c498e4689 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_client.go @@ -419,24 +419,33 @@ func setResolvedDefaultsMode(o *Options) { // NewFromConfig returns a new client from the provided config. func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { opts := Options{ - Region: cfg.Region, - DefaultsMode: cfg.DefaultsMode, - RuntimeEnvironment: cfg.RuntimeEnvironment, - HTTPClient: cfg.HTTPClient, - Credentials: cfg.Credentials, - APIOptions: cfg.APIOptions, - Logger: cfg.Logger, - ClientLogMode: cfg.ClientLogMode, - AppID: cfg.AppID, + Region: cfg.Region, + DefaultsMode: cfg.DefaultsMode, + RuntimeEnvironment: cfg.RuntimeEnvironment, + HTTPClient: cfg.HTTPClient, + Credentials: cfg.Credentials, + APIOptions: cfg.APIOptions, + Logger: cfg.Logger, + ClientLogMode: cfg.ClientLogMode, + AppID: cfg.AppID, + AuthSchemePreference: cfg.AuthSchemePreference, } resolveAWSRetryerProvider(cfg, &opts) resolveAWSRetryMaxAttempts(cfg, &opts) resolveAWSRetryMode(cfg, &opts) resolveAWSEndpointResolver(cfg, &opts) + resolveInterceptors(cfg, &opts) resolveUseDualStackEndpoint(cfg, &opts) resolveUseFIPSEndpoint(cfg, &opts) resolveBaseEndpoint(cfg, &opts) - return New(opts, optFns...) + return New(opts, func(o *Options) { + for _, opt := range cfg.ServiceOptions { + opt(ServiceID, o) + } + for _, opt := range optFns { + opt(o) + } + }) } func resolveHTTPClient(o *Options) { @@ -550,6 +559,10 @@ func resolveAWSEndpointResolver(cfg aws.Config, o *Options) { o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions) } +func resolveInterceptors(cfg aws.Config, o *Options) { + o.Interceptors = cfg.Interceptors.Copy() +} + func addClientUserAgent(stack *middleware.Stack, options Options) error { ua, err := getOrAddRequestUserAgent(stack) if err != nil { @@ -856,6 +869,69 @@ func addDisableHTTPSMiddleware(stack *middleware.Stack, o Options) error { }, "ResolveEndpointV2", middleware.After) } +func addInterceptBeforeRetryLoop(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptBeforeRetryLoop{ + Interceptors: opts.Interceptors.BeforeRetryLoop, + }, "Retry", middleware.Before) +} + +func addInterceptAttempt(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptAttempt{ + BeforeAttempt: opts.Interceptors.BeforeAttempt, + AfterAttempt: opts.Interceptors.AfterAttempt, + }, "Retry", middleware.After) +} + +func addInterceptExecution(stack *middleware.Stack, opts Options) error { + return stack.Initialize.Add(&smithyhttp.InterceptExecution{ + BeforeExecution: opts.Interceptors.BeforeExecution, + AfterExecution: opts.Interceptors.AfterExecution, + }, middleware.Before) +} + +func addInterceptBeforeSerialization(stack *middleware.Stack, opts Options) error { + return stack.Serialize.Insert(&smithyhttp.InterceptBeforeSerialization{ + Interceptors: opts.Interceptors.BeforeSerialization, + }, "OperationSerializer", middleware.Before) +} + +func addInterceptAfterSerialization(stack *middleware.Stack, opts Options) error { + return stack.Serialize.Insert(&smithyhttp.InterceptAfterSerialization{ + Interceptors: opts.Interceptors.AfterSerialization, + }, "OperationSerializer", middleware.After) +} + +func addInterceptBeforeSigning(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptBeforeSigning{ + Interceptors: opts.Interceptors.BeforeSigning, + }, "Signing", middleware.Before) +} + +func addInterceptAfterSigning(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptAfterSigning{ + Interceptors: opts.Interceptors.AfterSigning, + }, "Signing", middleware.After) +} + +func addInterceptTransmit(stack *middleware.Stack, opts Options) error { + return stack.Deserialize.Add(&smithyhttp.InterceptTransmit{ + BeforeTransmit: opts.Interceptors.BeforeTransmit, + AfterTransmit: opts.Interceptors.AfterTransmit, + }, middleware.After) +} + +func addInterceptBeforeDeserialization(stack *middleware.Stack, opts Options) error { + return stack.Deserialize.Insert(&smithyhttp.InterceptBeforeDeserialization{ + Interceptors: opts.Interceptors.BeforeDeserialization, + }, "OperationDeserializer", middleware.After) // (deserialize stack is called in reverse) +} + +func addInterceptAfterDeserialization(stack *middleware.Stack, opts Options) error { + return stack.Deserialize.Insert(&smithyhttp.InterceptAfterDeserialization{ + Interceptors: opts.Interceptors.AfterDeserialization, + }, "OperationDeserializer", middleware.Before) +} + type spanInitializeStart struct { } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_GetRoleCredentials.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_GetRoleCredentials.go index b8031eeea3..df5dc1674f 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_GetRoleCredentials.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_GetRoleCredentials.go @@ -147,6 +147,36 @@ func (c *Client) addOperationGetRoleCredentialsMiddlewares(stack *middleware.Sta if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccountRoles.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccountRoles.go index 4294e4d3c9..2a3b2ad902 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccountRoles.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccountRoles.go @@ -152,6 +152,36 @@ func (c *Client) addOperationListAccountRolesMiddlewares(stack *middleware.Stack if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccounts.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccounts.go index 1db72a995e..f6114a7c10 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccounts.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_ListAccounts.go @@ -151,6 +151,36 @@ func (c *Client) addOperationListAccountsMiddlewares(stack *middleware.Stack, op if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_Logout.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_Logout.go index 2ca66ca509..2c7f181c34 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_Logout.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/api_op_Logout.go @@ -146,6 +146,36 @@ func (c *Client) addOperationLogoutMiddlewares(stack *middleware.Stack, options if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/auth.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/auth.go index 366963b49f..708e53c5ad 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/auth.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/auth.go @@ -12,6 +12,8 @@ import ( "github.com/aws/smithy-go/middleware" "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" + "slices" + "strings" ) func bindAuthParamsRegion(_ interface{}, params *AuthResolverParameters, _ interface{}, options Options) { @@ -193,7 +195,8 @@ func (m *resolveAuthSchemeMiddleware) HandleFinalize(ctx context.Context, in mid } func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) (*resolvedAuthScheme, bool) { - for _, option := range options { + sorted := sortAuthOptions(options, m.options.AuthSchemePreference) + for _, option := range sorted { if option.SchemeID == smithyauth.SchemeIDAnonymous { return newResolvedAuthScheme(smithyhttp.NewAnonymousScheme(), option), true } @@ -212,6 +215,29 @@ func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) return nil, false } +func sortAuthOptions(options []*smithyauth.Option, preferred []string) []*smithyauth.Option { + byPriority := make([]*smithyauth.Option, 0, len(options)) + for _, prefName := range preferred { + for _, option := range options { + optName := option.SchemeID + if parts := strings.Split(option.SchemeID, "#"); len(parts) == 2 { + optName = parts[1] + } + if prefName == optName { + byPriority = append(byPriority, option) + } + } + } + for _, option := range options { + if !slices.ContainsFunc(byPriority, func(o *smithyauth.Option) bool { + return o.SchemeID == option.SchemeID + }) { + byPriority = append(byPriority, option) + } + } + return byPriority +} + type resolvedAuthSchemeKey struct{} type resolvedAuthScheme struct { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/deserializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/deserializers.go index ec23c36f5b..a889f3c7a7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/deserializers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/deserializers.go @@ -13,23 +13,13 @@ import ( smithyio "github.com/aws/smithy-go/io" "github.com/aws/smithy-go/middleware" "github.com/aws/smithy-go/ptr" - smithytime "github.com/aws/smithy-go/time" "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" "io" "io/ioutil" "strings" - "time" ) -func deserializeS3Expires(v string) (*time.Time, error) { - t, err := smithytime.ParseHTTPDate(v) - if err != nil { - return nil, nil - } - return &t, nil -} - type awsRestjson1_deserializeOpGetRoleCredentials struct { } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go index 2b303dc582..def5652fd9 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/go_module_metadata.go @@ -3,4 +3,4 @@ package sso // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.25.5" +const goModuleVersion = "1.28.2" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/options.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/options.go index aa744f1594..277550af47 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sso/options.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sso/options.go @@ -119,12 +119,18 @@ type Options struct { // implementation if nil. HTTPClient HTTPClient + // Client registry of operation interceptors. + Interceptors smithyhttp.InterceptorRegistry + // The auth scheme resolver which determines how to authenticate for each // operation. AuthSchemeResolver AuthSchemeResolver // The list of auth schemes supported by the client. AuthSchemes []smithyhttp.AuthScheme + + // Priority list of preferred auth scheme names (e.g. sigv4a). + AuthSchemePreference []string } // Copy creates a clone where the APIOptions list is deep copied. @@ -132,6 +138,7 @@ func (o Options) Copy() Options { to := o to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) copy(to.APIOptions, o.APIOptions) + to.Interceptors = o.Interceptors.Copy() return to } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md index 0f1157c795..35085b7fa8 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/CHANGELOG.md @@ -1,3 +1,38 @@ +# v1.34.0 (2025-08-26) + +* **Feature**: Remove incorrect endpoint tests + +# v1.33.2 (2025-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.33.1 (2025-08-20) + +* **Bug Fix**: Remove unused deserialization code. + +# v1.33.0 (2025-08-11) + +* **Feature**: Add support for configuring per-service Options via callback on global config. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.32.0 (2025-08-04) + +* **Feature**: Support configurable auth scheme preferences in service clients via AWS_AUTH_SCHEME_PREFERENCE in the environment, auth_scheme_preference in the config file, and through in-code settings on LoadDefaultConfig and client constructor methods. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.31.1 (2025-07-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.31.0 (2025-07-28) + +* **Feature**: Add support for HTTP interceptors. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.4 (2025-07-19) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.30.3 (2025-06-17) * **Dependency Update**: Update to smithy-go v1.22.4. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_client.go index 57440b1fa8..12ad2f5d9d 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_client.go @@ -419,24 +419,33 @@ func setResolvedDefaultsMode(o *Options) { // NewFromConfig returns a new client from the provided config. func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { opts := Options{ - Region: cfg.Region, - DefaultsMode: cfg.DefaultsMode, - RuntimeEnvironment: cfg.RuntimeEnvironment, - HTTPClient: cfg.HTTPClient, - Credentials: cfg.Credentials, - APIOptions: cfg.APIOptions, - Logger: cfg.Logger, - ClientLogMode: cfg.ClientLogMode, - AppID: cfg.AppID, + Region: cfg.Region, + DefaultsMode: cfg.DefaultsMode, + RuntimeEnvironment: cfg.RuntimeEnvironment, + HTTPClient: cfg.HTTPClient, + Credentials: cfg.Credentials, + APIOptions: cfg.APIOptions, + Logger: cfg.Logger, + ClientLogMode: cfg.ClientLogMode, + AppID: cfg.AppID, + AuthSchemePreference: cfg.AuthSchemePreference, } resolveAWSRetryerProvider(cfg, &opts) resolveAWSRetryMaxAttempts(cfg, &opts) resolveAWSRetryMode(cfg, &opts) resolveAWSEndpointResolver(cfg, &opts) + resolveInterceptors(cfg, &opts) resolveUseDualStackEndpoint(cfg, &opts) resolveUseFIPSEndpoint(cfg, &opts) resolveBaseEndpoint(cfg, &opts) - return New(opts, optFns...) + return New(opts, func(o *Options) { + for _, opt := range cfg.ServiceOptions { + opt(ServiceID, o) + } + for _, opt := range optFns { + opt(o) + } + }) } func resolveHTTPClient(o *Options) { @@ -550,6 +559,10 @@ func resolveAWSEndpointResolver(cfg aws.Config, o *Options) { o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions) } +func resolveInterceptors(cfg aws.Config, o *Options) { + o.Interceptors = cfg.Interceptors.Copy() +} + func addClientUserAgent(stack *middleware.Stack, options Options) error { ua, err := getOrAddRequestUserAgent(stack) if err != nil { @@ -856,6 +869,69 @@ func addDisableHTTPSMiddleware(stack *middleware.Stack, o Options) error { }, "ResolveEndpointV2", middleware.After) } +func addInterceptBeforeRetryLoop(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptBeforeRetryLoop{ + Interceptors: opts.Interceptors.BeforeRetryLoop, + }, "Retry", middleware.Before) +} + +func addInterceptAttempt(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptAttempt{ + BeforeAttempt: opts.Interceptors.BeforeAttempt, + AfterAttempt: opts.Interceptors.AfterAttempt, + }, "Retry", middleware.After) +} + +func addInterceptExecution(stack *middleware.Stack, opts Options) error { + return stack.Initialize.Add(&smithyhttp.InterceptExecution{ + BeforeExecution: opts.Interceptors.BeforeExecution, + AfterExecution: opts.Interceptors.AfterExecution, + }, middleware.Before) +} + +func addInterceptBeforeSerialization(stack *middleware.Stack, opts Options) error { + return stack.Serialize.Insert(&smithyhttp.InterceptBeforeSerialization{ + Interceptors: opts.Interceptors.BeforeSerialization, + }, "OperationSerializer", middleware.Before) +} + +func addInterceptAfterSerialization(stack *middleware.Stack, opts Options) error { + return stack.Serialize.Insert(&smithyhttp.InterceptAfterSerialization{ + Interceptors: opts.Interceptors.AfterSerialization, + }, "OperationSerializer", middleware.After) +} + +func addInterceptBeforeSigning(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptBeforeSigning{ + Interceptors: opts.Interceptors.BeforeSigning, + }, "Signing", middleware.Before) +} + +func addInterceptAfterSigning(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptAfterSigning{ + Interceptors: opts.Interceptors.AfterSigning, + }, "Signing", middleware.After) +} + +func addInterceptTransmit(stack *middleware.Stack, opts Options) error { + return stack.Deserialize.Add(&smithyhttp.InterceptTransmit{ + BeforeTransmit: opts.Interceptors.BeforeTransmit, + AfterTransmit: opts.Interceptors.AfterTransmit, + }, middleware.After) +} + +func addInterceptBeforeDeserialization(stack *middleware.Stack, opts Options) error { + return stack.Deserialize.Insert(&smithyhttp.InterceptBeforeDeserialization{ + Interceptors: opts.Interceptors.BeforeDeserialization, + }, "OperationDeserializer", middleware.After) // (deserialize stack is called in reverse) +} + +func addInterceptAfterDeserialization(stack *middleware.Stack, opts Options) error { + return stack.Deserialize.Insert(&smithyhttp.InterceptAfterDeserialization{ + Interceptors: opts.Interceptors.AfterDeserialization, + }, "OperationDeserializer", middleware.Before) +} + type spanInitializeStart struct { } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateToken.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateToken.go index 493878338e..b3875eeabe 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateToken.go @@ -218,6 +218,36 @@ func (c *Client) addOperationCreateTokenMiddlewares(stack *middleware.Stack, opt if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateTokenWithIAM.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateTokenWithIAM.go index 09f3647e8d..78b37b5eaf 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateTokenWithIAM.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_CreateTokenWithIAM.go @@ -256,6 +256,36 @@ func (c *Client) addOperationCreateTokenWithIAMMiddlewares(stack *middleware.Sta if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_RegisterClient.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_RegisterClient.go index 1e2d3828f5..8d50092fb1 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_RegisterClient.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_RegisterClient.go @@ -188,6 +188,36 @@ func (c *Client) addOperationRegisterClientMiddlewares(stack *middleware.Stack, if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_StartDeviceAuthorization.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_StartDeviceAuthorization.go index de0108f1f0..7242ac82b6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_StartDeviceAuthorization.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/api_op_StartDeviceAuthorization.go @@ -170,6 +170,36 @@ func (c *Client) addOperationStartDeviceAuthorizationMiddlewares(stack *middlewa if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/auth.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/auth.go index e4b87f5bc4..89b01c629d 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/auth.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/auth.go @@ -12,6 +12,8 @@ import ( "github.com/aws/smithy-go/middleware" "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" + "slices" + "strings" ) func bindAuthParamsRegion(_ interface{}, params *AuthResolverParameters, _ interface{}, options Options) { @@ -187,7 +189,8 @@ func (m *resolveAuthSchemeMiddleware) HandleFinalize(ctx context.Context, in mid } func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) (*resolvedAuthScheme, bool) { - for _, option := range options { + sorted := sortAuthOptions(options, m.options.AuthSchemePreference) + for _, option := range sorted { if option.SchemeID == smithyauth.SchemeIDAnonymous { return newResolvedAuthScheme(smithyhttp.NewAnonymousScheme(), option), true } @@ -206,6 +209,29 @@ func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) return nil, false } +func sortAuthOptions(options []*smithyauth.Option, preferred []string) []*smithyauth.Option { + byPriority := make([]*smithyauth.Option, 0, len(options)) + for _, prefName := range preferred { + for _, option := range options { + optName := option.SchemeID + if parts := strings.Split(option.SchemeID, "#"); len(parts) == 2 { + optName = parts[1] + } + if prefName == optName { + byPriority = append(byPriority, option) + } + } + } + for _, option := range options { + if !slices.ContainsFunc(byPriority, func(o *smithyauth.Option) bool { + return o.SchemeID == option.SchemeID + }) { + byPriority = append(byPriority, option) + } + } + return byPriority +} + type resolvedAuthSchemeKey struct{} type resolvedAuthScheme struct { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/deserializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/deserializers.go index 93f3653d53..17712c6dc7 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/deserializers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/deserializers.go @@ -13,22 +13,12 @@ import ( smithyio "github.com/aws/smithy-go/io" "github.com/aws/smithy-go/middleware" "github.com/aws/smithy-go/ptr" - smithytime "github.com/aws/smithy-go/time" "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" "io" "strings" - "time" ) -func deserializeS3Expires(v string) (*time.Time, error) { - t, err := smithytime.ParseHTTPDate(v) - if err != nil { - return nil, nil - } - return &t, nil -} - type awsRestjson1_deserializeOpCreateToken struct { } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go index a10fa7b4a4..d0758f9435 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/go_module_metadata.go @@ -3,4 +3,4 @@ package ssooidc // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.30.3" +const goModuleVersion = "1.34.0" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/options.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/options.go index 55dd80d0e0..f35f3d5a31 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/options.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ssooidc/options.go @@ -119,12 +119,18 @@ type Options struct { // implementation if nil. HTTPClient HTTPClient + // Client registry of operation interceptors. + Interceptors smithyhttp.InterceptorRegistry + // The auth scheme resolver which determines how to authenticate for each // operation. AuthSchemeResolver AuthSchemeResolver // The list of auth schemes supported by the client. AuthSchemes []smithyhttp.AuthScheme + + // Priority list of preferred auth scheme names (e.g. sigv4a). + AuthSchemePreference []string } // Copy creates a clone where the APIOptions list is deep copied. @@ -132,6 +138,7 @@ func (o Options) Copy() Options { to := o to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) copy(to.APIOptions, o.APIOptions) + to.Interceptors = o.Interceptors.Copy() return to } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md index e1722a6d0f..ca18a1e9f2 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/CHANGELOG.md @@ -1,3 +1,35 @@ +# v1.38.0 (2025-08-21) + +* **Feature**: Remove incorrect endpoint tests +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.37.1 (2025-08-20) + +* **Bug Fix**: Remove unused deserialization code. + +# v1.37.0 (2025-08-11) + +* **Feature**: Add support for configuring per-service Options via callback on global config. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.36.0 (2025-08-04) + +* **Feature**: Support configurable auth scheme preferences in service clients via AWS_AUTH_SCHEME_PREFERENCE in the environment, auth_scheme_preference in the config file, and through in-code settings on LoadDefaultConfig and client constructor methods. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.35.1 (2025-07-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.35.0 (2025-07-28) + +* **Feature**: Add support for HTTP interceptors. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.34.1 (2025-07-19) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.34.0 (2025-06-17) * **Feature**: The AWS Security Token Service APIs AssumeRoleWithSAML and AssumeRoleWithWebIdentity can now be invoked without pre-configured AWS credentials in the SDK configuration. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go index fca363d2f9..6658babc95 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_client.go @@ -423,24 +423,33 @@ func setResolvedDefaultsMode(o *Options) { // NewFromConfig returns a new client from the provided config. func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { opts := Options{ - Region: cfg.Region, - DefaultsMode: cfg.DefaultsMode, - RuntimeEnvironment: cfg.RuntimeEnvironment, - HTTPClient: cfg.HTTPClient, - Credentials: cfg.Credentials, - APIOptions: cfg.APIOptions, - Logger: cfg.Logger, - ClientLogMode: cfg.ClientLogMode, - AppID: cfg.AppID, + Region: cfg.Region, + DefaultsMode: cfg.DefaultsMode, + RuntimeEnvironment: cfg.RuntimeEnvironment, + HTTPClient: cfg.HTTPClient, + Credentials: cfg.Credentials, + APIOptions: cfg.APIOptions, + Logger: cfg.Logger, + ClientLogMode: cfg.ClientLogMode, + AppID: cfg.AppID, + AuthSchemePreference: cfg.AuthSchemePreference, } resolveAWSRetryerProvider(cfg, &opts) resolveAWSRetryMaxAttempts(cfg, &opts) resolveAWSRetryMode(cfg, &opts) resolveAWSEndpointResolver(cfg, &opts) + resolveInterceptors(cfg, &opts) resolveUseDualStackEndpoint(cfg, &opts) resolveUseFIPSEndpoint(cfg, &opts) resolveBaseEndpoint(cfg, &opts) - return New(opts, optFns...) + return New(opts, func(o *Options) { + for _, opt := range cfg.ServiceOptions { + opt(ServiceID, o) + } + for _, opt := range optFns { + opt(o) + } + }) } func resolveHTTPClient(o *Options) { @@ -554,6 +563,10 @@ func resolveAWSEndpointResolver(cfg aws.Config, o *Options) { o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions) } +func resolveInterceptors(cfg aws.Config, o *Options) { + o.Interceptors = cfg.Interceptors.Copy() +} + func addClientUserAgent(stack *middleware.Stack, options Options) error { ua, err := getOrAddRequestUserAgent(stack) if err != nil { @@ -1008,6 +1021,69 @@ func addDisableHTTPSMiddleware(stack *middleware.Stack, o Options) error { }, "ResolveEndpointV2", middleware.After) } +func addInterceptBeforeRetryLoop(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptBeforeRetryLoop{ + Interceptors: opts.Interceptors.BeforeRetryLoop, + }, "Retry", middleware.Before) +} + +func addInterceptAttempt(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptAttempt{ + BeforeAttempt: opts.Interceptors.BeforeAttempt, + AfterAttempt: opts.Interceptors.AfterAttempt, + }, "Retry", middleware.After) +} + +func addInterceptExecution(stack *middleware.Stack, opts Options) error { + return stack.Initialize.Add(&smithyhttp.InterceptExecution{ + BeforeExecution: opts.Interceptors.BeforeExecution, + AfterExecution: opts.Interceptors.AfterExecution, + }, middleware.Before) +} + +func addInterceptBeforeSerialization(stack *middleware.Stack, opts Options) error { + return stack.Serialize.Insert(&smithyhttp.InterceptBeforeSerialization{ + Interceptors: opts.Interceptors.BeforeSerialization, + }, "OperationSerializer", middleware.Before) +} + +func addInterceptAfterSerialization(stack *middleware.Stack, opts Options) error { + return stack.Serialize.Insert(&smithyhttp.InterceptAfterSerialization{ + Interceptors: opts.Interceptors.AfterSerialization, + }, "OperationSerializer", middleware.After) +} + +func addInterceptBeforeSigning(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptBeforeSigning{ + Interceptors: opts.Interceptors.BeforeSigning, + }, "Signing", middleware.Before) +} + +func addInterceptAfterSigning(stack *middleware.Stack, opts Options) error { + return stack.Finalize.Insert(&smithyhttp.InterceptAfterSigning{ + Interceptors: opts.Interceptors.AfterSigning, + }, "Signing", middleware.After) +} + +func addInterceptTransmit(stack *middleware.Stack, opts Options) error { + return stack.Deserialize.Add(&smithyhttp.InterceptTransmit{ + BeforeTransmit: opts.Interceptors.BeforeTransmit, + AfterTransmit: opts.Interceptors.AfterTransmit, + }, middleware.After) +} + +func addInterceptBeforeDeserialization(stack *middleware.Stack, opts Options) error { + return stack.Deserialize.Insert(&smithyhttp.InterceptBeforeDeserialization{ + Interceptors: opts.Interceptors.BeforeDeserialization, + }, "OperationDeserializer", middleware.After) // (deserialize stack is called in reverse) +} + +func addInterceptAfterDeserialization(stack *middleware.Stack, opts Options) error { + return stack.Deserialize.Insert(&smithyhttp.InterceptAfterDeserialization{ + Interceptors: opts.Interceptors.AfterDeserialization, + }, "OperationDeserializer", middleware.Before) +} + type spanInitializeStart struct { } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go index 524e36eb61..f3a93418fa 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRole.go @@ -502,6 +502,36 @@ func (c *Client) addOperationAssumeRoleMiddlewares(stack *middleware.Stack, opti if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go index 400f809e30..9dcceec12a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithSAML.go @@ -434,6 +434,36 @@ func (c *Client) addOperationAssumeRoleWithSAMLMiddlewares(stack *middleware.Sta if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go index e5708cbd1d..5975a0cdee 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoleWithWebIdentity.go @@ -454,6 +454,36 @@ func (c *Client) addOperationAssumeRoleWithWebIdentityMiddlewares(stack *middlew if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoot.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoot.go index a0f7a46713..571f06728a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoot.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_AssumeRoot.go @@ -199,6 +199,36 @@ func (c *Client) addOperationAssumeRootMiddlewares(stack *middleware.Stack, opti if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go index 9e7cb17d36..786bac89b8 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_DecodeAuthorizationMessage.go @@ -171,6 +171,36 @@ func (c *Client) addOperationDecodeAuthorizationMessageMiddlewares(stack *middle if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go index 28c05f13bf..6c1f878981 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetAccessKeyInfo.go @@ -162,6 +162,36 @@ func (c *Client) addOperationGetAccessKeyInfoMiddlewares(stack *middleware.Stack if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go index de137b7dc4..7d0653398b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetCallerIdentity.go @@ -150,6 +150,36 @@ func (c *Client) addOperationGetCallerIdentityMiddlewares(stack *middleware.Stac if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go index 67c041b30e..1c2f28e519 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetFederationToken.go @@ -375,6 +375,36 @@ func (c *Client) addOperationGetFederationTokenMiddlewares(stack *middleware.Sta if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go index 903d151ce2..2560469900 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/api_op_GetSessionToken.go @@ -221,6 +221,36 @@ func (c *Client) addOperationGetSessionTokenMiddlewares(stack *middleware.Stack, if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } + if err = addInterceptBeforeRetryLoop(stack, options); err != nil { + return err + } + if err = addInterceptAttempt(stack, options); err != nil { + return err + } + if err = addInterceptExecution(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSerialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterSerialization(stack, options); err != nil { + return err + } + if err = addInterceptBeforeSigning(stack, options); err != nil { + return err + } + if err = addInterceptAfterSigning(stack, options); err != nil { + return err + } + if err = addInterceptTransmit(stack, options); err != nil { + return err + } + if err = addInterceptBeforeDeserialization(stack, options); err != nil { + return err + } + if err = addInterceptAfterDeserialization(stack, options); err != nil { + return err + } if err = addSpanInitializeStart(stack); err != nil { return err } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/auth.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/auth.go index a90b2b7362..2a81b3fb19 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/auth.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/auth.go @@ -12,6 +12,8 @@ import ( "github.com/aws/smithy-go/middleware" "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" + "slices" + "strings" ) func bindAuthParamsRegion(_ interface{}, params *AuthResolverParameters, _ interface{}, options Options) { @@ -181,7 +183,8 @@ func (m *resolveAuthSchemeMiddleware) HandleFinalize(ctx context.Context, in mid } func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) (*resolvedAuthScheme, bool) { - for _, option := range options { + sorted := sortAuthOptions(options, m.options.AuthSchemePreference) + for _, option := range sorted { if option.SchemeID == smithyauth.SchemeIDAnonymous { return newResolvedAuthScheme(smithyhttp.NewAnonymousScheme(), option), true } @@ -200,6 +203,29 @@ func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) return nil, false } +func sortAuthOptions(options []*smithyauth.Option, preferred []string) []*smithyauth.Option { + byPriority := make([]*smithyauth.Option, 0, len(options)) + for _, prefName := range preferred { + for _, option := range options { + optName := option.SchemeID + if parts := strings.Split(option.SchemeID, "#"); len(parts) == 2 { + optName = parts[1] + } + if prefName == optName { + byPriority = append(byPriority, option) + } + } + } + for _, option := range options { + if !slices.ContainsFunc(byPriority, func(o *smithyauth.Option) bool { + return o.SchemeID == option.SchemeID + }) { + byPriority = append(byPriority, option) + } + } + return byPriority +} + type resolvedAuthSchemeKey struct{} type resolvedAuthScheme struct { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/deserializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/deserializers.go index 59349890f6..a1ac917ec6 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/deserializers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/deserializers.go @@ -21,17 +21,8 @@ import ( "io" "strconv" "strings" - "time" ) -func deserializeS3Expires(v string) (*time.Time, error) { - t, err := smithytime.ParseHTTPDate(v) - if err != nil { - return nil, nil - } - return &t, nil -} - type awsAwsquery_deserializeOpAssumeRole struct { } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go index 0e024c501b..931a5d81e1 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/go_module_metadata.go @@ -3,4 +3,4 @@ package sts // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.34.0" +const goModuleVersion = "1.38.0" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/options.go b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/options.go index e1398f3bb8..f60b7d3381 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/service/sts/options.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/sts/options.go @@ -119,12 +119,18 @@ type Options struct { // implementation if nil. HTTPClient HTTPClient + // Client registry of operation interceptors. + Interceptors smithyhttp.InterceptorRegistry + // The auth scheme resolver which determines how to authenticate for each // operation. AuthSchemeResolver AuthSchemeResolver // The list of auth schemes supported by the client. AuthSchemes []smithyhttp.AuthScheme + + // Priority list of preferred auth scheme names (e.g. sigv4a). + AuthSchemePreference []string } // Copy creates a clone where the APIOptions list is deep copied. @@ -132,6 +138,7 @@ func (o Options) Copy() Options { to := o to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) copy(to.APIOptions, o.APIOptions) + to.Interceptors = o.Interceptors.Copy() return to } diff --git a/vendor/github.com/aws/aws-sdk-go/aws/auth/bearer/token.go b/vendor/github.com/aws/aws-sdk-go/aws/auth/bearer/token.go index dd950a286f..b20f75e162 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/auth/bearer/token.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/auth/bearer/token.go @@ -1,8 +1,11 @@ +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package bearer import ( - "github.com/aws/aws-sdk-go/aws" "time" + + "github.com/aws/aws-sdk-go/aws" ) // Token provides a type wrapping a bearer token and expiration metadata. diff --git a/vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go b/vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go index 99849c0e19..8a31d481f1 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go @@ -1,4 +1,7 @@ // Package awserr represents API error interface accessors for the SDK. +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package awserr // An Error wraps lower level errors with code, message and an original error. @@ -10,24 +13,23 @@ package awserr // // Example: // -// output, err := s3manage.Upload(svc, input, opts) -// if err != nil { -// if awsErr, ok := err.(awserr.Error); ok { -// // Get error details -// log.Println("Error:", awsErr.Code(), awsErr.Message()) -// -// // Prints out full error message, including original error if there was one. -// log.Println("Error:", awsErr.Error()) -// -// // Get original error -// if origErr := awsErr.OrigErr(); origErr != nil { -// // operate on original error. -// } -// } else { -// fmt.Println(err.Error()) -// } -// } -// +// output, err := s3manage.Upload(svc, input, opts) +// if err != nil { +// if awsErr, ok := err.(awserr.Error); ok { +// // Get error details +// log.Println("Error:", awsErr.Code(), awsErr.Message()) +// +// // Prints out full error message, including original error if there was one. +// log.Println("Error:", awsErr.Error()) +// +// // Get original error +// if origErr := awsErr.OrigErr(); origErr != nil { +// // operate on original error. +// } +// } else { +// fmt.Println(err.Error()) +// } +// } type Error interface { // Satisfy the generic error interface. error @@ -100,32 +102,31 @@ func NewBatchError(code, message string, errs []error) BatchedErrors { // // Example: // -// output, err := s3manage.Upload(svc, input, opts) -// if err != nil { -// if reqerr, ok := err.(RequestFailure); ok { -// log.Println("Request failed", reqerr.Code(), reqerr.Message(), reqerr.RequestID()) -// } else { -// log.Println("Error:", err.Error()) -// } -// } +// output, err := s3manage.Upload(svc, input, opts) +// if err != nil { +// if reqerr, ok := err.(RequestFailure); ok { +// log.Println("Request failed", reqerr.Code(), reqerr.Message(), reqerr.RequestID()) +// } else { +// log.Println("Error:", err.Error()) +// } +// } // // Combined with awserr.Error: // -// output, err := s3manage.Upload(svc, input, opts) -// if err != nil { -// if awsErr, ok := err.(awserr.Error); ok { -// // Generic AWS Error with Code, Message, and original error (if any) -// fmt.Println(awsErr.Code(), awsErr.Message(), awsErr.OrigErr()) -// -// if reqErr, ok := err.(awserr.RequestFailure); ok { -// // A service error occurred -// fmt.Println(reqErr.StatusCode(), reqErr.RequestID()) -// } -// } else { -// fmt.Println(err.Error()) -// } -// } -// +// output, err := s3manage.Upload(svc, input, opts) +// if err != nil { +// if awsErr, ok := err.(awserr.Error); ok { +// // Generic AWS Error with Code, Message, and original error (if any) +// fmt.Println(awsErr.Code(), awsErr.Message(), awsErr.OrigErr()) +// +// if reqErr, ok := err.(awserr.RequestFailure); ok { +// // A service error occurred +// fmt.Println(reqErr.StatusCode(), reqErr.RequestID()) +// } +// } else { +// fmt.Println(err.Error()) +// } +// } type RequestFailure interface { Error diff --git a/vendor/github.com/aws/aws-sdk-go/aws/awsutil/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/doc.go new file mode 100644 index 0000000000..5ebbfcaeb5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/awsutil/doc.go @@ -0,0 +1,3 @@ +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. +package awsutil diff --git a/vendor/github.com/aws/aws-sdk-go/aws/client/client.go b/vendor/github.com/aws/aws-sdk-go/aws/client/client.go index b147f103ce..12b3f7ead0 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/client/client.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/client/client.go @@ -1,3 +1,5 @@ +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package client import ( diff --git a/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go b/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go index a7530ebb38..972103eddd 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go @@ -1,3 +1,5 @@ +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package metadata // ClientInfo wraps immutable data from the client.Client structure. diff --git a/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go b/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go index 36a915efea..fba8d74c72 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go @@ -1,3 +1,5 @@ +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package corehandlers import ( diff --git a/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go b/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go index a880a3de8f..c561f4a6f0 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go @@ -14,38 +14,39 @@ // // Example of using the environment variable credentials. // -// creds := credentials.NewEnvCredentials() +// creds := credentials.NewEnvCredentials() // -// // Retrieve the credentials value -// credValue, err := creds.Get() -// if err != nil { -// // handle error -// } +// // Retrieve the credentials value +// credValue, err := creds.Get() +// if err != nil { +// // handle error +// } // // Example of forcing credentials to expire and be refreshed on the next Get(). // This may be helpful to proactively expire credentials and refresh them sooner // than they would naturally expire on their own. // -// creds := credentials.NewCredentials(&ec2rolecreds.EC2RoleProvider{}) -// creds.Expire() -// credsValue, err := creds.Get() -// // New credentials will be retrieved instead of from cache. +// creds := credentials.NewCredentials(&ec2rolecreds.EC2RoleProvider{}) +// creds.Expire() +// credsValue, err := creds.Get() +// // New credentials will be retrieved instead of from cache. // -// -// Custom Provider +// # Custom Provider // // Each Provider built into this package also provides a helper method to generate // a Credentials pointer setup with the provider. To use a custom Provider just // create a type which satisfies the Provider interface and pass it to the // NewCredentials method. // -// type MyProvider struct{} -// func (m *MyProvider) Retrieve() (Value, error) {...} -// func (m *MyProvider) IsExpired() bool {...} +// type MyProvider struct{} +// func (m *MyProvider) Retrieve() (Value, error) {...} +// func (m *MyProvider) IsExpired() bool {...} // -// creds := credentials.NewCredentials(&MyProvider{}) -// credValue, err := creds.Get() +// creds := credentials.NewCredentials(&MyProvider{}) +// credValue, err := creds.Get() // +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package credentials import ( @@ -64,10 +65,10 @@ import ( // when making service API calls. For example, when accessing public // s3 buckets. // -// svc := s3.New(session.Must(session.NewSession(&aws.Config{ -// Credentials: credentials.AnonymousCredentials, -// }))) -// // Access public S3 buckets. +// svc := s3.New(session.Must(session.NewSession(&aws.Config{ +// Credentials: credentials.AnonymousCredentials, +// }))) +// // Access public S3 buckets. var AnonymousCredentials = NewStaticCredentials("", "", "") // A Value is the AWS credentials value for individual credential fields. @@ -150,10 +151,11 @@ func (p ErrorProvider) IsExpired() bool { // provider's struct. // // Example: -// type EC2RoleProvider struct { -// Expiry -// ... -// } +// +// type EC2RoleProvider struct { +// Expiry +// ... +// } type Expiry struct { // The date/time when to expire on expiration time.Time diff --git a/vendor/github.com/aws/aws-sdk-go/aws/crr/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/crr/doc.go new file mode 100644 index 0000000000..19f9ce620d --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/crr/doc.go @@ -0,0 +1,3 @@ +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. +package crr diff --git a/vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go index 25a66d1dda..7636aa6aa6 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go @@ -3,7 +3,7 @@ // control options, and configuration for the CSM client. The client can be // controlled manually, or automatically via the SDK's Session configuration. // -// Enabling CSM client via SDK's Session configuration +// # Enabling CSM client via SDK's Session configuration // // The CSM client can be enabled automatically via SDK's Session configuration. // The SDK's session configuration enables the CSM client if the AWS_CSM_PORT @@ -12,39 +12,39 @@ // The configuration options for the CSM client via the SDK's session // configuration are: // -// * AWS_CSM_PORT= -// The port number the CSM agent will receive metrics on. +// - AWS_CSM_PORT= +// The port number the CSM agent will receive metrics on. // -// * AWS_CSM_HOST= -// The hostname, or IP address the CSM agent will receive metrics on. -// Without port number. +// - AWS_CSM_HOST= +// The hostname, or IP address the CSM agent will receive metrics on. +// Without port number. // -// Manually enabling the CSM client +// # Manually enabling the CSM client // // The CSM client can be started, paused, and resumed manually. The Start // function will enable the CSM client to publish metrics to the CSM agent. It // is safe to call Start concurrently, but if Start is called additional times // with different ClientID or address it will panic. // -// r, err := csm.Start("clientID", ":31000") -// if err != nil { -// panic(fmt.Errorf("failed starting CSM: %v", err)) -// } +// r, err := csm.Start("clientID", ":31000") +// if err != nil { +// panic(fmt.Errorf("failed starting CSM: %v", err)) +// } // // When controlling the CSM client manually, you must also inject its request // handlers into the SDK's Session configuration for the SDK's API clients to // publish metrics. // -// sess, err := session.NewSession(&aws.Config{}) -// if err != nil { -// panic(fmt.Errorf("failed loading session: %v", err)) -// } +// sess, err := session.NewSession(&aws.Config{}) +// if err != nil { +// panic(fmt.Errorf("failed loading session: %v", err)) +// } // -// // Add CSM client's metric publishing request handlers to the SDK's -// // Session Configuration. -// r.InjectHandlers(&sess.Handlers) +// // Add CSM client's metric publishing request handlers to the SDK's +// // Session Configuration. +// r.InjectHandlers(&sess.Handlers) // -// Controlling CSM client +// # Controlling CSM client // // Once the CSM client has been enabled the Get function will return a Reporter // value that you can use to pause and resume the metrics published to the CSM @@ -54,16 +54,19 @@ // The Pause method can be called to stop the CSM client publishing metrics to // the CSM agent. The Continue method will resume metric publishing. // -// // Get the CSM client Reporter. -// r := csm.Get() +// // Get the CSM client Reporter. +// r := csm.Get() // -// // Will pause monitoring -// r.Pause() -// resp, err = client.GetObject(&s3.GetObjectInput{ -// Bucket: aws.String("bucket"), -// Key: aws.String("key"), -// }) +// // Will pause monitoring +// r.Pause() +// resp, err = client.GetObject(&s3.GetObjectInput{ +// Bucket: aws.String("bucket"), +// Key: aws.String("key"), +// }) // -// // Resume monitoring -// r.Continue() +// // Resume monitoring +// r.Continue() +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package csm diff --git a/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go index 1ba80b5760..3675504c6b 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go @@ -5,6 +5,9 @@ // instead. This package is useful when you need to reset the defaults // of a session or service client to the SDK defaults before setting // additional parameters. +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package defaults import ( diff --git a/vendor/github.com/aws/aws-sdk-go/aws/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/doc.go index 4fcb616184..bf20b773b3 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/doc.go @@ -1,7 +1,7 @@ // Package aws provides the core SDK's utilities and shared types. Use this package's // utilities to simplify setting and reading API operations parameters. // -// Value and Pointer Conversion Utilities +// # Value and Pointer Conversion Utilities // // This package includes a helper conversion utility for each scalar type the SDK's // API use. These utilities make getting a pointer of the scalar, and dereferencing @@ -16,33 +16,33 @@ // to get pointer of a literal string value, because getting the address of a // literal requires assigning the value to a variable first. // -// var strPtr *string +// var strPtr *string // -// // Without the SDK's conversion functions -// str := "my string" -// strPtr = &str +// // Without the SDK's conversion functions +// str := "my string" +// strPtr = &str // -// // With the SDK's conversion functions -// strPtr = aws.String("my string") +// // With the SDK's conversion functions +// strPtr = aws.String("my string") // -// // Convert *string to string value -// str = aws.StringValue(strPtr) +// // Convert *string to string value +// str = aws.StringValue(strPtr) // // In addition to scalars the aws package also includes conversion utilities for // map and slice for commonly types used in API parameters. The map and slice // conversion functions use similar naming pattern as the scalar conversion // functions. // -// var strPtrs []*string -// var strs []string = []string{"Go", "Gophers", "Go"} +// var strPtrs []*string +// var strs []string = []string{"Go", "Gophers", "Go"} // -// // Convert []string to []*string -// strPtrs = aws.StringSlice(strs) +// // Convert []string to []*string +// strPtrs = aws.StringSlice(strs) // -// // Convert []*string to []string -// strs = aws.StringValueSlice(strPtrs) +// // Convert []*string to []string +// strs = aws.StringValueSlice(strPtrs) // -// SDK Default HTTP Client +// # SDK Default HTTP Client // // The SDK will use the http.DefaultClient if a HTTP client is not provided to // the SDK's Session, or service client constructor. This means that if the @@ -53,4 +53,7 @@ // a custom HTTP Client to share explicitly through your application. You can // configure the SDK to use the custom HTTP Client by setting the HTTPClient // value of the SDK's Config type when creating a Session or service client. +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package aws diff --git a/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go b/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go index f4cc8751d0..5fcc35a1fc 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go @@ -9,6 +9,9 @@ // The endpoint of the EC2 IMDS client can be configured via the environment // variable, AWS_EC2_METADATA_SERVICE_ENDPOINT when creating the client with a // Session. See aws/session#Options.EC2IMDSEndpoint for more details. +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package ec2metadata import ( diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go index 66dec6bebf..7ba7aee50f 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go @@ -62,4 +62,7 @@ // Region: aws.String("us-west-2"), // EndpointResolver: endpoints.ResolverFunc(myCustomResolver), // })) +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package endpoints diff --git a/vendor/github.com/aws/aws-sdk-go/aws/request/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/request/doc.go new file mode 100644 index 0000000000..bd3c3441f0 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go/aws/request/doc.go @@ -0,0 +1,3 @@ +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. +package request diff --git a/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go b/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go index ff3cc012ae..f91389034a 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/session/doc.go @@ -1,367 +1,366 @@ -/* -Package session provides configuration for the SDK's service clients. Sessions -can be shared across service clients that share the same base configuration. - -Sessions are safe to use concurrently as long as the Session is not being -modified. Sessions should be cached when possible, because creating a new -Session will load all configuration values from the environment, and config -files each time the Session is created. Sharing the Session value across all of -your service clients will ensure the configuration is loaded the fewest number -of times possible. - -Sessions options from Shared Config - -By default NewSession will only load credentials from the shared credentials -file (~/.aws/credentials). If the AWS_SDK_LOAD_CONFIG environment variable is -set to a truthy value the Session will be created from the configuration -values from the shared config (~/.aws/config) and shared credentials -(~/.aws/credentials) files. Using the NewSessionWithOptions with -SharedConfigState set to SharedConfigEnable will create the session as if the -AWS_SDK_LOAD_CONFIG environment variable was set. - -Credential and config loading order - -The Session will attempt to load configuration and credentials from the -environment, configuration files, and other credential sources. The order -configuration is loaded in is: - - * Environment Variables - * Shared Credentials file - * Shared Configuration file (if SharedConfig is enabled) - * EC2 Instance Metadata (credentials only) - -The Environment variables for credentials will have precedence over shared -config even if SharedConfig is enabled. To override this behavior, and use -shared config credentials instead specify the session.Options.Profile, (e.g. -when using credential_source=Environment to assume a role). - - sess, err := session.NewSessionWithOptions(session.Options{ - Profile: "myProfile", - }) - -Creating Sessions - -Creating a Session without additional options will load credentials region, and -profile loaded from the environment and shared config automatically. See, -"Environment Variables" section for information on environment variables used -by Session. - - // Create Session - sess, err := session.NewSession() - - -When creating Sessions optional aws.Config values can be passed in that will -override the default, or loaded, config values the Session is being created -with. This allows you to provide additional, or case based, configuration -as needed. - - // Create a Session with a custom region - sess, err := session.NewSession(&aws.Config{ - Region: aws.String("us-west-2"), - }) - -Use NewSessionWithOptions to provide additional configuration driving how the -Session's configuration will be loaded. Such as, specifying shared config -profile, or override the shared config state, (AWS_SDK_LOAD_CONFIG). - - // Equivalent to session.NewSession() - sess, err := session.NewSessionWithOptions(session.Options{ - // Options - }) - - sess, err := session.NewSessionWithOptions(session.Options{ - // Specify profile to load for the session's config - Profile: "profile_name", - - // Provide SDK Config options, such as Region. - Config: aws.Config{ - Region: aws.String("us-west-2"), - }, - - // Force enable Shared Config support - SharedConfigState: session.SharedConfigEnable, - }) - -Adding Handlers - -You can add handlers to a session to decorate API operation, (e.g. adding HTTP -headers). All clients that use the Session receive a copy of the Session's -handlers. For example, the following request handler added to the Session logs -every requests made. - - // Create a session, and add additional handlers for all service - // clients created with the Session to inherit. Adds logging handler. - sess := session.Must(session.NewSession()) - - sess.Handlers.Send.PushFront(func(r *request.Request) { - // Log every request made and its payload - logger.Printf("Request: %s/%s, Params: %s", - r.ClientInfo.ServiceName, r.Operation, r.Params) - }) - -Shared Config Fields - -By default the SDK will only load the shared credentials file's -(~/.aws/credentials) credentials values, and all other config is provided by -the environment variables, SDK defaults, and user provided aws.Config values. - -If the AWS_SDK_LOAD_CONFIG environment variable is set, or SharedConfigEnable -option is used to create the Session the full shared config values will be -loaded. This includes credentials, region, and support for assume role. In -addition the Session will load its configuration from both the shared config -file (~/.aws/config) and shared credentials file (~/.aws/credentials). Both -files have the same format. - -If both config files are present the configuration from both files will be -read. The Session will be created from configuration values from the shared -credentials file (~/.aws/credentials) over those in the shared config file -(~/.aws/config). - -Credentials are the values the SDK uses to authenticating requests with AWS -Services. When specified in a file, both aws_access_key_id and -aws_secret_access_key must be provided together in the same file to be -considered valid. They will be ignored if both are not present. -aws_session_token is an optional field that can be provided in addition to the -other two fields. - - aws_access_key_id = AKID - aws_secret_access_key = SECRET - aws_session_token = TOKEN - - ; region only supported if SharedConfigEnabled. - region = us-east-1 - -Assume Role configuration - -The role_arn field allows you to configure the SDK to assume an IAM role using -a set of credentials from another source. Such as when paired with static -credentials, "profile_source", "credential_process", or "credential_source" -fields. If "role_arn" is provided, a source of credentials must also be -specified, such as "source_profile", "credential_source", or -"credential_process". - - role_arn = arn:aws:iam:::role/ - source_profile = profile_with_creds - external_id = 1234 - mfa_serial = - role_session_name = session_name - - -The SDK supports assuming a role with MFA token. If "mfa_serial" is set, you -must also set the Session Option.AssumeRoleTokenProvider. The Session will fail -to load if the AssumeRoleTokenProvider is not specified. - - sess := session.Must(session.NewSessionWithOptions(session.Options{ - AssumeRoleTokenProvider: stscreds.StdinTokenProvider, - })) - -To setup Assume Role outside of a session see the stscreds.AssumeRoleProvider -documentation. - -Environment Variables - -When a Session is created several environment variables can be set to adjust -how the SDK functions, and what configuration data it loads when creating -Sessions. All environment values are optional, but some values like credentials -require multiple of the values to set or the partial values will be ignored. -All environment variable values are strings unless otherwise noted. - -Environment configuration values. If set both Access Key ID and Secret Access -Key must be provided. Session Token and optionally also be provided, but is -not required. - - # Access Key ID - AWS_ACCESS_KEY_ID=AKID - AWS_ACCESS_KEY=AKID # only read if AWS_ACCESS_KEY_ID is not set. - - # Secret Access Key - AWS_SECRET_ACCESS_KEY=SECRET - AWS_SECRET_KEY=SECRET=SECRET # only read if AWS_SECRET_ACCESS_KEY is not set. - - # Session Token - AWS_SESSION_TOKEN=TOKEN - -Region value will instruct the SDK where to make service API requests to. If is -not provided in the environment the region must be provided before a service -client request is made. - - AWS_REGION=us-east-1 - - # AWS_DEFAULT_REGION is only read if AWS_SDK_LOAD_CONFIG is also set, - # and AWS_REGION is not also set. - AWS_DEFAULT_REGION=us-east-1 - -Profile name the SDK should load use when loading shared config from the -configuration files. If not provided "default" will be used as the profile name. - - AWS_PROFILE=my_profile - - # AWS_DEFAULT_PROFILE is only read if AWS_SDK_LOAD_CONFIG is also set, - # and AWS_PROFILE is not also set. - AWS_DEFAULT_PROFILE=my_profile - -SDK load config instructs the SDK to load the shared config in addition to -shared credentials. This also expands the configuration loaded so the shared -credentials will have parity with the shared config file. This also enables -Region and Profile support for the AWS_DEFAULT_REGION and AWS_DEFAULT_PROFILE -env values as well. - - AWS_SDK_LOAD_CONFIG=1 - -Custom Shared Config and Credential Files - -Shared credentials file path can be set to instruct the SDK to use an alternative -file for the shared credentials. If not set the file will be loaded from -$HOME/.aws/credentials on Linux/Unix based systems, and -%USERPROFILE%\.aws\credentials on Windows. - - AWS_SHARED_CREDENTIALS_FILE=$HOME/my_shared_credentials - -Shared config file path can be set to instruct the SDK to use an alternative -file for the shared config. If not set the file will be loaded from -$HOME/.aws/config on Linux/Unix based systems, and -%USERPROFILE%\.aws\config on Windows. - - AWS_CONFIG_FILE=$HOME/my_shared_config - -Custom CA Bundle - -Path to a custom Credentials Authority (CA) bundle PEM file that the SDK -will use instead of the default system's root CA bundle. Use this only -if you want to replace the CA bundle the SDK uses for TLS requests. - - AWS_CA_BUNDLE=$HOME/my_custom_ca_bundle - -Enabling this option will attempt to merge the Transport into the SDK's HTTP -client. If the client's Transport is not a http.Transport an error will be -returned. If the Transport's TLS config is set this option will cause the SDK -to overwrite the Transport's TLS config's RootCAs value. If the CA bundle file -contains multiple certificates all of them will be loaded. - -The Session option CustomCABundle is also available when creating sessions -to also enable this feature. CustomCABundle session option field has priority -over the AWS_CA_BUNDLE environment variable, and will be used if both are set. - -Setting a custom HTTPClient in the aws.Config options will override this setting. -To use this option and custom HTTP client, the HTTP client needs to be provided -when creating the session. Not the service client. - -Custom Client TLS Certificate - -The SDK supports the environment and session option being configured with -Client TLS certificates that are sent as a part of the client's TLS handshake -for client authentication. If used, both Cert and Key values are required. If -one is missing, or either fail to load the contents of the file an error will -be returned. - -HTTP Client's Transport concrete implementation must be a http.Transport -or creating the session will fail. - - AWS_SDK_GO_CLIENT_TLS_KEY=$HOME/my_client_key - AWS_SDK_GO_CLIENT_TLS_CERT=$HOME/my_client_cert - -This can also be configured via the session.Options ClientTLSCert and ClientTLSKey. - - sess, err := session.NewSessionWithOptions(session.Options{ - ClientTLSCert: myCertFile, - ClientTLSKey: myKeyFile, - }) - -Custom EC2 IMDS Endpoint - -The endpoint of the EC2 IMDS client can be configured via the environment -variable, AWS_EC2_METADATA_SERVICE_ENDPOINT when creating the client with a -Session. See Options.EC2IMDSEndpoint for more details. - - AWS_EC2_METADATA_SERVICE_ENDPOINT=http://169.254.169.254 - -If using an URL with an IPv6 address literal, the IPv6 address -component must be enclosed in square brackets. - - AWS_EC2_METADATA_SERVICE_ENDPOINT=http://[::1] - -The custom EC2 IMDS endpoint can also be specified via the Session options. - - sess, err := session.NewSessionWithOptions(session.Options{ - EC2MetadataEndpoint: "http://[::1]", - }) - -FIPS and DualStack Endpoints - -The SDK can be configured to resolve an endpoint with certain capabilities such as FIPS and DualStack. - -You can configure a FIPS endpoint using an environment variable, shared config ($HOME/.aws/config), -or programmatically. - -To configure a FIPS endpoint set the environment variable set the AWS_USE_FIPS_ENDPOINT to true or false to enable -or disable FIPS endpoint resolution. - - AWS_USE_FIPS_ENDPOINT=true - -To configure a FIPS endpoint using shared config, set use_fips_endpoint to true or false to enable -or disable FIPS endpoint resolution. - - [profile myprofile] - region=us-west-2 - use_fips_endpoint=true - -To configure a FIPS endpoint programmatically - - // Option 1: Configure it on a session for all clients - sess, err := session.NewSessionWithOptions(session.Options{ - UseFIPSEndpoint: endpoints.FIPSEndpointStateEnabled, - }) - if err != nil { - // handle error - } - - client := s3.New(sess) - - // Option 2: Configure it per client - sess, err := session.NewSession() - if err != nil { - // handle error - } - - client := s3.New(sess, &aws.Config{ - UseFIPSEndpoint: endpoints.FIPSEndpointStateEnabled, - }) - -You can configure a DualStack endpoint using an environment variable, shared config ($HOME/.aws/config), -or programmatically. - -To configure a DualStack endpoint set the environment variable set the AWS_USE_DUALSTACK_ENDPOINT to true or false to -enable or disable DualStack endpoint resolution. - - AWS_USE_DUALSTACK_ENDPOINT=true - -To configure a DualStack endpoint using shared config, set use_dualstack_endpoint to true or false to enable -or disable DualStack endpoint resolution. - - [profile myprofile] - region=us-west-2 - use_dualstack_endpoint=true - -To configure a DualStack endpoint programmatically - - // Option 1: Configure it on a session for all clients - sess, err := session.NewSessionWithOptions(session.Options{ - UseDualStackEndpoint: endpoints.DualStackEndpointStateEnabled, - }) - if err != nil { - // handle error - } - - client := s3.New(sess) - - // Option 2: Configure it per client - sess, err := session.NewSession() - if err != nil { - // handle error - } - - client := s3.New(sess, &aws.Config{ - UseDualStackEndpoint: endpoints.DualStackEndpointStateEnabled, - }) -*/ +// Package session provides configuration for the SDK's service clients. Sessions +// can be shared across service clients that share the same base configuration. +// +// Sessions are safe to use concurrently as long as the Session is not being +// modified. Sessions should be cached when possible, because creating a new +// Session will load all configuration values from the environment, and config +// files each time the Session is created. Sharing the Session value across all of +// your service clients will ensure the configuration is loaded the fewest number +// of times possible. +// +// # Sessions options from Shared Config +// +// By default NewSession will only load credentials from the shared credentials +// file (~/.aws/credentials). If the AWS_SDK_LOAD_CONFIG environment variable is +// set to a truthy value the Session will be created from the configuration +// values from the shared config (~/.aws/config) and shared credentials +// (~/.aws/credentials) files. Using the NewSessionWithOptions with +// SharedConfigState set to SharedConfigEnable will create the session as if the +// AWS_SDK_LOAD_CONFIG environment variable was set. +// +// # Credential and config loading order +// +// The Session will attempt to load configuration and credentials from the +// environment, configuration files, and other credential sources. The order +// configuration is loaded in is: +// +// - Environment Variables +// - Shared Credentials file +// - Shared Configuration file (if SharedConfig is enabled) +// - EC2 Instance Metadata (credentials only) +// +// The Environment variables for credentials will have precedence over shared +// config even if SharedConfig is enabled. To override this behavior, and use +// shared config credentials instead specify the session.Options.Profile, (e.g. +// when using credential_source=Environment to assume a role). +// +// sess, err := session.NewSessionWithOptions(session.Options{ +// Profile: "myProfile", +// }) +// +// # Creating Sessions +// +// Creating a Session without additional options will load credentials region, and +// profile loaded from the environment and shared config automatically. See, +// "Environment Variables" section for information on environment variables used +// by Session. +// +// // Create Session +// sess, err := session.NewSession() +// +// When creating Sessions optional aws.Config values can be passed in that will +// override the default, or loaded, config values the Session is being created +// with. This allows you to provide additional, or case based, configuration +// as needed. +// +// // Create a Session with a custom region +// sess, err := session.NewSession(&aws.Config{ +// Region: aws.String("us-west-2"), +// }) +// +// Use NewSessionWithOptions to provide additional configuration driving how the +// Session's configuration will be loaded. Such as, specifying shared config +// profile, or override the shared config state, (AWS_SDK_LOAD_CONFIG). +// +// // Equivalent to session.NewSession() +// sess, err := session.NewSessionWithOptions(session.Options{ +// // Options +// }) +// +// sess, err := session.NewSessionWithOptions(session.Options{ +// // Specify profile to load for the session's config +// Profile: "profile_name", +// +// // Provide SDK Config options, such as Region. +// Config: aws.Config{ +// Region: aws.String("us-west-2"), +// }, +// +// // Force enable Shared Config support +// SharedConfigState: session.SharedConfigEnable, +// }) +// +// # Adding Handlers +// +// You can add handlers to a session to decorate API operation, (e.g. adding HTTP +// headers). All clients that use the Session receive a copy of the Session's +// handlers. For example, the following request handler added to the Session logs +// every requests made. +// +// // Create a session, and add additional handlers for all service +// // clients created with the Session to inherit. Adds logging handler. +// sess := session.Must(session.NewSession()) +// +// sess.Handlers.Send.PushFront(func(r *request.Request) { +// // Log every request made and its payload +// logger.Printf("Request: %s/%s, Params: %s", +// r.ClientInfo.ServiceName, r.Operation, r.Params) +// }) +// +// # Shared Config Fields +// +// By default the SDK will only load the shared credentials file's +// (~/.aws/credentials) credentials values, and all other config is provided by +// the environment variables, SDK defaults, and user provided aws.Config values. +// +// If the AWS_SDK_LOAD_CONFIG environment variable is set, or SharedConfigEnable +// option is used to create the Session the full shared config values will be +// loaded. This includes credentials, region, and support for assume role. In +// addition the Session will load its configuration from both the shared config +// file (~/.aws/config) and shared credentials file (~/.aws/credentials). Both +// files have the same format. +// +// If both config files are present the configuration from both files will be +// read. The Session will be created from configuration values from the shared +// credentials file (~/.aws/credentials) over those in the shared config file +// (~/.aws/config). +// +// Credentials are the values the SDK uses to authenticating requests with AWS +// Services. When specified in a file, both aws_access_key_id and +// aws_secret_access_key must be provided together in the same file to be +// considered valid. They will be ignored if both are not present. +// aws_session_token is an optional field that can be provided in addition to the +// other two fields. +// +// aws_access_key_id = AKID +// aws_secret_access_key = SECRET +// aws_session_token = TOKEN +// +// ; region only supported if SharedConfigEnabled. +// region = us-east-1 +// +// # Assume Role configuration +// +// The role_arn field allows you to configure the SDK to assume an IAM role using +// a set of credentials from another source. Such as when paired with static +// credentials, "profile_source", "credential_process", or "credential_source" +// fields. If "role_arn" is provided, a source of credentials must also be +// specified, such as "source_profile", "credential_source", or +// "credential_process". +// +// role_arn = arn:aws:iam:::role/ +// source_profile = profile_with_creds +// external_id = 1234 +// mfa_serial = +// role_session_name = session_name +// +// The SDK supports assuming a role with MFA token. If "mfa_serial" is set, you +// must also set the Session Option.AssumeRoleTokenProvider. The Session will fail +// to load if the AssumeRoleTokenProvider is not specified. +// +// sess := session.Must(session.NewSessionWithOptions(session.Options{ +// AssumeRoleTokenProvider: stscreds.StdinTokenProvider, +// })) +// +// To setup Assume Role outside of a session see the stscreds.AssumeRoleProvider +// documentation. +// +// # Environment Variables +// +// When a Session is created several environment variables can be set to adjust +// how the SDK functions, and what configuration data it loads when creating +// Sessions. All environment values are optional, but some values like credentials +// require multiple of the values to set or the partial values will be ignored. +// All environment variable values are strings unless otherwise noted. +// +// Environment configuration values. If set both Access Key ID and Secret Access +// Key must be provided. Session Token and optionally also be provided, but is +// not required. +// +// # Access Key ID +// AWS_ACCESS_KEY_ID=AKID +// AWS_ACCESS_KEY=AKID # only read if AWS_ACCESS_KEY_ID is not set. +// +// # Secret Access Key +// AWS_SECRET_ACCESS_KEY=SECRET +// AWS_SECRET_KEY=SECRET=SECRET # only read if AWS_SECRET_ACCESS_KEY is not set. +// +// # Session Token +// AWS_SESSION_TOKEN=TOKEN +// +// Region value will instruct the SDK where to make service API requests to. If is +// not provided in the environment the region must be provided before a service +// client request is made. +// +// AWS_REGION=us-east-1 +// +// # AWS_DEFAULT_REGION is only read if AWS_SDK_LOAD_CONFIG is also set, +// # and AWS_REGION is not also set. +// AWS_DEFAULT_REGION=us-east-1 +// +// Profile name the SDK should load use when loading shared config from the +// configuration files. If not provided "default" will be used as the profile name. +// +// AWS_PROFILE=my_profile +// +// # AWS_DEFAULT_PROFILE is only read if AWS_SDK_LOAD_CONFIG is also set, +// # and AWS_PROFILE is not also set. +// AWS_DEFAULT_PROFILE=my_profile +// +// SDK load config instructs the SDK to load the shared config in addition to +// shared credentials. This also expands the configuration loaded so the shared +// credentials will have parity with the shared config file. This also enables +// Region and Profile support for the AWS_DEFAULT_REGION and AWS_DEFAULT_PROFILE +// env values as well. +// +// AWS_SDK_LOAD_CONFIG=1 +// +// # Custom Shared Config and Credential Files +// +// Shared credentials file path can be set to instruct the SDK to use an alternative +// file for the shared credentials. If not set the file will be loaded from +// $HOME/.aws/credentials on Linux/Unix based systems, and +// %USERPROFILE%\.aws\credentials on Windows. +// +// AWS_SHARED_CREDENTIALS_FILE=$HOME/my_shared_credentials +// +// Shared config file path can be set to instruct the SDK to use an alternative +// file for the shared config. If not set the file will be loaded from +// $HOME/.aws/config on Linux/Unix based systems, and +// %USERPROFILE%\.aws\config on Windows. +// +// AWS_CONFIG_FILE=$HOME/my_shared_config +// +// # Custom CA Bundle +// +// Path to a custom Credentials Authority (CA) bundle PEM file that the SDK +// will use instead of the default system's root CA bundle. Use this only +// if you want to replace the CA bundle the SDK uses for TLS requests. +// +// AWS_CA_BUNDLE=$HOME/my_custom_ca_bundle +// +// Enabling this option will attempt to merge the Transport into the SDK's HTTP +// client. If the client's Transport is not a http.Transport an error will be +// returned. If the Transport's TLS config is set this option will cause the SDK +// to overwrite the Transport's TLS config's RootCAs value. If the CA bundle file +// contains multiple certificates all of them will be loaded. +// +// The Session option CustomCABundle is also available when creating sessions +// to also enable this feature. CustomCABundle session option field has priority +// over the AWS_CA_BUNDLE environment variable, and will be used if both are set. +// +// Setting a custom HTTPClient in the aws.Config options will override this setting. +// To use this option and custom HTTP client, the HTTP client needs to be provided +// when creating the session. Not the service client. +// +// # Custom Client TLS Certificate +// +// The SDK supports the environment and session option being configured with +// Client TLS certificates that are sent as a part of the client's TLS handshake +// for client authentication. If used, both Cert and Key values are required. If +// one is missing, or either fail to load the contents of the file an error will +// be returned. +// +// HTTP Client's Transport concrete implementation must be a http.Transport +// or creating the session will fail. +// +// AWS_SDK_GO_CLIENT_TLS_KEY=$HOME/my_client_key +// AWS_SDK_GO_CLIENT_TLS_CERT=$HOME/my_client_cert +// +// This can also be configured via the session.Options ClientTLSCert and ClientTLSKey. +// +// sess, err := session.NewSessionWithOptions(session.Options{ +// ClientTLSCert: myCertFile, +// ClientTLSKey: myKeyFile, +// }) +// +// # Custom EC2 IMDS Endpoint +// +// The endpoint of the EC2 IMDS client can be configured via the environment +// variable, AWS_EC2_METADATA_SERVICE_ENDPOINT when creating the client with a +// Session. See Options.EC2IMDSEndpoint for more details. +// +// AWS_EC2_METADATA_SERVICE_ENDPOINT=http://169.254.169.254 +// +// If using an URL with an IPv6 address literal, the IPv6 address +// component must be enclosed in square brackets. +// +// AWS_EC2_METADATA_SERVICE_ENDPOINT=http://[::1] +// +// The custom EC2 IMDS endpoint can also be specified via the Session options. +// +// sess, err := session.NewSessionWithOptions(session.Options{ +// EC2MetadataEndpoint: "http://[::1]", +// }) +// +// # FIPS and DualStack Endpoints +// +// The SDK can be configured to resolve an endpoint with certain capabilities such as FIPS and DualStack. +// +// You can configure a FIPS endpoint using an environment variable, shared config ($HOME/.aws/config), +// or programmatically. +// +// To configure a FIPS endpoint set the environment variable set the AWS_USE_FIPS_ENDPOINT to true or false to enable +// or disable FIPS endpoint resolution. +// +// AWS_USE_FIPS_ENDPOINT=true +// +// To configure a FIPS endpoint using shared config, set use_fips_endpoint to true or false to enable +// or disable FIPS endpoint resolution. +// +// [profile myprofile] +// region=us-west-2 +// use_fips_endpoint=true +// +// To configure a FIPS endpoint programmatically +// +// // Option 1: Configure it on a session for all clients +// sess, err := session.NewSessionWithOptions(session.Options{ +// UseFIPSEndpoint: endpoints.FIPSEndpointStateEnabled, +// }) +// if err != nil { +// // handle error +// } +// +// client := s3.New(sess) +// +// // Option 2: Configure it per client +// sess, err := session.NewSession() +// if err != nil { +// // handle error +// } +// +// client := s3.New(sess, &aws.Config{ +// UseFIPSEndpoint: endpoints.FIPSEndpointStateEnabled, +// }) +// +// You can configure a DualStack endpoint using an environment variable, shared config ($HOME/.aws/config), +// or programmatically. +// +// To configure a DualStack endpoint set the environment variable set the AWS_USE_DUALSTACK_ENDPOINT to true or false to +// enable or disable DualStack endpoint resolution. +// +// AWS_USE_DUALSTACK_ENDPOINT=true +// +// To configure a DualStack endpoint using shared config, set use_dualstack_endpoint to true or false to enable +// or disable DualStack endpoint resolution. +// +// [profile myprofile] +// region=us-west-2 +// use_dualstack_endpoint=true +// +// To configure a DualStack endpoint programmatically +// +// // Option 1: Configure it on a session for all clients +// sess, err := session.NewSessionWithOptions(session.Options{ +// UseDualStackEndpoint: endpoints.DualStackEndpointStateEnabled, +// }) +// if err != nil { +// // handle error +// } +// +// client := s3.New(sess) +// +// // Option 2: Configure it per client +// sess, err := session.NewSession() +// if err != nil { +// // handle error +// } +// +// client := s3.New(sess, &aws.Config{ +// UseDualStackEndpoint: endpoints.DualStackEndpointStateEnabled, +// }) +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package session diff --git a/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go index b542df9315..3370f03e81 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go @@ -52,6 +52,9 @@ // // Test `TestStandaloneSign` provides a complete example of using the signer // outside of the SDK and pre-escaping the URI path. +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package v4 import ( diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go index e72db4de1e..4116bc3f18 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.55.7" +const SDKVersion = "1.55.8" diff --git a/vendor/github.com/aws/aws-sdk-go/service/dynamodb/doc.go b/vendor/github.com/aws/aws-sdk-go/service/dynamodb/doc.go index ab12b274f3..4873ececc7 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/dynamodb/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/service/dynamodb/doc.go @@ -42,4 +42,7 @@ // See the Amazon DynamoDB client DynamoDB for more // information on creating client for this service. // https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/#New +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package dynamodb diff --git a/vendor/github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute/doc.go b/vendor/github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute/doc.go index 102f4b465c..6449054df2 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute/doc.go @@ -98,4 +98,7 @@ // away from the Convert* family of functions. // // `time.Time` is marshaled as RFC3339 format. +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package dynamodbattribute diff --git a/vendor/github.com/aws/aws-sdk-go/service/dynamodb/expression/doc.go b/vendor/github.com/aws/aws-sdk-go/service/dynamodb/expression/doc.go index 13522ad5bd..021731df73 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/dynamodb/expression/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/service/dynamodb/expression/doc.go @@ -1,48 +1,49 @@ -/* -Package expression provides types and functions to create Amazon DynamoDB -Expression strings, ExpressionAttributeNames maps, and ExpressionAttributeValues -maps. - -# Using the Package - -The package represents the various DynamoDB Expressions as structs named -accordingly. For example, ConditionBuilder represents a DynamoDB Condition -Expression, an UpdateBuilder represents a DynamoDB Update Expression, and so on. -The following example shows a sample ConditionExpression and how to build an -equilvalent ConditionBuilder - - // Let :a be an ExpressionAttributeValue representing the string "No One You - // Know" - condExpr := "Artist = :a" - condBuilder := expression.Name("Artist").Equal(expression.Value("No One You Know")) - -In order to retrieve the formatted DynamoDB Expression strings, call the getter -methods on the Expression struct. To create the Expression struct, call the -Build() method on the Builder struct. Because some input structs, such as -QueryInput, can have multiple DynamoDB Expressions, multiple structs -representing various DynamoDB Expressions can be added to the Builder struct. -The following example shows a generic usage of the whole package. - - filt := expression.Name("Artist").Equal(expression.Value("No One You Know")) - proj := expression.NamesList(expression.Name("SongTitle"), expression.Name("AlbumTitle")) - expr, err := expression.NewBuilder().WithFilter(filt).WithProjection(proj).Build() - if err != nil { - fmt.Println(err) - } - - input := &dynamodb.ScanInput{ - ExpressionAttributeNames: expr.Names(), - ExpressionAttributeValues: expr.Values(), - FilterExpression: expr.Filter(), - ProjectionExpression: expr.Projection(), - TableName: aws.String("Music"), - } - -The ExpressionAttributeNames and ExpressionAttributeValues member of the input -struct must always be assigned when using the Expression struct because all item -attribute names and values are aliased. That means that if the -ExpressionAttributeNames and ExpressionAttributeValues member is not assigned -with the corresponding Names() and Values() methods, the DynamoDB operation will -run into a logic error. -*/ +// Package expression provides types and functions to create Amazon DynamoDB +// Expression strings, ExpressionAttributeNames maps, and ExpressionAttributeValues +// maps. +// +// # Using the Package +// +// The package represents the various DynamoDB Expressions as structs named +// accordingly. For example, ConditionBuilder represents a DynamoDB Condition +// Expression, an UpdateBuilder represents a DynamoDB Update Expression, and so on. +// The following example shows a sample ConditionExpression and how to build an +// equilvalent ConditionBuilder +// +// // Let :a be an ExpressionAttributeValue representing the string "No One You +// // Know" +// condExpr := "Artist = :a" +// condBuilder := expression.Name("Artist").Equal(expression.Value("No One You Know")) +// +// In order to retrieve the formatted DynamoDB Expression strings, call the getter +// methods on the Expression struct. To create the Expression struct, call the +// Build() method on the Builder struct. Because some input structs, such as +// QueryInput, can have multiple DynamoDB Expressions, multiple structs +// representing various DynamoDB Expressions can be added to the Builder struct. +// The following example shows a generic usage of the whole package. +// +// filt := expression.Name("Artist").Equal(expression.Value("No One You Know")) +// proj := expression.NamesList(expression.Name("SongTitle"), expression.Name("AlbumTitle")) +// expr, err := expression.NewBuilder().WithFilter(filt).WithProjection(proj).Build() +// if err != nil { +// fmt.Println(err) +// } +// +// input := &dynamodb.ScanInput{ +// ExpressionAttributeNames: expr.Names(), +// ExpressionAttributeValues: expr.Values(), +// FilterExpression: expr.Filter(), +// ProjectionExpression: expr.Projection(), +// TableName: aws.String("Music"), +// } +// +// The ExpressionAttributeNames and ExpressionAttributeValues member of the input +// struct must always be assigned when using the Expression struct because all item +// attribute names and values are aliased. That means that if the +// ExpressionAttributeNames and ExpressionAttributeValues member is not assigned +// with the corresponding Names() and Values() methods, the DynamoDB operation will +// run into a logic error. +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package expression diff --git a/vendor/github.com/aws/aws-sdk-go/service/sso/doc.go b/vendor/github.com/aws/aws-sdk-go/service/sso/doc.go index 15e61a3228..91049220b7 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/sso/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/service/sso/doc.go @@ -42,4 +42,7 @@ // See the AWS Single Sign-On client SSO for more // information on creating client for this service. // https://docs.aws.amazon.com/sdk-for-go/api/service/sso/#New +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package sso diff --git a/vendor/github.com/aws/aws-sdk-go/service/ssooidc/doc.go b/vendor/github.com/aws/aws-sdk-go/service/ssooidc/doc.go index 083568c616..1285e91e87 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/ssooidc/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/service/ssooidc/doc.go @@ -64,4 +64,7 @@ // See the AWS SSO OIDC client SSOOIDC for more // information on creating client for this service. // https://docs.aws.amazon.com/sdk-for-go/api/service/ssooidc/#New +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package ssooidc diff --git a/vendor/github.com/aws/aws-sdk-go/service/sts/doc.go b/vendor/github.com/aws/aws-sdk-go/service/sts/doc.go index ea1d9eb0cc..d1a66b5608 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/sts/doc.go +++ b/vendor/github.com/aws/aws-sdk-go/service/sts/doc.go @@ -28,4 +28,7 @@ // See the AWS Security Token Service client STS for more // information on creating client for this service. // https://docs.aws.amazon.com/sdk-for-go/api/service/sts/#New +// +// Deprecated: aws-sdk-go is deprecated. Use aws-sdk-go-v2. +// See https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-go-v1-on-july-31-2025/. package sts diff --git a/vendor/github.com/aws/smithy-go/CHANGELOG.md b/vendor/github.com/aws/smithy-go/CHANGELOG.md index 84ef0dad8c..1d60def6d1 100644 --- a/vendor/github.com/aws/smithy-go/CHANGELOG.md +++ b/vendor/github.com/aws/smithy-go/CHANGELOG.md @@ -1,3 +1,13 @@ +# Release (2025-07-24) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/smithy-go`: v1.22.5 + * **Bug Fix**: Fix HTTP metrics data race. + * **Bug Fix**: Replace usages of deprecated ioutil package. + # Release (2025-06-16) ## General Highlights diff --git a/vendor/github.com/aws/smithy-go/README.md b/vendor/github.com/aws/smithy-go/README.md index 08df74589a..c9ba5ea5e4 100644 --- a/vendor/github.com/aws/smithy-go/README.md +++ b/vendor/github.com/aws/smithy-go/README.md @@ -4,7 +4,7 @@ [Smithy](https://smithy.io/) code generators for Go and the accompanying smithy-go runtime. -The smithy-go runtime requires a minimum version of Go 1.20. +The smithy-go runtime requires a minimum version of Go 1.22. **WARNING: All interfaces are subject to change.** @@ -77,7 +77,7 @@ example created from `smithy init`: "service": "example.weather#Weather", "module": "github.com/example/weather", "generateGoMod": true, - "goDirective": "1.20" + "goDirective": "1.22" } } } diff --git a/vendor/github.com/aws/smithy-go/endpoints/endpoint.go b/vendor/github.com/aws/smithy-go/endpoints/endpoint.go index a935283974..f778272be3 100644 --- a/vendor/github.com/aws/smithy-go/endpoints/endpoint.go +++ b/vendor/github.com/aws/smithy-go/endpoints/endpoint.go @@ -9,7 +9,7 @@ import ( // Endpoint is the endpoint object returned by Endpoint resolution V2 type Endpoint struct { - // The complete URL minimally specfiying the scheme and host. + // The complete URL minimally specifying the scheme and host. // May optionally specify the port and base path component. URI url.URL diff --git a/vendor/github.com/aws/smithy-go/go_module_metadata.go b/vendor/github.com/aws/smithy-go/go_module_metadata.go index c566c83377..cbbaabee9e 100644 --- a/vendor/github.com/aws/smithy-go/go_module_metadata.go +++ b/vendor/github.com/aws/smithy-go/go_module_metadata.go @@ -3,4 +3,4 @@ package smithy // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.22.4" +const goModuleVersion = "1.22.5" diff --git a/vendor/github.com/aws/smithy-go/transport/http/interceptor.go b/vendor/github.com/aws/smithy-go/transport/http/interceptor.go new file mode 100644 index 0000000000..e21f2632a6 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/transport/http/interceptor.go @@ -0,0 +1,321 @@ +package http + +import ( + "context" +) + +func icopy[T any](v []T) []T { + s := make([]T, len(v)) + copy(s, v) + return s +} + +// InterceptorContext is all the information available in different +// interceptors. +// +// Not all information is available in each interceptor, see each interface +// definition for more details. +type InterceptorContext struct { + Input any + Request *Request + + Output any + Response *Response +} + +// InterceptorRegistry holds a list of operation interceptors. +// +// Interceptors allow callers to insert custom behavior at well-defined points +// within a client's operation lifecycle. +// +// # Interceptor context +// +// All interceptors are invoked with a context object that contains input and +// output containers for the operation. The individual fields that are +// available will depend on what the interceptor is and, in certain +// interceptors, how far the operation was able to progress. See the +// documentation for each interface definition for more information about field +// availability. +// +// Implementations MUST NOT directly mutate the values of the fields in the +// interceptor context. They are free to mutate the existing values _pointed +// to_ by those fields, however. +// +// # Returning errors +// +// All interceptors can return errors. If an interceptor returns an error +// _before_ the client's retry loop, the operation will fail immediately. If +// one returns an error _within_ the retry loop, the error WILL be considered +// according to the client's retry policy. +// +// # Adding interceptors +// +// Idiomatically you will simply use one of the Add() receiver methods to +// register interceptors as desired. However, the list for each interface is +// exported on the registry struct and the caller is free to manipulate it +// directly, for example, to register a number of interceptors all at once, or +// to remove one that was previously registered. +// +// The base SDK client WILL NOT add any interceptors. SDK operations and +// customizations are implemented in terms of middleware. +// +// Modifications to the registry will not persist across operation calls when +// using per-operation functional options. This means you can register +// interceptors on a per-operation basis without affecting other operations. +type InterceptorRegistry struct { + BeforeExecution []BeforeExecutionInterceptor + BeforeSerialization []BeforeSerializationInterceptor + AfterSerialization []AfterSerializationInterceptor + BeforeRetryLoop []BeforeRetryLoopInterceptor + BeforeAttempt []BeforeAttemptInterceptor + BeforeSigning []BeforeSigningInterceptor + AfterSigning []AfterSigningInterceptor + BeforeTransmit []BeforeTransmitInterceptor + AfterTransmit []AfterTransmitInterceptor + BeforeDeserialization []BeforeDeserializationInterceptor + AfterDeserialization []AfterDeserializationInterceptor + AfterAttempt []AfterAttemptInterceptor + AfterExecution []AfterExecutionInterceptor +} + +// Copy returns a deep copy of the registry. This is used by SDK clients on +// each operation call in order to prevent per-op config mutation from +// persisting. +func (i *InterceptorRegistry) Copy() InterceptorRegistry { + return InterceptorRegistry{ + BeforeExecution: icopy(i.BeforeExecution), + BeforeSerialization: icopy(i.BeforeSerialization), + AfterSerialization: icopy(i.AfterSerialization), + BeforeRetryLoop: icopy(i.BeforeRetryLoop), + BeforeAttempt: icopy(i.BeforeAttempt), + BeforeSigning: icopy(i.BeforeSigning), + AfterSigning: icopy(i.AfterSigning), + BeforeTransmit: icopy(i.BeforeTransmit), + AfterTransmit: icopy(i.AfterTransmit), + BeforeDeserialization: icopy(i.BeforeDeserialization), + AfterDeserialization: icopy(i.AfterDeserialization), + AfterAttempt: icopy(i.AfterAttempt), + AfterExecution: icopy(i.AfterExecution), + } +} + +// AddBeforeExecution registers the provided BeforeExecutionInterceptor. +func (i *InterceptorRegistry) AddBeforeExecution(v BeforeExecutionInterceptor) { + i.BeforeExecution = append(i.BeforeExecution, v) +} + +// AddBeforeSerialization registers the provided BeforeSerializationInterceptor. +func (i *InterceptorRegistry) AddBeforeSerialization(v BeforeSerializationInterceptor) { + i.BeforeSerialization = append(i.BeforeSerialization, v) +} + +// AddAfterSerialization registers the provided AfterSerializationInterceptor. +func (i *InterceptorRegistry) AddAfterSerialization(v AfterSerializationInterceptor) { + i.AfterSerialization = append(i.AfterSerialization, v) +} + +// AddBeforeRetryLoop registers the provided BeforeRetryLoopInterceptor. +func (i *InterceptorRegistry) AddBeforeRetryLoop(v BeforeRetryLoopInterceptor) { + i.BeforeRetryLoop = append(i.BeforeRetryLoop, v) +} + +// AddBeforeAttempt registers the provided BeforeAttemptInterceptor. +func (i *InterceptorRegistry) AddBeforeAttempt(v BeforeAttemptInterceptor) { + i.BeforeAttempt = append(i.BeforeAttempt, v) +} + +// AddBeforeSigning registers the provided BeforeSigningInterceptor. +func (i *InterceptorRegistry) AddBeforeSigning(v BeforeSigningInterceptor) { + i.BeforeSigning = append(i.BeforeSigning, v) +} + +// AddAfterSigning registers the provided AfterSigningInterceptor. +func (i *InterceptorRegistry) AddAfterSigning(v AfterSigningInterceptor) { + i.AfterSigning = append(i.AfterSigning, v) +} + +// AddBeforeTransmit registers the provided BeforeTransmitInterceptor. +func (i *InterceptorRegistry) AddBeforeTransmit(v BeforeTransmitInterceptor) { + i.BeforeTransmit = append(i.BeforeTransmit, v) +} + +// AddAfterTransmit registers the provided AfterTransmitInterceptor. +func (i *InterceptorRegistry) AddAfterTransmit(v AfterTransmitInterceptor) { + i.AfterTransmit = append(i.AfterTransmit, v) +} + +// AddBeforeDeserialization registers the provided BeforeDeserializationInterceptor. +func (i *InterceptorRegistry) AddBeforeDeserialization(v BeforeDeserializationInterceptor) { + i.BeforeDeserialization = append(i.BeforeDeserialization, v) +} + +// AddAfterDeserialization registers the provided AfterDeserializationInterceptor. +func (i *InterceptorRegistry) AddAfterDeserialization(v AfterDeserializationInterceptor) { + i.AfterDeserialization = append(i.AfterDeserialization, v) +} + +// AddAfterAttempt registers the provided AfterAttemptInterceptor. +func (i *InterceptorRegistry) AddAfterAttempt(v AfterAttemptInterceptor) { + i.AfterAttempt = append(i.AfterAttempt, v) +} + +// AddAfterExecution registers the provided AfterExecutionInterceptor. +func (i *InterceptorRegistry) AddAfterExecution(v AfterExecutionInterceptor) { + i.AfterExecution = append(i.AfterExecution, v) +} + +// BeforeExecutionInterceptor runs before anything else in the operation +// lifecycle. +// +// Available InterceptorContext fields: +// - Input +type BeforeExecutionInterceptor interface { + BeforeExecution(ctx context.Context, in *InterceptorContext) error +} + +// BeforeSerializationInterceptor runs before the operation input is serialized +// into its transport request. +// +// Serialization occurs before the operation's retry loop. +// +// Available InterceptorContext fields: +// - Input +type BeforeSerializationInterceptor interface { + BeforeSerialization(ctx context.Context, in *InterceptorContext) error +} + +// AfterSerializationInterceptor runs after the operation input is serialized +// into its transport request. +// +// Available InterceptorContext fields: +// - Input +// - Request +type AfterSerializationInterceptor interface { + AfterSerialization(ctx context.Context, in *InterceptorContext) error +} + +// BeforeRetryLoopInterceptor runs right before the operation enters the retry loop. +// +// Available InterceptorContext fields: +// - Input +// - Request +type BeforeRetryLoopInterceptor interface { + BeforeRetryLoop(ctx context.Context, in *InterceptorContext) error +} + +// BeforeAttemptInterceptor runs right before every attempt in the retry loop. +// +// If this interceptor returns an error, AfterAttempt interceptors WILL NOT be +// invoked. +// +// Available InterceptorContext fields: +// - Input +// - Request +type BeforeAttemptInterceptor interface { + BeforeAttempt(ctx context.Context, in *InterceptorContext) error +} + +// BeforeSigningInterceptor runs right before the request is signed. +// +// Signing occurs within the operation's retry loop. +// +// Available InterceptorContext fields: +// - Input +// - Request +type BeforeSigningInterceptor interface { + BeforeSigning(ctx context.Context, in *InterceptorContext) error +} + +// AfterSigningInterceptor runs right after the request is signed. +// +// It is unsafe to modify the outgoing HTTP request at or past this hook, since +// doing so may invalidate the signature of the request. +// +// Available InterceptorContext fields: +// - Input +// - Request +type AfterSigningInterceptor interface { + AfterSigning(ctx context.Context, in *InterceptorContext) error +} + +// BeforeTransmitInterceptor runs right before the HTTP request is sent. +// +// HTTP transmit occurs within the operation's retry loop. +// +// Available InterceptorContext fields: +// - Input +// - Request +type BeforeTransmitInterceptor interface { + BeforeTransmit(ctx context.Context, in *InterceptorContext) error +} + +// AfterTransmitInterceptor runs right after the HTTP response is received. +// +// It will always be invoked when a response is received, regardless of its +// status code. Conversely, it WILL NOT be invoked if the HTTP round-trip was +// not successful, e.g. because of a DNS resolution error +// +// Available InterceptorContext fields: +// - Input +// - Request +// - Response +type AfterTransmitInterceptor interface { + AfterTransmit(ctx context.Context, in *InterceptorContext) error +} + +// BeforeDeserializationInterceptor runs right before the incoming HTTP response +// is deserialized. +// +// This interceptor IS NOT invoked if the HTTP round-trip was not successful. +// +// Deserialization occurs within the operation's retry loop. +// +// Available InterceptorContext fields: +// - Input +// - Request +// - Response +type BeforeDeserializationInterceptor interface { + BeforeDeserialization(ctx context.Context, in *InterceptorContext) error +} + +// AfterDeserializationInterceptor runs right after the incoming HTTP response +// is deserialized. This hook is invoked regardless of whether the deserialized +// result was an error. +// +// This interceptor IS NOT invoked if the HTTP round-trip was not successful. +// +// Available InterceptorContext fields: +// - Input +// - Output (IF the operation had a success-level response) +// - Request +// - Response +type AfterDeserializationInterceptor interface { + AfterDeserialization(ctx context.Context, in *InterceptorContext) error +} + +// AfterAttemptInterceptor runs right after the incoming HTTP response +// is deserialized. This hook is invoked regardless of whether the deserialized +// result was an error, or if another interceptor within the retry loop +// returned an error. +// +// Available InterceptorContext fields: +// - Input +// - Output (IF the operation had a success-level response) +// - Request (IF the operation did not return an error during serialization) +// - Response (IF the operation was able to transmit the HTTP request) +type AfterAttemptInterceptor interface { + AfterAttempt(ctx context.Context, in *InterceptorContext) error +} + +// AfterExecutionInterceptor runs after everything else. It runs regardless of +// how far the operation progressed in its lifecycle, and regardless of whether +// the operation succeeded or failed. +// +// Available InterceptorContext fields: +// - Input +// - Output (IF the operation had a success-level response) +// - Request (IF the operation did not return an error during serialization) +// - Response (IF the operation was able to transmit the HTTP request) +type AfterExecutionInterceptor interface { + AfterExecution(ctx context.Context, in *InterceptorContext) error +} diff --git a/vendor/github.com/aws/smithy-go/transport/http/interceptor_middleware.go b/vendor/github.com/aws/smithy-go/transport/http/interceptor_middleware.go new file mode 100644 index 0000000000..2cc4b57f89 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/transport/http/interceptor_middleware.go @@ -0,0 +1,325 @@ +package http + +import ( + "context" + "errors" + + "github.com/aws/smithy-go/middleware" +) + +type ictxKey struct{} + +func withIctx(ctx context.Context) context.Context { + return middleware.WithStackValue(ctx, ictxKey{}, &InterceptorContext{}) +} + +func getIctx(ctx context.Context) *InterceptorContext { + return middleware.GetStackValue(ctx, ictxKey{}).(*InterceptorContext) +} + +// InterceptExecution runs Before/AfterExecutionInterceptors. +type InterceptExecution struct { + BeforeExecution []BeforeExecutionInterceptor + AfterExecution []AfterExecutionInterceptor +} + +// ID identifies the middleware. +func (m *InterceptExecution) ID() string { + return "InterceptExecution" +} + +// HandleInitialize runs the interceptors. +func (m *InterceptExecution) HandleInitialize( + ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler, +) ( + out middleware.InitializeOutput, md middleware.Metadata, err error, +) { + ctx = withIctx(ctx) + getIctx(ctx).Input = in.Parameters + + for _, i := range m.BeforeExecution { + if err := i.BeforeExecution(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + out, md, err = next.HandleInitialize(ctx, in) + + for _, i := range m.AfterExecution { + if err := i.AfterExecution(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + return out, md, err +} + +// InterceptBeforeSerialization runs BeforeSerializationInterceptors. +type InterceptBeforeSerialization struct { + Interceptors []BeforeSerializationInterceptor +} + +// ID identifies the middleware. +func (m *InterceptBeforeSerialization) ID() string { + return "InterceptBeforeSerialization" +} + +// HandleSerialize runs the interceptors. +func (m *InterceptBeforeSerialization) HandleSerialize( + ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler, +) ( + out middleware.SerializeOutput, md middleware.Metadata, err error, +) { + for _, i := range m.Interceptors { + if err := i.BeforeSerialization(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + return next.HandleSerialize(ctx, in) +} + +// InterceptAfterSerialization runs AfterSerializationInterceptors. +type InterceptAfterSerialization struct { + Interceptors []AfterSerializationInterceptor +} + +// ID identifies the middleware. +func (m *InterceptAfterSerialization) ID() string { + return "InterceptAfterSerialization" +} + +// HandleSerialize runs the interceptors. +func (m *InterceptAfterSerialization) HandleSerialize( + ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler, +) ( + out middleware.SerializeOutput, md middleware.Metadata, err error, +) { + getIctx(ctx).Request = in.Request.(*Request) + + for _, i := range m.Interceptors { + if err := i.AfterSerialization(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + return next.HandleSerialize(ctx, in) +} + +// InterceptBeforeRetryLoop runs BeforeRetryLoopInterceptors. +type InterceptBeforeRetryLoop struct { + Interceptors []BeforeRetryLoopInterceptor +} + +// ID identifies the middleware. +func (m *InterceptBeforeRetryLoop) ID() string { + return "InterceptBeforeRetryLoop" +} + +// HandleFinalize runs the interceptors. +func (m *InterceptBeforeRetryLoop) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, +) ( + out middleware.FinalizeOutput, md middleware.Metadata, err error, +) { + for _, i := range m.Interceptors { + if err := i.BeforeRetryLoop(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + return next.HandleFinalize(ctx, in) +} + +// InterceptBeforeSigning runs BeforeSigningInterceptors. +type InterceptBeforeSigning struct { + Interceptors []BeforeSigningInterceptor +} + +// ID identifies the middleware. +func (m *InterceptBeforeSigning) ID() string { + return "InterceptBeforeSigning" +} + +// HandleFinalize runs the interceptors. +func (m *InterceptBeforeSigning) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, +) ( + out middleware.FinalizeOutput, md middleware.Metadata, err error, +) { + for _, i := range m.Interceptors { + if err := i.BeforeSigning(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + return next.HandleFinalize(ctx, in) +} + +// InterceptAfterSigning runs AfterSigningInterceptors. +type InterceptAfterSigning struct { + Interceptors []AfterSigningInterceptor +} + +// ID identifies the middleware. +func (m *InterceptAfterSigning) ID() string { + return "InterceptAfterSigning" +} + +// HandleFinalize runs the interceptors. +func (m *InterceptAfterSigning) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, +) ( + out middleware.FinalizeOutput, md middleware.Metadata, err error, +) { + for _, i := range m.Interceptors { + if err := i.AfterSigning(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + return next.HandleFinalize(ctx, in) +} + +// InterceptTransmit runs BeforeTransmitInterceptors and AfterTransmitInterceptors. +type InterceptTransmit struct { + BeforeTransmit []BeforeTransmitInterceptor + AfterTransmit []AfterTransmitInterceptor +} + +// ID identifies the middleware. +func (m *InterceptTransmit) ID() string { + return "InterceptTransmit" +} + +// HandleDeserialize runs the interceptors. +func (m *InterceptTransmit) HandleDeserialize( + ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler, +) ( + out middleware.DeserializeOutput, md middleware.Metadata, err error, +) { + for _, i := range m.BeforeTransmit { + if err := i.BeforeTransmit(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + out, md, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, md, err + } + + // the root of the decorated middleware guarantees this will be here + // (client.go: ClientHandler.Handle) + getIctx(ctx).Response = out.RawResponse.(*Response) + + for _, i := range m.AfterTransmit { + if err := i.AfterTransmit(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + return out, md, err +} + +// InterceptBeforeDeserialization runs BeforeDeserializationInterceptors. +type InterceptBeforeDeserialization struct { + Interceptors []BeforeDeserializationInterceptor +} + +// ID identifies the middleware. +func (m *InterceptBeforeDeserialization) ID() string { + return "InterceptBeforeDeserialization" +} + +// HandleDeserialize runs the interceptors. +func (m *InterceptBeforeDeserialization) HandleDeserialize( + ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler, +) ( + out middleware.DeserializeOutput, md middleware.Metadata, err error, +) { + out, md, err = next.HandleDeserialize(ctx, in) + if err != nil { + var terr *RequestSendError + if errors.As(err, &terr) { + return out, md, err + } + } + + for _, i := range m.Interceptors { + if err := i.BeforeDeserialization(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + return out, md, err +} + +// InterceptAfterDeserialization runs AfterDeserializationInterceptors. +type InterceptAfterDeserialization struct { + Interceptors []AfterDeserializationInterceptor +} + +// ID identifies the middleware. +func (m *InterceptAfterDeserialization) ID() string { + return "InterceptAfterDeserialization" +} + +// HandleDeserialize runs the interceptors. +func (m *InterceptAfterDeserialization) HandleDeserialize( + ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler, +) ( + out middleware.DeserializeOutput, md middleware.Metadata, err error, +) { + out, md, err = next.HandleDeserialize(ctx, in) + if err != nil { + var terr *RequestSendError + if errors.As(err, &terr) { + return out, md, err + } + } + + getIctx(ctx).Output = out.Result + + for _, i := range m.Interceptors { + if err := i.AfterDeserialization(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + return out, md, err +} + +// InterceptAttempt runs AfterAttemptInterceptors. +type InterceptAttempt struct { + BeforeAttempt []BeforeAttemptInterceptor + AfterAttempt []AfterAttemptInterceptor +} + +// ID identifies the middleware. +func (m *InterceptAttempt) ID() string { + return "InterceptAttempt" +} + +// HandleFinalize runs the interceptors. +func (m *InterceptAttempt) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, +) ( + out middleware.FinalizeOutput, md middleware.Metadata, err error, +) { + for _, i := range m.BeforeAttempt { + if err := i.BeforeAttempt(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + out, md, err = next.HandleFinalize(ctx, in) + + for _, i := range m.AfterAttempt { + if err := i.AfterAttempt(ctx, getIctx(ctx)); err != nil { + return out, md, err + } + } + + return out, md, err +} diff --git a/vendor/github.com/awslabs/amazon-ecr-credential-helper/ecr-login/api/client.go b/vendor/github.com/awslabs/amazon-ecr-credential-helper/ecr-login/api/client.go index ae452396b4..d952716d0d 100644 --- a/vendor/github.com/awslabs/amazon-ecr-credential-helper/ecr-login/api/client.go +++ b/vendor/github.com/awslabs/amazon-ecr-credential-helper/ecr-login/api/client.go @@ -37,7 +37,7 @@ const ( ecrPublicEndpoint = proxyEndpointScheme + ecrPublicName ) -var ecrPattern = regexp.MustCompile(`^(\d{12})\.dkr\.ecr(\-fips)?\.([a-zA-Z0-9][a-zA-Z0-9-_]*)\.(amazonaws\.com(\.cn)?|sc2s\.sgov\.gov|c2s\.ic\.gov|cloud\.adc-e\.uk|csp\.hci\.ic\.gov)$`) +var ecrPattern = regexp.MustCompile(`^(\d{12})\.dkr[\.\-]ecr(\-fips)?\.([a-zA-Z0-9][a-zA-Z0-9-_]*)\.(amazonaws\.com(?:\.cn)?|on\.(?:aws|amazonwebservices\.com\.cn)|sc2s\.sgov\.gov|c2s\.ic\.gov|cloud\.adc-e\.uk|csp\.hci\.ic\.gov)$`) type Service string diff --git a/vendor/github.com/awslabs/amazon-ecr-credential-helper/ecr-login/config/log.go b/vendor/github.com/awslabs/amazon-ecr-credential-helper/ecr-login/config/log.go index e4c0b5b2d2..b5082570a7 100644 --- a/vendor/github.com/awslabs/amazon-ecr-credential-helper/ecr-login/config/log.go +++ b/vendor/github.com/awslabs/amazon-ecr-credential-helper/ecr-login/config/log.go @@ -39,7 +39,7 @@ func logrusConfig() { fmt.Fprintf(os.Stderr, "log: failed to create directory: %v", err) logdir = os.TempDir() } - file, err := os.OpenFile(filepath.Join(logdir, "ecr-login.log"), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0664) + file, err := os.OpenFile(filepath.Join(logdir, "ecr-login.log"), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644) if err != nil { return } diff --git a/vendor/github.com/buildkite/agent/v3/api/chunks.go b/vendor/github.com/buildkite/agent/v3/api/chunks.go index d238584b39..3d171e44dd 100644 --- a/vendor/github.com/buildkite/agent/v3/api/chunks.go +++ b/vendor/github.com/buildkite/agent/v3/api/chunks.go @@ -21,7 +21,9 @@ func (c *Client) UploadChunk(ctx context.Context, jobId string, chunk *Chunk) (* // Create a compressed buffer of the log content body := &bytes.Buffer{} gzipper := gzip.NewWriter(body) - gzipper.Write(chunk.Data) + if _, err := gzipper.Write(chunk.Data); err != nil { + return nil, err + } if err := gzipper.Close(); err != nil { return nil, err } diff --git a/vendor/github.com/buildkite/agent/v3/api/client.go b/vendor/github.com/buildkite/agent/v3/api/client.go index 059acedb17..a4d2e329f0 100644 --- a/vendor/github.com/buildkite/agent/v3/api/client.go +++ b/vendor/github.com/buildkite/agent/v3/api/client.go @@ -317,8 +317,8 @@ func (c *Client) doRequest(req *http.Request, v any) (*Response, error) { if err != nil { return nil, err } - defer resp.Body.Close() - defer io.Copy(io.Discard, resp.Body) + defer resp.Body.Close() //nolint:errcheck // This is idiomatic for response bodies. + defer io.Copy(io.Discard, resp.Body) //nolint:errcheck // Body is a reader, io.Discard never errors. response := newResponse(resp) @@ -330,7 +330,9 @@ func (c *Client) doRequest(req *http.Request, v any) (*Response, error) { if v != nil { if w, ok := v.(io.Writer); ok { - io.Copy(w, resp.Body) + if _, err := io.Copy(w, resp.Body); err != nil { + return response, fmt.Errorf("failed to copy response into destination %T: %v", w, err) + } } else { if strings.Contains(req.Header.Get("Content-Type"), "application/msgpack") { return response, errors.New("Msgpack not supported") @@ -375,8 +377,13 @@ func checkResponse(r *http.Response) error { errorResponse := &ErrorResponse{Response: r} data, err := io.ReadAll(r.Body) - if err == nil && data != nil { - json.Unmarshal(data, errorResponse) + if err != nil { + return errorResponse + } + if data != nil { + // Unmarshaling the error JSON is best-effort, but we could consider + // reporting unmarshaling problems. + json.Unmarshal(data, errorResponse) //nolint:errcheck // ^^ } return errorResponse diff --git a/vendor/github.com/buildkite/agent/v3/internal/agenthttp/auth.go b/vendor/github.com/buildkite/agent/v3/internal/agenthttp/auth.go index 9e34f80017..cbdc7844ee 100644 --- a/vendor/github.com/buildkite/agent/v3/internal/agenthttp/auth.go +++ b/vendor/github.com/buildkite/agent/v3/internal/agenthttp/auth.go @@ -31,7 +31,7 @@ func (t authenticatedTransport) RoundTrip(req *http.Request) (*http.Response, er if req.Body != nil { defer func() { if !reqBodyClosed { - req.Body.Close() + req.Body.Close() //nolint:errcheck // req.Body is only used in a read-only manner. } }() } diff --git a/vendor/github.com/buildkite/agent/v3/internal/agenthttp/do.go b/vendor/github.com/buildkite/agent/v3/internal/agenthttp/do.go index 6d60e2e26f..8bf35b770f 100644 --- a/vendor/github.com/buildkite/agent/v3/internal/agenthttp/do.go +++ b/vendor/github.com/buildkite/agent/v3/internal/agenthttp/do.go @@ -85,11 +85,6 @@ type doConfig struct { func WithDebugHTTP(d bool) DoOption { return func(c *doConfig) { c.debugHTTP = d } } func WithTraceHTTP(t bool) DoOption { return func(c *doConfig) { c.traceHTTP = t } } -type traceEvent struct { - event string - since time.Duration -} - type tracer struct { startTime time.Time logger.Logger @@ -100,15 +95,15 @@ func (t *tracer) Start() { } func (t *tracer) LogTiming(event string) { - t.Logger = t.Logger.WithFields(logger.DurationField(event, time.Since(t.startTime))) + t.Logger = t.WithFields(logger.DurationField(event, time.Since(t.startTime))) } func (t *tracer) LogField(key, value string) { - t.Logger = t.Logger.WithFields(logger.StringField(key, value)) + t.Logger = t.WithFields(logger.StringField(key, value)) } func (t *tracer) LogDuration(event string, d time.Duration) { - t.Logger = t.Logger.WithFields(logger.DurationField(event, d)) + t.Logger = t.WithFields(logger.DurationField(event, d)) } // Currently logger.Logger doesn't give us a way to set the level we want to emit logs at dynamically diff --git a/vendor/github.com/buildkite/agent/v3/version/VERSION b/vendor/github.com/buildkite/agent/v3/version/VERSION index 14f32f54d8..2e00703aad 100644 --- a/vendor/github.com/buildkite/agent/v3/version/VERSION +++ b/vendor/github.com/buildkite/agent/v3/version/VERSION @@ -1 +1 @@ -3.102.1 +3.104.0 diff --git a/vendor/github.com/buildkite/go-pipeline/step_command_matrix.go b/vendor/github.com/buildkite/go-pipeline/step_command_matrix.go index ba75e74f18..e69ea4a762 100644 --- a/vendor/github.com/buildkite/go-pipeline/step_command_matrix.go +++ b/vendor/github.com/buildkite/go-pipeline/step_command_matrix.go @@ -4,6 +4,7 @@ import ( "encoding/json" "errors" "fmt" + "slices" "github.com/buildkite/go-pipeline/ordered" "gopkg.in/yaml.v3" @@ -158,14 +159,7 @@ func (m *Matrix) validatePermutation(p MatrixPermutation) error { // permutation). Whether they are or are not, we still check adjustments. valid := true for dim, val := range p { - match := false - for _, v := range m.Setup[dim] { - if val == v { - match = true - break - } - } - if !match { + if !slices.Contains(m.Setup[dim], val) { // Not a basic permutation. It could still be an adjustment though. valid = false break diff --git a/vendor/github.com/buildkite/roko/README.md b/vendor/github.com/buildkite/roko/README.md index 84b4c31801..509d71f193 100644 --- a/vendor/github.com/buildkite/roko/README.md +++ b/vendor/github.com/buildkite/roko/README.md @@ -197,8 +197,6 @@ The random number generator is only used for jitter, so it only makes sense to p Roko is named after [Josevata Rokocoko](https://en.wikipedia.org/wiki/Joe_Rokocoko), a Fijian-New Zealand rugby player, and one of the best to ever do it. He scored a lot of tries, thus, he's a re-trier. -Depending on who you ask, it's also [the owner of a basilisk](https://rationalwiki.org/wiki/Roko%27s_basilisk). - ## Contributing By all means, please contribute! We'd love to have your input. If you run into a bug, feel free to open an issue, and if you find missing functionality, please don't hesitate to open a PR. If you have a weird and wonderful retry strategy you'd like to add, we'd love to see it. diff --git a/vendor/github.com/buildkite/roko/retrier.go b/vendor/github.com/buildkite/roko/retrier.go index 17213ab43d..9a6ff2bc17 100644 --- a/vendor/github.com/buildkite/roko/retrier.go +++ b/vendor/github.com/buildkite/roko/retrier.go @@ -92,23 +92,23 @@ func ExponentialSubsecond(initial time.Duration) (Strategy, string) { }, exponentialStrategy } -type retrierOpt func(*Retrier) +type RetrierOpt func(*Retrier) // WithMaxAttempts sets the maximum number of retries that a retrier will attempt -func WithMaxAttempts(maxAttempts int) retrierOpt { +func WithMaxAttempts(maxAttempts int) RetrierOpt { return func(r *Retrier) { r.maxAttempts = maxAttempts } } -func WithRand(rand *rand.Rand) retrierOpt { +func WithRand(rand *rand.Rand) RetrierOpt { return func(r *Retrier) { r.rand = rand } } // WithStrategy sets the retry strategy that the retrier will use to determine how long to wait between retries -func WithStrategy(strategy Strategy, strategyType string) retrierOpt { +func WithStrategy(strategy Strategy, strategyType string) RetrierOpt { return func(r *Retrier) { r.strategyType = strategyType r.intervalCalculator = strategy @@ -119,7 +119,7 @@ func WithStrategy(strategy Strategy, strategyType string) retrierOpt { // The idea here is to avoid thundering herds - retries that are in parallel will happen at slightly different times when // jitter is enabled, whereas if jitter is disabled, all the retries might happen at the same time, causing further load // on the system that we're tryung to do something with -func WithJitter() retrierOpt { +func WithJitter() RetrierOpt { return func(r *Retrier) { r.jitter = true r.jitterRange = jitterRange{min: 0, max: defaultJitterInterval} @@ -131,7 +131,7 @@ func WithJitter() retrierOpt { // to the interval calculated by the retry strategy. The jitter will be recalculated for each retry. Both min and max may // be negative, but min must be less than max. min and max may both be zero, which is equivalent to disabling jitter. // If a negative jitter causes a negative interval, the interval will be clamped to zero. -func WithJitterRange(min, max time.Duration) retrierOpt { +func WithJitterRange(min, max time.Duration) RetrierOpt { if min >= max { panic("min must be less than max") } @@ -147,7 +147,7 @@ func WithJitterRange(min, max time.Duration) retrierOpt { // TryForever causes the retrier to to never give up retrying, until either the operation succeeds, or the operation // calls retrier.Break() -func TryForever() retrierOpt { +func TryForever() RetrierOpt { return func(r *Retrier) { r.forever = true } @@ -155,7 +155,7 @@ func TryForever() retrierOpt { // WithSleepFunc sets the function that the retrier uses to sleep between successive attempts // Only really useful for testing -func WithSleepFunc(f func(time.Duration)) retrierOpt { +func WithSleepFunc(f func(time.Duration)) RetrierOpt { return func(r *Retrier) { r.sleepFunc = f } @@ -163,7 +163,7 @@ func WithSleepFunc(f func(time.Duration)) retrierOpt { // NewRetrier creates a new instance of the Retrier struct. Pass in retrierOpt functions to customise the behaviour of // the retrier -func NewRetrier(opts ...retrierOpt) *Retrier { +func NewRetrier(opts ...RetrierOpt) *Retrier { r := &Retrier{ rand: defaultRandom, } diff --git a/vendor/github.com/cenkalti/backoff/v5/exponential.go b/vendor/github.com/cenkalti/backoff/v5/exponential.go index c1f3e442d3..79d425e874 100644 --- a/vendor/github.com/cenkalti/backoff/v5/exponential.go +++ b/vendor/github.com/cenkalti/backoff/v5/exponential.go @@ -1,7 +1,7 @@ package backoff import ( - "math/rand" + "math/rand/v2" "time" ) @@ -28,13 +28,7 @@ multiplied by the exponential, that is, between 2 and 6 seconds. Note: MaxInterval caps the RetryInterval and not the randomized interval. -If the time elapsed since an ExponentialBackOff instance is created goes past the -MaxElapsedTime, then the method NextBackOff() starts returning backoff.Stop. - -The elapsed time can be reset by calling Reset(). - -Example: Given the following default arguments, for 10 tries the sequence will be, -and assuming we go over the MaxElapsedTime on the 10th try: +Example: Given the following default arguments, for 9 tries the sequence will be: Request # RetryInterval (seconds) Randomized Interval (seconds) @@ -47,7 +41,6 @@ and assuming we go over the MaxElapsedTime on the 10th try: 7 5.692 [2.846, 8.538] 8 8.538 [4.269, 12.807] 9 12.807 [6.403, 19.210] - 10 19.210 backoff.Stop Note: Implementation is not thread-safe. */ diff --git a/vendor/github.com/cenkalti/backoff/v5/retry.go b/vendor/github.com/cenkalti/backoff/v5/retry.go index e43f47fb8a..32a7f98834 100644 --- a/vendor/github.com/cenkalti/backoff/v5/retry.go +++ b/vendor/github.com/cenkalti/backoff/v5/retry.go @@ -47,7 +47,7 @@ func WithNotify(n Notify) RetryOption { } } -// WithMaxTries limits the number of retry attempts. +// WithMaxTries limits the number of all attempts. func WithMaxTries(n uint) RetryOption { return func(args *retryOptions) { args.MaxTries = n @@ -97,7 +97,7 @@ func Retry[T any](ctx context.Context, operation Operation[T], opts ...RetryOpti // Handle permanent errors without retrying. var permanent *PermanentError if errors.As(err, &permanent) { - return res, err + return res, permanent.Unwrap() } // Stop retrying if context is cancelled. diff --git a/vendor/github.com/emicklei/go-restful/v3/CHANGES.md b/vendor/github.com/emicklei/go-restful/v3/CHANGES.md index 92b78048e2..6f24dfff56 100644 --- a/vendor/github.com/emicklei/go-restful/v3/CHANGES.md +++ b/vendor/github.com/emicklei/go-restful/v3/CHANGES.md @@ -1,5 +1,8 @@ # Change history of go-restful +## [v3.12.2] - 2025-02-21 + +- allow empty payloads in post,put,patch, issue #580 ( thanks @liggitt, Jordan Liggitt) ## [v3.12.1] - 2024-05-28 @@ -18,7 +21,7 @@ - fix by restoring custom JSON handler functions (Mike Beaumont #540) -## [v3.12.0] - 2023-08-19 +## [v3.11.0] - 2023-08-19 - restored behavior as <= v3.9.0 with option to change path strategy using TrimRightSlashEnabled. diff --git a/vendor/github.com/emicklei/go-restful/v3/README.md b/vendor/github.com/emicklei/go-restful/v3/README.md index 7234604e47..3fb40d1980 100644 --- a/vendor/github.com/emicklei/go-restful/v3/README.md +++ b/vendor/github.com/emicklei/go-restful/v3/README.md @@ -3,7 +3,7 @@ go-restful package for building REST-style Web Services using Google Go [![Go Report Card](https://goreportcard.com/badge/github.com/emicklei/go-restful)](https://goreportcard.com/report/github.com/emicklei/go-restful) -[![GoDoc](https://godoc.org/github.com/emicklei/go-restful?status.svg)](https://pkg.go.dev/github.com/emicklei/go-restful) +[![Go Reference](https://pkg.go.dev/badge/github.com/emicklei/go-restful.svg)](https://pkg.go.dev/github.com/emicklei/go-restful/v3) [![codecov](https://codecov.io/gh/emicklei/go-restful/branch/master/graph/badge.svg)](https://codecov.io/gh/emicklei/go-restful) - [Code examples use v3](https://github.com/emicklei/go-restful/tree/v3/examples) diff --git a/vendor/github.com/emicklei/go-restful/v3/jsr311.go b/vendor/github.com/emicklei/go-restful/v3/jsr311.go index a9b3faaa81..7f04bd9053 100644 --- a/vendor/github.com/emicklei/go-restful/v3/jsr311.go +++ b/vendor/github.com/emicklei/go-restful/v3/jsr311.go @@ -65,7 +65,7 @@ func (RouterJSR311) extractParams(pathExpr *pathExpression, matches []string) ma return params } -// http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-360003.7.2 +// https://download.oracle.com/otndocs/jcp/jaxrs-1.1-mrel-eval-oth-JSpec/ func (r RouterJSR311) detectRoute(routes []Route, httpRequest *http.Request) (*Route, error) { candidates := make([]*Route, 0, 8) for i, each := range routes { @@ -126,9 +126,7 @@ func (r RouterJSR311) detectRoute(routes []Route, httpRequest *http.Request) (*R if trace { traceLogger.Printf("no Route found (from %d) that matches HTTP Content-Type: %s\n", len(previous), contentType) } - if httpRequest.ContentLength > 0 { - return nil, NewError(http.StatusUnsupportedMediaType, "415: Unsupported Media Type") - } + return nil, NewError(http.StatusUnsupportedMediaType, "415: Unsupported Media Type") } // accept @@ -151,20 +149,9 @@ func (r RouterJSR311) detectRoute(routes []Route, httpRequest *http.Request) (*R for _, candidate := range previous { available = append(available, candidate.Produces...) } - // if POST,PUT,PATCH without body - method, length := httpRequest.Method, httpRequest.Header.Get("Content-Length") - if (method == http.MethodPost || - method == http.MethodPut || - method == http.MethodPatch) && (length == "" || length == "0") { - return nil, NewError( - http.StatusUnsupportedMediaType, - fmt.Sprintf("415: Unsupported Media Type\n\nAvailable representations: %s", strings.Join(available, ", ")), - ) - } return nil, NewError( http.StatusNotAcceptable, - fmt.Sprintf("406: Not Acceptable\n\nAvailable representations: %s", strings.Join(available, ", ")), - ) + fmt.Sprintf("406: Not Acceptable\n\nAvailable representations: %s", strings.Join(available, ", "))) } // return r.bestMatchByMedia(outputMediaOk, contentType, accept), nil return candidates[0], nil diff --git a/vendor/github.com/emicklei/go-restful/v3/route.go b/vendor/github.com/emicklei/go-restful/v3/route.go index 306c44be77..a2056e2acb 100644 --- a/vendor/github.com/emicklei/go-restful/v3/route.go +++ b/vendor/github.com/emicklei/go-restful/v3/route.go @@ -111,6 +111,8 @@ func (r Route) matchesAccept(mimeTypesWithQuality string) bool { } // Return whether this Route can consume content with a type specified by mimeTypes (can be empty). +// If the route does not specify Consumes then return true (*/*). +// If no content type is set then return true for GET,HEAD,OPTIONS,DELETE and TRACE. func (r Route) matchesContentType(mimeTypes string) bool { if len(r.Consumes) == 0 { diff --git a/vendor/github.com/fxamacker/cbor/v2/README.md b/vendor/github.com/fxamacker/cbor/v2/README.md index af0a79507e..d072b81c73 100644 --- a/vendor/github.com/fxamacker/cbor/v2/README.md +++ b/vendor/github.com/fxamacker/cbor/v2/README.md @@ -1,30 +1,31 @@ -# CBOR Codec in Go - - +

    CBOR Codec Go logo

    [fxamacker/cbor](https://github.com/fxamacker/cbor) is a library for encoding and decoding [CBOR](https://www.rfc-editor.org/info/std94) and [CBOR Sequences](https://www.rfc-editor.org/rfc/rfc8742.html). CBOR is a [trusted alternative](https://www.rfc-editor.org/rfc/rfc8949.html#name-comparison-of-other-binary-) to JSON, MessagePack, Protocol Buffers, etc.  CBOR is an Internet Standard defined by [IETF STD 94 (RFC 8949)](https://www.rfc-editor.org/info/std94) and is designed to be relevant for decades. -`fxamacker/cbor` is used in projects by Arm Ltd., Cisco, EdgeX Foundry, Flow Foundation, Fraunhofer‑AISEC, Kubernetes, Let's Encrypt (ISRG), Linux Foundation, Microsoft, Mozilla, Oasis Protocol, Tailscale, Teleport, [etc](https://github.com/fxamacker/cbor#who-uses-fxamackercbor). +`fxamacker/cbor` is used in projects by Arm Ltd., EdgeX Foundry, Flow Foundation, Fraunhofer‑AISEC, IBM, Kubernetes[*](https://github.com/search?q=org%3Akubernetes%20fxamacker%2Fcbor&type=code), Let's Encrypt, Linux Foundation, Microsoft, Oasis Protocol, Red Hat[*](https://github.com/search?q=org%3Aopenshift+fxamacker%2Fcbor&type=code), Tailscale[*](https://github.com/search?q=org%3Atailscale+fxamacker%2Fcbor&type=code), Veraison[*](https://github.com/search?q=org%3Averaison+fxamacker%2Fcbor&type=code), [etc](https://github.com/fxamacker/cbor#who-uses-fxamackercbor). -See [Quick Start](#quick-start) and [Releases](https://github.com/fxamacker/cbor/releases/). 🆕 `UnmarshalFirst` and `DiagnoseFirst` can decode CBOR Sequences. `cbor.MarshalToBuffer()` and `UserBufferEncMode` accepts user-specified buffer. +See [Quick Start](#quick-start) and [Releases](https://github.com/fxamacker/cbor/releases/). 🆕 `UnmarshalFirst` and `DiagnoseFirst` can decode CBOR Sequences. `MarshalToBuffer` and `UserBufferEncMode` accepts user-specified buffer. ## fxamacker/cbor [![](https://github.com/fxamacker/cbor/workflows/ci/badge.svg)](https://github.com/fxamacker/cbor/actions?query=workflow%3Aci) -[![](https://github.com/fxamacker/cbor/workflows/cover%20%E2%89%A596%25/badge.svg)](https://github.com/fxamacker/cbor/actions?query=workflow%3A%22cover+%E2%89%A596%25%22) +[![](https://github.com/fxamacker/cbor/workflows/cover%20%E2%89%A597%25/badge.svg)](https://github.com/fxamacker/cbor/actions?query=workflow%3A%22cover+%E2%89%A597%25%22) [![CodeQL](https://github.com/fxamacker/cbor/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/fxamacker/cbor/actions/workflows/codeql-analysis.yml) [![](https://img.shields.io/badge/fuzzing-passing-44c010)](#fuzzing-and-code-coverage) [![Go Report Card](https://goreportcard.com/badge/github.com/fxamacker/cbor)](https://goreportcard.com/report/github.com/fxamacker/cbor) +[![](https://img.shields.io/ossf-scorecard/github.com/fxamacker/cbor?label=openssf%20scorecard)](https://github.com/fxamacker/cbor#fuzzing-and-code-coverage) `fxamacker/cbor` is a CBOR codec in full conformance with [IETF STD 94 (RFC 8949)](https://www.rfc-editor.org/info/std94). It also supports CBOR Sequences ([RFC 8742](https://www.rfc-editor.org/rfc/rfc8742.html)) and Extended Diagnostic Notation ([Appendix G of RFC 8610](https://www.rfc-editor.org/rfc/rfc8610.html#appendix-G)). Features include full support for CBOR tags, [Core Deterministic Encoding](https://www.rfc-editor.org/rfc/rfc8949.html#name-core-deterministic-encoding), duplicate map key detection, etc. +API is mostly same as `encoding/json`, plus interfaces that simplify concurrency and CBOR options. + Design balances trade-offs between security, speed, concurrency, encoded data size, usability, etc. -
    Highlights

    +

    🔎  Highlights

    __🚀  Speed__ @@ -38,7 +39,7 @@ Codec passed multiple confidential security assessments in 2022. No vulnerabili __🗜️  Data Size__ -Struct tags (`toarray`, `keyasint`, `omitempty`) automatically reduce size of encoded structs. Encoding optionally shrinks float64→32→16 when values fit. +Struct tag options (`toarray`, `keyasint`, `omitempty`, `omitzero`) and field tag "-" automatically reduce size of encoded structs. Encoding optionally shrinks float64→32→16 when values fit. __:jigsaw:  Usability__ @@ -58,164 +59,205 @@ Features include CBOR [extension points](https://www.rfc-editor.org/rfc/rfc8949. `fxamacker/cbor` has configurable limits, etc. that defend against malicious CBOR data. -By contrast, `encoding/gob` is [not designed to be hardened against adversarial inputs](https://pkg.go.dev/encoding/gob#hdr-Security). - -

    Example decoding with encoding/gob 💥 fatal error (out of memory)

    - -```Go -// Example of encoding/gob having "fatal error: runtime: out of memory" -// while decoding 181 bytes. -package main -import ( - "bytes" - "encoding/gob" - "encoding/hex" - "fmt" -) - -// Example data is from https://github.com/golang/go/issues/24446 -// (shortened to 181 bytes). -const data = "4dffb503010102303001ff30000109010130010800010130010800010130" + - "01ffb80001014a01ffb60001014b01ff860001013001ff860001013001ff" + - "860001013001ff860001013001ffb80000001eff850401010e3030303030" + - "30303030303030303001ff3000010c0104000016ffb70201010830303030" + - "3030303001ff3000010c000030ffb6040405fcff00303030303030303030" + - "303030303030303030303030303030303030303030303030303030303030" + - "30" - -type X struct { - J *X - K map[string]int -} - -func main() { - raw, _ := hex.DecodeString(data) - decoder := gob.NewDecoder(bytes.NewReader(raw)) - - var x X - decoder.Decode(&x) // fatal error: runtime: out of memory - fmt.Println("Decoding finished.") -} -``` - -


    - -
    - -`fxamacker/cbor` is fast at rejecting malformed CBOR data. E.g. attempts to -decode 10 bytes of malicious CBOR data to `[]byte` (with default settings): - -| Codec | Speed (ns/op) | Memory | Allocs | -| :---- | ------------: | -----: | -----: | -| fxamacker/cbor 2.5.0 | 44 ± 5% | 32 B/op | 2 allocs/op | -| ugorji/go 1.2.11 | 5353261 ± 4% | 67111321 B/op | 13 allocs/op | - -
    Benchmark details

    - -Latest comparison used: -- Input: `[]byte{0x9B, 0x00, 0x00, 0x42, 0xFA, 0x42, 0xFA, 0x42, 0xFA, 0x42}` -- go1.19.10, linux/amd64, i5-13600K (disabled all e-cores, DDR4 @2933) -- go test -bench=. -benchmem -count=20 - -#### Prior comparisons - -| Codec | Speed (ns/op) | Memory | Allocs | -| :---- | ------------: | -----: | -----: | -| fxamacker/cbor 2.5.0-beta2 | 44.33 ± 2% | 32 B/op | 2 allocs/op | -| fxamacker/cbor 0.1.0 - 2.4.0 | ~44.68 ± 6% | 32 B/op | 2 allocs/op | -| ugorji/go 1.2.10 | 5524792.50 ± 3% | 67110491 B/op | 12 allocs/op | -| ugorji/go 1.1.0 - 1.2.6 | 💥 runtime: | out of memory: | cannot allocate | - -- Input: `[]byte{0x9B, 0x00, 0x00, 0x42, 0xFA, 0x42, 0xFA, 0x42, 0xFA, 0x42}` -- go1.19.6, linux/amd64, i5-13600K (DDR4) -- go test -bench=. -benchmem -count=20 - -


    - -
    - -### Smaller Encodings with Struct Tags - -Struct tags (`toarray`, `keyasint`, `omitempty`) reduce encoded size of structs. - -
    Example encoding 3-level nested Go struct to 1 byte CBOR

    - -https://go.dev/play/p/YxwvfPdFQG2 - -```Go -// Example encoding nested struct (with omitempty tag) -// - encoding/json: 18 byte JSON -// - fxamacker/cbor: 1 byte CBOR -package main - -import ( - "encoding/hex" - "encoding/json" - "fmt" - - "github.com/fxamacker/cbor/v2" -) - -type GrandChild struct { - Quux int `json:",omitempty"` -} - -type Child struct { - Baz int `json:",omitempty"` - Qux GrandChild `json:",omitempty"` -} - -type Parent struct { - Foo Child `json:",omitempty"` - Bar int `json:",omitempty"` -} - -func cb() { - results, _ := cbor.Marshal(Parent{}) - fmt.Println("hex(CBOR): " + hex.EncodeToString(results)) - - text, _ := cbor.Diagnose(results) // Diagnostic Notation - fmt.Println("DN: " + text) -} - -func js() { - results, _ := json.Marshal(Parent{}) - fmt.Println("hex(JSON): " + hex.EncodeToString(results)) - - text := string(results) // JSON - fmt.Println("JSON: " + text) -} - -func main() { - cb() - fmt.Println("-------------") - js() -} -``` - -Output (DN is Diagnostic Notation): -``` -hex(CBOR): a0 -DN: {} -------------- -hex(JSON): 7b22466f6f223a7b22517578223a7b7d7d7d -JSON: {"Foo":{"Qux":{}}} -``` - -


    - -
    - -Example using different struct tags together: +Notably, `fxamacker/cbor` is fast at rejecting malformed CBOR data. + +> [!NOTE] +> Benchmarks rejecting 10 bytes of malicious CBOR data decoding to `[]byte`: +> +> | Codec | Speed (ns/op) | Memory | Allocs | +> | :---- | ------------: | -----: | -----: | +> | fxamacker/cbor 2.7.0 | 47 ± 7% | 32 B/op | 2 allocs/op | +> | ugorji/go 1.2.12 | 5878187 ± 3% | 67111556 B/op | 13 allocs/op | +> +> Faster hardware (overclocked DDR4 or DDR5) can reduce speed difference. +> +>
    🔎  Benchmark details

    +> +> Latest comparison for decoding CBOR data to Go `[]byte`: +> - Input: `[]byte{0x9B, 0x00, 0x00, 0x42, 0xFA, 0x42, 0xFA, 0x42, 0xFA, 0x42}` +> - go1.22.7, linux/amd64, i5-13600K (DDR4-2933, disabled e-cores) +> - go test -bench=. -benchmem -count=20 +> +> #### Prior comparisons +> +> | Codec | Speed (ns/op) | Memory | Allocs | +> | :---- | ------------: | -----: | -----: | +> | fxamacker/cbor 2.5.0-beta2 | 44.33 ± 2% | 32 B/op | 2 allocs/op | +> | fxamacker/cbor 0.1.0 - 2.4.0 | ~44.68 ± 6% | 32 B/op | 2 allocs/op | +> | ugorji/go 1.2.10 | 5524792.50 ± 3% | 67110491 B/op | 12 allocs/op | +> | ugorji/go 1.1.0 - 1.2.6 | 💥 runtime: | out of memory: | cannot allocate | +> +> - Input: `[]byte{0x9B, 0x00, 0x00, 0x42, 0xFA, 0x42, 0xFA, 0x42, 0xFA, 0x42}` +> - go1.19.6, linux/amd64, i5-13600K (DDR4) +> - go test -bench=. -benchmem -count=20 +> +>

    + +In contrast, some codecs can crash or use excessive resources while decoding bad data. + +> [!WARNING] +> Go's `encoding/gob` is [not designed to be hardened against adversarial inputs](https://pkg.go.dev/encoding/gob#hdr-Security). +> +>
    🔎  gob fatal error (out of memory) 💥 decoding 181 bytes

    +> +> ```Go +> // Example of encoding/gob having "fatal error: runtime: out of memory" +> // while decoding 181 bytes (all Go versions as of Dec. 8, 2024). +> package main +> import ( +> "bytes" +> "encoding/gob" +> "encoding/hex" +> "fmt" +> ) +> +> // Example data is from https://github.com/golang/go/issues/24446 +> // (shortened to 181 bytes). +> const data = "4dffb503010102303001ff30000109010130010800010130010800010130" + +> "01ffb80001014a01ffb60001014b01ff860001013001ff860001013001ff" + +> "860001013001ff860001013001ffb80000001eff850401010e3030303030" + +> "30303030303030303001ff3000010c0104000016ffb70201010830303030" + +> "3030303001ff3000010c000030ffb6040405fcff00303030303030303030" + +> "303030303030303030303030303030303030303030303030303030303030" + +> "30" +> +> type X struct { +> J *X +> K map[string]int +> } +> +> func main() { +> raw, _ := hex.DecodeString(data) +> decoder := gob.NewDecoder(bytes.NewReader(raw)) +> +> var x X +> decoder.Decode(&x) // fatal error: runtime: out of memory +> fmt.Println("Decoding finished.") +> } +> ``` +> +> +>

    + +### Smaller Encodings with Struct Tag Options + +Struct tags automatically reduce encoded size of structs and improve speed. + +We can write less code by using struct tag options: +- `toarray`: encode without field names (decode back to original struct) +- `keyasint`: encode field names as integers (decode back to original struct) +- `omitempty`: omit empty field when encoding +- `omitzero`: omit zero-value field when encoding + +As a special case, struct field tag "-" omits the field. + +NOTE: When a struct uses `toarray`, the encoder will ignore `omitempty` and `omitzero` to prevent position of encoded array elements from changing. This allows decoder to match encoded elements to their Go struct field. ![alt text](https://github.com/fxamacker/images/raw/master/cbor/v2.3.0/cbor_struct_tags_api.svg?sanitize=1 "CBOR API and Go Struct Tags") -API is mostly same as `encoding/json`, plus interfaces that simplify concurrency for CBOR options. +> [!NOTE] +> `fxamacker/cbor` can encode a 3-level nested Go struct to 1 byte! +> - `encoding/json`: 18 bytes of JSON +> - `fxamacker/cbor`: 1 byte of CBOR +> +>
    🔎  Encoding 3-level nested Go struct with omitempty

    +> +> https://go.dev/play/p/YxwvfPdFQG2 +> +> ```Go +> // Example encoding nested struct (with omitempty tag) +> // - encoding/json: 18 byte JSON +> // - fxamacker/cbor: 1 byte CBOR +> +> package main +> +> import ( +> "encoding/hex" +> "encoding/json" +> "fmt" +> +> "github.com/fxamacker/cbor/v2" +> ) +> +> type GrandChild struct { +> Quux int `json:",omitempty"` +> } +> +> type Child struct { +> Baz int `json:",omitempty"` +> Qux GrandChild `json:",omitempty"` +> } +> +> type Parent struct { +> Foo Child `json:",omitempty"` +> Bar int `json:",omitempty"` +> } +> +> func cb() { +> results, _ := cbor.Marshal(Parent{}) +> fmt.Println("hex(CBOR): " + hex.EncodeToString(results)) +> +> text, _ := cbor.Diagnose(results) // Diagnostic Notation +> fmt.Println("DN: " + text) +> } +> +> func js() { +> results, _ := json.Marshal(Parent{}) +> fmt.Println("hex(JSON): " + hex.EncodeToString(results)) +> +> text := string(results) // JSON +> fmt.Println("JSON: " + text) +> } +> +> func main() { +> cb() +> fmt.Println("-------------") +> js() +> } +> ``` +> +> Output (DN is Diagnostic Notation): +> ``` +> hex(CBOR): a0 +> DN: {} +> ------------- +> hex(JSON): 7b22466f6f223a7b22517578223a7b7d7d7d +> JSON: {"Foo":{"Qux":{}}} +> ``` +> +>

    + ## Quick Start __Install__: `go get github.com/fxamacker/cbor/v2` and `import "github.com/fxamacker/cbor/v2"`. +> [!TIP] +> +> Tinygo users can try beta/experimental branch [feature/cbor-tinygo-beta](https://github.com/fxamacker/cbor/tree/feature/cbor-tinygo-beta). +> +>
    🔎  More about tinygo feature branch +> +> ### Tinygo +> +> Branch [feature/cbor-tinygo-beta](https://github.com/fxamacker/cbor/tree/feature/cbor-tinygo-beta) is based on fxamacker/cbor v2.7.0 and it can be compiled using tinygo v0.33 (also compiles with golang/go). +> +> It passes unit tests (with both go1.22 and tinygo v0.33) and is considered beta/experimental for tinygo. +> +> :warning: The `feature/cbor-tinygo-beta` branch does not get fuzz tested yet. +> +> Changes in this feature branch only affect tinygo compiled software. Summary of changes: +> - default `DecOptions.MaxNestedLevels` is reduced to 16 (was 32). User can specify higher limit but 24+ crashes tests when compiled with tinygo v0.33. +> - disabled decoding CBOR tag data to Go interface because tinygo v0.33 is missing needed feature. +> - encoding error message can be different when encoding function type. +> +> Related tinygo issues: +> - https://github.com/tinygo-org/tinygo/issues/4277 +> - https://github.com/tinygo-org/tinygo/issues/4458 +> +>
    + + ### Key Points This library can encode and decode CBOR (RFC 8949) and CBOR Sequences (RFC 8742). @@ -252,16 +294,17 @@ rest, err = cbor.UnmarshalFirst(b, &v) // decode []byte b to v // DiagnoseFirst translates first CBOR data item to text and returns remaining bytes. text, rest, err = cbor.DiagnoseFirst(b) // decode []byte b to Diagnostic Notation text -// NOTE: Unmarshal returns ExtraneousDataError if there are remaining bytes, -// but new funcs UnmarshalFirst and DiagnoseFirst do not. +// NOTE: Unmarshal() returns ExtraneousDataError if there are remaining bytes, but +// UnmarshalFirst() and DiagnoseFirst() allow trailing bytes. ``` -__IMPORTANT__: 👉 CBOR settings allow trade-offs between speed, security, encoding size, etc. - -- Different CBOR libraries may use different default settings. -- CBOR-based formats or protocols usually require specific settings. - -For example, WebAuthn uses "CTAP2 Canonical CBOR" which is available as a preset. +> [!IMPORTANT] +> CBOR settings allow trade-offs between speed, security, encoding size, etc. +> +> - Different CBOR libraries may use different default settings. +> - CBOR-based formats or protocols usually require specific settings. +> +> For example, WebAuthn uses "CTAP2 Canonical CBOR" which is available as a preset. ### Presets @@ -312,9 +355,63 @@ err = em.MarshalToBuffer(v, &buf) // encode v to provided buf ### Struct Tags -Struct tags (`toarray`, `keyasint`, `omitempty`) reduce encoded size of structs. +Struct tag options (`toarray`, `keyasint`, `omitempty`, `omitzero`) reduce encoded size of structs. + +As a special case, struct field tag "-" omits the field. + +
    🔎  Example encoding with struct field tag "-"

    + +https://go.dev/play/p/aWEIFxd7InX + +```Go +// https://github.com/fxamacker/cbor/issues/652 +package main + +import ( + "encoding/json" + "fmt" + + "github.com/fxamacker/cbor/v2" +) + +// The `cbor:"-"` tag omits the Type field when encoding to CBOR. +type Entity struct { + _ struct{} `cbor:",toarray"` + ID uint64 `json:"id"` + Type string `cbor:"-" json:"typeOf"` + Name string `json:"name"` +} + +func main() { + entity := Entity{ + ID: 1, + Type: "int64", + Name: "Identifier", + } + + c, _ := cbor.Marshal(entity) + diag, _ := cbor.Diagnose(c) + fmt.Printf("CBOR in hex: %x\n", c) + fmt.Printf("CBOR in edn: %s\n", diag) + + j, _ := json.Marshal(entity) + fmt.Printf("JSON: %s\n", string(j)) + + fmt.Printf("JSON encoding is %d bytes\n", len(j)) + fmt.Printf("CBOR encoding is %d bytes\n", len(c)) + + // Output: + // CBOR in hex: 82016a4964656e746966696572 + // CBOR in edn: [1, "Identifier"] + // JSON: {"id":1,"typeOf":"int64","name":"Identifier"} + // JSON encoding is 45 bytes + // CBOR encoding is 13 bytes +} +``` + +

    -
    Example encoding 3-level nested Go struct to 1 byte CBOR

    +

    🔎  Example encoding 3-level nested Go struct to 1 byte CBOR

    https://go.dev/play/p/YxwvfPdFQG2 @@ -382,13 +479,13 @@ JSON: {"Foo":{"Qux":{}}}

    -
    Example using several struct tags

    +

    🔎  Example using struct tag options

    ![alt text](https://github.com/fxamacker/images/raw/master/cbor/v2.3.0/cbor_struct_tags_api.svg?sanitize=1 "CBOR API and Go Struct Tags")

    -Struct tags simplify use of CBOR-based protocols that require CBOR arrays or maps with integer keys. +Struct tag options simplify use of CBOR-based protocols that require CBOR arrays or maps with integer keys. ### CBOR Tags @@ -404,7 +501,7 @@ em, err := opts.EncModeWithSharedTags(ts) // mutable shared CBOR tags `TagSet` and modes using it are safe for concurrent use. Equivalent API is available for `DecMode`. -
    Example using TagSet and TagOptions

    +

    🔎  Example using TagSet and TagOptions

    ```go // Use signedCWT struct defined in "Decoding CWT" example. @@ -430,16 +527,149 @@ if err := dm.Unmarshal(data, &v); err != nil { em, _ := cbor.EncOptions{}.EncModeWithTags(tags) // Marshal signedCWT with tag number. -if data, err := cbor.Marshal(v); err != nil { +if data, err := em.Marshal(v); err != nil { return err } ```

    +👉 `fxamacker/cbor` allows user apps to use almost any current or future CBOR tag number by implementing `cbor.Marshaler` and `cbor.Unmarshaler` interfaces. + +Basically, `MarshalCBOR` and `UnmarshalCBOR` functions can be implemented by user apps and those functions will automatically be called by this CBOR codec's `Marshal`, `Unmarshal`, etc. + +The following [example](https://github.com/fxamacker/cbor/blob/master/example_embedded_json_tag_for_cbor_test.go) shows how to encode and decode a tagged CBOR data item with tag number 262. The tag content is a JSON object "embedded" as a CBOR byte string (major type 2). + +
    🔎  Example using Embedded JSON Tag for CBOR (tag 262) + +```go +// https://github.com/fxamacker/cbor/issues/657 + +package cbor_test + +// NOTE: RFC 8949 does not mention tag number 262. IANA assigned +// CBOR tag number 262 as "Embedded JSON Object" specified by the +// document Embedded JSON Tag for CBOR: +// +// "Tag 262 can be applied to a byte string (major type 2) to indicate +// that the byte string is a JSON Object. The length of the byte string +// indicates the content." +// +// For more info, see Embedded JSON Tag for CBOR at: +// https://github.com/toravir/CBOR-Tag-Specs/blob/master/embeddedJSON.md + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/fxamacker/cbor/v2" +) + +// cborTagNumForEmbeddedJSON is the CBOR tag number 262. +const cborTagNumForEmbeddedJSON = 262 + +// EmbeddedJSON represents a Go value to be encoded as a tagged CBOR data item +// with tag number 262 and the tag content is a JSON object "embedded" as a +// CBOR byte string (major type 2). +type EmbeddedJSON struct { + any +} + +func NewEmbeddedJSON(val any) EmbeddedJSON { + return EmbeddedJSON{val} +} + +// MarshalCBOR encodes EmbeddedJSON to a tagged CBOR data item with the +// tag number 262 and the tag content is a JSON object that is +// "embedded" as a CBOR byte string. +func (v EmbeddedJSON) MarshalCBOR() ([]byte, error) { + // Encode v to JSON object. + data, err := json.Marshal(v) + if err != nil { + return nil, err + } + + // Create cbor.Tag representing a tagged CBOR data item. + tag := cbor.Tag{ + Number: cborTagNumForEmbeddedJSON, + Content: data, + } + + // Marshal to a tagged CBOR data item. + return cbor.Marshal(tag) +} + +// UnmarshalCBOR decodes a tagged CBOR data item to EmbeddedJSON. +// The byte slice provided to this function must contain a single +// tagged CBOR data item with the tag number 262 and tag content +// must be a JSON object "embedded" as a CBOR byte string. +func (v *EmbeddedJSON) UnmarshalCBOR(b []byte) error { + // Unmarshal tagged CBOR data item. + var tag cbor.Tag + if err := cbor.Unmarshal(b, &tag); err != nil { + return err + } + + // Check tag number. + if tag.Number != cborTagNumForEmbeddedJSON { + return fmt.Errorf("got tag number %d, expect tag number %d", tag.Number, cborTagNumForEmbeddedJSON) + } + + // Check tag content. + jsonData, isByteString := tag.Content.([]byte) + if !isByteString { + return fmt.Errorf("got tag content type %T, expect tag content []byte", tag.Content) + } + + // Unmarshal JSON object. + return json.Unmarshal(jsonData, v) +} + +// MarshalJSON encodes EmbeddedJSON to a JSON object. +func (v EmbeddedJSON) MarshalJSON() ([]byte, error) { + return json.Marshal(v.any) +} + +// UnmarshalJSON decodes a JSON object. +func (v *EmbeddedJSON) UnmarshalJSON(b []byte) error { + dec := json.NewDecoder(bytes.NewReader(b)) + dec.UseNumber() + return dec.Decode(&v.any) +} + +func Example_embeddedJSONTagForCBOR() { + value := NewEmbeddedJSON(map[string]any{ + "name": "gopher", + "id": json.Number("42"), + }) + + data, err := cbor.Marshal(value) + if err != nil { + panic(err) + } + + fmt.Printf("cbor: %x\n", data) + + var v EmbeddedJSON + err = cbor.Unmarshal(data, &v) + if err != nil { + panic(err) + } + + fmt.Printf("%+v\n", v.any) + for k, v := range v.any.(map[string]any) { + fmt.Printf(" %s: %v (%T)\n", k, v, v) + } +} +``` + +
    + + ### Functions and Interfaces -
    Functions and interfaces at a glance

    +

    🔎  Functions and interfaces at a glance

    Common functions with same API as `encoding/json`: - `Marshal`, `Unmarshal` @@ -453,7 +683,7 @@ because RFC 8949 treats CBOR data item with remaining bytes as malformed. Other useful functions: - `Diagnose`, `DiagnoseFirst` produce human-readable [Extended Diagnostic Notation](https://www.rfc-editor.org/rfc/rfc8610.html#appendix-G) from CBOR data. - `UnmarshalFirst` decodes first CBOR data item and return any remaining bytes. -- `Wellformed` returns true if the the CBOR data item is well-formed. +- `Wellformed` returns true if the CBOR data item is well-formed. Interfaces identical or comparable to Go `encoding` packages include: `Marshaler`, `Unmarshaler`, `BinaryMarshaler`, and `BinaryUnmarshaler`. @@ -472,15 +702,28 @@ Default limits may need to be increased for systems handling very large data (e. ## Status -v2.7.0 (June 23, 2024) adds features and improvements that help large projects (e.g. Kubernetes) use CBOR as an alternative to JSON and Protocol Buffers. Other improvements include speedups, improved memory use, bug fixes, new serialization options, etc. It passed fuzz tests (5+ billion executions) and is production quality. +[v2.9.0](https://github.com/fxamacker/cbor/releases/tag/v2.9.0) (Jul 13, 2025) improved interoperability/transcoding between CBOR & JSON, refactored tests, and improved docs. +- Add opt-in support for `encoding.TextMarshaler` and `encoding.TextUnmarshaler` to encode and decode from CBOR text string. +- Add opt-in support for `json.Marshaler` and `json.Unmarshaler` via user-provided transcoding function. +- Update docs for TimeMode, Tag, RawTag, and add example for Embedded JSON Tag for CBOR. + +v2.9.0 passed fuzz tests and is production quality. + +The minimum version of Go required to build: +- v2.8.0 and newer releases require go 1.20+. +- v2.7.1 and older releases require go 1.17+. For more details, see [release notes](https://github.com/fxamacker/cbor/releases). -### Prior Release +### Prior Releases + +[v2.8.0](https://github.com/fxamacker/cbor/releases/tag/v2.8.0) (March 30, 2025) is a small release primarily to add `omitzero` option to struct field tags and fix bugs. It passed fuzz tests (billions of executions) and is production quality. + +[v2.7.0](https://github.com/fxamacker/cbor/releases/tag/v2.7.0) (June 23, 2024) adds features and improvements that help large projects (e.g. Kubernetes) use CBOR as an alternative to JSON and Protocol Buffers. Other improvements include speedups, improved memory use, bug fixes, new serialization options, etc. It passed fuzz tests (5+ billion executions) and is production quality. [v2.6.0](https://github.com/fxamacker/cbor/releases/tag/v2.6.0) (February 2024) adds important new features, optimizations, and bug fixes. It is especially useful to systems that need to convert data between CBOR and JSON. New options and optimizations improve handling of bignum, integers, maps, and strings. -v2.5.0 was released on Sunday, August 13, 2023 with new features and important bug fixes. It is fuzz tested and production quality after extended beta [v2.5.0-beta](https://github.com/fxamacker/cbor/releases/tag/v2.5.0-beta) (Dec 2022) -> [v2.5.0](https://github.com/fxamacker/cbor/releases/tag/v2.5.0) (Aug 2023). +[v2.5.0](https://github.com/fxamacker/cbor/releases/tag/v2.5.0) was released on Sunday, August 13, 2023 with new features and important bug fixes. It is fuzz tested and production quality after extended beta [v2.5.0-beta](https://github.com/fxamacker/cbor/releases/tag/v2.5.0-beta) (Dec 2022) -> [v2.5.0](https://github.com/fxamacker/cbor/releases/tag/v2.5.0) (Aug 2023). __IMPORTANT__: 👉 Before upgrading from v2.4 or older release, please read the notable changes highlighted in the release notes. v2.5.0 is a large release with bug fixes to error handling for extraneous data in `Unmarshal`, etc. that should be reviewed before upgrading. @@ -489,7 +732,7 @@ See [v2.5.0 release notes](https://github.com/fxamacker/cbor/releases/tag/v2.5.0 See ["Version and API Changes"](https://github.com/fxamacker/cbor#versions-and-api-changes) section for more info about version numbering, etc. `sequence` mapping. This works well using "slack" Spanner CPU available in the smallest possible footprint, and consequently is comparably cheap requiring only extra Spanner storage costs. -### Alternatives considered +### Alternatives Considered Other transactional storage systems are available on GCP, e.g. CloudSQL or AlloyDB. Experiments were run using CloudSQL (MySQL), AlloyDB, and Spanner. diff --git a/vendor/github.com/transparency-dev/tessera/storage/gcp/antispam/gcp.go b/vendor/github.com/transparency-dev/tessera/storage/gcp/antispam/gcp.go index 2fefcc7c1d..7c6fd15bd1 100644 --- a/vendor/github.com/transparency-dev/tessera/storage/gcp/antispam/gcp.go +++ b/vendor/github.com/transparency-dev/tessera/storage/gcp/antispam/gcp.go @@ -19,10 +19,15 @@ package gcp import ( + "bytes" + "compress/gzip" "context" + "encoding/base64" "errors" "fmt" + "io" "iter" + "os" "sync/atomic" "time" @@ -32,7 +37,7 @@ import ( "cloud.google.com/go/spanner/apiv1/spannerpb" "github.com/transparency-dev/tessera" - "github.com/transparency-dev/tessera/internal/stream" + "github.com/transparency-dev/tessera/client" "google.golang.org/grpc/codes" "k8s.io/klog/v2" ) @@ -181,7 +186,7 @@ func (d *AntispamStorage) Decorator() func(f tessera.AddFn) tessera.AddFn { // Follower returns a follower which knows how to populate the antispam index. // // This implements tessera.Antispam. -func (d *AntispamStorage) Follower(b func([]byte) ([][]byte, error)) stream.Follower { +func (d *AntispamStorage) Follower(b func([]byte) ([][]byte, error)) tessera.Follower { f := &follower{ as: d, bundleHasher: b, @@ -191,6 +196,17 @@ func (d *AntispamStorage) Follower(b func([]byte) ([][]byte, error)) stream.Foll // does not support BatchWrite :( f.updateIndex = f.batchUpdateIndex + if r := os.Getenv("SPANNER_EMULATOR_HOST"); r != "" { + const warn = `H4sIAAAAAAAAA83VwRGAIAwEwH+qoFwrsEAr8eEDPZO7gxkcGV6G7IAJ2tr8iDp07Fs6J7BnImcK5J3EmHVIT2Dvp2YTVJMu/y1+X+jiFQ84LtK9mLHr0aqh+K15PwkWRDaPrcbU5WdMKILtCDMF5hSgQEdJlw/36D7eRYqPfsVNVBcMsNH2QQKq/p957Yr8RfWIE22t7L7ABwAA` + r, _ := base64.StdEncoding.DecodeString(warn) + gzr, _ := gzip.NewReader(bytes.NewReader([]byte(r))) + w, _ := io.ReadAll(gzr) + klog.Warningf("%s\nWarning: you're running under the Spanner emulator - this is not a supported environment!\n\n", string(w)) + + // Hack in a workaround for spannertest not supporting BatchWrites + f.updateIndex = emulatorWorkaroundUpdateIndexTx + } + return f } @@ -217,12 +233,12 @@ func (f *follower) Name() string { } // Follow uses entry data from the log to populate the antispam storage. -func (f *follower) Follow(ctx context.Context, lr stream.Streamer) { +func (f *follower) Follow(ctx context.Context, lr tessera.LogReader) { errOutOfSync := errors.New("out-of-sync") t := time.NewTicker(time.Second) var ( - next func() (stream.Entry[[]byte], error, bool) + next func() (client.Entry[[]byte], error, bool) stop func() curEntries [][]byte @@ -234,15 +250,14 @@ func (f *follower) Follow(ctx context.Context, lr stream.Streamer) { return case <-t.C: } - size, err := lr.IntegratedSize(ctx) - if err != nil { - klog.Errorf("Populate: IntegratedSize(): %v", err) - continue - } + + // logSize is the latest known size of the log we're following. + // This will get initialised below, inside the loop. + var logSize uint64 // Busy loop while there are entries to be consumed from the stream for streamDone := false; !streamDone; { - _, err = f.as.dbPool.ReadWriteTransaction(ctx, func(ctx context.Context, txn *spanner.ReadWriteTransaction) error { + _, err := f.as.dbPool.ReadWriteTransaction(ctx, func(ctx context.Context, txn *spanner.ReadWriteTransaction) error { ctx, span := tracer.Start(ctx, "tessera.antispam.gcp.FollowTxn") defer span.End() @@ -259,13 +274,28 @@ func (f *follower) Follow(ctx context.Context, lr stream.Streamer) { span.SetAttributes(followFromKey.Int64(nextIdx)) followFrom := uint64(nextIdx) - if followFrom >= size { - // Our view of the log is out of date, exit the busy loop and refresh it. - streamDone = true - return nil + if followFrom >= logSize { + // Our view of the log is out of date, update it + logSize, err = lr.IntegratedSize(ctx) + if err != nil { + streamDone = true + return fmt.Errorf("populate: IntegratedSize(): %v", err) + } + switch { + case followFrom > logSize: + streamDone = true + return fmt.Errorf("followFrom %d > size %d", followFrom, logSize) + case followFrom == logSize: + // We're caught up, so unblock pushback and go back to sleep + streamDone = true + f.as.pushBack.Store(false) + return nil + default: + // size > followFrom, so there's more work to be done! + } } - pushback := size-followFrom > uint64(f.as.opts.PushbackThreshold) + pushback := logSize-followFrom > uint64(f.as.opts.PushbackThreshold) span.SetAttributes(pushbackKey.Bool(pushback)) f.as.pushBack.Store(pushback) @@ -273,7 +303,11 @@ func (f *follower) Follow(ctx context.Context, lr stream.Streamer) { // start reading from: if next == nil { span.AddEvent("Start streaming entries") - next, stop = iter.Pull2(stream.Entries(lr.StreamEntries(ctx, followFrom, size-followFrom), f.bundleHasher)) + sizeFn := func(_ context.Context) (uint64, error) { + return logSize, nil + } + numFetchers := uint(10) + next, stop = iter.Pull2(client.Entries(client.EntryBundles(ctx, numFetchers, sizeFn, lr.ReadEntryBundle, followFrom, logSize-followFrom), f.bundleHasher)) } if curIndex == followFrom && curEntries != nil { @@ -283,7 +317,7 @@ func (f *follower) Follow(ctx context.Context, lr stream.Streamer) { // than continue reading entries which will take us out of sync. } else { bs := uint64(f.as.opts.MaxBatchSize) - if r := size - followFrom; r < bs { + if r := logSize - followFrom; r < bs { bs = r } batch := make([][]byte, 0, bs) @@ -442,3 +476,10 @@ func createAndPrepareTables(ctx context.Context, spannerDB string, ddl []string, } return nil } + +// emulatorWorkaroundUpdateIndexTx is a workaround for spannertest not supporting BatchWrites. +// We use this func as a replacement for follower's updateIndex hook, and simply commit the index +// updates inline with the larger transaction. +func emulatorWorkaroundUpdateIndexTx(_ context.Context, txn *spanner.ReadWriteTransaction, ms []*spanner.Mutation) error { + return txn.BufferWrite(ms) +} diff --git a/vendor/github.com/transparency-dev/tessera/storage/gcp/gcp.go b/vendor/github.com/transparency-dev/tessera/storage/gcp/gcp.go index 70a660bd12..ac85ff4d1b 100644 --- a/vendor/github.com/transparency-dev/tessera/storage/gcp/gcp.go +++ b/vendor/github.com/transparency-dev/tessera/storage/gcp/gcp.go @@ -35,7 +35,6 @@ import ( "errors" "fmt" "io" - "iter" "net/http" "os" "path/filepath" @@ -53,15 +52,16 @@ import ( "github.com/transparency-dev/tessera" "github.com/transparency-dev/tessera/api" "github.com/transparency-dev/tessera/api/layout" + "github.com/transparency-dev/tessera/internal/fetcher" "github.com/transparency-dev/tessera/internal/migrate" "github.com/transparency-dev/tessera/internal/otel" "github.com/transparency-dev/tessera/internal/parse" - "github.com/transparency-dev/tessera/internal/stream" storage "github.com/transparency-dev/tessera/storage/internal" "golang.org/x/sync/errgroup" "google.golang.org/api/googleapi" "google.golang.org/api/iterator" "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "k8s.io/klog/v2" ) @@ -124,6 +124,13 @@ type consumeFunc func(ctx context.Context, from uint64, entries []storage.Sequen // Config holds GCP project and resource configuration for a storage instance. type Config struct { + // GCSClient will be used to interact with GCS. If unset, Tessera will create one. + GCSClient *gcs.Client + // SpannerClient will be used to interact with Spanner. If unset, Tessera will create one. + SpannerClient *spanner.Client + // HTTPClient will be used for other HTTP requests. If unset, Tessera will use the net/http DefaultClient. + HTTPClient *http.Client + // Bucket is the name of the GCS bucket to use for storing log state. Bucket string // BucketPrefix is an optional prefix to prepend to all log resource paths. @@ -135,6 +142,9 @@ type Config struct { // New creates a new instance of the GCP based Storage. func New(ctx context.Context, cfg Config) (tessera.Driver, error) { + if cfg.HTTPClient == nil { + cfg.HTTPClient = http.DefaultClient + } return &Storage{ cfg: cfg, }, nil @@ -163,14 +173,18 @@ func (lr *LogReader) ReadTile(ctx context.Context, l, i uint64, p uint8) ([]byte ctx, span := tracer.Start(ctx, "tessera.storage.gcp.ReadTile") defer span.End() - return lr.lrs.getTile(ctx, l, i, p) + return fetcher.PartialOrFullResource(ctx, p, func(ctx context.Context, p uint8) ([]byte, error) { + return lr.lrs.getTile(ctx, l, i, p) + }) } func (lr *LogReader) ReadEntryBundle(ctx context.Context, i uint64, p uint8) ([]byte, error) { ctx, span := tracer.Start(ctx, "tessera.storage.gcp.ReadEntryBundle") defer span.End() - return lr.lrs.getEntryBundle(ctx, i, p) + return fetcher.PartialOrFullResource(ctx, p, func(ctx context.Context, p uint8) ([]byte, error) { + return lr.lrs.getEntryBundle(ctx, i, p) + }) } func (lr *LogReader) IntegratedSize(ctx context.Context) (uint64, error) { @@ -187,31 +201,33 @@ func (lr *LogReader) NextIndex(ctx context.Context) (uint64, error) { return lr.nextIndex(ctx) } -func (lr *LogReader) StreamEntries(ctx context.Context, startEntry, N uint64) iter.Seq2[stream.Bundle, error] { - ctx, span := tracer.Start(ctx, "tessera.storage.gcp.StreamEntries") - defer span.End() - - klog.Infof("StreamEntries from %d", startEntry) - - // TODO(al): Consider making this configurable. - // Requests to GCS can go super parallel without too much issue, but even just 10 concurrent requests seems to provide pretty good throughput. - numWorkers := uint(10) - return stream.EntryBundles(ctx, numWorkers, lr.integratedSize, lr.lrs.getEntryBundle, startEntry, N) -} - // Appender creates a new tessera.Appender lifecycle object. func (s *Storage) Appender(ctx context.Context, opts *tessera.AppendOptions) (*tessera.Appender, tessera.LogReader, error) { - c, err := gcs.NewClient(ctx, gcs.WithJSONReads()) - if err != nil { - return nil, nil, fmt.Errorf("failed to create GCS client: %v", err) + if s.cfg.GCSClient == nil { + var err error + s.cfg.GCSClient, err = gcs.NewClient(ctx, gcs.WithJSONReads()) + if err != nil { + return nil, nil, fmt.Errorf("failed to create GCS client: %v", err) + } } gs := &gcsStorage{ - gcsClient: c, + gcsClient: s.cfg.GCSClient, bucket: s.cfg.Bucket, bucketPrefix: s.cfg.BucketPrefix, } - seq, err := newSpannerCoordinator(ctx, s.cfg.Spanner, uint64(opts.PushbackMaxOutstanding())) + var err error + if s.cfg.SpannerClient == nil { + s.cfg.SpannerClient, err = spanner.NewClient(ctx, s.cfg.Spanner) + if err != nil { + return nil, nil, fmt.Errorf("failed to connect to Spanner: %v", err) + } + } + if err := initDB(ctx, s.cfg.Spanner); err != nil { + return nil, nil, fmt.Errorf("failed to verify/init Spanner schema: %v", err) + } + + seq, err := newSpannerCoordinator(ctx, s.cfg.SpannerClient, uint64(opts.PushbackMaxOutstanding())) if err != nil { return nil, nil, fmt.Errorf("failed to create Spanner coordinator: %v", err) } @@ -251,7 +267,7 @@ func (s *Storage) newAppender(ctx context.Context, o objStore, seq *spannerCoord return a.sequencer.nextIndex(ctx) }, } - a.newCP = opts.CheckpointPublisher(reader, http.DefaultClient) + a.newCP = opts.CheckpointPublisher(reader, s.cfg.HTTPClient) if err := a.init(ctx); err != nil { return nil, nil, fmt.Errorf("failed to initialise log storage: %v", err) @@ -369,14 +385,17 @@ func (a *Appender) garbageCollectorJob(ctx context.Context, i time.Duration) { cp, err := a.logStore.getCheckpoint(ctx) if err != nil { klog.Warningf("Failed to get published checkpoint: %v", err) + return } _, pubSize, _, err := parse.CheckpointUnsafe(cp) if err != nil { klog.Warningf("Failed to parse published checkpoint: %v", err) + return } if err := a.sequencer.garbageCollect(ctx, pubSize, maxBundlesPerRun, a.logStore.objStore.deleteObjectsWithPrefix); err != nil { klog.Warningf("GarbageCollect failed: %v", err) + return } }() } @@ -605,7 +624,7 @@ func integrate(ctx context.Context, fromSeq uint64, lh [][]byte, logStore *logRe if err := errG.Wait(); err != nil { return nil, err } - klog.Infof("New tree: %d, %x", newSize, newRoot) + klog.V(1).Infof("New tree: %d, %x", newSize, newRoot) return newRoot, nil } @@ -687,18 +706,11 @@ type spannerCoordinator struct { // newSpannerCoordinator returns a new spannerSequencer struct which uses the provided // spanner resource name for its spanner connection. -func newSpannerCoordinator(ctx context.Context, spannerDB string, maxOutstanding uint64) (*spannerCoordinator, error) { - dbPool, err := spanner.NewClient(ctx, spannerDB) - if err != nil { - return nil, fmt.Errorf("failed to connect to Spanner: %v", err) - } +func newSpannerCoordinator(ctx context.Context, dbPool *spanner.Client, maxOutstanding uint64) (*spannerCoordinator, error) { r := &spannerCoordinator{ dbPool: dbPool, maxOutstanding: maxOutstanding, } - if err := r.initDB(ctx, spannerDB); err != nil { - return nil, fmt.Errorf("failed to initDB: %v", err) - } if err := r.checkDataCompatibility(ctx); err != nil { return nil, fmt.Errorf("schema is not compatible with this version of the Tessera library: %v", err) } @@ -718,7 +730,7 @@ func newSpannerCoordinator(ctx context.Context, spannerDB string, maxOutstanding // - IntCoord // This table coordinates integration of the batches of entries stored in // Seq into the committed tree state. -func (s *spannerCoordinator) initDB(ctx context.Context, spannerDB string) error { +func initDB(ctx context.Context, spannerDB string) error { return createAndPrepareTables( ctx, spannerDB, []string{ @@ -1159,6 +1171,8 @@ func (s *gcsStorage) setObject(ctx context.Context, objName string, data []byte, } w.ContentType = contType w.CacheControl = cacheCtl + // Limit the amount of memory used for buffers, see https://pkg.go.dev/cloud.google.com/go/storage#Writer + w.ChunkSize = len(data) + 1024 if _, err := w.Write(data); err != nil { return fmt.Errorf("failed to write object %q to bucket %q: %w", objName, s.bucket, err) } @@ -1167,7 +1181,16 @@ func (s *gcsStorage) setObject(ctx context.Context, objName string, data []byte, // If we run into a precondition failure error, check that the object // which exists contains the same content that we want to write. // If so, we can consider this write to be idempotently successful. + preconditionFailed := false + + // Helpfully, the mechanism for detecting a failed precodition differs depending + // on whether you're using the HTTP or gRPC GCS client, so test both. if ee, ok := err.(*googleapi.Error); ok && ee.Code == http.StatusPreconditionFailed { + preconditionFailed = true + } else if st, ok := status.FromError(err); ok && st.Code() == codes.FailedPrecondition { + preconditionFailed = true + } + if preconditionFailed { existing, existingGen, err := s.getObject(ctx, objName) if err != nil { return fmt.Errorf("failed to fetch existing content for %q (@%d): %v", objName, existingGen, err) @@ -1221,12 +1244,25 @@ func (s *gcsStorage) deleteObjectsWithPrefix(ctx context.Context, objPrefix stri // MigrationWriter creates a new GCP storage for the MigrationTarget lifecycle mode. func (s *Storage) MigrationWriter(ctx context.Context, opts *tessera.MigrationOptions) (migrate.MigrationWriter, tessera.LogReader, error) { - c, err := gcs.NewClient(ctx, gcs.WithJSONReads()) - if err != nil { - return nil, nil, fmt.Errorf("failed to create GCS client: %v", err) + var err error + if s.cfg.GCSClient == nil { + s.cfg.GCSClient, err = gcs.NewClient(ctx, gcs.WithJSONReads()) + if err != nil { + return nil, nil, fmt.Errorf("failed to create GCS client: %v", err) + } + } + + if s.cfg.SpannerClient == nil { + s.cfg.SpannerClient, err = spanner.NewClient(ctx, s.cfg.Spanner) + if err != nil { + return nil, nil, fmt.Errorf("failed to connect to Spanner: %v", err) + } + } + if err := initDB(ctx, s.cfg.Spanner); err != nil { + return nil, nil, fmt.Errorf("failed to verify/init Spanner schema: %v", err) } - seq, err := newSpannerCoordinator(ctx, s.cfg.Spanner, 0) + seq, err := newSpannerCoordinator(ctx, s.cfg.SpannerClient, 0) if err != nil { return nil, nil, fmt.Errorf("failed to create Spanner sequencer: %v", err) } @@ -1237,7 +1273,7 @@ func (s *Storage) MigrationWriter(ctx context.Context, opts *tessera.MigrationOp sequencer: seq, logStore: &logResourceStore{ objStore: &gcsStorage{ - gcsClient: c, + gcsClient: s.cfg.GCSClient, bucket: s.cfg.Bucket, bucketPrefix: s.cfg.BucketPrefix, }, diff --git a/vendor/github.com/transparency-dev/tessera/storage/internal/queue.go b/vendor/github.com/transparency-dev/tessera/storage/internal/queue.go index cb7b9c2169..1a9ce6ece4 100644 --- a/vendor/github.com/transparency-dev/tessera/storage/internal/queue.go +++ b/vendor/github.com/transparency-dev/tessera/storage/internal/queue.go @@ -21,24 +21,24 @@ import ( "sync" "time" - "github.com/globocom/go-buffer" "github.com/transparency-dev/tessera" + "github.com/transparency-dev/tessera/internal/future" ) -// Queue knows how to queue up a number of entries in order, taking care of deduplication as they're added. +// Queue knows how to queue up a number of entries in order. // // When the buffered queue grows past a defined size, or the age of the oldest entry in the // queue reaches a defined threshold, the queue will call a provided FlushFunc with // a slice containing all queued entries in the same order as they were added. -// -// If multiple identical entries are added to the queue between flushes, the queue will deduplicate them by -// passing only the first through to the FlushFunc, and returning the index assigned to that entry to all -// duplicate add calls. -// Note that this deduplication only applies to "in-flight" entries currently in the queue; entries added -// after a flush will not be deduped against those added before the flush. type Queue struct { - buf *buffer.Buffer - flush FlushFunc + maxSize uint + maxAge time.Duration + + timer *time.Timer + work chan []queueItem + + mu sync.Mutex + items []queueItem } // FlushFunc is the signature of a function which will receive the slice of queued entries. @@ -55,59 +55,84 @@ type FlushFunc func(ctx context.Context, entries []*tessera.Entry) error // for maxAge, or the size of the queue reaches maxSize. func NewQueue(ctx context.Context, maxAge time.Duration, maxSize uint, f FlushFunc) *Queue { q := &Queue{ - flush: f, - } - - // The underlying queue implementation blocks additions during a flush. - // This blocks the filling of the next batch unnecessarily, so we'll - // decouple the queue flush and storage write by handling the latter in - // a worker goroutine. - // This same worker thread will also handle the callbacks to f. - work := make(chan []*queueItem, 1) - toWork := func(items []any) { - entries := make([]*queueItem, len(items)) - for i, t := range items { - entries[i] = t.(*queueItem) - } - work <- entries - + maxSize: maxSize, + maxAge: maxAge, + work: make(chan []queueItem, 1), + items: make([]queueItem, 0, maxSize), } - q.buf = buffer.New( - buffer.WithSize(maxSize), - buffer.WithFlushInterval(maxAge), - buffer.WithFlusher(buffer.FlusherFunc(toWork)), - ) - // Spin off a worker thread to write the queue flushes to storage. go func(ctx context.Context) { for { select { case <-ctx.Done(): return - case entries := <-work: - q.doFlush(ctx, entries) + case entries := <-q.work: + q.doFlush(ctx, f, entries) } } }(ctx) return q } -// Add places e into the queue, and returns a func which may be called to retrieve the assigned index. +// Add places e into the queue, and returns a func which should be called to retrieve the assigned index. func (q *Queue) Add(ctx context.Context, e *tessera.Entry) tessera.IndexFuture { - _, span := tracer.Start(ctx, "tessera.storage.queue.Add") - defer span.End() + qi := newEntry(e) + + q.mu.Lock() - qi := newEntry(ctx, e) + q.items = append(q.items, qi) + + // If this is the first item, start the timer. + if len(q.items) == 1 { + q.timer = time.AfterFunc(q.maxAge, q.flush) + } - if err := q.buf.Push(qi); err != nil { - qi.notify(err) + // If we've reached max size, flush. + var itemsToFlush []queueItem + if len(q.items) >= int(q.maxSize) { + itemsToFlush = q.flushLocked() } + q.mu.Unlock() + + if itemsToFlush != nil { + q.work <- itemsToFlush + } + return qi.f } +// flush is called by the timer to flush the buffer. +func (q *Queue) flush() { + q.mu.Lock() + itemsToFlush := q.flushLocked() + q.mu.Unlock() + + if itemsToFlush != nil { + q.work <- itemsToFlush + } +} + +// flushLocked must be called with q.mu held. +// It prepares items for flushing and returns them. +func (q *Queue) flushLocked() []queueItem { + if len(q.items) == 0 { + return nil + } + + if q.timer != nil { + q.timer.Stop() + q.timer = nil + } + + itemsToFlush := q.items + q.items = make([]queueItem, 0, q.maxSize) + + return itemsToFlush +} + // doFlush handles the queue flush, and sending notifications of assigned log indices. -func (q *Queue) doFlush(ctx context.Context, entries []*queueItem) { +func (q *Queue) doFlush(ctx context.Context, f FlushFunc, entries []queueItem) { ctx, span := tracer.Start(ctx, "tessera.storage.queue.doFlush") defer span.End() @@ -116,7 +141,7 @@ func (q *Queue) doFlush(ctx context.Context, entries []*queueItem) { entriesData = append(entriesData, e.entry) } - err := q.flush(ctx, entriesData) + err := f(ctx, entriesData) // Send assigned indices to all the waiting Add() requests for _, e := range entries { @@ -130,38 +155,32 @@ func (q *Queue) doFlush(ctx context.Context, entries []*queueItem) { // hang until assign is called. type queueItem struct { entry *tessera.Entry - c chan tessera.IndexFuture f tessera.IndexFuture + set func(tessera.Index, error) } // newEntry creates a new entry for the provided data. -func newEntry(ctx context.Context, data *tessera.Entry) *queueItem { - _, span := tracer.Start(ctx, "tessera.storage.queue.future") - - e := &queueItem{ +func newEntry(data *tessera.Entry) queueItem { + f, set := future.NewFutureErr[tessera.Index]() + e := queueItem{ entry: data, - c: make(chan tessera.IndexFuture, 1), + f: f.Get, + set: set, } - e.f = sync.OnceValues(func() (tessera.Index, error) { - defer span.End() - return (<-e.c)() - }) return e } -// assign sets the assigned log index (or an error) to the entry. +// notify sets the assigned log index (or an error) to the entry. // // This func must only be called once, and will cause any current or future callers of index() // to be given the values provided here. func (e *queueItem) notify(err error) { - e.c <- func() (tessera.Index, error) { - if err != nil { - return tessera.Index{}, err - } - if e.entry.Index() == nil { - panic(errors.New("logic error: flush complete, but entry was not assigned an index - did storage fail to call entry.MarshalBundleData?")) - } - return tessera.Index{Index: *e.entry.Index()}, nil + if e.entry.Index() == nil && err == nil { + panic(errors.New("logic error: flush complete without error, but entry was not assigned an index - did storage fail to call entry.MarshalBundleData?")) + } + var idx uint64 + if e.entry.Index() != nil { + idx = *e.entry.Index() } - close(e.c) + e.set(tessera.Index{Index: idx}, err) } diff --git a/vendor/github.com/transparency-dev/tessera/witness.go b/vendor/github.com/transparency-dev/tessera/witness.go index 5a19de2139..2aa538cee9 100644 --- a/vendor/github.com/transparency-dev/tessera/witness.go +++ b/vendor/github.com/transparency-dev/tessera/witness.go @@ -15,14 +15,16 @@ package tessera import ( - "crypto/sha256" - "encoding/base64" + "bufio" + "bytes" "fmt" "net/url" + "strconv" "strings" "maps" + f_note "github.com/transparency-dev/formats/note" "golang.org/x/mod/sumdb/note" ) @@ -40,23 +42,154 @@ type policyComponent interface { Endpoints() map[string]note.Verifier } +// NewWitnessGroupFromPolicy creates a graph of witness objects that represents the +// policy provided, and which can be passed directly to the WithWitnesses +// appender lifecycle option. +// +// The policy must be structured as per the description in +// https://git.glasklar.is/sigsum/core/sigsum-go/-/blob/main/doc/policy.md +func NewWitnessGroupFromPolicy(p []byte) (WitnessGroup, error) { + scanner := bufio.NewScanner(bytes.NewBuffer(p)) + components := make(map[string]policyComponent) + + var quorumName string + for scanner.Scan() { + line := strings.TrimSpace(scanner.Text()) + if i := strings.Index(line, "#"); i >= 0 { + line = line[:i] + } + if line == "" { + continue + } + + switch fields := strings.Fields(line); fields[0] { + case "log": + // This keyword is important to clients who might use the policy file, but we don't need to know about it since + // we _are_ the log, so just ignore it. + case "witness": + // Strictly, the URL is optional so policy files can be used client-side, where they don't care about the URL. + // Given this function is parsing to create the graph structure which will be used by a Tessera log to witness + // new checkpoints we'll ignore that special case here. + if len(fields) != 4 { + return WitnessGroup{}, fmt.Errorf("invalid witness definition: %q", line) + } + name, vkey, witnessURLStr := fields[1], fields[2], fields[3] + if isBadName(name) { + return WitnessGroup{}, fmt.Errorf("invalid witness name %q", name) + } + if _, ok := components[name]; ok { + return WitnessGroup{}, fmt.Errorf("duplicate component name: %q", name) + } + witnessURL, err := url.Parse(witnessURLStr) + if err != nil { + return WitnessGroup{}, fmt.Errorf("invalid witness URL %q: %w", witnessURLStr, err) + } + w, err := NewWitness(vkey, witnessURL) + if err != nil { + return WitnessGroup{}, fmt.Errorf("invalid witness config %q: %w", line, err) + } + components[name] = w + case "group": + if len(fields) < 3 { + return WitnessGroup{}, fmt.Errorf("invalid group definition: %q", line) + } + + name, N, childrenNames := fields[1], fields[2], fields[3:] + if isBadName(name) { + return WitnessGroup{}, fmt.Errorf("invalid group name %q", name) + } + if _, ok := components[name]; ok { + return WitnessGroup{}, fmt.Errorf("duplicate component name: %q", name) + } + var n int + switch N { + case "any": + n = 1 + case "all": + n = len(childrenNames) + default: + i, err := strconv.ParseUint(N, 10, 8) + if err != nil { + return WitnessGroup{}, fmt.Errorf("invalid threshold %q for group %q: %w", N, name, err) + } + n = int(i) + } + if c := len(childrenNames); n > c { + return WitnessGroup{}, fmt.Errorf("group with %d children cannot have threshold %d", c, n) + } + + children := make([]policyComponent, len(childrenNames)) + for i, cName := range childrenNames { + if isBadName(cName) { + return WitnessGroup{}, fmt.Errorf("invalid component name %q", cName) + } + child, ok := components[cName] + if !ok { + return WitnessGroup{}, fmt.Errorf("unknown component %q in group definition", cName) + } + children[i] = child + } + wg := NewWitnessGroup(n, children...) + components[name] = wg + case "quorum": + if len(fields) != 2 { + return WitnessGroup{}, fmt.Errorf("invalid quorum definition: %q", line) + } + quorumName = fields[1] + default: + return WitnessGroup{}, fmt.Errorf("unknown keyword: %q", fields[0]) + } + } + if err := scanner.Err(); err != nil { + return WitnessGroup{}, err + } + + switch quorumName { + case "": + return WitnessGroup{}, fmt.Errorf("policy file must define a quorum") + case "none": + return NewWitnessGroup(0), nil + default: + if isBadName(quorumName) { + return WitnessGroup{}, fmt.Errorf("invalid quorum name %q", quorumName) + } + policy, ok := components[quorumName] + if !ok { + return WitnessGroup{}, fmt.Errorf("quorum component %q not found", quorumName) + } + wg, ok := policy.(WitnessGroup) + if !ok { + // A single witness can be a policy. Wrap it in a group. + return NewWitnessGroup(1, policy), nil + } + return wg, nil + } +} + +var keywords = map[string]struct{}{ + "witness": {}, + "group": {}, + "any": {}, + "all": {}, + "none": {}, + "quorum": {}, + "log": {}, +} + +func isBadName(n string) bool { + _, isKeyword := keywords[n] + return isKeyword +} + // NewWitness returns a Witness given a verifier key and the root URL for where this // witness can be reached. func NewWitness(vkey string, witnessRoot *url.URL) (Witness, error) { - v, err := note.NewVerifier(vkey) - if err != nil { - return Witness{}, err - } - // "key hash" MUST be a lowercase hex-encoded SHA-256 hash of a 32-byte Ed25519 public key. - // This expression cuts off the identity name and hash. - key64 := strings.SplitAfterN(vkey, "+", 3)[2] - key, err := base64.StdEncoding.DecodeString(key64) + v, err := f_note.NewVerifierForCosignatureV1(vkey) if err != nil { return Witness{}, err } - h := sha256.Sum256(key) - u := witnessRoot.JoinPath(fmt.Sprintf("/%x/add-checkpoint", h)) + u := witnessRoot.JoinPath("/add-checkpoint") return Witness{ Key: v, diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/.gitignore b/vendor/gitlab.com/gitlab-org/api/client-go/.gitignore index d28ad4186f..ec1d0dab94 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/.gitignore +++ b/vendor/gitlab.com/gitlab-org/api/client-go/.gitignore @@ -35,4 +35,6 @@ vendor .golangci-lint/ # reports -gl-code-quality-report.json \ No newline at end of file +gl-code-quality-report.json + +.mise/ diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/.gitlab-ci.yml b/vendor/gitlab.com/gitlab-org/api/client-go/.gitlab-ci.yml index 8150896289..0e6f4bdb38 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/.gitlab-ci.yml +++ b/vendor/gitlab.com/gitlab-org/api/client-go/.gitlab-ci.yml @@ -24,6 +24,15 @@ include: - local: '.gitlab/ci/community-go-runner-tags.gitlab-ci.yml' rules: - if: $CI_PROJECT_ROOT_NAMESPACE != 'gitlab-org' && $CI_PROJECT_ROOT_NAMESPACE != 'gitlab-community' + # Analyze commits to determine whether to cut a release + # see https://gitlab.com/gitlab-com/gl-infra/common-ci-tasks/-/blob/main/semantic-release.md + - project: 'gitlab-com/gl-infra/common-ci-tasks' + ref: v2.85.0 # renovate:managed + file: 'semantic-release.yml' + inputs: + stage: deploy + validate_stage: lint + vault: access_tokens/${VAULT_SECRETS_PATH}/semantic-release/token@ci stages: - lint @@ -44,16 +53,28 @@ stages: variables: GOPATH: $CI_PROJECT_DIR/.go GOLANGCI_LINT_CACHE: $CI_PROJECT_DIR/.golangci-lint + MISE_VERSION: v2025.6.1 + MISE_DATA_DIR: $CI_PROJECT_DIR/.mise/mise-data before_script: - mkdir -p "${GOPATH}" "${GOLANGCI_LINT_CACHE}" - export PATH="${GOPATH}/bin:$PATH" + # Install mise + - curl --retry 6 https://mise.run | MISE_VERSION=${MISE_VERSION} MISE_INSTALL_PATH=/usr/local/bin/mise sh + - eval "$(mise activate bash --shims)" + - mise install cache: - paths: - - $GOPATH/pkg/mod/ - - $GOLANGCI_LINT_CACHE/ - key: - files: - - go.sum + - key: + files: + - go.sum + paths: + - $GOPATH/pkg/mod/ + - $GOLANGCI_LINT_CACHE/ + - key: + prefix: mise- + files: ['.tool-versions'] + paths: + - $MISE_DATA_DIR + # We only need to run Go-related jobs when actual Go files changed # or when running either on the default branch or for a tag. rules: @@ -66,6 +87,9 @@ stages: - go.sum - .gitlab-ci.yml - .gitlab/ci/*.yml + - buf.yaml + - buf.gen.yaml + - buf.lock golangci-lint: extends: @@ -74,7 +98,7 @@ golangci-lint: needs: [] variables: REPORT_FILENAME: 'gl-code-quality-report.json' - image: golangci/golangci-lint:v2.2.1 + image: golangci/golangci-lint:v2.4.0 script: - golangci-lint run artifacts: @@ -83,12 +107,21 @@ golangci-lint: paths: [$REPORT_FILENAME] when: always +buf-lint: + extends: + - .go:base + stage: lint + needs: [] + script: + - buf format --diff --exit-code + - buf lint + verify-generated-code: extends: - .go:base stage: lint needs: [] - image: golang:1.24-bookworm + image: golang:1.25-bookworm script: - make generate - | @@ -107,7 +140,7 @@ commitlint: rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' image: - name: commitlint/commitlint:19.8.1 + name: commitlint/commitlint:19.9.1 entrypoint: [""] script: - commitlint --from ${CI_MERGE_REQUEST_DIFF_BASE_SHA} --to ${CI_COMMIT_SHA} @@ -146,21 +179,6 @@ tests:unit: coverage_format: cobertura when: always -release: - image: node:24-bookworm-slim - stage: deploy - before_script: - - apt-get update && apt-get install -y --no-install-recommends git-core ca-certificates - - npm install -g semantic-release @semantic-release/gitlab @semantic-release/git @semantic-release/changelog - script: - - semantic-release - rules: - - if: '$CI_SERVER_HOST != "gitlab.com" || $CI_PROJECT_PATH != "gitlab-org/api/client-go"' - when: never - - if: $CI_PIPELINE_SOURCE == "schedule" - when: never - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - # Update rules on SAST to ensure the jobs show up in the pipeline # this prevents forks that don't have `ultimate` from skipping SAST scans # since gitlab-advaced-sast replaces semgrep. @@ -168,3 +186,13 @@ semgrep-sast: needs: [] rules: - when: always + +# Patch common-ci semantic release jobs +semantic_release_check: + before_script: + - npm install -g semantic-release @semantic-release/gitlab @semantic-release/git @semantic-release/changelog + +semantic_release: + script: + - npm install -g semantic-release @semantic-release/gitlab @semantic-release/git @semantic-release/changelog + - semantic-release diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/.golangci.yml b/vendor/gitlab.com/gitlab-org/api/client-go/.golangci.yml index ff2ea415f0..48438462dd 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/.golangci.yml +++ b/vendor/gitlab.com/gitlab-org/api/client-go/.golangci.yml @@ -26,7 +26,10 @@ linters: - nakedret - nolintlint - revive + - staticcheck + - testifylint - unconvert + - usestdlibvars - whitespace disable: - errcheck @@ -40,18 +43,78 @@ linters: rules: - name: deep-exit - name: get-return + - name: redundant-import-alias + - name: time-date + - name: var-naming + staticcheck: + checks: + - ST1020 + - ST1021 + - ST1022 + testifylint: + disable-all: true + enable: + - blank-import + - bool-compare + - compares + - contains + - empty + - encoded-compare + - equal-values + - error-is-as + - error-nil + - expected-actual + - formatter + - len + - negative-positive + - nil-compare + - regexp + - useless-assert + usestdlibvars: + http-method: false + http-status-code: false + time-date-month: true # List of regexps of issue texts to exclude. exclusions: generated: lax presets: - - comments - common-false-positives - legacy - std-error-handling rules: - path: (.+)\.go$ text: ^.*, make it a constant$ + - source: "// Deprecated:" + linters: + - staticcheck + - source: "// GitLab API docs:" + linters: + - staticcheck + - text: "var-naming: struct field PipelineId should be PipelineID" + path: commits\.go + linters: + - revive + - text: "var-naming: struct field SelectiveSyncNamespaceIds should be SelectiveSyncNamespaceIDs" + path: geo_nodes\.go + linters: + - revive + - text: "var-naming: struct field RefsUrl should be RefsURL" + path: import\.go + linters: + - revive + - text: "var-naming: struct field BitbucketServerUrl should be BitbucketServerURL" + path: import\.go + linters: + - revive + - text: "var-naming: struct field CrlUrl should be CrlURL" + path: tags\.go + linters: + - revive + - text: "var-naming: type ServicePingNonSqlMetrics should be ServicePingNonSQLMetrics" + path: usage_data\.go + linters: + - revive paths: - third_party$ - builtin$ diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/.releaserc.json b/vendor/gitlab.com/gitlab-org/api/client-go/.releaserc.json new file mode 100644 index 0000000000..c65b5cd952 --- /dev/null +++ b/vendor/gitlab.com/gitlab-org/api/client-go/.releaserc.json @@ -0,0 +1,33 @@ +{ + "branches": ["main"], + "plugins": [ + [ + "@semantic-release/commit-analyzer", + { + "preset": "angular", + "releaseRules": [ + {"type": "breaking", "release": "major"}, + {"type": "feat", "release": "minor"}, + {"type": "fix", "release": "patch"}, + {"type": "refactor", "release": "patch"}, + {"type": "chore", "release": "patch"}, + {"type": "docs", "release": "patch"}, + {"type": "style", "release": false}, + {"type": "test", "release": false}, + {"scope": "no-release", "release": false} + ] + } + ], + "@semantic-release/release-notes-generator", + "@semantic-release/changelog", + "@semantic-release/gitlab", + [ + "@semantic-release/git", + { + "assets": ["CHANGELOG.md"], + "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" + } + ] + ] +} + diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/.tool-versions b/vendor/gitlab.com/gitlab-org/api/client-go/.tool-versions index ce09ad71e5..f499c6fcd8 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/.tool-versions +++ b/vendor/gitlab.com/gitlab-org/api/client-go/.tool-versions @@ -1,2 +1,4 @@ -golang 1.23 -golangci-lint 2.1.6 +golang 1.23 +golangci-lint 2.3.1 +gofumpt 0.8.0 +buf 1.55.1 diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/CHANGELOG.md b/vendor/gitlab.com/gitlab-org/api/client-go/CHANGELOG.md index 2b7dee766b..8369948d39 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/CHANGELOG.md +++ b/vendor/gitlab.com/gitlab-org/api/client-go/CHANGELOG.md @@ -1,3 +1,106 @@ +## [0.143.3](https://gitlab.com/gitlab-org/api/client-go/compare/v0.143.2...v0.143.3) (2025-09-10) + +## [0.143.2](https://gitlab.com/gitlab-org/api/client-go/compare/v0.143.1...v0.143.2) (2025-09-09) + +## [0.143.1](https://gitlab.com/gitlab-org/api/client-go/compare/v0.143.0...v0.143.1) (2025-09-08) + +# [0.143.0](https://gitlab.com/gitlab-org/api/client-go/compare/v0.142.6...v0.143.0) (2025-09-08) + + +### Features + +* **users:** Add support for PublicEmail to ListUsers ([74a3b6a](https://gitlab.com/gitlab-org/api/client-go/commit/74a3b6a7dd1340faa70ec1246b5b99394c56f90b)) + +## [0.142.6](https://gitlab.com/gitlab-org/api/client-go/compare/v0.142.5...v0.142.6) (2025-09-02) + +## [0.142.5](https://gitlab.com/gitlab-org/api/client-go/compare/v0.142.4...v0.142.5) (2025-08-30) + +## [0.142.4](https://gitlab.com/gitlab-org/api/client-go/compare/v0.142.3...v0.142.4) (2025-08-28) + +## [0.142.3](https://gitlab.com/gitlab-org/api/client-go/compare/v0.142.2...v0.142.3) (2025-08-28) + +## [0.142.2](https://gitlab.com/gitlab-org/api/client-go/compare/v0.142.1...v0.142.2) (2025-08-26) + +## [0.142.1](https://gitlab.com/gitlab-org/api/client-go/compare/v0.142.0...v0.142.1) (2025-08-25) + +# [0.142.0](https://gitlab.com/gitlab-org/api/client-go/compare/v0.141.2...v0.142.0) (2025-08-21) + + +### Features + +* **tokens:** add expiration filters and sorting options to ListPersonalAccessTokens ([0a9f797](https://gitlab.com/gitlab-org/api/client-go/commit/0a9f79790ac87c7f7b8e32e9cdea27fbc613728b)) + +## [0.141.2](https://gitlab.com/gitlab-org/api/client-go/compare/v0.141.1...v0.141.2) (2025-08-20) + +## [0.141.1](https://gitlab.com/gitlab-org/api/client-go/compare/v0.141.0...v0.141.1) (2025-08-18) + +# [0.141.0](https://gitlab.com/gitlab-org/api/client-go/compare/v0.140.0...v0.141.0) (2025-08-18) + + +### Features + +* **config:** support custom headers for instances ([76b0e82](https://gitlab.com/gitlab-org/api/client-go/commit/76b0e82ab57b21b7da915117fb37ac2bf56506e8)) + +# [0.140.0](https://gitlab.com/gitlab-org/api/client-go/compare/v0.139.2...v0.140.0) (2025-08-18) + + +### Features + +* **client:** add support for cookie jars ([4b525e3](https://gitlab.com/gitlab-org/api/client-go/commit/4b525e3f14741176ea8cbf4e7ae988b87455f4d0)) + +## [0.139.2](https://gitlab.com/gitlab-org/api/client-go/compare/v0.139.1...v0.139.2) (2025-08-14) + +## [0.139.1](https://gitlab.com/gitlab-org/api/client-go/compare/v0.139.0...v0.139.1) (2025-08-14) + +# [0.139.0](https://gitlab.com/gitlab-org/api/client-go/compare/v0.138.0...v0.139.0) (2025-08-13) + + +### Features + +* **terraform:** improve Terraform States service ([e08128b](https://gitlab.com/gitlab-org/api/client-go/commit/e08128bf87011455db06dc946e77b2a16ee36948)) + +# [0.138.0](https://gitlab.com/gitlab-org/api/client-go/compare/v0.137.0...v0.138.0) (2025-08-12) + + +### Bug Fixes + +* deprecate ListProjectInvidedGroupOptions due to a typo ([322496a](https://gitlab.com/gitlab-org/api/client-go/commit/322496a8a4c3fd7393b4b2c2b427c42fff243861)) +* Update config package name to v1beta1 ([f958e6b](https://gitlab.com/gitlab-org/api/client-go/commit/f958e6bd2935fddf4867d9992908e87288e89c20)) + + +### Features + +* add support for field "Created at" for Tags ([f363d57](https://gitlab.com/gitlab-org/api/client-go/commit/f363d57853f2e05c848e88946269c936f0b6bf76)) +* **app settings:** Add support for CanCreateOrganization ([1db661d](https://gitlab.com/gitlab-org/api/client-go/commit/1db661de26e0d3a78134c6bd1d31fb24d9a60677)) +* **hooks:** Add support for project webhook url variables ([efabed5](https://gitlab.com/gitlab-org/api/client-go/commit/efabed57d83eefe565aa2dbbb943d94212ec6167)) +* update datadog integration with new fields and API endpoints ([660ef31](https://gitlab.com/gitlab-org/api/client-go/commit/660ef31daf884bde545cfaa88432ac5ec7e3bfe7)) +* update external status checks to return the status check object ([2d78e8c](https://gitlab.com/gitlab-org/api/client-go/commit/2d78e8cc43971c4395c980672de7263c10401900)) + +# [0.137.0](https://gitlab.com/gitlab-org/api/client-go/compare/v0.136.0...v0.137.0) (2025-07-21) + + +### Features + +* **integrations:** add group harbor integration ([220e4cb](https://gitlab.com/gitlab-org/api/client-go/commit/220e4cb524d9303d36384043f29f96f43e4d9387)) + +# [0.136.0](https://gitlab.com/gitlab-org/api/client-go/compare/v0.135.0...v0.136.0) (2025-07-21) + + +### Features + +* **client:** add NewRequestToURL function for calls to absolute URLs ([524b571](https://gitlab.com/gitlab-org/api/client-go/commit/524b571339b7704e0e346a5a64f367265b96125f)) +* **projects:** Add support for RestoreProject ([b33e888](https://gitlab.com/gitlab-org/api/client-go/commit/b33e8882ad6611b1ac19222d0abdbfc477846ea1)) + +# [0.135.0](https://gitlab.com/gitlab-org/api/client-go/compare/v0.134.0...v0.135.0) (2025-07-21) + + +### Features + +* **config:** implement extensions API ([257f745](https://gitlab.com/gitlab-org/api/client-go/commit/257f74599727b6a006ba65b1c3efd7ff5fc7b86c)) +* **config:** initial push of the ability to use a config file for auth ([575c0cc](https://gitlab.com/gitlab-org/api/client-go/commit/575c0cc6a1de48582ea9b3b19cef021dc3f1397a)) +* **integrations:** add group integration for microsoft teams ([da0b1dd](https://gitlab.com/gitlab-org/api/client-go/commit/da0b1dd5b86fd6a41d7c043621611d0687fc628f)) +* **merge-requests:** add auto_merge, deprecate old field, for merging a request ([9119eb0](https://gitlab.com/gitlab-org/api/client-go/commit/9119eb0e6662f136e589cdee74aaa410136ca664)) + # [0.134.0](https://gitlab.com/gitlab-org/api/client-go/compare/v0.133.1...v0.134.0) (2025-07-07) diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/Makefile b/vendor/gitlab.com/gitlab-org/api/client-go/Makefile index 510bcbf630..1ae79c8868 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/Makefile +++ b/vendor/gitlab.com/gitlab-org/api/client-go/Makefile @@ -8,24 +8,22 @@ help: ## Display this help reviewable: setup generate fmt lint test ## Run before committing. -fmt: install-gofumpt ## Format code +fmt: ## Format code + @buf format -w @gofumpt -l -w *.go testing/*.go examples/*.go -lint: install-golangci-lint ## Run linter +lint: ## Run linter @golangci-lint run + @buf format --exit-code + @buf lint .PHONY: setup -setup: install-golangci-lint install-gofumpt ## Setup your local environment +setup: ## Setup your local environment go mod tidy -install-golangci-lint: - @go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest - -install-gofumpt: - @go install mvdan.cc/gofumpt@latest - .PHONY: generate -generate: install-gofumpt ## Generate files +generate: ## Generate files + buf generate # install from .tool-versions ./scripts/generate_testing_client.sh ./scripts/generate_service_interface_map.sh ./scripts/generate_mock_api.sh diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/README.md b/vendor/gitlab.com/gitlab-org/api/client-go/README.md index db4d22fc24..d8dc8d1a02 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/README.md +++ b/vendor/gitlab.com/gitlab-org/api/client-go/README.md @@ -139,6 +139,92 @@ func main() { } ``` +#### Use the `config` package (experimental) + +The `config` package defines a configuration file format (YAML) to configure GitLab instances +and their associated authentication methods combined in contexts (similar to what you might know from Kubernetes). + +The configuration is located in the users config directory (e.g. XDG config dir), in `gitlab/config.yaml`. + +A basic example for an OAuth flow for GitLab.com that stores the credentials in the systems keyring, looks like this: + +```yaml +version: gitlab.com/config/v1beta1 + +instances: + - name: gitlab-com + server: https://gitlab.com + +auths: + - name: oauth-keyring + auth-info: + oauth2: + access-token-source: + keyring: + service: client-go + user: access-token + refresh-token-source: + keyring: + service: client-go + user: refresh-token +contexts: + - name: gitlab-com-keyring + instance: gitlab-com + auth: oauth-keyring + +current-context: gitlab-com-keyring +``` + +An application with `client-go` is able to effortlessly create a new client using that configuration: + +```go +package main + +import ( + "fmt" + "log" + + "gitlab.com/gitlab-org/api/client-go" + "gitlab.com/gitlab-org/api/client-go/config" +) + +func main() { + // Create a config with default location (~/.config/gitlab/config.yaml) + cfg := config.New( + config.WithOAuth2Settings(config.OAuth2Settings{ + AuthorizationFlowEnabled: true, + CallbackServerListenAddr: ":7171", + Browser: func(url string) error { + fmt.Printf("Open: %s\n", url) + return nil + }, + ClientID: "", + RedirectURL: "http://localhost:7171/auth/redirect", + Scopes: []string{"read_api"}, + }), + ) + + // Load the configuration + if err := cfg.Load(); err != nil { + log.Printf("Failed to load config: %v", err) + return + } + + client, err := cfg.NewClient(gitlab.WithUserAgent("my-app")) + if err != nil { + log.Fatalf("Failed to create client: %v", err) + } + + // Use the client + user, _, err := client.Users.CurrentUser() + if err != nil { + log.Fatalf("Failed to get current user: %v", err) + } + + fmt.Printf("Authenticated as: %s (%s)\n", user.Name, user.Username) +} +``` + For complete usage of go-gitlab, see the full [package docs](https://godoc.org/gitlab.com/gitlab-org/api/client-go). ## Installation diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/alert_management.go b/vendor/gitlab.com/gitlab-org/api/client-go/alert_management.go index b87f15c558..c7e8b955c9 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/alert_management.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/alert_management.go @@ -63,7 +63,7 @@ type UploadMetricImageOptions struct { URLText *string `url:"url_text,omitempty" json:"url_text,omitempty"` } -// UploadMetricImageOptions uploads a metric image to a project alert. +// UploadMetricImage uploads a metric image to a project alert. // // GitLab API docs: // https://docs.gitlab.com/api/alert_management_alerts/#upload-metric-image diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/buf.gen.yaml b/vendor/gitlab.com/gitlab-org/api/client-go/buf.gen.yaml new file mode 100644 index 0000000000..897db7737b --- /dev/null +++ b/vendor/gitlab.com/gitlab-org/api/client-go/buf.gen.yaml @@ -0,0 +1,6 @@ +version: v2 +plugins: + - remote: buf.build/protocolbuffers/go:v1.36.6 + out: . + opt: + - paths=source_relative diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/buf.lock b/vendor/gitlab.com/gitlab-org/api/client-go/buf.lock new file mode 100644 index 0000000000..2327d76b51 --- /dev/null +++ b/vendor/gitlab.com/gitlab-org/api/client-go/buf.lock @@ -0,0 +1,6 @@ +# Generated by buf. DO NOT EDIT. +version: v2 +deps: + - name: buf.build/bufbuild/protovalidate + commit: d22d418d82d84932ba4ba554ce4208ca + digest: b5:8b454cb411e14f0024bdb58ac2689aed2321e81617b61ef8a22c8147a7a9757eeb049ebfb899a699d37051bdb3251e172ba1c1ae2f5005d7c3f47a202109136a diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/buf.yaml b/vendor/gitlab.com/gitlab-org/api/client-go/buf.yaml new file mode 100644 index 0000000000..b1c4db3321 --- /dev/null +++ b/vendor/gitlab.com/gitlab-org/api/client-go/buf.yaml @@ -0,0 +1,12 @@ +version: v2 + +modules: + - path: . + excludes: + # these are mostly cache directories in CI + - .go + - .golangci-lint + - .mise + +deps: + - buf.build/bufbuild/protovalidate:v0.14.0 diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/client_options.go b/vendor/gitlab.com/gitlab-org/api/client-go/client_options.go index df6c2efee2..05c9a5f0ff 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/client_options.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/client_options.go @@ -148,3 +148,11 @@ func WithUserAgent(userAgent string) ClientOptionFunc { return nil } } + +// WithCookieJar can be used to configure a cookie jar. +func WithCookieJar(jar http.CookieJar) ClientOptionFunc { + return func(c *Client) error { + c.jar = jar + return nil + } +} diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/commitlint.config.mjs b/vendor/gitlab.com/gitlab-org/api/client-go/commitlint.config.mjs index fc4951fdc0..e957841b39 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/commitlint.config.mjs +++ b/vendor/gitlab.com/gitlab-org/api/client-go/commitlint.config.mjs @@ -2,6 +2,7 @@ export default { extends: ['@commitlint/config-conventional'], "rules": { "body-max-line-length": [0, "always", 100], - "subject-case": [0, "always", ["sentence-case"]] + "subject-case": [0, "always", ["sentence-case"]], + "header-max-length": [2, "always", 200] } }; diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/deploy_keys.go b/vendor/gitlab.com/gitlab-org/api/client-go/deploy_keys.go index 57d24568f1..8f54a13447 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/deploy_keys.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/deploy_keys.go @@ -95,7 +95,7 @@ func (k ProjectDeployKey) String() string { return Stringify(k) } -// ListProjectDeployKeysOptions represents the available ListAllDeployKeys() +// ListInstanceDeployKeysOptions represents the available ListAllDeployKeys() // options. // // GitLab API docs: diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/dora_metrics.go b/vendor/gitlab.com/gitlab-org/api/client-go/dora_metrics.go index 21b4d0eba9..fd04b352d8 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/dora_metrics.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/dora_metrics.go @@ -47,7 +47,7 @@ type DORAMetric struct { Value float64 `json:"value"` } -// Gets a string representation of a DORAMetric data point +// String gets a string representation of a DORAMetric data point // // GitLab API docs: https://docs.gitlab.com/api/dora/metrics/ func (m DORAMetric) String() string { diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/epics.go b/vendor/gitlab.com/gitlab-org/api/client-go/epics.go index df28cc032b..fa3f6b6149 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/epics.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/epics.go @@ -97,6 +97,8 @@ type Epic struct { URL string `json:"url"` } +// String gets a string representation of an Epic. +// // Will be removed in v5 of the API, use Work Items API instead func (e Epic) String() string { return Stringify(e) diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/external_status_checks.go b/vendor/gitlab.com/gitlab-org/api/client-go/external_status_checks.go index caddb08153..aff042add7 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/external_status_checks.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/external_status_checks.go @@ -9,13 +9,28 @@ import ( type ( // ExternalStatusChecksServiceInterface defines all the API methods for the ExternalStatusChecksService ExternalStatusChecksServiceInterface interface { - ListMergeStatusChecks(pid any, mr int, opt *ListOptions, options ...RequestOptionFunc) ([]*MergeStatusCheck, *Response, error) - SetExternalStatusCheckStatus(pid any, mergeRequest int, opt *SetExternalStatusCheckStatusOptions, options ...RequestOptionFunc) (*Response, error) - ListProjectStatusChecks(pid any, opt *ListOptions, options ...RequestOptionFunc) ([]*ProjectStatusCheck, *Response, error) + // Deprecated: to be removed in 1.0; use CreateProjectExternalStatusCheck instead CreateExternalStatusCheck(pid any, opt *CreateExternalStatusCheckOptions, options ...RequestOptionFunc) (*Response, error) + // Deprecated: to be removed in 1.0; use DeleteProjectExternalStatusCheck instead DeleteExternalStatusCheck(pid any, check int, options ...RequestOptionFunc) (*Response, error) + // Deprecated: to be removed in 1.0; use UpdateProjectExternalStatusCheck instead UpdateExternalStatusCheck(pid any, check int, opt *UpdateExternalStatusCheckOptions, options ...RequestOptionFunc) (*Response, error) + // Deprecated: to be removed in 1.0; use ListProjectMergeRequestExternalStatusChecks instead + ListMergeStatusChecks(pid any, mr int, opt *ListOptions, options ...RequestOptionFunc) ([]*MergeStatusCheck, *Response, error) + // Deprecated: to be removed in 1.0; use ListProjectExternalStatusChecks instead + ListProjectStatusChecks(pid any, opt *ListOptions, options ...RequestOptionFunc) ([]*ProjectStatusCheck, *Response, error) + // Deprecated: to be removed in 1.0; use RetryFailedExternalStatusCheckForProjectMergeRequest instead RetryFailedStatusCheckForAMergeRequest(pid any, mergeRequest int, externalStatusCheck int, options ...RequestOptionFunc) (*Response, error) + // Deprecated: to be removed in 1.0; use SetProjectMergeRequestExternalStatusCheckStatus instead + SetExternalStatusCheckStatus(pid any, mergeRequest int, opt *SetExternalStatusCheckStatusOptions, options ...RequestOptionFunc) (*Response, error) + + ListProjectMergeRequestExternalStatusChecks(pid any, mr int, opt *ListProjectMergeRequestExternalStatusChecksOptions, options ...RequestOptionFunc) ([]*MergeStatusCheck, *Response, error) + ListProjectExternalStatusChecks(pid any, opt *ListProjectExternalStatusChecksOptions, options ...RequestOptionFunc) ([]*ProjectStatusCheck, *Response, error) + RetryFailedExternalStatusCheckForProjectMergeRequest(pid any, mergeRequest int, externalStatusCheck int, opt *RetryFailedExternalStatusCheckForProjectMergeRequestOptions, options ...RequestOptionFunc) (*Response, error) + CreateProjectExternalStatusCheck(pid any, opt *CreateProjectExternalStatusCheckOptions, options ...RequestOptionFunc) (*ProjectStatusCheck, *Response, error) + UpdateProjectExternalStatusCheck(pid any, check int, opt *UpdateProjectExternalStatusCheckOptions, options ...RequestOptionFunc) (*ProjectStatusCheck, *Response, error) + DeleteProjectExternalStatusCheck(pid any, check int, opt *DeleteProjectExternalStatusCheckOptions, options ...RequestOptionFunc) (*Response, error) + SetProjectMergeRequestExternalStatusCheckStatus(pid any, mergeRequest int, opt *SetProjectMergeRequestExternalStatusCheckStatusOptions, options ...RequestOptionFunc) (*Response, error) } // ExternalStatusChecksService handles communication with the external @@ -41,6 +56,7 @@ type ProjectStatusCheck struct { Name string `json:"name"` ProjectID int `json:"project_id"` ExternalURL string `json:"external_url"` + HMAC bool `json:"hmac"` ProtectedBranches []StatusCheckProtectedBranch `json:"protected_branches"` } @@ -55,6 +71,7 @@ type StatusCheckProtectedBranch struct { // ListMergeStatusChecks lists the external status checks that apply to it // and their status for a single merge request. +// Deprecated: to be removed in 1.0; use ListProjectMergeRequestExternalStatusChecks instead // // GitLab API docs: // https://docs.gitlab.com/api/status_checks/#list-status-checks-for-a-merge-request @@ -81,6 +98,7 @@ func (s *ExternalStatusChecksService) ListMergeStatusChecks(pid any, mr int, opt // SetExternalStatusCheckStatusOptions represents the available // SetExternalStatusCheckStatus() options. +// Deprecated: to be removed in 1.0; use SetProjectMergeRequestExternalStatusCheckStatusOptions instead // // GitLab API docs: // https://docs.gitlab.com/api/status_checks/#set-status-of-an-external-status-check @@ -91,6 +109,7 @@ type SetExternalStatusCheckStatusOptions struct { } // SetExternalStatusCheckStatus sets the status of an external status check. +// Deprecated: to be removed in 1.0; use SetProjectMergeRequestExternalStatusCheckStatus instead // // Gitlab API docs: // https://docs.gitlab.com/api/status_checks/#set-status-of-an-external-status-check @@ -110,6 +129,7 @@ func (s *ExternalStatusChecksService) SetExternalStatusCheckStatus(pid any, merg } // ListProjectStatusChecks lists the project external status checks. +// Deprecated: to be removed in 1.0; use ListProjectExternalStatusChecks instead // // GitLab API docs: // https://docs.gitlab.com/api/status_checks/#get-project-external-status-check-services @@ -136,6 +156,7 @@ func (s *ExternalStatusChecksService) ListProjectStatusChecks(pid any, opt *List // CreateExternalStatusCheckOptions represents the available // CreateExternalStatusCheck() options. +// Deprecated: to be removed in 1.0; use CreateProjectExternalStatusCheckOptions instead // // GitLab API docs: // https://docs.gitlab.com/api/status_checks/#create-external-status-check-service @@ -146,6 +167,7 @@ type CreateExternalStatusCheckOptions struct { } // CreateExternalStatusCheck creates an external status check. +// Deprecated: to be removed in 1.0; use CreateProjectExternalStatusCheck instead // // Gitlab API docs: // https://docs.gitlab.com/api/status_checks/#create-external-status-check-service @@ -165,6 +187,7 @@ func (s *ExternalStatusChecksService) CreateExternalStatusCheck(pid any, opt *Cr } // DeleteExternalStatusCheck deletes an external status check. +// Deprecated: to be removed in 1.0; use DeleteProjectExternalStatusCheck instead // // Gitlab API docs: // https://docs.gitlab.com/api/status_checks/#delete-external-status-check-service @@ -185,6 +208,7 @@ func (s *ExternalStatusChecksService) DeleteExternalStatusCheck(pid any, check i // UpdateExternalStatusCheckOptions represents the available // UpdateExternalStatusCheck() options. +// Deprecated: to be removed in 1.0; use UpdateProjectExternalStatusCheckOptions instead // // GitLab API docs: // https://docs.gitlab.com/api/status_checks/#update-external-status-check-service @@ -195,6 +219,7 @@ type UpdateExternalStatusCheckOptions struct { } // UpdateExternalStatusCheck updates an external status check. +// Deprecated: to be removed in 1.0; use UpdateProjectExternalStatusCheck instead // // Gitlab API docs: // https://docs.gitlab.com/api/status_checks/#update-external-status-check-service @@ -213,7 +238,8 @@ func (s *ExternalStatusChecksService) UpdateExternalStatusCheck(pid any, check i return s.client.Do(req, nil) } -// UpdateExternalStatusCheck updates an external status check. +// RetryFailedStatusCheckForAMergeRequest retries the specified failed external status check. +// Deprecated: to be removed in 1.0; use RetryFailedExternalStatusCheckForProjectMergeRequest instead // // Gitlab API docs: // https://docs.gitlab.com/api/status_checks/#retry-failed-status-check-for-a-merge-request @@ -231,3 +257,228 @@ func (s *ExternalStatusChecksService) RetryFailedStatusCheckForAMergeRequest(pid return s.client.Do(req, nil) } + +// ListProjectMergeRequestExternalStatusChecksOptions represents the available +// ListProjectMergeRequestExternalStatusChecks() options. +// +// GitLab API docs: +// https://docs.gitlab.com/api/status_checks/#list-status-checks-for-a-merge-request +type ListProjectMergeRequestExternalStatusChecksOptions struct { + ListOptions +} + +// ListProjectMergeRequestExternalStatusChecks lists the external status checks that apply to it +// and their status for a single merge request. +// +// GitLab API docs: +// https://docs.gitlab.com/api/status_checks/#list-status-checks-for-a-merge-request +func (s *ExternalStatusChecksService) ListProjectMergeRequestExternalStatusChecks(pid any, mr int, opt *ListProjectMergeRequestExternalStatusChecksOptions, options ...RequestOptionFunc) ([]*MergeStatusCheck, *Response, error) { + project, err := parseID(pid) + if err != nil { + return nil, nil, err + } + u := fmt.Sprintf("projects/%s/merge_requests/%d/status_checks", PathEscape(project), mr) + + req, err := s.client.NewRequest(http.MethodGet, u, opt, options) + if err != nil { + return nil, nil, err + } + + var mscs []*MergeStatusCheck + resp, err := s.client.Do(req, &mscs) + if err != nil { + return nil, resp, err + } + + return mscs, resp, nil +} + +// ListProjectExternalStatusChecksOptions represents the available +// ListProjectExternalStatusChecks() options. +// +// GitLab API docs: +// https://docs.gitlab.com/api/status_checks/#get-project-external-status-check-services +type ListProjectExternalStatusChecksOptions struct { + ListOptions +} + +// ListProjectExternalStatusChecks lists the project external status checks. +// +// GitLab API docs: +// https://docs.gitlab.com/api/status_checks/#get-project-external-status-check-services +func (s *ExternalStatusChecksService) ListProjectExternalStatusChecks(pid any, opt *ListProjectExternalStatusChecksOptions, options ...RequestOptionFunc) ([]*ProjectStatusCheck, *Response, error) { + project, err := parseID(pid) + if err != nil { + return nil, nil, err + } + u := fmt.Sprintf("projects/%s/external_status_checks", PathEscape(project)) + + req, err := s.client.NewRequest(http.MethodGet, u, opt, options) + if err != nil { + return nil, nil, err + } + + var pscs []*ProjectStatusCheck + resp, err := s.client.Do(req, &pscs) + if err != nil { + return nil, resp, err + } + + return pscs, resp, nil +} + +// CreateProjectExternalStatusCheckOptions represents the available +// CreateProjectExternalStatusCheck() options. +// +// GitLab API docs: +// https://docs.gitlab.com/api/status_checks/#create-external-status-check-service +type CreateProjectExternalStatusCheckOptions struct { + Name *string `url:"name,omitempty" json:"name,omitempty"` + ExternalURL *string `url:"external_url,omitempty" json:"external_url,omitempty"` + SharedSecret *string `url:"shared_secret,omitempty" json:"shared_secret,omitempty"` + ProtectedBranchIDs *[]int `url:"protected_branch_ids,omitempty" json:"protected_branch_ids,omitempty"` +} + +// CreateProjectExternalStatusCheck creates an external status check. +// +// Gitlab API docs: +// https://docs.gitlab.com/api/status_checks/#create-external-status-check-service +func (s *ExternalStatusChecksService) CreateProjectExternalStatusCheck(pid any, opt *CreateProjectExternalStatusCheckOptions, options ...RequestOptionFunc) (*ProjectStatusCheck, *Response, error) { + project, err := parseID(pid) + if err != nil { + return nil, nil, err + } + u := fmt.Sprintf("projects/%s/external_status_checks", PathEscape(project)) + + req, err := s.client.NewRequest(http.MethodPost, u, opt, options) + if err != nil { + return nil, nil, err + } + + statusCheck := new(ProjectStatusCheck) + resp, err := s.client.Do(req, statusCheck) + if err != nil { + return nil, resp, err + } + + return statusCheck, resp, nil +} + +// DeleteProjectExternalStatusCheckOptions represents the available +// DeleteProjectExternalStatusCheck() options. +// +// GitLab API docs: +// https://docs.gitlab.com/api/status_checks/#delete-external-status-check-service +type DeleteProjectExternalStatusCheckOptions struct{} + +// DeleteProjectExternalStatusCheck deletes an external status check. +// +// Gitlab API docs: +// https://docs.gitlab.com/api/status_checks/#delete-external-status-check-service +func (s *ExternalStatusChecksService) DeleteProjectExternalStatusCheck(pid any, check int, opt *DeleteProjectExternalStatusCheckOptions, options ...RequestOptionFunc) (*Response, error) { + project, err := parseID(pid) + if err != nil { + return nil, err + } + u := fmt.Sprintf("projects/%s/external_status_checks/%d", PathEscape(project), check) + + req, err := s.client.NewRequest(http.MethodDelete, u, opt, options) + if err != nil { + return nil, err + } + + return s.client.Do(req, nil) +} + +// UpdateProjectExternalStatusCheckOptions represents the available +// UpdateProjectExternalStatusCheck() options. +// +// GitLab API docs: +// https://docs.gitlab.com/api/status_checks/#update-external-status-check-service +type UpdateProjectExternalStatusCheckOptions struct { + Name *string `url:"name,omitempty" json:"name,omitempty"` + ExternalURL *string `url:"external_url,omitempty" json:"external_url,omitempty"` + SharedSecret *string `url:"shared_secret,omitempty" json:"shared_secret,omitempty"` + ProtectedBranchIDs *[]int `url:"protected_branch_ids,omitempty" json:"protected_branch_ids,omitempty"` +} + +// UpdateProjectExternalStatusCheck updates an external status check. +// +// Gitlab API docs: +// https://docs.gitlab.com/api/status_checks/#update-external-status-check-service +func (s *ExternalStatusChecksService) UpdateProjectExternalStatusCheck(pid any, check int, opt *UpdateProjectExternalStatusCheckOptions, options ...RequestOptionFunc) (*ProjectStatusCheck, *Response, error) { + project, err := parseID(pid) + if err != nil { + return nil, nil, err + } + u := fmt.Sprintf("projects/%s/external_status_checks/%d", PathEscape(project), check) + + req, err := s.client.NewRequest(http.MethodPut, u, opt, options) + if err != nil { + return nil, nil, err + } + + statusCheck := new(ProjectStatusCheck) + resp, err := s.client.Do(req, statusCheck) + if err != nil { + return nil, resp, err + } + + return statusCheck, resp, nil +} + +// RetryFailedExternalStatusCheckForProjectMergeRequestOptions represents the available +// RetryFailedExternalStatusCheckForProjectMergeRequest() options. +// +// GitLab API docs: +// https://docs.gitlab.com/api/status_checks/#retry-failed-status-check-for-a-merge-request +type RetryFailedExternalStatusCheckForProjectMergeRequestOptions struct{} + +// RetryFailedExternalStatusCheckForProjectMergeRequest retries the specified failed external status check. +// +// Gitlab API docs: +// https://docs.gitlab.com/api/status_checks/#retry-failed-status-check-for-a-merge-request +func (s *ExternalStatusChecksService) RetryFailedExternalStatusCheckForProjectMergeRequest(pid any, mergeRequest int, externalStatusCheck int, opt *RetryFailedExternalStatusCheckForProjectMergeRequestOptions, options ...RequestOptionFunc) (*Response, error) { + project, err := parseID(pid) + if err != nil { + return nil, err + } + u := fmt.Sprintf("projects/%s/merge_requests/%d/status_checks/%d/retry", PathEscape(project), mergeRequest, externalStatusCheck) + + req, err := s.client.NewRequest(http.MethodPost, u, opt, options) + if err != nil { + return nil, err + } + + return s.client.Do(req, nil) +} + +// SetProjectMergeRequestExternalStatusCheckStatusOptions represents the available +// SetProjectMergeRequestExternalStatusCheckStatus() options. +// +// GitLab API docs: +// https://docs.gitlab.com/api/status_checks/#set-status-of-an-external-status-check +type SetProjectMergeRequestExternalStatusCheckStatusOptions struct { + SHA *string `url:"sha,omitempty" json:"sha,omitempty"` + ExternalStatusCheckID *int `url:"external_status_check_id,omitempty" json:"external_status_check_id,omitempty"` + Status *string `url:"status,omitempty" json:"status,omitempty"` +} + +// SetProjectMergeRequestExternalStatusCheckStatus sets the status of an external status check. +// +// Gitlab API docs: +// https://docs.gitlab.com/api/status_checks/#set-status-of-an-external-status-check +func (s *ExternalStatusChecksService) SetProjectMergeRequestExternalStatusCheckStatus(pid any, mergeRequest int, opt *SetProjectMergeRequestExternalStatusCheckStatusOptions, options ...RequestOptionFunc) (*Response, error) { + project, err := parseID(pid) + if err != nil { + return nil, err + } + u := fmt.Sprintf("projects/%s/merge_requests/%d/status_check_responses", PathEscape(project), mergeRequest) + + req, err := s.client.NewRequest(http.MethodPost, u, opt, options) + if err != nil { + return nil, err + } + + return s.client.Do(req, nil) +} diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/feature_flag_user_lists.go b/vendor/gitlab.com/gitlab-org/api/client-go/feature_flag_user_lists.go index 5555a28314..6208158c6d 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/feature_flag_user_lists.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/feature_flag_user_lists.go @@ -29,7 +29,7 @@ type ( DeleteFeatureFlagUserList(pid any, iid int, options ...RequestOptionFunc) (*Response, error) } - // FeatureFlagUserListService handles communication with the feature flag + // FeatureFlagUserListsService handles communication with the feature flag // user list related methods of the GitLab API. // // GitLab API docs: https://docs.gitlab.com/api/feature_flag_user_lists/ diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/geo_sites.go b/vendor/gitlab.com/gitlab-org/api/client-go/geo_sites.go index 53cdb895e5..bd0f9f2b38 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/geo_sites.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/geo_sites.go @@ -457,7 +457,7 @@ type GeoSiteStatus struct { Links GeoSiteStatusLink `json:"_links"` } -// GeoSiteStatus represents the status of Geo Site. +// GeoSiteStatusLink represents the links for a GitLab Geo Site status. // // GitLab API docs: // https://docs.gitlab.com/api/geo_sites/#retrieve-status-about-all-geo-sites diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/gitlab.go b/vendor/gitlab.com/gitlab-org/api/client-go/gitlab.go index 3bd922e72d..b6ce7f06fa 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/gitlab.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/gitlab.go @@ -100,6 +100,9 @@ type Client struct { // once. authSourceInit sync.Once + // jar is the cookie jar to use with the HTTP client + jar http.CookieJar + // Default request options applied to every request. defaultRequestOptions []RequestOptionFunc @@ -160,6 +163,7 @@ type Client struct { GroupCluster GroupClustersServiceInterface GroupEpicBoards GroupEpicBoardsServiceInterface GroupImportExport GroupImportExportServiceInterface + Integrations IntegrationsServiceInterface GroupIssueBoards GroupIssueBoardsServiceInterface GroupIterations GroupIterationsServiceInterface GroupLabels GroupLabelsServiceInterface @@ -299,9 +303,9 @@ func NewClient(token string, options ...ClientOptionFunc) (*Client, error) { // // Deprecated: GitLab recommends against using this authentication method. func NewBasicAuthClient(username, password string, options ...ClientOptionFunc) (*Client, error) { - as := &passwordCredentialsAuthSource{ - username: username, - password: password, + as := &PasswordCredentialsAuthSource{ + Username: username, + Password: password, } return NewAuthSourceClient(as, options...) @@ -361,6 +365,18 @@ func NewAuthSourceClient(as AuthSource, options ...ClientOptionFunc) (*Client, e } } + // Wire up the cookie jar. + // The ClientOptionFunc can't do it directly, + // because the user may also specify HTTPClient + // and we want the order of passing those to matter + // as little as possible. + if c.jar != nil { + if c.client.HTTPClient.Jar != nil { + return nil, errors.New("conflicting option functions when creating client. The provided HTTP Client already has a Jar configured, therefore you can't use gitlab.WithCookieJar") + } + c.client.HTTPClient.Jar = c.jar + } + // If no custom limiter was set using a client option, configure // the default rate limiter with values that implicitly disable // rate limiting until an initial HTTP call is done and we can @@ -426,6 +442,7 @@ func NewAuthSourceClient(as AuthSource, options ...ClientOptionFunc) (*Client, e c.GroupCluster = &GroupClustersService{client: c} c.GroupEpicBoards = &GroupEpicBoardsService{client: c} c.GroupImportExport = &GroupImportExportService{client: c} + c.Integrations = &IntegrationsService{client: c} c.GroupIssueBoards = &GroupIssueBoardsService{client: c} c.GroupIterations = &GroupIterationsService{client: c} c.GroupLabels = &GroupLabelsService{client: c} @@ -525,6 +542,10 @@ func NewAuthSourceClient(as AuthSource, options ...ClientOptionFunc) (*Client, e return c, nil } +func (c *Client) HTTPClient() *http.Client { + return c.client.HTTPClient +} + // retryHTTPCheck provides a callback for Client.CheckRetry which // will retry both rate limit (429) and server (>= 500) errors. func (c *Client) retryHTTPCheck(ctx context.Context, resp *http.Response, err error) (bool, error) { @@ -663,6 +684,14 @@ func (c *Client) NewRequest(method, path string, opt any, options []RequestOptio u.RawPath = c.baseURL.Path + path u.Path = c.baseURL.Path + unescaped + return c.NewRequestToURL(method, &u, opt, options) +} + +func (c *Client) NewRequestToURL(method string, u *url.URL, opt any, options []RequestOptionFunc) (*retryablehttp.Request, error) { + if u.Scheme != c.baseURL.Scheme || u.Host != c.baseURL.Host { + return nil, fmt.Errorf("client only allows requests to URLs matching the clients configured base URL. Got %q, base URL is %q", u.String(), c.baseURL.String()) + } + // Create a request specific headers map. reqHeaders := make(http.Header) reqHeaders.Set("Accept", "application/json") @@ -677,10 +706,11 @@ func (c *Client) NewRequest(method, path string, opt any, options []RequestOptio reqHeaders.Set("Content-Type", "application/json") if opt != nil { - body, err = json.Marshal(opt) + b, err := json.Marshal(opt) if err != nil { return nil, err } + body = b } case opt != nil: q, err := query.Values(opt) @@ -976,7 +1006,7 @@ func parseID(id any) (string, error) { } } -// Helper function to escape a project identifier. +// PathEscape is a helper function to escape a project identifier. func PathEscape(s string) string { return strings.ReplaceAll(url.PathEscape(s), ".", "%2E") } @@ -1005,6 +1035,10 @@ func (e *ErrorResponse) Error() string { } } +func (e *ErrorResponse) HasStatusCode(statusCode int) bool { + return e != nil && e.Response != nil && e.Response.StatusCode == statusCode +} + // CheckResponse checks the API response for errors, and returns them if present. func CheckResponse(r *http.Response) error { switch r.StatusCode { @@ -1075,6 +1109,15 @@ func parseError(raw any) string { } } +func HasStatusCode(err error, statusCode int) bool { + var errResponse *ErrorResponse + if !errors.As(err, &errResponse) { + return false + } + + return errResponse.HasStatusCode(statusCode) +} + // newRetryableHTTPClientWithRetryCheck returns a `retryablehttp.Client` clone of itself with the given CheckRetry function func (c *Client) newRetryableHTTPClientWithRetryCheck(cr retryablehttp.CheckRetry) *retryablehttp.Client { return &retryablehttp.Client{ @@ -1147,25 +1190,25 @@ func (s AccessTokenAuthSource) Header(_ context.Context) (string, string, error) return AccessTokenHeaderName, s.Token, nil } -// passwordTokenSource implements the AuthSource interface for the OAuth 2.0 +// PasswordCredentialsAuthSource implements the AuthSource interface for the OAuth 2.0 // resource owner password credentials flow. -type passwordCredentialsAuthSource struct { - username string - password string +type PasswordCredentialsAuthSource struct { + Username string + Password string AuthSource } -func (as *passwordCredentialsAuthSource) Init(ctx context.Context, client *Client) error { +func (as *PasswordCredentialsAuthSource) Init(ctx context.Context, client *Client) error { ctx = context.WithValue(ctx, oauth2.HTTPClient, client.client.HTTPClient) config := &oauth2.Config{ Endpoint: client.endpoint(), } - pct, err := config.PasswordCredentialsToken(ctx, as.username, as.password) + pct, err := config.PasswordCredentialsToken(ctx, as.Username, as.Password) if err != nil { - return fmt.Errorf("PasswordCredentialsToken(%q, ******): %w", as.username, err) + return fmt.Errorf("PasswordCredentialsToken(%q, ******): %w", as.Username, err) } as.AuthSource = OAuthTokenSource{ diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/group_iterations.go b/vendor/gitlab.com/gitlab-org/api/client-go/group_iterations.go index c5feed4827..0a5e235e13 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/group_iterations.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/group_iterations.go @@ -27,7 +27,7 @@ type ( ListGroupIterations(gid any, opt *ListGroupIterationsOptions, options ...RequestOptionFunc) ([]*GroupIteration, *Response, error) } - // IterationsAPI handles communication with the iterations related methods + // GroupIterationsService handles communication with the iterations related methods // of the GitLab API // // GitLab API docs: https://docs.gitlab.com/api/group_iterations/ diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/group_security_settings.go b/vendor/gitlab.com/gitlab-org/api/client-go/group_security_settings.go index c93a311570..cab9c6a1f0 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/group_security_settings.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/group_security_settings.go @@ -46,7 +46,7 @@ type GroupSecuritySettings struct { Errors []string `json:"errors"` } -// Gets a string representation of the GroupSecuritySettings data. +// String gets a string representation of the GroupSecuritySettings data. // // GitLab API docs: // https://docs.gitlab.com/api/group_security_settings/ @@ -54,7 +54,7 @@ func (s GroupSecuritySettings) String() string { return Stringify(s) } -// GetGroupSecuritySettingsOptions represent the request options for updating +// UpdateGroupSecuritySettingsOptions represent the request options for updating // the group security settings. // // GitLab API docs: diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/group_serviceaccounts.go b/vendor/gitlab.com/gitlab-org/api/client-go/group_serviceaccounts.go index c5f8e72fed..8021b56de6 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/group_serviceaccounts.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/group_serviceaccounts.go @@ -43,7 +43,7 @@ type ListServiceAccountsOptions struct { Sort *string `url:"sort,omitempty" json:"sort,omitempty"` } -// ListServiceAccounts gets a list of service acxcounts. +// ListServiceAccounts gets a list of service accounts. // // GitLab API docs: // https://docs.gitlab.com/api/group_service_accounts/#list-all-service-account-users @@ -78,7 +78,7 @@ type CreateServiceAccountOptions struct { Email *string `url:"email,omitempty" json:"email,omitempty"` } -// Creates a service account user. +// CreateServiceAccount creates a service account user. // // This API endpoint works on top-level groups only. It does not work on subgroups. // @@ -114,7 +114,7 @@ type UpdateServiceAccountOptions struct { Username *string `url:"username,omitempty" json:"username,omitempty"` } -// Updates a service account user. +// UpdateServiceAccount updates a service account user. // // This API endpoint works on top-level groups only. It does not work on subgroups. // diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/group_ssh_certificates.go b/vendor/gitlab.com/gitlab-org/api/client-go/group_ssh_certificates.go index 27f9dddbd1..62774048d3 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/group_ssh_certificates.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/group_ssh_certificates.go @@ -71,7 +71,7 @@ type CreateGroupSSHCertificateOptions struct { Title *string `url:"title,omitempty" json:"title,omitempty"` } -// CreateMemberRole creates a new member role for a specified group. +// CreateGroupSSHCertificate creates a new SSH certificate in the group. // // Gitlab API docs: // https://docs.gitlab.com/api/group_ssh_certificates/#create-ssh-certificate diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/import.go b/vendor/gitlab.com/gitlab-org/api/client-go/import.go index 693fc598cd..019c4b7260 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/import.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/import.go @@ -82,7 +82,7 @@ type ImportRepositoryFromGitHubOptions struct { TimeoutStrategy *string `url:"timeout_strategy,omitempty" json:"timeout_strategy,omitempty"` } -// Import a repository from GitHub. +// ImportRepositoryFromGitHub imports a repository from GitHub. // // GitLab API docs: // https://docs.gitlab.com/api/import/#import-repository-from-github @@ -130,7 +130,7 @@ type CancelGitHubProjectImportOptions struct { ProjectID *int `url:"project_id,omitempty" json:"project_id,omitempty"` } -// Cancel an import of a repository from GitHub. +// CancelGitHubProjectImport cancels an import of a repository from GitHub. // // GitLab API docs: // https://docs.gitlab.com/api/import/#cancel-github-project-import @@ -158,7 +158,7 @@ type ImportGitHubGistsIntoGitLabSnippetsOptions struct { PersonalAccessToken *string `url:"personal_access_token,omitempty" json:"personal_access_token,omitempty"` } -// Import personal GitHub Gists into personal GitLab Snippets. +// ImportGitHubGistsIntoGitLabSnippets imports personal GitHub Gists into personal GitLab Snippets. // // GitLab API docs: // https://docs.gitlab.com/api/import/#import-github-gists-into-gitlab-snippets @@ -203,7 +203,7 @@ type ImportRepositoryFromBitbucketServerOptions struct { TimeoutStrategy *string `url:"timeout_strategy,omitempty" json:"timeout_strategy,omitempty"` } -// Import a repository from Bitbucket Server. +// ImportRepositoryFromBitbucketServer imports a repository from Bitbucket Server. // // GitLab API docs: // https://docs.gitlab.com/api/import/#import-repository-from-bitbucket-server @@ -258,7 +258,7 @@ type ImportRepositoryFromBitbucketCloudOptions struct { NewName *string `url:"new_name,omitempty" json:"new_name,omitempty"` } -// Import a repository from Bitbucket Cloud. +// ImportRepositoryFromBitbucketCloud imports a repository from Bitbucket Cloud. // // GitLab API docs: // https://docs.gitlab.com/api/import/#import-repository-from-bitbucket-cloud diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/integrations.go b/vendor/gitlab.com/gitlab-org/api/client-go/integrations.go new file mode 100644 index 0000000000..2e4357ada8 --- /dev/null +++ b/vendor/gitlab.com/gitlab-org/api/client-go/integrations.go @@ -0,0 +1,290 @@ +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package gitlab + +import ( + "fmt" + "net/http" + "time" +) + +type ( + IntegrationsServiceInterface interface { + ListActiveGroupIntegrations(gid any, opt *ListActiveIntegrationsOptions, options ...RequestOptionFunc) ([]*Integration, *Response, error) + SetUpGroupHarbor(gid any, opt *SetUpHarborOptions, options ...RequestOptionFunc) (*Integration, *Response, error) + DisableGroupHarbor(gid any, options ...RequestOptionFunc) (*Response, error) + GetGroupHarborSettings(gid any, options ...RequestOptionFunc) (*Integration, *Response, error) + SetGroupMicrosoftTeamsNotifications(gid any, opt *SetMicrosoftTeamsNotificationsOptions, options ...RequestOptionFunc) (*Integration, *Response, error) + DisableGroupMicrosoftTeamsNotifications(gid any, options ...RequestOptionFunc) (*Response, error) + GetGroupMicrosoftTeamsNotifications(gid any, options ...RequestOptionFunc) (*Integration, *Response, error) + } + + // IntegrationsService handles communication with the group + // integrations related methods of the GitLab API. + // + // GitLab API docs: https://docs.gitlab.com/ee/api/group_integrations.html + IntegrationsService struct { + client *Client + } +) + +var _ IntegrationsServiceInterface = (*IntegrationsService)(nil) + +// Integration represents a GitLab group or project integration. +// +// GitLab API docs: +// https://docs.gitlab.com/api/group_integrations/ +// https://docs.gitlab.com/api/project_integrations/ +type Integration struct { + ID int `json:"id"` + Title string `json:"title"` + Slug string `json:"slug"` + CreatedAt *time.Time `json:"created_at"` + UpdatedAt *time.Time `json:"updated_at"` + Active bool `json:"active"` + AlertEvents bool `json:"alert_events"` + CommitEvents bool `json:"commit_events"` + ConfidentialIssuesEvents bool `json:"confidential_issues_events"` + ConfidentialNoteEvents bool `json:"confidential_note_events"` + DeploymentEvents bool `json:"deployment_events"` + GroupConfidentialMentionEvents bool `json:"group_confidential_mention_events"` + GroupMentionEvents bool `json:"group_mention_events"` + IncidentEvents bool `json:"incident_events"` + IssuesEvents bool `json:"issues_events"` + JobEvents bool `json:"job_events"` + MergeRequestsEvents bool `json:"merge_requests_events"` + NoteEvents bool `json:"note_events"` + PipelineEvents bool `json:"pipeline_events"` + PushEvents bool `json:"push_events"` + TagPushEvents bool `json:"tag_push_events"` + VulnerabilityEvents bool `json:"vulnerability_events"` + WikiPageEvents bool `json:"wiki_page_events"` + CommentOnEventEnabled bool `json:"comment_on_event_enabled"` + Inherited bool `json:"inherited"` +} + +// ListActiveIntegrationsOptions represents the available +// ListActiveIntegrations() options. +// +// GitLab API docs: +// https://docs.gitlab.com/api/group_integrations/#list-all-active-integrations +type ListActiveIntegrationsOptions struct { + ListOptions +} + +// ListActiveGroupIntegrations gets a list of all active group integrations. +// The vulnerability_events field is only available for GitLab Enterprise Edition. +// +// GitLab API docs: +// https://docs.gitlab.com/api/group_integrations/#list-all-active-integrations +func (s *IntegrationsService) ListActiveGroupIntegrations(gid any, opt *ListActiveIntegrationsOptions, options ...RequestOptionFunc) ([]*Integration, *Response, error) { + group, err := parseID(gid) + if err != nil { + return nil, nil, err + } + u := fmt.Sprintf("groups/%s/integrations", PathEscape(group)) + + req, err := s.client.NewRequest(http.MethodGet, u, opt, options) + if err != nil { + return nil, nil, err + } + + var integrations []*Integration + resp, err := s.client.Do(req, &integrations) + if err != nil { + return nil, resp, err + } + + return integrations, resp, nil +} + +// SetUpHarborOptions represents the available SetUpGroupHarbor() +// options. +// +// GitLab API docs: +// https://docs.gitlab.com/api/group_integrations/#set-up-harbor +type SetUpHarborOptions struct { + URL *string `url:"url,omitempty" json:"url,omitempty"` + ProjectName *string `url:"project_name,omitempty" json:"project_name,omitempty"` + Username *string `url:"username,omitempty" json:"username,omitempty"` + Password *string `url:"password,omitempty" json:"password,omitempty"` + UseInheritedSettings *bool `url:"use_inherited_settings,omitempty" json:"use_inherited_settings,omitempty"` +} + +// SetUpGroupHarbor sets up the Harbor integration for a group. +// +// GitLab API docs: +// https://docs.gitlab.com/api/group_integrations/#set-up-harbor +func (s *IntegrationsService) SetUpGroupHarbor(gid any, opt *SetUpHarborOptions, options ...RequestOptionFunc) (*Integration, *Response, error) { + group, err := parseID(gid) + if err != nil { + return nil, nil, err + } + u := fmt.Sprintf("groups/%s/integrations/harbor", PathEscape(group)) + + req, err := s.client.NewRequest(http.MethodPut, u, opt, options) + if err != nil { + return nil, nil, err + } + + integration := new(Integration) + resp, err := s.client.Do(req, integration) + if err != nil { + return nil, resp, err + } + return integration, resp, nil +} + +// DisableGroupHarbor disables the Harbor integration for a group. +// Integration settings are reset. +// +// GitLab API docs: +// https://docs.gitlab.com/api/group_integrations/#disable-harbor +func (s *IntegrationsService) DisableGroupHarbor(gid any, options ...RequestOptionFunc) (*Response, error) { + group, err := parseID(gid) + if err != nil { + return nil, err + } + u := fmt.Sprintf("groups/%s/integrations/harbor", PathEscape(group)) + + req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) + if err != nil { + return nil, err + } + + resp, err := s.client.Do(req, nil) + if err != nil { + return nil, err + } + return resp, nil +} + +// GetGroupHarborSettings gets the Harbor integration for a group. +// +// GitLab API docs: +// https://docs.gitlab.com/api/group_integrations/#get-harbor-settings +func (s *IntegrationsService) GetGroupHarborSettings(gid any, options ...RequestOptionFunc) (*Integration, *Response, error) { + group, err := parseID(gid) + if err != nil { + return nil, nil, err + } + u := fmt.Sprintf("groups/%s/integrations/harbor", PathEscape(group)) + + req, err := s.client.NewRequest(http.MethodGet, u, nil, options) + if err != nil { + return nil, nil, err + } + + integration := new(Integration) + resp, err := s.client.Do(req, integration) + if err != nil { + return nil, nil, err + } + return integration, resp, nil +} + +// SetMicrosoftTeamsNotificationsOptions represents the available +// SetMicrosoftTeamsNotifications() options. +// +// GitLab API docs: +// https://docs.gitlab.com/api/group_integrations/#set-up-microsoft-teams-notifications +type SetMicrosoftTeamsNotificationsOptions struct { + Targets *string `url:"targets,omitempty"` + Webhook *string `url:"webhook,omitempty"` + NotifyOnlyBrokenPipelines *bool `url:"notify_only_broken_pipelines,omitempty"` + NotifyOnlyDefaultBranch *bool `url:"notify_only_default_branch,omitempty"` + BranchesToBeNotified *string `url:"branches_to_be_notified,omitempty"` + PushEvents *bool `url:"push_events,omitempty"` + IssuesEvents *bool `url:"issues_events,omitempty"` + ConfidentialIssuesEvents *bool `url:"confidential_issues_events,omitempty"` + MergeRequestsEvents *bool `url:"merge_requests_events,omitempty"` + TagPushEvents *bool `url:"tag_push_events,omitempty"` + NoteEvents *bool `url:"note_events,omitempty"` + ConfidentialNoteEvents *bool `url:"confidential_note_events,omitempty"` + PipelineEvents *bool `url:"pipeline_events,omitempty"` + WikiPageEvents *bool `url:"wiki_page_events,omitempty"` + UseInheritedSettings *bool `url:"use_inherited_settings,omitempty"` +} + +// SetGroupMicrosoftTeamsNotifications sets up Microsoft Teams notifications for a group. +// +// GitLab API docs: +// https://docs.gitlab.com/api/group_integrations/#set-up-microsoft-teams-notifications +func (s *IntegrationsService) SetGroupMicrosoftTeamsNotifications(gid any, opt *SetMicrosoftTeamsNotificationsOptions, options ...RequestOptionFunc) (*Integration, *Response, error) { + group, err := parseID(gid) + if err != nil { + return nil, nil, err + } + u := fmt.Sprintf("groups/%s/integrations/microsoft_teams", PathEscape(group)) + + req, err := s.client.NewRequest(http.MethodPut, u, opt, options) + if err != nil { + return nil, nil, err + } + + integration := new(Integration) + resp, err := s.client.Do(req, integration) + if err != nil { + return nil, resp, err + } + return integration, resp, nil +} + +// DisableGroupMicrosoftTeamsNotifications disables Microsoft Teams notifications +// for a group. Integration settings are reset. +// +// GitLab API docs: +// https://docs.gitlab.com/api/group_integrations/#disable-microsoft-teams-notifications +func (s *IntegrationsService) DisableGroupMicrosoftTeamsNotifications(gid any, options ...RequestOptionFunc) (*Response, error) { + group, err := parseID(gid) + if err != nil { + return nil, err + } + u := fmt.Sprintf("groups/%s/integrations/microsoft_teams", PathEscape(group)) + + req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) + if err != nil { + return nil, err + } + + resp, err := s.client.Do(req, nil) + if err != nil { + return nil, err + } + return resp, nil +} + +// GetGroupMicrosoftTeamsNotifications gets the Microsoft Teams notifications for a group. +// +// GitLab API docs: +// https://docs.gitlab.com/api/group_integrations/#get-microsoft-teams-notifications-settings +func (s *IntegrationsService) GetGroupMicrosoftTeamsNotifications(gid any, options ...RequestOptionFunc) (*Integration, *Response, error) { + group, err := parseID(gid) + if err != nil { + return nil, nil, err + } + u := fmt.Sprintf("groups/%s/integrations/microsoft_teams", PathEscape(group)) + + req, err := s.client.NewRequest(http.MethodGet, u, nil, options) + if err != nil { + return nil, nil, err + } + + integration := new(Integration) + resp, err := s.client.Do(req, integration) + if err != nil { + return nil, nil, err + } + return integration, resp, nil +} diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/job_token_scope.go b/vendor/gitlab.com/gitlab-org/api/client-go/job_token_scope.go index 1421f59135..6c2fa0ca0c 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/job_token_scope.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/job_token_scope.go @@ -144,7 +144,7 @@ func (j *JobTokenScopeService) GetProjectJobTokenInboundAllowList(pid any, opt * return ps, resp, nil } -// AddProjectToJobScopeAllowListOptions represents the available +// JobTokenInboundAllowOptions represents the available // AddProjectToJobScopeAllowList() options. // // GitLab API docs: @@ -216,7 +216,7 @@ type GetJobTokenAllowlistGroupsOptions struct { ListOptions } -// GetJobTokenAllowListGroups fetches the CI/CD job token allowlist groups +// GetJobTokenAllowlistGroups fetches the CI/CD job token allowlist groups // (job token scopes) of a project. // // GitLab API docs: @@ -251,7 +251,7 @@ type AddGroupToJobTokenAllowlistOptions struct { TargetGroupID *int `url:"target_group_id,omitempty" json:"target_group_id,omitempty"` } -// AddProjectToJobScopeGroupsAllowList adds a new group to a project's job token +// AddGroupToJobTokenAllowlist adds a new group to a project's job token // inbound groups allow list. // // GitLab API docs: @@ -277,7 +277,7 @@ func (j *JobTokenScopeService) AddGroupToJobTokenAllowlist(pid any, opt *AddGrou return jt, resp, nil } -// RemoveGroupFromJopTokenAllowlist removes a group from a project's job +// RemoveGroupFromJobTokenAllowlist removes a group from a project's job // token inbound groups allow list. // // GitLab API docs: diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/jobs.go b/vendor/gitlab.com/gitlab-org/api/client-go/jobs.go index 2b6ba1accb..94aef9540a 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/jobs.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/jobs.go @@ -366,10 +366,9 @@ func (s *JobsService) DownloadSingleArtifactsFile(pid any, jobID int, artifactPa return bytes.NewReader(artifactBuf.Bytes()), resp, err } -// DownloadSingleArtifactsFile download a single artifact file for a specific -// job of the latest successful pipeline for the given reference name from -// inside the job’s artifacts archive. The file is extracted from the archive -// and streamed to the client. +// DownloadSingleArtifactsFileByTagOrBranch downloads a single file from +// a job’s artifacts in the latest successful pipeline using the reference name. +// The file is extracted from the archive and streamed to the client. // // GitLab API docs: // https://docs.gitlab.com/api/job_artifacts/#download-a-single-artifact-file-from-specific-tag-or-branch diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/markdown_uploads.go b/vendor/gitlab.com/gitlab-org/api/client-go/markdown_uploads.go index 37a6831c58..9acfe2377b 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/markdown_uploads.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/markdown_uploads.go @@ -36,7 +36,7 @@ type MarkdownUpload struct { UploadedBy *User `json:"uploaded_by"` } -// Gets a string representation of a MarkdownUpload. +// String gets a string representation of a MarkdownUpload. // // GitLab API docs: // https://docs.gitlab.com/api/project_markdown_uploads/ diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/merge_requests.go b/vendor/gitlab.com/gitlab-org/api/client-go/merge_requests.go index 08578fcd87..33048676e0 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/merge_requests.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/merge_requests.go @@ -930,12 +930,15 @@ func (s *MergeRequestsService) DeleteMergeRequest(pid any, mergeRequest int, opt // GitLab API docs: // https://docs.gitlab.com/api/merge_requests/#merge-a-merge-request type AcceptMergeRequestOptions struct { - MergeCommitMessage *string `url:"merge_commit_message,omitempty" json:"merge_commit_message,omitempty"` - SquashCommitMessage *string `url:"squash_commit_message,omitempty" json:"squash_commit_message,omitempty"` - Squash *bool `url:"squash,omitempty" json:"squash,omitempty"` - ShouldRemoveSourceBranch *bool `url:"should_remove_source_branch,omitempty" json:"should_remove_source_branch,omitempty"` - MergeWhenPipelineSucceeds *bool `url:"merge_when_pipeline_succeeds,omitempty" json:"merge_when_pipeline_succeeds,omitempty"` - SHA *string `url:"sha,omitempty" json:"sha,omitempty"` + AutoMerge *bool `url:"auto_merge,omitempty" json:"auto_merge,omitempty"` + MergeCommitMessage *string `url:"merge_commit_message,omitempty" json:"merge_commit_message,omitempty"` + SquashCommitMessage *string `url:"squash_commit_message,omitempty" json:"squash_commit_message,omitempty"` + Squash *bool `url:"squash,omitempty" json:"squash,omitempty"` + ShouldRemoveSourceBranch *bool `url:"should_remove_source_branch,omitempty" json:"should_remove_source_branch,omitempty"` + SHA *string `url:"sha,omitempty" json:"sha,omitempty"` + + // Deprecated: use AutoMerge instead + MergeWhenPipelineSucceeds *bool `url:"merge_when_pipeline_succeeds,omitempty" json:"merge_when_pipeline_succeeds,omitempty"` } // AcceptMergeRequest merges changes submitted with MR using this API. If merge diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/pages.go b/vendor/gitlab.com/gitlab-org/api/client-go/pages.go index 379844054f..baffb25591 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/pages.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/pages.go @@ -105,7 +105,7 @@ func (s *PagesService) GetPages(gid any, options ...RequestOptionFunc) (*Pages, return p, resp, nil } -// UpdatePages represents the available UpdatePages() options. +// UpdatePagesOptions represents the available UpdatePages() options. // // GitLab API docs: // https://docs.gitlab.com/api/pages/#update-pages-settings-for-a-project diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/personal_access_tokens.go b/vendor/gitlab.com/gitlab-org/api/client-go/personal_access_tokens.go index 0dd5da953d..9dcbe68720 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/personal_access_tokens.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/personal_access_tokens.go @@ -84,10 +84,13 @@ type ListPersonalAccessTokensOptions struct { ListOptions CreatedAfter *ISOTime `url:"created_after,omitempty" json:"created_after,omitempty"` CreatedBefore *ISOTime `url:"created_before,omitempty" json:"created_before,omitempty"` + ExpiresAfter *ISOTime `url:"expires_after,omitempty" json:"expires_after,omitempty"` + ExpiresBefore *ISOTime `url:"expires_before,omitempty" json:"expires_before,omitempty"` LastUsedAfter *ISOTime `url:"last_used_after,omitempty" json:"last_used_after,omitempty"` LastUsedBefore *ISOTime `url:"last_used_before,omitempty" json:"last_used_before,omitempty"` Revoked *bool `url:"revoked,omitempty" json:"revoked,omitempty"` Search *string `url:"search,omitempty" json:"search,omitempty"` + Sort *string `url:"sort,omitempty" json:"sort,omitempty"` State *string `url:"state,omitempty" json:"state,omitempty"` UserID *int `url:"user_id,omitempty" json:"user_id,omitempty"` } diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/pipelines.go b/vendor/gitlab.com/gitlab-org/api/client-go/pipelines.go index 89d151e0d5..8385836887 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/pipelines.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/pipelines.go @@ -364,7 +364,7 @@ type CreatePipelineOptions struct { Variables *[]*PipelineVariableOptions `url:"variables,omitempty" json:"variables,omitempty"` } -// PipelineVariable represents a pipeline variable. +// PipelineVariableOptions represents a pipeline variable option. // // GitLab API docs: https://docs.gitlab.com/api/pipelines/#create-a-new-pipeline type PipelineVariableOptions struct { diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/plan_limits.go b/vendor/gitlab.com/gitlab-org/api/client-go/plan_limits.go index 4d4986057e..53e9c9fd54 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/plan_limits.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/plan_limits.go @@ -58,7 +58,7 @@ type GetCurrentPlanLimitsOptions struct { PlanName *string `url:"plan_name,omitempty" json:"plan_name,omitempty"` } -// List the current limits of a plan on the GitLab instance. +// GetCurrentPlanLimits lists the current limits of a plan on the GitLab instance. // // GitLab API docs: // https://docs.gitlab.com/api/plan_limits/#get-current-plan-limits diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/project_import_export.go b/vendor/gitlab.com/gitlab-org/api/client-go/project_import_export.go index eab7e3edf4..105ec930ce 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/project_import_export.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/project_import_export.go @@ -184,7 +184,7 @@ type ImportFileOptions struct { OverrideParams *CreateProjectOptions `url:"override_params,omitempty" json:"override_params,omitempty"` } -// Import a project from an archive file. +// ImportFromFile imports a project from an archive file. // // GitLab API docs: // https://docs.gitlab.com/api/project_import_export/#import-a-file diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/project_markdown_uploads.go b/vendor/gitlab.com/gitlab-org/api/client-go/project_markdown_uploads.go index b7d0ea307e..88a39320b1 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/project_markdown_uploads.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/project_markdown_uploads.go @@ -32,7 +32,7 @@ type ( DeleteProjectMarkdownUploadBySecretAndFilename(pid any, secret string, filename string, options ...RequestOptionFunc) (*Response, error) } - // MarkdownUploadsService handles communication with the project + // ProjectMarkdownUploadsService handles communication with the project // markdown uploads related methods of the GitLab API. // // GitLab API docs: diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/project_security_settings.go b/vendor/gitlab.com/gitlab-org/api/client-go/project_security_settings.go index 028d62724d..64768ca0a2 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/project_security_settings.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/project_security_settings.go @@ -56,7 +56,7 @@ type ProjectSecuritySettings struct { SecretPushProtectionEnabled bool `json:"secret_push_protection_enabled"` } -// Gets a string representation of the ProjectSecuritySettings data. +// String gets a string representation of the ProjectSecuritySettings data. // // GitLab API docs: // https://docs.gitlab.com/api/project_security_settings/ diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/project_vulnerabilities.go b/vendor/gitlab.com/gitlab-org/api/client-go/project_vulnerabilities.go index 9b939e0bf0..aa85f43ba5 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/project_vulnerabilities.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/project_vulnerabilities.go @@ -44,7 +44,7 @@ type ( // Deprecated: use GraphQL Query.vulnerabilities instead var _ ProjectVulnerabilitiesServiceInterface = (*ProjectVulnerabilitiesService)(nil) -// Project represents a GitLab project vulnerability. +// ProjectVulnerability represents a GitLab project vulnerability. // Deprecated: use GraphQL Query.vulnerabilities instead // // GitLab API docs: https://docs.gitlab.com/api/project_vulnerabilities/ @@ -74,7 +74,7 @@ type ProjectVulnerability struct { UpdatedByID int `json:"updated_by_id"` } -// Project represents a GitLab project vulnerability finding. +// Finding represents a GitLab project vulnerability finding. // Deprecated: use GraphQL Query.vulnerabilities instead // // GitLab API docs: https://docs.gitlab.com/api/project_vulnerabilities/ diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/projects.go b/vendor/gitlab.com/gitlab-org/api/client-go/projects.go index 001344933e..92423a2f3c 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/projects.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/projects.go @@ -50,6 +50,7 @@ type ( UnstarProject(pid any, options ...RequestOptionFunc) (*Project, *Response, error) ArchiveProject(pid any, options ...RequestOptionFunc) (*Project, *Response, error) UnarchiveProject(pid any, options ...RequestOptionFunc) (*Project, *Response, error) + RestoreProject(pid any, options ...RequestOptionFunc) (*Project, *Response, error) DeleteProject(pid any, opt *DeleteProjectOptions, options ...RequestOptionFunc) (*Response, error) ShareProjectWithGroup(pid any, opt *ShareWithGroupOptions, options ...RequestOptionFunc) (*Response, error) DeleteSharedProjectFromGroup(pid any, groupID int, options ...RequestOptionFunc) (*Response, error) @@ -61,6 +62,8 @@ type ( TriggerTestProjectHook(pid any, hook int, event ProjectHookEvent, options ...RequestOptionFunc) (*Response, error) SetProjectCustomHeader(pid any, hook int, key string, opt *SetHookCustomHeaderOptions, options ...RequestOptionFunc) (*Response, error) DeleteProjectCustomHeader(pid any, hook int, key string, options ...RequestOptionFunc) (*Response, error) + SetProjectWebhookURLVariable(pid any, hook int, key string, opt *SetProjectWebhookURLVariableOptions, options ...RequestOptionFunc) (*Response, error) + DeleteProjectWebhookURLVariable(pid any, hook int, key string, options ...RequestOptionFunc) (*Response, error) CreateProjectForkRelation(pid any, fork int, options ...RequestOptionFunc) (*ProjectForkRelation, *Response, error) DeleteProjectForkRelation(pid any, options ...RequestOptionFunc) (*Response, error) UploadAvatar(pid any, avatar io.Reader, filename string, options ...RequestOptionFunc) (*Project, *Response, error) @@ -1147,12 +1150,12 @@ func (s *ProjectsService) StarProject(pid any, options ...RequestOptionFunc) (*P return p, resp, nil } -// ListProjectInvidedGroupOptions represents the available +// ListProjectInvitedGroupOptions represents the available // ListProjectsInvitedGroups() options. // // GitLab API docs: // https://docs.gitlab.com/api/projects/#list-a-projects-invited-groups -type ListProjectInvidedGroupOptions struct { +type ListProjectInvitedGroupOptions struct { ListOptions Search *string `url:"search,omitempty" json:"search,omitempty"` MinAccessLevel *AccessLevelValue `url:"min_access_level,omitempty" json:"min_access_level,omitempty"` @@ -1160,6 +1163,11 @@ type ListProjectInvidedGroupOptions struct { WithCustomAttributes *bool `url:"with_custom_attributes,omitempty" json:"with_custom_attributes,omitempty"` } +// ListProjectInvidedGroupOptions is kept for backwards compatibility. +// +// Deprecated: use ListProjectInvitedGroupOptions instead. The ListProjectInvidedGroupOptions type will be removed in the next release. +type ListProjectInvidedGroupOptions = ListProjectInvitedGroupOptions + // ListProjectsInvitedGroups lists invited groups of a project // // GitLab API docs: @@ -1262,6 +1270,31 @@ func (s *ProjectsService) UnarchiveProject(pid any, options ...RequestOptionFunc return p, resp, nil } +// RestoreProject restores a project that is marked for deletion. +// +// GitLab API docs: +// https://docs.gitlab.com/api/projects/#restore-a-project-marked-for-deletion +func (s *ProjectsService) RestoreProject(pid any, options ...RequestOptionFunc) (*Project, *Response, error) { + project, err := parseID(pid) + if err != nil { + return nil, nil, err + } + u := fmt.Sprintf("projects/%s/restore", PathEscape(project)) + + req, err := s.client.NewRequest(http.MethodPost, u, nil, options) + if err != nil { + return nil, nil, err + } + + p := new(Project) + resp, err := s.client.Do(req, p) + if err != nil { + return nil, resp, err + } + + return p, resp, nil +} + // DeleteProjectOptions represents the available DeleteProject() options. // // GitLab API docs: @@ -1346,6 +1379,12 @@ type HookCustomHeader struct { Value string `json:"value"` } +// HookURLVariable represents a project or group hook URL variable +type HookURLVariable struct { + Key string `json:"key"` + Value string `json:"value"` +} + // ProjectHook represents a project hook. // // GitLab API docs: @@ -1355,7 +1394,6 @@ type ProjectHook struct { URL string `json:"url"` Name string `json:"name"` Description string `json:"description"` - ConfidentialNoteEvents bool `json:"confidential_note_events"` ProjectID int `json:"project_id"` PushEvents bool `json:"push_events"` PushEventsBranchFilter string `json:"push_events_branch_filter"` @@ -1364,13 +1402,19 @@ type ProjectHook struct { MergeRequestsEvents bool `json:"merge_requests_events"` TagPushEvents bool `json:"tag_push_events"` NoteEvents bool `json:"note_events"` + ConfidentialNoteEvents bool `json:"confidential_note_events"` JobEvents bool `json:"job_events"` PipelineEvents bool `json:"pipeline_events"` WikiPageEvents bool `json:"wiki_page_events"` DeploymentEvents bool `json:"deployment_events"` ReleasesEvents bool `json:"releases_events"` + MilestoneEvents bool `json:"milestone_events"` + FeatureFlagEvents bool `json:"feature_flag_events"` EnableSSLVerification bool `json:"enable_ssl_verification"` + RepositoryUpdateEvents bool `json:"repository_update_events"` AlertStatus string `json:"alert_status"` + DisabledUntil *time.Time `json:"disabled_until"` + URLVariables []HookURLVariable `json:"url_variables"` CreatedAt *time.Time `json:"created_at"` ResourceAccessTokenEvents bool `json:"resource_access_token_events"` CustomWebhookTemplate string `json:"custom_webhook_template"` @@ -1633,6 +1677,53 @@ func (s *ProjectsService) DeleteProjectCustomHeader(pid any, hook int, key strin return s.client.Do(req, nil) } +// SetProjectWebhookURLVariableOptions represents the available +// SetProjectWebhookURLVariable() options. +// +// GitLab API docs: +// https://docs.gitlab.com/api/project_webhooks/#set-a-url-variable +type SetProjectWebhookURLVariableOptions struct { + Value *string `json:"value,omitempty"` +} + +// SetProjectWebhookURLVariable creates or updates a project webhook URL variable. +// +// GitLab API docs: +// https://docs.gitlab.com/api/project_webhooks/#set-a-url-variable +func (s *ProjectsService) SetProjectWebhookURLVariable(pid any, hook int, key string, opt *SetProjectWebhookURLVariableOptions, options ...RequestOptionFunc) (*Response, error) { + project, err := parseID(pid) + if err != nil { + return nil, err + } + u := fmt.Sprintf("projects/%s/hooks/%d/url_variables/%s", PathEscape(project), hook, PathEscape(key)) + + req, err := s.client.NewRequest(http.MethodPut, u, opt, options) + if err != nil { + return nil, err + } + + return s.client.Do(req, nil) +} + +// DeleteProjectWebhookURLVariable deletes a project webhook URL variable. +// +// GitLab API docs: +// https://docs.gitlab.com/api/project_webhooks/#delete-a-url-variable +func (s *ProjectsService) DeleteProjectWebhookURLVariable(pid any, hook int, key string, options ...RequestOptionFunc) (*Response, error) { + project, err := parseID(pid) + if err != nil { + return nil, err + } + u := fmt.Sprintf("projects/%s/hooks/%d/url_variables/%s", PathEscape(project), hook, PathEscape(key)) + + req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) + if err != nil { + return nil, err + } + + return s.client.Do(req, nil) +} + // ProjectForkRelation represents a project fork relationship. // // GitLab API docs: @@ -2327,7 +2418,7 @@ func (s *ProjectsService) StartHousekeepingProject(pid any, options ...RequestOp return s.client.Do(req, nil) } -// GetRepositoryStorage Get the path to repository storage. +// ProjectRepositoryStorage represents the repository storage information for a project. // // GitLab API docs: // https://docs.gitlab.com/api/projects/#get-the-path-to-repository-storage diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/release.config.mjs b/vendor/gitlab.com/gitlab-org/api/client-go/release.config.mjs deleted file mode 100644 index 1f7def3543..0000000000 --- a/vendor/gitlab.com/gitlab-org/api/client-go/release.config.mjs +++ /dev/null @@ -1,27 +0,0 @@ -export default { - branches: ["main"], - plugins: [ - "@semantic-release/commit-analyzer", - { - "preset": "angular", - "releaseRules": [ - {"type": "breaking", "release": "major"}, - {"type": "feat", "release": "minor"}, - {"type": "fix", "release": "patch"}, - {"type": "refactor", "release": "patch"}, - {"type": "chore", "release": "patch"}, - {"type": "docs", "release": "patch"}, - {"type": "style", "release": false}, - {"type": "test", "release": false}, - {"scope": "no-release", "release": false} - ] - }, - "@semantic-release/release-notes-generator", - "@semantic-release/changelog", - "@semantic-release/gitlab", - ["@semantic-release/git", { - assets: ["CHANGELOG.md"], - message: "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" - }] - ] -}; diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/request_options.go b/vendor/gitlab.com/gitlab-org/api/client-go/request_options.go index 15628a067c..166c1d92c8 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/request_options.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/request_options.go @@ -72,12 +72,12 @@ func WithHeaders(headers map[string]string) RequestOptionFunc { // query parameter in the request with its corresponding response parameter. func WithKeysetPaginationParameters(nextLink string) RequestOptionFunc { return func(req *retryablehttp.Request) error { - nextUrl, err := url.Parse(nextLink) + nextURL, err := url.Parse(nextLink) if err != nil { return err } q := req.URL.Query() - for k, values := range nextUrl.Query() { + for k, values := range nextURL.Query() { q.Del(k) for _, v := range values { q.Add(k, v) diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/resource_group.go b/vendor/gitlab.com/gitlab-org/api/client-go/resource_group.go index 60def40991..6b851143f6 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/resource_group.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/resource_group.go @@ -54,7 +54,7 @@ type ResourceGroup struct { UpdatedAt *time.Time `json:"updated_at"` } -// Gets a string representation of a ResourceGroup +// String gets a string representation of a ResourceGroup // // GitLab API docs: // https://docs.gitlab.com/api/resource_groups/ diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/secure_files.go b/vendor/gitlab.com/gitlab-org/api/client-go/secure_files.go index 761beff905..13fc386cc4 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/secure_files.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/secure_files.go @@ -90,7 +90,7 @@ type SecureFileSubject struct { UID string `json:"UID"` } -// Gets a string representation of a SecureFile. +// String gets a string representation of a SecureFile. // // GitLab API docs: // https://docs.gitlab.com/api/secure_files/ diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/services.go b/vendor/gitlab.com/gitlab-org/api/client-go/services.go index 7ce79c4ea8..98ad3ed556 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/services.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/services.go @@ -21,7 +21,6 @@ import ( "fmt" "net/http" "strconv" - "time" ) type ( @@ -103,33 +102,7 @@ var _ ServicesServiceInterface = (*ServicesService)(nil) // Service represents a GitLab service. // // GitLab API docs: https://docs.gitlab.com/api/project_integrations/ -type Service struct { - ID int `json:"id"` - Title string `json:"title"` - Slug string `json:"slug"` - CreatedAt *time.Time `json:"created_at"` - UpdatedAt *time.Time `json:"updated_at"` - Active bool `json:"active"` - AlertEvents bool `json:"alert_events"` - CommitEvents bool `json:"commit_events"` - ConfidentialIssuesEvents bool `json:"confidential_issues_events"` - ConfidentialNoteEvents bool `json:"confidential_note_events"` - DeploymentEvents bool `json:"deployment_events"` - GroupConfidentialMentionEvents bool `json:"group_confidential_mention_events"` - GroupMentionEvents bool `json:"group_mention_events"` - IncidentEvents bool `json:"incident_events"` - IssuesEvents bool `json:"issues_events"` - JobEvents bool `json:"job_events"` - MergeRequestsEvents bool `json:"merge_requests_events"` - NoteEvents bool `json:"note_events"` - PipelineEvents bool `json:"pipeline_events"` - PushEvents bool `json:"push_events"` - TagPushEvents bool `json:"tag_push_events"` - VulnerabilityEvents bool `json:"vulnerability_events"` - WikiPageEvents bool `json:"wiki_page_events"` - CommentOnEventEnabled bool `json:"comment_on_event_enabled"` - Inherited bool `json:"inherited"` -} +type Service = Integration // ListServices gets a list of all active services. // @@ -268,12 +241,14 @@ type DataDogService struct { // GitLab API docs: // https://docs.gitlab.com/api/project_integrations/#datadog type DataDogServiceProperties struct { - APIURL string `url:"api_url,omitempty" json:"api_url,omitempty"` - DataDogEnv string `url:"datadog_env,omitempty" json:"datadog_env,omitempty"` - DataDogService string `url:"datadog_service,omitempty" json:"datadog_service,omitempty"` - DataDogSite string `url:"datadog_site,omitempty" json:"datadog_site,omitempty"` - DataDogTags string `url:"datadog_tags,omitempty" json:"datadog_tags,omitempty"` - ArchiveTraceEvents bool `url:"archive_trace_events,omitempty" json:"archive_trace_events,omitempty"` + APIURL string `url:"api_url,omitempty" json:"api_url,omitempty"` + DataDogEnv string `url:"datadog_env,omitempty" json:"datadog_env,omitempty"` + DataDogService string `url:"datadog_service,omitempty" json:"datadog_service,omitempty"` + DataDogSite string `url:"datadog_site,omitempty" json:"datadog_site,omitempty"` + DataDogTags string `url:"datadog_tags,omitempty" json:"datadog_tags,omitempty"` + ArchiveTraceEvents bool `url:"archive_trace_events,omitempty" json:"archive_trace_events,omitempty"` + DataDogCIVisibility bool `url:"datadog_ci_visibility,omitempty" json:"datadog_ci_visibility,omitempty"` + UseInheritedSettings bool `url:"use_inherited_settings,omitempty" json:"use_inherited_settings,omitempty"` } // GetDataDogService gets DataDog service settings for a project. @@ -285,7 +260,7 @@ func (s *ServicesService) GetDataDogService(pid any, options ...RequestOptionFun if err != nil { return nil, nil, err } - u := fmt.Sprintf("projects/%s/services/datadog", PathEscape(project)) + u := fmt.Sprintf("projects/%s/integrations/datadog", PathEscape(project)) req, err := s.client.NewRequest(http.MethodGet, u, nil, options) if err != nil { @@ -307,13 +282,15 @@ func (s *ServicesService) GetDataDogService(pid any, options ...RequestOptionFun // GitLab API docs: // https://docs.gitlab.com/api/project_integrations/#set-up-datadog type SetDataDogServiceOptions struct { - APIKey *string `url:"api_key,omitempty" json:"api_key,omitempty"` - APIURL *string `url:"api_url,omitempty" json:"api_url,omitempty"` - DataDogEnv *string `url:"datadog_env,omitempty" json:"datadog_env,omitempty"` - DataDogService *string `url:"datadog_service,omitempty" json:"datadog_service,omitempty"` - DataDogSite *string `url:"datadog_site,omitempty" json:"datadog_site,omitempty"` - DataDogTags *string `url:"datadog_tags,omitempty" json:"datadog_tags,omitempty"` - ArchiveTraceEvents *bool `url:"archive_trace_events,omitempty" json:"archive_trace_events,omitempty"` + APIKey *string `url:"api_key,omitempty" json:"api_key,omitempty"` + APIURL *string `url:"api_url,omitempty" json:"api_url,omitempty"` + DataDogEnv *string `url:"datadog_env,omitempty" json:"datadog_env,omitempty"` + DataDogService *string `url:"datadog_service,omitempty" json:"datadog_service,omitempty"` + DataDogSite *string `url:"datadog_site,omitempty" json:"datadog_site,omitempty"` + DataDogTags *string `url:"datadog_tags,omitempty" json:"datadog_tags,omitempty"` + ArchiveTraceEvents *bool `url:"archive_trace_events,omitempty" json:"archive_trace_events,omitempty"` + DataDogCIVisibility *bool `url:"datadog_ci_visibility,omitempty" json:"datadog_ci_visibility,omitempty"` + UseInheritedSettings *bool `url:"use_inherited_settings,omitempty" json:"use_inherited_settings,omitempty"` } // SetDataDogService sets DataDog service settings for a project. @@ -325,7 +302,7 @@ func (s *ServicesService) SetDataDogService(pid any, opt *SetDataDogServiceOptio if err != nil { return nil, nil, err } - u := fmt.Sprintf("projects/%s/services/datadog", PathEscape(project)) + u := fmt.Sprintf("projects/%s/integrations/datadog", PathEscape(project)) req, err := s.client.NewRequest(http.MethodPut, u, opt, options) if err != nil { @@ -350,7 +327,7 @@ func (s *ServicesService) DeleteDataDogService(pid any, options ...RequestOption if err != nil { return nil, err } - u := fmt.Sprintf("projects/%s/services/datadog", PathEscape(project)) + u := fmt.Sprintf("projects/%s/integrations/datadog", PathEscape(project)) req, err := s.client.NewRequest(http.MethodDelete, u, nil, options) if err != nil { @@ -932,13 +909,7 @@ func (s *ServicesService) GetHarborService(pid any, options ...RequestOptionFunc // // GitLab API docs: // https://docs.gitlab.com/api/project_integrations/#set-up-harbor -type SetHarborServiceOptions struct { - URL *string `url:"url,omitempty" json:"url,omitempty"` - ProjectName *string `url:"project_name,omitempty" json:"project_name,omitempty"` - Username *string `url:"username,omitempty" json:"username,omitempty"` - Password *string `url:"password,omitempty" json:"password,omitempty"` - UseInheritedSettings *bool `url:"use_inherited_settings,omitempty" json:"use_inherited_settings,omitempty"` -} +type SetHarborServiceOptions = SetUpHarborOptions // SetHarborService sets Harbor service for a project. // diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/settings.go b/vendor/gitlab.com/gitlab-org/api/client-go/settings.go index 2f04c29b0c..9e79816953 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/settings.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/settings.go @@ -486,6 +486,7 @@ type Settings struct { UserEmailLookupLimit int `json:"user_email_lookup_limit"` } +// UnmarshalJSON implements the json.Unmarshaler interface. // Settings requires a custom unmarshaller in order to properly unmarshal // `container_registry_import_created_before` which is either a time.Time or // an empty string if no value is set. @@ -570,6 +571,7 @@ type UpdateSettingsOptions struct { BulkImportEnabled *bool `url:"bulk_import_enabled,omitempty" json:"bulk_import_enabled,omitempty"` BulkImportMaxDownloadFileSize *int `url:"bulk_import_max_download_file_size,omitempty" json:"bulk_import_max_download_file_size,omitempty"` CanCreateGroup *bool `url:"can_create_group,omitempty" json:"can_create_group,omitempty"` + CanCreateOrganization *bool `url:"can_create_organization,omitempty" json:"can_create_organization,omitempty"` CheckNamespacePlan *bool `url:"check_namespace_plan,omitempty" json:"check_namespace_plan,omitempty"` CIJobLiveTraceEnabled *bool `url:"ci_job_live_trace_enabled,omitempty" json:"ci_job_live_trace_enabled,omitempty"` CIMaxIncludes *int `url:"ci_max_includes,omitempty" json:"ci_max_includes,omitempty"` diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/tags.go b/vendor/gitlab.com/gitlab-org/api/client-go/tags.go index 43b0e37a20..aec5f3d6b3 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/tags.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/tags.go @@ -21,6 +21,7 @@ import ( "math/big" "net/http" "net/url" + "time" ) type ( @@ -53,6 +54,7 @@ type Tag struct { Message string `json:"message"` Protected bool `json:"protected"` Target string `json:"target"` + CreatedAt *time.Time `json:"created_at"` } // X509Signature represents a GitLab Tag Signature object. diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/terraform_states.go b/vendor/gitlab.com/gitlab-org/api/client-go/terraform_states.go index 0c4bea4066..1de1ba124e 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/terraform_states.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/terraform_states.go @@ -10,11 +10,12 @@ import ( type ( TerraformStatesServiceInterface interface { - List(projectFullPath string) ([]TerraformState, *Response, error) - Get(projectFullPath string, name string) (*TerraformState, *Response, error) + List(projectFullPath string, options ...RequestOptionFunc) ([]TerraformState, *Response, error) + Get(projectFullPath string, name string, options ...RequestOptionFunc) (*TerraformState, *Response, error) Download(pid any, name string, serial uint64, options ...RequestOptionFunc) (io.Reader, *Response, error) DownloadLatest(pid any, name string, options ...RequestOptionFunc) (io.Reader, *Response, error) Delete(pid any, name string, options ...RequestOptionFunc) (*Response, error) + DeleteVersion(pid any, name string, serial uint64, options ...RequestOptionFunc) (*Response, error) Lock(pid any, name string, options ...RequestOptionFunc) (*Response, error) Unlock(pid any, name string, options ...RequestOptionFunc) (*Response, error) } @@ -48,7 +49,7 @@ type TerraformStateVersion struct { } // List returns all Terraform states -func (s *TerraformStatesService) List(projectFullPath string) ([]TerraformState, *Response, error) { +func (s *TerraformStatesService) List(projectFullPath string, options ...RequestOptionFunc) ([]TerraformState, *Response, error) { query := GraphQLQuery{ Query: fmt.Sprintf(` query { @@ -82,7 +83,7 @@ func (s *TerraformStatesService) List(projectFullPath string) ([]TerraformState, } `json:"project"` } `json:"data"` } - resp, err := s.client.GraphQL.Do(query, &response) + resp, err := s.client.GraphQL.Do(query, &response, options...) if err != nil { return nil, resp, err } @@ -94,7 +95,7 @@ func (s *TerraformStatesService) List(projectFullPath string) ([]TerraformState, } // Get returns a single Terraform state -func (s *TerraformStatesService) Get(projectFullPath string, name string) (*TerraformState, *Response, error) { +func (s *TerraformStatesService) Get(projectFullPath string, name string, options ...RequestOptionFunc) (*TerraformState, *Response, error) { query := GraphQLQuery{ Query: fmt.Sprintf(` query { @@ -124,7 +125,7 @@ func (s *TerraformStatesService) Get(projectFullPath string, name string) (*Terr } `json:"project"` } `json:"data"` } - resp, err := s.client.GraphQL.Do(query, &response) + resp, err := s.client.GraphQL.Do(query, &response, options...) if err != nil { return nil, resp, err } @@ -195,6 +196,24 @@ func (s *TerraformStatesService) Delete(pid any, name string, options ...Request return s.client.Do(req, nil) } +// DeleteVersion deletes a single Terraform state version +// +// GitLab API docs: https://docs.gitlab.com/user/infrastructure/iac/terraform_state/ +func (s *TerraformStatesService) DeleteVersion(pid any, name string, serial uint64, options ...RequestOptionFunc) (*Response, error) { + project, err := parseID(pid) + if err != nil { + return nil, err + } + uri := fmt.Sprintf("projects/%s/terraform/state/%s/versions/%d", PathEscape(project), PathEscape(name), serial) + + req, err := s.client.NewRequest(http.MethodDelete, uri, nil, options) + if err != nil { + return nil, err + } + + return s.client.Do(req, nil) +} + // Lock locks a single Terraform state // // GitLab API docs: https://docs.gitlab.com/user/infrastructure/iac/terraform_state/ diff --git a/vendor/gitlab.com/gitlab-org/api/client-go/users.go b/vendor/gitlab.com/gitlab-org/api/client-go/users.go index 189431d54e..93c72216f2 100644 --- a/vendor/gitlab.com/gitlab-org/api/client-go/users.go +++ b/vendor/gitlab.com/gitlab-org/api/client-go/users.go @@ -114,6 +114,8 @@ var ( ErrUserRejectPrevented = errors.New("cannot reject a user if not authenticated as administrator") ErrUserTwoFactorNotEnabled = errors.New("cannot disable two factor authentication if not enabled") ErrUserUnblockPrevented = errors.New("cannot unblock a user that is blocked by LDAP synchronization") + + errUnexpectedResultCode = errors.New("received unexpected result code") ) // BasicUser included in other service responses (such as merge requests, pipelines, etc). @@ -169,6 +171,7 @@ type User struct { AvatarURL string `json:"avatar_url"` CanCreateGroup bool `json:"can_create_group"` CanCreateProject bool `json:"can_create_project"` + CanCreateOrganization bool `json:"can_create_organization"` ProjectsLimit int `json:"projects_limit"` CurrentSignInAt *time.Time `json:"current_sign_in_at"` CurrentSignInIP *net.IP `json:"current_sign_in_ip"` @@ -217,13 +220,14 @@ func (a *UserAvatar) MarshalJSON() ([]byte, error) { // GitLab API docs: https://docs.gitlab.com/api/users/#list-users type ListUsersOptions struct { ListOptions - Active *bool `url:"active,omitempty" json:"active,omitempty"` - Blocked *bool `url:"blocked,omitempty" json:"blocked,omitempty"` - Humans *bool `url:"humans,omitempty" json:"humans,omitempty"` - ExcludeInternal *bool `url:"exclude_internal,omitempty" json:"exclude_internal,omitempty"` - ExcludeActive *bool `url:"exclude_active,omitempty" json:"exclude_active,omitempty"` - ExcludeExternal *bool `url:"exclude_external,omitempty" json:"exclude_external,omitempty"` - ExcludeHumans *bool `url:"exclude_humans,omitempty" json:"exclude_humans,omitempty"` + Active *bool `url:"active,omitempty" json:"active,omitempty"` + Blocked *bool `url:"blocked,omitempty" json:"blocked,omitempty"` + Humans *bool `url:"humans,omitempty" json:"humans,omitempty"` + ExcludeInternal *bool `url:"exclude_internal,omitempty" json:"exclude_internal,omitempty"` + ExcludeActive *bool `url:"exclude_active,omitempty" json:"exclude_active,omitempty"` + ExcludeExternal *bool `url:"exclude_external,omitempty" json:"exclude_external,omitempty"` + ExcludeHumans *bool `url:"exclude_humans,omitempty" json:"exclude_humans,omitempty"` + PublicEmail *string `url:"public_email,omitempty" json:"public_email,omitempty"` // The options below are only available for admins. Search *string `url:"search,omitempty" json:"search,omitempty"` @@ -1111,7 +1115,7 @@ func (s *UsersService) BlockUser(user int, options ...RequestOptionFunc) error { case 404: return ErrUserNotFound default: - return fmt.Errorf("received unexpected result code: %d", resp.StatusCode) + return fmt.Errorf("%w: %d", errUnexpectedResultCode, resp.StatusCode) } } @@ -1139,7 +1143,7 @@ func (s *UsersService) UnblockUser(user int, options ...RequestOptionFunc) error case 404: return ErrUserNotFound default: - return fmt.Errorf("received unexpected result code: %d", resp.StatusCode) + return fmt.Errorf("%w: %d", errUnexpectedResultCode, resp.StatusCode) } } @@ -1165,7 +1169,7 @@ func (s *UsersService) BanUser(user int, options ...RequestOptionFunc) error { case 404: return ErrUserNotFound default: - return fmt.Errorf("received unexpected result code: %d", resp.StatusCode) + return fmt.Errorf("%w: %d", errUnexpectedResultCode, resp.StatusCode) } } @@ -1191,7 +1195,7 @@ func (s *UsersService) UnbanUser(user int, options ...RequestOptionFunc) error { case 404: return ErrUserNotFound default: - return fmt.Errorf("received unexpected result code: %d", resp.StatusCode) + return fmt.Errorf("%w: %d", errUnexpectedResultCode, resp.StatusCode) } } @@ -1219,7 +1223,7 @@ func (s *UsersService) DeactivateUser(user int, options ...RequestOptionFunc) er case 404: return ErrUserNotFound default: - return fmt.Errorf("received unexpected result code: %d", resp.StatusCode) + return fmt.Errorf("%w: %d", errUnexpectedResultCode, resp.StatusCode) } } @@ -1247,7 +1251,7 @@ func (s *UsersService) ActivateUser(user int, options ...RequestOptionFunc) erro case 404: return ErrUserNotFound default: - return fmt.Errorf("received unexpected result code: %d", resp.StatusCode) + return fmt.Errorf("%w: %d", errUnexpectedResultCode, resp.StatusCode) } } @@ -1275,7 +1279,7 @@ func (s *UsersService) ApproveUser(user int, options ...RequestOptionFunc) error case 404: return ErrUserNotFound default: - return fmt.Errorf("received unexpected result code: %d", resp.StatusCode) + return fmt.Errorf("%w: %d", errUnexpectedResultCode, resp.StatusCode) } } @@ -1305,7 +1309,7 @@ func (s *UsersService) RejectUser(user int, options ...RequestOptionFunc) error case 409: return ErrUserConflict default: - return fmt.Errorf("received unexpected result code: %d", resp.StatusCode) + return fmt.Errorf("%w: %d", errUnexpectedResultCode, resp.StatusCode) } } @@ -1595,7 +1599,7 @@ func (s *UsersService) DisableTwoFactor(user int, options ...RequestOptionFunc) case 404: return ErrUserNotFound default: - return fmt.Errorf("received unexpected result code: %d", resp.StatusCode) + return fmt.Errorf("%w: %d", errUnexpectedResultCode, resp.StatusCode) } } diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/LICENSE b/vendor/go.opentelemetry.io/contrib/detectors/gcp/LICENSE index 261eeb9e9f..f1aee0f110 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/LICENSE +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/LICENSE @@ -199,3 +199,33 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-function.go b/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-function.go index 0f0f68c0af..5208cbe39d 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-function.go +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-function.go @@ -10,7 +10,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" - semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + semconv "go.opentelemetry.io/otel/semconv/v1.37.0" ) const ( @@ -32,7 +32,7 @@ type cloudFunction struct { } // Detect detects associated resources when running in GCP Cloud Function. -func (f *cloudFunction) Detect(ctx context.Context) (*resource.Resource, error) { +func (f *cloudFunction) Detect(context.Context) (*resource.Resource, error) { functionName, ok := f.googleCloudFunctionName() if !ok { return nil, nil @@ -57,6 +57,6 @@ func (f *cloudFunction) Detect(ctx context.Context) (*resource.Resource, error) return resource.NewWithAttributes(semconv.SchemaURL, attributes...), nil } -func (f *cloudFunction) googleCloudFunctionName() (string, bool) { +func (*cloudFunction) googleCloudFunctionName() (string, bool) { return os.LookupEnv(gcpFunctionNameKey) } diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-run.go b/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-run.go index 8c2ce3e3ec..e6556255bc 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-run.go +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/cloud-run.go @@ -10,10 +10,9 @@ import ( "strings" "cloud.google.com/go/compute/metadata" - "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" - semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + semconv "go.opentelemetry.io/otel/semconv/v1.37.0" ) const serviceNamespace = "cloud-run-managed" @@ -64,7 +63,7 @@ func (c *CloudRun) cloudRegion() (string, error) { // NOTE: the service.namespace attribute is currently hardcoded to be // "cloud-run-managed". This may change in the future, please do not rely on // this behavior yet. -func (c *CloudRun) Detect(ctx context.Context) (*resource.Resource, error) { +func (c *CloudRun) Detect(context.Context) (*resource.Resource, error) { // .OnGCE is actually testing whether the metadata server is available. // Metadata server is supported on Cloud Run. if !c.onGCE() { diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/detector.go b/vendor/go.opentelemetry.io/contrib/detectors/gcp/detector.go index 4449a82133..b1305b4f14 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/detector.go +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/detector.go @@ -10,10 +10,9 @@ import ( "cloud.google.com/go/compute/metadata" "github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp" - "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" - semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + semconv "go.opentelemetry.io/otel/semconv/v1.37.0" ) // NewDetector returns a resource detector which detects resource attributes on: @@ -32,7 +31,7 @@ type detector struct { // Detect detects associated resources when running on GCE, GKE, GAE, // Cloud Run, and Cloud functions. -func (d *detector) Detect(ctx context.Context) (*resource.Resource, error) { +func (d *detector) Detect(context.Context) (*resource.Resource, error) { if !metadata.OnGCE() { return nil, nil } @@ -122,8 +121,11 @@ func (r *resourceBuilder) addInt(key attribute.Key, detect func() (string, error // zoneAndRegion functions are expected to return zone, region, err. func (r *resourceBuilder) addZoneAndRegion(detect func() (string, string, error)) { if zone, region, err := detect(); err == nil { - r.attrs = append(r.attrs, semconv.CloudAvailabilityZone(zone)) - r.attrs = append(r.attrs, semconv.CloudRegion(region)) + r.attrs = append( + r.attrs, + semconv.CloudAvailabilityZone(zone), + semconv.CloudRegion(region), + ) } else { r.errs = append(r.errs, err) } diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/gce.go b/vendor/go.opentelemetry.io/contrib/detectors/gcp/gce.go index e66b10f1e3..12f47052bc 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/gce.go +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/gce.go @@ -11,10 +11,9 @@ import ( "strings" "cloud.google.com/go/compute/metadata" - "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" - semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + semconv "go.opentelemetry.io/otel/semconv/v1.37.0" ) // GCE collects resource information of GCE computing instances. @@ -26,7 +25,7 @@ type GCE struct{} var _ resource.Detector = (*GCE)(nil) // Detect detects associated resources when running on GCE hosts. -func (gce *GCE) Detect(ctx context.Context) (*resource.Resource, error) { +func (*GCE) Detect(ctx context.Context) (*resource.Resource, error) { if !metadata.OnGCE() { return nil, nil } diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/gke.go b/vendor/go.opentelemetry.io/contrib/detectors/gcp/gke.go index be4b531726..752d7bd435 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/gke.go +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/gke.go @@ -9,10 +9,9 @@ import ( "os" "cloud.google.com/go/compute/metadata" - "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk/resource" - semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + semconv "go.opentelemetry.io/otel/semconv/v1.37.0" ) // GKE collects resource information of GKE computing instances. @@ -25,7 +24,7 @@ type GKE struct{} var _ resource.Detector = (*GKE)(nil) // Detect detects associated resources when running in GKE environment. -func (gke *GKE) Detect(ctx context.Context) (*resource.Resource, error) { +func (*GKE) Detect(ctx context.Context) (*resource.Resource, error) { gcpDetecor := GCE{} gceLablRes, err := gcpDetecor.Detect(ctx) diff --git a/vendor/go.opentelemetry.io/contrib/detectors/gcp/version.go b/vendor/go.opentelemetry.io/contrib/detectors/gcp/version.go index d1152ec458..db40666da2 100644 --- a/vendor/go.opentelemetry.io/contrib/detectors/gcp/version.go +++ b/vendor/go.opentelemetry.io/contrib/detectors/gcp/version.go @@ -5,7 +5,7 @@ package gcp // import "go.opentelemetry.io/contrib/detectors/gcp" // Version is the current release version of the GCP resource detector. func Version() string { - return "1.37.0" + return "1.38.0" // This string is updated by the pre_release.sh script during release } diff --git a/vendor/go.opentelemetry.io/otel/.codespellignore b/vendor/go.opentelemetry.io/otel/.codespellignore index 6bf3abc41e..2b53a25e1e 100644 --- a/vendor/go.opentelemetry.io/otel/.codespellignore +++ b/vendor/go.opentelemetry.io/otel/.codespellignore @@ -7,3 +7,4 @@ ans nam valu thirdparty +addOpt diff --git a/vendor/go.opentelemetry.io/otel/.golangci.yml b/vendor/go.opentelemetry.io/otel/.golangci.yml index 5f69cc027c..b01762ffcc 100644 --- a/vendor/go.opentelemetry.io/otel/.golangci.yml +++ b/vendor/go.opentelemetry.io/otel/.golangci.yml @@ -10,6 +10,7 @@ linters: - depguard - errcheck - errorlint + - gocritic - godot - gosec - govet @@ -86,6 +87,18 @@ linters: deny: - pkg: go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal desc: Do not use cross-module internal packages. + gocritic: + disabled-checks: + - appendAssign + - commentedOutCode + - dupArg + - hugeParam + - importShadow + - preferDecodeRune + - rangeValCopy + - unnamedResult + - whyNoLint + enable-all: true godot: exclude: # Exclude links. @@ -167,7 +180,10 @@ linters: - fmt.Print - fmt.Printf - fmt.Println + - name: unused-parameter + - name: unused-receiver - name: unnecessary-stmt + - name: use-any - name: useless-break - name: var-declaration - name: var-naming @@ -224,10 +240,6 @@ linters: - linters: - gosec text: 'G402: TLS MinVersion too low.' - paths: - - third_party$ - - builtin$ - - examples$ issues: max-issues-per-linter: 0 max-same-issues: 0 @@ -237,14 +249,12 @@ formatters: - goimports - golines settings: + gofumpt: + extra-rules: true goimports: local-prefixes: - - go.opentelemetry.io + - go.opentelemetry.io/otel golines: max-len: 120 exclusions: generated: lax - paths: - - third_party$ - - builtin$ - - examples$ diff --git a/vendor/go.opentelemetry.io/otel/.lycheeignore b/vendor/go.opentelemetry.io/otel/.lycheeignore index 40d62fa2eb..5328505888 100644 --- a/vendor/go.opentelemetry.io/otel/.lycheeignore +++ b/vendor/go.opentelemetry.io/otel/.lycheeignore @@ -2,5 +2,8 @@ http://localhost http://jaeger-collector https://github.com/open-telemetry/opentelemetry-go/milestone/ https://github.com/open-telemetry/opentelemetry-go/projects +# Weaver model URL for semantic-conventions repository. +https?:\/\/github\.com\/open-telemetry\/semantic-conventions\/archive\/refs\/tags\/[^.]+\.zip\[[^]]+] file:///home/runner/work/opentelemetry-go/opentelemetry-go/libraries file:///home/runner/work/opentelemetry-go/opentelemetry-go/manual +http://4.3.2.1:78/user/123 \ No newline at end of file diff --git a/vendor/go.opentelemetry.io/otel/CHANGELOG.md b/vendor/go.opentelemetry.io/otel/CHANGELOG.md index 4acc75701b..f3abcfdc2e 100644 --- a/vendor/go.opentelemetry.io/otel/CHANGELOG.md +++ b/vendor/go.opentelemetry.io/otel/CHANGELOG.md @@ -11,6 +11,93 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm +## [1.38.0/0.60.0/0.14.0/0.0.13] 2025-08-29 + +This release is the last to support [Go 1.23]. +The next release will require at least [Go 1.24]. + +### Added + +- Add native histogram exemplar support in `go.opentelemetry.io/otel/exporters/prometheus`. (#6772) +- Add template attribute functions to the `go.opentelmetry.io/otel/semconv/v1.34.0` package. (#6939) + - `ContainerLabel` + - `DBOperationParameter` + - `DBSystemParameter` + - `HTTPRequestHeader` + - `HTTPResponseHeader` + - `K8SCronJobAnnotation` + - `K8SCronJobLabel` + - `K8SDaemonSetAnnotation` + - `K8SDaemonSetLabel` + - `K8SDeploymentAnnotation` + - `K8SDeploymentLabel` + - `K8SJobAnnotation` + - `K8SJobLabel` + - `K8SNamespaceAnnotation` + - `K8SNamespaceLabel` + - `K8SNodeAnnotation` + - `K8SNodeLabel` + - `K8SPodAnnotation` + - `K8SPodLabel` + - `K8SReplicaSetAnnotation` + - `K8SReplicaSetLabel` + - `K8SStatefulSetAnnotation` + - `K8SStatefulSetLabel` + - `ProcessEnvironmentVariable` + - `RPCConnectRPCRequestMetadata` + - `RPCConnectRPCResponseMetadata` + - `RPCGRPCRequestMetadata` + - `RPCGRPCResponseMetadata` +- Add `ErrorType` attribute helper function to the `go.opentelmetry.io/otel/semconv/v1.34.0` package. (#6962) +- Add `WithAllowKeyDuplication` in `go.opentelemetry.io/otel/sdk/log` which can be used to disable deduplication for log records. (#6968) +- Add `WithCardinalityLimit` option to configure the cardinality limit in `go.opentelemetry.io/otel/sdk/metric`. (#6996, #7065, #7081, #7164, #7165, #7179) +- Add `Clone` method to `Record` in `go.opentelemetry.io/otel/log` that returns a copy of the record with no shared state. (#7001) +- Add experimental self-observability span and batch span processor metrics in `go.opentelemetry.io/otel/sdk/trace`. + Check the `go.opentelemetry.io/otel/sdk/trace/internal/x` package documentation for more information. (#7027, #6393, #7209) +- The `go.opentelemetry.io/otel/semconv/v1.36.0` package. + The package contains semantic conventions from the `v1.36.0` version of the OpenTelemetry Semantic Conventions. + See the [migration documentation](./semconv/v1.36.0/MIGRATION.md) for information on how to upgrade from `go.opentelemetry.io/otel/semconv/v1.34.0.`(#7032, #7041) +- Add support for configuring Prometheus name translation using `WithTranslationStrategy` option in `go.opentelemetry.io/otel/exporters/prometheus`. The current default translation strategy when UTF-8 mode is enabled is `NoUTF8EscapingWithSuffixes`, but a future release will change the default strategy to `UnderscoreEscapingWithSuffixes` for compliance with the specification. (#7111) +- Add experimental self-observability log metrics in `go.opentelemetry.io/otel/sdk/log`. + Check the `go.opentelemetry.io/otel/sdk/log/internal/x` package documentation for more information. (#7121) +- Add experimental self-observability trace exporter metrics in `go.opentelemetry.io/otel/exporters/stdout/stdouttrace`. + Check the `go.opentelemetry.io/otel/exporters/stdout/stdouttrace/internal/x` package documentation for more information. (#7133) +- Support testing of [Go 1.25]. (#7187) +- The `go.opentelemetry.io/otel/semconv/v1.37.0` package. + The package contains semantic conventions from the `v1.37.0` version of the OpenTelemetry Semantic Conventions. + See the [migration documentation](./semconv/v1.37.0/MIGRATION.md) for information on how to upgrade from `go.opentelemetry.io/otel/semconv/v1.36.0.`(#7254) + +### Changed + +- Optimize `TraceIDFromHex` and `SpanIDFromHex` in `go.opentelemetry.io/otel/sdk/trace`. (#6791) +- Change `AssertEqual` in `go.opentelemetry.io/otel/log/logtest` to accept `TestingT` in order to support benchmarks and fuzz tests. (#6908) +- Change `DefaultExemplarReservoirProviderSelector` in `go.opentelemetry.io/otel/sdk/metric` to use `runtime.GOMAXPROCS(0)` instead of `runtime.NumCPU()` for the `FixedSizeReservoirProvider` default size. (#7094) + +### Fixed + +- `SetBody` method of `Record` in `go.opentelemetry.io/otel/sdk/log` now deduplicates key-value collections (`log.Value` of `log.KindMap` from `go.opentelemetry.io/otel/log`). (#7002) +- Fix `go.opentelemetry.io/otel/exporters/prometheus` to not append a suffix if it's already present in metric name. (#7088) +- Fix the `go.opentelemetry.io/otel/exporters/stdout/stdouttrace` self-observability component type and name. (#7195) +- Fix partial export count metric in `go.opentelemetry.io/otel/exporters/stdout/stdouttrace`. (#7199) + +### Deprecated + +- Deprecate `WithoutUnits` and `WithoutCounterSuffixes` options, preferring `WithTranslationStrategy` instead. (#7111) +- Deprecate support for `OTEL_GO_X_CARDINALITY_LIMIT` environment variable in `go.opentelemetry.io/otel/sdk/metric`. Use `WithCardinalityLimit` option instead. (#7166) + +## [0.59.1] 2025-07-21 + +### Changed + +- Retract `v0.59.0` release of `go.opentelemetry.io/otel/exporters/prometheus` module which appends incorrect unit suffixes. (#7046) +- Change `go.opentelemetry.io/otel/exporters/prometheus` to no longer deduplicate suffixes when UTF8 is enabled. + It is recommended to disable unit and counter suffixes in the exporter, and manually add suffixes if you rely on the existing behavior. (#7044) + +### Fixed + +- Fix `go.opentelemetry.io/otel/exporters/prometheus` to properly handle unit suffixes when the unit is in brackets. + E.g. `{spans}`. (#7044) + ## [1.37.0/0.59.0/0.13.0] 2025-06-25 ### Added @@ -3343,7 +3430,8 @@ It contains api and sdk for trace and meter. - CircleCI build CI manifest files. - CODEOWNERS file to track owners of this project. -[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.37.0...HEAD +[Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.38.0...HEAD +[1.38.0/0.60.0/0.14.0/0.0.13]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.38.0 [1.37.0/0.59.0/0.13.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.37.0 [0.12.2]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/log/v0.12.2 [0.12.1]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/log/v0.12.1 @@ -3439,6 +3527,7 @@ It contains api and sdk for trace and meter. +[Go 1.25]: https://go.dev/doc/go1.25 [Go 1.24]: https://go.dev/doc/go1.24 [Go 1.23]: https://go.dev/doc/go1.23 [Go 1.22]: https://go.dev/doc/go1.22 diff --git a/vendor/go.opentelemetry.io/otel/CODEOWNERS b/vendor/go.opentelemetry.io/otel/CODEOWNERS index 945a07d2b0..26a03aed1d 100644 --- a/vendor/go.opentelemetry.io/otel/CODEOWNERS +++ b/vendor/go.opentelemetry.io/otel/CODEOWNERS @@ -12,6 +12,6 @@ # https://help.github.com/en/articles/about-code-owners # -* @MrAlias @XSAM @dashpole @pellared @dmathieu +* @MrAlias @XSAM @dashpole @pellared @dmathieu @flc1125 CODEOWNERS @MrAlias @pellared @dashpole @XSAM @dmathieu diff --git a/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md b/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md index f9ddc281fc..0b3ae855c1 100644 --- a/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md +++ b/vendor/go.opentelemetry.io/otel/CONTRIBUTING.md @@ -192,6 +192,35 @@ should have `go test -bench` output in their description. should have [`benchstat`](https://pkg.go.dev/golang.org/x/perf/cmd/benchstat) output in their description. +## Dependencies + +This project uses [Go Modules] for dependency management. All modules will use +`go.mod` to explicitly list all direct and indirect dependencies, ensuring a +clear dependency graph. The `go.sum` file for each module will be committed to +the repository and used to verify the integrity of downloaded modules, +preventing malicious tampering. + +This project uses automated dependency update tools (i.e. dependabot, +renovatebot) to manage updates to dependencies. This ensures that dependencies +are kept up-to-date with the latest security patches and features and are +reviewed before being merged. If you would like to propose a change to a +dependency it should be done through a pull request that updates the `go.mod` +file and includes a description of the change. + +See the [versioning and compatibility](./VERSIONING.md) policy for more details +about dependency compatibility. + +[Go Modules]: https://pkg.go.dev/cmd/go#hdr-Modules__module_versions__and_more + +### Environment Dependencies + +This project does not partition dependencies based on the environment (i.e. +`development`, `staging`, `production`). + +Only the dependencies explicitly included in the released modules have be +tested and verified to work with the released code. No other guarantee is made +about the compatibility of other dependencies. + ## Documentation Each (non-internal, non-test) package must be documented using @@ -233,6 +262,10 @@ For a non-comprehensive but foundational overview of these best practices the [Effective Go](https://golang.org/doc/effective_go.html) documentation is an excellent starting place. +We also recommend following the +[Go Code Review Comments](https://go.dev/wiki/CodeReviewComments) +that collects common comments made during reviews of Go code. + As a convenience for developers building this project the `make precommit` will format, lint, validate, and in some cases fix the changes you plan to submit. This check will need to pass for your changes to be able to be @@ -586,6 +619,10 @@ See also: ### Testing +We allow using [`testify`](https://github.com/stretchr/testify) even though +it is seen as non-idiomatic according to +the [Go Test Comments](https://go.dev/wiki/TestComments#assert-libraries) page. + The tests should never leak goroutines. Use the term `ConcurrentSafe` in the test name when it aims to verify the @@ -640,13 +677,6 @@ should be canceled. ## Approvers and Maintainers -### Triagers - -- [Alex Kats](https://github.com/akats7), Capital One -- [Cheng-Zhen Yang](https://github.com/scorpionknifes), Independent - -### Approvers - ### Maintainers - [Damien Mathieu](https://github.com/dmathieu), Elastic ([GPG](https://keys.openpgp.org/search?q=5A126B972A81A6CE443E5E1B408B8E44F0873832)) @@ -655,6 +685,21 @@ should be canceled. - [Sam Xie](https://github.com/XSAM), Splunk ([GPG](https://keys.openpgp.org/search?q=AEA033782371ABB18EE39188B8044925D6FEEBEA)) - [Tyler Yahn](https://github.com/MrAlias), Splunk ([GPG](https://keys.openpgp.org/search?q=0x46B0F3E1A8B1BA5A)) +For more information about the maintainer role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#maintainer). + +### Approvers + +- [Flc](https://github.com/flc1125), Independent + +For more information about the approver role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#approver). + +### Triagers + +- [Alex Kats](https://github.com/akats7), Capital One +- [Cheng-Zhen Yang](https://github.com/scorpionknifes), Independent + +For more information about the triager role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#triager). + ### Emeritus - [Aaron Clawson](https://github.com/MadVikingGod) @@ -665,6 +710,8 @@ should be canceled. - [Josh MacDonald](https://github.com/jmacd) - [Liz Fong-Jones](https://github.com/lizthegrey) +For more information about the emeritus role, see the [community repository](https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md#emeritus-maintainerapprovertriager). + ### Become an Approver or a Maintainer See the [community membership document in OpenTelemetry community diff --git a/vendor/go.opentelemetry.io/otel/LICENSE b/vendor/go.opentelemetry.io/otel/LICENSE index 261eeb9e9f..f1aee0f110 100644 --- a/vendor/go.opentelemetry.io/otel/LICENSE +++ b/vendor/go.opentelemetry.io/otel/LICENSE @@ -199,3 +199,33 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/go.opentelemetry.io/otel/Makefile b/vendor/go.opentelemetry.io/otel/Makefile index 4fa423ca02..bc0f1f92d1 100644 --- a/vendor/go.opentelemetry.io/otel/Makefile +++ b/vendor/go.opentelemetry.io/otel/Makefile @@ -34,9 +34,6 @@ $(TOOLS)/%: $(TOOLS_MOD_DIR)/go.mod | $(TOOLS) MULTIMOD = $(TOOLS)/multimod $(TOOLS)/multimod: PACKAGE=go.opentelemetry.io/build-tools/multimod -SEMCONVGEN = $(TOOLS)/semconvgen -$(TOOLS)/semconvgen: PACKAGE=go.opentelemetry.io/build-tools/semconvgen - CROSSLINK = $(TOOLS)/crosslink $(TOOLS)/crosslink: PACKAGE=go.opentelemetry.io/build-tools/crosslink @@ -71,7 +68,7 @@ GOVULNCHECK = $(TOOLS)/govulncheck $(TOOLS)/govulncheck: PACKAGE=golang.org/x/vuln/cmd/govulncheck .PHONY: tools -tools: $(CROSSLINK) $(GOLANGCI_LINT) $(MISSPELL) $(GOCOVMERGE) $(STRINGER) $(PORTO) $(SEMCONVGEN) $(VERIFYREADMES) $(MULTIMOD) $(SEMCONVKIT) $(GOTMPL) $(GORELEASE) +tools: $(CROSSLINK) $(GOLANGCI_LINT) $(MISSPELL) $(GOCOVMERGE) $(STRINGER) $(PORTO) $(VERIFYREADMES) $(MULTIMOD) $(SEMCONVKIT) $(GOTMPL) $(GORELEASE) # Virtualized python tools via docker @@ -284,7 +281,7 @@ semconv-generate: $(SEMCONVKIT) docker run --rm \ -u $(DOCKER_USER) \ --env HOME=/tmp/weaver \ - --mount 'type=bind,source=$(PWD)/semconv,target=/home/weaver/templates/registry/go,readonly' \ + --mount 'type=bind,source=$(PWD)/semconv/templates,target=/home/weaver/templates,readonly' \ --mount 'type=bind,source=$(PWD)/semconv/${TAG},target=/home/weaver/target' \ --mount 'type=bind,source=$(HOME)/.weaver,target=/tmp/weaver/.weaver' \ $(WEAVER_IMAGE) registry generate \ diff --git a/vendor/go.opentelemetry.io/otel/README.md b/vendor/go.opentelemetry.io/otel/README.md index 5fa1b75c60..6b7ab5f219 100644 --- a/vendor/go.opentelemetry.io/otel/README.md +++ b/vendor/go.opentelemetry.io/otel/README.md @@ -53,18 +53,25 @@ Currently, this project supports the following environments. | OS | Go Version | Architecture | |----------|------------|--------------| +| Ubuntu | 1.25 | amd64 | | Ubuntu | 1.24 | amd64 | | Ubuntu | 1.23 | amd64 | +| Ubuntu | 1.25 | 386 | | Ubuntu | 1.24 | 386 | | Ubuntu | 1.23 | 386 | +| Ubuntu | 1.25 | arm64 | | Ubuntu | 1.24 | arm64 | | Ubuntu | 1.23 | arm64 | +| macOS 13 | 1.25 | amd64 | | macOS 13 | 1.24 | amd64 | | macOS 13 | 1.23 | amd64 | +| macOS | 1.25 | arm64 | | macOS | 1.24 | arm64 | | macOS | 1.23 | arm64 | +| Windows | 1.25 | amd64 | | Windows | 1.24 | amd64 | | Windows | 1.23 | amd64 | +| Windows | 1.25 | 386 | | Windows | 1.24 | 386 | | Windows | 1.23 | 386 | diff --git a/vendor/go.opentelemetry.io/otel/SECURITY-INSIGHTS.yml b/vendor/go.opentelemetry.io/otel/SECURITY-INSIGHTS.yml new file mode 100644 index 0000000000..8041fc62e4 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/SECURITY-INSIGHTS.yml @@ -0,0 +1,203 @@ +header: + schema-version: "1.0.0" + expiration-date: "2026-08-04T00:00:00.000Z" + last-updated: "2025-08-04" + last-reviewed: "2025-08-04" + commit-hash: 69e81088ad40f45a0764597326722dea8f3f00a8 + project-url: https://github.com/open-telemetry/opentelemetry-go + project-release: "v1.37.0" + changelog: https://github.com/open-telemetry/opentelemetry-go/blob/69e81088ad40f45a0764597326722dea8f3f00a8/CHANGELOG.md + license: https://github.com/open-telemetry/opentelemetry-go/blob/69e81088ad40f45a0764597326722dea8f3f00a8/LICENSE + +project-lifecycle: + status: active + bug-fixes-only: false + core-maintainers: + - https://github.com/dmathieu + - https://github.com/dashpole + - https://github.com/pellared + - https://github.com/XSAM + - https://github.com/MrAlias + release-process: | + See https://github.com/open-telemetry/opentelemetry-go/blob/69e81088ad40f45a0764597326722dea8f3f00a8/RELEASING.md + +contribution-policy: + accepts-pull-requests: true + accepts-automated-pull-requests: true + automated-tools-list: + - automated-tool: dependabot + action: allowed + comment: Automated dependency updates are accepted. + - automated-tool: renovatebot + action: allowed + comment: Automated dependency updates are accepted. + - automated-tool: opentelemetrybot + action: allowed + comment: Automated OpenTelemetry actions are accepted. + contributing-policy: https://github.com/open-telemetry/opentelemetry-go/blob/69e81088ad40f45a0764597326722dea8f3f00a8/CONTRIBUTING.md + code-of-conduct: https://github.com/open-telemetry/.github/blob/ffa15f76b65ec7bcc41f6a0b277edbb74f832206/CODE_OF_CONDUCT.md + +documentation: + - https://pkg.go.dev/go.opentelemetry.io/otel + - https://opentelemetry.io/docs/instrumentation/go/ + +distribution-points: + - pkg:golang/go.opentelemetry.io/otel + - pkg:golang/go.opentelemetry.io/otel/bridge/opencensus + - pkg:golang/go.opentelemetry.io/otel/bridge/opencensus/test + - pkg:golang/go.opentelemetry.io/otel/bridge/opentracing + - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc + - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp + - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlptrace + - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc + - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp + - pkg:golang/go.opentelemetry.io/otel/exporters/stdout/stdoutmetric + - pkg:golang/go.opentelemetry.io/otel/exporters/stdout/stdouttrace + - pkg:golang/go.opentelemetry.io/otel/exporters/zipkin + - pkg:golang/go.opentelemetry.io/otel/metric + - pkg:golang/go.opentelemetry.io/otel/sdk + - pkg:golang/go.opentelemetry.io/otel/sdk/metric + - pkg:golang/go.opentelemetry.io/otel/trace + - pkg:golang/go.opentelemetry.io/otel/exporters/prometheus + - pkg:golang/go.opentelemetry.io/otel/log + - pkg:golang/go.opentelemetry.io/otel/log/logtest + - pkg:golang/go.opentelemetry.io/otel/sdk/log + - pkg:golang/go.opentelemetry.io/otel/sdk/log/logtest + - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc + - pkg:golang/go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp + - pkg:golang/go.opentelemetry.io/otel/exporters/stdout/stdoutlog + - pkg:golang/go.opentelemetry.io/otel/schema + +security-artifacts: + threat-model: + threat-model-created: false + comment: | + No formal threat model created yet. + self-assessment: + self-assessment-created: false + comment: | + No formal self-assessment yet. + +security-testing: + - tool-type: sca + tool-name: Dependabot + tool-version: latest + tool-url: https://github.com/dependabot + tool-rulesets: + - built-in + integration: + ad-hoc: false + ci: true + before-release: true + comment: | + Automated dependency updates. + - tool-type: sast + tool-name: golangci-lint + tool-version: latest + tool-url: https://github.com/golangci/golangci-lint + tool-rulesets: + - built-in + integration: + ad-hoc: false + ci: true + before-release: true + comment: | + Static analysis in CI. + - tool-type: fuzzing + tool-name: OSS-Fuzz + tool-version: latest + tool-url: https://github.com/google/oss-fuzz + tool-rulesets: + - default + integration: + ad-hoc: false + ci: false + before-release: false + comment: | + OpenTelemetry Go is integrated with OSS-Fuzz for continuous fuzz testing. See https://github.com/google/oss-fuzz/tree/f0f9b221190c6063a773bea606d192ebfc3d00cf/projects/opentelemetry-go for more details. + - tool-type: sast + tool-name: CodeQL + tool-version: latest + tool-url: https://github.com/github/codeql + tool-rulesets: + - default + integration: + ad-hoc: false + ci: true + before-release: true + comment: | + CodeQL static analysis is run in CI for all commits and pull requests to detect security vulnerabilities in the Go source code. See https://github.com/open-telemetry/opentelemetry-go/blob/d5b5b059849720144a03ca5c87561bfbdb940119/.github/workflows/codeql-analysis.yml for workflow details. + - tool-type: sca + tool-name: govulncheck + tool-version: latest + tool-url: https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck + tool-rulesets: + - default + integration: + ad-hoc: false + ci: true + before-release: true + comment: | + govulncheck is run in CI to detect known vulnerabilities in Go modules and code paths. See https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/.github/workflows/ci.yml for workflow configuration. + +security-assessments: + - auditor-name: 7ASecurity + auditor-url: https://7asecurity.com + auditor-report: https://7asecurity.com/reports/pentest-report-opentelemetry.pdf + report-year: 2023 + comment: | + This independent penetration test by 7ASecurity covered OpenTelemetry repositories including opentelemetry-go. The assessment focused on codebase review, threat modeling, and vulnerability identification. See the report for details of findings and recommendations applicable to opentelemetry-go. No critical vulnerabilities were found for this repository. + +security-contacts: + - type: email + value: cncf-opentelemetry-security@lists.cncf.io + primary: true + - type: website + value: https://github.com/open-telemetry/opentelemetry-go/security/policy + primary: false + +vulnerability-reporting: + accepts-vulnerability-reports: true + email-contact: cncf-opentelemetry-security@lists.cncf.io + security-policy: https://github.com/open-telemetry/opentelemetry-go/security/policy + comment: | + Security issues should be reported via email or GitHub security policy page. + +dependencies: + third-party-packages: true + dependencies-lists: + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/bridge/opencensus/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/bridge/opencensus/test/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/bridge/opentracing/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlplog/otlploggrpc/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlplog/otlploghttp/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlpmetric/otlpmetricgrpc/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlpmetric/otlpmetrichttp/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlptrace/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlptrace/otlptracegrpc/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/otlp/otlptrace/otlptracehttp/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/prometheus/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/stdout/stdoutlog/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/stdout/stdoutmetric/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/stdout/stdouttrace/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/exporters/zipkin/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/internal/tools/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/log/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/log/logtest/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/metric/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/schema/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/sdk/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/sdk/log/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/sdk/log/logtest/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/sdk/metric/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/trace/go.mod + - https://github.com/open-telemetry/opentelemetry-go/blob/v1.37.0/trace/internal/telemetry/test/go.mod + dependencies-lifecycle: + policy-url: https://github.com/open-telemetry/opentelemetry-go/blob/69e81088ad40f45a0764597326722dea8f3f00a8/CONTRIBUTING.md + comment: | + Dependency lifecycle managed via go.mod and renovatebot. + env-dependencies-policy: + policy-url: https://github.com/open-telemetry/opentelemetry-go/blob/69e81088ad40f45a0764597326722dea8f3f00a8/CONTRIBUTING.md + comment: | + See contributing policy for environment usage. diff --git a/vendor/go.opentelemetry.io/otel/attribute/encoder.go b/vendor/go.opentelemetry.io/otel/attribute/encoder.go index 318e42fcab..6333d34b31 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/encoder.go +++ b/vendor/go.opentelemetry.io/otel/attribute/encoder.go @@ -78,7 +78,7 @@ func DefaultEncoder() Encoder { defaultEncoderOnce.Do(func() { defaultEncoderInstance = &defaultAttrEncoder{ pool: sync.Pool{ - New: func() interface{} { + New: func() any { return &bytes.Buffer{} }, }, @@ -96,11 +96,11 @@ func (d *defaultAttrEncoder) Encode(iter Iterator) string { for iter.Next() { i, keyValue := iter.IndexedAttribute() if i > 0 { - _, _ = buf.WriteRune(',') + _ = buf.WriteByte(',') } copyAndEscape(buf, string(keyValue.Key)) - _, _ = buf.WriteRune('=') + _ = buf.WriteByte('=') if keyValue.Value.Type() == STRING { copyAndEscape(buf, keyValue.Value.AsString()) @@ -122,14 +122,14 @@ func copyAndEscape(buf *bytes.Buffer, val string) { for _, ch := range val { switch ch { case '=', ',', escapeChar: - _, _ = buf.WriteRune(escapeChar) + _ = buf.WriteByte(escapeChar) } _, _ = buf.WriteRune(ch) } } -// Valid returns true if this encoder ID was allocated by -// `NewEncoderID`. Invalid encoder IDs will not be cached. +// Valid reports whether this encoder ID was allocated by +// [NewEncoderID]. Invalid encoder IDs will not be cached. func (id EncoderID) Valid() bool { return id.value != 0 } diff --git a/vendor/go.opentelemetry.io/otel/attribute/filter.go b/vendor/go.opentelemetry.io/otel/attribute/filter.go index 3eeaa5d442..624ebbe381 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/filter.go +++ b/vendor/go.opentelemetry.io/otel/attribute/filter.go @@ -15,8 +15,8 @@ type Filter func(KeyValue) bool // // If keys is empty a deny-all filter is returned. func NewAllowKeysFilter(keys ...Key) Filter { - if len(keys) <= 0 { - return func(kv KeyValue) bool { return false } + if len(keys) == 0 { + return func(KeyValue) bool { return false } } allowed := make(map[Key]struct{}, len(keys)) @@ -34,8 +34,8 @@ func NewAllowKeysFilter(keys ...Key) Filter { // // If keys is empty an allow-all filter is returned. func NewDenyKeysFilter(keys ...Key) Filter { - if len(keys) <= 0 { - return func(kv KeyValue) bool { return true } + if len(keys) == 0 { + return func(KeyValue) bool { return true } } forbid := make(map[Key]struct{}, len(keys)) diff --git a/vendor/go.opentelemetry.io/otel/attribute/internal/attribute.go b/vendor/go.opentelemetry.io/otel/attribute/internal/attribute.go index b76d2bbfdb..0875504302 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/internal/attribute.go +++ b/vendor/go.opentelemetry.io/otel/attribute/internal/attribute.go @@ -12,7 +12,7 @@ import ( ) // BoolSliceValue converts a bool slice into an array with same elements as slice. -func BoolSliceValue(v []bool) interface{} { +func BoolSliceValue(v []bool) any { var zero bool cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem() reflect.Copy(cp, reflect.ValueOf(v)) @@ -20,7 +20,7 @@ func BoolSliceValue(v []bool) interface{} { } // Int64SliceValue converts an int64 slice into an array with same elements as slice. -func Int64SliceValue(v []int64) interface{} { +func Int64SliceValue(v []int64) any { var zero int64 cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem() reflect.Copy(cp, reflect.ValueOf(v)) @@ -28,7 +28,7 @@ func Int64SliceValue(v []int64) interface{} { } // Float64SliceValue converts a float64 slice into an array with same elements as slice. -func Float64SliceValue(v []float64) interface{} { +func Float64SliceValue(v []float64) any { var zero float64 cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem() reflect.Copy(cp, reflect.ValueOf(v)) @@ -36,7 +36,7 @@ func Float64SliceValue(v []float64) interface{} { } // StringSliceValue converts a string slice into an array with same elements as slice. -func StringSliceValue(v []string) interface{} { +func StringSliceValue(v []string) any { var zero string cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem() reflect.Copy(cp, reflect.ValueOf(v)) @@ -44,7 +44,7 @@ func StringSliceValue(v []string) interface{} { } // AsBoolSlice converts a bool array into a slice into with same elements as array. -func AsBoolSlice(v interface{}) []bool { +func AsBoolSlice(v any) []bool { rv := reflect.ValueOf(v) if rv.Type().Kind() != reflect.Array { return nil @@ -57,7 +57,7 @@ func AsBoolSlice(v interface{}) []bool { } // AsInt64Slice converts an int64 array into a slice into with same elements as array. -func AsInt64Slice(v interface{}) []int64 { +func AsInt64Slice(v any) []int64 { rv := reflect.ValueOf(v) if rv.Type().Kind() != reflect.Array { return nil @@ -70,7 +70,7 @@ func AsInt64Slice(v interface{}) []int64 { } // AsFloat64Slice converts a float64 array into a slice into with same elements as array. -func AsFloat64Slice(v interface{}) []float64 { +func AsFloat64Slice(v any) []float64 { rv := reflect.ValueOf(v) if rv.Type().Kind() != reflect.Array { return nil @@ -83,7 +83,7 @@ func AsFloat64Slice(v interface{}) []float64 { } // AsStringSlice converts a string array into a slice into with same elements as array. -func AsStringSlice(v interface{}) []string { +func AsStringSlice(v any) []string { rv := reflect.ValueOf(v) if rv.Type().Kind() != reflect.Array { return nil diff --git a/vendor/go.opentelemetry.io/otel/attribute/iterator.go b/vendor/go.opentelemetry.io/otel/attribute/iterator.go index f2ba89ce4b..8df6249f02 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/iterator.go +++ b/vendor/go.opentelemetry.io/otel/attribute/iterator.go @@ -25,8 +25,8 @@ type oneIterator struct { attr KeyValue } -// Next moves the iterator to the next position. Returns false if there are no -// more attributes. +// Next moves the iterator to the next position. +// Next reports whether there are more attributes. func (i *Iterator) Next() bool { i.idx++ return i.idx < i.Len() @@ -106,7 +106,8 @@ func (oi *oneIterator) advance() { } } -// Next returns true if there is another attribute available. +// Next moves the iterator to the next position. +// Next reports whether there is another attribute available. func (m *MergeIterator) Next() bool { if m.one.done && m.two.done { return false diff --git a/vendor/go.opentelemetry.io/otel/attribute/key.go b/vendor/go.opentelemetry.io/otel/attribute/key.go index d9a22c6502..80a9e5643f 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/key.go +++ b/vendor/go.opentelemetry.io/otel/attribute/key.go @@ -117,7 +117,7 @@ func (k Key) StringSlice(v []string) KeyValue { } } -// Defined returns true for non-empty keys. +// Defined reports whether the key is not empty. func (k Key) Defined() bool { return len(k) != 0 } diff --git a/vendor/go.opentelemetry.io/otel/attribute/kv.go b/vendor/go.opentelemetry.io/otel/attribute/kv.go index 3028f9a40f..8c6928ca79 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/kv.go +++ b/vendor/go.opentelemetry.io/otel/attribute/kv.go @@ -13,7 +13,7 @@ type KeyValue struct { Value Value } -// Valid returns if kv is a valid OpenTelemetry attribute. +// Valid reports whether kv is a valid OpenTelemetry attribute. func (kv KeyValue) Valid() bool { return kv.Key.Defined() && kv.Value.Type() != INVALID } diff --git a/vendor/go.opentelemetry.io/otel/attribute/set.go b/vendor/go.opentelemetry.io/otel/attribute/set.go index 6cbefceadf..64735d382e 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/set.go +++ b/vendor/go.opentelemetry.io/otel/attribute/set.go @@ -31,11 +31,11 @@ type ( // Distinct is a unique identifier of a Set. // - // Distinct is designed to be ensures equivalence stability: comparisons - // will return the save value across versions. For this reason, Distinct - // should always be used as a map key instead of a Set. + // Distinct is designed to ensure equivalence stability: comparisons will + // return the same value across versions. For this reason, Distinct should + // always be used as a map key instead of a Set. Distinct struct { - iface interface{} + iface any } // Sortable implements sort.Interface, used for sorting KeyValue. @@ -70,7 +70,7 @@ func (d Distinct) reflectValue() reflect.Value { return reflect.ValueOf(d.iface) } -// Valid returns true if this value refers to a valid Set. +// Valid reports whether this value refers to a valid Set. func (d Distinct) Valid() bool { return d.iface != nil } @@ -120,7 +120,7 @@ func (l *Set) Value(k Key) (Value, bool) { return Value{}, false } -// HasValue tests whether a key is defined in this set. +// HasValue reports whether a key is defined in this set. func (l *Set) HasValue(k Key) bool { if l == nil { return false @@ -155,7 +155,7 @@ func (l *Set) Equivalent() Distinct { return l.equivalent } -// Equals returns true if the argument set is equivalent to this set. +// Equals reports whether the argument set is equivalent to this set. func (l *Set) Equals(o *Set) bool { return l.Equivalent() == o.Equivalent() } @@ -344,7 +344,7 @@ func computeDistinct(kvs []KeyValue) Distinct { // computeDistinctFixed computes a Distinct for small slices. It returns nil // if the input is too large for this code path. -func computeDistinctFixed(kvs []KeyValue) interface{} { +func computeDistinctFixed(kvs []KeyValue) any { switch len(kvs) { case 1: return [1]KeyValue(kvs) @@ -373,7 +373,7 @@ func computeDistinctFixed(kvs []KeyValue) interface{} { // computeDistinctReflect computes a Distinct using reflection, works for any // size input. -func computeDistinctReflect(kvs []KeyValue) interface{} { +func computeDistinctReflect(kvs []KeyValue) any { at := reflect.New(reflect.ArrayOf(len(kvs), keyValueType)).Elem() for i, keyValue := range kvs { *(at.Index(i).Addr().Interface().(*KeyValue)) = keyValue @@ -387,7 +387,7 @@ func (l *Set) MarshalJSON() ([]byte, error) { } // MarshalLog is the marshaling function used by the logging system to represent this Set. -func (l Set) MarshalLog() interface{} { +func (l Set) MarshalLog() any { kvs := make(map[string]string) for _, kv := range l.ToSlice() { kvs[string(kv.Key)] = kv.Value.Emit() diff --git a/vendor/go.opentelemetry.io/otel/attribute/value.go b/vendor/go.opentelemetry.io/otel/attribute/value.go index 817eecacf1..653c33a861 100644 --- a/vendor/go.opentelemetry.io/otel/attribute/value.go +++ b/vendor/go.opentelemetry.io/otel/attribute/value.go @@ -22,7 +22,7 @@ type Value struct { vtype Type numeric uint64 stringly string - slice interface{} + slice any } const ( @@ -199,8 +199,8 @@ func (v Value) asStringSlice() []string { type unknownValueType struct{} -// AsInterface returns Value's data as interface{}. -func (v Value) AsInterface() interface{} { +// AsInterface returns Value's data as any. +func (v Value) AsInterface() any { switch v.Type() { case BOOL: return v.AsBool() @@ -262,7 +262,7 @@ func (v Value) Emit() string { func (v Value) MarshalJSON() ([]byte, error) { var jsonVal struct { Type string - Value interface{} + Value any } jsonVal.Type = v.Type().String() jsonVal.Value = v.AsInterface() diff --git a/vendor/go.opentelemetry.io/otel/baggage/baggage.go b/vendor/go.opentelemetry.io/otel/baggage/baggage.go index 0e1fe24220..f83a448ec6 100644 --- a/vendor/go.opentelemetry.io/otel/baggage/baggage.go +++ b/vendor/go.opentelemetry.io/otel/baggage/baggage.go @@ -812,7 +812,7 @@ var safeKeyCharset = [utf8.RuneSelf]bool{ // validateBaggageName checks if the string is a valid OpenTelemetry Baggage name. // Baggage name is a valid, non-empty UTF-8 string. func validateBaggageName(s string) bool { - if len(s) == 0 { + if s == "" { return false } @@ -828,7 +828,7 @@ func validateBaggageValue(s string) bool { // validateKey checks if the string is a valid W3C Baggage key. func validateKey(s string) bool { - if len(s) == 0 { + if s == "" { return false } diff --git a/vendor/go.opentelemetry.io/otel/codes/codes.go b/vendor/go.opentelemetry.io/otel/codes/codes.go index 49a35b1225..d48847ed86 100644 --- a/vendor/go.opentelemetry.io/otel/codes/codes.go +++ b/vendor/go.opentelemetry.io/otel/codes/codes.go @@ -67,7 +67,7 @@ func (c *Code) UnmarshalJSON(b []byte) error { return errors.New("nil receiver passed to UnmarshalJSON") } - var x interface{} + var x any if err := json.Unmarshal(b, &x); err != nil { return err } @@ -102,5 +102,5 @@ func (c *Code) MarshalJSON() ([]byte, error) { if !ok { return nil, fmt.Errorf("invalid code: %d", *c) } - return []byte(fmt.Sprintf("%q", str)), nil + return fmt.Appendf(nil, "%q", str), nil } diff --git a/vendor/go.opentelemetry.io/otel/dependencies.Dockerfile b/vendor/go.opentelemetry.io/otel/dependencies.Dockerfile index 935bd48763..a311fbb483 100644 --- a/vendor/go.opentelemetry.io/otel/dependencies.Dockerfile +++ b/vendor/go.opentelemetry.io/otel/dependencies.Dockerfile @@ -1,4 +1,4 @@ # This is a renovate-friendly source of Docker images. -FROM python:3.13.5-slim-bullseye@sha256:5b9fc0d8ef79cfb5f300e61cb516e0c668067bbf77646762c38c94107e230dbc AS python -FROM otel/weaver:v0.15.2@sha256:b13acea09f721774daba36344861f689ac4bb8d6ecd94c4600b4d590c8fb34b9 AS weaver +FROM python:3.13.6-slim-bullseye@sha256:e98b521460ee75bca92175c16247bdf7275637a8faaeb2bcfa19d879ae5c4b9a AS python +FROM otel/weaver:v0.17.1@sha256:32523b5e44fb44418786347e9f7dde187d8797adb6d57a2ee99c245346c3cdfe AS weaver FROM avtodev/markdown-lint:v1@sha256:6aeedc2f49138ce7a1cd0adffc1b1c0321b841dc2102408967d9301c031949ee AS markdown diff --git a/vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go b/vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go index adbca7d347..86d7f4ba08 100644 --- a/vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go +++ b/vendor/go.opentelemetry.io/otel/internal/global/internal_logging.go @@ -41,22 +41,22 @@ func GetLogger() logr.Logger { // Info prints messages about the general state of the API or SDK. // This should usually be less than 5 messages a minute. -func Info(msg string, keysAndValues ...interface{}) { +func Info(msg string, keysAndValues ...any) { GetLogger().V(4).Info(msg, keysAndValues...) } // Error prints messages about exceptional states of the API or SDK. -func Error(err error, msg string, keysAndValues ...interface{}) { +func Error(err error, msg string, keysAndValues ...any) { GetLogger().Error(err, msg, keysAndValues...) } // Debug prints messages about all internal changes in the API or SDK. -func Debug(msg string, keysAndValues ...interface{}) { +func Debug(msg string, keysAndValues ...any) { GetLogger().V(8).Info(msg, keysAndValues...) } // Warn prints messages about warnings in the API or SDK. // Not an error but is likely more important than an informational event. -func Warn(msg string, keysAndValues ...interface{}) { +func Warn(msg string, keysAndValues ...any) { GetLogger().V(1).Info(msg, keysAndValues...) } diff --git a/vendor/go.opentelemetry.io/otel/internal/global/trace.go b/vendor/go.opentelemetry.io/otel/internal/global/trace.go index 49e4ac4faa..bf5cf3119b 100644 --- a/vendor/go.opentelemetry.io/otel/internal/global/trace.go +++ b/vendor/go.opentelemetry.io/otel/internal/global/trace.go @@ -26,6 +26,7 @@ import ( "sync/atomic" "go.opentelemetry.io/auto/sdk" + "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/trace" diff --git a/vendor/go.opentelemetry.io/otel/metric/LICENSE b/vendor/go.opentelemetry.io/otel/metric/LICENSE index 261eeb9e9f..f1aee0f110 100644 --- a/vendor/go.opentelemetry.io/otel/metric/LICENSE +++ b/vendor/go.opentelemetry.io/otel/metric/LICENSE @@ -199,3 +199,33 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/go.opentelemetry.io/otel/propagation/baggage.go b/vendor/go.opentelemetry.io/otel/propagation/baggage.go index ebda5026d6..0518826020 100644 --- a/vendor/go.opentelemetry.io/otel/propagation/baggage.go +++ b/vendor/go.opentelemetry.io/otel/propagation/baggage.go @@ -20,7 +20,7 @@ type Baggage struct{} var _ TextMapPropagator = Baggage{} // Inject sets baggage key-values from ctx into the carrier. -func (b Baggage) Inject(ctx context.Context, carrier TextMapCarrier) { +func (Baggage) Inject(ctx context.Context, carrier TextMapCarrier) { bStr := baggage.FromContext(ctx).String() if bStr != "" { carrier.Set(baggageHeader, bStr) @@ -30,7 +30,7 @@ func (b Baggage) Inject(ctx context.Context, carrier TextMapCarrier) { // Extract returns a copy of parent with the baggage from the carrier added. // If carrier implements [ValuesGetter] (e.g. [HeaderCarrier]), Values is invoked // for multiple values extraction. Otherwise, Get is called. -func (b Baggage) Extract(parent context.Context, carrier TextMapCarrier) context.Context { +func (Baggage) Extract(parent context.Context, carrier TextMapCarrier) context.Context { if multiCarrier, ok := carrier.(ValuesGetter); ok { return extractMultiBaggage(parent, multiCarrier) } @@ -38,7 +38,7 @@ func (b Baggage) Extract(parent context.Context, carrier TextMapCarrier) context } // Fields returns the keys who's values are set with Inject. -func (b Baggage) Fields() []string { +func (Baggage) Fields() []string { return []string{baggageHeader} } diff --git a/vendor/go.opentelemetry.io/otel/propagation/propagation.go b/vendor/go.opentelemetry.io/otel/propagation/propagation.go index 5c8c26ea2e..0a32c59aa3 100644 --- a/vendor/go.opentelemetry.io/otel/propagation/propagation.go +++ b/vendor/go.opentelemetry.io/otel/propagation/propagation.go @@ -20,7 +20,7 @@ type TextMapCarrier interface { // must never be done outside of a new major release. // Set stores the key-value pair. - Set(key string, value string) + Set(key, value string) // DO NOT CHANGE: any modification will not be backwards compatible and // must never be done outside of a new major release. @@ -88,7 +88,7 @@ func (hc HeaderCarrier) Values(key string) []string { } // Set stores the key-value pair. -func (hc HeaderCarrier) Set(key string, value string) { +func (hc HeaderCarrier) Set(key, value string) { http.Header(hc).Set(key, value) } diff --git a/vendor/go.opentelemetry.io/otel/propagation/trace_context.go b/vendor/go.opentelemetry.io/otel/propagation/trace_context.go index 6870e316dc..6692d2665d 100644 --- a/vendor/go.opentelemetry.io/otel/propagation/trace_context.go +++ b/vendor/go.opentelemetry.io/otel/propagation/trace_context.go @@ -36,7 +36,7 @@ var ( ) // Inject injects the trace context from ctx into carrier. -func (tc TraceContext) Inject(ctx context.Context, carrier TextMapCarrier) { +func (TraceContext) Inject(ctx context.Context, carrier TextMapCarrier) { sc := trace.SpanContextFromContext(ctx) if !sc.IsValid() { return @@ -77,7 +77,7 @@ func (tc TraceContext) Extract(ctx context.Context, carrier TextMapCarrier) cont return trace.ContextWithRemoteSpanContext(ctx, sc) } -func (tc TraceContext) extract(carrier TextMapCarrier) trace.SpanContext { +func (TraceContext) extract(carrier TextMapCarrier) trace.SpanContext { h := carrier.Get(traceparentHeader) if h == "" { return trace.SpanContext{} @@ -151,6 +151,6 @@ func extractPart(dst []byte, h *string, n int) bool { } // Fields returns the keys who's values are set with Inject. -func (tc TraceContext) Fields() []string { +func (TraceContext) Fields() []string { return []string{traceparentHeader, tracestateHeader} } diff --git a/vendor/go.opentelemetry.io/otel/sdk/LICENSE b/vendor/go.opentelemetry.io/otel/sdk/LICENSE index 261eeb9e9f..f1aee0f110 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/LICENSE +++ b/vendor/go.opentelemetry.io/otel/sdk/LICENSE @@ -199,3 +199,33 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go b/vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go index 68d296cbed..1be472e917 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go +++ b/vendor/go.opentelemetry.io/otel/sdk/internal/x/x.go @@ -19,7 +19,7 @@ import ( // to the case-insensitive string value of "true" (i.e. "True" and "TRUE" // will also enable this). var Resource = newFeature("RESOURCE", func(v string) (string, bool) { - if strings.ToLower(v) == "true" { + if strings.EqualFold(v, "true") { return v, true } return "", false @@ -59,7 +59,7 @@ func (f Feature[T]) Lookup() (v T, ok bool) { return f.parse(vRaw) } -// Enabled returns if the feature is enabled. +// Enabled reports whether the feature is enabled. func (f Feature[T]) Enabled() bool { _, ok := f.Lookup() return ok diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/LICENSE b/vendor/go.opentelemetry.io/otel/sdk/metric/LICENSE index 261eeb9e9f..f1aee0f110 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/LICENSE +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/LICENSE @@ -199,3 +199,33 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/config.go b/vendor/go.opentelemetry.io/otel/sdk/metric/config.go index 203cd9d650..c6440a1346 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/config.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/config.go @@ -7,6 +7,7 @@ import ( "context" "errors" "os" + "strconv" "strings" "sync" @@ -17,12 +18,15 @@ import ( // config contains configuration options for a MeterProvider. type config struct { - res *resource.Resource - readers []Reader - views []View - exemplarFilter exemplar.Filter + res *resource.Resource + readers []Reader + views []View + exemplarFilter exemplar.Filter + cardinalityLimit int } +const defaultCardinalityLimit = 0 + // readerSignals returns a force-flush and shutdown function for a // MeterProvider to call in their respective options. All Readers c contains // will have their force-flush and shutdown methods unified into returned @@ -69,8 +73,9 @@ func unifyShutdown(funcs []func(context.Context) error) func(context.Context) er // newConfig returns a config configured with options. func newConfig(options []Option) config { conf := config{ - res: resource.Default(), - exemplarFilter: exemplar.TraceBasedFilter, + res: resource.Default(), + exemplarFilter: exemplar.TraceBasedFilter, + cardinalityLimit: cardinalityLimitFromEnv(), } for _, o := range meterProviderOptionsFromEnv() { conf = o.apply(conf) @@ -155,6 +160,21 @@ func WithExemplarFilter(filter exemplar.Filter) Option { }) } +// WithCardinalityLimit sets the cardinality limit for the MeterProvider. +// +// The cardinality limit is the hard limit on the number of metric datapoints +// that can be collected for a single instrument in a single collect cycle. +// +// Setting this to a zero or negative value means no limit is applied. +func WithCardinalityLimit(limit int) Option { + // For backward compatibility, the environment variable `OTEL_GO_X_CARDINALITY_LIMIT` + // can also be used to set this value. + return optionFunc(func(cfg config) config { + cfg.cardinalityLimit = limit + return cfg + }) +} + func meterProviderOptionsFromEnv() []Option { var opts []Option // https://github.com/open-telemetry/opentelemetry-specification/blob/d4b241f451674e8f611bb589477680341006ad2b/specification/configuration/sdk-environment-variables.md#exemplar @@ -170,3 +190,17 @@ func meterProviderOptionsFromEnv() []Option { } return opts } + +func cardinalityLimitFromEnv() int { + const cardinalityLimitKey = "OTEL_GO_X_CARDINALITY_LIMIT" + v := strings.TrimSpace(os.Getenv(cardinalityLimitKey)) + if v == "" { + return defaultCardinalityLimit + } + n, err := strconv.Atoi(v) + if err != nil { + otel.Handle(err) + return defaultCardinalityLimit + } + return n +} diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/doc.go b/vendor/go.opentelemetry.io/otel/sdk/metric/doc.go index 90a4ae16c1..0f3b9d623f 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/doc.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/doc.go @@ -39,6 +39,30 @@ // Meter.RegisterCallback and Registration.Unregister to add and remove // callbacks without leaking memory. // +// # Cardinality Limits +// +// Cardinality refers to the number of unique attributes collected. High cardinality can lead to +// excessive memory usage, increased storage costs, and backend performance issues. +// +// Currently, the OpenTelemetry Go Metric SDK does not enforce a cardinality limit by default +// (note that this may change in a future release). Use [WithCardinalityLimit] to set the +// cardinality limit as desired. +// +// New attribute sets are dropped when the cardinality limit is reached. The measurement of +// these sets are aggregated into +// a special attribute set containing attribute.Bool("otel.metric.overflow", true). +// This ensures total metric values (e.g., Sum, Count) remain correct for the +// collection cycle, but information about the specific dropped sets +// is not preserved. +// +// Recommendations: +// +// - Set the limit based on the theoretical maximum combinations or expected +// active combinations. The OpenTelemetry Specification recommends a default of 2000. +// - A too high of a limit increases worst-case memory overhead in the SDK and may cause downstream +// issues for databases that cannot handle high cardinality. +// - A too low of a limit causes loss of attribute detail as more data falls into overflow. +// // See [go.opentelemetry.io/otel/metric] for more information about // the metric API. // diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.go index 549d3bd5f9..38b8745e67 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar.go @@ -58,10 +58,7 @@ func DefaultExemplarReservoirProviderSelector(agg Aggregation) exemplar.Reservoi // SimpleFixedSizeExemplarReservoir with a reservoir equal to the // smaller of the maximum number of buckets configured on the // aggregation or twenty (e.g. min(20, max_buckets)). - n = int(a.MaxSize) - if n > 20 { - n = 20 - } + n = min(int(a.MaxSize), 20) } else { // https://github.com/open-telemetry/opentelemetry-specification/blob/e94af89e3d0c01de30127a0f423e912f6cda7bed/specification/metrics/sdk.md#simplefixedsizeexemplarreservoir // This Exemplar reservoir MAY take a configuration parameter for @@ -69,11 +66,11 @@ func DefaultExemplarReservoirProviderSelector(agg Aggregation) exemplar.Reservoi // provided, the default size MAY be the number of possible // concurrent threads (e.g. number of CPUs) to help reduce // contention. Otherwise, a default size of 1 SHOULD be used. - n = runtime.NumCPU() - if n < 1 { - // Should never be the case, but be defensive. - n = 1 - } + // + // Use runtime.GOMAXPROCS instead of runtime.NumCPU to support + // containerized environments that may have less than the total number + // of logical CPUs available on the local machine allocated to it. + n = max(runtime.GOMAXPROCS(0), 1) } return exemplar.FixedSizeReservoirProvider(n) diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/filter.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/filter.go index b595e2acef..b50f5c1531 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/filter.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/filter.go @@ -24,11 +24,11 @@ func TraceBasedFilter(ctx context.Context) bool { } // AlwaysOnFilter is a [Filter] that always offers measurements. -func AlwaysOnFilter(ctx context.Context) bool { +func AlwaysOnFilter(context.Context) bool { return true } // AlwaysOffFilter is a [Filter] that never offers measurements. -func AlwaysOffFilter(ctx context.Context) bool { +func AlwaysOffFilter(context.Context) bool { return false } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.go index 1fb1e0095f..08e8f68fe7 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/fixed_size_reservoir.go @@ -14,7 +14,7 @@ import ( // FixedSizeReservoirProvider returns a provider of [FixedSizeReservoir]. func FixedSizeReservoirProvider(k int) ReservoirProvider { - return func(_ attribute.Set) Reservoir { + return func(attribute.Set) Reservoir { return NewFixedSizeReservoir(k) } } @@ -56,7 +56,7 @@ func newFixedSizeReservoir(s *storage) *FixedSizeReservoir { // randomFloat64 returns, as a float64, a uniform pseudo-random number in the // open interval (0.0,1.0). -func (r *FixedSizeReservoir) randomFloat64() float64 { +func (*FixedSizeReservoir) randomFloat64() float64 { // TODO: Use an algorithm that avoids rejection sampling. For example: // // const precision = 1 << 53 // 2^53 @@ -125,13 +125,11 @@ func (r *FixedSizeReservoir) Offer(ctx context.Context, t time.Time, n Value, a if int(r.count) < cap(r.store) { r.store[r.count] = newMeasurement(ctx, t, n, a) - } else { - if r.count == r.next { - // Overwrite a random existing measurement with the one offered. - idx := int(rand.Int64N(int64(cap(r.store)))) - r.store[idx] = newMeasurement(ctx, t, n, a) - r.advance() - } + } else if r.count == r.next { + // Overwrite a random existing measurement with the one offered. + idx := int(rand.Int64N(int64(cap(r.store)))) + r.store[idx] = newMeasurement(ctx, t, n, a) + r.advance() } r.count++ } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/histogram_reservoir.go b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/histogram_reservoir.go index 3b76cf305a..decab613e7 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/histogram_reservoir.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/exemplar/histogram_reservoir.go @@ -16,7 +16,7 @@ import ( func HistogramReservoirProvider(bounds []float64) ReservoirProvider { cp := slices.Clone(bounds) slices.Sort(cp) - return func(_ attribute.Set) Reservoir { + return func(attribute.Set) Reservoir { return NewHistogramReservoir(cp) } } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/instrument.go b/vendor/go.opentelemetry.io/otel/sdk/metric/instrument.go index 18891ed5b1..63cccc508f 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/instrument.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/instrument.go @@ -75,7 +75,7 @@ type Instrument struct { nonComparable // nolint: unused } -// IsEmpty returns if all Instrument fields are their zero-value. +// IsEmpty reports whether all Instrument fields are their zero-value. func (i Instrument) IsEmpty() bool { return i.Name == "" && i.Description == "" && @@ -204,7 +204,7 @@ func (i *int64Inst) Record(ctx context.Context, val int64, opts ...metric.Record i.aggregate(ctx, val, c.Attributes()) } -func (i *int64Inst) Enabled(_ context.Context) bool { +func (i *int64Inst) Enabled(context.Context) bool { return len(i.measures) != 0 } @@ -245,7 +245,7 @@ func (i *float64Inst) Record(ctx context.Context, val float64, opts ...metric.Re i.aggregate(ctx, val, c.Attributes()) } -func (i *float64Inst) Enabled(_ context.Context) bool { +func (i *float64Inst) Enabled(context.Context) bool { return len(i.measures) != 0 } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/drop.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/drop.go index 8396faaa4a..129920cbdd 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/drop.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/drop.go @@ -18,10 +18,10 @@ func dropReservoir[N int64 | float64](attribute.Set) FilteredExemplarReservoir[N type dropRes[N int64 | float64] struct{} // Offer does nothing, all measurements offered will be dropped. -func (r *dropRes[N]) Offer(context.Context, N, []attribute.KeyValue) {} +func (*dropRes[N]) Offer(context.Context, N, []attribute.KeyValue) {} // Collect resets dest. No exemplars will ever be returned. -func (r *dropRes[N]) Collect(dest *[]exemplar.Exemplar) { +func (*dropRes[N]) Collect(dest *[]exemplar.Exemplar) { clear(*dest) // Erase elements to let GC collect objects *dest = (*dest)[:0] } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.go index ae1f593440..857eddf305 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/exponential_histogram.go @@ -183,8 +183,8 @@ func (p *expoHistogramDataPoint[N]) scaleChange(bin, startBin int32, length int) var count int32 for high-low >= p.maxSize { - low = low >> 1 - high = high >> 1 + low >>= 1 + high >>= 1 count++ if count > expoMaxScale-expoMinScale { return count @@ -225,7 +225,7 @@ func (b *expoBuckets) record(bin int32) { b.counts = append(b.counts, make([]uint64, newLength-len(b.counts))...) } - copy(b.counts[shift:origLen+int(shift)], b.counts[:]) + copy(b.counts[shift:origLen+int(shift)], b.counts) b.counts = b.counts[:newLength] for i := 1; i < int(shift); i++ { b.counts[i] = 0 @@ -264,7 +264,7 @@ func (b *expoBuckets) downscale(delta int32) { // new Counts: [4, 14, 30, 10] if len(b.counts) <= 1 || delta < 1 { - b.startBin = b.startBin >> delta + b.startBin >>= delta return } @@ -282,7 +282,7 @@ func (b *expoBuckets) downscale(delta int32) { lastIdx := (len(b.counts) - 1 + int(offset)) / int(steps) b.counts = b.counts[:lastIdx+1] - b.startBin = b.startBin >> delta + b.startBin >>= delta } // newExponentialHistogram returns an Aggregator that summarizes a set of @@ -350,7 +350,9 @@ func (e *expoHistogram[N]) measure( v.res.Offer(ctx, value, droppedAttr) } -func (e *expoHistogram[N]) delta(dest *metricdata.Aggregation) int { +func (e *expoHistogram[N]) delta( + dest *metricdata.Aggregation, //nolint:gocritic // The pointer is needed for the ComputeAggregation interface +) int { t := now() // If *dest is not a metricdata.ExponentialHistogram, memory reuse is missed. @@ -411,7 +413,9 @@ func (e *expoHistogram[N]) delta(dest *metricdata.Aggregation) int { return n } -func (e *expoHistogram[N]) cumulative(dest *metricdata.Aggregation) int { +func (e *expoHistogram[N]) cumulative( + dest *metricdata.Aggregation, //nolint:gocritic // The pointer is needed for the ComputeAggregation interface +) int { t := now() // If *dest is not a metricdata.ExponentialHistogram, memory reuse is missed. diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.go index d3068484cf..736287e736 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/histogram.go @@ -140,7 +140,9 @@ type histogram[N int64 | float64] struct { start time.Time } -func (s *histogram[N]) delta(dest *metricdata.Aggregation) int { +func (s *histogram[N]) delta( + dest *metricdata.Aggregation, //nolint:gocritic // The pointer is needed for the ComputeAggregation interface +) int { t := now() // If *dest is not a metricdata.Histogram, memory reuse is missed. In that @@ -190,7 +192,9 @@ func (s *histogram[N]) delta(dest *metricdata.Aggregation) int { return n } -func (s *histogram[N]) cumulative(dest *metricdata.Aggregation) int { +func (s *histogram[N]) cumulative( + dest *metricdata.Aggregation, //nolint:gocritic // The pointer is needed for the ComputeAggregation interface +) int { t := now() // If *dest is not a metricdata.Histogram, memory reuse is missed. In that diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.go index 350ccebdcb..4bbe624c77 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/lastvalue.go @@ -55,7 +55,9 @@ func (s *lastValue[N]) measure(ctx context.Context, value N, fltrAttr attribute. s.values[attr.Equivalent()] = d } -func (s *lastValue[N]) delta(dest *metricdata.Aggregation) int { +func (s *lastValue[N]) delta( + dest *metricdata.Aggregation, //nolint:gocritic // The pointer is needed for the ComputeAggregation interface +) int { t := now() // Ignore if dest is not a metricdata.Gauge. The chance for memory reuse of // the DataPoints is missed (better luck next time). @@ -75,7 +77,9 @@ func (s *lastValue[N]) delta(dest *metricdata.Aggregation) int { return n } -func (s *lastValue[N]) cumulative(dest *metricdata.Aggregation) int { +func (s *lastValue[N]) cumulative( + dest *metricdata.Aggregation, //nolint:gocritic // The pointer is needed for the ComputeAggregation interface +) int { t := now() // Ignore if dest is not a metricdata.Gauge. The chance for memory reuse of // the DataPoints is missed (better luck next time). @@ -126,7 +130,9 @@ type precomputedLastValue[N int64 | float64] struct { *lastValue[N] } -func (s *precomputedLastValue[N]) delta(dest *metricdata.Aggregation) int { +func (s *precomputedLastValue[N]) delta( + dest *metricdata.Aggregation, //nolint:gocritic // The pointer is needed for the ComputeAggregation interface +) int { t := now() // Ignore if dest is not a metricdata.Gauge. The chance for memory reuse of // the DataPoints is missed (better luck next time). @@ -146,7 +152,9 @@ func (s *precomputedLastValue[N]) delta(dest *metricdata.Aggregation) int { return n } -func (s *precomputedLastValue[N]) cumulative(dest *metricdata.Aggregation) int { +func (s *precomputedLastValue[N]) cumulative( + dest *metricdata.Aggregation, //nolint:gocritic // The pointer is needed for the ComputeAggregation interface +) int { t := now() // Ignore if dest is not a metricdata.Gauge. The chance for memory reuse of // the DataPoints is missed (better luck next time). diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.go index 612cde4327..1b4b2304c0 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/aggregate/sum.go @@ -70,7 +70,9 @@ type sum[N int64 | float64] struct { start time.Time } -func (s *sum[N]) delta(dest *metricdata.Aggregation) int { +func (s *sum[N]) delta( + dest *metricdata.Aggregation, //nolint:gocritic // The pointer is needed for the ComputeAggregation interface +) int { t := now() // If *dest is not a metricdata.Sum, memory reuse is missed. In that case, @@ -105,7 +107,9 @@ func (s *sum[N]) delta(dest *metricdata.Aggregation) int { return n } -func (s *sum[N]) cumulative(dest *metricdata.Aggregation) int { +func (s *sum[N]) cumulative( + dest *metricdata.Aggregation, //nolint:gocritic // The pointer is needed for the ComputeAggregation interface +) int { t := now() // If *dest is not a metricdata.Sum, memory reuse is missed. In that case, @@ -165,7 +169,9 @@ type precomputedSum[N int64 | float64] struct { reported map[attribute.Distinct]N } -func (s *precomputedSum[N]) delta(dest *metricdata.Aggregation) int { +func (s *precomputedSum[N]) delta( + dest *metricdata.Aggregation, //nolint:gocritic // The pointer is needed for the ComputeAggregation interface +) int { t := now() newReported := make(map[attribute.Distinct]N) @@ -206,7 +212,9 @@ func (s *precomputedSum[N]) delta(dest *metricdata.Aggregation) int { return n } -func (s *precomputedSum[N]) cumulative(dest *metricdata.Aggregation) int { +func (s *precomputedSum[N]) cumulative( + dest *metricdata.Aggregation, //nolint:gocritic // The pointer is needed for the ComputeAggregation interface +) int { t := now() // If *dest is not a metricdata.Sum, memory reuse is missed. In that case, diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/README.md b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/README.md index 59f736b733..be0714a5f4 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/README.md +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/README.md @@ -1,47 +1,16 @@ # Experimental Features -The metric SDK contains features that have not yet stabilized in the OpenTelemetry specification. -These features are added to the OpenTelemetry Go metric SDK prior to stabilization in the specification so that users can start experimenting with them and provide feedback. +The Metric SDK contains features that have not yet stabilized in the OpenTelemetry specification. +These features are added to the OpenTelemetry Go Metric SDK prior to stabilization in the specification so that users can start experimenting with them and provide feedback. These feature may change in backwards incompatible ways as feedback is applied. See the [Compatibility and Stability](#compatibility-and-stability) section for more information. ## Features -- [Cardinality Limit](#cardinality-limit) - [Exemplars](#exemplars) - [Instrument Enabled](#instrument-enabled) -### Cardinality Limit - -The cardinality limit is the hard limit on the number of metric streams that can be collected for a single instrument. - -This experimental feature can be enabled by setting the `OTEL_GO_X_CARDINALITY_LIMIT` environment value. -The value must be an integer value. -All other values are ignored. - -If the value set is less than or equal to `0`, no limit will be applied. - -#### Examples - -Set the cardinality limit to 2000. - -```console -export OTEL_GO_X_CARDINALITY_LIMIT=2000 -``` - -Set an infinite cardinality limit (functionally equivalent to disabling the feature). - -```console -export OTEL_GO_X_CARDINALITY_LIMIT=-1 -``` - -Disable the cardinality limit. - -```console -unset OTEL_GO_X_CARDINALITY_LIMIT -``` - ### Exemplars A sample of measurements made may be exported directly as a set of exemplars. diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/x.go b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/x.go index a98606238a..294dcf8469 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/x.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/internal/x/x.go @@ -10,25 +10,8 @@ package x // import "go.opentelemetry.io/otel/sdk/metric/internal/x" import ( "context" "os" - "strconv" ) -// CardinalityLimit is an experimental feature flag that defines if -// cardinality limits should be applied to the recorded metric data-points. -// -// To enable this feature set the OTEL_GO_X_CARDINALITY_LIMIT environment -// variable to the integer limit value you want to use. -// -// Setting OTEL_GO_X_CARDINALITY_LIMIT to a value less than or equal to 0 -// will disable the cardinality limits. -var CardinalityLimit = newFeature("CARDINALITY_LIMIT", func(v string) (int, bool) { - n, err := strconv.Atoi(v) - if err != nil { - return 0, false - } - return n, true -}) - // Feature is an experimental feature control flag. It provides a uniform way // to interact with these feature flags and parse their values. type Feature[T any] struct { @@ -36,6 +19,7 @@ type Feature[T any] struct { parse func(v string) (T, bool) } +//nolint:unused func newFeature[T any](suffix string, parse func(string) (T, bool)) Feature[T] { const envKeyRoot = "OTEL_GO_X_" return Feature[T]{ @@ -63,7 +47,7 @@ func (f Feature[T]) Lookup() (v T, ok bool) { return f.parse(vRaw) } -// Enabled returns if the feature is enabled. +// Enabled reports whether the feature is enabled. func (f Feature[T]) Enabled() bool { _, ok := f.Lookup() return ok @@ -73,7 +57,7 @@ func (f Feature[T]) Enabled() bool { // // EnabledInstrument interface is implemented by synchronous instruments. type EnabledInstrument interface { - // Enabled returns whether the instrument will process measurements for the given context. + // Enabled reports whether the instrument will process measurements for the given context. // // This function can be used in places where measuring an instrument // would result in computationally expensive operations. diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.go b/vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.go index 96e7790866..85d3dc2076 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/manual_reader.go @@ -129,7 +129,7 @@ func (mr *ManualReader) Collect(ctx context.Context, rm *metricdata.ResourceMetr } // MarshalLog returns logging data about the ManualReader. -func (r *ManualReader) MarshalLog() interface{} { +func (r *ManualReader) MarshalLog() any { r.mu.Lock() down := r.isShutdown r.mu.Unlock() diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/meter.go b/vendor/go.opentelemetry.io/otel/sdk/metric/meter.go index c500fd9f2a..e0a1e90e77 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/meter.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/meter.go @@ -12,7 +12,6 @@ import ( "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/metric/embedded" "go.opentelemetry.io/otel/sdk/instrumentation" - "go.opentelemetry.io/otel/sdk/metric/internal/aggregate" ) @@ -423,7 +422,7 @@ func (m *meter) Float64ObservableGauge( } func validateInstrumentName(name string) error { - if len(name) == 0 { + if name == "" { return fmt.Errorf("%w: %s: is empty", ErrInstrumentName, name) } if len(name) > 255 { diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.go b/vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.go index 0a48aed74d..f08c771a68 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/periodic_reader.go @@ -114,7 +114,7 @@ func NewPeriodicReader(exporter Exporter, options ...PeriodicReaderOption) *Peri cancel: cancel, done: make(chan struct{}), rmPool: sync.Pool{ - New: func() interface{} { + New: func() any { return &metricdata.ResourceMetrics{} }, }, @@ -234,7 +234,7 @@ func (r *PeriodicReader) Collect(ctx context.Context, rm *metricdata.ResourceMet } // collect unwraps p as a produceHolder and returns its produce results. -func (r *PeriodicReader) collect(ctx context.Context, p interface{}, rm *metricdata.ResourceMetrics) error { +func (r *PeriodicReader) collect(ctx context.Context, p any, rm *metricdata.ResourceMetrics) error { if p == nil { return ErrReaderNotRegistered } @@ -349,7 +349,7 @@ func (r *PeriodicReader) Shutdown(ctx context.Context) error { } // MarshalLog returns logging data about the PeriodicReader. -func (r *PeriodicReader) MarshalLog() interface{} { +func (r *PeriodicReader) MarshalLog() any { r.mu.Lock() down := r.isShutdown r.mu.Unlock() diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.go b/vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.go index 7bdb699cae..408fddc8d4 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/pipeline.go @@ -17,7 +17,6 @@ import ( "go.opentelemetry.io/otel/sdk/metric/exemplar" "go.opentelemetry.io/otel/sdk/metric/internal" "go.opentelemetry.io/otel/sdk/metric/internal/aggregate" - "go.opentelemetry.io/otel/sdk/metric/internal/x" "go.opentelemetry.io/otel/sdk/metric/metricdata" "go.opentelemetry.io/otel/sdk/resource" ) @@ -37,17 +36,24 @@ type instrumentSync struct { compAgg aggregate.ComputeAggregation } -func newPipeline(res *resource.Resource, reader Reader, views []View, exemplarFilter exemplar.Filter) *pipeline { +func newPipeline( + res *resource.Resource, + reader Reader, + views []View, + exemplarFilter exemplar.Filter, + cardinalityLimit int, +) *pipeline { if res == nil { res = resource.Empty() } return &pipeline{ - resource: res, - reader: reader, - views: views, - int64Measures: map[observableID[int64]][]aggregate.Measure[int64]{}, - float64Measures: map[observableID[float64]][]aggregate.Measure[float64]{}, - exemplarFilter: exemplarFilter, + resource: res, + reader: reader, + views: views, + int64Measures: map[observableID[int64]][]aggregate.Measure[int64]{}, + float64Measures: map[observableID[float64]][]aggregate.Measure[float64]{}, + exemplarFilter: exemplarFilter, + cardinalityLimit: cardinalityLimit, // aggregations is lazy allocated when needed. } } @@ -65,12 +71,13 @@ type pipeline struct { views []View sync.Mutex - int64Measures map[observableID[int64]][]aggregate.Measure[int64] - float64Measures map[observableID[float64]][]aggregate.Measure[float64] - aggregations map[instrumentation.Scope][]instrumentSync - callbacks []func(context.Context) error - multiCallbacks list.List - exemplarFilter exemplar.Filter + int64Measures map[observableID[int64]][]aggregate.Measure[int64] + float64Measures map[observableID[float64]][]aggregate.Measure[float64] + aggregations map[instrumentation.Scope][]instrumentSync + callbacks []func(context.Context) error + multiCallbacks list.List + exemplarFilter exemplar.Filter + cardinalityLimit int } // addInt64Measure adds a new int64 measure to the pipeline for each observer. @@ -388,10 +395,9 @@ func (i *inserter[N]) cachedAggregator( b.Filter = stream.AttributeFilter // A value less than or equal to zero will disable the aggregation // limits for the builder (an all the created aggregates). - // CardinalityLimit.Lookup returns 0 by default if unset (or + // cardinalityLimit will be 0 by default if unset (or // unrecognized input). Use that value directly. - b.AggregationLimit, _ = x.CardinalityLimit.Lookup() - + b.AggregationLimit = i.pipeline.cardinalityLimit in, out, err := i.aggregateFunc(b, stream.Aggregation, kind) if err != nil { return aggVal[N]{0, nil, err} @@ -426,7 +432,7 @@ func (i *inserter[N]) logConflict(id instID) { } const msg = "duplicate metric stream definitions" - args := []interface{}{ + args := []any{ "names", fmt.Sprintf("%q, %q", existing.Name, id.Name), "descriptions", fmt.Sprintf("%q, %q", existing.Description, id.Description), "kinds", fmt.Sprintf("%s, %s", existing.Kind, id.Kind), @@ -460,7 +466,7 @@ func (i *inserter[N]) logConflict(id instID) { global.Warn(msg, args...) } -func (i *inserter[N]) instID(kind InstrumentKind, stream Stream) instID { +func (*inserter[N]) instID(kind InstrumentKind, stream Stream) instID { var zero N return instID{ Name: stream.Name, @@ -590,10 +596,16 @@ func isAggregatorCompatible(kind InstrumentKind, agg Aggregation) error { // measurement. type pipelines []*pipeline -func newPipelines(res *resource.Resource, readers []Reader, views []View, exemplarFilter exemplar.Filter) pipelines { +func newPipelines( + res *resource.Resource, + readers []Reader, + views []View, + exemplarFilter exemplar.Filter, + cardinalityLimit int, +) pipelines { pipes := make([]*pipeline, 0, len(readers)) for _, r := range readers { - p := newPipeline(res, r, views, exemplarFilter) + p := newPipeline(res, r, views, exemplarFilter, cardinalityLimit) r.register(p) pipes = append(pipes, p) } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/provider.go b/vendor/go.opentelemetry.io/otel/sdk/metric/provider.go index 2fca89e5a8..b0a6ec5808 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/provider.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/provider.go @@ -42,7 +42,7 @@ func NewMeterProvider(options ...Option) *MeterProvider { flush, sdown := conf.readerSignals() mp := &MeterProvider{ - pipes: newPipelines(conf.res, conf.readers, conf.views, conf.exemplarFilter), + pipes: newPipelines(conf.res, conf.readers, conf.views, conf.exemplarFilter, conf.cardinalityLimit), forceFlush: flush, shutdown: sdown, } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go b/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go index c96e500a2b..5c1cea8254 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go @@ -117,7 +117,7 @@ type produceHolder struct { type shutdownProducer struct{} // produce returns an ErrReaderShutdown error. -func (p shutdownProducer) produce(context.Context, *metricdata.ResourceMetrics) error { +func (shutdownProducer) produce(context.Context, *metricdata.ResourceMetrics) error { return ErrReaderShutdown } diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/version.go b/vendor/go.opentelemetry.io/otel/sdk/metric/version.go index 0e5adc1a76..dd9051a76c 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/metric/version.go +++ b/vendor/go.opentelemetry.io/otel/sdk/metric/version.go @@ -5,5 +5,5 @@ package metric // import "go.opentelemetry.io/otel/sdk/metric" // version is the current release version of the metric SDK in use. func version() string { - return "1.37.0" + return "1.38.0" } diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go b/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go index cefe4ab914..3f20eb7a56 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/builtin.go @@ -13,7 +13,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/sdk" - semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + semconv "go.opentelemetry.io/otel/semconv/v1.37.0" ) type ( @@ -72,7 +72,7 @@ func StringDetector(schemaURL string, k attribute.Key, f func() (string, error)) // Detect returns a *Resource that describes the string as a value // corresponding to attribute.Key as well as the specific schemaURL. -func (sd stringDetector) Detect(ctx context.Context) (*Resource, error) { +func (sd stringDetector) Detect(context.Context) (*Resource, error) { value, err := sd.F() if err != nil { return nil, fmt.Errorf("%s: %w", string(sd.K), err) diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/container.go b/vendor/go.opentelemetry.io/otel/sdk/resource/container.go index 0d8619715e..bbe142d203 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/container.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/container.go @@ -11,7 +11,7 @@ import ( "os" "regexp" - semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + semconv "go.opentelemetry.io/otel/semconv/v1.37.0" ) type containerIDProvider func() (string, error) @@ -27,7 +27,7 @@ const cgroupPath = "/proc/self/cgroup" // Detect returns a *Resource that describes the id of the container. // If no container id found, an empty resource will be returned. -func (cgroupContainerIDDetector) Detect(ctx context.Context) (*Resource, error) { +func (cgroupContainerIDDetector) Detect(context.Context) (*Resource, error) { containerID, err := containerID() if err != nil { return nil, err diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/env.go b/vendor/go.opentelemetry.io/otel/sdk/resource/env.go index 16a062ad8c..4a1b017eea 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/env.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/env.go @@ -12,7 +12,7 @@ import ( "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" - semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + semconv "go.opentelemetry.io/otel/semconv/v1.37.0" ) const ( diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go index 7819039238..5fed33d4fb 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/host_id.go @@ -8,7 +8,7 @@ import ( "errors" "strings" - semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + semconv "go.opentelemetry.io/otel/semconv/v1.37.0" ) type hostIDProvider func() (string, error) @@ -96,7 +96,7 @@ func (r *hostIDReaderLinux) read() (string, error) { type hostIDDetector struct{} // Detect returns a *Resource containing the platform specific host id. -func (hostIDDetector) Detect(ctx context.Context) (*Resource, error) { +func (hostIDDetector) Detect(context.Context) (*Resource, error) { hostID, err := hostID() if err != nil { return nil, err diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/os.go b/vendor/go.opentelemetry.io/otel/sdk/resource/os.go index 01b4d27a03..51da76e807 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/os.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/os.go @@ -8,7 +8,7 @@ import ( "strings" "go.opentelemetry.io/otel/attribute" - semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + semconv "go.opentelemetry.io/otel/semconv/v1.37.0" ) type osDescriptionProvider func() (string, error) @@ -32,7 +32,7 @@ type ( // Detect returns a *Resource that describes the operating system type the // service is running on. -func (osTypeDetector) Detect(ctx context.Context) (*Resource, error) { +func (osTypeDetector) Detect(context.Context) (*Resource, error) { osType := runtimeOS() osTypeAttribute := mapRuntimeOSToSemconvOSType(osType) @@ -45,7 +45,7 @@ func (osTypeDetector) Detect(ctx context.Context) (*Resource, error) { // Detect returns a *Resource that describes the operating system the // service is running on. -func (osDescriptionDetector) Detect(ctx context.Context) (*Resource, error) { +func (osDescriptionDetector) Detect(context.Context) (*Resource, error) { description, err := osDescription() if err != nil { return nil, err diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go b/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go index f537e5ca5c..7252af79fc 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/os_release_unix.go @@ -63,12 +63,12 @@ func parseOSReleaseFile(file io.Reader) map[string]string { return values } -// skip returns true if the line is blank or starts with a '#' character, and +// skip reports whether the line is blank or starts with a '#' character, and // therefore should be skipped from processing. func skip(line string) bool { line = strings.TrimSpace(line) - return len(line) == 0 || strings.HasPrefix(line, "#") + return line == "" || strings.HasPrefix(line, "#") } // parse attempts to split the provided line on the first '=' character, and then @@ -76,7 +76,7 @@ func skip(line string) bool { func parse(line string) (string, string, bool) { k, v, found := strings.Cut(line, "=") - if !found || len(k) == 0 { + if !found || k == "" { return "", "", false } diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/process.go b/vendor/go.opentelemetry.io/otel/sdk/resource/process.go index 6712ce80d5..138e57721b 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/process.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/process.go @@ -11,7 +11,7 @@ import ( "path/filepath" "runtime" - semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + semconv "go.opentelemetry.io/otel/semconv/v1.37.0" ) type ( @@ -112,19 +112,19 @@ type ( // Detect returns a *Resource that describes the process identifier (PID) of the // executing process. -func (processPIDDetector) Detect(ctx context.Context) (*Resource, error) { +func (processPIDDetector) Detect(context.Context) (*Resource, error) { return NewWithAttributes(semconv.SchemaURL, semconv.ProcessPID(pid())), nil } // Detect returns a *Resource that describes the name of the process executable. -func (processExecutableNameDetector) Detect(ctx context.Context) (*Resource, error) { +func (processExecutableNameDetector) Detect(context.Context) (*Resource, error) { executableName := filepath.Base(commandArgs()[0]) return NewWithAttributes(semconv.SchemaURL, semconv.ProcessExecutableName(executableName)), nil } // Detect returns a *Resource that describes the full path of the process executable. -func (processExecutablePathDetector) Detect(ctx context.Context) (*Resource, error) { +func (processExecutablePathDetector) Detect(context.Context) (*Resource, error) { executablePath, err := executablePath() if err != nil { return nil, err @@ -135,13 +135,13 @@ func (processExecutablePathDetector) Detect(ctx context.Context) (*Resource, err // Detect returns a *Resource that describes all the command arguments as received // by the process. -func (processCommandArgsDetector) Detect(ctx context.Context) (*Resource, error) { +func (processCommandArgsDetector) Detect(context.Context) (*Resource, error) { return NewWithAttributes(semconv.SchemaURL, semconv.ProcessCommandArgs(commandArgs()...)), nil } // Detect returns a *Resource that describes the username of the user that owns the // process. -func (processOwnerDetector) Detect(ctx context.Context) (*Resource, error) { +func (processOwnerDetector) Detect(context.Context) (*Resource, error) { owner, err := owner() if err != nil { return nil, err @@ -152,17 +152,17 @@ func (processOwnerDetector) Detect(ctx context.Context) (*Resource, error) { // Detect returns a *Resource that describes the name of the compiler used to compile // this process image. -func (processRuntimeNameDetector) Detect(ctx context.Context) (*Resource, error) { +func (processRuntimeNameDetector) Detect(context.Context) (*Resource, error) { return NewWithAttributes(semconv.SchemaURL, semconv.ProcessRuntimeName(runtimeName())), nil } // Detect returns a *Resource that describes the version of the runtime of this process. -func (processRuntimeVersionDetector) Detect(ctx context.Context) (*Resource, error) { +func (processRuntimeVersionDetector) Detect(context.Context) (*Resource, error) { return NewWithAttributes(semconv.SchemaURL, semconv.ProcessRuntimeVersion(runtimeVersion())), nil } // Detect returns a *Resource that describes the runtime of this process. -func (processRuntimeDescriptionDetector) Detect(ctx context.Context) (*Resource, error) { +func (processRuntimeDescriptionDetector) Detect(context.Context) (*Resource, error) { runtimeDescription := fmt.Sprintf( "go version %s %s/%s", runtimeVersion(), runtimeOS(), runtimeArch()) diff --git a/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go b/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go index 09b91e1e1b..28e1e4f7eb 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go +++ b/vendor/go.opentelemetry.io/otel/sdk/resource/resource.go @@ -112,7 +112,7 @@ func (r *Resource) String() string { } // MarshalLog is the marshaling function used by the logging system to represent this Resource. -func (r *Resource) MarshalLog() interface{} { +func (r *Resource) MarshalLog() any { return struct { Attributes attribute.Set SchemaURL string @@ -148,7 +148,7 @@ func (r *Resource) Iter() attribute.Iterator { return r.attrs.Iter() } -// Equal returns whether r and o represent the same resource. Two resources can +// Equal reports whether r and o represent the same resource. Two resources can // be equal even if they have different schema URLs. // // See the documentation on the [Resource] type for the pitfalls of using == diff --git a/vendor/go.opentelemetry.io/otel/sdk/version.go b/vendor/go.opentelemetry.io/otel/sdk/version.go index c0217af6b9..7f97cc31e5 100644 --- a/vendor/go.opentelemetry.io/otel/sdk/version.go +++ b/vendor/go.opentelemetry.io/otel/sdk/version.go @@ -6,5 +6,5 @@ package sdk // import "go.opentelemetry.io/otel/sdk" // Version is the current release version of the OpenTelemetry SDK in use. func Version() string { - return "1.37.0" + return "1.38.0" } diff --git a/vendor/go.opentelemetry.io/otel/semconv/internal/v2/http.go b/vendor/go.opentelemetry.io/otel/semconv/internal/v2/http.go index 3709ef0993..5d5f12a56e 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/internal/v2/http.go +++ b/vendor/go.opentelemetry.io/otel/semconv/internal/v2/http.go @@ -91,8 +91,7 @@ func (c *HTTPConv) ClientRequest(req *http.Request) []attribute.KeyValue { } attrs := make([]attribute.KeyValue, 0, n) - attrs = append(attrs, c.method(req.Method)) - attrs = append(attrs, c.proto(req.Proto)) + attrs = append(attrs, c.method(req.Method), c.proto(req.Proto)) var u string if req.URL != nil { @@ -103,9 +102,11 @@ func (c *HTTPConv) ClientRequest(req *http.Request) []attribute.KeyValue { // Restore any username/password info that was removed. req.URL.User = userinfo } - attrs = append(attrs, c.HTTPURLKey.String(u)) - - attrs = append(attrs, c.NetConv.PeerName(peer)) + attrs = append( + attrs, + c.HTTPURLKey.String(u), + c.NetConv.PeerName(peer), + ) if port > 0 { attrs = append(attrs, c.NetConv.PeerPort(port)) } @@ -191,10 +192,13 @@ func (c *HTTPConv) ServerRequest(server string, req *http.Request) []attribute.K } attrs := make([]attribute.KeyValue, 0, n) - attrs = append(attrs, c.method(req.Method)) - attrs = append(attrs, c.scheme(req.TLS != nil)) - attrs = append(attrs, c.proto(req.Proto)) - attrs = append(attrs, c.NetConv.HostName(host)) + attrs = append( + attrs, + c.method(req.Method), + c.scheme(req.TLS != nil), + c.proto(req.Proto), + c.NetConv.HostName(host), + ) if hostPort > 0 { attrs = append(attrs, c.NetConv.HostPort(hostPort)) @@ -294,7 +298,7 @@ func (c *HTTPConv) ResponseHeader(h http.Header) []attribute.KeyValue { return c.header("http.response.header", h) } -func (c *HTTPConv) header(prefix string, h http.Header) []attribute.KeyValue { +func (*HTTPConv) header(prefix string, h http.Header) []attribute.KeyValue { key := func(k string) attribute.Key { k = strings.ToLower(k) k = strings.ReplaceAll(k, "-", "_") @@ -311,7 +315,7 @@ func (c *HTTPConv) header(prefix string, h http.Header) []attribute.KeyValue { // ClientStatus returns a span status code and message for an HTTP status code // value received by a client. -func (c *HTTPConv) ClientStatus(code int) (codes.Code, string) { +func (*HTTPConv) ClientStatus(code int) (codes.Code, string) { stat, valid := validateHTTPStatusCode(code) if !valid { return stat, fmt.Sprintf("Invalid HTTP status code %d", code) @@ -322,7 +326,7 @@ func (c *HTTPConv) ClientStatus(code int) (codes.Code, string) { // ServerStatus returns a span status code and message for an HTTP status code // value returned by a server. Status codes in the 400-499 range are not // returned as errors. -func (c *HTTPConv) ServerStatus(code int) (codes.Code, string) { +func (*HTTPConv) ServerStatus(code int) (codes.Code, string) { stat, valid := validateHTTPStatusCode(code) if !valid { return stat, fmt.Sprintf("Invalid HTTP status code %d", code) diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/attribute_group.go b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/attribute_group.go index 5b56662573..98c0fddaa3 100644 --- a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/attribute_group.go +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/attribute_group.go @@ -3467,6 +3467,13 @@ func ContainerImageTags(val ...string) attribute.KeyValue { return ContainerImageTagsKey.StringSlice(val) } +// ContainerLabel returns an attribute KeyValue conforming to the +// "container.label" semantic conventions. It represents the container labels, +// `` being the label name, the value being the label value. +func ContainerLabel(key string, val string) attribute.KeyValue { + return attribute.String("container.label."+key, val) +} + // ContainerName returns an attribute KeyValue conforming to the "container.name" // semantic conventions. It represents the container name used by container // runtime. @@ -3794,6 +3801,22 @@ func DBOperationName(val string) attribute.KeyValue { return DBOperationNameKey.String(val) } +// DBOperationParameter returns an attribute KeyValue conforming to the +// "db.operation.parameter" semantic conventions. It represents a database +// operation parameter, with `` being the parameter name, and the attribute +// value being a string representation of the parameter value. +func DBOperationParameter(key string, val string) attribute.KeyValue { + return attribute.String("db.operation.parameter."+key, val) +} + +// DBQueryParameter returns an attribute KeyValue conforming to the +// "db.query.parameter" semantic conventions. It represents a database query +// parameter, with `` being the parameter name, and the attribute value +// being a string representation of the parameter value. +func DBQueryParameter(key string, val string) attribute.KeyValue { + return attribute.String("db.query.parameter."+key, val) +} + // DBQuerySummary returns an attribute KeyValue conforming to the // "db.query.summary" semantic conventions. It represents the low cardinality // summary of a database query. @@ -7312,6 +7335,14 @@ func HTTPRequestBodySize(val int) attribute.KeyValue { return HTTPRequestBodySizeKey.Int(val) } +// HTTPRequestHeader returns an attribute KeyValue conforming to the +// "http.request.header" semantic conventions. It represents the HTTP request +// headers, `` being the normalized HTTP Header name (lowercase), the value +// being the header values. +func HTTPRequestHeader(key string, val ...string) attribute.KeyValue { + return attribute.StringSlice("http.request.header."+key, val) +} + // HTTPRequestMethodOriginal returns an attribute KeyValue conforming to the // "http.request.method_original" semantic conventions. It represents the // original HTTP method sent by the client in the request line. @@ -7347,6 +7378,14 @@ func HTTPResponseBodySize(val int) attribute.KeyValue { return HTTPResponseBodySizeKey.Int(val) } +// HTTPResponseHeader returns an attribute KeyValue conforming to the +// "http.response.header" semantic conventions. It represents the HTTP response +// headers, `` being the normalized HTTP Header name (lowercase), the value +// being the header values. +func HTTPResponseHeader(key string, val ...string) attribute.KeyValue { + return attribute.StringSlice("http.response.header."+key, val) +} + // HTTPResponseSize returns an attribute KeyValue conforming to the // "http.response.size" semantic conventions. It represents the total size of the // response in bytes. This should be the total number of bytes sent over the @@ -8001,6 +8040,22 @@ func K8SContainerStatusLastTerminatedReason(val string) attribute.KeyValue { return K8SContainerStatusLastTerminatedReasonKey.String(val) } +// K8SCronJobAnnotation returns an attribute KeyValue conforming to the +// "k8s.cronjob.annotation" semantic conventions. It represents the cronjob +// annotation placed on the CronJob, the `` being the annotation name, the +// value being the annotation value. +func K8SCronJobAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.cronjob.annotation."+key, val) +} + +// K8SCronJobLabel returns an attribute KeyValue conforming to the +// "k8s.cronjob.label" semantic conventions. It represents the label placed on +// the CronJob, the `` being the label name, the value being the label +// value. +func K8SCronJobLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.cronjob.label."+key, val) +} + // K8SCronJobName returns an attribute KeyValue conforming to the // "k8s.cronjob.name" semantic conventions. It represents the name of the // CronJob. @@ -8014,6 +8069,20 @@ func K8SCronJobUID(val string) attribute.KeyValue { return K8SCronJobUIDKey.String(val) } +// K8SDaemonSetAnnotation returns an attribute KeyValue conforming to the +// "k8s.daemonset.annotation" semantic conventions. It represents the annotation +// key-value pairs placed on the DaemonSet. +func K8SDaemonSetAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.daemonset.annotation."+key, val) +} + +// K8SDaemonSetLabel returns an attribute KeyValue conforming to the +// "k8s.daemonset.label" semantic conventions. It represents the label key-value +// pairs placed on the DaemonSet. +func K8SDaemonSetLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.daemonset.label."+key, val) +} + // K8SDaemonSetName returns an attribute KeyValue conforming to the // "k8s.daemonset.name" semantic conventions. It represents the name of the // DaemonSet. @@ -8028,6 +8097,20 @@ func K8SDaemonSetUID(val string) attribute.KeyValue { return K8SDaemonSetUIDKey.String(val) } +// K8SDeploymentAnnotation returns an attribute KeyValue conforming to the +// "k8s.deployment.annotation" semantic conventions. It represents the annotation +// key-value pairs placed on the Deployment. +func K8SDeploymentAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.deployment.annotation."+key, val) +} + +// K8SDeploymentLabel returns an attribute KeyValue conforming to the +// "k8s.deployment.label" semantic conventions. It represents the label key-value +// pairs placed on the Deployment. +func K8SDeploymentLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.deployment.label."+key, val) +} + // K8SDeploymentName returns an attribute KeyValue conforming to the // "k8s.deployment.name" semantic conventions. It represents the name of the // Deployment. @@ -8054,6 +8137,20 @@ func K8SHPAUID(val string) attribute.KeyValue { return K8SHPAUIDKey.String(val) } +// K8SJobAnnotation returns an attribute KeyValue conforming to the +// "k8s.job.annotation" semantic conventions. It represents the annotation +// key-value pairs placed on the Job. +func K8SJobAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.job.annotation."+key, val) +} + +// K8SJobLabel returns an attribute KeyValue conforming to the "k8s.job.label" +// semantic conventions. It represents the label key-value pairs placed on the +// Job. +func K8SJobLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.job.label."+key, val) +} + // K8SJobName returns an attribute KeyValue conforming to the "k8s.job.name" // semantic conventions. It represents the name of the Job. func K8SJobName(val string) attribute.KeyValue { @@ -8066,6 +8163,20 @@ func K8SJobUID(val string) attribute.KeyValue { return K8SJobUIDKey.String(val) } +// K8SNamespaceAnnotation returns an attribute KeyValue conforming to the +// "k8s.namespace.annotation" semantic conventions. It represents the annotation +// key-value pairs placed on the Namespace. +func K8SNamespaceAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.namespace.annotation."+key, val) +} + +// K8SNamespaceLabel returns an attribute KeyValue conforming to the +// "k8s.namespace.label" semantic conventions. It represents the label key-value +// pairs placed on the Namespace. +func K8SNamespaceLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.namespace.label."+key, val) +} + // K8SNamespaceName returns an attribute KeyValue conforming to the // "k8s.namespace.name" semantic conventions. It represents the name of the // namespace that the pod is running in. @@ -8073,6 +8184,22 @@ func K8SNamespaceName(val string) attribute.KeyValue { return K8SNamespaceNameKey.String(val) } +// K8SNodeAnnotation returns an attribute KeyValue conforming to the +// "k8s.node.annotation" semantic conventions. It represents the annotation +// placed on the Node, the `` being the annotation name, the value being the +// annotation value, even if the value is empty. +func K8SNodeAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.node.annotation."+key, val) +} + +// K8SNodeLabel returns an attribute KeyValue conforming to the "k8s.node.label" +// semantic conventions. It represents the label placed on the Node, the `` +// being the label name, the value being the label value, even if the value is +// empty. +func K8SNodeLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.node.label."+key, val) +} + // K8SNodeName returns an attribute KeyValue conforming to the "k8s.node.name" // semantic conventions. It represents the name of the Node. func K8SNodeName(val string) attribute.KeyValue { @@ -8085,6 +8212,21 @@ func K8SNodeUID(val string) attribute.KeyValue { return K8SNodeUIDKey.String(val) } +// K8SPodAnnotation returns an attribute KeyValue conforming to the +// "k8s.pod.annotation" semantic conventions. It represents the annotation placed +// on the Pod, the `` being the annotation name, the value being the +// annotation value. +func K8SPodAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.pod.annotation."+key, val) +} + +// K8SPodLabel returns an attribute KeyValue conforming to the "k8s.pod.label" +// semantic conventions. It represents the label placed on the Pod, the `` +// being the label name, the value being the label value. +func K8SPodLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.pod.label."+key, val) +} + // K8SPodName returns an attribute KeyValue conforming to the "k8s.pod.name" // semantic conventions. It represents the name of the Pod. func K8SPodName(val string) attribute.KeyValue { @@ -8097,6 +8239,20 @@ func K8SPodUID(val string) attribute.KeyValue { return K8SPodUIDKey.String(val) } +// K8SReplicaSetAnnotation returns an attribute KeyValue conforming to the +// "k8s.replicaset.annotation" semantic conventions. It represents the annotation +// key-value pairs placed on the ReplicaSet. +func K8SReplicaSetAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.replicaset.annotation."+key, val) +} + +// K8SReplicaSetLabel returns an attribute KeyValue conforming to the +// "k8s.replicaset.label" semantic conventions. It represents the label key-value +// pairs placed on the ReplicaSet. +func K8SReplicaSetLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.replicaset.label."+key, val) +} + // K8SReplicaSetName returns an attribute KeyValue conforming to the // "k8s.replicaset.name" semantic conventions. It represents the name of the // ReplicaSet. @@ -8139,6 +8295,20 @@ func K8SResourceQuotaUID(val string) attribute.KeyValue { return K8SResourceQuotaUIDKey.String(val) } +// K8SStatefulSetAnnotation returns an attribute KeyValue conforming to the +// "k8s.statefulset.annotation" semantic conventions. It represents the +// annotation key-value pairs placed on the StatefulSet. +func K8SStatefulSetAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.statefulset.annotation."+key, val) +} + +// K8SStatefulSetLabel returns an attribute KeyValue conforming to the +// "k8s.statefulset.label" semantic conventions. It represents the label +// key-value pairs placed on the StatefulSet. +func K8SStatefulSetLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.statefulset.label."+key, val) +} + // K8SStatefulSetName returns an attribute KeyValue conforming to the // "k8s.statefulset.name" semantic conventions. It represents the name of the // StatefulSet. @@ -10497,6 +10667,14 @@ func ProcessCreationTime(val string) attribute.KeyValue { return ProcessCreationTimeKey.String(val) } +// ProcessEnvironmentVariable returns an attribute KeyValue conforming to the +// "process.environment_variable" semantic conventions. It represents the process +// environment variables, being the environment variable name, the value +// being the environment variable value. +func ProcessEnvironmentVariable(key string, val string) attribute.KeyValue { + return attribute.String("process.environment_variable."+key, val) +} + // ProcessExecutableBuildIDGNU returns an attribute KeyValue conforming to the // "process.executable.build_id.gnu" semantic conventions. It represents the GNU // build ID as found in the `.note.gnu.build-id` ELF section (hex string). @@ -10965,6 +11143,38 @@ const ( RPCSystemKey = attribute.Key("rpc.system") ) +// RPCConnectRPCRequestMetadata returns an attribute KeyValue conforming to the +// "rpc.connect_rpc.request.metadata" semantic conventions. It represents the +// connect request metadata, `` being the normalized Connect Metadata key +// (lowercase), the value being the metadata values. +func RPCConnectRPCRequestMetadata(key string, val ...string) attribute.KeyValue { + return attribute.StringSlice("rpc.connect_rpc.request.metadata."+key, val) +} + +// RPCConnectRPCResponseMetadata returns an attribute KeyValue conforming to the +// "rpc.connect_rpc.response.metadata" semantic conventions. It represents the +// connect response metadata, `` being the normalized Connect Metadata key +// (lowercase), the value being the metadata values. +func RPCConnectRPCResponseMetadata(key string, val ...string) attribute.KeyValue { + return attribute.StringSlice("rpc.connect_rpc.response.metadata."+key, val) +} + +// RPCGRPCRequestMetadata returns an attribute KeyValue conforming to the +// "rpc.grpc.request.metadata" semantic conventions. It represents the gRPC +// request metadata, `` being the normalized gRPC Metadata key (lowercase), +// the value being the metadata values. +func RPCGRPCRequestMetadata(key string, val ...string) attribute.KeyValue { + return attribute.StringSlice("rpc.grpc.request.metadata."+key, val) +} + +// RPCGRPCResponseMetadata returns an attribute KeyValue conforming to the +// "rpc.grpc.response.metadata" semantic conventions. It represents the gRPC +// response metadata, `` being the normalized gRPC Metadata key (lowercase), +// the value being the metadata values. +func RPCGRPCResponseMetadata(key string, val ...string) attribute.KeyValue { + return attribute.StringSlice("rpc.grpc.response.metadata."+key, val) +} + // RPCJSONRPCErrorCode returns an attribute KeyValue conforming to the // "rpc.jsonrpc.error_code" semantic conventions. It represents the `error.code` // property of response if it is an error response. diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/error_type.go b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/error_type.go new file mode 100644 index 0000000000..19bf022465 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.34.0/error_type.go @@ -0,0 +1,31 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package semconv // import "go.opentelemetry.io/otel/semconv/v1.34.0" + +import ( + "fmt" + "reflect" + + "go.opentelemetry.io/otel/attribute" +) + +// ErrorType returns an [attribute.KeyValue] identifying the error type of err. +func ErrorType(err error) attribute.KeyValue { + if err == nil { + return ErrorTypeOther + } + t := reflect.TypeOf(err) + var value string + if t.PkgPath() == "" && t.Name() == "" { + // Likely a builtin type. + value = t.String() + } else { + value = fmt.Sprintf("%s.%s", t.PkgPath(), t.Name()) + } + + if value == "" { + return ErrorTypeOther + } + return ErrorTypeKey.String(value) +} diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/MIGRATION.md b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/MIGRATION.md new file mode 100644 index 0000000000..2480547895 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/MIGRATION.md @@ -0,0 +1,41 @@ + +# Migration from v1.36.0 to v1.37.0 + +The `go.opentelemetry.io/otel/semconv/v1.37.0` package should be a drop-in replacement for `go.opentelemetry.io/otel/semconv/v1.36.0` with the following exceptions. + +## Removed + +The following declarations have been removed. +Refer to the [OpenTelemetry Semantic Conventions documentation] for deprecation instructions. + +If the type is not listed in the documentation as deprecated, it has been removed in this version due to lack of applicability or use. +If you use any of these non-deprecated declarations in your Go application, please [open an issue] describing your use-case. + +- `ContainerRuntime` +- `ContainerRuntimeKey` +- `GenAIOpenAIRequestServiceTierAuto` +- `GenAIOpenAIRequestServiceTierDefault` +- `GenAIOpenAIRequestServiceTierKey` +- `GenAIOpenAIResponseServiceTier` +- `GenAIOpenAIResponseServiceTierKey` +- `GenAIOpenAIResponseSystemFingerprint` +- `GenAIOpenAIResponseSystemFingerprintKey` +- `GenAISystemAWSBedrock` +- `GenAISystemAnthropic` +- `GenAISystemAzureAIInference` +- `GenAISystemAzureAIOpenAI` +- `GenAISystemCohere` +- `GenAISystemDeepseek` +- `GenAISystemGCPGemini` +- `GenAISystemGCPGenAI` +- `GenAISystemGCPVertexAI` +- `GenAISystemGroq` +- `GenAISystemIBMWatsonxAI` +- `GenAISystemKey` +- `GenAISystemMistralAI` +- `GenAISystemOpenAI` +- `GenAISystemPerplexity` +- `GenAISystemXai` + +[OpenTelemetry Semantic Conventions documentation]: https://github.com/open-telemetry/semantic-conventions +[open an issue]: https://github.com/open-telemetry/opentelemetry-go/issues/new?template=Blank+issue diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/README.md b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/README.md new file mode 100644 index 0000000000..d795247f32 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/README.md @@ -0,0 +1,3 @@ +# Semconv v1.37.0 + +[![PkgGoDev](https://pkg.go.dev/badge/go.opentelemetry.io/otel/semconv/v1.37.0)](https://pkg.go.dev/go.opentelemetry.io/otel/semconv/v1.37.0) diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/attribute_group.go b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/attribute_group.go new file mode 100644 index 0000000000..b6b27498f2 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/attribute_group.go @@ -0,0 +1,15193 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Code generated from semantic convention specification. DO NOT EDIT. + +package semconv // import "go.opentelemetry.io/otel/semconv/v1.37.0" + +import "go.opentelemetry.io/otel/attribute" + +// Namespace: android +const ( + // AndroidAppStateKey is the attribute Key conforming to the "android.app.state" + // semantic conventions. It represents the this attribute represents the state + // of the application. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "created" + // Note: The Android lifecycle states are defined in + // [Activity lifecycle callbacks], and from which the `OS identifiers` are + // derived. + // + // [Activity lifecycle callbacks]: https://developer.android.com/guide/components/activities/activity-lifecycle#lc + AndroidAppStateKey = attribute.Key("android.app.state") + + // AndroidOSAPILevelKey is the attribute Key conforming to the + // "android.os.api_level" semantic conventions. It represents the uniquely + // identifies the framework API revision offered by a version (`os.version`) of + // the android operating system. More information can be found in the + // [Android API levels documentation]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "33", "32" + // + // [Android API levels documentation]: https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels + AndroidOSAPILevelKey = attribute.Key("android.os.api_level") +) + +// AndroidOSAPILevel returns an attribute KeyValue conforming to the +// "android.os.api_level" semantic conventions. It represents the uniquely +// identifies the framework API revision offered by a version (`os.version`) of +// the android operating system. More information can be found in the +// [Android API levels documentation]. +// +// [Android API levels documentation]: https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels +func AndroidOSAPILevel(val string) attribute.KeyValue { + return AndroidOSAPILevelKey.String(val) +} + +// Enum values for android.app.state +var ( + // Any time before Activity.onResume() or, if the app has no Activity, + // Context.startService() has been called in the app for the first time. + // + // Stability: development + AndroidAppStateCreated = AndroidAppStateKey.String("created") + // Any time after Activity.onPause() or, if the app has no Activity, + // Context.stopService() has been called when the app was in the foreground + // state. + // + // Stability: development + AndroidAppStateBackground = AndroidAppStateKey.String("background") + // Any time after Activity.onResume() or, if the app has no Activity, + // Context.startService() has been called when the app was in either the created + // or background states. + // + // Stability: development + AndroidAppStateForeground = AndroidAppStateKey.String("foreground") +) + +// Namespace: app +const ( + // AppBuildIDKey is the attribute Key conforming to the "app.build_id" semantic + // conventions. It represents the unique identifier for a particular build or + // compilation of the application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "6cff0a7e-cefc-4668-96f5-1273d8b334d0", + // "9f2b833506aa6973a92fde9733e6271f", "my-app-1.0.0-code-123" + AppBuildIDKey = attribute.Key("app.build_id") + + // AppInstallationIDKey is the attribute Key conforming to the + // "app.installation.id" semantic conventions. It represents a unique identifier + // representing the installation of an application on a specific device. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2ab2916d-a51f-4ac8-80ee-45ac31a28092" + // Note: Its value SHOULD persist across launches of the same application + // installation, including through application upgrades. + // It SHOULD change if the application is uninstalled or if all applications of + // the vendor are uninstalled. + // Additionally, users might be able to reset this value (e.g. by clearing + // application data). + // If an app is installed multiple times on the same device (e.g. in different + // accounts on Android), each `app.installation.id` SHOULD have a different + // value. + // If multiple OpenTelemetry SDKs are used within the same application, they + // SHOULD use the same value for `app.installation.id`. + // Hardware IDs (e.g. serial number, IMEI, MAC address) MUST NOT be used as the + // `app.installation.id`. + // + // For iOS, this value SHOULD be equal to the [vendor identifier]. + // + // For Android, examples of `app.installation.id` implementations include: + // + // - [Firebase Installation ID]. + // - A globally unique UUID which is persisted across sessions in your + // application. + // - [App set ID]. + // - [`Settings.getString(Settings.Secure.ANDROID_ID)`]. + // + // More information about Android identifier best practices can be found in the + // [Android user data IDs guide]. + // + // [vendor identifier]: https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor + // [Firebase Installation ID]: https://firebase.google.com/docs/projects/manage-installations + // [App set ID]: https://developer.android.com/identity/app-set-id + // [`Settings.getString(Settings.Secure.ANDROID_ID)`]: https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID + // [Android user data IDs guide]: https://developer.android.com/training/articles/user-data-ids + AppInstallationIDKey = attribute.Key("app.installation.id") + + // AppJankFrameCountKey is the attribute Key conforming to the + // "app.jank.frame_count" semantic conventions. It represents a number of frame + // renders that experienced jank. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 9, 42 + // Note: Depending on platform limitations, the value provided MAY be + // approximation. + AppJankFrameCountKey = attribute.Key("app.jank.frame_count") + + // AppJankPeriodKey is the attribute Key conforming to the "app.jank.period" + // semantic conventions. It represents the time period, in seconds, for which + // this jank is being reported. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1.0, 5.0, 10.24 + AppJankPeriodKey = attribute.Key("app.jank.period") + + // AppJankThresholdKey is the attribute Key conforming to the + // "app.jank.threshold" semantic conventions. It represents the minimum + // rendering threshold for this jank, in seconds. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0.016, 0.7, 1.024 + AppJankThresholdKey = attribute.Key("app.jank.threshold") + + // AppScreenCoordinateXKey is the attribute Key conforming to the + // "app.screen.coordinate.x" semantic conventions. It represents the x + // (horizontal) coordinate of a screen coordinate, in screen pixels. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0, 131 + AppScreenCoordinateXKey = attribute.Key("app.screen.coordinate.x") + + // AppScreenCoordinateYKey is the attribute Key conforming to the + // "app.screen.coordinate.y" semantic conventions. It represents the y + // (vertical) component of a screen coordinate, in screen pixels. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 12, 99 + AppScreenCoordinateYKey = attribute.Key("app.screen.coordinate.y") + + // AppWidgetIDKey is the attribute Key conforming to the "app.widget.id" + // semantic conventions. It represents an identifier that uniquely + // differentiates this widget from other widgets in the same application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "f9bc787d-ff05-48ad-90e1-fca1d46130b3", "submit_order_1829" + // Note: A widget is an application component, typically an on-screen visual GUI + // element. + AppWidgetIDKey = attribute.Key("app.widget.id") + + // AppWidgetNameKey is the attribute Key conforming to the "app.widget.name" + // semantic conventions. It represents the name of an application widget. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "submit", "attack", "Clear Cart" + // Note: A widget is an application component, typically an on-screen visual GUI + // element. + AppWidgetNameKey = attribute.Key("app.widget.name") +) + +// AppBuildID returns an attribute KeyValue conforming to the "app.build_id" +// semantic conventions. It represents the unique identifier for a particular +// build or compilation of the application. +func AppBuildID(val string) attribute.KeyValue { + return AppBuildIDKey.String(val) +} + +// AppInstallationID returns an attribute KeyValue conforming to the +// "app.installation.id" semantic conventions. It represents a unique identifier +// representing the installation of an application on a specific device. +func AppInstallationID(val string) attribute.KeyValue { + return AppInstallationIDKey.String(val) +} + +// AppJankFrameCount returns an attribute KeyValue conforming to the +// "app.jank.frame_count" semantic conventions. It represents a number of frame +// renders that experienced jank. +func AppJankFrameCount(val int) attribute.KeyValue { + return AppJankFrameCountKey.Int(val) +} + +// AppJankPeriod returns an attribute KeyValue conforming to the +// "app.jank.period" semantic conventions. It represents the time period, in +// seconds, for which this jank is being reported. +func AppJankPeriod(val float64) attribute.KeyValue { + return AppJankPeriodKey.Float64(val) +} + +// AppJankThreshold returns an attribute KeyValue conforming to the +// "app.jank.threshold" semantic conventions. It represents the minimum rendering +// threshold for this jank, in seconds. +func AppJankThreshold(val float64) attribute.KeyValue { + return AppJankThresholdKey.Float64(val) +} + +// AppScreenCoordinateX returns an attribute KeyValue conforming to the +// "app.screen.coordinate.x" semantic conventions. It represents the x +// (horizontal) coordinate of a screen coordinate, in screen pixels. +func AppScreenCoordinateX(val int) attribute.KeyValue { + return AppScreenCoordinateXKey.Int(val) +} + +// AppScreenCoordinateY returns an attribute KeyValue conforming to the +// "app.screen.coordinate.y" semantic conventions. It represents the y (vertical) +// component of a screen coordinate, in screen pixels. +func AppScreenCoordinateY(val int) attribute.KeyValue { + return AppScreenCoordinateYKey.Int(val) +} + +// AppWidgetID returns an attribute KeyValue conforming to the "app.widget.id" +// semantic conventions. It represents an identifier that uniquely differentiates +// this widget from other widgets in the same application. +func AppWidgetID(val string) attribute.KeyValue { + return AppWidgetIDKey.String(val) +} + +// AppWidgetName returns an attribute KeyValue conforming to the +// "app.widget.name" semantic conventions. It represents the name of an +// application widget. +func AppWidgetName(val string) attribute.KeyValue { + return AppWidgetNameKey.String(val) +} + +// Namespace: artifact +const ( + // ArtifactAttestationFilenameKey is the attribute Key conforming to the + // "artifact.attestation.filename" semantic conventions. It represents the + // provenance filename of the built attestation which directly relates to the + // build artifact filename. This filename SHOULD accompany the artifact at + // publish time. See the [SLSA Relationship] specification for more information. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "golang-binary-amd64-v0.1.0.attestation", + // "docker-image-amd64-v0.1.0.intoto.json1", "release-1.tar.gz.attestation", + // "file-name-package.tar.gz.intoto.json1" + // + // [SLSA Relationship]: https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations + ArtifactAttestationFilenameKey = attribute.Key("artifact.attestation.filename") + + // ArtifactAttestationHashKey is the attribute Key conforming to the + // "artifact.attestation.hash" semantic conventions. It represents the full + // [hash value (see glossary)], of the built attestation. Some envelopes in the + // [software attestation space] also refer to this as the **digest**. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1b31dfcd5b7f9267bf2ff47651df1cfb9147b9e4df1f335accf65b4cda498408" + // + // [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf + // [software attestation space]: https://github.com/in-toto/attestation/tree/main/spec + ArtifactAttestationHashKey = attribute.Key("artifact.attestation.hash") + + // ArtifactAttestationIDKey is the attribute Key conforming to the + // "artifact.attestation.id" semantic conventions. It represents the id of the + // build [software attestation]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "123" + // + // [software attestation]: https://slsa.dev/attestation-model + ArtifactAttestationIDKey = attribute.Key("artifact.attestation.id") + + // ArtifactFilenameKey is the attribute Key conforming to the + // "artifact.filename" semantic conventions. It represents the human readable + // file name of the artifact, typically generated during build and release + // processes. Often includes the package name and version in the file name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "golang-binary-amd64-v0.1.0", "docker-image-amd64-v0.1.0", + // "release-1.tar.gz", "file-name-package.tar.gz" + // Note: This file name can also act as the [Package Name] + // in cases where the package ecosystem maps accordingly. + // Additionally, the artifact [can be published] + // for others, but that is not a guarantee. + // + // [Package Name]: https://slsa.dev/spec/v1.0/terminology#package-model + // [can be published]: https://slsa.dev/spec/v1.0/terminology#software-supply-chain + ArtifactFilenameKey = attribute.Key("artifact.filename") + + // ArtifactHashKey is the attribute Key conforming to the "artifact.hash" + // semantic conventions. It represents the full [hash value (see glossary)], + // often found in checksum.txt on a release of the artifact and used to verify + // package integrity. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "9ff4c52759e2c4ac70b7d517bc7fcdc1cda631ca0045271ddd1b192544f8a3e9" + // Note: The specific algorithm used to create the cryptographic hash value is + // not defined. In situations where an artifact has multiple + // cryptographic hashes, it is up to the implementer to choose which + // hash value to set here; this should be the most secure hash algorithm + // that is suitable for the situation and consistent with the + // corresponding attestation. The implementer can then provide the other + // hash values through an additional set of attribute extensions as they + // deem necessary. + // + // [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf + ArtifactHashKey = attribute.Key("artifact.hash") + + // ArtifactPurlKey is the attribute Key conforming to the "artifact.purl" + // semantic conventions. It represents the [Package URL] of the + // [package artifact] provides a standard way to identify and locate the + // packaged artifact. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "pkg:github/package-url/purl-spec@1209109710924", + // "pkg:npm/foo@12.12.3" + // + // [Package URL]: https://github.com/package-url/purl-spec + // [package artifact]: https://slsa.dev/spec/v1.0/terminology#package-model + ArtifactPurlKey = attribute.Key("artifact.purl") + + // ArtifactVersionKey is the attribute Key conforming to the "artifact.version" + // semantic conventions. It represents the version of the artifact. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "v0.1.0", "1.2.1", "122691-build" + ArtifactVersionKey = attribute.Key("artifact.version") +) + +// ArtifactAttestationFilename returns an attribute KeyValue conforming to the +// "artifact.attestation.filename" semantic conventions. It represents the +// provenance filename of the built attestation which directly relates to the +// build artifact filename. This filename SHOULD accompany the artifact at +// publish time. See the [SLSA Relationship] specification for more information. +// +// [SLSA Relationship]: https://slsa.dev/spec/v1.0/distributing-provenance#relationship-between-artifacts-and-attestations +func ArtifactAttestationFilename(val string) attribute.KeyValue { + return ArtifactAttestationFilenameKey.String(val) +} + +// ArtifactAttestationHash returns an attribute KeyValue conforming to the +// "artifact.attestation.hash" semantic conventions. It represents the full +// [hash value (see glossary)], of the built attestation. Some envelopes in the +// [software attestation space] also refer to this as the **digest**. +// +// [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf +// [software attestation space]: https://github.com/in-toto/attestation/tree/main/spec +func ArtifactAttestationHash(val string) attribute.KeyValue { + return ArtifactAttestationHashKey.String(val) +} + +// ArtifactAttestationID returns an attribute KeyValue conforming to the +// "artifact.attestation.id" semantic conventions. It represents the id of the +// build [software attestation]. +// +// [software attestation]: https://slsa.dev/attestation-model +func ArtifactAttestationID(val string) attribute.KeyValue { + return ArtifactAttestationIDKey.String(val) +} + +// ArtifactFilename returns an attribute KeyValue conforming to the +// "artifact.filename" semantic conventions. It represents the human readable +// file name of the artifact, typically generated during build and release +// processes. Often includes the package name and version in the file name. +func ArtifactFilename(val string) attribute.KeyValue { + return ArtifactFilenameKey.String(val) +} + +// ArtifactHash returns an attribute KeyValue conforming to the "artifact.hash" +// semantic conventions. It represents the full [hash value (see glossary)], +// often found in checksum.txt on a release of the artifact and used to verify +// package integrity. +// +// [hash value (see glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf +func ArtifactHash(val string) attribute.KeyValue { + return ArtifactHashKey.String(val) +} + +// ArtifactPurl returns an attribute KeyValue conforming to the "artifact.purl" +// semantic conventions. It represents the [Package URL] of the +// [package artifact] provides a standard way to identify and locate the packaged +// artifact. +// +// [Package URL]: https://github.com/package-url/purl-spec +// [package artifact]: https://slsa.dev/spec/v1.0/terminology#package-model +func ArtifactPurl(val string) attribute.KeyValue { + return ArtifactPurlKey.String(val) +} + +// ArtifactVersion returns an attribute KeyValue conforming to the +// "artifact.version" semantic conventions. It represents the version of the +// artifact. +func ArtifactVersion(val string) attribute.KeyValue { + return ArtifactVersionKey.String(val) +} + +// Namespace: aws +const ( + // AWSBedrockGuardrailIDKey is the attribute Key conforming to the + // "aws.bedrock.guardrail.id" semantic conventions. It represents the unique + // identifier of the AWS Bedrock Guardrail. A [guardrail] helps safeguard and + // prevent unwanted behavior from model responses or user messages. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "sgi5gkybzqak" + // + // [guardrail]: https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html + AWSBedrockGuardrailIDKey = attribute.Key("aws.bedrock.guardrail.id") + + // AWSBedrockKnowledgeBaseIDKey is the attribute Key conforming to the + // "aws.bedrock.knowledge_base.id" semantic conventions. It represents the + // unique identifier of the AWS Bedrock Knowledge base. A [knowledge base] is a + // bank of information that can be queried by models to generate more relevant + // responses and augment prompts. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "XFWUPB9PAW" + // + // [knowledge base]: https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html + AWSBedrockKnowledgeBaseIDKey = attribute.Key("aws.bedrock.knowledge_base.id") + + // AWSDynamoDBAttributeDefinitionsKey is the attribute Key conforming to the + // "aws.dynamodb.attribute_definitions" semantic conventions. It represents the + // JSON-serialized value of each item in the `AttributeDefinitions` request + // field. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "{ "AttributeName": "string", "AttributeType": "string" }" + AWSDynamoDBAttributeDefinitionsKey = attribute.Key("aws.dynamodb.attribute_definitions") + + // AWSDynamoDBAttributesToGetKey is the attribute Key conforming to the + // "aws.dynamodb.attributes_to_get" semantic conventions. It represents the + // value of the `AttributesToGet` request parameter. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "lives", "id" + AWSDynamoDBAttributesToGetKey = attribute.Key("aws.dynamodb.attributes_to_get") + + // AWSDynamoDBConsistentReadKey is the attribute Key conforming to the + // "aws.dynamodb.consistent_read" semantic conventions. It represents the value + // of the `ConsistentRead` request parameter. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + AWSDynamoDBConsistentReadKey = attribute.Key("aws.dynamodb.consistent_read") + + // AWSDynamoDBConsumedCapacityKey is the attribute Key conforming to the + // "aws.dynamodb.consumed_capacity" semantic conventions. It represents the + // JSON-serialized value of each item in the `ConsumedCapacity` response field. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "{ "CapacityUnits": number, "GlobalSecondaryIndexes": { "string" : + // { "CapacityUnits": number, "ReadCapacityUnits": number, "WriteCapacityUnits": + // number } }, "LocalSecondaryIndexes": { "string" : { "CapacityUnits": number, + // "ReadCapacityUnits": number, "WriteCapacityUnits": number } }, + // "ReadCapacityUnits": number, "Table": { "CapacityUnits": number, + // "ReadCapacityUnits": number, "WriteCapacityUnits": number }, "TableName": + // "string", "WriteCapacityUnits": number }" + AWSDynamoDBConsumedCapacityKey = attribute.Key("aws.dynamodb.consumed_capacity") + + // AWSDynamoDBCountKey is the attribute Key conforming to the + // "aws.dynamodb.count" semantic conventions. It represents the value of the + // `Count` response parameter. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 10 + AWSDynamoDBCountKey = attribute.Key("aws.dynamodb.count") + + // AWSDynamoDBExclusiveStartTableKey is the attribute Key conforming to the + // "aws.dynamodb.exclusive_start_table" semantic conventions. It represents the + // value of the `ExclusiveStartTableName` request parameter. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Users", "CatsTable" + AWSDynamoDBExclusiveStartTableKey = attribute.Key("aws.dynamodb.exclusive_start_table") + + // AWSDynamoDBGlobalSecondaryIndexUpdatesKey is the attribute Key conforming to + // the "aws.dynamodb.global_secondary_index_updates" semantic conventions. It + // represents the JSON-serialized value of each item in the + // `GlobalSecondaryIndexUpdates` request field. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "{ "Create": { "IndexName": "string", "KeySchema": [ { + // "AttributeName": "string", "KeyType": "string" } ], "Projection": { + // "NonKeyAttributes": [ "string" ], "ProjectionType": "string" }, + // "ProvisionedThroughput": { "ReadCapacityUnits": number, "WriteCapacityUnits": + // number } }" + AWSDynamoDBGlobalSecondaryIndexUpdatesKey = attribute.Key("aws.dynamodb.global_secondary_index_updates") + + // AWSDynamoDBGlobalSecondaryIndexesKey is the attribute Key conforming to the + // "aws.dynamodb.global_secondary_indexes" semantic conventions. It represents + // the JSON-serialized value of each item of the `GlobalSecondaryIndexes` + // request field. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "{ "IndexName": "string", "KeySchema": [ { "AttributeName": + // "string", "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ + // "string" ], "ProjectionType": "string" }, "ProvisionedThroughput": { + // "ReadCapacityUnits": number, "WriteCapacityUnits": number } }" + AWSDynamoDBGlobalSecondaryIndexesKey = attribute.Key("aws.dynamodb.global_secondary_indexes") + + // AWSDynamoDBIndexNameKey is the attribute Key conforming to the + // "aws.dynamodb.index_name" semantic conventions. It represents the value of + // the `IndexName` request parameter. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "name_to_group" + AWSDynamoDBIndexNameKey = attribute.Key("aws.dynamodb.index_name") + + // AWSDynamoDBItemCollectionMetricsKey is the attribute Key conforming to the + // "aws.dynamodb.item_collection_metrics" semantic conventions. It represents + // the JSON-serialized value of the `ItemCollectionMetrics` response field. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "{ "string" : [ { "ItemCollectionKey": { "string" : { "B": blob, + // "BOOL": boolean, "BS": [ blob ], "L": [ "AttributeValue" ], "M": { "string" : + // "AttributeValue" }, "N": "string", "NS": [ "string" ], "NULL": boolean, "S": + // "string", "SS": [ "string" ] } }, "SizeEstimateRangeGB": [ number ] } ] }" + AWSDynamoDBItemCollectionMetricsKey = attribute.Key("aws.dynamodb.item_collection_metrics") + + // AWSDynamoDBLimitKey is the attribute Key conforming to the + // "aws.dynamodb.limit" semantic conventions. It represents the value of the + // `Limit` request parameter. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 10 + AWSDynamoDBLimitKey = attribute.Key("aws.dynamodb.limit") + + // AWSDynamoDBLocalSecondaryIndexesKey is the attribute Key conforming to the + // "aws.dynamodb.local_secondary_indexes" semantic conventions. It represents + // the JSON-serialized value of each item of the `LocalSecondaryIndexes` request + // field. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "{ "IndexArn": "string", "IndexName": "string", "IndexSizeBytes": + // number, "ItemCount": number, "KeySchema": [ { "AttributeName": "string", + // "KeyType": "string" } ], "Projection": { "NonKeyAttributes": [ "string" ], + // "ProjectionType": "string" } }" + AWSDynamoDBLocalSecondaryIndexesKey = attribute.Key("aws.dynamodb.local_secondary_indexes") + + // AWSDynamoDBProjectionKey is the attribute Key conforming to the + // "aws.dynamodb.projection" semantic conventions. It represents the value of + // the `ProjectionExpression` request parameter. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Title", "Title, Price, Color", "Title, Description, RelatedItems, + // ProductReviews" + AWSDynamoDBProjectionKey = attribute.Key("aws.dynamodb.projection") + + // AWSDynamoDBProvisionedReadCapacityKey is the attribute Key conforming to the + // "aws.dynamodb.provisioned_read_capacity" semantic conventions. It represents + // the value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1.0, 2.0 + AWSDynamoDBProvisionedReadCapacityKey = attribute.Key("aws.dynamodb.provisioned_read_capacity") + + // AWSDynamoDBProvisionedWriteCapacityKey is the attribute Key conforming to the + // "aws.dynamodb.provisioned_write_capacity" semantic conventions. It represents + // the value of the `ProvisionedThroughput.WriteCapacityUnits` request + // parameter. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1.0, 2.0 + AWSDynamoDBProvisionedWriteCapacityKey = attribute.Key("aws.dynamodb.provisioned_write_capacity") + + // AWSDynamoDBScanForwardKey is the attribute Key conforming to the + // "aws.dynamodb.scan_forward" semantic conventions. It represents the value of + // the `ScanIndexForward` request parameter. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + AWSDynamoDBScanForwardKey = attribute.Key("aws.dynamodb.scan_forward") + + // AWSDynamoDBScannedCountKey is the attribute Key conforming to the + // "aws.dynamodb.scanned_count" semantic conventions. It represents the value of + // the `ScannedCount` response parameter. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 50 + AWSDynamoDBScannedCountKey = attribute.Key("aws.dynamodb.scanned_count") + + // AWSDynamoDBSegmentKey is the attribute Key conforming to the + // "aws.dynamodb.segment" semantic conventions. It represents the value of the + // `Segment` request parameter. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 10 + AWSDynamoDBSegmentKey = attribute.Key("aws.dynamodb.segment") + + // AWSDynamoDBSelectKey is the attribute Key conforming to the + // "aws.dynamodb.select" semantic conventions. It represents the value of the + // `Select` request parameter. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "ALL_ATTRIBUTES", "COUNT" + AWSDynamoDBSelectKey = attribute.Key("aws.dynamodb.select") + + // AWSDynamoDBTableCountKey is the attribute Key conforming to the + // "aws.dynamodb.table_count" semantic conventions. It represents the number of + // items in the `TableNames` response parameter. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 20 + AWSDynamoDBTableCountKey = attribute.Key("aws.dynamodb.table_count") + + // AWSDynamoDBTableNamesKey is the attribute Key conforming to the + // "aws.dynamodb.table_names" semantic conventions. It represents the keys in + // the `RequestItems` object field. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Users", "Cats" + AWSDynamoDBTableNamesKey = attribute.Key("aws.dynamodb.table_names") + + // AWSDynamoDBTotalSegmentsKey is the attribute Key conforming to the + // "aws.dynamodb.total_segments" semantic conventions. It represents the value + // of the `TotalSegments` request parameter. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 100 + AWSDynamoDBTotalSegmentsKey = attribute.Key("aws.dynamodb.total_segments") + + // AWSECSClusterARNKey is the attribute Key conforming to the + // "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an + // [ECS cluster]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster" + // + // [ECS cluster]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html + AWSECSClusterARNKey = attribute.Key("aws.ecs.cluster.arn") + + // AWSECSContainerARNKey is the attribute Key conforming to the + // "aws.ecs.container.arn" semantic conventions. It represents the Amazon + // Resource Name (ARN) of an [ECS container instance]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "arn:aws:ecs:us-west-1:123456789123:container/32624152-9086-4f0e-acae-1a75b14fe4d9" + // + // [ECS container instance]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html + AWSECSContainerARNKey = attribute.Key("aws.ecs.container.arn") + + // AWSECSLaunchtypeKey is the attribute Key conforming to the + // "aws.ecs.launchtype" semantic conventions. It represents the [launch type] + // for an ECS task. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [launch type]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html + AWSECSLaunchtypeKey = attribute.Key("aws.ecs.launchtype") + + // AWSECSTaskARNKey is the attribute Key conforming to the "aws.ecs.task.arn" + // semantic conventions. It represents the ARN of a running [ECS task]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "arn:aws:ecs:us-west-1:123456789123:task/10838bed-421f-43ef-870a-f43feacbbb5b", + // "arn:aws:ecs:us-west-1:123456789123:task/my-cluster/task-id/23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd" + // + // [ECS task]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids + AWSECSTaskARNKey = attribute.Key("aws.ecs.task.arn") + + // AWSECSTaskFamilyKey is the attribute Key conforming to the + // "aws.ecs.task.family" semantic conventions. It represents the family name of + // the [ECS task definition] used to create the ECS task. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry-family" + // + // [ECS task definition]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html + AWSECSTaskFamilyKey = attribute.Key("aws.ecs.task.family") + + // AWSECSTaskIDKey is the attribute Key conforming to the "aws.ecs.task.id" + // semantic conventions. It represents the ID of a running ECS task. The ID MUST + // be extracted from `task.arn`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "10838bed-421f-43ef-870a-f43feacbbb5b", + // "23ebb8ac-c18f-46c6-8bbe-d55d0e37cfbd" + AWSECSTaskIDKey = attribute.Key("aws.ecs.task.id") + + // AWSECSTaskRevisionKey is the attribute Key conforming to the + // "aws.ecs.task.revision" semantic conventions. It represents the revision for + // the task definition used to create the ECS task. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "8", "26" + AWSECSTaskRevisionKey = attribute.Key("aws.ecs.task.revision") + + // AWSEKSClusterARNKey is the attribute Key conforming to the + // "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an EKS + // cluster. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:ecs:us-west-2:123456789123:cluster/my-cluster" + AWSEKSClusterARNKey = attribute.Key("aws.eks.cluster.arn") + + // AWSExtendedRequestIDKey is the attribute Key conforming to the + // "aws.extended_request_id" semantic conventions. It represents the AWS + // extended request ID as returned in the response header `x-amz-id-2`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "wzHcyEWfmOGDIE5QOhTAqFDoDWP3y8IUvpNINCwL9N4TEHbUw0/gZJ+VZTmCNCWR7fezEN3eCiQ=" + AWSExtendedRequestIDKey = attribute.Key("aws.extended_request_id") + + // AWSKinesisStreamNameKey is the attribute Key conforming to the + // "aws.kinesis.stream_name" semantic conventions. It represents the name of the + // AWS Kinesis [stream] the request refers to. Corresponds to the + // `--stream-name` parameter of the Kinesis [describe-stream] operation. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "some-stream-name" + // + // [stream]: https://docs.aws.amazon.com/streams/latest/dev/introduction.html + // [describe-stream]: https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html + AWSKinesisStreamNameKey = attribute.Key("aws.kinesis.stream_name") + + // AWSLambdaInvokedARNKey is the attribute Key conforming to the + // "aws.lambda.invoked_arn" semantic conventions. It represents the full invoked + // ARN as provided on the `Context` passed to the function ( + // `Lambda-Runtime-Invoked-Function-Arn` header on the + // `/runtime/invocation/next` applicable). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:lambda:us-east-1:123456:function:myfunction:myalias" + // Note: This may be different from `cloud.resource_id` if an alias is involved. + AWSLambdaInvokedARNKey = attribute.Key("aws.lambda.invoked_arn") + + // AWSLambdaResourceMappingIDKey is the attribute Key conforming to the + // "aws.lambda.resource_mapping.id" semantic conventions. It represents the UUID + // of the [AWS Lambda EvenSource Mapping]. An event source is mapped to a lambda + // function. It's contents are read by Lambda and used to trigger a function. + // This isn't available in the lambda execution context or the lambda runtime + // environtment. This is going to be populated by the AWS SDK for each language + // when that UUID is present. Some of these operations are + // Create/Delete/Get/List/Update EventSourceMapping. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "587ad24b-03b9-4413-8202-bbd56b36e5b7" + // + // [AWS Lambda EvenSource Mapping]: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html + AWSLambdaResourceMappingIDKey = attribute.Key("aws.lambda.resource_mapping.id") + + // AWSLogGroupARNsKey is the attribute Key conforming to the + // "aws.log.group.arns" semantic conventions. It represents the Amazon Resource + // Name(s) (ARN) of the AWS log group(s). + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:*" + // Note: See the [log group ARN format documentation]. + // + // [log group ARN format documentation]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format + AWSLogGroupARNsKey = attribute.Key("aws.log.group.arns") + + // AWSLogGroupNamesKey is the attribute Key conforming to the + // "aws.log.group.names" semantic conventions. It represents the name(s) of the + // AWS log group(s) an application is writing to. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/aws/lambda/my-function", "opentelemetry-service" + // Note: Multiple log groups must be supported for cases like multi-container + // applications, where a single application has sidecar containers, and each + // write to their own log group. + AWSLogGroupNamesKey = attribute.Key("aws.log.group.names") + + // AWSLogStreamARNsKey is the attribute Key conforming to the + // "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of the + // AWS log stream(s). + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "arn:aws:logs:us-west-1:123456789012:log-group:/aws/my/group:log-stream:logs/main/10838bed-421f-43ef-870a-f43feacbbb5b" + // Note: See the [log stream ARN format documentation]. One log group can + // contain several log streams, so these ARNs necessarily identify both a log + // group and a log stream. + // + // [log stream ARN format documentation]: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format + AWSLogStreamARNsKey = attribute.Key("aws.log.stream.arns") + + // AWSLogStreamNamesKey is the attribute Key conforming to the + // "aws.log.stream.names" semantic conventions. It represents the name(s) of the + // AWS log stream(s) an application is writing to. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "logs/main/10838bed-421f-43ef-870a-f43feacbbb5b" + AWSLogStreamNamesKey = attribute.Key("aws.log.stream.names") + + // AWSRequestIDKey is the attribute Key conforming to the "aws.request_id" + // semantic conventions. It represents the AWS request ID as returned in the + // response headers `x-amzn-requestid`, `x-amzn-request-id` or + // `x-amz-request-id`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "79b9da39-b7ae-508a-a6bc-864b2829c622", "C9ER4AJX75574TDJ" + AWSRequestIDKey = attribute.Key("aws.request_id") + + // AWSS3BucketKey is the attribute Key conforming to the "aws.s3.bucket" + // semantic conventions. It represents the S3 bucket name the request refers to. + // Corresponds to the `--bucket` parameter of the [S3 API] operations. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "some-bucket-name" + // Note: The `bucket` attribute is applicable to all S3 operations that + // reference a bucket, i.e. that require the bucket name as a mandatory + // parameter. + // This applies to almost all S3 operations except `list-buckets`. + // + // [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html + AWSS3BucketKey = attribute.Key("aws.s3.bucket") + + // AWSS3CopySourceKey is the attribute Key conforming to the + // "aws.s3.copy_source" semantic conventions. It represents the source object + // (in the form `bucket`/`key`) for the copy operation. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "someFile.yml" + // Note: The `copy_source` attribute applies to S3 copy operations and + // corresponds to the `--copy-source` parameter + // of the [copy-object operation within the S3 API]. + // This applies in particular to the following operations: + // + // - [copy-object] + // - [upload-part-copy] + // + // + // [copy-object operation within the S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html + // [copy-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html + // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html + AWSS3CopySourceKey = attribute.Key("aws.s3.copy_source") + + // AWSS3DeleteKey is the attribute Key conforming to the "aws.s3.delete" + // semantic conventions. It represents the delete request container that + // specifies the objects to be deleted. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean" + // Note: The `delete` attribute is only applicable to the [delete-object] + // operation. + // The `delete` attribute corresponds to the `--delete` parameter of the + // [delete-objects operation within the S3 API]. + // + // [delete-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html + // [delete-objects operation within the S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-objects.html + AWSS3DeleteKey = attribute.Key("aws.s3.delete") + + // AWSS3KeyKey is the attribute Key conforming to the "aws.s3.key" semantic + // conventions. It represents the S3 object key the request refers to. + // Corresponds to the `--key` parameter of the [S3 API] operations. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "someFile.yml" + // Note: The `key` attribute is applicable to all object-related S3 operations, + // i.e. that require the object key as a mandatory parameter. + // This applies in particular to the following operations: + // + // - [copy-object] + // - [delete-object] + // - [get-object] + // - [head-object] + // - [put-object] + // - [restore-object] + // - [select-object-content] + // - [abort-multipart-upload] + // - [complete-multipart-upload] + // - [create-multipart-upload] + // - [list-parts] + // - [upload-part] + // - [upload-part-copy] + // + // + // [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html + // [copy-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html + // [delete-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html + // [get-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html + // [head-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/head-object.html + // [put-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html + // [restore-object]: https://docs.aws.amazon.com/cli/latest/reference/s3api/restore-object.html + // [select-object-content]: https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html + // [abort-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html + // [complete-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html + // [create-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/create-multipart-upload.html + // [list-parts]: https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html + // [upload-part]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html + // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html + AWSS3KeyKey = attribute.Key("aws.s3.key") + + // AWSS3PartNumberKey is the attribute Key conforming to the + // "aws.s3.part_number" semantic conventions. It represents the part number of + // the part being uploaded in a multipart-upload operation. This is a positive + // integer between 1 and 10,000. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 3456 + // Note: The `part_number` attribute is only applicable to the [upload-part] + // and [upload-part-copy] operations. + // The `part_number` attribute corresponds to the `--part-number` parameter of + // the + // [upload-part operation within the S3 API]. + // + // [upload-part]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html + // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html + // [upload-part operation within the S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html + AWSS3PartNumberKey = attribute.Key("aws.s3.part_number") + + // AWSS3UploadIDKey is the attribute Key conforming to the "aws.s3.upload_id" + // semantic conventions. It represents the upload ID that identifies the + // multipart upload. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "dfRtDYWFbkRONycy.Yxwh66Yjlx.cph0gtNBtJ" + // Note: The `upload_id` attribute applies to S3 multipart-upload operations and + // corresponds to the `--upload-id` parameter + // of the [S3 API] multipart operations. + // This applies in particular to the following operations: + // + // - [abort-multipart-upload] + // - [complete-multipart-upload] + // - [list-parts] + // - [upload-part] + // - [upload-part-copy] + // + // + // [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html + // [abort-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html + // [complete-multipart-upload]: https://docs.aws.amazon.com/cli/latest/reference/s3api/complete-multipart-upload.html + // [list-parts]: https://docs.aws.amazon.com/cli/latest/reference/s3api/list-parts.html + // [upload-part]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part.html + // [upload-part-copy]: https://docs.aws.amazon.com/cli/latest/reference/s3api/upload-part-copy.html + AWSS3UploadIDKey = attribute.Key("aws.s3.upload_id") + + // AWSSecretsmanagerSecretARNKey is the attribute Key conforming to the + // "aws.secretsmanager.secret.arn" semantic conventions. It represents the ARN + // of the Secret stored in the Secrets Mangger. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters" + AWSSecretsmanagerSecretARNKey = attribute.Key("aws.secretsmanager.secret.arn") + + // AWSSNSTopicARNKey is the attribute Key conforming to the "aws.sns.topic.arn" + // semantic conventions. It represents the ARN of the AWS SNS Topic. An Amazon + // SNS [topic] is a logical access point that acts as a communication channel. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE" + // + // [topic]: https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html + AWSSNSTopicARNKey = attribute.Key("aws.sns.topic.arn") + + // AWSSQSQueueURLKey is the attribute Key conforming to the "aws.sqs.queue.url" + // semantic conventions. It represents the URL of the AWS SQS Queue. It's a + // unique identifier for a queue in Amazon Simple Queue Service (SQS) and is + // used to access the queue and perform actions on it. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" + AWSSQSQueueURLKey = attribute.Key("aws.sqs.queue.url") + + // AWSStepFunctionsActivityARNKey is the attribute Key conforming to the + // "aws.step_functions.activity.arn" semantic conventions. It represents the ARN + // of the AWS Step Functions Activity. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:states:us-east-1:123456789012:activity:get-greeting" + AWSStepFunctionsActivityARNKey = attribute.Key("aws.step_functions.activity.arn") + + // AWSStepFunctionsStateMachineARNKey is the attribute Key conforming to the + // "aws.step_functions.state_machine.arn" semantic conventions. It represents + // the ARN of the AWS Step Functions State Machine. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1" + AWSStepFunctionsStateMachineARNKey = attribute.Key("aws.step_functions.state_machine.arn") +) + +// AWSBedrockGuardrailID returns an attribute KeyValue conforming to the +// "aws.bedrock.guardrail.id" semantic conventions. It represents the unique +// identifier of the AWS Bedrock Guardrail. A [guardrail] helps safeguard and +// prevent unwanted behavior from model responses or user messages. +// +// [guardrail]: https://docs.aws.amazon.com/bedrock/latest/userguide/guardrails.html +func AWSBedrockGuardrailID(val string) attribute.KeyValue { + return AWSBedrockGuardrailIDKey.String(val) +} + +// AWSBedrockKnowledgeBaseID returns an attribute KeyValue conforming to the +// "aws.bedrock.knowledge_base.id" semantic conventions. It represents the unique +// identifier of the AWS Bedrock Knowledge base. A [knowledge base] is a bank of +// information that can be queried by models to generate more relevant responses +// and augment prompts. +// +// [knowledge base]: https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html +func AWSBedrockKnowledgeBaseID(val string) attribute.KeyValue { + return AWSBedrockKnowledgeBaseIDKey.String(val) +} + +// AWSDynamoDBAttributeDefinitions returns an attribute KeyValue conforming to +// the "aws.dynamodb.attribute_definitions" semantic conventions. It represents +// the JSON-serialized value of each item in the `AttributeDefinitions` request +// field. +func AWSDynamoDBAttributeDefinitions(val ...string) attribute.KeyValue { + return AWSDynamoDBAttributeDefinitionsKey.StringSlice(val) +} + +// AWSDynamoDBAttributesToGet returns an attribute KeyValue conforming to the +// "aws.dynamodb.attributes_to_get" semantic conventions. It represents the value +// of the `AttributesToGet` request parameter. +func AWSDynamoDBAttributesToGet(val ...string) attribute.KeyValue { + return AWSDynamoDBAttributesToGetKey.StringSlice(val) +} + +// AWSDynamoDBConsistentRead returns an attribute KeyValue conforming to the +// "aws.dynamodb.consistent_read" semantic conventions. It represents the value +// of the `ConsistentRead` request parameter. +func AWSDynamoDBConsistentRead(val bool) attribute.KeyValue { + return AWSDynamoDBConsistentReadKey.Bool(val) +} + +// AWSDynamoDBConsumedCapacity returns an attribute KeyValue conforming to the +// "aws.dynamodb.consumed_capacity" semantic conventions. It represents the +// JSON-serialized value of each item in the `ConsumedCapacity` response field. +func AWSDynamoDBConsumedCapacity(val ...string) attribute.KeyValue { + return AWSDynamoDBConsumedCapacityKey.StringSlice(val) +} + +// AWSDynamoDBCount returns an attribute KeyValue conforming to the +// "aws.dynamodb.count" semantic conventions. It represents the value of the +// `Count` response parameter. +func AWSDynamoDBCount(val int) attribute.KeyValue { + return AWSDynamoDBCountKey.Int(val) +} + +// AWSDynamoDBExclusiveStartTable returns an attribute KeyValue conforming to the +// "aws.dynamodb.exclusive_start_table" semantic conventions. It represents the +// value of the `ExclusiveStartTableName` request parameter. +func AWSDynamoDBExclusiveStartTable(val string) attribute.KeyValue { + return AWSDynamoDBExclusiveStartTableKey.String(val) +} + +// AWSDynamoDBGlobalSecondaryIndexUpdates returns an attribute KeyValue +// conforming to the "aws.dynamodb.global_secondary_index_updates" semantic +// conventions. It represents the JSON-serialized value of each item in the +// `GlobalSecondaryIndexUpdates` request field. +func AWSDynamoDBGlobalSecondaryIndexUpdates(val ...string) attribute.KeyValue { + return AWSDynamoDBGlobalSecondaryIndexUpdatesKey.StringSlice(val) +} + +// AWSDynamoDBGlobalSecondaryIndexes returns an attribute KeyValue conforming to +// the "aws.dynamodb.global_secondary_indexes" semantic conventions. It +// represents the JSON-serialized value of each item of the +// `GlobalSecondaryIndexes` request field. +func AWSDynamoDBGlobalSecondaryIndexes(val ...string) attribute.KeyValue { + return AWSDynamoDBGlobalSecondaryIndexesKey.StringSlice(val) +} + +// AWSDynamoDBIndexName returns an attribute KeyValue conforming to the +// "aws.dynamodb.index_name" semantic conventions. It represents the value of the +// `IndexName` request parameter. +func AWSDynamoDBIndexName(val string) attribute.KeyValue { + return AWSDynamoDBIndexNameKey.String(val) +} + +// AWSDynamoDBItemCollectionMetrics returns an attribute KeyValue conforming to +// the "aws.dynamodb.item_collection_metrics" semantic conventions. It represents +// the JSON-serialized value of the `ItemCollectionMetrics` response field. +func AWSDynamoDBItemCollectionMetrics(val string) attribute.KeyValue { + return AWSDynamoDBItemCollectionMetricsKey.String(val) +} + +// AWSDynamoDBLimit returns an attribute KeyValue conforming to the +// "aws.dynamodb.limit" semantic conventions. It represents the value of the +// `Limit` request parameter. +func AWSDynamoDBLimit(val int) attribute.KeyValue { + return AWSDynamoDBLimitKey.Int(val) +} + +// AWSDynamoDBLocalSecondaryIndexes returns an attribute KeyValue conforming to +// the "aws.dynamodb.local_secondary_indexes" semantic conventions. It represents +// the JSON-serialized value of each item of the `LocalSecondaryIndexes` request +// field. +func AWSDynamoDBLocalSecondaryIndexes(val ...string) attribute.KeyValue { + return AWSDynamoDBLocalSecondaryIndexesKey.StringSlice(val) +} + +// AWSDynamoDBProjection returns an attribute KeyValue conforming to the +// "aws.dynamodb.projection" semantic conventions. It represents the value of the +// `ProjectionExpression` request parameter. +func AWSDynamoDBProjection(val string) attribute.KeyValue { + return AWSDynamoDBProjectionKey.String(val) +} + +// AWSDynamoDBProvisionedReadCapacity returns an attribute KeyValue conforming to +// the "aws.dynamodb.provisioned_read_capacity" semantic conventions. It +// represents the value of the `ProvisionedThroughput.ReadCapacityUnits` request +// parameter. +func AWSDynamoDBProvisionedReadCapacity(val float64) attribute.KeyValue { + return AWSDynamoDBProvisionedReadCapacityKey.Float64(val) +} + +// AWSDynamoDBProvisionedWriteCapacity returns an attribute KeyValue conforming +// to the "aws.dynamodb.provisioned_write_capacity" semantic conventions. It +// represents the value of the `ProvisionedThroughput.WriteCapacityUnits` request +// parameter. +func AWSDynamoDBProvisionedWriteCapacity(val float64) attribute.KeyValue { + return AWSDynamoDBProvisionedWriteCapacityKey.Float64(val) +} + +// AWSDynamoDBScanForward returns an attribute KeyValue conforming to the +// "aws.dynamodb.scan_forward" semantic conventions. It represents the value of +// the `ScanIndexForward` request parameter. +func AWSDynamoDBScanForward(val bool) attribute.KeyValue { + return AWSDynamoDBScanForwardKey.Bool(val) +} + +// AWSDynamoDBScannedCount returns an attribute KeyValue conforming to the +// "aws.dynamodb.scanned_count" semantic conventions. It represents the value of +// the `ScannedCount` response parameter. +func AWSDynamoDBScannedCount(val int) attribute.KeyValue { + return AWSDynamoDBScannedCountKey.Int(val) +} + +// AWSDynamoDBSegment returns an attribute KeyValue conforming to the +// "aws.dynamodb.segment" semantic conventions. It represents the value of the +// `Segment` request parameter. +func AWSDynamoDBSegment(val int) attribute.KeyValue { + return AWSDynamoDBSegmentKey.Int(val) +} + +// AWSDynamoDBSelect returns an attribute KeyValue conforming to the +// "aws.dynamodb.select" semantic conventions. It represents the value of the +// `Select` request parameter. +func AWSDynamoDBSelect(val string) attribute.KeyValue { + return AWSDynamoDBSelectKey.String(val) +} + +// AWSDynamoDBTableCount returns an attribute KeyValue conforming to the +// "aws.dynamodb.table_count" semantic conventions. It represents the number of +// items in the `TableNames` response parameter. +func AWSDynamoDBTableCount(val int) attribute.KeyValue { + return AWSDynamoDBTableCountKey.Int(val) +} + +// AWSDynamoDBTableNames returns an attribute KeyValue conforming to the +// "aws.dynamodb.table_names" semantic conventions. It represents the keys in the +// `RequestItems` object field. +func AWSDynamoDBTableNames(val ...string) attribute.KeyValue { + return AWSDynamoDBTableNamesKey.StringSlice(val) +} + +// AWSDynamoDBTotalSegments returns an attribute KeyValue conforming to the +// "aws.dynamodb.total_segments" semantic conventions. It represents the value of +// the `TotalSegments` request parameter. +func AWSDynamoDBTotalSegments(val int) attribute.KeyValue { + return AWSDynamoDBTotalSegmentsKey.Int(val) +} + +// AWSECSClusterARN returns an attribute KeyValue conforming to the +// "aws.ecs.cluster.arn" semantic conventions. It represents the ARN of an +// [ECS cluster]. +// +// [ECS cluster]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html +func AWSECSClusterARN(val string) attribute.KeyValue { + return AWSECSClusterARNKey.String(val) +} + +// AWSECSContainerARN returns an attribute KeyValue conforming to the +// "aws.ecs.container.arn" semantic conventions. It represents the Amazon +// Resource Name (ARN) of an [ECS container instance]. +// +// [ECS container instance]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html +func AWSECSContainerARN(val string) attribute.KeyValue { + return AWSECSContainerARNKey.String(val) +} + +// AWSECSTaskARN returns an attribute KeyValue conforming to the +// "aws.ecs.task.arn" semantic conventions. It represents the ARN of a running +// [ECS task]. +// +// [ECS task]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids +func AWSECSTaskARN(val string) attribute.KeyValue { + return AWSECSTaskARNKey.String(val) +} + +// AWSECSTaskFamily returns an attribute KeyValue conforming to the +// "aws.ecs.task.family" semantic conventions. It represents the family name of +// the [ECS task definition] used to create the ECS task. +// +// [ECS task definition]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html +func AWSECSTaskFamily(val string) attribute.KeyValue { + return AWSECSTaskFamilyKey.String(val) +} + +// AWSECSTaskID returns an attribute KeyValue conforming to the "aws.ecs.task.id" +// semantic conventions. It represents the ID of a running ECS task. The ID MUST +// be extracted from `task.arn`. +func AWSECSTaskID(val string) attribute.KeyValue { + return AWSECSTaskIDKey.String(val) +} + +// AWSECSTaskRevision returns an attribute KeyValue conforming to the +// "aws.ecs.task.revision" semantic conventions. It represents the revision for +// the task definition used to create the ECS task. +func AWSECSTaskRevision(val string) attribute.KeyValue { + return AWSECSTaskRevisionKey.String(val) +} + +// AWSEKSClusterARN returns an attribute KeyValue conforming to the +// "aws.eks.cluster.arn" semantic conventions. It represents the ARN of an EKS +// cluster. +func AWSEKSClusterARN(val string) attribute.KeyValue { + return AWSEKSClusterARNKey.String(val) +} + +// AWSExtendedRequestID returns an attribute KeyValue conforming to the +// "aws.extended_request_id" semantic conventions. It represents the AWS extended +// request ID as returned in the response header `x-amz-id-2`. +func AWSExtendedRequestID(val string) attribute.KeyValue { + return AWSExtendedRequestIDKey.String(val) +} + +// AWSKinesisStreamName returns an attribute KeyValue conforming to the +// "aws.kinesis.stream_name" semantic conventions. It represents the name of the +// AWS Kinesis [stream] the request refers to. Corresponds to the `--stream-name` +// parameter of the Kinesis [describe-stream] operation. +// +// [stream]: https://docs.aws.amazon.com/streams/latest/dev/introduction.html +// [describe-stream]: https://docs.aws.amazon.com/cli/latest/reference/kinesis/describe-stream.html +func AWSKinesisStreamName(val string) attribute.KeyValue { + return AWSKinesisStreamNameKey.String(val) +} + +// AWSLambdaInvokedARN returns an attribute KeyValue conforming to the +// "aws.lambda.invoked_arn" semantic conventions. It represents the full invoked +// ARN as provided on the `Context` passed to the function ( +// `Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` +// applicable). +func AWSLambdaInvokedARN(val string) attribute.KeyValue { + return AWSLambdaInvokedARNKey.String(val) +} + +// AWSLambdaResourceMappingID returns an attribute KeyValue conforming to the +// "aws.lambda.resource_mapping.id" semantic conventions. It represents the UUID +// of the [AWS Lambda EvenSource Mapping]. An event source is mapped to a lambda +// function. It's contents are read by Lambda and used to trigger a function. +// This isn't available in the lambda execution context or the lambda runtime +// environtment. This is going to be populated by the AWS SDK for each language +// when that UUID is present. Some of these operations are +// Create/Delete/Get/List/Update EventSourceMapping. +// +// [AWS Lambda EvenSource Mapping]: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html +func AWSLambdaResourceMappingID(val string) attribute.KeyValue { + return AWSLambdaResourceMappingIDKey.String(val) +} + +// AWSLogGroupARNs returns an attribute KeyValue conforming to the +// "aws.log.group.arns" semantic conventions. It represents the Amazon Resource +// Name(s) (ARN) of the AWS log group(s). +func AWSLogGroupARNs(val ...string) attribute.KeyValue { + return AWSLogGroupARNsKey.StringSlice(val) +} + +// AWSLogGroupNames returns an attribute KeyValue conforming to the +// "aws.log.group.names" semantic conventions. It represents the name(s) of the +// AWS log group(s) an application is writing to. +func AWSLogGroupNames(val ...string) attribute.KeyValue { + return AWSLogGroupNamesKey.StringSlice(val) +} + +// AWSLogStreamARNs returns an attribute KeyValue conforming to the +// "aws.log.stream.arns" semantic conventions. It represents the ARN(s) of the +// AWS log stream(s). +func AWSLogStreamARNs(val ...string) attribute.KeyValue { + return AWSLogStreamARNsKey.StringSlice(val) +} + +// AWSLogStreamNames returns an attribute KeyValue conforming to the +// "aws.log.stream.names" semantic conventions. It represents the name(s) of the +// AWS log stream(s) an application is writing to. +func AWSLogStreamNames(val ...string) attribute.KeyValue { + return AWSLogStreamNamesKey.StringSlice(val) +} + +// AWSRequestID returns an attribute KeyValue conforming to the "aws.request_id" +// semantic conventions. It represents the AWS request ID as returned in the +// response headers `x-amzn-requestid`, `x-amzn-request-id` or `x-amz-request-id` +// . +func AWSRequestID(val string) attribute.KeyValue { + return AWSRequestIDKey.String(val) +} + +// AWSS3Bucket returns an attribute KeyValue conforming to the "aws.s3.bucket" +// semantic conventions. It represents the S3 bucket name the request refers to. +// Corresponds to the `--bucket` parameter of the [S3 API] operations. +// +// [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html +func AWSS3Bucket(val string) attribute.KeyValue { + return AWSS3BucketKey.String(val) +} + +// AWSS3CopySource returns an attribute KeyValue conforming to the +// "aws.s3.copy_source" semantic conventions. It represents the source object (in +// the form `bucket`/`key`) for the copy operation. +func AWSS3CopySource(val string) attribute.KeyValue { + return AWSS3CopySourceKey.String(val) +} + +// AWSS3Delete returns an attribute KeyValue conforming to the "aws.s3.delete" +// semantic conventions. It represents the delete request container that +// specifies the objects to be deleted. +func AWSS3Delete(val string) attribute.KeyValue { + return AWSS3DeleteKey.String(val) +} + +// AWSS3Key returns an attribute KeyValue conforming to the "aws.s3.key" semantic +// conventions. It represents the S3 object key the request refers to. +// Corresponds to the `--key` parameter of the [S3 API] operations. +// +// [S3 API]: https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html +func AWSS3Key(val string) attribute.KeyValue { + return AWSS3KeyKey.String(val) +} + +// AWSS3PartNumber returns an attribute KeyValue conforming to the +// "aws.s3.part_number" semantic conventions. It represents the part number of +// the part being uploaded in a multipart-upload operation. This is a positive +// integer between 1 and 10,000. +func AWSS3PartNumber(val int) attribute.KeyValue { + return AWSS3PartNumberKey.Int(val) +} + +// AWSS3UploadID returns an attribute KeyValue conforming to the +// "aws.s3.upload_id" semantic conventions. It represents the upload ID that +// identifies the multipart upload. +func AWSS3UploadID(val string) attribute.KeyValue { + return AWSS3UploadIDKey.String(val) +} + +// AWSSecretsmanagerSecretARN returns an attribute KeyValue conforming to the +// "aws.secretsmanager.secret.arn" semantic conventions. It represents the ARN of +// the Secret stored in the Secrets Mangger. +func AWSSecretsmanagerSecretARN(val string) attribute.KeyValue { + return AWSSecretsmanagerSecretARNKey.String(val) +} + +// AWSSNSTopicARN returns an attribute KeyValue conforming to the +// "aws.sns.topic.arn" semantic conventions. It represents the ARN of the AWS SNS +// Topic. An Amazon SNS [topic] is a logical access point that acts as a +// communication channel. +// +// [topic]: https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html +func AWSSNSTopicARN(val string) attribute.KeyValue { + return AWSSNSTopicARNKey.String(val) +} + +// AWSSQSQueueURL returns an attribute KeyValue conforming to the +// "aws.sqs.queue.url" semantic conventions. It represents the URL of the AWS SQS +// Queue. It's a unique identifier for a queue in Amazon Simple Queue Service +// (SQS) and is used to access the queue and perform actions on it. +func AWSSQSQueueURL(val string) attribute.KeyValue { + return AWSSQSQueueURLKey.String(val) +} + +// AWSStepFunctionsActivityARN returns an attribute KeyValue conforming to the +// "aws.step_functions.activity.arn" semantic conventions. It represents the ARN +// of the AWS Step Functions Activity. +func AWSStepFunctionsActivityARN(val string) attribute.KeyValue { + return AWSStepFunctionsActivityARNKey.String(val) +} + +// AWSStepFunctionsStateMachineARN returns an attribute KeyValue conforming to +// the "aws.step_functions.state_machine.arn" semantic conventions. It represents +// the ARN of the AWS Step Functions State Machine. +func AWSStepFunctionsStateMachineARN(val string) attribute.KeyValue { + return AWSStepFunctionsStateMachineARNKey.String(val) +} + +// Enum values for aws.ecs.launchtype +var ( + // Amazon EC2 + // Stability: development + AWSECSLaunchtypeEC2 = AWSECSLaunchtypeKey.String("ec2") + // Amazon Fargate + // Stability: development + AWSECSLaunchtypeFargate = AWSECSLaunchtypeKey.String("fargate") +) + +// Namespace: azure +const ( + // AzureClientIDKey is the attribute Key conforming to the "azure.client.id" + // semantic conventions. It represents the unique identifier of the client + // instance. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "3ba4827d-4422-483f-b59f-85b74211c11d", "storage-client-1" + AzureClientIDKey = attribute.Key("azure.client.id") + + // AzureCosmosDBConnectionModeKey is the attribute Key conforming to the + // "azure.cosmosdb.connection.mode" semantic conventions. It represents the + // cosmos client connection mode. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + AzureCosmosDBConnectionModeKey = attribute.Key("azure.cosmosdb.connection.mode") + + // AzureCosmosDBConsistencyLevelKey is the attribute Key conforming to the + // "azure.cosmosdb.consistency.level" semantic conventions. It represents the + // account or request [consistency level]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Eventual", "ConsistentPrefix", "BoundedStaleness", "Strong", + // "Session" + // + // [consistency level]: https://learn.microsoft.com/azure/cosmos-db/consistency-levels + AzureCosmosDBConsistencyLevelKey = attribute.Key("azure.cosmosdb.consistency.level") + + // AzureCosmosDBOperationContactedRegionsKey is the attribute Key conforming to + // the "azure.cosmosdb.operation.contacted_regions" semantic conventions. It + // represents the list of regions contacted during operation in the order that + // they were contacted. If there is more than one region listed, it indicates + // that the operation was performed on multiple regions i.e. cross-regional + // call. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "North Central US", "Australia East", "Australia Southeast" + // Note: Region name matches the format of `displayName` in [Azure Location API] + // + // [Azure Location API]: https://learn.microsoft.com/rest/api/subscription/subscriptions/list-locations?view=rest-subscription-2021-10-01&tabs=HTTP#location + AzureCosmosDBOperationContactedRegionsKey = attribute.Key("azure.cosmosdb.operation.contacted_regions") + + // AzureCosmosDBOperationRequestChargeKey is the attribute Key conforming to the + // "azure.cosmosdb.operation.request_charge" semantic conventions. It represents + // the number of request units consumed by the operation. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 46.18, 1.0 + AzureCosmosDBOperationRequestChargeKey = attribute.Key("azure.cosmosdb.operation.request_charge") + + // AzureCosmosDBRequestBodySizeKey is the attribute Key conforming to the + // "azure.cosmosdb.request.body.size" semantic conventions. It represents the + // request payload size in bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + AzureCosmosDBRequestBodySizeKey = attribute.Key("azure.cosmosdb.request.body.size") + + // AzureCosmosDBResponseSubStatusCodeKey is the attribute Key conforming to the + // "azure.cosmosdb.response.sub_status_code" semantic conventions. It represents + // the cosmos DB sub status code. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1000, 1002 + AzureCosmosDBResponseSubStatusCodeKey = attribute.Key("azure.cosmosdb.response.sub_status_code") + + // AzureResourceProviderNamespaceKey is the attribute Key conforming to the + // "azure.resource_provider.namespace" semantic conventions. It represents the + // [Azure Resource Provider Namespace] as recognized by the client. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Microsoft.Storage", "Microsoft.KeyVault", "Microsoft.ServiceBus" + // + // [Azure Resource Provider Namespace]: https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers + AzureResourceProviderNamespaceKey = attribute.Key("azure.resource_provider.namespace") + + // AzureServiceRequestIDKey is the attribute Key conforming to the + // "azure.service.request.id" semantic conventions. It represents the unique + // identifier of the service request. It's generated by the Azure service and + // returned with the response. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "00000000-0000-0000-0000-000000000000" + AzureServiceRequestIDKey = attribute.Key("azure.service.request.id") +) + +// AzureClientID returns an attribute KeyValue conforming to the +// "azure.client.id" semantic conventions. It represents the unique identifier of +// the client instance. +func AzureClientID(val string) attribute.KeyValue { + return AzureClientIDKey.String(val) +} + +// AzureCosmosDBOperationContactedRegions returns an attribute KeyValue +// conforming to the "azure.cosmosdb.operation.contacted_regions" semantic +// conventions. It represents the list of regions contacted during operation in +// the order that they were contacted. If there is more than one region listed, +// it indicates that the operation was performed on multiple regions i.e. +// cross-regional call. +func AzureCosmosDBOperationContactedRegions(val ...string) attribute.KeyValue { + return AzureCosmosDBOperationContactedRegionsKey.StringSlice(val) +} + +// AzureCosmosDBOperationRequestCharge returns an attribute KeyValue conforming +// to the "azure.cosmosdb.operation.request_charge" semantic conventions. It +// represents the number of request units consumed by the operation. +func AzureCosmosDBOperationRequestCharge(val float64) attribute.KeyValue { + return AzureCosmosDBOperationRequestChargeKey.Float64(val) +} + +// AzureCosmosDBRequestBodySize returns an attribute KeyValue conforming to the +// "azure.cosmosdb.request.body.size" semantic conventions. It represents the +// request payload size in bytes. +func AzureCosmosDBRequestBodySize(val int) attribute.KeyValue { + return AzureCosmosDBRequestBodySizeKey.Int(val) +} + +// AzureCosmosDBResponseSubStatusCode returns an attribute KeyValue conforming to +// the "azure.cosmosdb.response.sub_status_code" semantic conventions. It +// represents the cosmos DB sub status code. +func AzureCosmosDBResponseSubStatusCode(val int) attribute.KeyValue { + return AzureCosmosDBResponseSubStatusCodeKey.Int(val) +} + +// AzureResourceProviderNamespace returns an attribute KeyValue conforming to the +// "azure.resource_provider.namespace" semantic conventions. It represents the +// [Azure Resource Provider Namespace] as recognized by the client. +// +// [Azure Resource Provider Namespace]: https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers +func AzureResourceProviderNamespace(val string) attribute.KeyValue { + return AzureResourceProviderNamespaceKey.String(val) +} + +// AzureServiceRequestID returns an attribute KeyValue conforming to the +// "azure.service.request.id" semantic conventions. It represents the unique +// identifier of the service request. It's generated by the Azure service and +// returned with the response. +func AzureServiceRequestID(val string) attribute.KeyValue { + return AzureServiceRequestIDKey.String(val) +} + +// Enum values for azure.cosmosdb.connection.mode +var ( + // Gateway (HTTP) connection. + // Stability: development + AzureCosmosDBConnectionModeGateway = AzureCosmosDBConnectionModeKey.String("gateway") + // Direct connection. + // Stability: development + AzureCosmosDBConnectionModeDirect = AzureCosmosDBConnectionModeKey.String("direct") +) + +// Enum values for azure.cosmosdb.consistency.level +var ( + // Strong + // Stability: development + AzureCosmosDBConsistencyLevelStrong = AzureCosmosDBConsistencyLevelKey.String("Strong") + // Bounded Staleness + // Stability: development + AzureCosmosDBConsistencyLevelBoundedStaleness = AzureCosmosDBConsistencyLevelKey.String("BoundedStaleness") + // Session + // Stability: development + AzureCosmosDBConsistencyLevelSession = AzureCosmosDBConsistencyLevelKey.String("Session") + // Eventual + // Stability: development + AzureCosmosDBConsistencyLevelEventual = AzureCosmosDBConsistencyLevelKey.String("Eventual") + // Consistent Prefix + // Stability: development + AzureCosmosDBConsistencyLevelConsistentPrefix = AzureCosmosDBConsistencyLevelKey.String("ConsistentPrefix") +) + +// Namespace: browser +const ( + // BrowserBrandsKey is the attribute Key conforming to the "browser.brands" + // semantic conventions. It represents the array of brand name and version + // separated by a space. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: " Not A;Brand 99", "Chromium 99", "Chrome 99" + // Note: This value is intended to be taken from the [UA client hints API] ( + // `navigator.userAgentData.brands`). + // + // [UA client hints API]: https://wicg.github.io/ua-client-hints/#interface + BrowserBrandsKey = attribute.Key("browser.brands") + + // BrowserLanguageKey is the attribute Key conforming to the "browser.language" + // semantic conventions. It represents the preferred language of the user using + // the browser. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "en", "en-US", "fr", "fr-FR" + // Note: This value is intended to be taken from the Navigator API + // `navigator.language`. + BrowserLanguageKey = attribute.Key("browser.language") + + // BrowserMobileKey is the attribute Key conforming to the "browser.mobile" + // semantic conventions. It represents a boolean that is true if the browser is + // running on a mobile device. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: This value is intended to be taken from the [UA client hints API] ( + // `navigator.userAgentData.mobile`). If unavailable, this attribute SHOULD be + // left unset. + // + // [UA client hints API]: https://wicg.github.io/ua-client-hints/#interface + BrowserMobileKey = attribute.Key("browser.mobile") + + // BrowserPlatformKey is the attribute Key conforming to the "browser.platform" + // semantic conventions. It represents the platform on which the browser is + // running. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Windows", "macOS", "Android" + // Note: This value is intended to be taken from the [UA client hints API] ( + // `navigator.userAgentData.platform`). If unavailable, the legacy + // `navigator.platform` API SHOULD NOT be used instead and this attribute SHOULD + // be left unset in order for the values to be consistent. + // The list of possible values is defined in the + // [W3C User-Agent Client Hints specification]. Note that some (but not all) of + // these values can overlap with values in the + // [`os.type` and `os.name` attributes]. However, for consistency, the values in + // the `browser.platform` attribute should capture the exact value that the user + // agent provides. + // + // [UA client hints API]: https://wicg.github.io/ua-client-hints/#interface + // [W3C User-Agent Client Hints specification]: https://wicg.github.io/ua-client-hints/#sec-ch-ua-platform + // [`os.type` and `os.name` attributes]: ./os.md + BrowserPlatformKey = attribute.Key("browser.platform") +) + +// BrowserBrands returns an attribute KeyValue conforming to the "browser.brands" +// semantic conventions. It represents the array of brand name and version +// separated by a space. +func BrowserBrands(val ...string) attribute.KeyValue { + return BrowserBrandsKey.StringSlice(val) +} + +// BrowserLanguage returns an attribute KeyValue conforming to the +// "browser.language" semantic conventions. It represents the preferred language +// of the user using the browser. +func BrowserLanguage(val string) attribute.KeyValue { + return BrowserLanguageKey.String(val) +} + +// BrowserMobile returns an attribute KeyValue conforming to the "browser.mobile" +// semantic conventions. It represents a boolean that is true if the browser is +// running on a mobile device. +func BrowserMobile(val bool) attribute.KeyValue { + return BrowserMobileKey.Bool(val) +} + +// BrowserPlatform returns an attribute KeyValue conforming to the +// "browser.platform" semantic conventions. It represents the platform on which +// the browser is running. +func BrowserPlatform(val string) attribute.KeyValue { + return BrowserPlatformKey.String(val) +} + +// Namespace: cassandra +const ( + // CassandraConsistencyLevelKey is the attribute Key conforming to the + // "cassandra.consistency.level" semantic conventions. It represents the + // consistency level of the query. Based on consistency values from [CQL]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [CQL]: https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html + CassandraConsistencyLevelKey = attribute.Key("cassandra.consistency.level") + + // CassandraCoordinatorDCKey is the attribute Key conforming to the + // "cassandra.coordinator.dc" semantic conventions. It represents the data + // center of the coordinating node for a query. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: us-west-2 + CassandraCoordinatorDCKey = attribute.Key("cassandra.coordinator.dc") + + // CassandraCoordinatorIDKey is the attribute Key conforming to the + // "cassandra.coordinator.id" semantic conventions. It represents the ID of the + // coordinating node for a query. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: be13faa2-8574-4d71-926d-27f16cf8a7af + CassandraCoordinatorIDKey = attribute.Key("cassandra.coordinator.id") + + // CassandraPageSizeKey is the attribute Key conforming to the + // "cassandra.page.size" semantic conventions. It represents the fetch size used + // for paging, i.e. how many rows will be returned at once. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 5000 + CassandraPageSizeKey = attribute.Key("cassandra.page.size") + + // CassandraQueryIdempotentKey is the attribute Key conforming to the + // "cassandra.query.idempotent" semantic conventions. It represents the whether + // or not the query is idempotent. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + CassandraQueryIdempotentKey = attribute.Key("cassandra.query.idempotent") + + // CassandraSpeculativeExecutionCountKey is the attribute Key conforming to the + // "cassandra.speculative_execution.count" semantic conventions. It represents + // the number of times a query was speculatively executed. Not set or `0` if the + // query was not executed speculatively. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0, 2 + CassandraSpeculativeExecutionCountKey = attribute.Key("cassandra.speculative_execution.count") +) + +// CassandraCoordinatorDC returns an attribute KeyValue conforming to the +// "cassandra.coordinator.dc" semantic conventions. It represents the data center +// of the coordinating node for a query. +func CassandraCoordinatorDC(val string) attribute.KeyValue { + return CassandraCoordinatorDCKey.String(val) +} + +// CassandraCoordinatorID returns an attribute KeyValue conforming to the +// "cassandra.coordinator.id" semantic conventions. It represents the ID of the +// coordinating node for a query. +func CassandraCoordinatorID(val string) attribute.KeyValue { + return CassandraCoordinatorIDKey.String(val) +} + +// CassandraPageSize returns an attribute KeyValue conforming to the +// "cassandra.page.size" semantic conventions. It represents the fetch size used +// for paging, i.e. how many rows will be returned at once. +func CassandraPageSize(val int) attribute.KeyValue { + return CassandraPageSizeKey.Int(val) +} + +// CassandraQueryIdempotent returns an attribute KeyValue conforming to the +// "cassandra.query.idempotent" semantic conventions. It represents the whether +// or not the query is idempotent. +func CassandraQueryIdempotent(val bool) attribute.KeyValue { + return CassandraQueryIdempotentKey.Bool(val) +} + +// CassandraSpeculativeExecutionCount returns an attribute KeyValue conforming to +// the "cassandra.speculative_execution.count" semantic conventions. It +// represents the number of times a query was speculatively executed. Not set or +// `0` if the query was not executed speculatively. +func CassandraSpeculativeExecutionCount(val int) attribute.KeyValue { + return CassandraSpeculativeExecutionCountKey.Int(val) +} + +// Enum values for cassandra.consistency.level +var ( + // All + // Stability: development + CassandraConsistencyLevelAll = CassandraConsistencyLevelKey.String("all") + // Each Quorum + // Stability: development + CassandraConsistencyLevelEachQuorum = CassandraConsistencyLevelKey.String("each_quorum") + // Quorum + // Stability: development + CassandraConsistencyLevelQuorum = CassandraConsistencyLevelKey.String("quorum") + // Local Quorum + // Stability: development + CassandraConsistencyLevelLocalQuorum = CassandraConsistencyLevelKey.String("local_quorum") + // One + // Stability: development + CassandraConsistencyLevelOne = CassandraConsistencyLevelKey.String("one") + // Two + // Stability: development + CassandraConsistencyLevelTwo = CassandraConsistencyLevelKey.String("two") + // Three + // Stability: development + CassandraConsistencyLevelThree = CassandraConsistencyLevelKey.String("three") + // Local One + // Stability: development + CassandraConsistencyLevelLocalOne = CassandraConsistencyLevelKey.String("local_one") + // Any + // Stability: development + CassandraConsistencyLevelAny = CassandraConsistencyLevelKey.String("any") + // Serial + // Stability: development + CassandraConsistencyLevelSerial = CassandraConsistencyLevelKey.String("serial") + // Local Serial + // Stability: development + CassandraConsistencyLevelLocalSerial = CassandraConsistencyLevelKey.String("local_serial") +) + +// Namespace: cicd +const ( + // CICDPipelineActionNameKey is the attribute Key conforming to the + // "cicd.pipeline.action.name" semantic conventions. It represents the kind of + // action a pipeline run is performing. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "BUILD", "RUN", "SYNC" + CICDPipelineActionNameKey = attribute.Key("cicd.pipeline.action.name") + + // CICDPipelineNameKey is the attribute Key conforming to the + // "cicd.pipeline.name" semantic conventions. It represents the human readable + // name of the pipeline within a CI/CD system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Build and Test", "Lint", "Deploy Go Project", + // "deploy_to_environment" + CICDPipelineNameKey = attribute.Key("cicd.pipeline.name") + + // CICDPipelineResultKey is the attribute Key conforming to the + // "cicd.pipeline.result" semantic conventions. It represents the result of a + // pipeline run. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "success", "failure", "timeout", "skipped" + CICDPipelineResultKey = attribute.Key("cicd.pipeline.result") + + // CICDPipelineRunIDKey is the attribute Key conforming to the + // "cicd.pipeline.run.id" semantic conventions. It represents the unique + // identifier of a pipeline run within a CI/CD system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "120912" + CICDPipelineRunIDKey = attribute.Key("cicd.pipeline.run.id") + + // CICDPipelineRunStateKey is the attribute Key conforming to the + // "cicd.pipeline.run.state" semantic conventions. It represents the pipeline + // run goes through these states during its lifecycle. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "pending", "executing", "finalizing" + CICDPipelineRunStateKey = attribute.Key("cicd.pipeline.run.state") + + // CICDPipelineRunURLFullKey is the attribute Key conforming to the + // "cicd.pipeline.run.url.full" semantic conventions. It represents the [URL] of + // the pipeline run, providing the complete address in order to locate and + // identify the pipeline run. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763?pr=1075" + // + // [URL]: https://wikipedia.org/wiki/URL + CICDPipelineRunURLFullKey = attribute.Key("cicd.pipeline.run.url.full") + + // CICDPipelineTaskNameKey is the attribute Key conforming to the + // "cicd.pipeline.task.name" semantic conventions. It represents the human + // readable name of a task within a pipeline. Task here most closely aligns with + // a [computing process] in a pipeline. Other terms for tasks include commands, + // steps, and procedures. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Run GoLang Linter", "Go Build", "go-test", "deploy_binary" + // + // [computing process]: https://wikipedia.org/wiki/Pipeline_(computing) + CICDPipelineTaskNameKey = attribute.Key("cicd.pipeline.task.name") + + // CICDPipelineTaskRunIDKey is the attribute Key conforming to the + // "cicd.pipeline.task.run.id" semantic conventions. It represents the unique + // identifier of a task run within a pipeline. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "12097" + CICDPipelineTaskRunIDKey = attribute.Key("cicd.pipeline.task.run.id") + + // CICDPipelineTaskRunResultKey is the attribute Key conforming to the + // "cicd.pipeline.task.run.result" semantic conventions. It represents the + // result of a task run. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "success", "failure", "timeout", "skipped" + CICDPipelineTaskRunResultKey = attribute.Key("cicd.pipeline.task.run.result") + + // CICDPipelineTaskRunURLFullKey is the attribute Key conforming to the + // "cicd.pipeline.task.run.url.full" semantic conventions. It represents the + // [URL] of the pipeline task run, providing the complete address in order to + // locate and identify the pipeline task run. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "https://github.com/open-telemetry/semantic-conventions/actions/runs/9753949763/job/26920038674?pr=1075" + // + // [URL]: https://wikipedia.org/wiki/URL + CICDPipelineTaskRunURLFullKey = attribute.Key("cicd.pipeline.task.run.url.full") + + // CICDPipelineTaskTypeKey is the attribute Key conforming to the + // "cicd.pipeline.task.type" semantic conventions. It represents the type of the + // task within a pipeline. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "build", "test", "deploy" + CICDPipelineTaskTypeKey = attribute.Key("cicd.pipeline.task.type") + + // CICDSystemComponentKey is the attribute Key conforming to the + // "cicd.system.component" semantic conventions. It represents the name of a + // component of the CICD system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "controller", "scheduler", "agent" + CICDSystemComponentKey = attribute.Key("cicd.system.component") + + // CICDWorkerIDKey is the attribute Key conforming to the "cicd.worker.id" + // semantic conventions. It represents the unique identifier of a worker within + // a CICD system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "abc123", "10.0.1.2", "controller" + CICDWorkerIDKey = attribute.Key("cicd.worker.id") + + // CICDWorkerNameKey is the attribute Key conforming to the "cicd.worker.name" + // semantic conventions. It represents the name of a worker within a CICD + // system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "agent-abc", "controller", "Ubuntu LTS" + CICDWorkerNameKey = attribute.Key("cicd.worker.name") + + // CICDWorkerStateKey is the attribute Key conforming to the "cicd.worker.state" + // semantic conventions. It represents the state of a CICD worker / agent. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "idle", "busy", "down" + CICDWorkerStateKey = attribute.Key("cicd.worker.state") + + // CICDWorkerURLFullKey is the attribute Key conforming to the + // "cicd.worker.url.full" semantic conventions. It represents the [URL] of the + // worker, providing the complete address in order to locate and identify the + // worker. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "https://cicd.example.org/worker/abc123" + // + // [URL]: https://wikipedia.org/wiki/URL + CICDWorkerURLFullKey = attribute.Key("cicd.worker.url.full") +) + +// CICDPipelineName returns an attribute KeyValue conforming to the +// "cicd.pipeline.name" semantic conventions. It represents the human readable +// name of the pipeline within a CI/CD system. +func CICDPipelineName(val string) attribute.KeyValue { + return CICDPipelineNameKey.String(val) +} + +// CICDPipelineRunID returns an attribute KeyValue conforming to the +// "cicd.pipeline.run.id" semantic conventions. It represents the unique +// identifier of a pipeline run within a CI/CD system. +func CICDPipelineRunID(val string) attribute.KeyValue { + return CICDPipelineRunIDKey.String(val) +} + +// CICDPipelineRunURLFull returns an attribute KeyValue conforming to the +// "cicd.pipeline.run.url.full" semantic conventions. It represents the [URL] of +// the pipeline run, providing the complete address in order to locate and +// identify the pipeline run. +// +// [URL]: https://wikipedia.org/wiki/URL +func CICDPipelineRunURLFull(val string) attribute.KeyValue { + return CICDPipelineRunURLFullKey.String(val) +} + +// CICDPipelineTaskName returns an attribute KeyValue conforming to the +// "cicd.pipeline.task.name" semantic conventions. It represents the human +// readable name of a task within a pipeline. Task here most closely aligns with +// a [computing process] in a pipeline. Other terms for tasks include commands, +// steps, and procedures. +// +// [computing process]: https://wikipedia.org/wiki/Pipeline_(computing) +func CICDPipelineTaskName(val string) attribute.KeyValue { + return CICDPipelineTaskNameKey.String(val) +} + +// CICDPipelineTaskRunID returns an attribute KeyValue conforming to the +// "cicd.pipeline.task.run.id" semantic conventions. It represents the unique +// identifier of a task run within a pipeline. +func CICDPipelineTaskRunID(val string) attribute.KeyValue { + return CICDPipelineTaskRunIDKey.String(val) +} + +// CICDPipelineTaskRunURLFull returns an attribute KeyValue conforming to the +// "cicd.pipeline.task.run.url.full" semantic conventions. It represents the +// [URL] of the pipeline task run, providing the complete address in order to +// locate and identify the pipeline task run. +// +// [URL]: https://wikipedia.org/wiki/URL +func CICDPipelineTaskRunURLFull(val string) attribute.KeyValue { + return CICDPipelineTaskRunURLFullKey.String(val) +} + +// CICDSystemComponent returns an attribute KeyValue conforming to the +// "cicd.system.component" semantic conventions. It represents the name of a +// component of the CICD system. +func CICDSystemComponent(val string) attribute.KeyValue { + return CICDSystemComponentKey.String(val) +} + +// CICDWorkerID returns an attribute KeyValue conforming to the "cicd.worker.id" +// semantic conventions. It represents the unique identifier of a worker within a +// CICD system. +func CICDWorkerID(val string) attribute.KeyValue { + return CICDWorkerIDKey.String(val) +} + +// CICDWorkerName returns an attribute KeyValue conforming to the +// "cicd.worker.name" semantic conventions. It represents the name of a worker +// within a CICD system. +func CICDWorkerName(val string) attribute.KeyValue { + return CICDWorkerNameKey.String(val) +} + +// CICDWorkerURLFull returns an attribute KeyValue conforming to the +// "cicd.worker.url.full" semantic conventions. It represents the [URL] of the +// worker, providing the complete address in order to locate and identify the +// worker. +// +// [URL]: https://wikipedia.org/wiki/URL +func CICDWorkerURLFull(val string) attribute.KeyValue { + return CICDWorkerURLFullKey.String(val) +} + +// Enum values for cicd.pipeline.action.name +var ( + // The pipeline run is executing a build. + // Stability: development + CICDPipelineActionNameBuild = CICDPipelineActionNameKey.String("BUILD") + // The pipeline run is executing. + // Stability: development + CICDPipelineActionNameRun = CICDPipelineActionNameKey.String("RUN") + // The pipeline run is executing a sync. + // Stability: development + CICDPipelineActionNameSync = CICDPipelineActionNameKey.String("SYNC") +) + +// Enum values for cicd.pipeline.result +var ( + // The pipeline run finished successfully. + // Stability: development + CICDPipelineResultSuccess = CICDPipelineResultKey.String("success") + // The pipeline run did not finish successfully, eg. due to a compile error or a + // failing test. Such failures are usually detected by non-zero exit codes of + // the tools executed in the pipeline run. + // Stability: development + CICDPipelineResultFailure = CICDPipelineResultKey.String("failure") + // The pipeline run failed due to an error in the CICD system, eg. due to the + // worker being killed. + // Stability: development + CICDPipelineResultError = CICDPipelineResultKey.String("error") + // A timeout caused the pipeline run to be interrupted. + // Stability: development + CICDPipelineResultTimeout = CICDPipelineResultKey.String("timeout") + // The pipeline run was cancelled, eg. by a user manually cancelling the + // pipeline run. + // Stability: development + CICDPipelineResultCancellation = CICDPipelineResultKey.String("cancellation") + // The pipeline run was skipped, eg. due to a precondition not being met. + // Stability: development + CICDPipelineResultSkip = CICDPipelineResultKey.String("skip") +) + +// Enum values for cicd.pipeline.run.state +var ( + // The run pending state spans from the event triggering the pipeline run until + // the execution of the run starts (eg. time spent in a queue, provisioning + // agents, creating run resources). + // + // Stability: development + CICDPipelineRunStatePending = CICDPipelineRunStateKey.String("pending") + // The executing state spans the execution of any run tasks (eg. build, test). + // Stability: development + CICDPipelineRunStateExecuting = CICDPipelineRunStateKey.String("executing") + // The finalizing state spans from when the run has finished executing (eg. + // cleanup of run resources). + // Stability: development + CICDPipelineRunStateFinalizing = CICDPipelineRunStateKey.String("finalizing") +) + +// Enum values for cicd.pipeline.task.run.result +var ( + // The task run finished successfully. + // Stability: development + CICDPipelineTaskRunResultSuccess = CICDPipelineTaskRunResultKey.String("success") + // The task run did not finish successfully, eg. due to a compile error or a + // failing test. Such failures are usually detected by non-zero exit codes of + // the tools executed in the task run. + // Stability: development + CICDPipelineTaskRunResultFailure = CICDPipelineTaskRunResultKey.String("failure") + // The task run failed due to an error in the CICD system, eg. due to the worker + // being killed. + // Stability: development + CICDPipelineTaskRunResultError = CICDPipelineTaskRunResultKey.String("error") + // A timeout caused the task run to be interrupted. + // Stability: development + CICDPipelineTaskRunResultTimeout = CICDPipelineTaskRunResultKey.String("timeout") + // The task run was cancelled, eg. by a user manually cancelling the task run. + // Stability: development + CICDPipelineTaskRunResultCancellation = CICDPipelineTaskRunResultKey.String("cancellation") + // The task run was skipped, eg. due to a precondition not being met. + // Stability: development + CICDPipelineTaskRunResultSkip = CICDPipelineTaskRunResultKey.String("skip") +) + +// Enum values for cicd.pipeline.task.type +var ( + // build + // Stability: development + CICDPipelineTaskTypeBuild = CICDPipelineTaskTypeKey.String("build") + // test + // Stability: development + CICDPipelineTaskTypeTest = CICDPipelineTaskTypeKey.String("test") + // deploy + // Stability: development + CICDPipelineTaskTypeDeploy = CICDPipelineTaskTypeKey.String("deploy") +) + +// Enum values for cicd.worker.state +var ( + // The worker is not performing work for the CICD system. It is available to the + // CICD system to perform work on (online / idle). + // Stability: development + CICDWorkerStateAvailable = CICDWorkerStateKey.String("available") + // The worker is performing work for the CICD system. + // Stability: development + CICDWorkerStateBusy = CICDWorkerStateKey.String("busy") + // The worker is not available to the CICD system (disconnected / down). + // Stability: development + CICDWorkerStateOffline = CICDWorkerStateKey.String("offline") +) + +// Namespace: client +const ( + // ClientAddressKey is the attribute Key conforming to the "client.address" + // semantic conventions. It represents the client address - domain name if + // available without reverse DNS lookup; otherwise, IP address or Unix domain + // socket name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "client.example.com", "10.1.2.80", "/tmp/my.sock" + // Note: When observed from the server side, and when communicating through an + // intermediary, `client.address` SHOULD represent the client address behind any + // intermediaries, for example proxies, if it's available. + ClientAddressKey = attribute.Key("client.address") + + // ClientPortKey is the attribute Key conforming to the "client.port" semantic + // conventions. It represents the client port number. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: 65123 + // Note: When observed from the server side, and when communicating through an + // intermediary, `client.port` SHOULD represent the client port behind any + // intermediaries, for example proxies, if it's available. + ClientPortKey = attribute.Key("client.port") +) + +// ClientAddress returns an attribute KeyValue conforming to the "client.address" +// semantic conventions. It represents the client address - domain name if +// available without reverse DNS lookup; otherwise, IP address or Unix domain +// socket name. +func ClientAddress(val string) attribute.KeyValue { + return ClientAddressKey.String(val) +} + +// ClientPort returns an attribute KeyValue conforming to the "client.port" +// semantic conventions. It represents the client port number. +func ClientPort(val int) attribute.KeyValue { + return ClientPortKey.Int(val) +} + +// Namespace: cloud +const ( + // CloudAccountIDKey is the attribute Key conforming to the "cloud.account.id" + // semantic conventions. It represents the cloud account ID the resource is + // assigned to. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "111111111111", "opentelemetry" + CloudAccountIDKey = attribute.Key("cloud.account.id") + + // CloudAvailabilityZoneKey is the attribute Key conforming to the + // "cloud.availability_zone" semantic conventions. It represents the cloud + // regions often have multiple, isolated locations known as zones to increase + // availability. Availability zone represents the zone where the resource is + // running. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "us-east-1c" + // Note: Availability zones are called "zones" on Alibaba Cloud and Google + // Cloud. + CloudAvailabilityZoneKey = attribute.Key("cloud.availability_zone") + + // CloudPlatformKey is the attribute Key conforming to the "cloud.platform" + // semantic conventions. It represents the cloud platform in use. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: The prefix of the service SHOULD match the one specified in + // `cloud.provider`. + CloudPlatformKey = attribute.Key("cloud.platform") + + // CloudProviderKey is the attribute Key conforming to the "cloud.provider" + // semantic conventions. It represents the name of the cloud provider. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + CloudProviderKey = attribute.Key("cloud.provider") + + // CloudRegionKey is the attribute Key conforming to the "cloud.region" semantic + // conventions. It represents the geographical region within a cloud provider. + // When associated with a resource, this attribute specifies the region where + // the resource operates. When calling services or APIs deployed on a cloud, + // this attribute identifies the region where the called destination is + // deployed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "us-central1", "us-east-1" + // Note: Refer to your provider's docs to see the available regions, for example + // [Alibaba Cloud regions], [AWS regions], [Azure regions], + // [Google Cloud regions], or [Tencent Cloud regions]. + // + // [Alibaba Cloud regions]: https://www.alibabacloud.com/help/doc-detail/40654.htm + // [AWS regions]: https://aws.amazon.com/about-aws/global-infrastructure/regions_az/ + // [Azure regions]: https://azure.microsoft.com/global-infrastructure/geographies/ + // [Google Cloud regions]: https://cloud.google.com/about/locations + // [Tencent Cloud regions]: https://www.tencentcloud.com/document/product/213/6091 + CloudRegionKey = attribute.Key("cloud.region") + + // CloudResourceIDKey is the attribute Key conforming to the "cloud.resource_id" + // semantic conventions. It represents the cloud provider-specific native + // identifier of the monitored cloud resource (e.g. an [ARN] on AWS, a + // [fully qualified resource ID] on Azure, a [full resource name] on GCP). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function", + // "//run.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/services/SERVICE_ID", + // "/subscriptions//resourceGroups/ + // /providers/Microsoft.Web/sites//functions/" + // Note: On some cloud providers, it may not be possible to determine the full + // ID at startup, + // so it may be necessary to set `cloud.resource_id` as a span attribute + // instead. + // + // The exact value to use for `cloud.resource_id` depends on the cloud provider. + // The following well-known definitions MUST be used if you set this attribute + // and they apply: + // + // - **AWS Lambda:** The function [ARN]. + // Take care not to use the "invoked ARN" directly but replace any + // [alias suffix] + // with the resolved function version, as the same runtime instance may be + // invocable with + // multiple different aliases. + // - **GCP:** The [URI of the resource] + // - **Azure:** The [Fully Qualified Resource ID] of the invoked function, + // *not* the function app, having the form + // + // `/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/` + // . + // This means that a span attribute MUST be used, as an Azure function app + // can host multiple functions that would usually share + // a TracerProvider. + // + // + // [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html + // [fully qualified resource ID]: https://learn.microsoft.com/rest/api/resources/resources/get-by-id + // [full resource name]: https://google.aip.dev/122#full-resource-names + // [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html + // [alias suffix]: https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html + // [URI of the resource]: https://cloud.google.com/iam/docs/full-resource-names + // [Fully Qualified Resource ID]: https://learn.microsoft.com/rest/api/resources/resources/get-by-id + CloudResourceIDKey = attribute.Key("cloud.resource_id") +) + +// CloudAccountID returns an attribute KeyValue conforming to the +// "cloud.account.id" semantic conventions. It represents the cloud account ID +// the resource is assigned to. +func CloudAccountID(val string) attribute.KeyValue { + return CloudAccountIDKey.String(val) +} + +// CloudAvailabilityZone returns an attribute KeyValue conforming to the +// "cloud.availability_zone" semantic conventions. It represents the cloud +// regions often have multiple, isolated locations known as zones to increase +// availability. Availability zone represents the zone where the resource is +// running. +func CloudAvailabilityZone(val string) attribute.KeyValue { + return CloudAvailabilityZoneKey.String(val) +} + +// CloudRegion returns an attribute KeyValue conforming to the "cloud.region" +// semantic conventions. It represents the geographical region within a cloud +// provider. When associated with a resource, this attribute specifies the region +// where the resource operates. When calling services or APIs deployed on a +// cloud, this attribute identifies the region where the called destination is +// deployed. +func CloudRegion(val string) attribute.KeyValue { + return CloudRegionKey.String(val) +} + +// CloudResourceID returns an attribute KeyValue conforming to the +// "cloud.resource_id" semantic conventions. It represents the cloud +// provider-specific native identifier of the monitored cloud resource (e.g. an +// [ARN] on AWS, a [fully qualified resource ID] on Azure, a [full resource name] +// on GCP). +// +// [ARN]: https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html +// [fully qualified resource ID]: https://learn.microsoft.com/rest/api/resources/resources/get-by-id +// [full resource name]: https://google.aip.dev/122#full-resource-names +func CloudResourceID(val string) attribute.KeyValue { + return CloudResourceIDKey.String(val) +} + +// Enum values for cloud.platform +var ( + // Alibaba Cloud Elastic Compute Service + // Stability: development + CloudPlatformAlibabaCloudECS = CloudPlatformKey.String("alibaba_cloud_ecs") + // Alibaba Cloud Function Compute + // Stability: development + CloudPlatformAlibabaCloudFC = CloudPlatformKey.String("alibaba_cloud_fc") + // Red Hat OpenShift on Alibaba Cloud + // Stability: development + CloudPlatformAlibabaCloudOpenShift = CloudPlatformKey.String("alibaba_cloud_openshift") + // AWS Elastic Compute Cloud + // Stability: development + CloudPlatformAWSEC2 = CloudPlatformKey.String("aws_ec2") + // AWS Elastic Container Service + // Stability: development + CloudPlatformAWSECS = CloudPlatformKey.String("aws_ecs") + // AWS Elastic Kubernetes Service + // Stability: development + CloudPlatformAWSEKS = CloudPlatformKey.String("aws_eks") + // AWS Lambda + // Stability: development + CloudPlatformAWSLambda = CloudPlatformKey.String("aws_lambda") + // AWS Elastic Beanstalk + // Stability: development + CloudPlatformAWSElasticBeanstalk = CloudPlatformKey.String("aws_elastic_beanstalk") + // AWS App Runner + // Stability: development + CloudPlatformAWSAppRunner = CloudPlatformKey.String("aws_app_runner") + // Red Hat OpenShift on AWS (ROSA) + // Stability: development + CloudPlatformAWSOpenShift = CloudPlatformKey.String("aws_openshift") + // Azure Virtual Machines + // Stability: development + CloudPlatformAzureVM = CloudPlatformKey.String("azure.vm") + // Azure Container Apps + // Stability: development + CloudPlatformAzureContainerApps = CloudPlatformKey.String("azure.container_apps") + // Azure Container Instances + // Stability: development + CloudPlatformAzureContainerInstances = CloudPlatformKey.String("azure.container_instances") + // Azure Kubernetes Service + // Stability: development + CloudPlatformAzureAKS = CloudPlatformKey.String("azure.aks") + // Azure Functions + // Stability: development + CloudPlatformAzureFunctions = CloudPlatformKey.String("azure.functions") + // Azure App Service + // Stability: development + CloudPlatformAzureAppService = CloudPlatformKey.String("azure.app_service") + // Azure Red Hat OpenShift + // Stability: development + CloudPlatformAzureOpenShift = CloudPlatformKey.String("azure.openshift") + // Google Bare Metal Solution (BMS) + // Stability: development + CloudPlatformGCPBareMetalSolution = CloudPlatformKey.String("gcp_bare_metal_solution") + // Google Cloud Compute Engine (GCE) + // Stability: development + CloudPlatformGCPComputeEngine = CloudPlatformKey.String("gcp_compute_engine") + // Google Cloud Run + // Stability: development + CloudPlatformGCPCloudRun = CloudPlatformKey.String("gcp_cloud_run") + // Google Cloud Kubernetes Engine (GKE) + // Stability: development + CloudPlatformGCPKubernetesEngine = CloudPlatformKey.String("gcp_kubernetes_engine") + // Google Cloud Functions (GCF) + // Stability: development + CloudPlatformGCPCloudFunctions = CloudPlatformKey.String("gcp_cloud_functions") + // Google Cloud App Engine (GAE) + // Stability: development + CloudPlatformGCPAppEngine = CloudPlatformKey.String("gcp_app_engine") + // Red Hat OpenShift on Google Cloud + // Stability: development + CloudPlatformGCPOpenShift = CloudPlatformKey.String("gcp_openshift") + // Red Hat OpenShift on IBM Cloud + // Stability: development + CloudPlatformIBMCloudOpenShift = CloudPlatformKey.String("ibm_cloud_openshift") + // Compute on Oracle Cloud Infrastructure (OCI) + // Stability: development + CloudPlatformOracleCloudCompute = CloudPlatformKey.String("oracle_cloud_compute") + // Kubernetes Engine (OKE) on Oracle Cloud Infrastructure (OCI) + // Stability: development + CloudPlatformOracleCloudOKE = CloudPlatformKey.String("oracle_cloud_oke") + // Tencent Cloud Cloud Virtual Machine (CVM) + // Stability: development + CloudPlatformTencentCloudCVM = CloudPlatformKey.String("tencent_cloud_cvm") + // Tencent Cloud Elastic Kubernetes Service (EKS) + // Stability: development + CloudPlatformTencentCloudEKS = CloudPlatformKey.String("tencent_cloud_eks") + // Tencent Cloud Serverless Cloud Function (SCF) + // Stability: development + CloudPlatformTencentCloudSCF = CloudPlatformKey.String("tencent_cloud_scf") +) + +// Enum values for cloud.provider +var ( + // Alibaba Cloud + // Stability: development + CloudProviderAlibabaCloud = CloudProviderKey.String("alibaba_cloud") + // Amazon Web Services + // Stability: development + CloudProviderAWS = CloudProviderKey.String("aws") + // Microsoft Azure + // Stability: development + CloudProviderAzure = CloudProviderKey.String("azure") + // Google Cloud Platform + // Stability: development + CloudProviderGCP = CloudProviderKey.String("gcp") + // Heroku Platform as a Service + // Stability: development + CloudProviderHeroku = CloudProviderKey.String("heroku") + // IBM Cloud + // Stability: development + CloudProviderIBMCloud = CloudProviderKey.String("ibm_cloud") + // Oracle Cloud Infrastructure (OCI) + // Stability: development + CloudProviderOracleCloud = CloudProviderKey.String("oracle_cloud") + // Tencent Cloud + // Stability: development + CloudProviderTencentCloud = CloudProviderKey.String("tencent_cloud") +) + +// Namespace: cloudevents +const ( + // CloudEventsEventIDKey is the attribute Key conforming to the + // "cloudevents.event_id" semantic conventions. It represents the [event_id] + // uniquely identifies the event. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "123e4567-e89b-12d3-a456-426614174000", "0001" + // + // [event_id]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id + CloudEventsEventIDKey = attribute.Key("cloudevents.event_id") + + // CloudEventsEventSourceKey is the attribute Key conforming to the + // "cloudevents.event_source" semantic conventions. It represents the [source] + // identifies the context in which an event happened. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "https://github.com/cloudevents", "/cloudevents/spec/pull/123", + // "my-service" + // + // [source]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1 + CloudEventsEventSourceKey = attribute.Key("cloudevents.event_source") + + // CloudEventsEventSpecVersionKey is the attribute Key conforming to the + // "cloudevents.event_spec_version" semantic conventions. It represents the + // [version of the CloudEvents specification] which the event uses. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1.0 + // + // [version of the CloudEvents specification]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion + CloudEventsEventSpecVersionKey = attribute.Key("cloudevents.event_spec_version") + + // CloudEventsEventSubjectKey is the attribute Key conforming to the + // "cloudevents.event_subject" semantic conventions. It represents the [subject] + // of the event in the context of the event producer (identified by source). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: mynewfile.jpg + // + // [subject]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject + CloudEventsEventSubjectKey = attribute.Key("cloudevents.event_subject") + + // CloudEventsEventTypeKey is the attribute Key conforming to the + // "cloudevents.event_type" semantic conventions. It represents the [event_type] + // contains a value describing the type of event related to the originating + // occurrence. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "com.github.pull_request.opened", "com.example.object.deleted.v2" + // + // [event_type]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type + CloudEventsEventTypeKey = attribute.Key("cloudevents.event_type") +) + +// CloudEventsEventID returns an attribute KeyValue conforming to the +// "cloudevents.event_id" semantic conventions. It represents the [event_id] +// uniquely identifies the event. +// +// [event_id]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id +func CloudEventsEventID(val string) attribute.KeyValue { + return CloudEventsEventIDKey.String(val) +} + +// CloudEventsEventSource returns an attribute KeyValue conforming to the +// "cloudevents.event_source" semantic conventions. It represents the [source] +// identifies the context in which an event happened. +// +// [source]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1 +func CloudEventsEventSource(val string) attribute.KeyValue { + return CloudEventsEventSourceKey.String(val) +} + +// CloudEventsEventSpecVersion returns an attribute KeyValue conforming to the +// "cloudevents.event_spec_version" semantic conventions. It represents the +// [version of the CloudEvents specification] which the event uses. +// +// [version of the CloudEvents specification]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion +func CloudEventsEventSpecVersion(val string) attribute.KeyValue { + return CloudEventsEventSpecVersionKey.String(val) +} + +// CloudEventsEventSubject returns an attribute KeyValue conforming to the +// "cloudevents.event_subject" semantic conventions. It represents the [subject] +// of the event in the context of the event producer (identified by source). +// +// [subject]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject +func CloudEventsEventSubject(val string) attribute.KeyValue { + return CloudEventsEventSubjectKey.String(val) +} + +// CloudEventsEventType returns an attribute KeyValue conforming to the +// "cloudevents.event_type" semantic conventions. It represents the [event_type] +// contains a value describing the type of event related to the originating +// occurrence. +// +// [event_type]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type +func CloudEventsEventType(val string) attribute.KeyValue { + return CloudEventsEventTypeKey.String(val) +} + +// Namespace: cloudfoundry +const ( + // CloudFoundryAppIDKey is the attribute Key conforming to the + // "cloudfoundry.app.id" semantic conventions. It represents the guid of the + // application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.application_id`. This is the same value as + // reported by `cf app --guid`. + CloudFoundryAppIDKey = attribute.Key("cloudfoundry.app.id") + + // CloudFoundryAppInstanceIDKey is the attribute Key conforming to the + // "cloudfoundry.app.instance.id" semantic conventions. It represents the index + // of the application instance. 0 when just one instance is active. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0", "1" + // Note: CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope] + // . + // It is used for logs and metrics emitted by CloudFoundry. It is + // supposed to contain the application instance index for applications + // deployed on the runtime. + // + // Application instrumentation should use the value from environment + // variable `CF_INSTANCE_INDEX`. + // + // [Loggregator v2 envelope]: https://github.com/cloudfoundry/loggregator-api#v2-envelope + CloudFoundryAppInstanceIDKey = attribute.Key("cloudfoundry.app.instance.id") + + // CloudFoundryAppNameKey is the attribute Key conforming to the + // "cloudfoundry.app.name" semantic conventions. It represents the name of the + // application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-app-name" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.application_name`. This is the same value + // as reported by `cf apps`. + CloudFoundryAppNameKey = attribute.Key("cloudfoundry.app.name") + + // CloudFoundryOrgIDKey is the attribute Key conforming to the + // "cloudfoundry.org.id" semantic conventions. It represents the guid of the + // CloudFoundry org the application is running in. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.org_id`. This is the same value as + // reported by `cf org --guid`. + CloudFoundryOrgIDKey = attribute.Key("cloudfoundry.org.id") + + // CloudFoundryOrgNameKey is the attribute Key conforming to the + // "cloudfoundry.org.name" semantic conventions. It represents the name of the + // CloudFoundry organization the app is running in. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-org-name" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.org_name`. This is the same value as + // reported by `cf orgs`. + CloudFoundryOrgNameKey = attribute.Key("cloudfoundry.org.name") + + // CloudFoundryProcessIDKey is the attribute Key conforming to the + // "cloudfoundry.process.id" semantic conventions. It represents the UID + // identifying the process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.process_id`. It is supposed to be equal to + // `VCAP_APPLICATION.app_id` for applications deployed to the runtime. + // For system components, this could be the actual PID. + CloudFoundryProcessIDKey = attribute.Key("cloudfoundry.process.id") + + // CloudFoundryProcessTypeKey is the attribute Key conforming to the + // "cloudfoundry.process.type" semantic conventions. It represents the type of + // process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "web" + // Note: CloudFoundry applications can consist of multiple jobs. Usually the + // main process will be of type `web`. There can be additional background + // tasks or side-cars with different process types. + CloudFoundryProcessTypeKey = attribute.Key("cloudfoundry.process.type") + + // CloudFoundrySpaceIDKey is the attribute Key conforming to the + // "cloudfoundry.space.id" semantic conventions. It represents the guid of the + // CloudFoundry space the application is running in. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.space_id`. This is the same value as + // reported by `cf space --guid`. + CloudFoundrySpaceIDKey = attribute.Key("cloudfoundry.space.id") + + // CloudFoundrySpaceNameKey is the attribute Key conforming to the + // "cloudfoundry.space.name" semantic conventions. It represents the name of the + // CloudFoundry space the application is running in. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-space-name" + // Note: Application instrumentation should use the value from environment + // variable `VCAP_APPLICATION.space_name`. This is the same value as + // reported by `cf spaces`. + CloudFoundrySpaceNameKey = attribute.Key("cloudfoundry.space.name") + + // CloudFoundrySystemIDKey is the attribute Key conforming to the + // "cloudfoundry.system.id" semantic conventions. It represents a guid or + // another name describing the event source. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "cf/gorouter" + // Note: CloudFoundry defines the `source_id` in the [Loggregator v2 envelope]. + // It is used for logs and metrics emitted by CloudFoundry. It is + // supposed to contain the component name, e.g. "gorouter", for + // CloudFoundry components. + // + // When system components are instrumented, values from the + // [Bosh spec] + // should be used. The `system.id` should be set to + // `spec.deployment/spec.name`. + // + // [Loggregator v2 envelope]: https://github.com/cloudfoundry/loggregator-api#v2-envelope + // [Bosh spec]: https://bosh.io/docs/jobs/#properties-spec + CloudFoundrySystemIDKey = attribute.Key("cloudfoundry.system.id") + + // CloudFoundrySystemInstanceIDKey is the attribute Key conforming to the + // "cloudfoundry.system.instance.id" semantic conventions. It represents a guid + // describing the concrete instance of the event source. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d" + // Note: CloudFoundry defines the `instance_id` in the [Loggregator v2 envelope] + // . + // It is used for logs and metrics emitted by CloudFoundry. It is + // supposed to contain the vm id for CloudFoundry components. + // + // When system components are instrumented, values from the + // [Bosh spec] + // should be used. The `system.instance.id` should be set to `spec.id`. + // + // [Loggregator v2 envelope]: https://github.com/cloudfoundry/loggregator-api#v2-envelope + // [Bosh spec]: https://bosh.io/docs/jobs/#properties-spec + CloudFoundrySystemInstanceIDKey = attribute.Key("cloudfoundry.system.instance.id") +) + +// CloudFoundryAppID returns an attribute KeyValue conforming to the +// "cloudfoundry.app.id" semantic conventions. It represents the guid of the +// application. +func CloudFoundryAppID(val string) attribute.KeyValue { + return CloudFoundryAppIDKey.String(val) +} + +// CloudFoundryAppInstanceID returns an attribute KeyValue conforming to the +// "cloudfoundry.app.instance.id" semantic conventions. It represents the index +// of the application instance. 0 when just one instance is active. +func CloudFoundryAppInstanceID(val string) attribute.KeyValue { + return CloudFoundryAppInstanceIDKey.String(val) +} + +// CloudFoundryAppName returns an attribute KeyValue conforming to the +// "cloudfoundry.app.name" semantic conventions. It represents the name of the +// application. +func CloudFoundryAppName(val string) attribute.KeyValue { + return CloudFoundryAppNameKey.String(val) +} + +// CloudFoundryOrgID returns an attribute KeyValue conforming to the +// "cloudfoundry.org.id" semantic conventions. It represents the guid of the +// CloudFoundry org the application is running in. +func CloudFoundryOrgID(val string) attribute.KeyValue { + return CloudFoundryOrgIDKey.String(val) +} + +// CloudFoundryOrgName returns an attribute KeyValue conforming to the +// "cloudfoundry.org.name" semantic conventions. It represents the name of the +// CloudFoundry organization the app is running in. +func CloudFoundryOrgName(val string) attribute.KeyValue { + return CloudFoundryOrgNameKey.String(val) +} + +// CloudFoundryProcessID returns an attribute KeyValue conforming to the +// "cloudfoundry.process.id" semantic conventions. It represents the UID +// identifying the process. +func CloudFoundryProcessID(val string) attribute.KeyValue { + return CloudFoundryProcessIDKey.String(val) +} + +// CloudFoundryProcessType returns an attribute KeyValue conforming to the +// "cloudfoundry.process.type" semantic conventions. It represents the type of +// process. +func CloudFoundryProcessType(val string) attribute.KeyValue { + return CloudFoundryProcessTypeKey.String(val) +} + +// CloudFoundrySpaceID returns an attribute KeyValue conforming to the +// "cloudfoundry.space.id" semantic conventions. It represents the guid of the +// CloudFoundry space the application is running in. +func CloudFoundrySpaceID(val string) attribute.KeyValue { + return CloudFoundrySpaceIDKey.String(val) +} + +// CloudFoundrySpaceName returns an attribute KeyValue conforming to the +// "cloudfoundry.space.name" semantic conventions. It represents the name of the +// CloudFoundry space the application is running in. +func CloudFoundrySpaceName(val string) attribute.KeyValue { + return CloudFoundrySpaceNameKey.String(val) +} + +// CloudFoundrySystemID returns an attribute KeyValue conforming to the +// "cloudfoundry.system.id" semantic conventions. It represents a guid or another +// name describing the event source. +func CloudFoundrySystemID(val string) attribute.KeyValue { + return CloudFoundrySystemIDKey.String(val) +} + +// CloudFoundrySystemInstanceID returns an attribute KeyValue conforming to the +// "cloudfoundry.system.instance.id" semantic conventions. It represents a guid +// describing the concrete instance of the event source. +func CloudFoundrySystemInstanceID(val string) attribute.KeyValue { + return CloudFoundrySystemInstanceIDKey.String(val) +} + +// Namespace: code +const ( + // CodeColumnNumberKey is the attribute Key conforming to the + // "code.column.number" semantic conventions. It represents the column number in + // `code.file.path` best representing the operation. It SHOULD point within the + // code unit named in `code.function.name`. This attribute MUST NOT be used on + // the Profile signal since the data is already captured in 'message Line'. This + // constraint is imposed to prevent redundancy and maintain data integrity. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + CodeColumnNumberKey = attribute.Key("code.column.number") + + // CodeFilePathKey is the attribute Key conforming to the "code.file.path" + // semantic conventions. It represents the source code file name that identifies + // the code unit as uniquely as possible (preferably an absolute file path). + // This attribute MUST NOT be used on the Profile signal since the data is + // already captured in 'message Function'. This constraint is imposed to prevent + // redundancy and maintain data integrity. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: /usr/local/MyApplication/content_root/app/index.php + CodeFilePathKey = attribute.Key("code.file.path") + + // CodeFunctionNameKey is the attribute Key conforming to the + // "code.function.name" semantic conventions. It represents the method or + // function fully-qualified name without arguments. The value should fit the + // natural representation of the language runtime, which is also likely the same + // used within `code.stacktrace` attribute value. This attribute MUST NOT be + // used on the Profile signal since the data is already captured in 'message + // Function'. This constraint is imposed to prevent redundancy and maintain data + // integrity. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "com.example.MyHttpService.serveRequest", + // "GuzzleHttp\Client::transfer", "fopen" + // Note: Values and format depends on each language runtime, thus it is + // impossible to provide an exhaustive list of examples. + // The values are usually the same (or prefixes of) the ones found in native + // stack trace representation stored in + // `code.stacktrace` without information on arguments. + // + // Examples: + // + // - Java method: `com.example.MyHttpService.serveRequest` + // - Java anonymous class method: `com.mycompany.Main$1.myMethod` + // - Java lambda method: + // `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod` + // - PHP function: `GuzzleHttp\Client::transfer` + // - Go function: `github.com/my/repo/pkg.foo.func5` + // - Elixir: `OpenTelemetry.Ctx.new` + // - Erlang: `opentelemetry_ctx:new` + // - Rust: `playground::my_module::my_cool_func` + // - C function: `fopen` + CodeFunctionNameKey = attribute.Key("code.function.name") + + // CodeLineNumberKey is the attribute Key conforming to the "code.line.number" + // semantic conventions. It represents the line number in `code.file.path` best + // representing the operation. It SHOULD point within the code unit named in + // `code.function.name`. This attribute MUST NOT be used on the Profile signal + // since the data is already captured in 'message Line'. This constraint is + // imposed to prevent redundancy and maintain data integrity. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + CodeLineNumberKey = attribute.Key("code.line.number") + + // CodeStacktraceKey is the attribute Key conforming to the "code.stacktrace" + // semantic conventions. It represents a stacktrace as a string in the natural + // representation for the language runtime. The representation is identical to + // [`exception.stacktrace`]. This attribute MUST NOT be used on the Profile + // signal since the data is already captured in 'message Location'. This + // constraint is imposed to prevent redundancy and maintain data integrity. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at + // com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at + // com.example.GenerateTrace.main(GenerateTrace.java:5) + // + // [`exception.stacktrace`]: /docs/exceptions/exceptions-spans.md#stacktrace-representation + CodeStacktraceKey = attribute.Key("code.stacktrace") +) + +// CodeColumnNumber returns an attribute KeyValue conforming to the +// "code.column.number" semantic conventions. It represents the column number in +// `code.file.path` best representing the operation. It SHOULD point within the +// code unit named in `code.function.name`. This attribute MUST NOT be used on +// the Profile signal since the data is already captured in 'message Line'. This +// constraint is imposed to prevent redundancy and maintain data integrity. +func CodeColumnNumber(val int) attribute.KeyValue { + return CodeColumnNumberKey.Int(val) +} + +// CodeFilePath returns an attribute KeyValue conforming to the "code.file.path" +// semantic conventions. It represents the source code file name that identifies +// the code unit as uniquely as possible (preferably an absolute file path). This +// attribute MUST NOT be used on the Profile signal since the data is already +// captured in 'message Function'. This constraint is imposed to prevent +// redundancy and maintain data integrity. +func CodeFilePath(val string) attribute.KeyValue { + return CodeFilePathKey.String(val) +} + +// CodeFunctionName returns an attribute KeyValue conforming to the +// "code.function.name" semantic conventions. It represents the method or +// function fully-qualified name without arguments. The value should fit the +// natural representation of the language runtime, which is also likely the same +// used within `code.stacktrace` attribute value. This attribute MUST NOT be used +// on the Profile signal since the data is already captured in 'message +// Function'. This constraint is imposed to prevent redundancy and maintain data +// integrity. +func CodeFunctionName(val string) attribute.KeyValue { + return CodeFunctionNameKey.String(val) +} + +// CodeLineNumber returns an attribute KeyValue conforming to the +// "code.line.number" semantic conventions. It represents the line number in +// `code.file.path` best representing the operation. It SHOULD point within the +// code unit named in `code.function.name`. This attribute MUST NOT be used on +// the Profile signal since the data is already captured in 'message Line'. This +// constraint is imposed to prevent redundancy and maintain data integrity. +func CodeLineNumber(val int) attribute.KeyValue { + return CodeLineNumberKey.Int(val) +} + +// CodeStacktrace returns an attribute KeyValue conforming to the +// "code.stacktrace" semantic conventions. It represents a stacktrace as a string +// in the natural representation for the language runtime. The representation is +// identical to [`exception.stacktrace`]. This attribute MUST NOT be used on the +// Profile signal since the data is already captured in 'message Location'. This +// constraint is imposed to prevent redundancy and maintain data integrity. +// +// [`exception.stacktrace`]: /docs/exceptions/exceptions-spans.md#stacktrace-representation +func CodeStacktrace(val string) attribute.KeyValue { + return CodeStacktraceKey.String(val) +} + +// Namespace: container +const ( + // ContainerCommandKey is the attribute Key conforming to the + // "container.command" semantic conventions. It represents the command used to + // run the container (i.e. the command name). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "otelcontribcol" + // Note: If using embedded credentials or sensitive data, it is recommended to + // remove them to prevent potential leakage. + ContainerCommandKey = attribute.Key("container.command") + + // ContainerCommandArgsKey is the attribute Key conforming to the + // "container.command_args" semantic conventions. It represents the all the + // command arguments (including the command/executable itself) run by the + // container. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "otelcontribcol", "--config", "config.yaml" + ContainerCommandArgsKey = attribute.Key("container.command_args") + + // ContainerCommandLineKey is the attribute Key conforming to the + // "container.command_line" semantic conventions. It represents the full command + // run by the container as a single string representing the full command. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "otelcontribcol --config config.yaml" + ContainerCommandLineKey = attribute.Key("container.command_line") + + // ContainerCSIPluginNameKey is the attribute Key conforming to the + // "container.csi.plugin.name" semantic conventions. It represents the name of + // the CSI ([Container Storage Interface]) plugin used by the volume. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "pd.csi.storage.gke.io" + // Note: This can sometimes be referred to as a "driver" in CSI implementations. + // This should represent the `name` field of the GetPluginInfo RPC. + // + // [Container Storage Interface]: https://github.com/container-storage-interface/spec + ContainerCSIPluginNameKey = attribute.Key("container.csi.plugin.name") + + // ContainerCSIVolumeIDKey is the attribute Key conforming to the + // "container.csi.volume.id" semantic conventions. It represents the unique + // volume ID returned by the CSI ([Container Storage Interface]) plugin. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "projects/my-gcp-project/zones/my-gcp-zone/disks/my-gcp-disk" + // Note: This can sometimes be referred to as a "volume handle" in CSI + // implementations. This should represent the `Volume.volume_id` field in CSI + // spec. + // + // [Container Storage Interface]: https://github.com/container-storage-interface/spec + ContainerCSIVolumeIDKey = attribute.Key("container.csi.volume.id") + + // ContainerIDKey is the attribute Key conforming to the "container.id" semantic + // conventions. It represents the container ID. Usually a UUID, as for example + // used to [identify Docker containers]. The UUID might be abbreviated. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "a3bf90e006b2" + // + // [identify Docker containers]: https://docs.docker.com/engine/containers/run/#container-identification + ContainerIDKey = attribute.Key("container.id") + + // ContainerImageIDKey is the attribute Key conforming to the + // "container.image.id" semantic conventions. It represents the runtime specific + // image identifier. Usually a hash algorithm followed by a UUID. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "sha256:19c92d0a00d1b66d897bceaa7319bee0dd38a10a851c60bcec9474aa3f01e50f" + // Note: Docker defines a sha256 of the image id; `container.image.id` + // corresponds to the `Image` field from the Docker container inspect [API] + // endpoint. + // K8s defines a link to the container registry repository with digest + // `"imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"` + // . + // The ID is assigned by the container runtime and can vary in different + // environments. Consider using `oci.manifest.digest` if it is important to + // identify the same image in different environments/runtimes. + // + // [API]: https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerInspect + ContainerImageIDKey = attribute.Key("container.image.id") + + // ContainerImageNameKey is the attribute Key conforming to the + // "container.image.name" semantic conventions. It represents the name of the + // image the container was built on. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "gcr.io/opentelemetry/operator" + ContainerImageNameKey = attribute.Key("container.image.name") + + // ContainerImageRepoDigestsKey is the attribute Key conforming to the + // "container.image.repo_digests" semantic conventions. It represents the repo + // digests of the container image as provided by the container runtime. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "example@sha256:afcc7f1ac1b49db317a7196c902e61c6c3c4607d63599ee1a82d702d249a0ccb", + // "internal.registry.example.com:5000/example@sha256:b69959407d21e8a062e0416bf13405bb2b71ed7a84dde4158ebafacfa06f5578" + // Note: [Docker] and [CRI] report those under the `RepoDigests` field. + // + // [Docker]: https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect + // [CRI]: https://github.com/kubernetes/cri-api/blob/c75ef5b473bbe2d0a4fc92f82235efd665ea8e9f/pkg/apis/runtime/v1/api.proto#L1237-L1238 + ContainerImageRepoDigestsKey = attribute.Key("container.image.repo_digests") + + // ContainerImageTagsKey is the attribute Key conforming to the + // "container.image.tags" semantic conventions. It represents the container + // image tags. An example can be found in [Docker Image Inspect]. Should be only + // the `` section of the full name for example from + // `registry.example.com/my-org/my-image:`. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "v1.27.1", "3.5.7-0" + // + // [Docker Image Inspect]: https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect + ContainerImageTagsKey = attribute.Key("container.image.tags") + + // ContainerNameKey is the attribute Key conforming to the "container.name" + // semantic conventions. It represents the container name used by container + // runtime. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry-autoconf" + ContainerNameKey = attribute.Key("container.name") + + // ContainerRuntimeDescriptionKey is the attribute Key conforming to the + // "container.runtime.description" semantic conventions. It represents a + // description about the runtime which could include, for example details about + // the CRI/API version being used or other customisations. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "docker://19.3.1 - CRI: 1.22.0" + ContainerRuntimeDescriptionKey = attribute.Key("container.runtime.description") + + // ContainerRuntimeNameKey is the attribute Key conforming to the + // "container.runtime.name" semantic conventions. It represents the container + // runtime managing this container. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "docker", "containerd", "rkt" + ContainerRuntimeNameKey = attribute.Key("container.runtime.name") + + // ContainerRuntimeVersionKey is the attribute Key conforming to the + // "container.runtime.version" semantic conventions. It represents the version + // of the runtime of this process, as returned by the runtime without + // modification. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1.0.0 + ContainerRuntimeVersionKey = attribute.Key("container.runtime.version") +) + +// ContainerCommand returns an attribute KeyValue conforming to the +// "container.command" semantic conventions. It represents the command used to +// run the container (i.e. the command name). +func ContainerCommand(val string) attribute.KeyValue { + return ContainerCommandKey.String(val) +} + +// ContainerCommandArgs returns an attribute KeyValue conforming to the +// "container.command_args" semantic conventions. It represents the all the +// command arguments (including the command/executable itself) run by the +// container. +func ContainerCommandArgs(val ...string) attribute.KeyValue { + return ContainerCommandArgsKey.StringSlice(val) +} + +// ContainerCommandLine returns an attribute KeyValue conforming to the +// "container.command_line" semantic conventions. It represents the full command +// run by the container as a single string representing the full command. +func ContainerCommandLine(val string) attribute.KeyValue { + return ContainerCommandLineKey.String(val) +} + +// ContainerCSIPluginName returns an attribute KeyValue conforming to the +// "container.csi.plugin.name" semantic conventions. It represents the name of +// the CSI ([Container Storage Interface]) plugin used by the volume. +// +// [Container Storage Interface]: https://github.com/container-storage-interface/spec +func ContainerCSIPluginName(val string) attribute.KeyValue { + return ContainerCSIPluginNameKey.String(val) +} + +// ContainerCSIVolumeID returns an attribute KeyValue conforming to the +// "container.csi.volume.id" semantic conventions. It represents the unique +// volume ID returned by the CSI ([Container Storage Interface]) plugin. +// +// [Container Storage Interface]: https://github.com/container-storage-interface/spec +func ContainerCSIVolumeID(val string) attribute.KeyValue { + return ContainerCSIVolumeIDKey.String(val) +} + +// ContainerID returns an attribute KeyValue conforming to the "container.id" +// semantic conventions. It represents the container ID. Usually a UUID, as for +// example used to [identify Docker containers]. The UUID might be abbreviated. +// +// [identify Docker containers]: https://docs.docker.com/engine/containers/run/#container-identification +func ContainerID(val string) attribute.KeyValue { + return ContainerIDKey.String(val) +} + +// ContainerImageID returns an attribute KeyValue conforming to the +// "container.image.id" semantic conventions. It represents the runtime specific +// image identifier. Usually a hash algorithm followed by a UUID. +func ContainerImageID(val string) attribute.KeyValue { + return ContainerImageIDKey.String(val) +} + +// ContainerImageName returns an attribute KeyValue conforming to the +// "container.image.name" semantic conventions. It represents the name of the +// image the container was built on. +func ContainerImageName(val string) attribute.KeyValue { + return ContainerImageNameKey.String(val) +} + +// ContainerImageRepoDigests returns an attribute KeyValue conforming to the +// "container.image.repo_digests" semantic conventions. It represents the repo +// digests of the container image as provided by the container runtime. +func ContainerImageRepoDigests(val ...string) attribute.KeyValue { + return ContainerImageRepoDigestsKey.StringSlice(val) +} + +// ContainerImageTags returns an attribute KeyValue conforming to the +// "container.image.tags" semantic conventions. It represents the container image +// tags. An example can be found in [Docker Image Inspect]. Should be only the +// `` section of the full name for example from +// `registry.example.com/my-org/my-image:`. +// +// [Docker Image Inspect]: https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageInspect +func ContainerImageTags(val ...string) attribute.KeyValue { + return ContainerImageTagsKey.StringSlice(val) +} + +// ContainerLabel returns an attribute KeyValue conforming to the +// "container.label" semantic conventions. It represents the container labels, +// `` being the label name, the value being the label value. +func ContainerLabel(key string, val string) attribute.KeyValue { + return attribute.String("container.label."+key, val) +} + +// ContainerName returns an attribute KeyValue conforming to the "container.name" +// semantic conventions. It represents the container name used by container +// runtime. +func ContainerName(val string) attribute.KeyValue { + return ContainerNameKey.String(val) +} + +// ContainerRuntimeDescription returns an attribute KeyValue conforming to the +// "container.runtime.description" semantic conventions. It represents a +// description about the runtime which could include, for example details about +// the CRI/API version being used or other customisations. +func ContainerRuntimeDescription(val string) attribute.KeyValue { + return ContainerRuntimeDescriptionKey.String(val) +} + +// ContainerRuntimeName returns an attribute KeyValue conforming to the +// "container.runtime.name" semantic conventions. It represents the container +// runtime managing this container. +func ContainerRuntimeName(val string) attribute.KeyValue { + return ContainerRuntimeNameKey.String(val) +} + +// ContainerRuntimeVersion returns an attribute KeyValue conforming to the +// "container.runtime.version" semantic conventions. It represents the version of +// the runtime of this process, as returned by the runtime without modification. +func ContainerRuntimeVersion(val string) attribute.KeyValue { + return ContainerRuntimeVersionKey.String(val) +} + +// Namespace: cpu +const ( + // CPULogicalNumberKey is the attribute Key conforming to the + // "cpu.logical_number" semantic conventions. It represents the logical CPU + // number [0..n-1]. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1 + CPULogicalNumberKey = attribute.Key("cpu.logical_number") + + // CPUModeKey is the attribute Key conforming to the "cpu.mode" semantic + // conventions. It represents the mode of the CPU. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "user", "system" + CPUModeKey = attribute.Key("cpu.mode") +) + +// CPULogicalNumber returns an attribute KeyValue conforming to the +// "cpu.logical_number" semantic conventions. It represents the logical CPU +// number [0..n-1]. +func CPULogicalNumber(val int) attribute.KeyValue { + return CPULogicalNumberKey.Int(val) +} + +// Enum values for cpu.mode +var ( + // User + // Stability: development + CPUModeUser = CPUModeKey.String("user") + // System + // Stability: development + CPUModeSystem = CPUModeKey.String("system") + // Nice + // Stability: development + CPUModeNice = CPUModeKey.String("nice") + // Idle + // Stability: development + CPUModeIdle = CPUModeKey.String("idle") + // IO Wait + // Stability: development + CPUModeIOWait = CPUModeKey.String("iowait") + // Interrupt + // Stability: development + CPUModeInterrupt = CPUModeKey.String("interrupt") + // Steal + // Stability: development + CPUModeSteal = CPUModeKey.String("steal") + // Kernel + // Stability: development + CPUModeKernel = CPUModeKey.String("kernel") +) + +// Namespace: db +const ( + // DBClientConnectionPoolNameKey is the attribute Key conforming to the + // "db.client.connection.pool.name" semantic conventions. It represents the name + // of the connection pool; unique within the instrumented application. In case + // the connection pool implementation doesn't provide a name, instrumentation + // SHOULD use a combination of parameters that would make the name unique, for + // example, combining attributes `server.address`, `server.port`, and + // `db.namespace`, formatted as `server.address:server.port/db.namespace`. + // Instrumentations that generate connection pool name following different + // patterns SHOULD document it. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "myDataSource" + DBClientConnectionPoolNameKey = attribute.Key("db.client.connection.pool.name") + + // DBClientConnectionStateKey is the attribute Key conforming to the + // "db.client.connection.state" semantic conventions. It represents the state of + // a connection in the pool. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "idle" + DBClientConnectionStateKey = attribute.Key("db.client.connection.state") + + // DBCollectionNameKey is the attribute Key conforming to the + // "db.collection.name" semantic conventions. It represents the name of a + // collection (table, container) within the database. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "public.users", "customers" + // Note: It is RECOMMENDED to capture the value as provided by the application + // without attempting to do any case normalization. + // + // The collection name SHOULD NOT be extracted from `db.query.text`, + // when the database system supports query text with multiple collections + // in non-batch operations. + // + // For batch operations, if the individual operations are known to have the same + // collection name then that collection name SHOULD be used. + DBCollectionNameKey = attribute.Key("db.collection.name") + + // DBNamespaceKey is the attribute Key conforming to the "db.namespace" semantic + // conventions. It represents the name of the database, fully qualified within + // the server address and port. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "customers", "test.users" + // Note: If a database system has multiple namespace components, they SHOULD be + // concatenated from the most general to the most specific namespace component, + // using `|` as a separator between the components. Any missing components (and + // their associated separators) SHOULD be omitted. + // Semantic conventions for individual database systems SHOULD document what + // `db.namespace` means in the context of that system. + // It is RECOMMENDED to capture the value as provided by the application without + // attempting to do any case normalization. + DBNamespaceKey = attribute.Key("db.namespace") + + // DBOperationBatchSizeKey is the attribute Key conforming to the + // "db.operation.batch.size" semantic conventions. It represents the number of + // queries included in a batch operation. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: 2, 3, 4 + // Note: Operations are only considered batches when they contain two or more + // operations, and so `db.operation.batch.size` SHOULD never be `1`. + DBOperationBatchSizeKey = attribute.Key("db.operation.batch.size") + + // DBOperationNameKey is the attribute Key conforming to the "db.operation.name" + // semantic conventions. It represents the name of the operation or command + // being executed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "findAndModify", "HMSET", "SELECT" + // Note: It is RECOMMENDED to capture the value as provided by the application + // without attempting to do any case normalization. + // + // The operation name SHOULD NOT be extracted from `db.query.text`, + // when the database system supports query text with multiple operations + // in non-batch operations. + // + // If spaces can occur in the operation name, multiple consecutive spaces + // SHOULD be normalized to a single space. + // + // For batch operations, if the individual operations are known to have the same + // operation name + // then that operation name SHOULD be used prepended by `BATCH `, + // otherwise `db.operation.name` SHOULD be `BATCH` or some other database + // system specific term if more applicable. + DBOperationNameKey = attribute.Key("db.operation.name") + + // DBQuerySummaryKey is the attribute Key conforming to the "db.query.summary" + // semantic conventions. It represents the low cardinality summary of a database + // query. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "SELECT wuser_table", "INSERT shipping_details SELECT orders", "get + // user by id" + // Note: The query summary describes a class of database queries and is useful + // as a grouping key, especially when analyzing telemetry for database + // calls involving complex queries. + // + // Summary may be available to the instrumentation through + // instrumentation hooks or other means. If it is not available, + // instrumentations + // that support query parsing SHOULD generate a summary following + // [Generating query summary] + // section. + // + // [Generating query summary]: /docs/database/database-spans.md#generating-a-summary-of-the-query + DBQuerySummaryKey = attribute.Key("db.query.summary") + + // DBQueryTextKey is the attribute Key conforming to the "db.query.text" + // semantic conventions. It represents the database query being executed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "SELECT * FROM wuser_table where username = ?", "SET mykey ?" + // Note: For sanitization see [Sanitization of `db.query.text`]. + // For batch operations, if the individual operations are known to have the same + // query text then that query text SHOULD be used, otherwise all of the + // individual query texts SHOULD be concatenated with separator `; ` or some + // other database system specific separator if more applicable. + // Parameterized query text SHOULD NOT be sanitized. Even though parameterized + // query text can potentially have sensitive data, by using a parameterized + // query the user is giving a strong signal that any sensitive data will be + // passed as parameter values, and the benefit to observability of capturing the + // static part of the query text by default outweighs the risk. + // + // [Sanitization of `db.query.text`]: /docs/database/database-spans.md#sanitization-of-dbquerytext + DBQueryTextKey = attribute.Key("db.query.text") + + // DBResponseReturnedRowsKey is the attribute Key conforming to the + // "db.response.returned_rows" semantic conventions. It represents the number of + // rows returned by the operation. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 10, 30, 1000 + DBResponseReturnedRowsKey = attribute.Key("db.response.returned_rows") + + // DBResponseStatusCodeKey is the attribute Key conforming to the + // "db.response.status_code" semantic conventions. It represents the database + // response status code. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "102", "ORA-17002", "08P01", "404" + // Note: The status code returned by the database. Usually it represents an + // error code, but may also represent partial success, warning, or differentiate + // between various types of successful outcomes. + // Semantic conventions for individual database systems SHOULD document what + // `db.response.status_code` means in the context of that system. + DBResponseStatusCodeKey = attribute.Key("db.response.status_code") + + // DBStoredProcedureNameKey is the attribute Key conforming to the + // "db.stored_procedure.name" semantic conventions. It represents the name of a + // stored procedure within the database. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "GetCustomer" + // Note: It is RECOMMENDED to capture the value as provided by the application + // without attempting to do any case normalization. + // + // For batch operations, if the individual operations are known to have the same + // stored procedure name then that stored procedure name SHOULD be used. + DBStoredProcedureNameKey = attribute.Key("db.stored_procedure.name") + + // DBSystemNameKey is the attribute Key conforming to the "db.system.name" + // semantic conventions. It represents the database management system (DBMS) + // product as identified by the client instrumentation. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: + // Note: The actual DBMS may differ from the one identified by the client. For + // example, when using PostgreSQL client libraries to connect to a CockroachDB, + // the `db.system.name` is set to `postgresql` based on the instrumentation's + // best knowledge. + DBSystemNameKey = attribute.Key("db.system.name") +) + +// DBClientConnectionPoolName returns an attribute KeyValue conforming to the +// "db.client.connection.pool.name" semantic conventions. It represents the name +// of the connection pool; unique within the instrumented application. In case +// the connection pool implementation doesn't provide a name, instrumentation +// SHOULD use a combination of parameters that would make the name unique, for +// example, combining attributes `server.address`, `server.port`, and +// `db.namespace`, formatted as `server.address:server.port/db.namespace`. +// Instrumentations that generate connection pool name following different +// patterns SHOULD document it. +func DBClientConnectionPoolName(val string) attribute.KeyValue { + return DBClientConnectionPoolNameKey.String(val) +} + +// DBCollectionName returns an attribute KeyValue conforming to the +// "db.collection.name" semantic conventions. It represents the name of a +// collection (table, container) within the database. +func DBCollectionName(val string) attribute.KeyValue { + return DBCollectionNameKey.String(val) +} + +// DBNamespace returns an attribute KeyValue conforming to the "db.namespace" +// semantic conventions. It represents the name of the database, fully qualified +// within the server address and port. +func DBNamespace(val string) attribute.KeyValue { + return DBNamespaceKey.String(val) +} + +// DBOperationBatchSize returns an attribute KeyValue conforming to the +// "db.operation.batch.size" semantic conventions. It represents the number of +// queries included in a batch operation. +func DBOperationBatchSize(val int) attribute.KeyValue { + return DBOperationBatchSizeKey.Int(val) +} + +// DBOperationName returns an attribute KeyValue conforming to the +// "db.operation.name" semantic conventions. It represents the name of the +// operation or command being executed. +func DBOperationName(val string) attribute.KeyValue { + return DBOperationNameKey.String(val) +} + +// DBOperationParameter returns an attribute KeyValue conforming to the +// "db.operation.parameter" semantic conventions. It represents a database +// operation parameter, with `` being the parameter name, and the attribute +// value being a string representation of the parameter value. +func DBOperationParameter(key string, val string) attribute.KeyValue { + return attribute.String("db.operation.parameter."+key, val) +} + +// DBQueryParameter returns an attribute KeyValue conforming to the +// "db.query.parameter" semantic conventions. It represents a database query +// parameter, with `` being the parameter name, and the attribute value +// being a string representation of the parameter value. +func DBQueryParameter(key string, val string) attribute.KeyValue { + return attribute.String("db.query.parameter."+key, val) +} + +// DBQuerySummary returns an attribute KeyValue conforming to the +// "db.query.summary" semantic conventions. It represents the low cardinality +// summary of a database query. +func DBQuerySummary(val string) attribute.KeyValue { + return DBQuerySummaryKey.String(val) +} + +// DBQueryText returns an attribute KeyValue conforming to the "db.query.text" +// semantic conventions. It represents the database query being executed. +func DBQueryText(val string) attribute.KeyValue { + return DBQueryTextKey.String(val) +} + +// DBResponseReturnedRows returns an attribute KeyValue conforming to the +// "db.response.returned_rows" semantic conventions. It represents the number of +// rows returned by the operation. +func DBResponseReturnedRows(val int) attribute.KeyValue { + return DBResponseReturnedRowsKey.Int(val) +} + +// DBResponseStatusCode returns an attribute KeyValue conforming to the +// "db.response.status_code" semantic conventions. It represents the database +// response status code. +func DBResponseStatusCode(val string) attribute.KeyValue { + return DBResponseStatusCodeKey.String(val) +} + +// DBStoredProcedureName returns an attribute KeyValue conforming to the +// "db.stored_procedure.name" semantic conventions. It represents the name of a +// stored procedure within the database. +func DBStoredProcedureName(val string) attribute.KeyValue { + return DBStoredProcedureNameKey.String(val) +} + +// Enum values for db.client.connection.state +var ( + // idle + // Stability: development + DBClientConnectionStateIdle = DBClientConnectionStateKey.String("idle") + // used + // Stability: development + DBClientConnectionStateUsed = DBClientConnectionStateKey.String("used") +) + +// Enum values for db.system.name +var ( + // Some other SQL database. Fallback only. + // Stability: development + DBSystemNameOtherSQL = DBSystemNameKey.String("other_sql") + // [Adabas (Adaptable Database System)] + // Stability: development + // + // [Adabas (Adaptable Database System)]: https://documentation.softwareag.com/?pf=adabas + DBSystemNameSoftwareagAdabas = DBSystemNameKey.String("softwareag.adabas") + // [Actian Ingres] + // Stability: development + // + // [Actian Ingres]: https://www.actian.com/databases/ingres/ + DBSystemNameActianIngres = DBSystemNameKey.String("actian.ingres") + // [Amazon DynamoDB] + // Stability: development + // + // [Amazon DynamoDB]: https://aws.amazon.com/pm/dynamodb/ + DBSystemNameAWSDynamoDB = DBSystemNameKey.String("aws.dynamodb") + // [Amazon Redshift] + // Stability: development + // + // [Amazon Redshift]: https://aws.amazon.com/redshift/ + DBSystemNameAWSRedshift = DBSystemNameKey.String("aws.redshift") + // [Azure Cosmos DB] + // Stability: development + // + // [Azure Cosmos DB]: https://learn.microsoft.com/azure/cosmos-db + DBSystemNameAzureCosmosDB = DBSystemNameKey.String("azure.cosmosdb") + // [InterSystems Caché] + // Stability: development + // + // [InterSystems Caché]: https://www.intersystems.com/products/cache/ + DBSystemNameIntersystemsCache = DBSystemNameKey.String("intersystems.cache") + // [Apache Cassandra] + // Stability: development + // + // [Apache Cassandra]: https://cassandra.apache.org/ + DBSystemNameCassandra = DBSystemNameKey.String("cassandra") + // [ClickHouse] + // Stability: development + // + // [ClickHouse]: https://clickhouse.com/ + DBSystemNameClickHouse = DBSystemNameKey.String("clickhouse") + // [CockroachDB] + // Stability: development + // + // [CockroachDB]: https://www.cockroachlabs.com/ + DBSystemNameCockroachDB = DBSystemNameKey.String("cockroachdb") + // [Couchbase] + // Stability: development + // + // [Couchbase]: https://www.couchbase.com/ + DBSystemNameCouchbase = DBSystemNameKey.String("couchbase") + // [Apache CouchDB] + // Stability: development + // + // [Apache CouchDB]: https://couchdb.apache.org/ + DBSystemNameCouchDB = DBSystemNameKey.String("couchdb") + // [Apache Derby] + // Stability: development + // + // [Apache Derby]: https://db.apache.org/derby/ + DBSystemNameDerby = DBSystemNameKey.String("derby") + // [Elasticsearch] + // Stability: development + // + // [Elasticsearch]: https://www.elastic.co/elasticsearch + DBSystemNameElasticsearch = DBSystemNameKey.String("elasticsearch") + // [Firebird] + // Stability: development + // + // [Firebird]: https://www.firebirdsql.org/ + DBSystemNameFirebirdSQL = DBSystemNameKey.String("firebirdsql") + // [Google Cloud Spanner] + // Stability: development + // + // [Google Cloud Spanner]: https://cloud.google.com/spanner + DBSystemNameGCPSpanner = DBSystemNameKey.String("gcp.spanner") + // [Apache Geode] + // Stability: development + // + // [Apache Geode]: https://geode.apache.org/ + DBSystemNameGeode = DBSystemNameKey.String("geode") + // [H2 Database] + // Stability: development + // + // [H2 Database]: https://h2database.com/ + DBSystemNameH2database = DBSystemNameKey.String("h2database") + // [Apache HBase] + // Stability: development + // + // [Apache HBase]: https://hbase.apache.org/ + DBSystemNameHBase = DBSystemNameKey.String("hbase") + // [Apache Hive] + // Stability: development + // + // [Apache Hive]: https://hive.apache.org/ + DBSystemNameHive = DBSystemNameKey.String("hive") + // [HyperSQL Database] + // Stability: development + // + // [HyperSQL Database]: https://hsqldb.org/ + DBSystemNameHSQLDB = DBSystemNameKey.String("hsqldb") + // [IBM Db2] + // Stability: development + // + // [IBM Db2]: https://www.ibm.com/db2 + DBSystemNameIBMDB2 = DBSystemNameKey.String("ibm.db2") + // [IBM Informix] + // Stability: development + // + // [IBM Informix]: https://www.ibm.com/products/informix + DBSystemNameIBMInformix = DBSystemNameKey.String("ibm.informix") + // [IBM Netezza] + // Stability: development + // + // [IBM Netezza]: https://www.ibm.com/products/netezza + DBSystemNameIBMNetezza = DBSystemNameKey.String("ibm.netezza") + // [InfluxDB] + // Stability: development + // + // [InfluxDB]: https://www.influxdata.com/ + DBSystemNameInfluxDB = DBSystemNameKey.String("influxdb") + // [Instant] + // Stability: development + // + // [Instant]: https://www.instantdb.com/ + DBSystemNameInstantDB = DBSystemNameKey.String("instantdb") + // [MariaDB] + // Stability: stable + // + // [MariaDB]: https://mariadb.org/ + DBSystemNameMariaDB = DBSystemNameKey.String("mariadb") + // [Memcached] + // Stability: development + // + // [Memcached]: https://memcached.org/ + DBSystemNameMemcached = DBSystemNameKey.String("memcached") + // [MongoDB] + // Stability: development + // + // [MongoDB]: https://www.mongodb.com/ + DBSystemNameMongoDB = DBSystemNameKey.String("mongodb") + // [Microsoft SQL Server] + // Stability: stable + // + // [Microsoft SQL Server]: https://www.microsoft.com/sql-server + DBSystemNameMicrosoftSQLServer = DBSystemNameKey.String("microsoft.sql_server") + // [MySQL] + // Stability: stable + // + // [MySQL]: https://www.mysql.com/ + DBSystemNameMySQL = DBSystemNameKey.String("mysql") + // [Neo4j] + // Stability: development + // + // [Neo4j]: https://neo4j.com/ + DBSystemNameNeo4j = DBSystemNameKey.String("neo4j") + // [OpenSearch] + // Stability: development + // + // [OpenSearch]: https://opensearch.org/ + DBSystemNameOpenSearch = DBSystemNameKey.String("opensearch") + // [Oracle Database] + // Stability: development + // + // [Oracle Database]: https://www.oracle.com/database/ + DBSystemNameOracleDB = DBSystemNameKey.String("oracle.db") + // [PostgreSQL] + // Stability: stable + // + // [PostgreSQL]: https://www.postgresql.org/ + DBSystemNamePostgreSQL = DBSystemNameKey.String("postgresql") + // [Redis] + // Stability: development + // + // [Redis]: https://redis.io/ + DBSystemNameRedis = DBSystemNameKey.String("redis") + // [SAP HANA] + // Stability: development + // + // [SAP HANA]: https://www.sap.com/products/technology-platform/hana/what-is-sap-hana.html + DBSystemNameSAPHANA = DBSystemNameKey.String("sap.hana") + // [SAP MaxDB] + // Stability: development + // + // [SAP MaxDB]: https://maxdb.sap.com/ + DBSystemNameSAPMaxDB = DBSystemNameKey.String("sap.maxdb") + // [SQLite] + // Stability: development + // + // [SQLite]: https://www.sqlite.org/ + DBSystemNameSQLite = DBSystemNameKey.String("sqlite") + // [Teradata] + // Stability: development + // + // [Teradata]: https://www.teradata.com/ + DBSystemNameTeradata = DBSystemNameKey.String("teradata") + // [Trino] + // Stability: development + // + // [Trino]: https://trino.io/ + DBSystemNameTrino = DBSystemNameKey.String("trino") +) + +// Namespace: deployment +const ( + // DeploymentEnvironmentNameKey is the attribute Key conforming to the + // "deployment.environment.name" semantic conventions. It represents the name of + // the [deployment environment] (aka deployment tier). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "staging", "production" + // Note: `deployment.environment.name` does not affect the uniqueness + // constraints defined through + // the `service.namespace`, `service.name` and `service.instance.id` resource + // attributes. + // This implies that resources carrying the following attribute combinations + // MUST be + // considered to be identifying the same service: + // + // - `service.name=frontend`, `deployment.environment.name=production` + // - `service.name=frontend`, `deployment.environment.name=staging`. + // + // + // [deployment environment]: https://wikipedia.org/wiki/Deployment_environment + DeploymentEnvironmentNameKey = attribute.Key("deployment.environment.name") + + // DeploymentIDKey is the attribute Key conforming to the "deployment.id" + // semantic conventions. It represents the id of the deployment. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1208" + DeploymentIDKey = attribute.Key("deployment.id") + + // DeploymentNameKey is the attribute Key conforming to the "deployment.name" + // semantic conventions. It represents the name of the deployment. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "deploy my app", "deploy-frontend" + DeploymentNameKey = attribute.Key("deployment.name") + + // DeploymentStatusKey is the attribute Key conforming to the + // "deployment.status" semantic conventions. It represents the status of the + // deployment. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + DeploymentStatusKey = attribute.Key("deployment.status") +) + +// DeploymentEnvironmentName returns an attribute KeyValue conforming to the +// "deployment.environment.name" semantic conventions. It represents the name of +// the [deployment environment] (aka deployment tier). +// +// [deployment environment]: https://wikipedia.org/wiki/Deployment_environment +func DeploymentEnvironmentName(val string) attribute.KeyValue { + return DeploymentEnvironmentNameKey.String(val) +} + +// DeploymentID returns an attribute KeyValue conforming to the "deployment.id" +// semantic conventions. It represents the id of the deployment. +func DeploymentID(val string) attribute.KeyValue { + return DeploymentIDKey.String(val) +} + +// DeploymentName returns an attribute KeyValue conforming to the +// "deployment.name" semantic conventions. It represents the name of the +// deployment. +func DeploymentName(val string) attribute.KeyValue { + return DeploymentNameKey.String(val) +} + +// Enum values for deployment.status +var ( + // failed + // Stability: development + DeploymentStatusFailed = DeploymentStatusKey.String("failed") + // succeeded + // Stability: development + DeploymentStatusSucceeded = DeploymentStatusKey.String("succeeded") +) + +// Namespace: destination +const ( + // DestinationAddressKey is the attribute Key conforming to the + // "destination.address" semantic conventions. It represents the destination + // address - domain name if available without reverse DNS lookup; otherwise, IP + // address or Unix domain socket name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "destination.example.com", "10.1.2.80", "/tmp/my.sock" + // Note: When observed from the source side, and when communicating through an + // intermediary, `destination.address` SHOULD represent the destination address + // behind any intermediaries, for example proxies, if it's available. + DestinationAddressKey = attribute.Key("destination.address") + + // DestinationPortKey is the attribute Key conforming to the "destination.port" + // semantic conventions. It represents the destination port number. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 3389, 2888 + DestinationPortKey = attribute.Key("destination.port") +) + +// DestinationAddress returns an attribute KeyValue conforming to the +// "destination.address" semantic conventions. It represents the destination +// address - domain name if available without reverse DNS lookup; otherwise, IP +// address or Unix domain socket name. +func DestinationAddress(val string) attribute.KeyValue { + return DestinationAddressKey.String(val) +} + +// DestinationPort returns an attribute KeyValue conforming to the +// "destination.port" semantic conventions. It represents the destination port +// number. +func DestinationPort(val int) attribute.KeyValue { + return DestinationPortKey.Int(val) +} + +// Namespace: device +const ( + // DeviceIDKey is the attribute Key conforming to the "device.id" semantic + // conventions. It represents a unique identifier representing the device. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "123456789012345", "01:23:45:67:89:AB" + // Note: Its value SHOULD be identical for all apps on a device and it SHOULD + // NOT change if an app is uninstalled and re-installed. + // However, it might be resettable by the user for all apps on a device. + // Hardware IDs (e.g. vendor-specific serial number, IMEI or MAC address) MAY be + // used as values. + // + // More information about Android identifier best practices can be found in the + // [Android user data IDs guide]. + // + // > [!WARNING]> This attribute may contain sensitive (PII) information. Caution + // > should be taken when storing personal data or anything which can identify a + // > user. GDPR and data protection laws may apply, + // > ensure you do your own due diligence.> Due to these reasons, this + // > identifier is not recommended for consumer applications and will likely + // > result in rejection from both Google Play and App Store. + // > However, it may be appropriate for specific enterprise scenarios, such as + // > kiosk devices or enterprise-managed devices, with appropriate compliance + // > clearance. + // > Any instrumentation providing this identifier MUST implement it as an + // > opt-in feature.> See [`app.installation.id`]> for a more + // > privacy-preserving alternative. + // + // [Android user data IDs guide]: https://developer.android.com/training/articles/user-data-ids + // [`app.installation.id`]: /docs/registry/attributes/app.md#app-installation-id + DeviceIDKey = attribute.Key("device.id") + + // DeviceManufacturerKey is the attribute Key conforming to the + // "device.manufacturer" semantic conventions. It represents the name of the + // device manufacturer. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Apple", "Samsung" + // Note: The Android OS provides this field via [Build]. iOS apps SHOULD + // hardcode the value `Apple`. + // + // [Build]: https://developer.android.com/reference/android/os/Build#MANUFACTURER + DeviceManufacturerKey = attribute.Key("device.manufacturer") + + // DeviceModelIdentifierKey is the attribute Key conforming to the + // "device.model.identifier" semantic conventions. It represents the model + // identifier for the device. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "iPhone3,4", "SM-G920F" + // Note: It's recommended this value represents a machine-readable version of + // the model identifier rather than the market or consumer-friendly name of the + // device. + DeviceModelIdentifierKey = attribute.Key("device.model.identifier") + + // DeviceModelNameKey is the attribute Key conforming to the "device.model.name" + // semantic conventions. It represents the marketing name for the device model. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "iPhone 6s Plus", "Samsung Galaxy S6" + // Note: It's recommended this value represents a human-readable version of the + // device model rather than a machine-readable alternative. + DeviceModelNameKey = attribute.Key("device.model.name") +) + +// DeviceID returns an attribute KeyValue conforming to the "device.id" semantic +// conventions. It represents a unique identifier representing the device. +func DeviceID(val string) attribute.KeyValue { + return DeviceIDKey.String(val) +} + +// DeviceManufacturer returns an attribute KeyValue conforming to the +// "device.manufacturer" semantic conventions. It represents the name of the +// device manufacturer. +func DeviceManufacturer(val string) attribute.KeyValue { + return DeviceManufacturerKey.String(val) +} + +// DeviceModelIdentifier returns an attribute KeyValue conforming to the +// "device.model.identifier" semantic conventions. It represents the model +// identifier for the device. +func DeviceModelIdentifier(val string) attribute.KeyValue { + return DeviceModelIdentifierKey.String(val) +} + +// DeviceModelName returns an attribute KeyValue conforming to the +// "device.model.name" semantic conventions. It represents the marketing name for +// the device model. +func DeviceModelName(val string) attribute.KeyValue { + return DeviceModelNameKey.String(val) +} + +// Namespace: disk +const ( + // DiskIODirectionKey is the attribute Key conforming to the "disk.io.direction" + // semantic conventions. It represents the disk IO operation direction. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "read" + DiskIODirectionKey = attribute.Key("disk.io.direction") +) + +// Enum values for disk.io.direction +var ( + // read + // Stability: development + DiskIODirectionRead = DiskIODirectionKey.String("read") + // write + // Stability: development + DiskIODirectionWrite = DiskIODirectionKey.String("write") +) + +// Namespace: dns +const ( + // DNSAnswersKey is the attribute Key conforming to the "dns.answers" semantic + // conventions. It represents the list of IPv4 or IPv6 addresses resolved during + // DNS lookup. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "10.0.0.1", "2001:0db8:85a3:0000:0000:8a2e:0370:7334" + DNSAnswersKey = attribute.Key("dns.answers") + + // DNSQuestionNameKey is the attribute Key conforming to the "dns.question.name" + // semantic conventions. It represents the name being queried. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "www.example.com", "opentelemetry.io" + // Note: If the name field contains non-printable characters (below 32 or above + // 126), those characters should be represented as escaped base 10 integers + // (\DDD). Back slashes and quotes should be escaped. Tabs, carriage returns, + // and line feeds should be converted to \t, \r, and \n respectively. + DNSQuestionNameKey = attribute.Key("dns.question.name") +) + +// DNSAnswers returns an attribute KeyValue conforming to the "dns.answers" +// semantic conventions. It represents the list of IPv4 or IPv6 addresses +// resolved during DNS lookup. +func DNSAnswers(val ...string) attribute.KeyValue { + return DNSAnswersKey.StringSlice(val) +} + +// DNSQuestionName returns an attribute KeyValue conforming to the +// "dns.question.name" semantic conventions. It represents the name being +// queried. +func DNSQuestionName(val string) attribute.KeyValue { + return DNSQuestionNameKey.String(val) +} + +// Namespace: elasticsearch +const ( + // ElasticsearchNodeNameKey is the attribute Key conforming to the + // "elasticsearch.node.name" semantic conventions. It represents the represents + // the human-readable identifier of the node/instance to which a request was + // routed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "instance-0000000001" + ElasticsearchNodeNameKey = attribute.Key("elasticsearch.node.name") +) + +// ElasticsearchNodeName returns an attribute KeyValue conforming to the +// "elasticsearch.node.name" semantic conventions. It represents the represents +// the human-readable identifier of the node/instance to which a request was +// routed. +func ElasticsearchNodeName(val string) attribute.KeyValue { + return ElasticsearchNodeNameKey.String(val) +} + +// Namespace: enduser +const ( + // EnduserIDKey is the attribute Key conforming to the "enduser.id" semantic + // conventions. It represents the unique identifier of an end user in the + // system. It maybe a username, email address, or other identifier. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "username" + // Note: Unique identifier of an end user in the system. + // + // > [!Warning] + // > This field contains sensitive (PII) information. + EnduserIDKey = attribute.Key("enduser.id") + + // EnduserPseudoIDKey is the attribute Key conforming to the "enduser.pseudo.id" + // semantic conventions. It represents the pseudonymous identifier of an end + // user. This identifier should be a random value that is not directly linked or + // associated with the end user's actual identity. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "QdH5CAWJgqVT4rOr0qtumf" + // Note: Pseudonymous identifier of an end user. + // + // > [!Warning] + // > This field contains sensitive (linkable PII) information. + EnduserPseudoIDKey = attribute.Key("enduser.pseudo.id") +) + +// EnduserID returns an attribute KeyValue conforming to the "enduser.id" +// semantic conventions. It represents the unique identifier of an end user in +// the system. It maybe a username, email address, or other identifier. +func EnduserID(val string) attribute.KeyValue { + return EnduserIDKey.String(val) +} + +// EnduserPseudoID returns an attribute KeyValue conforming to the +// "enduser.pseudo.id" semantic conventions. It represents the pseudonymous +// identifier of an end user. This identifier should be a random value that is +// not directly linked or associated with the end user's actual identity. +func EnduserPseudoID(val string) attribute.KeyValue { + return EnduserPseudoIDKey.String(val) +} + +// Namespace: error +const ( + // ErrorMessageKey is the attribute Key conforming to the "error.message" + // semantic conventions. It represents a message providing more detail about an + // error in human-readable form. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Unexpected input type: string", "The user has exceeded their + // storage quota" + // Note: `error.message` should provide additional context and detail about an + // error. + // It is NOT RECOMMENDED to duplicate the value of `error.type` in + // `error.message`. + // It is also NOT RECOMMENDED to duplicate the value of `exception.message` in + // `error.message`. + // + // `error.message` is NOT RECOMMENDED for metrics or spans due to its unbounded + // cardinality and overlap with span status. + ErrorMessageKey = attribute.Key("error.message") + + // ErrorTypeKey is the attribute Key conforming to the "error.type" semantic + // conventions. It represents the describes a class of error the operation ended + // with. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "timeout", "java.net.UnknownHostException", + // "server_certificate_invalid", "500" + // Note: The `error.type` SHOULD be predictable, and SHOULD have low + // cardinality. + // + // When `error.type` is set to a type (e.g., an exception type), its + // canonical class name identifying the type within the artifact SHOULD be used. + // + // Instrumentations SHOULD document the list of errors they report. + // + // The cardinality of `error.type` within one instrumentation library SHOULD be + // low. + // Telemetry consumers that aggregate data from multiple instrumentation + // libraries and applications + // should be prepared for `error.type` to have high cardinality at query time + // when no + // additional filters are applied. + // + // If the operation has completed successfully, instrumentations SHOULD NOT set + // `error.type`. + // + // If a specific domain defines its own set of error identifiers (such as HTTP + // or gRPC status codes), + // it's RECOMMENDED to: + // + // - Use a domain-specific attribute + // - Set `error.type` to capture all errors, regardless of whether they are + // defined within the domain-specific set or not. + ErrorTypeKey = attribute.Key("error.type") +) + +// ErrorMessage returns an attribute KeyValue conforming to the "error.message" +// semantic conventions. It represents a message providing more detail about an +// error in human-readable form. +func ErrorMessage(val string) attribute.KeyValue { + return ErrorMessageKey.String(val) +} + +// Enum values for error.type +var ( + // A fallback error value to be used when the instrumentation doesn't define a + // custom value. + // + // Stability: stable + ErrorTypeOther = ErrorTypeKey.String("_OTHER") +) + +// Namespace: exception +const ( + // ExceptionMessageKey is the attribute Key conforming to the + // "exception.message" semantic conventions. It represents the exception + // message. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "Division by zero", "Can't convert 'int' object to str implicitly" + ExceptionMessageKey = attribute.Key("exception.message") + + // ExceptionStacktraceKey is the attribute Key conforming to the + // "exception.stacktrace" semantic conventions. It represents a stacktrace as a + // string in the natural representation for the language runtime. The + // representation is to be determined and documented by each language SIG. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: Exception in thread "main" java.lang.RuntimeException: Test + // exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at + // com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at + // com.example.GenerateTrace.main(GenerateTrace.java:5) + ExceptionStacktraceKey = attribute.Key("exception.stacktrace") + + // ExceptionTypeKey is the attribute Key conforming to the "exception.type" + // semantic conventions. It represents the type of the exception (its + // fully-qualified class name, if applicable). The dynamic type of the exception + // should be preferred over the static type in languages that support it. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "java.net.ConnectException", "OSError" + ExceptionTypeKey = attribute.Key("exception.type") +) + +// ExceptionMessage returns an attribute KeyValue conforming to the +// "exception.message" semantic conventions. It represents the exception message. +func ExceptionMessage(val string) attribute.KeyValue { + return ExceptionMessageKey.String(val) +} + +// ExceptionStacktrace returns an attribute KeyValue conforming to the +// "exception.stacktrace" semantic conventions. It represents a stacktrace as a +// string in the natural representation for the language runtime. The +// representation is to be determined and documented by each language SIG. +func ExceptionStacktrace(val string) attribute.KeyValue { + return ExceptionStacktraceKey.String(val) +} + +// ExceptionType returns an attribute KeyValue conforming to the "exception.type" +// semantic conventions. It represents the type of the exception (its +// fully-qualified class name, if applicable). The dynamic type of the exception +// should be preferred over the static type in languages that support it. +func ExceptionType(val string) attribute.KeyValue { + return ExceptionTypeKey.String(val) +} + +// Namespace: faas +const ( + // FaaSColdstartKey is the attribute Key conforming to the "faas.coldstart" + // semantic conventions. It represents a boolean that is true if the serverless + // function is executed for the first time (aka cold-start). + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + FaaSColdstartKey = attribute.Key("faas.coldstart") + + // FaaSCronKey is the attribute Key conforming to the "faas.cron" semantic + // conventions. It represents a string containing the schedule period as + // [Cron Expression]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0/5 * * * ? * + // + // [Cron Expression]: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm + FaaSCronKey = attribute.Key("faas.cron") + + // FaaSDocumentCollectionKey is the attribute Key conforming to the + // "faas.document.collection" semantic conventions. It represents the name of + // the source on which the triggering operation was performed. For example, in + // Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the + // database name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "myBucketName", "myDbName" + FaaSDocumentCollectionKey = attribute.Key("faas.document.collection") + + // FaaSDocumentNameKey is the attribute Key conforming to the + // "faas.document.name" semantic conventions. It represents the document + // name/table subjected to the operation. For example, in Cloud Storage or S3 is + // the name of the file, and in Cosmos DB the table name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "myFile.txt", "myTableName" + FaaSDocumentNameKey = attribute.Key("faas.document.name") + + // FaaSDocumentOperationKey is the attribute Key conforming to the + // "faas.document.operation" semantic conventions. It represents the describes + // the type of the operation that was performed on the data. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + FaaSDocumentOperationKey = attribute.Key("faas.document.operation") + + // FaaSDocumentTimeKey is the attribute Key conforming to the + // "faas.document.time" semantic conventions. It represents a string containing + // the time when the data was accessed in the [ISO 8601] format expressed in + // [UTC]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 2020-01-23T13:47:06Z + // + // [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html + // [UTC]: https://www.w3.org/TR/NOTE-datetime + FaaSDocumentTimeKey = attribute.Key("faas.document.time") + + // FaaSInstanceKey is the attribute Key conforming to the "faas.instance" + // semantic conventions. It represents the execution environment ID as a string, + // that will be potentially reused for other invocations to the same + // function/function version. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021/06/28/[$LATEST]2f399eb14537447da05ab2a2e39309de" + // Note: - **AWS Lambda:** Use the (full) log stream name. + FaaSInstanceKey = attribute.Key("faas.instance") + + // FaaSInvocationIDKey is the attribute Key conforming to the + // "faas.invocation_id" semantic conventions. It represents the invocation ID of + // the current function invocation. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: af9d5aa4-a685-4c5f-a22b-444f80b3cc28 + FaaSInvocationIDKey = attribute.Key("faas.invocation_id") + + // FaaSInvokedNameKey is the attribute Key conforming to the "faas.invoked_name" + // semantic conventions. It represents the name of the invoked function. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: my-function + // Note: SHOULD be equal to the `faas.name` resource attribute of the invoked + // function. + FaaSInvokedNameKey = attribute.Key("faas.invoked_name") + + // FaaSInvokedProviderKey is the attribute Key conforming to the + // "faas.invoked_provider" semantic conventions. It represents the cloud + // provider of the invoked function. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: SHOULD be equal to the `cloud.provider` resource attribute of the + // invoked function. + FaaSInvokedProviderKey = attribute.Key("faas.invoked_provider") + + // FaaSInvokedRegionKey is the attribute Key conforming to the + // "faas.invoked_region" semantic conventions. It represents the cloud region of + // the invoked function. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: eu-central-1 + // Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked + // function. + FaaSInvokedRegionKey = attribute.Key("faas.invoked_region") + + // FaaSMaxMemoryKey is the attribute Key conforming to the "faas.max_memory" + // semantic conventions. It represents the amount of memory available to the + // serverless function converted to Bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Note: It's recommended to set this attribute since e.g. too little memory can + // easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, + // the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this + // information (which must be multiplied by 1,048,576). + FaaSMaxMemoryKey = attribute.Key("faas.max_memory") + + // FaaSNameKey is the attribute Key conforming to the "faas.name" semantic + // conventions. It represents the name of the single function that this runtime + // instance executes. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-function", "myazurefunctionapp/some-function-name" + // Note: This is the name of the function as configured/deployed on the FaaS + // platform and is usually different from the name of the callback + // function (which may be stored in the + // [`code.namespace`/`code.function.name`] + // span attributes). + // + // For some cloud providers, the above definition is ambiguous. The following + // definition of function name MUST be used for this attribute + // (and consequently the span name) for the listed cloud providers/products: + // + // - **Azure:** The full name `/`, i.e., function app name + // followed by a forward slash followed by the function name (this form + // can also be seen in the resource JSON for the function). + // This means that a span attribute MUST be used, as an Azure function + // app can host multiple functions that would usually share + // a TracerProvider (see also the `cloud.resource_id` attribute). + // + // + // [`code.namespace`/`code.function.name`]: /docs/general/attributes.md#source-code-attributes + FaaSNameKey = attribute.Key("faas.name") + + // FaaSTimeKey is the attribute Key conforming to the "faas.time" semantic + // conventions. It represents a string containing the function invocation time + // in the [ISO 8601] format expressed in [UTC]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 2020-01-23T13:47:06Z + // + // [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html + // [UTC]: https://www.w3.org/TR/NOTE-datetime + FaaSTimeKey = attribute.Key("faas.time") + + // FaaSTriggerKey is the attribute Key conforming to the "faas.trigger" semantic + // conventions. It represents the type of the trigger which caused this function + // invocation. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + FaaSTriggerKey = attribute.Key("faas.trigger") + + // FaaSVersionKey is the attribute Key conforming to the "faas.version" semantic + // conventions. It represents the immutable version of the function being + // executed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "26", "pinkfroid-00002" + // Note: Depending on the cloud provider and platform, use: + // + // - **AWS Lambda:** The [function version] + // (an integer represented as a decimal string). + // - **Google Cloud Run (Services):** The [revision] + // (i.e., the function name plus the revision suffix). + // - **Google Cloud Functions:** The value of the + // [`K_REVISION` environment variable]. + // - **Azure Functions:** Not applicable. Do not set this attribute. + // + // + // [function version]: https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html + // [revision]: https://cloud.google.com/run/docs/managing/revisions + // [`K_REVISION` environment variable]: https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically + FaaSVersionKey = attribute.Key("faas.version") +) + +// FaaSColdstart returns an attribute KeyValue conforming to the "faas.coldstart" +// semantic conventions. It represents a boolean that is true if the serverless +// function is executed for the first time (aka cold-start). +func FaaSColdstart(val bool) attribute.KeyValue { + return FaaSColdstartKey.Bool(val) +} + +// FaaSCron returns an attribute KeyValue conforming to the "faas.cron" semantic +// conventions. It represents a string containing the schedule period as +// [Cron Expression]. +// +// [Cron Expression]: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm +func FaaSCron(val string) attribute.KeyValue { + return FaaSCronKey.String(val) +} + +// FaaSDocumentCollection returns an attribute KeyValue conforming to the +// "faas.document.collection" semantic conventions. It represents the name of the +// source on which the triggering operation was performed. For example, in Cloud +// Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database +// name. +func FaaSDocumentCollection(val string) attribute.KeyValue { + return FaaSDocumentCollectionKey.String(val) +} + +// FaaSDocumentName returns an attribute KeyValue conforming to the +// "faas.document.name" semantic conventions. It represents the document +// name/table subjected to the operation. For example, in Cloud Storage or S3 is +// the name of the file, and in Cosmos DB the table name. +func FaaSDocumentName(val string) attribute.KeyValue { + return FaaSDocumentNameKey.String(val) +} + +// FaaSDocumentTime returns an attribute KeyValue conforming to the +// "faas.document.time" semantic conventions. It represents a string containing +// the time when the data was accessed in the [ISO 8601] format expressed in +// [UTC]. +// +// [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html +// [UTC]: https://www.w3.org/TR/NOTE-datetime +func FaaSDocumentTime(val string) attribute.KeyValue { + return FaaSDocumentTimeKey.String(val) +} + +// FaaSInstance returns an attribute KeyValue conforming to the "faas.instance" +// semantic conventions. It represents the execution environment ID as a string, +// that will be potentially reused for other invocations to the same +// function/function version. +func FaaSInstance(val string) attribute.KeyValue { + return FaaSInstanceKey.String(val) +} + +// FaaSInvocationID returns an attribute KeyValue conforming to the +// "faas.invocation_id" semantic conventions. It represents the invocation ID of +// the current function invocation. +func FaaSInvocationID(val string) attribute.KeyValue { + return FaaSInvocationIDKey.String(val) +} + +// FaaSInvokedName returns an attribute KeyValue conforming to the +// "faas.invoked_name" semantic conventions. It represents the name of the +// invoked function. +func FaaSInvokedName(val string) attribute.KeyValue { + return FaaSInvokedNameKey.String(val) +} + +// FaaSInvokedRegion returns an attribute KeyValue conforming to the +// "faas.invoked_region" semantic conventions. It represents the cloud region of +// the invoked function. +func FaaSInvokedRegion(val string) attribute.KeyValue { + return FaaSInvokedRegionKey.String(val) +} + +// FaaSMaxMemory returns an attribute KeyValue conforming to the +// "faas.max_memory" semantic conventions. It represents the amount of memory +// available to the serverless function converted to Bytes. +func FaaSMaxMemory(val int) attribute.KeyValue { + return FaaSMaxMemoryKey.Int(val) +} + +// FaaSName returns an attribute KeyValue conforming to the "faas.name" semantic +// conventions. It represents the name of the single function that this runtime +// instance executes. +func FaaSName(val string) attribute.KeyValue { + return FaaSNameKey.String(val) +} + +// FaaSTime returns an attribute KeyValue conforming to the "faas.time" semantic +// conventions. It represents a string containing the function invocation time in +// the [ISO 8601] format expressed in [UTC]. +// +// [ISO 8601]: https://www.iso.org/iso-8601-date-and-time-format.html +// [UTC]: https://www.w3.org/TR/NOTE-datetime +func FaaSTime(val string) attribute.KeyValue { + return FaaSTimeKey.String(val) +} + +// FaaSVersion returns an attribute KeyValue conforming to the "faas.version" +// semantic conventions. It represents the immutable version of the function +// being executed. +func FaaSVersion(val string) attribute.KeyValue { + return FaaSVersionKey.String(val) +} + +// Enum values for faas.document.operation +var ( + // When a new object is created. + // Stability: development + FaaSDocumentOperationInsert = FaaSDocumentOperationKey.String("insert") + // When an object is modified. + // Stability: development + FaaSDocumentOperationEdit = FaaSDocumentOperationKey.String("edit") + // When an object is deleted. + // Stability: development + FaaSDocumentOperationDelete = FaaSDocumentOperationKey.String("delete") +) + +// Enum values for faas.invoked_provider +var ( + // Alibaba Cloud + // Stability: development + FaaSInvokedProviderAlibabaCloud = FaaSInvokedProviderKey.String("alibaba_cloud") + // Amazon Web Services + // Stability: development + FaaSInvokedProviderAWS = FaaSInvokedProviderKey.String("aws") + // Microsoft Azure + // Stability: development + FaaSInvokedProviderAzure = FaaSInvokedProviderKey.String("azure") + // Google Cloud Platform + // Stability: development + FaaSInvokedProviderGCP = FaaSInvokedProviderKey.String("gcp") + // Tencent Cloud + // Stability: development + FaaSInvokedProviderTencentCloud = FaaSInvokedProviderKey.String("tencent_cloud") +) + +// Enum values for faas.trigger +var ( + // A response to some data source operation such as a database or filesystem + // read/write + // Stability: development + FaaSTriggerDatasource = FaaSTriggerKey.String("datasource") + // To provide an answer to an inbound HTTP request + // Stability: development + FaaSTriggerHTTP = FaaSTriggerKey.String("http") + // A function is set to be executed when messages are sent to a messaging system + // Stability: development + FaaSTriggerPubSub = FaaSTriggerKey.String("pubsub") + // A function is scheduled to be executed regularly + // Stability: development + FaaSTriggerTimer = FaaSTriggerKey.String("timer") + // If none of the others apply + // Stability: development + FaaSTriggerOther = FaaSTriggerKey.String("other") +) + +// Namespace: feature_flag +const ( + // FeatureFlagContextIDKey is the attribute Key conforming to the + // "feature_flag.context.id" semantic conventions. It represents the unique + // identifier for the flag evaluation context. For example, the targeting key. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Release_Candidate + // + // Examples: "5157782b-2203-4c80-a857-dbbd5e7761db" + FeatureFlagContextIDKey = attribute.Key("feature_flag.context.id") + + // FeatureFlagKeyKey is the attribute Key conforming to the "feature_flag.key" + // semantic conventions. It represents the lookup key of the feature flag. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Release_Candidate + // + // Examples: "logo-color" + FeatureFlagKeyKey = attribute.Key("feature_flag.key") + + // FeatureFlagProviderNameKey is the attribute Key conforming to the + // "feature_flag.provider.name" semantic conventions. It represents the + // identifies the feature flag provider. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Release_Candidate + // + // Examples: "Flag Manager" + FeatureFlagProviderNameKey = attribute.Key("feature_flag.provider.name") + + // FeatureFlagResultReasonKey is the attribute Key conforming to the + // "feature_flag.result.reason" semantic conventions. It represents the reason + // code which shows how a feature flag value was determined. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Release_Candidate + // + // Examples: "static", "targeting_match", "error", "default" + FeatureFlagResultReasonKey = attribute.Key("feature_flag.result.reason") + + // FeatureFlagResultValueKey is the attribute Key conforming to the + // "feature_flag.result.value" semantic conventions. It represents the evaluated + // value of the feature flag. + // + // Type: any + // RequirementLevel: Recommended + // Stability: Release_Candidate + // + // Examples: "#ff0000", true, 3 + // Note: With some feature flag providers, feature flag results can be quite + // large or contain private or sensitive details. + // Because of this, `feature_flag.result.variant` is often the preferred + // attribute if it is available. + // + // It may be desirable to redact or otherwise limit the size and scope of + // `feature_flag.result.value` if possible. + // Because the evaluated flag value is unstructured and may be any type, it is + // left to the instrumentation author to determine how best to achieve this. + FeatureFlagResultValueKey = attribute.Key("feature_flag.result.value") + + // FeatureFlagResultVariantKey is the attribute Key conforming to the + // "feature_flag.result.variant" semantic conventions. It represents a semantic + // identifier for an evaluated flag value. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Release_Candidate + // + // Examples: "red", "true", "on" + // Note: A semantic identifier, commonly referred to as a variant, provides a + // means + // for referring to a value without including the value itself. This can + // provide additional context for understanding the meaning behind a value. + // For example, the variant `red` maybe be used for the value `#c05543`. + FeatureFlagResultVariantKey = attribute.Key("feature_flag.result.variant") + + // FeatureFlagSetIDKey is the attribute Key conforming to the + // "feature_flag.set.id" semantic conventions. It represents the identifier of + // the [flag set] to which the feature flag belongs. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Release_Candidate + // + // Examples: "proj-1", "ab98sgs", "service1/dev" + // + // [flag set]: https://openfeature.dev/specification/glossary/#flag-set + FeatureFlagSetIDKey = attribute.Key("feature_flag.set.id") + + // FeatureFlagVersionKey is the attribute Key conforming to the + // "feature_flag.version" semantic conventions. It represents the version of the + // ruleset used during the evaluation. This may be any stable value which + // uniquely identifies the ruleset. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Release_Candidate + // + // Examples: "1", "01ABCDEF" + FeatureFlagVersionKey = attribute.Key("feature_flag.version") +) + +// FeatureFlagContextID returns an attribute KeyValue conforming to the +// "feature_flag.context.id" semantic conventions. It represents the unique +// identifier for the flag evaluation context. For example, the targeting key. +func FeatureFlagContextID(val string) attribute.KeyValue { + return FeatureFlagContextIDKey.String(val) +} + +// FeatureFlagKey returns an attribute KeyValue conforming to the +// "feature_flag.key" semantic conventions. It represents the lookup key of the +// feature flag. +func FeatureFlagKey(val string) attribute.KeyValue { + return FeatureFlagKeyKey.String(val) +} + +// FeatureFlagProviderName returns an attribute KeyValue conforming to the +// "feature_flag.provider.name" semantic conventions. It represents the +// identifies the feature flag provider. +func FeatureFlagProviderName(val string) attribute.KeyValue { + return FeatureFlagProviderNameKey.String(val) +} + +// FeatureFlagResultVariant returns an attribute KeyValue conforming to the +// "feature_flag.result.variant" semantic conventions. It represents a semantic +// identifier for an evaluated flag value. +func FeatureFlagResultVariant(val string) attribute.KeyValue { + return FeatureFlagResultVariantKey.String(val) +} + +// FeatureFlagSetID returns an attribute KeyValue conforming to the +// "feature_flag.set.id" semantic conventions. It represents the identifier of +// the [flag set] to which the feature flag belongs. +// +// [flag set]: https://openfeature.dev/specification/glossary/#flag-set +func FeatureFlagSetID(val string) attribute.KeyValue { + return FeatureFlagSetIDKey.String(val) +} + +// FeatureFlagVersion returns an attribute KeyValue conforming to the +// "feature_flag.version" semantic conventions. It represents the version of the +// ruleset used during the evaluation. This may be any stable value which +// uniquely identifies the ruleset. +func FeatureFlagVersion(val string) attribute.KeyValue { + return FeatureFlagVersionKey.String(val) +} + +// Enum values for feature_flag.result.reason +var ( + // The resolved value is static (no dynamic evaluation). + // Stability: release_candidate + FeatureFlagResultReasonStatic = FeatureFlagResultReasonKey.String("static") + // The resolved value fell back to a pre-configured value (no dynamic evaluation + // occurred or dynamic evaluation yielded no result). + // Stability: release_candidate + FeatureFlagResultReasonDefault = FeatureFlagResultReasonKey.String("default") + // The resolved value was the result of a dynamic evaluation, such as a rule or + // specific user-targeting. + // Stability: release_candidate + FeatureFlagResultReasonTargetingMatch = FeatureFlagResultReasonKey.String("targeting_match") + // The resolved value was the result of pseudorandom assignment. + // Stability: release_candidate + FeatureFlagResultReasonSplit = FeatureFlagResultReasonKey.String("split") + // The resolved value was retrieved from cache. + // Stability: release_candidate + FeatureFlagResultReasonCached = FeatureFlagResultReasonKey.String("cached") + // The resolved value was the result of the flag being disabled in the + // management system. + // Stability: release_candidate + FeatureFlagResultReasonDisabled = FeatureFlagResultReasonKey.String("disabled") + // The reason for the resolved value could not be determined. + // Stability: release_candidate + FeatureFlagResultReasonUnknown = FeatureFlagResultReasonKey.String("unknown") + // The resolved value is non-authoritative or possibly out of date + // Stability: release_candidate + FeatureFlagResultReasonStale = FeatureFlagResultReasonKey.String("stale") + // The resolved value was the result of an error. + // Stability: release_candidate + FeatureFlagResultReasonError = FeatureFlagResultReasonKey.String("error") +) + +// Namespace: file +const ( + // FileAccessedKey is the attribute Key conforming to the "file.accessed" + // semantic conventions. It represents the time when the file was last accessed, + // in ISO 8601 format. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021-01-01T12:00:00Z" + // Note: This attribute might not be supported by some file systems — NFS, + // FAT32, in embedded OS, etc. + FileAccessedKey = attribute.Key("file.accessed") + + // FileAttributesKey is the attribute Key conforming to the "file.attributes" + // semantic conventions. It represents the array of file attributes. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "readonly", "hidden" + // Note: Attributes names depend on the OS or file system. Here’s a + // non-exhaustive list of values expected for this attribute: `archive`, + // `compressed`, `directory`, `encrypted`, `execute`, `hidden`, `immutable`, + // `journaled`, `read`, `readonly`, `symbolic link`, `system`, `temporary`, + // `write`. + FileAttributesKey = attribute.Key("file.attributes") + + // FileChangedKey is the attribute Key conforming to the "file.changed" semantic + // conventions. It represents the time when the file attributes or metadata was + // last changed, in ISO 8601 format. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021-01-01T12:00:00Z" + // Note: `file.changed` captures the time when any of the file's properties or + // attributes (including the content) are changed, while `file.modified` + // captures the timestamp when the file content is modified. + FileChangedKey = attribute.Key("file.changed") + + // FileCreatedKey is the attribute Key conforming to the "file.created" semantic + // conventions. It represents the time when the file was created, in ISO 8601 + // format. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021-01-01T12:00:00Z" + // Note: This attribute might not be supported by some file systems — NFS, + // FAT32, in embedded OS, etc. + FileCreatedKey = attribute.Key("file.created") + + // FileDirectoryKey is the attribute Key conforming to the "file.directory" + // semantic conventions. It represents the directory where the file is located. + // It should include the drive letter, when appropriate. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/home/user", "C:\Program Files\MyApp" + FileDirectoryKey = attribute.Key("file.directory") + + // FileExtensionKey is the attribute Key conforming to the "file.extension" + // semantic conventions. It represents the file extension, excluding the leading + // dot. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "png", "gz" + // Note: When the file name has multiple extensions (example.tar.gz), only the + // last one should be captured ("gz", not "tar.gz"). + FileExtensionKey = attribute.Key("file.extension") + + // FileForkNameKey is the attribute Key conforming to the "file.fork_name" + // semantic conventions. It represents the name of the fork. A fork is + // additional data associated with a filesystem object. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Zone.Identifier" + // Note: On Linux, a resource fork is used to store additional data with a + // filesystem object. A file always has at least one fork for the data portion, + // and additional forks may exist. + // On NTFS, this is analogous to an Alternate Data Stream (ADS), and the default + // data stream for a file is just called $DATA. Zone.Identifier is commonly used + // by Windows to track contents downloaded from the Internet. An ADS is + // typically of the form: C:\path\to\filename.extension:some_fork_name, and + // some_fork_name is the value that should populate `fork_name`. + // `filename.extension` should populate `file.name`, and `extension` should + // populate `file.extension`. The full path, `file.path`, will include the fork + // name. + FileForkNameKey = attribute.Key("file.fork_name") + + // FileGroupIDKey is the attribute Key conforming to the "file.group.id" + // semantic conventions. It represents the primary Group ID (GID) of the file. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1000" + FileGroupIDKey = attribute.Key("file.group.id") + + // FileGroupNameKey is the attribute Key conforming to the "file.group.name" + // semantic conventions. It represents the primary group name of the file. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "users" + FileGroupNameKey = attribute.Key("file.group.name") + + // FileInodeKey is the attribute Key conforming to the "file.inode" semantic + // conventions. It represents the inode representing the file in the filesystem. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "256383" + FileInodeKey = attribute.Key("file.inode") + + // FileModeKey is the attribute Key conforming to the "file.mode" semantic + // conventions. It represents the mode of the file in octal representation. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0640" + FileModeKey = attribute.Key("file.mode") + + // FileModifiedKey is the attribute Key conforming to the "file.modified" + // semantic conventions. It represents the time when the file content was last + // modified, in ISO 8601 format. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021-01-01T12:00:00Z" + FileModifiedKey = attribute.Key("file.modified") + + // FileNameKey is the attribute Key conforming to the "file.name" semantic + // conventions. It represents the name of the file including the extension, + // without the directory. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "example.png" + FileNameKey = attribute.Key("file.name") + + // FileOwnerIDKey is the attribute Key conforming to the "file.owner.id" + // semantic conventions. It represents the user ID (UID) or security identifier + // (SID) of the file owner. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1000" + FileOwnerIDKey = attribute.Key("file.owner.id") + + // FileOwnerNameKey is the attribute Key conforming to the "file.owner.name" + // semantic conventions. It represents the username of the file owner. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "root" + FileOwnerNameKey = attribute.Key("file.owner.name") + + // FilePathKey is the attribute Key conforming to the "file.path" semantic + // conventions. It represents the full path to the file, including the file + // name. It should include the drive letter, when appropriate. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/home/alice/example.png", "C:\Program Files\MyApp\myapp.exe" + FilePathKey = attribute.Key("file.path") + + // FileSizeKey is the attribute Key conforming to the "file.size" semantic + // conventions. It represents the file size in bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + FileSizeKey = attribute.Key("file.size") + + // FileSymbolicLinkTargetPathKey is the attribute Key conforming to the + // "file.symbolic_link.target_path" semantic conventions. It represents the path + // to the target of a symbolic link. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/usr/bin/python3" + // Note: This attribute is only applicable to symbolic links. + FileSymbolicLinkTargetPathKey = attribute.Key("file.symbolic_link.target_path") +) + +// FileAccessed returns an attribute KeyValue conforming to the "file.accessed" +// semantic conventions. It represents the time when the file was last accessed, +// in ISO 8601 format. +func FileAccessed(val string) attribute.KeyValue { + return FileAccessedKey.String(val) +} + +// FileAttributes returns an attribute KeyValue conforming to the +// "file.attributes" semantic conventions. It represents the array of file +// attributes. +func FileAttributes(val ...string) attribute.KeyValue { + return FileAttributesKey.StringSlice(val) +} + +// FileChanged returns an attribute KeyValue conforming to the "file.changed" +// semantic conventions. It represents the time when the file attributes or +// metadata was last changed, in ISO 8601 format. +func FileChanged(val string) attribute.KeyValue { + return FileChangedKey.String(val) +} + +// FileCreated returns an attribute KeyValue conforming to the "file.created" +// semantic conventions. It represents the time when the file was created, in ISO +// 8601 format. +func FileCreated(val string) attribute.KeyValue { + return FileCreatedKey.String(val) +} + +// FileDirectory returns an attribute KeyValue conforming to the "file.directory" +// semantic conventions. It represents the directory where the file is located. +// It should include the drive letter, when appropriate. +func FileDirectory(val string) attribute.KeyValue { + return FileDirectoryKey.String(val) +} + +// FileExtension returns an attribute KeyValue conforming to the "file.extension" +// semantic conventions. It represents the file extension, excluding the leading +// dot. +func FileExtension(val string) attribute.KeyValue { + return FileExtensionKey.String(val) +} + +// FileForkName returns an attribute KeyValue conforming to the "file.fork_name" +// semantic conventions. It represents the name of the fork. A fork is additional +// data associated with a filesystem object. +func FileForkName(val string) attribute.KeyValue { + return FileForkNameKey.String(val) +} + +// FileGroupID returns an attribute KeyValue conforming to the "file.group.id" +// semantic conventions. It represents the primary Group ID (GID) of the file. +func FileGroupID(val string) attribute.KeyValue { + return FileGroupIDKey.String(val) +} + +// FileGroupName returns an attribute KeyValue conforming to the +// "file.group.name" semantic conventions. It represents the primary group name +// of the file. +func FileGroupName(val string) attribute.KeyValue { + return FileGroupNameKey.String(val) +} + +// FileInode returns an attribute KeyValue conforming to the "file.inode" +// semantic conventions. It represents the inode representing the file in the +// filesystem. +func FileInode(val string) attribute.KeyValue { + return FileInodeKey.String(val) +} + +// FileMode returns an attribute KeyValue conforming to the "file.mode" semantic +// conventions. It represents the mode of the file in octal representation. +func FileMode(val string) attribute.KeyValue { + return FileModeKey.String(val) +} + +// FileModified returns an attribute KeyValue conforming to the "file.modified" +// semantic conventions. It represents the time when the file content was last +// modified, in ISO 8601 format. +func FileModified(val string) attribute.KeyValue { + return FileModifiedKey.String(val) +} + +// FileName returns an attribute KeyValue conforming to the "file.name" semantic +// conventions. It represents the name of the file including the extension, +// without the directory. +func FileName(val string) attribute.KeyValue { + return FileNameKey.String(val) +} + +// FileOwnerID returns an attribute KeyValue conforming to the "file.owner.id" +// semantic conventions. It represents the user ID (UID) or security identifier +// (SID) of the file owner. +func FileOwnerID(val string) attribute.KeyValue { + return FileOwnerIDKey.String(val) +} + +// FileOwnerName returns an attribute KeyValue conforming to the +// "file.owner.name" semantic conventions. It represents the username of the file +// owner. +func FileOwnerName(val string) attribute.KeyValue { + return FileOwnerNameKey.String(val) +} + +// FilePath returns an attribute KeyValue conforming to the "file.path" semantic +// conventions. It represents the full path to the file, including the file name. +// It should include the drive letter, when appropriate. +func FilePath(val string) attribute.KeyValue { + return FilePathKey.String(val) +} + +// FileSize returns an attribute KeyValue conforming to the "file.size" semantic +// conventions. It represents the file size in bytes. +func FileSize(val int) attribute.KeyValue { + return FileSizeKey.Int(val) +} + +// FileSymbolicLinkTargetPath returns an attribute KeyValue conforming to the +// "file.symbolic_link.target_path" semantic conventions. It represents the path +// to the target of a symbolic link. +func FileSymbolicLinkTargetPath(val string) attribute.KeyValue { + return FileSymbolicLinkTargetPathKey.String(val) +} + +// Namespace: gcp +const ( + // GCPAppHubApplicationContainerKey is the attribute Key conforming to the + // "gcp.apphub.application.container" semantic conventions. It represents the + // container within GCP where the AppHub application is defined. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "projects/my-container-project" + GCPAppHubApplicationContainerKey = attribute.Key("gcp.apphub.application.container") + + // GCPAppHubApplicationIDKey is the attribute Key conforming to the + // "gcp.apphub.application.id" semantic conventions. It represents the name of + // the application as configured in AppHub. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-application" + GCPAppHubApplicationIDKey = attribute.Key("gcp.apphub.application.id") + + // GCPAppHubApplicationLocationKey is the attribute Key conforming to the + // "gcp.apphub.application.location" semantic conventions. It represents the GCP + // zone or region where the application is defined. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "us-central1" + GCPAppHubApplicationLocationKey = attribute.Key("gcp.apphub.application.location") + + // GCPAppHubServiceCriticalityTypeKey is the attribute Key conforming to the + // "gcp.apphub.service.criticality_type" semantic conventions. It represents the + // criticality of a service indicates its importance to the business. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: [See AppHub type enum] + // + // [See AppHub type enum]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type + GCPAppHubServiceCriticalityTypeKey = attribute.Key("gcp.apphub.service.criticality_type") + + // GCPAppHubServiceEnvironmentTypeKey is the attribute Key conforming to the + // "gcp.apphub.service.environment_type" semantic conventions. It represents the + // environment of a service is the stage of a software lifecycle. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: [See AppHub environment type] + // + // [See AppHub environment type]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1 + GCPAppHubServiceEnvironmentTypeKey = attribute.Key("gcp.apphub.service.environment_type") + + // GCPAppHubServiceIDKey is the attribute Key conforming to the + // "gcp.apphub.service.id" semantic conventions. It represents the name of the + // service as configured in AppHub. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-service" + GCPAppHubServiceIDKey = attribute.Key("gcp.apphub.service.id") + + // GCPAppHubWorkloadCriticalityTypeKey is the attribute Key conforming to the + // "gcp.apphub.workload.criticality_type" semantic conventions. It represents + // the criticality of a workload indicates its importance to the business. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: [See AppHub type enum] + // + // [See AppHub type enum]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type + GCPAppHubWorkloadCriticalityTypeKey = attribute.Key("gcp.apphub.workload.criticality_type") + + // GCPAppHubWorkloadEnvironmentTypeKey is the attribute Key conforming to the + // "gcp.apphub.workload.environment_type" semantic conventions. It represents + // the environment of a workload is the stage of a software lifecycle. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: [See AppHub environment type] + // + // [See AppHub environment type]: https://cloud.google.com/app-hub/docs/reference/rest/v1/Attributes#type_1 + GCPAppHubWorkloadEnvironmentTypeKey = attribute.Key("gcp.apphub.workload.environment_type") + + // GCPAppHubWorkloadIDKey is the attribute Key conforming to the + // "gcp.apphub.workload.id" semantic conventions. It represents the name of the + // workload as configured in AppHub. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-workload" + GCPAppHubWorkloadIDKey = attribute.Key("gcp.apphub.workload.id") + + // GCPClientServiceKey is the attribute Key conforming to the + // "gcp.client.service" semantic conventions. It represents the identifies the + // Google Cloud service for which the official client library is intended. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "appengine", "run", "firestore", "alloydb", "spanner" + // Note: Intended to be a stable identifier for Google Cloud client libraries + // that is uniform across implementation languages. The value should be derived + // from the canonical service domain for the service; for example, + // 'foo.googleapis.com' should result in a value of 'foo'. + GCPClientServiceKey = attribute.Key("gcp.client.service") + + // GCPCloudRunJobExecutionKey is the attribute Key conforming to the + // "gcp.cloud_run.job.execution" semantic conventions. It represents the name of + // the Cloud Run [execution] being run for the Job, as set by the + // [`CLOUD_RUN_EXECUTION`] environment variable. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "job-name-xxxx", "sample-job-mdw84" + // + // [execution]: https://cloud.google.com/run/docs/managing/job-executions + // [`CLOUD_RUN_EXECUTION`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars + GCPCloudRunJobExecutionKey = attribute.Key("gcp.cloud_run.job.execution") + + // GCPCloudRunJobTaskIndexKey is the attribute Key conforming to the + // "gcp.cloud_run.job.task_index" semantic conventions. It represents the index + // for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`] + // environment variable. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0, 1 + // + // [`CLOUD_RUN_TASK_INDEX`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars + GCPCloudRunJobTaskIndexKey = attribute.Key("gcp.cloud_run.job.task_index") + + // GCPGCEInstanceHostnameKey is the attribute Key conforming to the + // "gcp.gce.instance.hostname" semantic conventions. It represents the hostname + // of a GCE instance. This is the full value of the default or [custom hostname] + // . + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-host1234.example.com", + // "sample-vm.us-west1-b.c.my-project.internal" + // + // [custom hostname]: https://cloud.google.com/compute/docs/instances/custom-hostname-vm + GCPGCEInstanceHostnameKey = attribute.Key("gcp.gce.instance.hostname") + + // GCPGCEInstanceNameKey is the attribute Key conforming to the + // "gcp.gce.instance.name" semantic conventions. It represents the instance name + // of a GCE instance. This is the value provided by `host.name`, the visible + // name of the instance in the Cloud Console UI, and the prefix for the default + // hostname of the instance as defined by the [default internal DNS name]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "instance-1", "my-vm-name" + // + // [default internal DNS name]: https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names + GCPGCEInstanceNameKey = attribute.Key("gcp.gce.instance.name") +) + +// GCPAppHubApplicationContainer returns an attribute KeyValue conforming to the +// "gcp.apphub.application.container" semantic conventions. It represents the +// container within GCP where the AppHub application is defined. +func GCPAppHubApplicationContainer(val string) attribute.KeyValue { + return GCPAppHubApplicationContainerKey.String(val) +} + +// GCPAppHubApplicationID returns an attribute KeyValue conforming to the +// "gcp.apphub.application.id" semantic conventions. It represents the name of +// the application as configured in AppHub. +func GCPAppHubApplicationID(val string) attribute.KeyValue { + return GCPAppHubApplicationIDKey.String(val) +} + +// GCPAppHubApplicationLocation returns an attribute KeyValue conforming to the +// "gcp.apphub.application.location" semantic conventions. It represents the GCP +// zone or region where the application is defined. +func GCPAppHubApplicationLocation(val string) attribute.KeyValue { + return GCPAppHubApplicationLocationKey.String(val) +} + +// GCPAppHubServiceID returns an attribute KeyValue conforming to the +// "gcp.apphub.service.id" semantic conventions. It represents the name of the +// service as configured in AppHub. +func GCPAppHubServiceID(val string) attribute.KeyValue { + return GCPAppHubServiceIDKey.String(val) +} + +// GCPAppHubWorkloadID returns an attribute KeyValue conforming to the +// "gcp.apphub.workload.id" semantic conventions. It represents the name of the +// workload as configured in AppHub. +func GCPAppHubWorkloadID(val string) attribute.KeyValue { + return GCPAppHubWorkloadIDKey.String(val) +} + +// GCPClientService returns an attribute KeyValue conforming to the +// "gcp.client.service" semantic conventions. It represents the identifies the +// Google Cloud service for which the official client library is intended. +func GCPClientService(val string) attribute.KeyValue { + return GCPClientServiceKey.String(val) +} + +// GCPCloudRunJobExecution returns an attribute KeyValue conforming to the +// "gcp.cloud_run.job.execution" semantic conventions. It represents the name of +// the Cloud Run [execution] being run for the Job, as set by the +// [`CLOUD_RUN_EXECUTION`] environment variable. +// +// [execution]: https://cloud.google.com/run/docs/managing/job-executions +// [`CLOUD_RUN_EXECUTION`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars +func GCPCloudRunJobExecution(val string) attribute.KeyValue { + return GCPCloudRunJobExecutionKey.String(val) +} + +// GCPCloudRunJobTaskIndex returns an attribute KeyValue conforming to the +// "gcp.cloud_run.job.task_index" semantic conventions. It represents the index +// for a task within an execution as provided by the [`CLOUD_RUN_TASK_INDEX`] +// environment variable. +// +// [`CLOUD_RUN_TASK_INDEX`]: https://cloud.google.com/run/docs/container-contract#jobs-env-vars +func GCPCloudRunJobTaskIndex(val int) attribute.KeyValue { + return GCPCloudRunJobTaskIndexKey.Int(val) +} + +// GCPGCEInstanceHostname returns an attribute KeyValue conforming to the +// "gcp.gce.instance.hostname" semantic conventions. It represents the hostname +// of a GCE instance. This is the full value of the default or [custom hostname] +// . +// +// [custom hostname]: https://cloud.google.com/compute/docs/instances/custom-hostname-vm +func GCPGCEInstanceHostname(val string) attribute.KeyValue { + return GCPGCEInstanceHostnameKey.String(val) +} + +// GCPGCEInstanceName returns an attribute KeyValue conforming to the +// "gcp.gce.instance.name" semantic conventions. It represents the instance name +// of a GCE instance. This is the value provided by `host.name`, the visible name +// of the instance in the Cloud Console UI, and the prefix for the default +// hostname of the instance as defined by the [default internal DNS name]. +// +// [default internal DNS name]: https://cloud.google.com/compute/docs/internal-dns#instance-fully-qualified-domain-names +func GCPGCEInstanceName(val string) attribute.KeyValue { + return GCPGCEInstanceNameKey.String(val) +} + +// Enum values for gcp.apphub.service.criticality_type +var ( + // Mission critical service. + // Stability: development + GCPAppHubServiceCriticalityTypeMissionCritical = GCPAppHubServiceCriticalityTypeKey.String("MISSION_CRITICAL") + // High impact. + // Stability: development + GCPAppHubServiceCriticalityTypeHigh = GCPAppHubServiceCriticalityTypeKey.String("HIGH") + // Medium impact. + // Stability: development + GCPAppHubServiceCriticalityTypeMedium = GCPAppHubServiceCriticalityTypeKey.String("MEDIUM") + // Low impact. + // Stability: development + GCPAppHubServiceCriticalityTypeLow = GCPAppHubServiceCriticalityTypeKey.String("LOW") +) + +// Enum values for gcp.apphub.service.environment_type +var ( + // Production environment. + // Stability: development + GCPAppHubServiceEnvironmentTypeProduction = GCPAppHubServiceEnvironmentTypeKey.String("PRODUCTION") + // Staging environment. + // Stability: development + GCPAppHubServiceEnvironmentTypeStaging = GCPAppHubServiceEnvironmentTypeKey.String("STAGING") + // Test environment. + // Stability: development + GCPAppHubServiceEnvironmentTypeTest = GCPAppHubServiceEnvironmentTypeKey.String("TEST") + // Development environment. + // Stability: development + GCPAppHubServiceEnvironmentTypeDevelopment = GCPAppHubServiceEnvironmentTypeKey.String("DEVELOPMENT") +) + +// Enum values for gcp.apphub.workload.criticality_type +var ( + // Mission critical service. + // Stability: development + GCPAppHubWorkloadCriticalityTypeMissionCritical = GCPAppHubWorkloadCriticalityTypeKey.String("MISSION_CRITICAL") + // High impact. + // Stability: development + GCPAppHubWorkloadCriticalityTypeHigh = GCPAppHubWorkloadCriticalityTypeKey.String("HIGH") + // Medium impact. + // Stability: development + GCPAppHubWorkloadCriticalityTypeMedium = GCPAppHubWorkloadCriticalityTypeKey.String("MEDIUM") + // Low impact. + // Stability: development + GCPAppHubWorkloadCriticalityTypeLow = GCPAppHubWorkloadCriticalityTypeKey.String("LOW") +) + +// Enum values for gcp.apphub.workload.environment_type +var ( + // Production environment. + // Stability: development + GCPAppHubWorkloadEnvironmentTypeProduction = GCPAppHubWorkloadEnvironmentTypeKey.String("PRODUCTION") + // Staging environment. + // Stability: development + GCPAppHubWorkloadEnvironmentTypeStaging = GCPAppHubWorkloadEnvironmentTypeKey.String("STAGING") + // Test environment. + // Stability: development + GCPAppHubWorkloadEnvironmentTypeTest = GCPAppHubWorkloadEnvironmentTypeKey.String("TEST") + // Development environment. + // Stability: development + GCPAppHubWorkloadEnvironmentTypeDevelopment = GCPAppHubWorkloadEnvironmentTypeKey.String("DEVELOPMENT") +) + +// Namespace: gen_ai +const ( + // GenAIAgentDescriptionKey is the attribute Key conforming to the + // "gen_ai.agent.description" semantic conventions. It represents the free-form + // description of the GenAI agent provided by the application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Helps with math problems", "Generates fiction stories" + GenAIAgentDescriptionKey = attribute.Key("gen_ai.agent.description") + + // GenAIAgentIDKey is the attribute Key conforming to the "gen_ai.agent.id" + // semantic conventions. It represents the unique identifier of the GenAI agent. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "asst_5j66UpCpwteGg4YSxUnt7lPY" + GenAIAgentIDKey = attribute.Key("gen_ai.agent.id") + + // GenAIAgentNameKey is the attribute Key conforming to the "gen_ai.agent.name" + // semantic conventions. It represents the human-readable name of the GenAI + // agent provided by the application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Math Tutor", "Fiction Writer" + GenAIAgentNameKey = attribute.Key("gen_ai.agent.name") + + // GenAIConversationIDKey is the attribute Key conforming to the + // "gen_ai.conversation.id" semantic conventions. It represents the unique + // identifier for a conversation (session, thread), used to store and correlate + // messages within this conversation. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "conv_5j66UpCpwteGg4YSxUnt7lPY" + GenAIConversationIDKey = attribute.Key("gen_ai.conversation.id") + + // GenAIDataSourceIDKey is the attribute Key conforming to the + // "gen_ai.data_source.id" semantic conventions. It represents the data source + // identifier. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "H7STPQYOND" + // Note: Data sources are used by AI agents and RAG applications to store + // grounding data. A data source may be an external database, object store, + // document collection, website, or any other storage system used by the GenAI + // agent or application. The `gen_ai.data_source.id` SHOULD match the identifier + // used by the GenAI system rather than a name specific to the external storage, + // such as a database or object store. Semantic conventions referencing + // `gen_ai.data_source.id` MAY also leverage additional attributes, such as + // `db.*`, to further identify and describe the data source. + GenAIDataSourceIDKey = attribute.Key("gen_ai.data_source.id") + + // GenAIInputMessagesKey is the attribute Key conforming to the + // "gen_ai.input.messages" semantic conventions. It represents the chat history + // provided to the model as an input. + // + // Type: any + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "[\n {\n "role": "user",\n "parts": [\n {\n "type": "text",\n + // "content": "Weather in Paris?"\n }\n ]\n },\n {\n "role": "assistant",\n + // "parts": [\n {\n "type": "tool_call",\n "id": + // "call_VSPygqKTWdrhaFErNvMV18Yl",\n "name": "get_weather",\n "arguments": {\n + // "location": "Paris"\n }\n }\n ]\n },\n {\n "role": "tool",\n "parts": [\n {\n + // "type": "tool_call_response",\n "id": " call_VSPygqKTWdrhaFErNvMV18Yl",\n + // "result": "rainy, 57°F"\n }\n ]\n }\n]\n" + // Note: Instrumentations MUST follow [Input messages JSON schema]. + // When the attribute is recorded on events, it MUST be recorded in structured + // form. When recorded on spans, it MAY be recorded as a JSON string if + // structured + // format is not supported and SHOULD be recorded in structured form otherwise. + // + // Messages MUST be provided in the order they were sent to the model. + // Instrumentations MAY provide a way for users to filter or truncate + // input messages. + // + // > [!Warning] + // > This attribute is likely to contain sensitive information including + // > user/PII data. + // + // See [Recording content on attributes] + // section for more details. + // + // [Input messages JSON schema]: /docs/gen-ai/gen-ai-input-messages.json + // [Recording content on attributes]: /docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes + GenAIInputMessagesKey = attribute.Key("gen_ai.input.messages") + + // GenAIOperationNameKey is the attribute Key conforming to the + // "gen_ai.operation.name" semantic conventions. It represents the name of the + // operation being performed. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: If one of the predefined values applies, but specific system uses a + // different name it's RECOMMENDED to document it in the semantic conventions + // for specific GenAI system and use system-specific name in the + // instrumentation. If a different name is not documented, instrumentation + // libraries SHOULD use applicable predefined value. + GenAIOperationNameKey = attribute.Key("gen_ai.operation.name") + + // GenAIOutputMessagesKey is the attribute Key conforming to the + // "gen_ai.output.messages" semantic conventions. It represents the messages + // returned by the model where each message represents a specific model response + // (choice, candidate). + // + // Type: any + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "[\n {\n "role": "assistant",\n "parts": [\n {\n "type": "text",\n + // "content": "The weather in Paris is currently rainy with a temperature of + // 57°F."\n }\n ],\n "finish_reason": "stop"\n }\n]\n" + // Note: Instrumentations MUST follow [Output messages JSON schema] + // + // Each message represents a single output choice/candidate generated by + // the model. Each message corresponds to exactly one generation + // (choice/candidate) and vice versa - one choice cannot be split across + // multiple messages or one message cannot contain parts from multiple choices. + // + // When the attribute is recorded on events, it MUST be recorded in structured + // form. When recorded on spans, it MAY be recorded as a JSON string if + // structured + // format is not supported and SHOULD be recorded in structured form otherwise. + // + // Instrumentations MAY provide a way for users to filter or truncate + // output messages. + // + // > [!Warning] + // > This attribute is likely to contain sensitive information including + // > user/PII data. + // + // See [Recording content on attributes] + // section for more details. + // + // [Output messages JSON schema]: /docs/gen-ai/gen-ai-output-messages.json + // [Recording content on attributes]: /docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes + GenAIOutputMessagesKey = attribute.Key("gen_ai.output.messages") + + // GenAIOutputTypeKey is the attribute Key conforming to the + // "gen_ai.output.type" semantic conventions. It represents the represents the + // content type requested by the client. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: This attribute SHOULD be used when the client requests output of a + // specific type. The model may return zero or more outputs of this type. + // This attribute specifies the output modality and not the actual output + // format. For example, if an image is requested, the actual output could be a + // URL pointing to an image file. + // Additional output format details may be recorded in the future in the + // `gen_ai.output.{type}.*` attributes. + GenAIOutputTypeKey = attribute.Key("gen_ai.output.type") + + // GenAIProviderNameKey is the attribute Key conforming to the + // "gen_ai.provider.name" semantic conventions. It represents the Generative AI + // provider as identified by the client or server instrumentation. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: The attribute SHOULD be set based on the instrumentation's best + // knowledge and may differ from the actual model provider. + // + // Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms + // are accessible using the OpenAI REST API and corresponding client libraries, + // but may proxy or host models from different providers. + // + // The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address` + // attributes may help identify the actual system in use. + // + // The `gen_ai.provider.name` attribute acts as a discriminator that + // identifies the GenAI telemetry format flavor specific to that provider + // within GenAI semantic conventions. + // It SHOULD be set consistently with provider-specific attributes and signals. + // For example, GenAI spans, metrics, and events related to AWS Bedrock + // should have the `gen_ai.provider.name` set to `aws.bedrock` and include + // applicable `aws.bedrock.*` attributes and are not expected to include + // `openai.*` attributes. + GenAIProviderNameKey = attribute.Key("gen_ai.provider.name") + + // GenAIRequestChoiceCountKey is the attribute Key conforming to the + // "gen_ai.request.choice.count" semantic conventions. It represents the target + // number of candidate completions to return. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 3 + GenAIRequestChoiceCountKey = attribute.Key("gen_ai.request.choice.count") + + // GenAIRequestEncodingFormatsKey is the attribute Key conforming to the + // "gen_ai.request.encoding_formats" semantic conventions. It represents the + // encoding formats requested in an embeddings operation, if specified. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "base64"], ["float", "binary" + // Note: In some GenAI systems the encoding formats are called embedding types. + // Also, some GenAI systems only accept a single format per request. + GenAIRequestEncodingFormatsKey = attribute.Key("gen_ai.request.encoding_formats") + + // GenAIRequestFrequencyPenaltyKey is the attribute Key conforming to the + // "gen_ai.request.frequency_penalty" semantic conventions. It represents the + // frequency penalty setting for the GenAI request. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0.1 + GenAIRequestFrequencyPenaltyKey = attribute.Key("gen_ai.request.frequency_penalty") + + // GenAIRequestMaxTokensKey is the attribute Key conforming to the + // "gen_ai.request.max_tokens" semantic conventions. It represents the maximum + // number of tokens the model generates for a request. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 100 + GenAIRequestMaxTokensKey = attribute.Key("gen_ai.request.max_tokens") + + // GenAIRequestModelKey is the attribute Key conforming to the + // "gen_ai.request.model" semantic conventions. It represents the name of the + // GenAI model a request is being made to. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: gpt-4 + GenAIRequestModelKey = attribute.Key("gen_ai.request.model") + + // GenAIRequestPresencePenaltyKey is the attribute Key conforming to the + // "gen_ai.request.presence_penalty" semantic conventions. It represents the + // presence penalty setting for the GenAI request. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0.1 + GenAIRequestPresencePenaltyKey = attribute.Key("gen_ai.request.presence_penalty") + + // GenAIRequestSeedKey is the attribute Key conforming to the + // "gen_ai.request.seed" semantic conventions. It represents the requests with + // same seed value more likely to return same result. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 100 + GenAIRequestSeedKey = attribute.Key("gen_ai.request.seed") + + // GenAIRequestStopSequencesKey is the attribute Key conforming to the + // "gen_ai.request.stop_sequences" semantic conventions. It represents the list + // of sequences that the model will use to stop generating further tokens. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "forest", "lived" + GenAIRequestStopSequencesKey = attribute.Key("gen_ai.request.stop_sequences") + + // GenAIRequestTemperatureKey is the attribute Key conforming to the + // "gen_ai.request.temperature" semantic conventions. It represents the + // temperature setting for the GenAI request. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0.0 + GenAIRequestTemperatureKey = attribute.Key("gen_ai.request.temperature") + + // GenAIRequestTopKKey is the attribute Key conforming to the + // "gen_ai.request.top_k" semantic conventions. It represents the top_k sampling + // setting for the GenAI request. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1.0 + GenAIRequestTopKKey = attribute.Key("gen_ai.request.top_k") + + // GenAIRequestTopPKey is the attribute Key conforming to the + // "gen_ai.request.top_p" semantic conventions. It represents the top_p sampling + // setting for the GenAI request. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1.0 + GenAIRequestTopPKey = attribute.Key("gen_ai.request.top_p") + + // GenAIResponseFinishReasonsKey is the attribute Key conforming to the + // "gen_ai.response.finish_reasons" semantic conventions. It represents the + // array of reasons the model stopped generating tokens, corresponding to each + // generation received. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "stop"], ["stop", "length" + GenAIResponseFinishReasonsKey = attribute.Key("gen_ai.response.finish_reasons") + + // GenAIResponseIDKey is the attribute Key conforming to the + // "gen_ai.response.id" semantic conventions. It represents the unique + // identifier for the completion. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "chatcmpl-123" + GenAIResponseIDKey = attribute.Key("gen_ai.response.id") + + // GenAIResponseModelKey is the attribute Key conforming to the + // "gen_ai.response.model" semantic conventions. It represents the name of the + // model that generated the response. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "gpt-4-0613" + GenAIResponseModelKey = attribute.Key("gen_ai.response.model") + + // GenAISystemInstructionsKey is the attribute Key conforming to the + // "gen_ai.system_instructions" semantic conventions. It represents the system + // message or instructions provided to the GenAI model separately from the chat + // history. + // + // Type: any + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "[\n {\n "type": "text",\n "content": "You are an Agent that greet + // users, always use greetings tool to respond"\n }\n]\n", "[\n {\n "type": + // "text",\n "content": "You are a language translator."\n },\n {\n "type": + // "text",\n "content": "Your mission is to translate text in English to + // French."\n }\n]\n" + // Note: This attribute SHOULD be used when the corresponding provider or API + // allows to provide system instructions or messages separately from the + // chat history. + // + // Instructions that are part of the chat history SHOULD be recorded in + // `gen_ai.input.messages` attribute instead. + // + // Instrumentations MUST follow [System instructions JSON schema]. + // + // When recorded on spans, it MAY be recorded as a JSON string if structured + // format is not supported and SHOULD be recorded in structured form otherwise. + // + // Instrumentations MAY provide a way for users to filter or truncate + // system instructions. + // + // > [!Warning] + // > This attribute may contain sensitive information. + // + // See [Recording content on attributes] + // section for more details. + // + // [System instructions JSON schema]: /docs/gen-ai/gen-ai-system-instructions.json + // [Recording content on attributes]: /docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes + GenAISystemInstructionsKey = attribute.Key("gen_ai.system_instructions") + + // GenAITokenTypeKey is the attribute Key conforming to the "gen_ai.token.type" + // semantic conventions. It represents the type of token being counted. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "input", "output" + GenAITokenTypeKey = attribute.Key("gen_ai.token.type") + + // GenAIToolCallIDKey is the attribute Key conforming to the + // "gen_ai.tool.call.id" semantic conventions. It represents the tool call + // identifier. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "call_mszuSIzqtI65i1wAUOE8w5H4" + GenAIToolCallIDKey = attribute.Key("gen_ai.tool.call.id") + + // GenAIToolDescriptionKey is the attribute Key conforming to the + // "gen_ai.tool.description" semantic conventions. It represents the tool + // description. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Multiply two numbers" + GenAIToolDescriptionKey = attribute.Key("gen_ai.tool.description") + + // GenAIToolNameKey is the attribute Key conforming to the "gen_ai.tool.name" + // semantic conventions. It represents the name of the tool utilized by the + // agent. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Flights" + GenAIToolNameKey = attribute.Key("gen_ai.tool.name") + + // GenAIToolTypeKey is the attribute Key conforming to the "gen_ai.tool.type" + // semantic conventions. It represents the type of the tool utilized by the + // agent. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "function", "extension", "datastore" + // Note: Extension: A tool executed on the agent-side to directly call external + // APIs, bridging the gap between the agent and real-world systems. + // Agent-side operations involve actions that are performed by the agent on the + // server or within the agent's controlled environment. + // Function: A tool executed on the client-side, where the agent generates + // parameters for a predefined function, and the client executes the logic. + // Client-side operations are actions taken on the user's end or within the + // client application. + // Datastore: A tool used by the agent to access and query structured or + // unstructured external data for retrieval-augmented tasks or knowledge + // updates. + GenAIToolTypeKey = attribute.Key("gen_ai.tool.type") + + // GenAIUsageInputTokensKey is the attribute Key conforming to the + // "gen_ai.usage.input_tokens" semantic conventions. It represents the number of + // tokens used in the GenAI input (prompt). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 100 + GenAIUsageInputTokensKey = attribute.Key("gen_ai.usage.input_tokens") + + // GenAIUsageOutputTokensKey is the attribute Key conforming to the + // "gen_ai.usage.output_tokens" semantic conventions. It represents the number + // of tokens used in the GenAI response (completion). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 180 + GenAIUsageOutputTokensKey = attribute.Key("gen_ai.usage.output_tokens") +) + +// GenAIAgentDescription returns an attribute KeyValue conforming to the +// "gen_ai.agent.description" semantic conventions. It represents the free-form +// description of the GenAI agent provided by the application. +func GenAIAgentDescription(val string) attribute.KeyValue { + return GenAIAgentDescriptionKey.String(val) +} + +// GenAIAgentID returns an attribute KeyValue conforming to the "gen_ai.agent.id" +// semantic conventions. It represents the unique identifier of the GenAI agent. +func GenAIAgentID(val string) attribute.KeyValue { + return GenAIAgentIDKey.String(val) +} + +// GenAIAgentName returns an attribute KeyValue conforming to the +// "gen_ai.agent.name" semantic conventions. It represents the human-readable +// name of the GenAI agent provided by the application. +func GenAIAgentName(val string) attribute.KeyValue { + return GenAIAgentNameKey.String(val) +} + +// GenAIConversationID returns an attribute KeyValue conforming to the +// "gen_ai.conversation.id" semantic conventions. It represents the unique +// identifier for a conversation (session, thread), used to store and correlate +// messages within this conversation. +func GenAIConversationID(val string) attribute.KeyValue { + return GenAIConversationIDKey.String(val) +} + +// GenAIDataSourceID returns an attribute KeyValue conforming to the +// "gen_ai.data_source.id" semantic conventions. It represents the data source +// identifier. +func GenAIDataSourceID(val string) attribute.KeyValue { + return GenAIDataSourceIDKey.String(val) +} + +// GenAIRequestChoiceCount returns an attribute KeyValue conforming to the +// "gen_ai.request.choice.count" semantic conventions. It represents the target +// number of candidate completions to return. +func GenAIRequestChoiceCount(val int) attribute.KeyValue { + return GenAIRequestChoiceCountKey.Int(val) +} + +// GenAIRequestEncodingFormats returns an attribute KeyValue conforming to the +// "gen_ai.request.encoding_formats" semantic conventions. It represents the +// encoding formats requested in an embeddings operation, if specified. +func GenAIRequestEncodingFormats(val ...string) attribute.KeyValue { + return GenAIRequestEncodingFormatsKey.StringSlice(val) +} + +// GenAIRequestFrequencyPenalty returns an attribute KeyValue conforming to the +// "gen_ai.request.frequency_penalty" semantic conventions. It represents the +// frequency penalty setting for the GenAI request. +func GenAIRequestFrequencyPenalty(val float64) attribute.KeyValue { + return GenAIRequestFrequencyPenaltyKey.Float64(val) +} + +// GenAIRequestMaxTokens returns an attribute KeyValue conforming to the +// "gen_ai.request.max_tokens" semantic conventions. It represents the maximum +// number of tokens the model generates for a request. +func GenAIRequestMaxTokens(val int) attribute.KeyValue { + return GenAIRequestMaxTokensKey.Int(val) +} + +// GenAIRequestModel returns an attribute KeyValue conforming to the +// "gen_ai.request.model" semantic conventions. It represents the name of the +// GenAI model a request is being made to. +func GenAIRequestModel(val string) attribute.KeyValue { + return GenAIRequestModelKey.String(val) +} + +// GenAIRequestPresencePenalty returns an attribute KeyValue conforming to the +// "gen_ai.request.presence_penalty" semantic conventions. It represents the +// presence penalty setting for the GenAI request. +func GenAIRequestPresencePenalty(val float64) attribute.KeyValue { + return GenAIRequestPresencePenaltyKey.Float64(val) +} + +// GenAIRequestSeed returns an attribute KeyValue conforming to the +// "gen_ai.request.seed" semantic conventions. It represents the requests with +// same seed value more likely to return same result. +func GenAIRequestSeed(val int) attribute.KeyValue { + return GenAIRequestSeedKey.Int(val) +} + +// GenAIRequestStopSequences returns an attribute KeyValue conforming to the +// "gen_ai.request.stop_sequences" semantic conventions. It represents the list +// of sequences that the model will use to stop generating further tokens. +func GenAIRequestStopSequences(val ...string) attribute.KeyValue { + return GenAIRequestStopSequencesKey.StringSlice(val) +} + +// GenAIRequestTemperature returns an attribute KeyValue conforming to the +// "gen_ai.request.temperature" semantic conventions. It represents the +// temperature setting for the GenAI request. +func GenAIRequestTemperature(val float64) attribute.KeyValue { + return GenAIRequestTemperatureKey.Float64(val) +} + +// GenAIRequestTopK returns an attribute KeyValue conforming to the +// "gen_ai.request.top_k" semantic conventions. It represents the top_k sampling +// setting for the GenAI request. +func GenAIRequestTopK(val float64) attribute.KeyValue { + return GenAIRequestTopKKey.Float64(val) +} + +// GenAIRequestTopP returns an attribute KeyValue conforming to the +// "gen_ai.request.top_p" semantic conventions. It represents the top_p sampling +// setting for the GenAI request. +func GenAIRequestTopP(val float64) attribute.KeyValue { + return GenAIRequestTopPKey.Float64(val) +} + +// GenAIResponseFinishReasons returns an attribute KeyValue conforming to the +// "gen_ai.response.finish_reasons" semantic conventions. It represents the array +// of reasons the model stopped generating tokens, corresponding to each +// generation received. +func GenAIResponseFinishReasons(val ...string) attribute.KeyValue { + return GenAIResponseFinishReasonsKey.StringSlice(val) +} + +// GenAIResponseID returns an attribute KeyValue conforming to the +// "gen_ai.response.id" semantic conventions. It represents the unique identifier +// for the completion. +func GenAIResponseID(val string) attribute.KeyValue { + return GenAIResponseIDKey.String(val) +} + +// GenAIResponseModel returns an attribute KeyValue conforming to the +// "gen_ai.response.model" semantic conventions. It represents the name of the +// model that generated the response. +func GenAIResponseModel(val string) attribute.KeyValue { + return GenAIResponseModelKey.String(val) +} + +// GenAIToolCallID returns an attribute KeyValue conforming to the +// "gen_ai.tool.call.id" semantic conventions. It represents the tool call +// identifier. +func GenAIToolCallID(val string) attribute.KeyValue { + return GenAIToolCallIDKey.String(val) +} + +// GenAIToolDescription returns an attribute KeyValue conforming to the +// "gen_ai.tool.description" semantic conventions. It represents the tool +// description. +func GenAIToolDescription(val string) attribute.KeyValue { + return GenAIToolDescriptionKey.String(val) +} + +// GenAIToolName returns an attribute KeyValue conforming to the +// "gen_ai.tool.name" semantic conventions. It represents the name of the tool +// utilized by the agent. +func GenAIToolName(val string) attribute.KeyValue { + return GenAIToolNameKey.String(val) +} + +// GenAIToolType returns an attribute KeyValue conforming to the +// "gen_ai.tool.type" semantic conventions. It represents the type of the tool +// utilized by the agent. +func GenAIToolType(val string) attribute.KeyValue { + return GenAIToolTypeKey.String(val) +} + +// GenAIUsageInputTokens returns an attribute KeyValue conforming to the +// "gen_ai.usage.input_tokens" semantic conventions. It represents the number of +// tokens used in the GenAI input (prompt). +func GenAIUsageInputTokens(val int) attribute.KeyValue { + return GenAIUsageInputTokensKey.Int(val) +} + +// GenAIUsageOutputTokens returns an attribute KeyValue conforming to the +// "gen_ai.usage.output_tokens" semantic conventions. It represents the number of +// tokens used in the GenAI response (completion). +func GenAIUsageOutputTokens(val int) attribute.KeyValue { + return GenAIUsageOutputTokensKey.Int(val) +} + +// Enum values for gen_ai.operation.name +var ( + // Chat completion operation such as [OpenAI Chat API] + // Stability: development + // + // [OpenAI Chat API]: https://platform.openai.com/docs/api-reference/chat + GenAIOperationNameChat = GenAIOperationNameKey.String("chat") + // Multimodal content generation operation such as [Gemini Generate Content] + // Stability: development + // + // [Gemini Generate Content]: https://ai.google.dev/api/generate-content + GenAIOperationNameGenerateContent = GenAIOperationNameKey.String("generate_content") + // Text completions operation such as [OpenAI Completions API (Legacy)] + // Stability: development + // + // [OpenAI Completions API (Legacy)]: https://platform.openai.com/docs/api-reference/completions + GenAIOperationNameTextCompletion = GenAIOperationNameKey.String("text_completion") + // Embeddings operation such as [OpenAI Create embeddings API] + // Stability: development + // + // [OpenAI Create embeddings API]: https://platform.openai.com/docs/api-reference/embeddings/create + GenAIOperationNameEmbeddings = GenAIOperationNameKey.String("embeddings") + // Create GenAI agent + // Stability: development + GenAIOperationNameCreateAgent = GenAIOperationNameKey.String("create_agent") + // Invoke GenAI agent + // Stability: development + GenAIOperationNameInvokeAgent = GenAIOperationNameKey.String("invoke_agent") + // Execute a tool + // Stability: development + GenAIOperationNameExecuteTool = GenAIOperationNameKey.String("execute_tool") +) + +// Enum values for gen_ai.output.type +var ( + // Plain text + // Stability: development + GenAIOutputTypeText = GenAIOutputTypeKey.String("text") + // JSON object with known or unknown schema + // Stability: development + GenAIOutputTypeJSON = GenAIOutputTypeKey.String("json") + // Image + // Stability: development + GenAIOutputTypeImage = GenAIOutputTypeKey.String("image") + // Speech + // Stability: development + GenAIOutputTypeSpeech = GenAIOutputTypeKey.String("speech") +) + +// Enum values for gen_ai.provider.name +var ( + // [OpenAI] + // Stability: development + // + // [OpenAI]: https://openai.com/ + GenAIProviderNameOpenAI = GenAIProviderNameKey.String("openai") + // Any Google generative AI endpoint + // Stability: development + GenAIProviderNameGCPGenAI = GenAIProviderNameKey.String("gcp.gen_ai") + // [Vertex AI] + // Stability: development + // + // [Vertex AI]: https://cloud.google.com/vertex-ai + GenAIProviderNameGCPVertexAI = GenAIProviderNameKey.String("gcp.vertex_ai") + // [Gemini] + // Stability: development + // + // [Gemini]: https://cloud.google.com/products/gemini + GenAIProviderNameGCPGemini = GenAIProviderNameKey.String("gcp.gemini") + // [Anthropic] + // Stability: development + // + // [Anthropic]: https://www.anthropic.com/ + GenAIProviderNameAnthropic = GenAIProviderNameKey.String("anthropic") + // [Cohere] + // Stability: development + // + // [Cohere]: https://cohere.com/ + GenAIProviderNameCohere = GenAIProviderNameKey.String("cohere") + // Azure AI Inference + // Stability: development + GenAIProviderNameAzureAIInference = GenAIProviderNameKey.String("azure.ai.inference") + // [Azure OpenAI] + // Stability: development + // + // [Azure OpenAI]: https://azure.microsoft.com/products/ai-services/openai-service/ + GenAIProviderNameAzureAIOpenAI = GenAIProviderNameKey.String("azure.ai.openai") + // [IBM Watsonx AI] + // Stability: development + // + // [IBM Watsonx AI]: https://www.ibm.com/products/watsonx-ai + GenAIProviderNameIBMWatsonxAI = GenAIProviderNameKey.String("ibm.watsonx.ai") + // [AWS Bedrock] + // Stability: development + // + // [AWS Bedrock]: https://aws.amazon.com/bedrock + GenAIProviderNameAWSBedrock = GenAIProviderNameKey.String("aws.bedrock") + // [Perplexity] + // Stability: development + // + // [Perplexity]: https://www.perplexity.ai/ + GenAIProviderNamePerplexity = GenAIProviderNameKey.String("perplexity") + // [xAI] + // Stability: development + // + // [xAI]: https://x.ai/ + GenAIProviderNameXAI = GenAIProviderNameKey.String("x_ai") + // [DeepSeek] + // Stability: development + // + // [DeepSeek]: https://www.deepseek.com/ + GenAIProviderNameDeepseek = GenAIProviderNameKey.String("deepseek") + // [Groq] + // Stability: development + // + // [Groq]: https://groq.com/ + GenAIProviderNameGroq = GenAIProviderNameKey.String("groq") + // [Mistral AI] + // Stability: development + // + // [Mistral AI]: https://mistral.ai/ + GenAIProviderNameMistralAI = GenAIProviderNameKey.String("mistral_ai") +) + +// Enum values for gen_ai.token.type +var ( + // Input tokens (prompt, input, etc.) + // Stability: development + GenAITokenTypeInput = GenAITokenTypeKey.String("input") + // Output tokens (completion, response, etc.) + // Stability: development + GenAITokenTypeOutput = GenAITokenTypeKey.String("output") +) + +// Namespace: geo +const ( + // GeoContinentCodeKey is the attribute Key conforming to the + // "geo.continent.code" semantic conventions. It represents the two-letter code + // representing continent’s name. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + GeoContinentCodeKey = attribute.Key("geo.continent.code") + + // GeoCountryISOCodeKey is the attribute Key conforming to the + // "geo.country.iso_code" semantic conventions. It represents the two-letter ISO + // Country Code ([ISO 3166-1 alpha2]). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CA" + // + // [ISO 3166-1 alpha2]: https://wikipedia.org/wiki/ISO_3166-1#Codes + GeoCountryISOCodeKey = attribute.Key("geo.country.iso_code") + + // GeoLocalityNameKey is the attribute Key conforming to the "geo.locality.name" + // semantic conventions. It represents the locality name. Represents the name of + // a city, town, village, or similar populated place. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Montreal", "Berlin" + GeoLocalityNameKey = attribute.Key("geo.locality.name") + + // GeoLocationLatKey is the attribute Key conforming to the "geo.location.lat" + // semantic conventions. It represents the latitude of the geo location in + // [WGS84]. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 45.505918 + // + // [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84 + GeoLocationLatKey = attribute.Key("geo.location.lat") + + // GeoLocationLonKey is the attribute Key conforming to the "geo.location.lon" + // semantic conventions. It represents the longitude of the geo location in + // [WGS84]. + // + // Type: double + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: -73.61483 + // + // [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84 + GeoLocationLonKey = attribute.Key("geo.location.lon") + + // GeoPostalCodeKey is the attribute Key conforming to the "geo.postal_code" + // semantic conventions. It represents the postal code associated with the + // location. Values appropriate for this field may also be known as a postcode + // or ZIP code and will vary widely from country to country. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "94040" + GeoPostalCodeKey = attribute.Key("geo.postal_code") + + // GeoRegionISOCodeKey is the attribute Key conforming to the + // "geo.region.iso_code" semantic conventions. It represents the region ISO code + // ([ISO 3166-2]). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CA-QC" + // + // [ISO 3166-2]: https://wikipedia.org/wiki/ISO_3166-2 + GeoRegionISOCodeKey = attribute.Key("geo.region.iso_code") +) + +// GeoCountryISOCode returns an attribute KeyValue conforming to the +// "geo.country.iso_code" semantic conventions. It represents the two-letter ISO +// Country Code ([ISO 3166-1 alpha2]). +// +// [ISO 3166-1 alpha2]: https://wikipedia.org/wiki/ISO_3166-1#Codes +func GeoCountryISOCode(val string) attribute.KeyValue { + return GeoCountryISOCodeKey.String(val) +} + +// GeoLocalityName returns an attribute KeyValue conforming to the +// "geo.locality.name" semantic conventions. It represents the locality name. +// Represents the name of a city, town, village, or similar populated place. +func GeoLocalityName(val string) attribute.KeyValue { + return GeoLocalityNameKey.String(val) +} + +// GeoLocationLat returns an attribute KeyValue conforming to the +// "geo.location.lat" semantic conventions. It represents the latitude of the geo +// location in [WGS84]. +// +// [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84 +func GeoLocationLat(val float64) attribute.KeyValue { + return GeoLocationLatKey.Float64(val) +} + +// GeoLocationLon returns an attribute KeyValue conforming to the +// "geo.location.lon" semantic conventions. It represents the longitude of the +// geo location in [WGS84]. +// +// [WGS84]: https://wikipedia.org/wiki/World_Geodetic_System#WGS84 +func GeoLocationLon(val float64) attribute.KeyValue { + return GeoLocationLonKey.Float64(val) +} + +// GeoPostalCode returns an attribute KeyValue conforming to the +// "geo.postal_code" semantic conventions. It represents the postal code +// associated with the location. Values appropriate for this field may also be +// known as a postcode or ZIP code and will vary widely from country to country. +func GeoPostalCode(val string) attribute.KeyValue { + return GeoPostalCodeKey.String(val) +} + +// GeoRegionISOCode returns an attribute KeyValue conforming to the +// "geo.region.iso_code" semantic conventions. It represents the region ISO code +// ([ISO 3166-2]). +// +// [ISO 3166-2]: https://wikipedia.org/wiki/ISO_3166-2 +func GeoRegionISOCode(val string) attribute.KeyValue { + return GeoRegionISOCodeKey.String(val) +} + +// Enum values for geo.continent.code +var ( + // Africa + // Stability: development + GeoContinentCodeAf = GeoContinentCodeKey.String("AF") + // Antarctica + // Stability: development + GeoContinentCodeAn = GeoContinentCodeKey.String("AN") + // Asia + // Stability: development + GeoContinentCodeAs = GeoContinentCodeKey.String("AS") + // Europe + // Stability: development + GeoContinentCodeEu = GeoContinentCodeKey.String("EU") + // North America + // Stability: development + GeoContinentCodeNa = GeoContinentCodeKey.String("NA") + // Oceania + // Stability: development + GeoContinentCodeOc = GeoContinentCodeKey.String("OC") + // South America + // Stability: development + GeoContinentCodeSa = GeoContinentCodeKey.String("SA") +) + +// Namespace: go +const ( + // GoMemoryTypeKey is the attribute Key conforming to the "go.memory.type" + // semantic conventions. It represents the type of memory. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "other", "stack" + GoMemoryTypeKey = attribute.Key("go.memory.type") +) + +// Enum values for go.memory.type +var ( + // Memory allocated from the heap that is reserved for stack space, whether or + // not it is currently in-use. + // Stability: development + GoMemoryTypeStack = GoMemoryTypeKey.String("stack") + // Memory used by the Go runtime, excluding other categories of memory usage + // described in this enumeration. + // Stability: development + GoMemoryTypeOther = GoMemoryTypeKey.String("other") +) + +// Namespace: graphql +const ( + // GraphQLDocumentKey is the attribute Key conforming to the "graphql.document" + // semantic conventions. It represents the GraphQL document being executed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: query findBookById { bookById(id: ?) { name } } + // Note: The value may be sanitized to exclude sensitive information. + GraphQLDocumentKey = attribute.Key("graphql.document") + + // GraphQLOperationNameKey is the attribute Key conforming to the + // "graphql.operation.name" semantic conventions. It represents the name of the + // operation being executed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: findBookById + GraphQLOperationNameKey = attribute.Key("graphql.operation.name") + + // GraphQLOperationTypeKey is the attribute Key conforming to the + // "graphql.operation.type" semantic conventions. It represents the type of the + // operation being executed. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "query", "mutation", "subscription" + GraphQLOperationTypeKey = attribute.Key("graphql.operation.type") +) + +// GraphQLDocument returns an attribute KeyValue conforming to the +// "graphql.document" semantic conventions. It represents the GraphQL document +// being executed. +func GraphQLDocument(val string) attribute.KeyValue { + return GraphQLDocumentKey.String(val) +} + +// GraphQLOperationName returns an attribute KeyValue conforming to the +// "graphql.operation.name" semantic conventions. It represents the name of the +// operation being executed. +func GraphQLOperationName(val string) attribute.KeyValue { + return GraphQLOperationNameKey.String(val) +} + +// Enum values for graphql.operation.type +var ( + // GraphQL query + // Stability: development + GraphQLOperationTypeQuery = GraphQLOperationTypeKey.String("query") + // GraphQL mutation + // Stability: development + GraphQLOperationTypeMutation = GraphQLOperationTypeKey.String("mutation") + // GraphQL subscription + // Stability: development + GraphQLOperationTypeSubscription = GraphQLOperationTypeKey.String("subscription") +) + +// Namespace: heroku +const ( + // HerokuAppIDKey is the attribute Key conforming to the "heroku.app.id" + // semantic conventions. It represents the unique identifier for the + // application. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2daa2797-e42b-4624-9322-ec3f968df4da" + HerokuAppIDKey = attribute.Key("heroku.app.id") + + // HerokuReleaseCommitKey is the attribute Key conforming to the + // "heroku.release.commit" semantic conventions. It represents the commit hash + // for the current release. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "e6134959463efd8966b20e75b913cafe3f5ec" + HerokuReleaseCommitKey = attribute.Key("heroku.release.commit") + + // HerokuReleaseCreationTimestampKey is the attribute Key conforming to the + // "heroku.release.creation_timestamp" semantic conventions. It represents the + // time and date the release was created. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2022-10-23T18:00:42Z" + HerokuReleaseCreationTimestampKey = attribute.Key("heroku.release.creation_timestamp") +) + +// HerokuAppID returns an attribute KeyValue conforming to the "heroku.app.id" +// semantic conventions. It represents the unique identifier for the application. +func HerokuAppID(val string) attribute.KeyValue { + return HerokuAppIDKey.String(val) +} + +// HerokuReleaseCommit returns an attribute KeyValue conforming to the +// "heroku.release.commit" semantic conventions. It represents the commit hash +// for the current release. +func HerokuReleaseCommit(val string) attribute.KeyValue { + return HerokuReleaseCommitKey.String(val) +} + +// HerokuReleaseCreationTimestamp returns an attribute KeyValue conforming to the +// "heroku.release.creation_timestamp" semantic conventions. It represents the +// time and date the release was created. +func HerokuReleaseCreationTimestamp(val string) attribute.KeyValue { + return HerokuReleaseCreationTimestampKey.String(val) +} + +// Namespace: host +const ( + // HostArchKey is the attribute Key conforming to the "host.arch" semantic + // conventions. It represents the CPU architecture the host system is running + // on. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + HostArchKey = attribute.Key("host.arch") + + // HostCPUCacheL2SizeKey is the attribute Key conforming to the + // "host.cpu.cache.l2.size" semantic conventions. It represents the amount of + // level 2 memory cache available to the processor (in Bytes). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 12288000 + HostCPUCacheL2SizeKey = attribute.Key("host.cpu.cache.l2.size") + + // HostCPUFamilyKey is the attribute Key conforming to the "host.cpu.family" + // semantic conventions. It represents the family or generation of the CPU. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "6", "PA-RISC 1.1e" + HostCPUFamilyKey = attribute.Key("host.cpu.family") + + // HostCPUModelIDKey is the attribute Key conforming to the "host.cpu.model.id" + // semantic conventions. It represents the model identifier. It provides more + // granular information about the CPU, distinguishing it from other CPUs within + // the same family. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "6", "9000/778/B180L" + HostCPUModelIDKey = attribute.Key("host.cpu.model.id") + + // HostCPUModelNameKey is the attribute Key conforming to the + // "host.cpu.model.name" semantic conventions. It represents the model + // designation of the processor. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz" + HostCPUModelNameKey = attribute.Key("host.cpu.model.name") + + // HostCPUSteppingKey is the attribute Key conforming to the "host.cpu.stepping" + // semantic conventions. It represents the stepping or core revisions. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1", "r1p1" + HostCPUSteppingKey = attribute.Key("host.cpu.stepping") + + // HostCPUVendorIDKey is the attribute Key conforming to the + // "host.cpu.vendor.id" semantic conventions. It represents the processor + // manufacturer identifier. A maximum 12-character string. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "GenuineIntel" + // Note: [CPUID] command returns the vendor ID string in EBX, EDX and ECX + // registers. Writing these to memory in this order results in a 12-character + // string. + // + // [CPUID]: https://wiki.osdev.org/CPUID + HostCPUVendorIDKey = attribute.Key("host.cpu.vendor.id") + + // HostIDKey is the attribute Key conforming to the "host.id" semantic + // conventions. It represents the unique host ID. For Cloud, this must be the + // instance_id assigned by the cloud provider. For non-containerized systems, + // this should be the `machine-id`. See the table below for the sources to use + // to determine the `machine-id` based on operating system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "fdbf79e8af94cb7f9e8df36789187052" + HostIDKey = attribute.Key("host.id") + + // HostImageIDKey is the attribute Key conforming to the "host.image.id" + // semantic conventions. It represents the VM image ID or host OS image ID. For + // Cloud, this value is from the provider. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "ami-07b06b442921831e5" + HostImageIDKey = attribute.Key("host.image.id") + + // HostImageNameKey is the attribute Key conforming to the "host.image.name" + // semantic conventions. It represents the name of the VM image or OS install + // the host was instantiated from. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "infra-ami-eks-worker-node-7d4ec78312", "CentOS-8-x86_64-1905" + HostImageNameKey = attribute.Key("host.image.name") + + // HostImageVersionKey is the attribute Key conforming to the + // "host.image.version" semantic conventions. It represents the version string + // of the VM image or host OS as defined in [Version Attributes]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0.1" + // + // [Version Attributes]: /docs/resource/README.md#version-attributes + HostImageVersionKey = attribute.Key("host.image.version") + + // HostIPKey is the attribute Key conforming to the "host.ip" semantic + // conventions. It represents the available IP addresses of the host, excluding + // loopback interfaces. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "192.168.1.140", "fe80::abc2:4a28:737a:609e" + // Note: IPv4 Addresses MUST be specified in dotted-quad notation. IPv6 + // addresses MUST be specified in the [RFC 5952] format. + // + // [RFC 5952]: https://www.rfc-editor.org/rfc/rfc5952.html + HostIPKey = attribute.Key("host.ip") + + // HostMacKey is the attribute Key conforming to the "host.mac" semantic + // conventions. It represents the available MAC addresses of the host, excluding + // loopback interfaces. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "AC-DE-48-23-45-67", "AC-DE-48-23-45-67-01-9F" + // Note: MAC Addresses MUST be represented in [IEEE RA hexadecimal form]: as + // hyphen-separated octets in uppercase hexadecimal form from most to least + // significant. + // + // [IEEE RA hexadecimal form]: https://standards.ieee.org/wp-content/uploads/import/documents/tutorials/eui.pdf + HostMacKey = attribute.Key("host.mac") + + // HostNameKey is the attribute Key conforming to the "host.name" semantic + // conventions. It represents the name of the host. On Unix systems, it may + // contain what the hostname command returns, or the fully qualified hostname, + // or another name specified by the user. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry-test" + HostNameKey = attribute.Key("host.name") + + // HostTypeKey is the attribute Key conforming to the "host.type" semantic + // conventions. It represents the type of host. For Cloud, this must be the + // machine type. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "n1-standard-1" + HostTypeKey = attribute.Key("host.type") +) + +// HostCPUCacheL2Size returns an attribute KeyValue conforming to the +// "host.cpu.cache.l2.size" semantic conventions. It represents the amount of +// level 2 memory cache available to the processor (in Bytes). +func HostCPUCacheL2Size(val int) attribute.KeyValue { + return HostCPUCacheL2SizeKey.Int(val) +} + +// HostCPUFamily returns an attribute KeyValue conforming to the +// "host.cpu.family" semantic conventions. It represents the family or generation +// of the CPU. +func HostCPUFamily(val string) attribute.KeyValue { + return HostCPUFamilyKey.String(val) +} + +// HostCPUModelID returns an attribute KeyValue conforming to the +// "host.cpu.model.id" semantic conventions. It represents the model identifier. +// It provides more granular information about the CPU, distinguishing it from +// other CPUs within the same family. +func HostCPUModelID(val string) attribute.KeyValue { + return HostCPUModelIDKey.String(val) +} + +// HostCPUModelName returns an attribute KeyValue conforming to the +// "host.cpu.model.name" semantic conventions. It represents the model +// designation of the processor. +func HostCPUModelName(val string) attribute.KeyValue { + return HostCPUModelNameKey.String(val) +} + +// HostCPUStepping returns an attribute KeyValue conforming to the +// "host.cpu.stepping" semantic conventions. It represents the stepping or core +// revisions. +func HostCPUStepping(val string) attribute.KeyValue { + return HostCPUSteppingKey.String(val) +} + +// HostCPUVendorID returns an attribute KeyValue conforming to the +// "host.cpu.vendor.id" semantic conventions. It represents the processor +// manufacturer identifier. A maximum 12-character string. +func HostCPUVendorID(val string) attribute.KeyValue { + return HostCPUVendorIDKey.String(val) +} + +// HostID returns an attribute KeyValue conforming to the "host.id" semantic +// conventions. It represents the unique host ID. For Cloud, this must be the +// instance_id assigned by the cloud provider. For non-containerized systems, +// this should be the `machine-id`. See the table below for the sources to use to +// determine the `machine-id` based on operating system. +func HostID(val string) attribute.KeyValue { + return HostIDKey.String(val) +} + +// HostImageID returns an attribute KeyValue conforming to the "host.image.id" +// semantic conventions. It represents the VM image ID or host OS image ID. For +// Cloud, this value is from the provider. +func HostImageID(val string) attribute.KeyValue { + return HostImageIDKey.String(val) +} + +// HostImageName returns an attribute KeyValue conforming to the +// "host.image.name" semantic conventions. It represents the name of the VM image +// or OS install the host was instantiated from. +func HostImageName(val string) attribute.KeyValue { + return HostImageNameKey.String(val) +} + +// HostImageVersion returns an attribute KeyValue conforming to the +// "host.image.version" semantic conventions. It represents the version string of +// the VM image or host OS as defined in [Version Attributes]. +// +// [Version Attributes]: /docs/resource/README.md#version-attributes +func HostImageVersion(val string) attribute.KeyValue { + return HostImageVersionKey.String(val) +} + +// HostIP returns an attribute KeyValue conforming to the "host.ip" semantic +// conventions. It represents the available IP addresses of the host, excluding +// loopback interfaces. +func HostIP(val ...string) attribute.KeyValue { + return HostIPKey.StringSlice(val) +} + +// HostMac returns an attribute KeyValue conforming to the "host.mac" semantic +// conventions. It represents the available MAC addresses of the host, excluding +// loopback interfaces. +func HostMac(val ...string) attribute.KeyValue { + return HostMacKey.StringSlice(val) +} + +// HostName returns an attribute KeyValue conforming to the "host.name" semantic +// conventions. It represents the name of the host. On Unix systems, it may +// contain what the hostname command returns, or the fully qualified hostname, or +// another name specified by the user. +func HostName(val string) attribute.KeyValue { + return HostNameKey.String(val) +} + +// HostType returns an attribute KeyValue conforming to the "host.type" semantic +// conventions. It represents the type of host. For Cloud, this must be the +// machine type. +func HostType(val string) attribute.KeyValue { + return HostTypeKey.String(val) +} + +// Enum values for host.arch +var ( + // AMD64 + // Stability: development + HostArchAMD64 = HostArchKey.String("amd64") + // ARM32 + // Stability: development + HostArchARM32 = HostArchKey.String("arm32") + // ARM64 + // Stability: development + HostArchARM64 = HostArchKey.String("arm64") + // Itanium + // Stability: development + HostArchIA64 = HostArchKey.String("ia64") + // 32-bit PowerPC + // Stability: development + HostArchPPC32 = HostArchKey.String("ppc32") + // 64-bit PowerPC + // Stability: development + HostArchPPC64 = HostArchKey.String("ppc64") + // IBM z/Architecture + // Stability: development + HostArchS390x = HostArchKey.String("s390x") + // 32-bit x86 + // Stability: development + HostArchX86 = HostArchKey.String("x86") +) + +// Namespace: http +const ( + // HTTPConnectionStateKey is the attribute Key conforming to the + // "http.connection.state" semantic conventions. It represents the state of the + // HTTP connection in the HTTP connection pool. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "active", "idle" + HTTPConnectionStateKey = attribute.Key("http.connection.state") + + // HTTPRequestBodySizeKey is the attribute Key conforming to the + // "http.request.body.size" semantic conventions. It represents the size of the + // request payload body in bytes. This is the number of bytes transferred + // excluding headers and is often, but not always, present as the + // [Content-Length] header. For requests using transport encoding, this should + // be the compressed size. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length + HTTPRequestBodySizeKey = attribute.Key("http.request.body.size") + + // HTTPRequestMethodKey is the attribute Key conforming to the + // "http.request.method" semantic conventions. It represents the HTTP request + // method. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "GET", "POST", "HEAD" + // Note: HTTP request method value SHOULD be "known" to the instrumentation. + // By default, this convention defines "known" methods as the ones listed in + // [RFC9110] + // and the PATCH method defined in [RFC5789]. + // + // If the HTTP request method is not known to instrumentation, it MUST set the + // `http.request.method` attribute to `_OTHER`. + // + // If the HTTP instrumentation could end up converting valid HTTP request + // methods to `_OTHER`, then it MUST provide a way to override + // the list of known HTTP methods. If this override is done via environment + // variable, then the environment variable MUST be named + // OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of + // case-sensitive known HTTP methods + // (this list MUST be a full override of the default known method, it is not a + // list of known methods in addition to the defaults). + // + // HTTP method names are case-sensitive and `http.request.method` attribute + // value MUST match a known HTTP method name exactly. + // Instrumentations for specific web frameworks that consider HTTP methods to be + // case insensitive, SHOULD populate a canonical equivalent. + // Tracing instrumentations that do so, MUST also set + // `http.request.method_original` to the original value. + // + // [RFC9110]: https://www.rfc-editor.org/rfc/rfc9110.html#name-methods + // [RFC5789]: https://www.rfc-editor.org/rfc/rfc5789.html + HTTPRequestMethodKey = attribute.Key("http.request.method") + + // HTTPRequestMethodOriginalKey is the attribute Key conforming to the + // "http.request.method_original" semantic conventions. It represents the + // original HTTP method sent by the client in the request line. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "GeT", "ACL", "foo" + HTTPRequestMethodOriginalKey = attribute.Key("http.request.method_original") + + // HTTPRequestResendCountKey is the attribute Key conforming to the + // "http.request.resend_count" semantic conventions. It represents the ordinal + // number of request resending attempt (for any reason, including redirects). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Note: The resend count SHOULD be updated each time an HTTP request gets + // resent by the client, regardless of what was the cause of the resending (e.g. + // redirection, authorization failure, 503 Server Unavailable, network issues, + // or any other). + HTTPRequestResendCountKey = attribute.Key("http.request.resend_count") + + // HTTPRequestSizeKey is the attribute Key conforming to the "http.request.size" + // semantic conventions. It represents the total size of the request in bytes. + // This should be the total number of bytes sent over the wire, including the + // request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, and request + // body if any. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + HTTPRequestSizeKey = attribute.Key("http.request.size") + + // HTTPResponseBodySizeKey is the attribute Key conforming to the + // "http.response.body.size" semantic conventions. It represents the size of the + // response payload body in bytes. This is the number of bytes transferred + // excluding headers and is often, but not always, present as the + // [Content-Length] header. For requests using transport encoding, this should + // be the compressed size. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length + HTTPResponseBodySizeKey = attribute.Key("http.response.body.size") + + // HTTPResponseSizeKey is the attribute Key conforming to the + // "http.response.size" semantic conventions. It represents the total size of + // the response in bytes. This should be the total number of bytes sent over the + // wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), + // headers, and response body and trailers if any. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + HTTPResponseSizeKey = attribute.Key("http.response.size") + + // HTTPResponseStatusCodeKey is the attribute Key conforming to the + // "http.response.status_code" semantic conventions. It represents the + // [HTTP response status code]. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: 200 + // + // [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6 + HTTPResponseStatusCodeKey = attribute.Key("http.response.status_code") + + // HTTPRouteKey is the attribute Key conforming to the "http.route" semantic + // conventions. It represents the matched route, that is, the path template in + // the format used by the respective server framework. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "/users/:userID?", "{controller}/{action}/{id?}" + // Note: MUST NOT be populated when this is not supported by the HTTP server + // framework as the route attribute should have low-cardinality and the URI path + // can NOT substitute it. + // SHOULD include the [application root] if there is one. + // + // [application root]: /docs/http/http-spans.md#http-server-definitions + HTTPRouteKey = attribute.Key("http.route") +) + +// HTTPRequestBodySize returns an attribute KeyValue conforming to the +// "http.request.body.size" semantic conventions. It represents the size of the +// request payload body in bytes. This is the number of bytes transferred +// excluding headers and is often, but not always, present as the +// [Content-Length] header. For requests using transport encoding, this should be +// the compressed size. +// +// [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length +func HTTPRequestBodySize(val int) attribute.KeyValue { + return HTTPRequestBodySizeKey.Int(val) +} + +// HTTPRequestHeader returns an attribute KeyValue conforming to the +// "http.request.header" semantic conventions. It represents the HTTP request +// headers, `` being the normalized HTTP Header name (lowercase), the value +// being the header values. +func HTTPRequestHeader(key string, val ...string) attribute.KeyValue { + return attribute.StringSlice("http.request.header."+key, val) +} + +// HTTPRequestMethodOriginal returns an attribute KeyValue conforming to the +// "http.request.method_original" semantic conventions. It represents the +// original HTTP method sent by the client in the request line. +func HTTPRequestMethodOriginal(val string) attribute.KeyValue { + return HTTPRequestMethodOriginalKey.String(val) +} + +// HTTPRequestResendCount returns an attribute KeyValue conforming to the +// "http.request.resend_count" semantic conventions. It represents the ordinal +// number of request resending attempt (for any reason, including redirects). +func HTTPRequestResendCount(val int) attribute.KeyValue { + return HTTPRequestResendCountKey.Int(val) +} + +// HTTPRequestSize returns an attribute KeyValue conforming to the +// "http.request.size" semantic conventions. It represents the total size of the +// request in bytes. This should be the total number of bytes sent over the wire, +// including the request line (HTTP/1.1), framing (HTTP/2 and HTTP/3), headers, +// and request body if any. +func HTTPRequestSize(val int) attribute.KeyValue { + return HTTPRequestSizeKey.Int(val) +} + +// HTTPResponseBodySize returns an attribute KeyValue conforming to the +// "http.response.body.size" semantic conventions. It represents the size of the +// response payload body in bytes. This is the number of bytes transferred +// excluding headers and is often, but not always, present as the +// [Content-Length] header. For requests using transport encoding, this should be +// the compressed size. +// +// [Content-Length]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length +func HTTPResponseBodySize(val int) attribute.KeyValue { + return HTTPResponseBodySizeKey.Int(val) +} + +// HTTPResponseHeader returns an attribute KeyValue conforming to the +// "http.response.header" semantic conventions. It represents the HTTP response +// headers, `` being the normalized HTTP Header name (lowercase), the value +// being the header values. +func HTTPResponseHeader(key string, val ...string) attribute.KeyValue { + return attribute.StringSlice("http.response.header."+key, val) +} + +// HTTPResponseSize returns an attribute KeyValue conforming to the +// "http.response.size" semantic conventions. It represents the total size of the +// response in bytes. This should be the total number of bytes sent over the +// wire, including the status line (HTTP/1.1), framing (HTTP/2 and HTTP/3), +// headers, and response body and trailers if any. +func HTTPResponseSize(val int) attribute.KeyValue { + return HTTPResponseSizeKey.Int(val) +} + +// HTTPResponseStatusCode returns an attribute KeyValue conforming to the +// "http.response.status_code" semantic conventions. It represents the +// [HTTP response status code]. +// +// [HTTP response status code]: https://tools.ietf.org/html/rfc7231#section-6 +func HTTPResponseStatusCode(val int) attribute.KeyValue { + return HTTPResponseStatusCodeKey.Int(val) +} + +// HTTPRoute returns an attribute KeyValue conforming to the "http.route" +// semantic conventions. It represents the matched route, that is, the path +// template in the format used by the respective server framework. +func HTTPRoute(val string) attribute.KeyValue { + return HTTPRouteKey.String(val) +} + +// Enum values for http.connection.state +var ( + // active state. + // Stability: development + HTTPConnectionStateActive = HTTPConnectionStateKey.String("active") + // idle state. + // Stability: development + HTTPConnectionStateIdle = HTTPConnectionStateKey.String("idle") +) + +// Enum values for http.request.method +var ( + // CONNECT method. + // Stability: stable + HTTPRequestMethodConnect = HTTPRequestMethodKey.String("CONNECT") + // DELETE method. + // Stability: stable + HTTPRequestMethodDelete = HTTPRequestMethodKey.String("DELETE") + // GET method. + // Stability: stable + HTTPRequestMethodGet = HTTPRequestMethodKey.String("GET") + // HEAD method. + // Stability: stable + HTTPRequestMethodHead = HTTPRequestMethodKey.String("HEAD") + // OPTIONS method. + // Stability: stable + HTTPRequestMethodOptions = HTTPRequestMethodKey.String("OPTIONS") + // PATCH method. + // Stability: stable + HTTPRequestMethodPatch = HTTPRequestMethodKey.String("PATCH") + // POST method. + // Stability: stable + HTTPRequestMethodPost = HTTPRequestMethodKey.String("POST") + // PUT method. + // Stability: stable + HTTPRequestMethodPut = HTTPRequestMethodKey.String("PUT") + // TRACE method. + // Stability: stable + HTTPRequestMethodTrace = HTTPRequestMethodKey.String("TRACE") + // Any HTTP method that the instrumentation has no prior knowledge of. + // Stability: stable + HTTPRequestMethodOther = HTTPRequestMethodKey.String("_OTHER") +) + +// Namespace: hw +const ( + // HwBatteryCapacityKey is the attribute Key conforming to the + // "hw.battery.capacity" semantic conventions. It represents the design capacity + // in Watts-hours or Amper-hours. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "9.3Ah", "50Wh" + HwBatteryCapacityKey = attribute.Key("hw.battery.capacity") + + // HwBatteryChemistryKey is the attribute Key conforming to the + // "hw.battery.chemistry" semantic conventions. It represents the battery + // [chemistry], e.g. Lithium-Ion, Nickel-Cadmium, etc. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Li-ion", "NiMH" + // + // [chemistry]: https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html + HwBatteryChemistryKey = attribute.Key("hw.battery.chemistry") + + // HwBatteryStateKey is the attribute Key conforming to the "hw.battery.state" + // semantic conventions. It represents the current state of the battery. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + HwBatteryStateKey = attribute.Key("hw.battery.state") + + // HwBiosVersionKey is the attribute Key conforming to the "hw.bios_version" + // semantic conventions. It represents the BIOS version of the hardware + // component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1.2.3" + HwBiosVersionKey = attribute.Key("hw.bios_version") + + // HwDriverVersionKey is the attribute Key conforming to the "hw.driver_version" + // semantic conventions. It represents the driver version for the hardware + // component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "10.2.1-3" + HwDriverVersionKey = attribute.Key("hw.driver_version") + + // HwEnclosureTypeKey is the attribute Key conforming to the "hw.enclosure.type" + // semantic conventions. It represents the type of the enclosure (useful for + // modular systems). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Computer", "Storage", "Switch" + HwEnclosureTypeKey = attribute.Key("hw.enclosure.type") + + // HwFirmwareVersionKey is the attribute Key conforming to the + // "hw.firmware_version" semantic conventions. It represents the firmware + // version of the hardware component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2.0.1" + HwFirmwareVersionKey = attribute.Key("hw.firmware_version") + + // HwGpuTaskKey is the attribute Key conforming to the "hw.gpu.task" semantic + // conventions. It represents the type of task the GPU is performing. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + HwGpuTaskKey = attribute.Key("hw.gpu.task") + + // HwIDKey is the attribute Key conforming to the "hw.id" semantic conventions. + // It represents an identifier for the hardware component, unique within the + // monitored host. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "win32battery_battery_testsysa33_1" + HwIDKey = attribute.Key("hw.id") + + // HwLimitTypeKey is the attribute Key conforming to the "hw.limit_type" + // semantic conventions. It represents the type of limit for hardware + // components. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + HwLimitTypeKey = attribute.Key("hw.limit_type") + + // HwLogicalDiskRaidLevelKey is the attribute Key conforming to the + // "hw.logical_disk.raid_level" semantic conventions. It represents the RAID + // Level of the logical disk. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "RAID0+1", "RAID5", "RAID10" + HwLogicalDiskRaidLevelKey = attribute.Key("hw.logical_disk.raid_level") + + // HwLogicalDiskStateKey is the attribute Key conforming to the + // "hw.logical_disk.state" semantic conventions. It represents the state of the + // logical disk space usage. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + HwLogicalDiskStateKey = attribute.Key("hw.logical_disk.state") + + // HwMemoryTypeKey is the attribute Key conforming to the "hw.memory.type" + // semantic conventions. It represents the type of the memory module. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "DDR4", "DDR5", "LPDDR5" + HwMemoryTypeKey = attribute.Key("hw.memory.type") + + // HwModelKey is the attribute Key conforming to the "hw.model" semantic + // conventions. It represents the descriptive model name of the hardware + // component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "PERC H740P", "Intel(R) Core(TM) i7-10700K", "Dell XPS 15 Battery" + HwModelKey = attribute.Key("hw.model") + + // HwNameKey is the attribute Key conforming to the "hw.name" semantic + // conventions. It represents an easily-recognizable name for the hardware + // component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "eth0" + HwNameKey = attribute.Key("hw.name") + + // HwNetworkLogicalAddressesKey is the attribute Key conforming to the + // "hw.network.logical_addresses" semantic conventions. It represents the + // logical addresses of the adapter (e.g. IP address, or WWPN). + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "172.16.8.21", "57.11.193.42" + HwNetworkLogicalAddressesKey = attribute.Key("hw.network.logical_addresses") + + // HwNetworkPhysicalAddressKey is the attribute Key conforming to the + // "hw.network.physical_address" semantic conventions. It represents the + // physical address of the adapter (e.g. MAC address, or WWNN). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "00-90-F5-E9-7B-36" + HwNetworkPhysicalAddressKey = attribute.Key("hw.network.physical_address") + + // HwParentKey is the attribute Key conforming to the "hw.parent" semantic + // conventions. It represents the unique identifier of the parent component + // (typically the `hw.id` attribute of the enclosure, or disk controller). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "dellStorage_perc_0" + HwParentKey = attribute.Key("hw.parent") + + // HwPhysicalDiskSmartAttributeKey is the attribute Key conforming to the + // "hw.physical_disk.smart_attribute" semantic conventions. It represents the + // [S.M.A.R.T.] (Self-Monitoring, Analysis, and Reporting Technology) attribute + // of the physical disk. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Spin Retry Count", "Seek Error Rate", "Raw Read Error Rate" + // + // [S.M.A.R.T.]: https://wikipedia.org/wiki/S.M.A.R.T. + HwPhysicalDiskSmartAttributeKey = attribute.Key("hw.physical_disk.smart_attribute") + + // HwPhysicalDiskStateKey is the attribute Key conforming to the + // "hw.physical_disk.state" semantic conventions. It represents the state of the + // physical disk endurance utilization. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + HwPhysicalDiskStateKey = attribute.Key("hw.physical_disk.state") + + // HwPhysicalDiskTypeKey is the attribute Key conforming to the + // "hw.physical_disk.type" semantic conventions. It represents the type of the + // physical disk. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "HDD", "SSD", "10K" + HwPhysicalDiskTypeKey = attribute.Key("hw.physical_disk.type") + + // HwSensorLocationKey is the attribute Key conforming to the + // "hw.sensor_location" semantic conventions. It represents the location of the + // sensor. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "cpu0", "ps1", "INLET", "CPU0_DIE", "AMBIENT", "MOTHERBOARD", "PS0 + // V3_3", "MAIN_12V", "CPU_VCORE" + HwSensorLocationKey = attribute.Key("hw.sensor_location") + + // HwSerialNumberKey is the attribute Key conforming to the "hw.serial_number" + // semantic conventions. It represents the serial number of the hardware + // component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CNFCP0123456789" + HwSerialNumberKey = attribute.Key("hw.serial_number") + + // HwStateKey is the attribute Key conforming to the "hw.state" semantic + // conventions. It represents the current state of the component. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + HwStateKey = attribute.Key("hw.state") + + // HwTapeDriveOperationTypeKey is the attribute Key conforming to the + // "hw.tape_drive.operation_type" semantic conventions. It represents the type + // of tape drive operation. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + HwTapeDriveOperationTypeKey = attribute.Key("hw.tape_drive.operation_type") + + // HwTypeKey is the attribute Key conforming to the "hw.type" semantic + // conventions. It represents the type of the component. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: Describes the category of the hardware component for which `hw.state` + // is being reported. For example, `hw.type=temperature` along with + // `hw.state=degraded` would indicate that the temperature of the hardware + // component has been reported as `degraded`. + HwTypeKey = attribute.Key("hw.type") + + // HwVendorKey is the attribute Key conforming to the "hw.vendor" semantic + // conventions. It represents the vendor name of the hardware component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Dell", "HP", "Intel", "AMD", "LSI", "Lenovo" + HwVendorKey = attribute.Key("hw.vendor") +) + +// HwBatteryCapacity returns an attribute KeyValue conforming to the +// "hw.battery.capacity" semantic conventions. It represents the design capacity +// in Watts-hours or Amper-hours. +func HwBatteryCapacity(val string) attribute.KeyValue { + return HwBatteryCapacityKey.String(val) +} + +// HwBatteryChemistry returns an attribute KeyValue conforming to the +// "hw.battery.chemistry" semantic conventions. It represents the battery +// [chemistry], e.g. Lithium-Ion, Nickel-Cadmium, etc. +// +// [chemistry]: https://schemas.dmtf.org/wbem/cim-html/2.31.0/CIM_Battery.html +func HwBatteryChemistry(val string) attribute.KeyValue { + return HwBatteryChemistryKey.String(val) +} + +// HwBiosVersion returns an attribute KeyValue conforming to the +// "hw.bios_version" semantic conventions. It represents the BIOS version of the +// hardware component. +func HwBiosVersion(val string) attribute.KeyValue { + return HwBiosVersionKey.String(val) +} + +// HwDriverVersion returns an attribute KeyValue conforming to the +// "hw.driver_version" semantic conventions. It represents the driver version for +// the hardware component. +func HwDriverVersion(val string) attribute.KeyValue { + return HwDriverVersionKey.String(val) +} + +// HwEnclosureType returns an attribute KeyValue conforming to the +// "hw.enclosure.type" semantic conventions. It represents the type of the +// enclosure (useful for modular systems). +func HwEnclosureType(val string) attribute.KeyValue { + return HwEnclosureTypeKey.String(val) +} + +// HwFirmwareVersion returns an attribute KeyValue conforming to the +// "hw.firmware_version" semantic conventions. It represents the firmware version +// of the hardware component. +func HwFirmwareVersion(val string) attribute.KeyValue { + return HwFirmwareVersionKey.String(val) +} + +// HwID returns an attribute KeyValue conforming to the "hw.id" semantic +// conventions. It represents an identifier for the hardware component, unique +// within the monitored host. +func HwID(val string) attribute.KeyValue { + return HwIDKey.String(val) +} + +// HwLogicalDiskRaidLevel returns an attribute KeyValue conforming to the +// "hw.logical_disk.raid_level" semantic conventions. It represents the RAID +// Level of the logical disk. +func HwLogicalDiskRaidLevel(val string) attribute.KeyValue { + return HwLogicalDiskRaidLevelKey.String(val) +} + +// HwMemoryType returns an attribute KeyValue conforming to the "hw.memory.type" +// semantic conventions. It represents the type of the memory module. +func HwMemoryType(val string) attribute.KeyValue { + return HwMemoryTypeKey.String(val) +} + +// HwModel returns an attribute KeyValue conforming to the "hw.model" semantic +// conventions. It represents the descriptive model name of the hardware +// component. +func HwModel(val string) attribute.KeyValue { + return HwModelKey.String(val) +} + +// HwName returns an attribute KeyValue conforming to the "hw.name" semantic +// conventions. It represents an easily-recognizable name for the hardware +// component. +func HwName(val string) attribute.KeyValue { + return HwNameKey.String(val) +} + +// HwNetworkLogicalAddresses returns an attribute KeyValue conforming to the +// "hw.network.logical_addresses" semantic conventions. It represents the logical +// addresses of the adapter (e.g. IP address, or WWPN). +func HwNetworkLogicalAddresses(val ...string) attribute.KeyValue { + return HwNetworkLogicalAddressesKey.StringSlice(val) +} + +// HwNetworkPhysicalAddress returns an attribute KeyValue conforming to the +// "hw.network.physical_address" semantic conventions. It represents the physical +// address of the adapter (e.g. MAC address, or WWNN). +func HwNetworkPhysicalAddress(val string) attribute.KeyValue { + return HwNetworkPhysicalAddressKey.String(val) +} + +// HwParent returns an attribute KeyValue conforming to the "hw.parent" semantic +// conventions. It represents the unique identifier of the parent component +// (typically the `hw.id` attribute of the enclosure, or disk controller). +func HwParent(val string) attribute.KeyValue { + return HwParentKey.String(val) +} + +// HwPhysicalDiskSmartAttribute returns an attribute KeyValue conforming to the +// "hw.physical_disk.smart_attribute" semantic conventions. It represents the +// [S.M.A.R.T.] (Self-Monitoring, Analysis, and Reporting Technology) attribute +// of the physical disk. +// +// [S.M.A.R.T.]: https://wikipedia.org/wiki/S.M.A.R.T. +func HwPhysicalDiskSmartAttribute(val string) attribute.KeyValue { + return HwPhysicalDiskSmartAttributeKey.String(val) +} + +// HwPhysicalDiskType returns an attribute KeyValue conforming to the +// "hw.physical_disk.type" semantic conventions. It represents the type of the +// physical disk. +func HwPhysicalDiskType(val string) attribute.KeyValue { + return HwPhysicalDiskTypeKey.String(val) +} + +// HwSensorLocation returns an attribute KeyValue conforming to the +// "hw.sensor_location" semantic conventions. It represents the location of the +// sensor. +func HwSensorLocation(val string) attribute.KeyValue { + return HwSensorLocationKey.String(val) +} + +// HwSerialNumber returns an attribute KeyValue conforming to the +// "hw.serial_number" semantic conventions. It represents the serial number of +// the hardware component. +func HwSerialNumber(val string) attribute.KeyValue { + return HwSerialNumberKey.String(val) +} + +// HwVendor returns an attribute KeyValue conforming to the "hw.vendor" semantic +// conventions. It represents the vendor name of the hardware component. +func HwVendor(val string) attribute.KeyValue { + return HwVendorKey.String(val) +} + +// Enum values for hw.battery.state +var ( + // Charging + // Stability: development + HwBatteryStateCharging = HwBatteryStateKey.String("charging") + // Discharging + // Stability: development + HwBatteryStateDischarging = HwBatteryStateKey.String("discharging") +) + +// Enum values for hw.gpu.task +var ( + // Decoder + // Stability: development + HwGpuTaskDecoder = HwGpuTaskKey.String("decoder") + // Encoder + // Stability: development + HwGpuTaskEncoder = HwGpuTaskKey.String("encoder") + // General + // Stability: development + HwGpuTaskGeneral = HwGpuTaskKey.String("general") +) + +// Enum values for hw.limit_type +var ( + // Critical + // Stability: development + HwLimitTypeCritical = HwLimitTypeKey.String("critical") + // Degraded + // Stability: development + HwLimitTypeDegraded = HwLimitTypeKey.String("degraded") + // High Critical + // Stability: development + HwLimitTypeHighCritical = HwLimitTypeKey.String("high.critical") + // High Degraded + // Stability: development + HwLimitTypeHighDegraded = HwLimitTypeKey.String("high.degraded") + // Low Critical + // Stability: development + HwLimitTypeLowCritical = HwLimitTypeKey.String("low.critical") + // Low Degraded + // Stability: development + HwLimitTypeLowDegraded = HwLimitTypeKey.String("low.degraded") + // Maximum + // Stability: development + HwLimitTypeMax = HwLimitTypeKey.String("max") + // Throttled + // Stability: development + HwLimitTypeThrottled = HwLimitTypeKey.String("throttled") + // Turbo + // Stability: development + HwLimitTypeTurbo = HwLimitTypeKey.String("turbo") +) + +// Enum values for hw.logical_disk.state +var ( + // Used + // Stability: development + HwLogicalDiskStateUsed = HwLogicalDiskStateKey.String("used") + // Free + // Stability: development + HwLogicalDiskStateFree = HwLogicalDiskStateKey.String("free") +) + +// Enum values for hw.physical_disk.state +var ( + // Remaining + // Stability: development + HwPhysicalDiskStateRemaining = HwPhysicalDiskStateKey.String("remaining") +) + +// Enum values for hw.state +var ( + // Degraded + // Stability: development + HwStateDegraded = HwStateKey.String("degraded") + // Failed + // Stability: development + HwStateFailed = HwStateKey.String("failed") + // Needs Cleaning + // Stability: development + HwStateNeedsCleaning = HwStateKey.String("needs_cleaning") + // OK + // Stability: development + HwStateOk = HwStateKey.String("ok") + // Predicted Failure + // Stability: development + HwStatePredictedFailure = HwStateKey.String("predicted_failure") +) + +// Enum values for hw.tape_drive.operation_type +var ( + // Mount + // Stability: development + HwTapeDriveOperationTypeMount = HwTapeDriveOperationTypeKey.String("mount") + // Unmount + // Stability: development + HwTapeDriveOperationTypeUnmount = HwTapeDriveOperationTypeKey.String("unmount") + // Clean + // Stability: development + HwTapeDriveOperationTypeClean = HwTapeDriveOperationTypeKey.String("clean") +) + +// Enum values for hw.type +var ( + // Battery + // Stability: development + HwTypeBattery = HwTypeKey.String("battery") + // CPU + // Stability: development + HwTypeCPU = HwTypeKey.String("cpu") + // Disk controller + // Stability: development + HwTypeDiskController = HwTypeKey.String("disk_controller") + // Enclosure + // Stability: development + HwTypeEnclosure = HwTypeKey.String("enclosure") + // Fan + // Stability: development + HwTypeFan = HwTypeKey.String("fan") + // GPU + // Stability: development + HwTypeGpu = HwTypeKey.String("gpu") + // Logical disk + // Stability: development + HwTypeLogicalDisk = HwTypeKey.String("logical_disk") + // Memory + // Stability: development + HwTypeMemory = HwTypeKey.String("memory") + // Network + // Stability: development + HwTypeNetwork = HwTypeKey.String("network") + // Physical disk + // Stability: development + HwTypePhysicalDisk = HwTypeKey.String("physical_disk") + // Power supply + // Stability: development + HwTypePowerSupply = HwTypeKey.String("power_supply") + // Tape drive + // Stability: development + HwTypeTapeDrive = HwTypeKey.String("tape_drive") + // Temperature + // Stability: development + HwTypeTemperature = HwTypeKey.String("temperature") + // Voltage + // Stability: development + HwTypeVoltage = HwTypeKey.String("voltage") +) + +// Namespace: ios +const ( + // IOSAppStateKey is the attribute Key conforming to the "ios.app.state" + // semantic conventions. It represents the this attribute represents the state + // of the application. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: The iOS lifecycle states are defined in the + // [UIApplicationDelegate documentation], and from which the `OS terminology` + // column values are derived. + // + // [UIApplicationDelegate documentation]: https://developer.apple.com/documentation/uikit/uiapplicationdelegate + IOSAppStateKey = attribute.Key("ios.app.state") +) + +// Enum values for ios.app.state +var ( + // The app has become `active`. Associated with UIKit notification + // `applicationDidBecomeActive`. + // + // Stability: development + IOSAppStateActive = IOSAppStateKey.String("active") + // The app is now `inactive`. Associated with UIKit notification + // `applicationWillResignActive`. + // + // Stability: development + IOSAppStateInactive = IOSAppStateKey.String("inactive") + // The app is now in the background. This value is associated with UIKit + // notification `applicationDidEnterBackground`. + // + // Stability: development + IOSAppStateBackground = IOSAppStateKey.String("background") + // The app is now in the foreground. This value is associated with UIKit + // notification `applicationWillEnterForeground`. + // + // Stability: development + IOSAppStateForeground = IOSAppStateKey.String("foreground") + // The app is about to terminate. Associated with UIKit notification + // `applicationWillTerminate`. + // + // Stability: development + IOSAppStateTerminate = IOSAppStateKey.String("terminate") +) + +// Namespace: k8s +const ( + // K8SClusterNameKey is the attribute Key conforming to the "k8s.cluster.name" + // semantic conventions. It represents the name of the cluster. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry-cluster" + K8SClusterNameKey = attribute.Key("k8s.cluster.name") + + // K8SClusterUIDKey is the attribute Key conforming to the "k8s.cluster.uid" + // semantic conventions. It represents a pseudo-ID for the cluster, set to the + // UID of the `kube-system` namespace. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "218fc5a9-a5f1-4b54-aa05-46717d0ab26d" + // Note: K8s doesn't have support for obtaining a cluster ID. If this is ever + // added, we will recommend collecting the `k8s.cluster.uid` through the + // official APIs. In the meantime, we are able to use the `uid` of the + // `kube-system` namespace as a proxy for cluster ID. Read on for the + // rationale. + // + // Every object created in a K8s cluster is assigned a distinct UID. The + // `kube-system` namespace is used by Kubernetes itself and will exist + // for the lifetime of the cluster. Using the `uid` of the `kube-system` + // namespace is a reasonable proxy for the K8s ClusterID as it will only + // change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are + // UUIDs as standardized by + // [ISO/IEC 9834-8 and ITU-T X.667]. + // Which states: + // + // > If generated according to one of the mechanisms defined in Rec. + // > ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be + // > different from all other UUIDs generated before 3603 A.D., or is + // > extremely likely to be different (depending on the mechanism chosen). + // + // Therefore, UIDs between clusters should be extremely unlikely to + // conflict. + // + // [ISO/IEC 9834-8 and ITU-T X.667]: https://www.itu.int/ITU-T/studygroups/com17/oid.html + K8SClusterUIDKey = attribute.Key("k8s.cluster.uid") + + // K8SContainerNameKey is the attribute Key conforming to the + // "k8s.container.name" semantic conventions. It represents the name of the + // Container from Pod specification, must be unique within a Pod. Container + // runtime usually uses different globally unique name (`container.name`). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "redis" + K8SContainerNameKey = attribute.Key("k8s.container.name") + + // K8SContainerRestartCountKey is the attribute Key conforming to the + // "k8s.container.restart_count" semantic conventions. It represents the number + // of times the container was restarted. This attribute can be used to identify + // a particular container (running or stopped) within a container spec. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + K8SContainerRestartCountKey = attribute.Key("k8s.container.restart_count") + + // K8SContainerStatusLastTerminatedReasonKey is the attribute Key conforming to + // the "k8s.container.status.last_terminated_reason" semantic conventions. It + // represents the last terminated reason of the Container. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Evicted", "Error" + K8SContainerStatusLastTerminatedReasonKey = attribute.Key("k8s.container.status.last_terminated_reason") + + // K8SContainerStatusReasonKey is the attribute Key conforming to the + // "k8s.container.status.reason" semantic conventions. It represents the reason + // for the container state. Corresponds to the `reason` field of the: + // [K8s ContainerStateWaiting] or [K8s ContainerStateTerminated]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "ContainerCreating", "CrashLoopBackOff", + // "CreateContainerConfigError", "ErrImagePull", "ImagePullBackOff", + // "OOMKilled", "Completed", "Error", "ContainerCannotRun" + // + // [K8s ContainerStateWaiting]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstatewaiting-v1-core + // [K8s ContainerStateTerminated]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstateterminated-v1-core + K8SContainerStatusReasonKey = attribute.Key("k8s.container.status.reason") + + // K8SContainerStatusStateKey is the attribute Key conforming to the + // "k8s.container.status.state" semantic conventions. It represents the state of + // the container. [K8s ContainerState]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "terminated", "running", "waiting" + // + // [K8s ContainerState]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#containerstate-v1-core + K8SContainerStatusStateKey = attribute.Key("k8s.container.status.state") + + // K8SCronJobNameKey is the attribute Key conforming to the "k8s.cronjob.name" + // semantic conventions. It represents the name of the CronJob. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SCronJobNameKey = attribute.Key("k8s.cronjob.name") + + // K8SCronJobUIDKey is the attribute Key conforming to the "k8s.cronjob.uid" + // semantic conventions. It represents the UID of the CronJob. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SCronJobUIDKey = attribute.Key("k8s.cronjob.uid") + + // K8SDaemonSetNameKey is the attribute Key conforming to the + // "k8s.daemonset.name" semantic conventions. It represents the name of the + // DaemonSet. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SDaemonSetNameKey = attribute.Key("k8s.daemonset.name") + + // K8SDaemonSetUIDKey is the attribute Key conforming to the "k8s.daemonset.uid" + // semantic conventions. It represents the UID of the DaemonSet. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SDaemonSetUIDKey = attribute.Key("k8s.daemonset.uid") + + // K8SDeploymentNameKey is the attribute Key conforming to the + // "k8s.deployment.name" semantic conventions. It represents the name of the + // Deployment. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SDeploymentNameKey = attribute.Key("k8s.deployment.name") + + // K8SDeploymentUIDKey is the attribute Key conforming to the + // "k8s.deployment.uid" semantic conventions. It represents the UID of the + // Deployment. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SDeploymentUIDKey = attribute.Key("k8s.deployment.uid") + + // K8SHPAMetricTypeKey is the attribute Key conforming to the + // "k8s.hpa.metric.type" semantic conventions. It represents the type of metric + // source for the horizontal pod autoscaler. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Resource", "ContainerResource" + // Note: This attribute reflects the `type` field of spec.metrics[] in the HPA. + K8SHPAMetricTypeKey = attribute.Key("k8s.hpa.metric.type") + + // K8SHPANameKey is the attribute Key conforming to the "k8s.hpa.name" semantic + // conventions. It represents the name of the horizontal pod autoscaler. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SHPANameKey = attribute.Key("k8s.hpa.name") + + // K8SHPAScaletargetrefAPIVersionKey is the attribute Key conforming to the + // "k8s.hpa.scaletargetref.api_version" semantic conventions. It represents the + // API version of the target resource to scale for the HorizontalPodAutoscaler. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "apps/v1", "autoscaling/v2" + // Note: This maps to the `apiVersion` field in the `scaleTargetRef` of the HPA + // spec. + K8SHPAScaletargetrefAPIVersionKey = attribute.Key("k8s.hpa.scaletargetref.api_version") + + // K8SHPAScaletargetrefKindKey is the attribute Key conforming to the + // "k8s.hpa.scaletargetref.kind" semantic conventions. It represents the kind of + // the target resource to scale for the HorizontalPodAutoscaler. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Deployment", "StatefulSet" + // Note: This maps to the `kind` field in the `scaleTargetRef` of the HPA spec. + K8SHPAScaletargetrefKindKey = attribute.Key("k8s.hpa.scaletargetref.kind") + + // K8SHPAScaletargetrefNameKey is the attribute Key conforming to the + // "k8s.hpa.scaletargetref.name" semantic conventions. It represents the name of + // the target resource to scale for the HorizontalPodAutoscaler. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-deployment", "my-statefulset" + // Note: This maps to the `name` field in the `scaleTargetRef` of the HPA spec. + K8SHPAScaletargetrefNameKey = attribute.Key("k8s.hpa.scaletargetref.name") + + // K8SHPAUIDKey is the attribute Key conforming to the "k8s.hpa.uid" semantic + // conventions. It represents the UID of the horizontal pod autoscaler. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SHPAUIDKey = attribute.Key("k8s.hpa.uid") + + // K8SHugepageSizeKey is the attribute Key conforming to the "k8s.hugepage.size" + // semantic conventions. It represents the size (identifier) of the K8s huge + // page. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2Mi" + K8SHugepageSizeKey = attribute.Key("k8s.hugepage.size") + + // K8SJobNameKey is the attribute Key conforming to the "k8s.job.name" semantic + // conventions. It represents the name of the Job. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SJobNameKey = attribute.Key("k8s.job.name") + + // K8SJobUIDKey is the attribute Key conforming to the "k8s.job.uid" semantic + // conventions. It represents the UID of the Job. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SJobUIDKey = attribute.Key("k8s.job.uid") + + // K8SNamespaceNameKey is the attribute Key conforming to the + // "k8s.namespace.name" semantic conventions. It represents the name of the + // namespace that the pod is running in. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "default" + K8SNamespaceNameKey = attribute.Key("k8s.namespace.name") + + // K8SNamespacePhaseKey is the attribute Key conforming to the + // "k8s.namespace.phase" semantic conventions. It represents the phase of the + // K8s namespace. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "active", "terminating" + // Note: This attribute aligns with the `phase` field of the + // [K8s NamespaceStatus] + // + // [K8s NamespaceStatus]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#namespacestatus-v1-core + K8SNamespacePhaseKey = attribute.Key("k8s.namespace.phase") + + // K8SNodeConditionStatusKey is the attribute Key conforming to the + // "k8s.node.condition.status" semantic conventions. It represents the status of + // the condition, one of True, False, Unknown. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "true", "false", "unknown" + // Note: This attribute aligns with the `status` field of the + // [NodeCondition] + // + // [NodeCondition]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core + K8SNodeConditionStatusKey = attribute.Key("k8s.node.condition.status") + + // K8SNodeConditionTypeKey is the attribute Key conforming to the + // "k8s.node.condition.type" semantic conventions. It represents the condition + // type of a K8s Node. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Ready", "DiskPressure" + // Note: K8s Node conditions as described + // by [K8s documentation]. + // + // This attribute aligns with the `type` field of the + // [NodeCondition] + // + // The set of possible values is not limited to those listed here. Managed + // Kubernetes environments, + // or custom controllers MAY introduce additional node condition types. + // When this occurs, the exact value as reported by the Kubernetes API SHOULD be + // used. + // + // [K8s documentation]: https://v1-32.docs.kubernetes.io/docs/reference/node/node-status/#condition + // [NodeCondition]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#nodecondition-v1-core + K8SNodeConditionTypeKey = attribute.Key("k8s.node.condition.type") + + // K8SNodeNameKey is the attribute Key conforming to the "k8s.node.name" + // semantic conventions. It represents the name of the Node. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "node-1" + K8SNodeNameKey = attribute.Key("k8s.node.name") + + // K8SNodeUIDKey is the attribute Key conforming to the "k8s.node.uid" semantic + // conventions. It represents the UID of the Node. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2" + K8SNodeUIDKey = attribute.Key("k8s.node.uid") + + // K8SPodNameKey is the attribute Key conforming to the "k8s.pod.name" semantic + // conventions. It represents the name of the Pod. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry-pod-autoconf" + K8SPodNameKey = attribute.Key("k8s.pod.name") + + // K8SPodUIDKey is the attribute Key conforming to the "k8s.pod.uid" semantic + // conventions. It represents the UID of the Pod. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SPodUIDKey = attribute.Key("k8s.pod.uid") + + // K8SReplicaSetNameKey is the attribute Key conforming to the + // "k8s.replicaset.name" semantic conventions. It represents the name of the + // ReplicaSet. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SReplicaSetNameKey = attribute.Key("k8s.replicaset.name") + + // K8SReplicaSetUIDKey is the attribute Key conforming to the + // "k8s.replicaset.uid" semantic conventions. It represents the UID of the + // ReplicaSet. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SReplicaSetUIDKey = attribute.Key("k8s.replicaset.uid") + + // K8SReplicationControllerNameKey is the attribute Key conforming to the + // "k8s.replicationcontroller.name" semantic conventions. It represents the name + // of the replication controller. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SReplicationControllerNameKey = attribute.Key("k8s.replicationcontroller.name") + + // K8SReplicationControllerUIDKey is the attribute Key conforming to the + // "k8s.replicationcontroller.uid" semantic conventions. It represents the UID + // of the replication controller. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SReplicationControllerUIDKey = attribute.Key("k8s.replicationcontroller.uid") + + // K8SResourceQuotaNameKey is the attribute Key conforming to the + // "k8s.resourcequota.name" semantic conventions. It represents the name of the + // resource quota. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SResourceQuotaNameKey = attribute.Key("k8s.resourcequota.name") + + // K8SResourceQuotaResourceNameKey is the attribute Key conforming to the + // "k8s.resourcequota.resource_name" semantic conventions. It represents the + // name of the K8s resource a resource quota defines. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "count/replicationcontrollers" + // Note: The value for this attribute can be either the full + // `count/[.]` string (e.g., count/deployments.apps, + // count/pods), or, for certain core Kubernetes resources, just the resource + // name (e.g., pods, services, configmaps). Both forms are supported by + // Kubernetes for object count quotas. See + // [Kubernetes Resource Quotas documentation] for more details. + // + // [Kubernetes Resource Quotas documentation]: https://kubernetes.io/docs/concepts/policy/resource-quotas/#object-count-quota + K8SResourceQuotaResourceNameKey = attribute.Key("k8s.resourcequota.resource_name") + + // K8SResourceQuotaUIDKey is the attribute Key conforming to the + // "k8s.resourcequota.uid" semantic conventions. It represents the UID of the + // resource quota. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SResourceQuotaUIDKey = attribute.Key("k8s.resourcequota.uid") + + // K8SStatefulSetNameKey is the attribute Key conforming to the + // "k8s.statefulset.name" semantic conventions. It represents the name of the + // StatefulSet. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "opentelemetry" + K8SStatefulSetNameKey = attribute.Key("k8s.statefulset.name") + + // K8SStatefulSetUIDKey is the attribute Key conforming to the + // "k8s.statefulset.uid" semantic conventions. It represents the UID of the + // StatefulSet. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "275ecb36-5aa8-4c2a-9c47-d8bb681b9aff" + K8SStatefulSetUIDKey = attribute.Key("k8s.statefulset.uid") + + // K8SStorageclassNameKey is the attribute Key conforming to the + // "k8s.storageclass.name" semantic conventions. It represents the name of K8s + // [StorageClass] object. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "gold.storageclass.storage.k8s.io" + // + // [StorageClass]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io + K8SStorageclassNameKey = attribute.Key("k8s.storageclass.name") + + // K8SVolumeNameKey is the attribute Key conforming to the "k8s.volume.name" + // semantic conventions. It represents the name of the K8s volume. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "volume0" + K8SVolumeNameKey = attribute.Key("k8s.volume.name") + + // K8SVolumeTypeKey is the attribute Key conforming to the "k8s.volume.type" + // semantic conventions. It represents the type of the K8s volume. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "emptyDir", "persistentVolumeClaim" + K8SVolumeTypeKey = attribute.Key("k8s.volume.type") +) + +// K8SClusterName returns an attribute KeyValue conforming to the +// "k8s.cluster.name" semantic conventions. It represents the name of the +// cluster. +func K8SClusterName(val string) attribute.KeyValue { + return K8SClusterNameKey.String(val) +} + +// K8SClusterUID returns an attribute KeyValue conforming to the +// "k8s.cluster.uid" semantic conventions. It represents a pseudo-ID for the +// cluster, set to the UID of the `kube-system` namespace. +func K8SClusterUID(val string) attribute.KeyValue { + return K8SClusterUIDKey.String(val) +} + +// K8SContainerName returns an attribute KeyValue conforming to the +// "k8s.container.name" semantic conventions. It represents the name of the +// Container from Pod specification, must be unique within a Pod. Container +// runtime usually uses different globally unique name (`container.name`). +func K8SContainerName(val string) attribute.KeyValue { + return K8SContainerNameKey.String(val) +} + +// K8SContainerRestartCount returns an attribute KeyValue conforming to the +// "k8s.container.restart_count" semantic conventions. It represents the number +// of times the container was restarted. This attribute can be used to identify a +// particular container (running or stopped) within a container spec. +func K8SContainerRestartCount(val int) attribute.KeyValue { + return K8SContainerRestartCountKey.Int(val) +} + +// K8SContainerStatusLastTerminatedReason returns an attribute KeyValue +// conforming to the "k8s.container.status.last_terminated_reason" semantic +// conventions. It represents the last terminated reason of the Container. +func K8SContainerStatusLastTerminatedReason(val string) attribute.KeyValue { + return K8SContainerStatusLastTerminatedReasonKey.String(val) +} + +// K8SCronJobAnnotation returns an attribute KeyValue conforming to the +// "k8s.cronjob.annotation" semantic conventions. It represents the cronjob +// annotation placed on the CronJob, the `` being the annotation name, the +// value being the annotation value. +func K8SCronJobAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.cronjob.annotation."+key, val) +} + +// K8SCronJobLabel returns an attribute KeyValue conforming to the +// "k8s.cronjob.label" semantic conventions. It represents the label placed on +// the CronJob, the `` being the label name, the value being the label +// value. +func K8SCronJobLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.cronjob.label."+key, val) +} + +// K8SCronJobName returns an attribute KeyValue conforming to the +// "k8s.cronjob.name" semantic conventions. It represents the name of the +// CronJob. +func K8SCronJobName(val string) attribute.KeyValue { + return K8SCronJobNameKey.String(val) +} + +// K8SCronJobUID returns an attribute KeyValue conforming to the +// "k8s.cronjob.uid" semantic conventions. It represents the UID of the CronJob. +func K8SCronJobUID(val string) attribute.KeyValue { + return K8SCronJobUIDKey.String(val) +} + +// K8SDaemonSetAnnotation returns an attribute KeyValue conforming to the +// "k8s.daemonset.annotation" semantic conventions. It represents the annotation +// placed on the DaemonSet, the `` being the annotation name, the value +// being the annotation value, even if the value is empty. +func K8SDaemonSetAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.daemonset.annotation."+key, val) +} + +// K8SDaemonSetLabel returns an attribute KeyValue conforming to the +// "k8s.daemonset.label" semantic conventions. It represents the label placed on +// the DaemonSet, the `` being the label name, the value being the label +// value, even if the value is empty. +func K8SDaemonSetLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.daemonset.label."+key, val) +} + +// K8SDaemonSetName returns an attribute KeyValue conforming to the +// "k8s.daemonset.name" semantic conventions. It represents the name of the +// DaemonSet. +func K8SDaemonSetName(val string) attribute.KeyValue { + return K8SDaemonSetNameKey.String(val) +} + +// K8SDaemonSetUID returns an attribute KeyValue conforming to the +// "k8s.daemonset.uid" semantic conventions. It represents the UID of the +// DaemonSet. +func K8SDaemonSetUID(val string) attribute.KeyValue { + return K8SDaemonSetUIDKey.String(val) +} + +// K8SDeploymentAnnotation returns an attribute KeyValue conforming to the +// "k8s.deployment.annotation" semantic conventions. It represents the annotation +// placed on the Deployment, the `` being the annotation name, the value +// being the annotation value, even if the value is empty. +func K8SDeploymentAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.deployment.annotation."+key, val) +} + +// K8SDeploymentLabel returns an attribute KeyValue conforming to the +// "k8s.deployment.label" semantic conventions. It represents the label placed on +// the Deployment, the `` being the label name, the value being the label +// value, even if the value is empty. +func K8SDeploymentLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.deployment.label."+key, val) +} + +// K8SDeploymentName returns an attribute KeyValue conforming to the +// "k8s.deployment.name" semantic conventions. It represents the name of the +// Deployment. +func K8SDeploymentName(val string) attribute.KeyValue { + return K8SDeploymentNameKey.String(val) +} + +// K8SDeploymentUID returns an attribute KeyValue conforming to the +// "k8s.deployment.uid" semantic conventions. It represents the UID of the +// Deployment. +func K8SDeploymentUID(val string) attribute.KeyValue { + return K8SDeploymentUIDKey.String(val) +} + +// K8SHPAMetricType returns an attribute KeyValue conforming to the +// "k8s.hpa.metric.type" semantic conventions. It represents the type of metric +// source for the horizontal pod autoscaler. +func K8SHPAMetricType(val string) attribute.KeyValue { + return K8SHPAMetricTypeKey.String(val) +} + +// K8SHPAName returns an attribute KeyValue conforming to the "k8s.hpa.name" +// semantic conventions. It represents the name of the horizontal pod autoscaler. +func K8SHPAName(val string) attribute.KeyValue { + return K8SHPANameKey.String(val) +} + +// K8SHPAScaletargetrefAPIVersion returns an attribute KeyValue conforming to the +// "k8s.hpa.scaletargetref.api_version" semantic conventions. It represents the +// API version of the target resource to scale for the HorizontalPodAutoscaler. +func K8SHPAScaletargetrefAPIVersion(val string) attribute.KeyValue { + return K8SHPAScaletargetrefAPIVersionKey.String(val) +} + +// K8SHPAScaletargetrefKind returns an attribute KeyValue conforming to the +// "k8s.hpa.scaletargetref.kind" semantic conventions. It represents the kind of +// the target resource to scale for the HorizontalPodAutoscaler. +func K8SHPAScaletargetrefKind(val string) attribute.KeyValue { + return K8SHPAScaletargetrefKindKey.String(val) +} + +// K8SHPAScaletargetrefName returns an attribute KeyValue conforming to the +// "k8s.hpa.scaletargetref.name" semantic conventions. It represents the name of +// the target resource to scale for the HorizontalPodAutoscaler. +func K8SHPAScaletargetrefName(val string) attribute.KeyValue { + return K8SHPAScaletargetrefNameKey.String(val) +} + +// K8SHPAUID returns an attribute KeyValue conforming to the "k8s.hpa.uid" +// semantic conventions. It represents the UID of the horizontal pod autoscaler. +func K8SHPAUID(val string) attribute.KeyValue { + return K8SHPAUIDKey.String(val) +} + +// K8SHugepageSize returns an attribute KeyValue conforming to the +// "k8s.hugepage.size" semantic conventions. It represents the size (identifier) +// of the K8s huge page. +func K8SHugepageSize(val string) attribute.KeyValue { + return K8SHugepageSizeKey.String(val) +} + +// K8SJobAnnotation returns an attribute KeyValue conforming to the +// "k8s.job.annotation" semantic conventions. It represents the annotation placed +// on the Job, the `` being the annotation name, the value being the +// annotation value, even if the value is empty. +func K8SJobAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.job.annotation."+key, val) +} + +// K8SJobLabel returns an attribute KeyValue conforming to the "k8s.job.label" +// semantic conventions. It represents the label placed on the Job, the `` +// being the label name, the value being the label value, even if the value is +// empty. +func K8SJobLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.job.label."+key, val) +} + +// K8SJobName returns an attribute KeyValue conforming to the "k8s.job.name" +// semantic conventions. It represents the name of the Job. +func K8SJobName(val string) attribute.KeyValue { + return K8SJobNameKey.String(val) +} + +// K8SJobUID returns an attribute KeyValue conforming to the "k8s.job.uid" +// semantic conventions. It represents the UID of the Job. +func K8SJobUID(val string) attribute.KeyValue { + return K8SJobUIDKey.String(val) +} + +// K8SNamespaceAnnotation returns an attribute KeyValue conforming to the +// "k8s.namespace.annotation" semantic conventions. It represents the annotation +// placed on the Namespace, the `` being the annotation name, the value +// being the annotation value, even if the value is empty. +func K8SNamespaceAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.namespace.annotation."+key, val) +} + +// K8SNamespaceLabel returns an attribute KeyValue conforming to the +// "k8s.namespace.label" semantic conventions. It represents the label placed on +// the Namespace, the `` being the label name, the value being the label +// value, even if the value is empty. +func K8SNamespaceLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.namespace.label."+key, val) +} + +// K8SNamespaceName returns an attribute KeyValue conforming to the +// "k8s.namespace.name" semantic conventions. It represents the name of the +// namespace that the pod is running in. +func K8SNamespaceName(val string) attribute.KeyValue { + return K8SNamespaceNameKey.String(val) +} + +// K8SNodeAnnotation returns an attribute KeyValue conforming to the +// "k8s.node.annotation" semantic conventions. It represents the annotation +// placed on the Node, the `` being the annotation name, the value being the +// annotation value, even if the value is empty. +func K8SNodeAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.node.annotation."+key, val) +} + +// K8SNodeLabel returns an attribute KeyValue conforming to the "k8s.node.label" +// semantic conventions. It represents the label placed on the Node, the `` +// being the label name, the value being the label value, even if the value is +// empty. +func K8SNodeLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.node.label."+key, val) +} + +// K8SNodeName returns an attribute KeyValue conforming to the "k8s.node.name" +// semantic conventions. It represents the name of the Node. +func K8SNodeName(val string) attribute.KeyValue { + return K8SNodeNameKey.String(val) +} + +// K8SNodeUID returns an attribute KeyValue conforming to the "k8s.node.uid" +// semantic conventions. It represents the UID of the Node. +func K8SNodeUID(val string) attribute.KeyValue { + return K8SNodeUIDKey.String(val) +} + +// K8SPodAnnotation returns an attribute KeyValue conforming to the +// "k8s.pod.annotation" semantic conventions. It represents the annotation placed +// on the Pod, the `` being the annotation name, the value being the +// annotation value. +func K8SPodAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.pod.annotation."+key, val) +} + +// K8SPodLabel returns an attribute KeyValue conforming to the "k8s.pod.label" +// semantic conventions. It represents the label placed on the Pod, the `` +// being the label name, the value being the label value. +func K8SPodLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.pod.label."+key, val) +} + +// K8SPodName returns an attribute KeyValue conforming to the "k8s.pod.name" +// semantic conventions. It represents the name of the Pod. +func K8SPodName(val string) attribute.KeyValue { + return K8SPodNameKey.String(val) +} + +// K8SPodUID returns an attribute KeyValue conforming to the "k8s.pod.uid" +// semantic conventions. It represents the UID of the Pod. +func K8SPodUID(val string) attribute.KeyValue { + return K8SPodUIDKey.String(val) +} + +// K8SReplicaSetAnnotation returns an attribute KeyValue conforming to the +// "k8s.replicaset.annotation" semantic conventions. It represents the annotation +// placed on the ReplicaSet, the `` being the annotation name, the value +// being the annotation value, even if the value is empty. +func K8SReplicaSetAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.replicaset.annotation."+key, val) +} + +// K8SReplicaSetLabel returns an attribute KeyValue conforming to the +// "k8s.replicaset.label" semantic conventions. It represents the label placed on +// the ReplicaSet, the `` being the label name, the value being the label +// value, even if the value is empty. +func K8SReplicaSetLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.replicaset.label."+key, val) +} + +// K8SReplicaSetName returns an attribute KeyValue conforming to the +// "k8s.replicaset.name" semantic conventions. It represents the name of the +// ReplicaSet. +func K8SReplicaSetName(val string) attribute.KeyValue { + return K8SReplicaSetNameKey.String(val) +} + +// K8SReplicaSetUID returns an attribute KeyValue conforming to the +// "k8s.replicaset.uid" semantic conventions. It represents the UID of the +// ReplicaSet. +func K8SReplicaSetUID(val string) attribute.KeyValue { + return K8SReplicaSetUIDKey.String(val) +} + +// K8SReplicationControllerName returns an attribute KeyValue conforming to the +// "k8s.replicationcontroller.name" semantic conventions. It represents the name +// of the replication controller. +func K8SReplicationControllerName(val string) attribute.KeyValue { + return K8SReplicationControllerNameKey.String(val) +} + +// K8SReplicationControllerUID returns an attribute KeyValue conforming to the +// "k8s.replicationcontroller.uid" semantic conventions. It represents the UID of +// the replication controller. +func K8SReplicationControllerUID(val string) attribute.KeyValue { + return K8SReplicationControllerUIDKey.String(val) +} + +// K8SResourceQuotaName returns an attribute KeyValue conforming to the +// "k8s.resourcequota.name" semantic conventions. It represents the name of the +// resource quota. +func K8SResourceQuotaName(val string) attribute.KeyValue { + return K8SResourceQuotaNameKey.String(val) +} + +// K8SResourceQuotaResourceName returns an attribute KeyValue conforming to the +// "k8s.resourcequota.resource_name" semantic conventions. It represents the name +// of the K8s resource a resource quota defines. +func K8SResourceQuotaResourceName(val string) attribute.KeyValue { + return K8SResourceQuotaResourceNameKey.String(val) +} + +// K8SResourceQuotaUID returns an attribute KeyValue conforming to the +// "k8s.resourcequota.uid" semantic conventions. It represents the UID of the +// resource quota. +func K8SResourceQuotaUID(val string) attribute.KeyValue { + return K8SResourceQuotaUIDKey.String(val) +} + +// K8SStatefulSetAnnotation returns an attribute KeyValue conforming to the +// "k8s.statefulset.annotation" semantic conventions. It represents the +// annotation placed on the StatefulSet, the `` being the annotation name, +// the value being the annotation value, even if the value is empty. +func K8SStatefulSetAnnotation(key string, val string) attribute.KeyValue { + return attribute.String("k8s.statefulset.annotation."+key, val) +} + +// K8SStatefulSetLabel returns an attribute KeyValue conforming to the +// "k8s.statefulset.label" semantic conventions. It represents the label placed +// on the StatefulSet, the `` being the label name, the value being the +// label value, even if the value is empty. +func K8SStatefulSetLabel(key string, val string) attribute.KeyValue { + return attribute.String("k8s.statefulset.label."+key, val) +} + +// K8SStatefulSetName returns an attribute KeyValue conforming to the +// "k8s.statefulset.name" semantic conventions. It represents the name of the +// StatefulSet. +func K8SStatefulSetName(val string) attribute.KeyValue { + return K8SStatefulSetNameKey.String(val) +} + +// K8SStatefulSetUID returns an attribute KeyValue conforming to the +// "k8s.statefulset.uid" semantic conventions. It represents the UID of the +// StatefulSet. +func K8SStatefulSetUID(val string) attribute.KeyValue { + return K8SStatefulSetUIDKey.String(val) +} + +// K8SStorageclassName returns an attribute KeyValue conforming to the +// "k8s.storageclass.name" semantic conventions. It represents the name of K8s +// [StorageClass] object. +// +// [StorageClass]: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io +func K8SStorageclassName(val string) attribute.KeyValue { + return K8SStorageclassNameKey.String(val) +} + +// K8SVolumeName returns an attribute KeyValue conforming to the +// "k8s.volume.name" semantic conventions. It represents the name of the K8s +// volume. +func K8SVolumeName(val string) attribute.KeyValue { + return K8SVolumeNameKey.String(val) +} + +// Enum values for k8s.container.status.reason +var ( + // The container is being created. + // Stability: development + K8SContainerStatusReasonContainerCreating = K8SContainerStatusReasonKey.String("ContainerCreating") + // The container is in a crash loop back off state. + // Stability: development + K8SContainerStatusReasonCrashLoopBackOff = K8SContainerStatusReasonKey.String("CrashLoopBackOff") + // There was an error creating the container configuration. + // Stability: development + K8SContainerStatusReasonCreateContainerConfigError = K8SContainerStatusReasonKey.String("CreateContainerConfigError") + // There was an error pulling the container image. + // Stability: development + K8SContainerStatusReasonErrImagePull = K8SContainerStatusReasonKey.String("ErrImagePull") + // The container image pull is in back off state. + // Stability: development + K8SContainerStatusReasonImagePullBackOff = K8SContainerStatusReasonKey.String("ImagePullBackOff") + // The container was killed due to out of memory. + // Stability: development + K8SContainerStatusReasonOomKilled = K8SContainerStatusReasonKey.String("OOMKilled") + // The container has completed execution. + // Stability: development + K8SContainerStatusReasonCompleted = K8SContainerStatusReasonKey.String("Completed") + // There was an error with the container. + // Stability: development + K8SContainerStatusReasonError = K8SContainerStatusReasonKey.String("Error") + // The container cannot run. + // Stability: development + K8SContainerStatusReasonContainerCannotRun = K8SContainerStatusReasonKey.String("ContainerCannotRun") +) + +// Enum values for k8s.container.status.state +var ( + // The container has terminated. + // Stability: development + K8SContainerStatusStateTerminated = K8SContainerStatusStateKey.String("terminated") + // The container is running. + // Stability: development + K8SContainerStatusStateRunning = K8SContainerStatusStateKey.String("running") + // The container is waiting. + // Stability: development + K8SContainerStatusStateWaiting = K8SContainerStatusStateKey.String("waiting") +) + +// Enum values for k8s.namespace.phase +var ( + // Active namespace phase as described by [K8s API] + // Stability: development + // + // [K8s API]: https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase + K8SNamespacePhaseActive = K8SNamespacePhaseKey.String("active") + // Terminating namespace phase as described by [K8s API] + // Stability: development + // + // [K8s API]: https://pkg.go.dev/k8s.io/api@v0.31.3/core/v1#NamespacePhase + K8SNamespacePhaseTerminating = K8SNamespacePhaseKey.String("terminating") +) + +// Enum values for k8s.node.condition.status +var ( + // condition_true + // Stability: development + K8SNodeConditionStatusConditionTrue = K8SNodeConditionStatusKey.String("true") + // condition_false + // Stability: development + K8SNodeConditionStatusConditionFalse = K8SNodeConditionStatusKey.String("false") + // condition_unknown + // Stability: development + K8SNodeConditionStatusConditionUnknown = K8SNodeConditionStatusKey.String("unknown") +) + +// Enum values for k8s.node.condition.type +var ( + // The node is healthy and ready to accept pods + // Stability: development + K8SNodeConditionTypeReady = K8SNodeConditionTypeKey.String("Ready") + // Pressure exists on the disk size—that is, if the disk capacity is low + // Stability: development + K8SNodeConditionTypeDiskPressure = K8SNodeConditionTypeKey.String("DiskPressure") + // Pressure exists on the node memory—that is, if the node memory is low + // Stability: development + K8SNodeConditionTypeMemoryPressure = K8SNodeConditionTypeKey.String("MemoryPressure") + // Pressure exists on the processes—that is, if there are too many processes + // on the node + // Stability: development + K8SNodeConditionTypePIDPressure = K8SNodeConditionTypeKey.String("PIDPressure") + // The network for the node is not correctly configured + // Stability: development + K8SNodeConditionTypeNetworkUnavailable = K8SNodeConditionTypeKey.String("NetworkUnavailable") +) + +// Enum values for k8s.volume.type +var ( + // A [persistentVolumeClaim] volume + // Stability: development + // + // [persistentVolumeClaim]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#persistentvolumeclaim + K8SVolumeTypePersistentVolumeClaim = K8SVolumeTypeKey.String("persistentVolumeClaim") + // A [configMap] volume + // Stability: development + // + // [configMap]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#configmap + K8SVolumeTypeConfigMap = K8SVolumeTypeKey.String("configMap") + // A [downwardAPI] volume + // Stability: development + // + // [downwardAPI]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#downwardapi + K8SVolumeTypeDownwardAPI = K8SVolumeTypeKey.String("downwardAPI") + // An [emptyDir] volume + // Stability: development + // + // [emptyDir]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#emptydir + K8SVolumeTypeEmptyDir = K8SVolumeTypeKey.String("emptyDir") + // A [secret] volume + // Stability: development + // + // [secret]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#secret + K8SVolumeTypeSecret = K8SVolumeTypeKey.String("secret") + // A [local] volume + // Stability: development + // + // [local]: https://v1-30.docs.kubernetes.io/docs/concepts/storage/volumes/#local + K8SVolumeTypeLocal = K8SVolumeTypeKey.String("local") +) + +// Namespace: linux +const ( + // LinuxMemorySlabStateKey is the attribute Key conforming to the + // "linux.memory.slab.state" semantic conventions. It represents the Linux Slab + // memory state. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "reclaimable", "unreclaimable" + LinuxMemorySlabStateKey = attribute.Key("linux.memory.slab.state") +) + +// Enum values for linux.memory.slab.state +var ( + // reclaimable + // Stability: development + LinuxMemorySlabStateReclaimable = LinuxMemorySlabStateKey.String("reclaimable") + // unreclaimable + // Stability: development + LinuxMemorySlabStateUnreclaimable = LinuxMemorySlabStateKey.String("unreclaimable") +) + +// Namespace: log +const ( + // LogFileNameKey is the attribute Key conforming to the "log.file.name" + // semantic conventions. It represents the basename of the file. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "audit.log" + LogFileNameKey = attribute.Key("log.file.name") + + // LogFileNameResolvedKey is the attribute Key conforming to the + // "log.file.name_resolved" semantic conventions. It represents the basename of + // the file, with symlinks resolved. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "uuid.log" + LogFileNameResolvedKey = attribute.Key("log.file.name_resolved") + + // LogFilePathKey is the attribute Key conforming to the "log.file.path" + // semantic conventions. It represents the full path to the file. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/var/log/mysql/audit.log" + LogFilePathKey = attribute.Key("log.file.path") + + // LogFilePathResolvedKey is the attribute Key conforming to the + // "log.file.path_resolved" semantic conventions. It represents the full path to + // the file, with symlinks resolved. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/var/lib/docker/uuid.log" + LogFilePathResolvedKey = attribute.Key("log.file.path_resolved") + + // LogIostreamKey is the attribute Key conforming to the "log.iostream" semantic + // conventions. It represents the stream associated with the log. See below for + // a list of well-known values. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + LogIostreamKey = attribute.Key("log.iostream") + + // LogRecordOriginalKey is the attribute Key conforming to the + // "log.record.original" semantic conventions. It represents the complete + // original Log Record. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "77 <86>1 2015-08-06T21:58:59.694Z 192.168.2.133 inactive - - - + // Something happened", "[INFO] 8/3/24 12:34:56 Something happened" + // Note: This value MAY be added when processing a Log Record which was + // originally transmitted as a string or equivalent data type AND the Body field + // of the Log Record does not contain the same value. (e.g. a syslog or a log + // record read from a file.) + LogRecordOriginalKey = attribute.Key("log.record.original") + + // LogRecordUIDKey is the attribute Key conforming to the "log.record.uid" + // semantic conventions. It represents a unique identifier for the Log Record. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "01ARZ3NDEKTSV4RRFFQ69G5FAV" + // Note: If an id is provided, other log records with the same id will be + // considered duplicates and can be removed safely. This means, that two + // distinguishable log records MUST have different values. + // The id MAY be an + // [Universally Unique Lexicographically Sortable Identifier (ULID)], but other + // identifiers (e.g. UUID) may be used as needed. + // + // [Universally Unique Lexicographically Sortable Identifier (ULID)]: https://github.com/ulid/spec + LogRecordUIDKey = attribute.Key("log.record.uid") +) + +// LogFileName returns an attribute KeyValue conforming to the "log.file.name" +// semantic conventions. It represents the basename of the file. +func LogFileName(val string) attribute.KeyValue { + return LogFileNameKey.String(val) +} + +// LogFileNameResolved returns an attribute KeyValue conforming to the +// "log.file.name_resolved" semantic conventions. It represents the basename of +// the file, with symlinks resolved. +func LogFileNameResolved(val string) attribute.KeyValue { + return LogFileNameResolvedKey.String(val) +} + +// LogFilePath returns an attribute KeyValue conforming to the "log.file.path" +// semantic conventions. It represents the full path to the file. +func LogFilePath(val string) attribute.KeyValue { + return LogFilePathKey.String(val) +} + +// LogFilePathResolved returns an attribute KeyValue conforming to the +// "log.file.path_resolved" semantic conventions. It represents the full path to +// the file, with symlinks resolved. +func LogFilePathResolved(val string) attribute.KeyValue { + return LogFilePathResolvedKey.String(val) +} + +// LogRecordOriginal returns an attribute KeyValue conforming to the +// "log.record.original" semantic conventions. It represents the complete +// original Log Record. +func LogRecordOriginal(val string) attribute.KeyValue { + return LogRecordOriginalKey.String(val) +} + +// LogRecordUID returns an attribute KeyValue conforming to the "log.record.uid" +// semantic conventions. It represents a unique identifier for the Log Record. +func LogRecordUID(val string) attribute.KeyValue { + return LogRecordUIDKey.String(val) +} + +// Enum values for log.iostream +var ( + // Logs from stdout stream + // Stability: development + LogIostreamStdout = LogIostreamKey.String("stdout") + // Events from stderr stream + // Stability: development + LogIostreamStderr = LogIostreamKey.String("stderr") +) + +// Namespace: mainframe +const ( + // MainframeLparNameKey is the attribute Key conforming to the + // "mainframe.lpar.name" semantic conventions. It represents the name of the + // logical partition that hosts a systems with a mainframe operating system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "LPAR01" + MainframeLparNameKey = attribute.Key("mainframe.lpar.name") +) + +// MainframeLparName returns an attribute KeyValue conforming to the +// "mainframe.lpar.name" semantic conventions. It represents the name of the +// logical partition that hosts a systems with a mainframe operating system. +func MainframeLparName(val string) attribute.KeyValue { + return MainframeLparNameKey.String(val) +} + +// Namespace: messaging +const ( + // MessagingBatchMessageCountKey is the attribute Key conforming to the + // "messaging.batch.message_count" semantic conventions. It represents the + // number of messages sent, received, or processed in the scope of the batching + // operation. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 0, 1, 2 + // Note: Instrumentations SHOULD NOT set `messaging.batch.message_count` on + // spans that operate with a single message. When a messaging client library + // supports both batch and single-message API for the same operation, + // instrumentations SHOULD use `messaging.batch.message_count` for batching APIs + // and SHOULD NOT use it for single-message APIs. + MessagingBatchMessageCountKey = attribute.Key("messaging.batch.message_count") + + // MessagingClientIDKey is the attribute Key conforming to the + // "messaging.client.id" semantic conventions. It represents a unique identifier + // for the client that consumes or produces a message. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "client-5", "myhost@8742@s8083jm" + MessagingClientIDKey = attribute.Key("messaging.client.id") + + // MessagingConsumerGroupNameKey is the attribute Key conforming to the + // "messaging.consumer.group.name" semantic conventions. It represents the name + // of the consumer group with which a consumer is associated. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-group", "indexer" + // Note: Semantic conventions for individual messaging systems SHOULD document + // whether `messaging.consumer.group.name` is applicable and what it means in + // the context of that system. + MessagingConsumerGroupNameKey = attribute.Key("messaging.consumer.group.name") + + // MessagingDestinationAnonymousKey is the attribute Key conforming to the + // "messaging.destination.anonymous" semantic conventions. It represents a + // boolean that is true if the message destination is anonymous (could be + // unnamed or have auto-generated name). + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + MessagingDestinationAnonymousKey = attribute.Key("messaging.destination.anonymous") + + // MessagingDestinationNameKey is the attribute Key conforming to the + // "messaging.destination.name" semantic conventions. It represents the message + // destination name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "MyQueue", "MyTopic" + // Note: Destination name SHOULD uniquely identify a specific queue, topic or + // other entity within the broker. If + // the broker doesn't have such notion, the destination name SHOULD uniquely + // identify the broker. + MessagingDestinationNameKey = attribute.Key("messaging.destination.name") + + // MessagingDestinationPartitionIDKey is the attribute Key conforming to the + // "messaging.destination.partition.id" semantic conventions. It represents the + // identifier of the partition messages are sent to or received from, unique + // within the `messaging.destination.name`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1 + MessagingDestinationPartitionIDKey = attribute.Key("messaging.destination.partition.id") + + // MessagingDestinationSubscriptionNameKey is the attribute Key conforming to + // the "messaging.destination.subscription.name" semantic conventions. It + // represents the name of the destination subscription from which a message is + // consumed. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "subscription-a" + // Note: Semantic conventions for individual messaging systems SHOULD document + // whether `messaging.destination.subscription.name` is applicable and what it + // means in the context of that system. + MessagingDestinationSubscriptionNameKey = attribute.Key("messaging.destination.subscription.name") + + // MessagingDestinationTemplateKey is the attribute Key conforming to the + // "messaging.destination.template" semantic conventions. It represents the low + // cardinality representation of the messaging destination name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/customers/{customerId}" + // Note: Destination names could be constructed from templates. An example would + // be a destination name involving a user name or product id. Although the + // destination name in this case is of high cardinality, the underlying template + // is of low cardinality and can be effectively used for grouping and + // aggregation. + MessagingDestinationTemplateKey = attribute.Key("messaging.destination.template") + + // MessagingDestinationTemporaryKey is the attribute Key conforming to the + // "messaging.destination.temporary" semantic conventions. It represents a + // boolean that is true if the message destination is temporary and might not + // exist anymore after messages are processed. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + MessagingDestinationTemporaryKey = attribute.Key("messaging.destination.temporary") + + // MessagingEventHubsMessageEnqueuedTimeKey is the attribute Key conforming to + // the "messaging.eventhubs.message.enqueued_time" semantic conventions. It + // represents the UTC epoch seconds at which the message has been accepted and + // stored in the entity. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingEventHubsMessageEnqueuedTimeKey = attribute.Key("messaging.eventhubs.message.enqueued_time") + + // MessagingGCPPubSubMessageAckDeadlineKey is the attribute Key conforming to + // the "messaging.gcp_pubsub.message.ack_deadline" semantic conventions. It + // represents the ack deadline in seconds set for the modify ack deadline + // request. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingGCPPubSubMessageAckDeadlineKey = attribute.Key("messaging.gcp_pubsub.message.ack_deadline") + + // MessagingGCPPubSubMessageAckIDKey is the attribute Key conforming to the + // "messaging.gcp_pubsub.message.ack_id" semantic conventions. It represents the + // ack id for a given message. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: ack_id + MessagingGCPPubSubMessageAckIDKey = attribute.Key("messaging.gcp_pubsub.message.ack_id") + + // MessagingGCPPubSubMessageDeliveryAttemptKey is the attribute Key conforming + // to the "messaging.gcp_pubsub.message.delivery_attempt" semantic conventions. + // It represents the delivery attempt for a given message. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingGCPPubSubMessageDeliveryAttemptKey = attribute.Key("messaging.gcp_pubsub.message.delivery_attempt") + + // MessagingGCPPubSubMessageOrderingKeyKey is the attribute Key conforming to + // the "messaging.gcp_pubsub.message.ordering_key" semantic conventions. It + // represents the ordering key for a given message. If the attribute is not + // present, the message does not have an ordering key. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: ordering_key + MessagingGCPPubSubMessageOrderingKeyKey = attribute.Key("messaging.gcp_pubsub.message.ordering_key") + + // MessagingKafkaMessageKeyKey is the attribute Key conforming to the + // "messaging.kafka.message.key" semantic conventions. It represents the message + // keys in Kafka are used for grouping alike messages to ensure they're + // processed on the same partition. They differ from `messaging.message.id` in + // that they're not unique. If the key is `null`, the attribute MUST NOT be set. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: myKey + // Note: If the key type is not string, it's string representation has to be + // supplied for the attribute. If the key has no unambiguous, canonical string + // form, don't include its value. + MessagingKafkaMessageKeyKey = attribute.Key("messaging.kafka.message.key") + + // MessagingKafkaMessageTombstoneKey is the attribute Key conforming to the + // "messaging.kafka.message.tombstone" semantic conventions. It represents a + // boolean that is true if the message is a tombstone. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + MessagingKafkaMessageTombstoneKey = attribute.Key("messaging.kafka.message.tombstone") + + // MessagingKafkaOffsetKey is the attribute Key conforming to the + // "messaging.kafka.offset" semantic conventions. It represents the offset of a + // record in the corresponding Kafka partition. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingKafkaOffsetKey = attribute.Key("messaging.kafka.offset") + + // MessagingMessageBodySizeKey is the attribute Key conforming to the + // "messaging.message.body.size" semantic conventions. It represents the size of + // the message body in bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Note: This can refer to both the compressed or uncompressed body size. If + // both sizes are known, the uncompressed + // body size should be used. + MessagingMessageBodySizeKey = attribute.Key("messaging.message.body.size") + + // MessagingMessageConversationIDKey is the attribute Key conforming to the + // "messaging.message.conversation_id" semantic conventions. It represents the + // conversation ID identifying the conversation to which the message belongs, + // represented as a string. Sometimes called "Correlation ID". + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: MyConversationId + MessagingMessageConversationIDKey = attribute.Key("messaging.message.conversation_id") + + // MessagingMessageEnvelopeSizeKey is the attribute Key conforming to the + // "messaging.message.envelope.size" semantic conventions. It represents the + // size of the message body and metadata in bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Note: This can refer to both the compressed or uncompressed size. If both + // sizes are known, the uncompressed + // size should be used. + MessagingMessageEnvelopeSizeKey = attribute.Key("messaging.message.envelope.size") + + // MessagingMessageIDKey is the attribute Key conforming to the + // "messaging.message.id" semantic conventions. It represents a value used by + // the messaging system as an identifier for the message, represented as a + // string. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 452a7c7c7c7048c2f887f61572b18fc2 + MessagingMessageIDKey = attribute.Key("messaging.message.id") + + // MessagingOperationNameKey is the attribute Key conforming to the + // "messaging.operation.name" semantic conventions. It represents the + // system-specific name of the messaging operation. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "ack", "nack", "send" + MessagingOperationNameKey = attribute.Key("messaging.operation.name") + + // MessagingOperationTypeKey is the attribute Key conforming to the + // "messaging.operation.type" semantic conventions. It represents a string + // identifying the type of the messaging operation. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: If a custom value is used, it MUST be of low cardinality. + MessagingOperationTypeKey = attribute.Key("messaging.operation.type") + + // MessagingRabbitMQDestinationRoutingKeyKey is the attribute Key conforming to + // the "messaging.rabbitmq.destination.routing_key" semantic conventions. It + // represents the rabbitMQ message routing key. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: myKey + MessagingRabbitMQDestinationRoutingKeyKey = attribute.Key("messaging.rabbitmq.destination.routing_key") + + // MessagingRabbitMQMessageDeliveryTagKey is the attribute Key conforming to the + // "messaging.rabbitmq.message.delivery_tag" semantic conventions. It represents + // the rabbitMQ message delivery tag. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingRabbitMQMessageDeliveryTagKey = attribute.Key("messaging.rabbitmq.message.delivery_tag") + + // MessagingRocketMQConsumptionModelKey is the attribute Key conforming to the + // "messaging.rocketmq.consumption_model" semantic conventions. It represents + // the model of message consumption. This only applies to consumer spans. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + MessagingRocketMQConsumptionModelKey = attribute.Key("messaging.rocketmq.consumption_model") + + // MessagingRocketMQMessageDelayTimeLevelKey is the attribute Key conforming to + // the "messaging.rocketmq.message.delay_time_level" semantic conventions. It + // represents the delay time level for delay message, which determines the + // message delay time. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingRocketMQMessageDelayTimeLevelKey = attribute.Key("messaging.rocketmq.message.delay_time_level") + + // MessagingRocketMQMessageDeliveryTimestampKey is the attribute Key conforming + // to the "messaging.rocketmq.message.delivery_timestamp" semantic conventions. + // It represents the timestamp in milliseconds that the delay message is + // expected to be delivered to consumer. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingRocketMQMessageDeliveryTimestampKey = attribute.Key("messaging.rocketmq.message.delivery_timestamp") + + // MessagingRocketMQMessageGroupKey is the attribute Key conforming to the + // "messaging.rocketmq.message.group" semantic conventions. It represents the it + // is essential for FIFO message. Messages that belong to the same message group + // are always processed one by one within the same consumer group. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: myMessageGroup + MessagingRocketMQMessageGroupKey = attribute.Key("messaging.rocketmq.message.group") + + // MessagingRocketMQMessageKeysKey is the attribute Key conforming to the + // "messaging.rocketmq.message.keys" semantic conventions. It represents the + // key(s) of message, another way to mark message besides message id. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "keyA", "keyB" + MessagingRocketMQMessageKeysKey = attribute.Key("messaging.rocketmq.message.keys") + + // MessagingRocketMQMessageTagKey is the attribute Key conforming to the + // "messaging.rocketmq.message.tag" semantic conventions. It represents the + // secondary classifier of message besides topic. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: tagA + MessagingRocketMQMessageTagKey = attribute.Key("messaging.rocketmq.message.tag") + + // MessagingRocketMQMessageTypeKey is the attribute Key conforming to the + // "messaging.rocketmq.message.type" semantic conventions. It represents the + // type of message. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + MessagingRocketMQMessageTypeKey = attribute.Key("messaging.rocketmq.message.type") + + // MessagingRocketMQNamespaceKey is the attribute Key conforming to the + // "messaging.rocketmq.namespace" semantic conventions. It represents the + // namespace of RocketMQ resources, resources in different namespaces are + // individual. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: myNamespace + MessagingRocketMQNamespaceKey = attribute.Key("messaging.rocketmq.namespace") + + // MessagingServiceBusDispositionStatusKey is the attribute Key conforming to + // the "messaging.servicebus.disposition_status" semantic conventions. It + // represents the describes the [settlement type]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [settlement type]: https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock + MessagingServiceBusDispositionStatusKey = attribute.Key("messaging.servicebus.disposition_status") + + // MessagingServiceBusMessageDeliveryCountKey is the attribute Key conforming to + // the "messaging.servicebus.message.delivery_count" semantic conventions. It + // represents the number of deliveries that have been attempted for this + // message. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingServiceBusMessageDeliveryCountKey = attribute.Key("messaging.servicebus.message.delivery_count") + + // MessagingServiceBusMessageEnqueuedTimeKey is the attribute Key conforming to + // the "messaging.servicebus.message.enqueued_time" semantic conventions. It + // represents the UTC epoch seconds at which the message has been accepted and + // stored in the entity. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + MessagingServiceBusMessageEnqueuedTimeKey = attribute.Key("messaging.servicebus.message.enqueued_time") + + // MessagingSystemKey is the attribute Key conforming to the "messaging.system" + // semantic conventions. It represents the messaging system as identified by the + // client instrumentation. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: The actual messaging system may differ from the one known by the + // client. For example, when using Kafka client libraries to communicate with + // Azure Event Hubs, the `messaging.system` is set to `kafka` based on the + // instrumentation's best knowledge. + MessagingSystemKey = attribute.Key("messaging.system") +) + +// MessagingBatchMessageCount returns an attribute KeyValue conforming to the +// "messaging.batch.message_count" semantic conventions. It represents the number +// of messages sent, received, or processed in the scope of the batching +// operation. +func MessagingBatchMessageCount(val int) attribute.KeyValue { + return MessagingBatchMessageCountKey.Int(val) +} + +// MessagingClientID returns an attribute KeyValue conforming to the +// "messaging.client.id" semantic conventions. It represents a unique identifier +// for the client that consumes or produces a message. +func MessagingClientID(val string) attribute.KeyValue { + return MessagingClientIDKey.String(val) +} + +// MessagingConsumerGroupName returns an attribute KeyValue conforming to the +// "messaging.consumer.group.name" semantic conventions. It represents the name +// of the consumer group with which a consumer is associated. +func MessagingConsumerGroupName(val string) attribute.KeyValue { + return MessagingConsumerGroupNameKey.String(val) +} + +// MessagingDestinationAnonymous returns an attribute KeyValue conforming to the +// "messaging.destination.anonymous" semantic conventions. It represents a +// boolean that is true if the message destination is anonymous (could be unnamed +// or have auto-generated name). +func MessagingDestinationAnonymous(val bool) attribute.KeyValue { + return MessagingDestinationAnonymousKey.Bool(val) +} + +// MessagingDestinationName returns an attribute KeyValue conforming to the +// "messaging.destination.name" semantic conventions. It represents the message +// destination name. +func MessagingDestinationName(val string) attribute.KeyValue { + return MessagingDestinationNameKey.String(val) +} + +// MessagingDestinationPartitionID returns an attribute KeyValue conforming to +// the "messaging.destination.partition.id" semantic conventions. It represents +// the identifier of the partition messages are sent to or received from, unique +// within the `messaging.destination.name`. +func MessagingDestinationPartitionID(val string) attribute.KeyValue { + return MessagingDestinationPartitionIDKey.String(val) +} + +// MessagingDestinationSubscriptionName returns an attribute KeyValue conforming +// to the "messaging.destination.subscription.name" semantic conventions. It +// represents the name of the destination subscription from which a message is +// consumed. +func MessagingDestinationSubscriptionName(val string) attribute.KeyValue { + return MessagingDestinationSubscriptionNameKey.String(val) +} + +// MessagingDestinationTemplate returns an attribute KeyValue conforming to the +// "messaging.destination.template" semantic conventions. It represents the low +// cardinality representation of the messaging destination name. +func MessagingDestinationTemplate(val string) attribute.KeyValue { + return MessagingDestinationTemplateKey.String(val) +} + +// MessagingDestinationTemporary returns an attribute KeyValue conforming to the +// "messaging.destination.temporary" semantic conventions. It represents a +// boolean that is true if the message destination is temporary and might not +// exist anymore after messages are processed. +func MessagingDestinationTemporary(val bool) attribute.KeyValue { + return MessagingDestinationTemporaryKey.Bool(val) +} + +// MessagingEventHubsMessageEnqueuedTime returns an attribute KeyValue conforming +// to the "messaging.eventhubs.message.enqueued_time" semantic conventions. It +// represents the UTC epoch seconds at which the message has been accepted and +// stored in the entity. +func MessagingEventHubsMessageEnqueuedTime(val int) attribute.KeyValue { + return MessagingEventHubsMessageEnqueuedTimeKey.Int(val) +} + +// MessagingGCPPubSubMessageAckDeadline returns an attribute KeyValue conforming +// to the "messaging.gcp_pubsub.message.ack_deadline" semantic conventions. It +// represents the ack deadline in seconds set for the modify ack deadline +// request. +func MessagingGCPPubSubMessageAckDeadline(val int) attribute.KeyValue { + return MessagingGCPPubSubMessageAckDeadlineKey.Int(val) +} + +// MessagingGCPPubSubMessageAckID returns an attribute KeyValue conforming to the +// "messaging.gcp_pubsub.message.ack_id" semantic conventions. It represents the +// ack id for a given message. +func MessagingGCPPubSubMessageAckID(val string) attribute.KeyValue { + return MessagingGCPPubSubMessageAckIDKey.String(val) +} + +// MessagingGCPPubSubMessageDeliveryAttempt returns an attribute KeyValue +// conforming to the "messaging.gcp_pubsub.message.delivery_attempt" semantic +// conventions. It represents the delivery attempt for a given message. +func MessagingGCPPubSubMessageDeliveryAttempt(val int) attribute.KeyValue { + return MessagingGCPPubSubMessageDeliveryAttemptKey.Int(val) +} + +// MessagingGCPPubSubMessageOrderingKey returns an attribute KeyValue conforming +// to the "messaging.gcp_pubsub.message.ordering_key" semantic conventions. It +// represents the ordering key for a given message. If the attribute is not +// present, the message does not have an ordering key. +func MessagingGCPPubSubMessageOrderingKey(val string) attribute.KeyValue { + return MessagingGCPPubSubMessageOrderingKeyKey.String(val) +} + +// MessagingKafkaMessageKey returns an attribute KeyValue conforming to the +// "messaging.kafka.message.key" semantic conventions. It represents the message +// keys in Kafka are used for grouping alike messages to ensure they're processed +// on the same partition. They differ from `messaging.message.id` in that they're +// not unique. If the key is `null`, the attribute MUST NOT be set. +func MessagingKafkaMessageKey(val string) attribute.KeyValue { + return MessagingKafkaMessageKeyKey.String(val) +} + +// MessagingKafkaMessageTombstone returns an attribute KeyValue conforming to the +// "messaging.kafka.message.tombstone" semantic conventions. It represents a +// boolean that is true if the message is a tombstone. +func MessagingKafkaMessageTombstone(val bool) attribute.KeyValue { + return MessagingKafkaMessageTombstoneKey.Bool(val) +} + +// MessagingKafkaOffset returns an attribute KeyValue conforming to the +// "messaging.kafka.offset" semantic conventions. It represents the offset of a +// record in the corresponding Kafka partition. +func MessagingKafkaOffset(val int) attribute.KeyValue { + return MessagingKafkaOffsetKey.Int(val) +} + +// MessagingMessageBodySize returns an attribute KeyValue conforming to the +// "messaging.message.body.size" semantic conventions. It represents the size of +// the message body in bytes. +func MessagingMessageBodySize(val int) attribute.KeyValue { + return MessagingMessageBodySizeKey.Int(val) +} + +// MessagingMessageConversationID returns an attribute KeyValue conforming to the +// "messaging.message.conversation_id" semantic conventions. It represents the +// conversation ID identifying the conversation to which the message belongs, +// represented as a string. Sometimes called "Correlation ID". +func MessagingMessageConversationID(val string) attribute.KeyValue { + return MessagingMessageConversationIDKey.String(val) +} + +// MessagingMessageEnvelopeSize returns an attribute KeyValue conforming to the +// "messaging.message.envelope.size" semantic conventions. It represents the size +// of the message body and metadata in bytes. +func MessagingMessageEnvelopeSize(val int) attribute.KeyValue { + return MessagingMessageEnvelopeSizeKey.Int(val) +} + +// MessagingMessageID returns an attribute KeyValue conforming to the +// "messaging.message.id" semantic conventions. It represents a value used by the +// messaging system as an identifier for the message, represented as a string. +func MessagingMessageID(val string) attribute.KeyValue { + return MessagingMessageIDKey.String(val) +} + +// MessagingOperationName returns an attribute KeyValue conforming to the +// "messaging.operation.name" semantic conventions. It represents the +// system-specific name of the messaging operation. +func MessagingOperationName(val string) attribute.KeyValue { + return MessagingOperationNameKey.String(val) +} + +// MessagingRabbitMQDestinationRoutingKey returns an attribute KeyValue +// conforming to the "messaging.rabbitmq.destination.routing_key" semantic +// conventions. It represents the rabbitMQ message routing key. +func MessagingRabbitMQDestinationRoutingKey(val string) attribute.KeyValue { + return MessagingRabbitMQDestinationRoutingKeyKey.String(val) +} + +// MessagingRabbitMQMessageDeliveryTag returns an attribute KeyValue conforming +// to the "messaging.rabbitmq.message.delivery_tag" semantic conventions. It +// represents the rabbitMQ message delivery tag. +func MessagingRabbitMQMessageDeliveryTag(val int) attribute.KeyValue { + return MessagingRabbitMQMessageDeliveryTagKey.Int(val) +} + +// MessagingRocketMQMessageDelayTimeLevel returns an attribute KeyValue +// conforming to the "messaging.rocketmq.message.delay_time_level" semantic +// conventions. It represents the delay time level for delay message, which +// determines the message delay time. +func MessagingRocketMQMessageDelayTimeLevel(val int) attribute.KeyValue { + return MessagingRocketMQMessageDelayTimeLevelKey.Int(val) +} + +// MessagingRocketMQMessageDeliveryTimestamp returns an attribute KeyValue +// conforming to the "messaging.rocketmq.message.delivery_timestamp" semantic +// conventions. It represents the timestamp in milliseconds that the delay +// message is expected to be delivered to consumer. +func MessagingRocketMQMessageDeliveryTimestamp(val int) attribute.KeyValue { + return MessagingRocketMQMessageDeliveryTimestampKey.Int(val) +} + +// MessagingRocketMQMessageGroup returns an attribute KeyValue conforming to the +// "messaging.rocketmq.message.group" semantic conventions. It represents the it +// is essential for FIFO message. Messages that belong to the same message group +// are always processed one by one within the same consumer group. +func MessagingRocketMQMessageGroup(val string) attribute.KeyValue { + return MessagingRocketMQMessageGroupKey.String(val) +} + +// MessagingRocketMQMessageKeys returns an attribute KeyValue conforming to the +// "messaging.rocketmq.message.keys" semantic conventions. It represents the +// key(s) of message, another way to mark message besides message id. +func MessagingRocketMQMessageKeys(val ...string) attribute.KeyValue { + return MessagingRocketMQMessageKeysKey.StringSlice(val) +} + +// MessagingRocketMQMessageTag returns an attribute KeyValue conforming to the +// "messaging.rocketmq.message.tag" semantic conventions. It represents the +// secondary classifier of message besides topic. +func MessagingRocketMQMessageTag(val string) attribute.KeyValue { + return MessagingRocketMQMessageTagKey.String(val) +} + +// MessagingRocketMQNamespace returns an attribute KeyValue conforming to the +// "messaging.rocketmq.namespace" semantic conventions. It represents the +// namespace of RocketMQ resources, resources in different namespaces are +// individual. +func MessagingRocketMQNamespace(val string) attribute.KeyValue { + return MessagingRocketMQNamespaceKey.String(val) +} + +// MessagingServiceBusMessageDeliveryCount returns an attribute KeyValue +// conforming to the "messaging.servicebus.message.delivery_count" semantic +// conventions. It represents the number of deliveries that have been attempted +// for this message. +func MessagingServiceBusMessageDeliveryCount(val int) attribute.KeyValue { + return MessagingServiceBusMessageDeliveryCountKey.Int(val) +} + +// MessagingServiceBusMessageEnqueuedTime returns an attribute KeyValue +// conforming to the "messaging.servicebus.message.enqueued_time" semantic +// conventions. It represents the UTC epoch seconds at which the message has been +// accepted and stored in the entity. +func MessagingServiceBusMessageEnqueuedTime(val int) attribute.KeyValue { + return MessagingServiceBusMessageEnqueuedTimeKey.Int(val) +} + +// Enum values for messaging.operation.type +var ( + // A message is created. "Create" spans always refer to a single message and are + // used to provide a unique creation context for messages in batch sending + // scenarios. + // + // Stability: development + MessagingOperationTypeCreate = MessagingOperationTypeKey.String("create") + // One or more messages are provided for sending to an intermediary. If a single + // message is sent, the context of the "Send" span can be used as the creation + // context and no "Create" span needs to be created. + // + // Stability: development + MessagingOperationTypeSend = MessagingOperationTypeKey.String("send") + // One or more messages are requested by a consumer. This operation refers to + // pull-based scenarios, where consumers explicitly call methods of messaging + // SDKs to receive messages. + // + // Stability: development + MessagingOperationTypeReceive = MessagingOperationTypeKey.String("receive") + // One or more messages are processed by a consumer. + // + // Stability: development + MessagingOperationTypeProcess = MessagingOperationTypeKey.String("process") + // One or more messages are settled. + // + // Stability: development + MessagingOperationTypeSettle = MessagingOperationTypeKey.String("settle") +) + +// Enum values for messaging.rocketmq.consumption_model +var ( + // Clustering consumption model + // Stability: development + MessagingRocketMQConsumptionModelClustering = MessagingRocketMQConsumptionModelKey.String("clustering") + // Broadcasting consumption model + // Stability: development + MessagingRocketMQConsumptionModelBroadcasting = MessagingRocketMQConsumptionModelKey.String("broadcasting") +) + +// Enum values for messaging.rocketmq.message.type +var ( + // Normal message + // Stability: development + MessagingRocketMQMessageTypeNormal = MessagingRocketMQMessageTypeKey.String("normal") + // FIFO message + // Stability: development + MessagingRocketMQMessageTypeFifo = MessagingRocketMQMessageTypeKey.String("fifo") + // Delay message + // Stability: development + MessagingRocketMQMessageTypeDelay = MessagingRocketMQMessageTypeKey.String("delay") + // Transaction message + // Stability: development + MessagingRocketMQMessageTypeTransaction = MessagingRocketMQMessageTypeKey.String("transaction") +) + +// Enum values for messaging.servicebus.disposition_status +var ( + // Message is completed + // Stability: development + MessagingServiceBusDispositionStatusComplete = MessagingServiceBusDispositionStatusKey.String("complete") + // Message is abandoned + // Stability: development + MessagingServiceBusDispositionStatusAbandon = MessagingServiceBusDispositionStatusKey.String("abandon") + // Message is sent to dead letter queue + // Stability: development + MessagingServiceBusDispositionStatusDeadLetter = MessagingServiceBusDispositionStatusKey.String("dead_letter") + // Message is deferred + // Stability: development + MessagingServiceBusDispositionStatusDefer = MessagingServiceBusDispositionStatusKey.String("defer") +) + +// Enum values for messaging.system +var ( + // Apache ActiveMQ + // Stability: development + MessagingSystemActiveMQ = MessagingSystemKey.String("activemq") + // Amazon Simple Notification Service (SNS) + // Stability: development + MessagingSystemAWSSNS = MessagingSystemKey.String("aws.sns") + // Amazon Simple Queue Service (SQS) + // Stability: development + MessagingSystemAWSSQS = MessagingSystemKey.String("aws_sqs") + // Azure Event Grid + // Stability: development + MessagingSystemEventGrid = MessagingSystemKey.String("eventgrid") + // Azure Event Hubs + // Stability: development + MessagingSystemEventHubs = MessagingSystemKey.String("eventhubs") + // Azure Service Bus + // Stability: development + MessagingSystemServiceBus = MessagingSystemKey.String("servicebus") + // Google Cloud Pub/Sub + // Stability: development + MessagingSystemGCPPubSub = MessagingSystemKey.String("gcp_pubsub") + // Java Message Service + // Stability: development + MessagingSystemJMS = MessagingSystemKey.String("jms") + // Apache Kafka + // Stability: development + MessagingSystemKafka = MessagingSystemKey.String("kafka") + // RabbitMQ + // Stability: development + MessagingSystemRabbitMQ = MessagingSystemKey.String("rabbitmq") + // Apache RocketMQ + // Stability: development + MessagingSystemRocketMQ = MessagingSystemKey.String("rocketmq") + // Apache Pulsar + // Stability: development + MessagingSystemPulsar = MessagingSystemKey.String("pulsar") +) + +// Namespace: network +const ( + // NetworkCarrierICCKey is the attribute Key conforming to the + // "network.carrier.icc" semantic conventions. It represents the ISO 3166-1 + // alpha-2 2-character country code associated with the mobile carrier network. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: DE + NetworkCarrierICCKey = attribute.Key("network.carrier.icc") + + // NetworkCarrierMCCKey is the attribute Key conforming to the + // "network.carrier.mcc" semantic conventions. It represents the mobile carrier + // country code. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 310 + NetworkCarrierMCCKey = attribute.Key("network.carrier.mcc") + + // NetworkCarrierMNCKey is the attribute Key conforming to the + // "network.carrier.mnc" semantic conventions. It represents the mobile carrier + // network code. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 001 + NetworkCarrierMNCKey = attribute.Key("network.carrier.mnc") + + // NetworkCarrierNameKey is the attribute Key conforming to the + // "network.carrier.name" semantic conventions. It represents the name of the + // mobile carrier. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: sprint + NetworkCarrierNameKey = attribute.Key("network.carrier.name") + + // NetworkConnectionStateKey is the attribute Key conforming to the + // "network.connection.state" semantic conventions. It represents the state of + // network connection. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "close_wait" + // Note: Connection states are defined as part of the [rfc9293] + // + // [rfc9293]: https://datatracker.ietf.org/doc/html/rfc9293#section-3.3.2 + NetworkConnectionStateKey = attribute.Key("network.connection.state") + + // NetworkConnectionSubtypeKey is the attribute Key conforming to the + // "network.connection.subtype" semantic conventions. It represents the this + // describes more details regarding the connection.type. It may be the type of + // cell technology connection, but it could be used for describing details about + // a wifi connection. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: LTE + NetworkConnectionSubtypeKey = attribute.Key("network.connection.subtype") + + // NetworkConnectionTypeKey is the attribute Key conforming to the + // "network.connection.type" semantic conventions. It represents the internet + // connection type. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: wifi + NetworkConnectionTypeKey = attribute.Key("network.connection.type") + + // NetworkInterfaceNameKey is the attribute Key conforming to the + // "network.interface.name" semantic conventions. It represents the network + // interface name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "lo", "eth0" + NetworkInterfaceNameKey = attribute.Key("network.interface.name") + + // NetworkIODirectionKey is the attribute Key conforming to the + // "network.io.direction" semantic conventions. It represents the network IO + // operation direction. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "transmit" + NetworkIODirectionKey = attribute.Key("network.io.direction") + + // NetworkLocalAddressKey is the attribute Key conforming to the + // "network.local.address" semantic conventions. It represents the local address + // of the network connection - IP address or Unix domain socket name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "10.1.2.80", "/tmp/my.sock" + NetworkLocalAddressKey = attribute.Key("network.local.address") + + // NetworkLocalPortKey is the attribute Key conforming to the + // "network.local.port" semantic conventions. It represents the local port + // number of the network connection. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: 65123 + NetworkLocalPortKey = attribute.Key("network.local.port") + + // NetworkPeerAddressKey is the attribute Key conforming to the + // "network.peer.address" semantic conventions. It represents the peer address + // of the network connection - IP address or Unix domain socket name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "10.1.2.80", "/tmp/my.sock" + NetworkPeerAddressKey = attribute.Key("network.peer.address") + + // NetworkPeerPortKey is the attribute Key conforming to the "network.peer.port" + // semantic conventions. It represents the peer port number of the network + // connection. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: 65123 + NetworkPeerPortKey = attribute.Key("network.peer.port") + + // NetworkProtocolNameKey is the attribute Key conforming to the + // "network.protocol.name" semantic conventions. It represents the + // [OSI application layer] or non-OSI equivalent. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "amqp", "http", "mqtt" + // Note: The value SHOULD be normalized to lowercase. + // + // [OSI application layer]: https://wikipedia.org/wiki/Application_layer + NetworkProtocolNameKey = attribute.Key("network.protocol.name") + + // NetworkProtocolVersionKey is the attribute Key conforming to the + // "network.protocol.version" semantic conventions. It represents the actual + // version of the protocol used for network communication. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "1.1", "2" + // Note: If protocol version is subject to negotiation (for example using [ALPN] + // ), this attribute SHOULD be set to the negotiated version. If the actual + // protocol version is not known, this attribute SHOULD NOT be set. + // + // [ALPN]: https://www.rfc-editor.org/rfc/rfc7301.html + NetworkProtocolVersionKey = attribute.Key("network.protocol.version") + + // NetworkTransportKey is the attribute Key conforming to the + // "network.transport" semantic conventions. It represents the + // [OSI transport layer] or [inter-process communication method]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "tcp", "udp" + // Note: The value SHOULD be normalized to lowercase. + // + // Consider always setting the transport when setting a port number, since + // a port number is ambiguous without knowing the transport. For example + // different processes could be listening on TCP port 12345 and UDP port 12345. + // + // [OSI transport layer]: https://wikipedia.org/wiki/Transport_layer + // [inter-process communication method]: https://wikipedia.org/wiki/Inter-process_communication + NetworkTransportKey = attribute.Key("network.transport") + + // NetworkTypeKey is the attribute Key conforming to the "network.type" semantic + // conventions. It represents the [OSI network layer] or non-OSI equivalent. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "ipv4", "ipv6" + // Note: The value SHOULD be normalized to lowercase. + // + // [OSI network layer]: https://wikipedia.org/wiki/Network_layer + NetworkTypeKey = attribute.Key("network.type") +) + +// NetworkCarrierICC returns an attribute KeyValue conforming to the +// "network.carrier.icc" semantic conventions. It represents the ISO 3166-1 +// alpha-2 2-character country code associated with the mobile carrier network. +func NetworkCarrierICC(val string) attribute.KeyValue { + return NetworkCarrierICCKey.String(val) +} + +// NetworkCarrierMCC returns an attribute KeyValue conforming to the +// "network.carrier.mcc" semantic conventions. It represents the mobile carrier +// country code. +func NetworkCarrierMCC(val string) attribute.KeyValue { + return NetworkCarrierMCCKey.String(val) +} + +// NetworkCarrierMNC returns an attribute KeyValue conforming to the +// "network.carrier.mnc" semantic conventions. It represents the mobile carrier +// network code. +func NetworkCarrierMNC(val string) attribute.KeyValue { + return NetworkCarrierMNCKey.String(val) +} + +// NetworkCarrierName returns an attribute KeyValue conforming to the +// "network.carrier.name" semantic conventions. It represents the name of the +// mobile carrier. +func NetworkCarrierName(val string) attribute.KeyValue { + return NetworkCarrierNameKey.String(val) +} + +// NetworkInterfaceName returns an attribute KeyValue conforming to the +// "network.interface.name" semantic conventions. It represents the network +// interface name. +func NetworkInterfaceName(val string) attribute.KeyValue { + return NetworkInterfaceNameKey.String(val) +} + +// NetworkLocalAddress returns an attribute KeyValue conforming to the +// "network.local.address" semantic conventions. It represents the local address +// of the network connection - IP address or Unix domain socket name. +func NetworkLocalAddress(val string) attribute.KeyValue { + return NetworkLocalAddressKey.String(val) +} + +// NetworkLocalPort returns an attribute KeyValue conforming to the +// "network.local.port" semantic conventions. It represents the local port number +// of the network connection. +func NetworkLocalPort(val int) attribute.KeyValue { + return NetworkLocalPortKey.Int(val) +} + +// NetworkPeerAddress returns an attribute KeyValue conforming to the +// "network.peer.address" semantic conventions. It represents the peer address of +// the network connection - IP address or Unix domain socket name. +func NetworkPeerAddress(val string) attribute.KeyValue { + return NetworkPeerAddressKey.String(val) +} + +// NetworkPeerPort returns an attribute KeyValue conforming to the +// "network.peer.port" semantic conventions. It represents the peer port number +// of the network connection. +func NetworkPeerPort(val int) attribute.KeyValue { + return NetworkPeerPortKey.Int(val) +} + +// NetworkProtocolName returns an attribute KeyValue conforming to the +// "network.protocol.name" semantic conventions. It represents the +// [OSI application layer] or non-OSI equivalent. +// +// [OSI application layer]: https://wikipedia.org/wiki/Application_layer +func NetworkProtocolName(val string) attribute.KeyValue { + return NetworkProtocolNameKey.String(val) +} + +// NetworkProtocolVersion returns an attribute KeyValue conforming to the +// "network.protocol.version" semantic conventions. It represents the actual +// version of the protocol used for network communication. +func NetworkProtocolVersion(val string) attribute.KeyValue { + return NetworkProtocolVersionKey.String(val) +} + +// Enum values for network.connection.state +var ( + // closed + // Stability: development + NetworkConnectionStateClosed = NetworkConnectionStateKey.String("closed") + // close_wait + // Stability: development + NetworkConnectionStateCloseWait = NetworkConnectionStateKey.String("close_wait") + // closing + // Stability: development + NetworkConnectionStateClosing = NetworkConnectionStateKey.String("closing") + // established + // Stability: development + NetworkConnectionStateEstablished = NetworkConnectionStateKey.String("established") + // fin_wait_1 + // Stability: development + NetworkConnectionStateFinWait1 = NetworkConnectionStateKey.String("fin_wait_1") + // fin_wait_2 + // Stability: development + NetworkConnectionStateFinWait2 = NetworkConnectionStateKey.String("fin_wait_2") + // last_ack + // Stability: development + NetworkConnectionStateLastAck = NetworkConnectionStateKey.String("last_ack") + // listen + // Stability: development + NetworkConnectionStateListen = NetworkConnectionStateKey.String("listen") + // syn_received + // Stability: development + NetworkConnectionStateSynReceived = NetworkConnectionStateKey.String("syn_received") + // syn_sent + // Stability: development + NetworkConnectionStateSynSent = NetworkConnectionStateKey.String("syn_sent") + // time_wait + // Stability: development + NetworkConnectionStateTimeWait = NetworkConnectionStateKey.String("time_wait") +) + +// Enum values for network.connection.subtype +var ( + // GPRS + // Stability: development + NetworkConnectionSubtypeGprs = NetworkConnectionSubtypeKey.String("gprs") + // EDGE + // Stability: development + NetworkConnectionSubtypeEdge = NetworkConnectionSubtypeKey.String("edge") + // UMTS + // Stability: development + NetworkConnectionSubtypeUmts = NetworkConnectionSubtypeKey.String("umts") + // CDMA + // Stability: development + NetworkConnectionSubtypeCdma = NetworkConnectionSubtypeKey.String("cdma") + // EVDO Rel. 0 + // Stability: development + NetworkConnectionSubtypeEvdo0 = NetworkConnectionSubtypeKey.String("evdo_0") + // EVDO Rev. A + // Stability: development + NetworkConnectionSubtypeEvdoA = NetworkConnectionSubtypeKey.String("evdo_a") + // CDMA2000 1XRTT + // Stability: development + NetworkConnectionSubtypeCdma20001xrtt = NetworkConnectionSubtypeKey.String("cdma2000_1xrtt") + // HSDPA + // Stability: development + NetworkConnectionSubtypeHsdpa = NetworkConnectionSubtypeKey.String("hsdpa") + // HSUPA + // Stability: development + NetworkConnectionSubtypeHsupa = NetworkConnectionSubtypeKey.String("hsupa") + // HSPA + // Stability: development + NetworkConnectionSubtypeHspa = NetworkConnectionSubtypeKey.String("hspa") + // IDEN + // Stability: development + NetworkConnectionSubtypeIden = NetworkConnectionSubtypeKey.String("iden") + // EVDO Rev. B + // Stability: development + NetworkConnectionSubtypeEvdoB = NetworkConnectionSubtypeKey.String("evdo_b") + // LTE + // Stability: development + NetworkConnectionSubtypeLte = NetworkConnectionSubtypeKey.String("lte") + // EHRPD + // Stability: development + NetworkConnectionSubtypeEhrpd = NetworkConnectionSubtypeKey.String("ehrpd") + // HSPAP + // Stability: development + NetworkConnectionSubtypeHspap = NetworkConnectionSubtypeKey.String("hspap") + // GSM + // Stability: development + NetworkConnectionSubtypeGsm = NetworkConnectionSubtypeKey.String("gsm") + // TD-SCDMA + // Stability: development + NetworkConnectionSubtypeTdScdma = NetworkConnectionSubtypeKey.String("td_scdma") + // IWLAN + // Stability: development + NetworkConnectionSubtypeIwlan = NetworkConnectionSubtypeKey.String("iwlan") + // 5G NR (New Radio) + // Stability: development + NetworkConnectionSubtypeNr = NetworkConnectionSubtypeKey.String("nr") + // 5G NRNSA (New Radio Non-Standalone) + // Stability: development + NetworkConnectionSubtypeNrnsa = NetworkConnectionSubtypeKey.String("nrnsa") + // LTE CA + // Stability: development + NetworkConnectionSubtypeLteCa = NetworkConnectionSubtypeKey.String("lte_ca") +) + +// Enum values for network.connection.type +var ( + // wifi + // Stability: development + NetworkConnectionTypeWifi = NetworkConnectionTypeKey.String("wifi") + // wired + // Stability: development + NetworkConnectionTypeWired = NetworkConnectionTypeKey.String("wired") + // cell + // Stability: development + NetworkConnectionTypeCell = NetworkConnectionTypeKey.String("cell") + // unavailable + // Stability: development + NetworkConnectionTypeUnavailable = NetworkConnectionTypeKey.String("unavailable") + // unknown + // Stability: development + NetworkConnectionTypeUnknown = NetworkConnectionTypeKey.String("unknown") +) + +// Enum values for network.io.direction +var ( + // transmit + // Stability: development + NetworkIODirectionTransmit = NetworkIODirectionKey.String("transmit") + // receive + // Stability: development + NetworkIODirectionReceive = NetworkIODirectionKey.String("receive") +) + +// Enum values for network.transport +var ( + // TCP + // Stability: stable + NetworkTransportTCP = NetworkTransportKey.String("tcp") + // UDP + // Stability: stable + NetworkTransportUDP = NetworkTransportKey.String("udp") + // Named or anonymous pipe. + // Stability: stable + NetworkTransportPipe = NetworkTransportKey.String("pipe") + // Unix domain socket + // Stability: stable + NetworkTransportUnix = NetworkTransportKey.String("unix") + // QUIC + // Stability: stable + NetworkTransportQUIC = NetworkTransportKey.String("quic") +) + +// Enum values for network.type +var ( + // IPv4 + // Stability: stable + NetworkTypeIPv4 = NetworkTypeKey.String("ipv4") + // IPv6 + // Stability: stable + NetworkTypeIPv6 = NetworkTypeKey.String("ipv6") +) + +// Namespace: oci +const ( + // OCIManifestDigestKey is the attribute Key conforming to the + // "oci.manifest.digest" semantic conventions. It represents the digest of the + // OCI image manifest. For container images specifically is the digest by which + // the container image is known. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "sha256:e4ca62c0d62f3e886e684806dfe9d4e0cda60d54986898173c1083856cfda0f4" + // Note: Follows [OCI Image Manifest Specification], and specifically the + // [Digest property]. + // An example can be found in [Example Image Manifest]. + // + // [OCI Image Manifest Specification]: https://github.com/opencontainers/image-spec/blob/main/manifest.md + // [Digest property]: https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests + // [Example Image Manifest]: https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest + OCIManifestDigestKey = attribute.Key("oci.manifest.digest") +) + +// OCIManifestDigest returns an attribute KeyValue conforming to the +// "oci.manifest.digest" semantic conventions. It represents the digest of the +// OCI image manifest. For container images specifically is the digest by which +// the container image is known. +func OCIManifestDigest(val string) attribute.KeyValue { + return OCIManifestDigestKey.String(val) +} + +// Namespace: openai +const ( + // OpenAIRequestServiceTierKey is the attribute Key conforming to the + // "openai.request.service_tier" semantic conventions. It represents the service + // tier requested. May be a specific tier, default, or auto. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "auto", "default" + OpenAIRequestServiceTierKey = attribute.Key("openai.request.service_tier") + + // OpenAIResponseServiceTierKey is the attribute Key conforming to the + // "openai.response.service_tier" semantic conventions. It represents the + // service tier used for the response. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "scale", "default" + OpenAIResponseServiceTierKey = attribute.Key("openai.response.service_tier") + + // OpenAIResponseSystemFingerprintKey is the attribute Key conforming to the + // "openai.response.system_fingerprint" semantic conventions. It represents a + // fingerprint to track any eventual change in the Generative AI environment. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "fp_44709d6fcb" + OpenAIResponseSystemFingerprintKey = attribute.Key("openai.response.system_fingerprint") +) + +// OpenAIResponseServiceTier returns an attribute KeyValue conforming to the +// "openai.response.service_tier" semantic conventions. It represents the service +// tier used for the response. +func OpenAIResponseServiceTier(val string) attribute.KeyValue { + return OpenAIResponseServiceTierKey.String(val) +} + +// OpenAIResponseSystemFingerprint returns an attribute KeyValue conforming to +// the "openai.response.system_fingerprint" semantic conventions. It represents a +// fingerprint to track any eventual change in the Generative AI environment. +func OpenAIResponseSystemFingerprint(val string) attribute.KeyValue { + return OpenAIResponseSystemFingerprintKey.String(val) +} + +// Enum values for openai.request.service_tier +var ( + // The system will utilize scale tier credits until they are exhausted. + // Stability: development + OpenAIRequestServiceTierAuto = OpenAIRequestServiceTierKey.String("auto") + // The system will utilize the default scale tier. + // Stability: development + OpenAIRequestServiceTierDefault = OpenAIRequestServiceTierKey.String("default") +) + +// Namespace: opentracing +const ( + // OpenTracingRefTypeKey is the attribute Key conforming to the + // "opentracing.ref_type" semantic conventions. It represents the parent-child + // Reference type. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: The causal relationship between a child Span and a parent Span. + OpenTracingRefTypeKey = attribute.Key("opentracing.ref_type") +) + +// Enum values for opentracing.ref_type +var ( + // The parent Span depends on the child Span in some capacity + // Stability: development + OpenTracingRefTypeChildOf = OpenTracingRefTypeKey.String("child_of") + // The parent Span doesn't depend in any way on the result of the child Span + // Stability: development + OpenTracingRefTypeFollowsFrom = OpenTracingRefTypeKey.String("follows_from") +) + +// Namespace: os +const ( + // OSBuildIDKey is the attribute Key conforming to the "os.build_id" semantic + // conventions. It represents the unique identifier for a particular build or + // compilation of the operating system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "TQ3C.230805.001.B2", "20E247", "22621" + OSBuildIDKey = attribute.Key("os.build_id") + + // OSDescriptionKey is the attribute Key conforming to the "os.description" + // semantic conventions. It represents the human readable (not intended to be + // parsed) OS version information, like e.g. reported by `ver` or + // `lsb_release -a` commands. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Microsoft Windows [Version 10.0.18363.778]", "Ubuntu 18.04.1 LTS" + OSDescriptionKey = attribute.Key("os.description") + + // OSNameKey is the attribute Key conforming to the "os.name" semantic + // conventions. It represents the human readable operating system name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "iOS", "Android", "Ubuntu" + OSNameKey = attribute.Key("os.name") + + // OSTypeKey is the attribute Key conforming to the "os.type" semantic + // conventions. It represents the operating system type. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + OSTypeKey = attribute.Key("os.type") + + // OSVersionKey is the attribute Key conforming to the "os.version" semantic + // conventions. It represents the version string of the operating system as + // defined in [Version Attributes]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "14.2.1", "18.04.1" + // + // [Version Attributes]: /docs/resource/README.md#version-attributes + OSVersionKey = attribute.Key("os.version") +) + +// OSBuildID returns an attribute KeyValue conforming to the "os.build_id" +// semantic conventions. It represents the unique identifier for a particular +// build or compilation of the operating system. +func OSBuildID(val string) attribute.KeyValue { + return OSBuildIDKey.String(val) +} + +// OSDescription returns an attribute KeyValue conforming to the "os.description" +// semantic conventions. It represents the human readable (not intended to be +// parsed) OS version information, like e.g. reported by `ver` or +// `lsb_release -a` commands. +func OSDescription(val string) attribute.KeyValue { + return OSDescriptionKey.String(val) +} + +// OSName returns an attribute KeyValue conforming to the "os.name" semantic +// conventions. It represents the human readable operating system name. +func OSName(val string) attribute.KeyValue { + return OSNameKey.String(val) +} + +// OSVersion returns an attribute KeyValue conforming to the "os.version" +// semantic conventions. It represents the version string of the operating system +// as defined in [Version Attributes]. +// +// [Version Attributes]: /docs/resource/README.md#version-attributes +func OSVersion(val string) attribute.KeyValue { + return OSVersionKey.String(val) +} + +// Enum values for os.type +var ( + // Microsoft Windows + // Stability: development + OSTypeWindows = OSTypeKey.String("windows") + // Linux + // Stability: development + OSTypeLinux = OSTypeKey.String("linux") + // Apple Darwin + // Stability: development + OSTypeDarwin = OSTypeKey.String("darwin") + // FreeBSD + // Stability: development + OSTypeFreeBSD = OSTypeKey.String("freebsd") + // NetBSD + // Stability: development + OSTypeNetBSD = OSTypeKey.String("netbsd") + // OpenBSD + // Stability: development + OSTypeOpenBSD = OSTypeKey.String("openbsd") + // DragonFly BSD + // Stability: development + OSTypeDragonflyBSD = OSTypeKey.String("dragonflybsd") + // HP-UX (Hewlett Packard Unix) + // Stability: development + OSTypeHPUX = OSTypeKey.String("hpux") + // AIX (Advanced Interactive eXecutive) + // Stability: development + OSTypeAIX = OSTypeKey.String("aix") + // SunOS, Oracle Solaris + // Stability: development + OSTypeSolaris = OSTypeKey.String("solaris") + // IBM z/OS + // Stability: development + OSTypeZOS = OSTypeKey.String("zos") +) + +// Namespace: otel +const ( + // OTelComponentNameKey is the attribute Key conforming to the + // "otel.component.name" semantic conventions. It represents a name uniquely + // identifying the instance of the OpenTelemetry component within its containing + // SDK instance. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "otlp_grpc_span_exporter/0", "custom-name" + // Note: Implementations SHOULD ensure a low cardinality for this attribute, + // even across application or SDK restarts. + // E.g. implementations MUST NOT use UUIDs as values for this attribute. + // + // Implementations MAY achieve these goals by following a + // `/` pattern, e.g. + // `batching_span_processor/0`. + // Hereby `otel.component.type` refers to the corresponding attribute value of + // the component. + // + // The value of `instance-counter` MAY be automatically assigned by the + // component and uniqueness within the enclosing SDK instance MUST be + // guaranteed. + // For example, `` MAY be implemented by using a monotonically + // increasing counter (starting with `0`), which is incremented every time an + // instance of the given component type is started. + // + // With this implementation, for example the first Batching Span Processor would + // have `batching_span_processor/0` + // as `otel.component.name`, the second one `batching_span_processor/1` and so + // on. + // These values will therefore be reused in the case of an application restart. + OTelComponentNameKey = attribute.Key("otel.component.name") + + // OTelComponentTypeKey is the attribute Key conforming to the + // "otel.component.type" semantic conventions. It represents a name identifying + // the type of the OpenTelemetry component. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "batching_span_processor", "com.example.MySpanExporter" + // Note: If none of the standardized values apply, implementations SHOULD use + // the language-defined name of the type. + // E.g. for Java the fully qualified classname SHOULD be used in this case. + OTelComponentTypeKey = attribute.Key("otel.component.type") + + // OTelScopeNameKey is the attribute Key conforming to the "otel.scope.name" + // semantic conventions. It represents the name of the instrumentation scope - ( + // `InstrumentationScope.Name` in OTLP). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "io.opentelemetry.contrib.mongodb" + OTelScopeNameKey = attribute.Key("otel.scope.name") + + // OTelScopeSchemaURLKey is the attribute Key conforming to the + // "otel.scope.schema_url" semantic conventions. It represents the schema URL of + // the instrumentation scope. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "https://opentelemetry.io/schemas/1.31.0" + OTelScopeSchemaURLKey = attribute.Key("otel.scope.schema_url") + + // OTelScopeVersionKey is the attribute Key conforming to the + // "otel.scope.version" semantic conventions. It represents the version of the + // instrumentation scope - (`InstrumentationScope.Version` in OTLP). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "1.0.0" + OTelScopeVersionKey = attribute.Key("otel.scope.version") + + // OTelSpanParentOriginKey is the attribute Key conforming to the + // "otel.span.parent.origin" semantic conventions. It represents the determines + // whether the span has a parent span, and if so, + // [whether it is a remote parent]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [whether it is a remote parent]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote + OTelSpanParentOriginKey = attribute.Key("otel.span.parent.origin") + + // OTelSpanSamplingResultKey is the attribute Key conforming to the + // "otel.span.sampling_result" semantic conventions. It represents the result + // value of the sampler for this span. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + OTelSpanSamplingResultKey = attribute.Key("otel.span.sampling_result") + + // OTelStatusCodeKey is the attribute Key conforming to the "otel.status_code" + // semantic conventions. It represents the name of the code, either "OK" or + // "ERROR". MUST NOT be set if the status code is UNSET. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: + OTelStatusCodeKey = attribute.Key("otel.status_code") + + // OTelStatusDescriptionKey is the attribute Key conforming to the + // "otel.status_description" semantic conventions. It represents the description + // of the Status if it has a value, otherwise not set. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "resource not found" + OTelStatusDescriptionKey = attribute.Key("otel.status_description") +) + +// OTelComponentName returns an attribute KeyValue conforming to the +// "otel.component.name" semantic conventions. It represents a name uniquely +// identifying the instance of the OpenTelemetry component within its containing +// SDK instance. +func OTelComponentName(val string) attribute.KeyValue { + return OTelComponentNameKey.String(val) +} + +// OTelScopeName returns an attribute KeyValue conforming to the +// "otel.scope.name" semantic conventions. It represents the name of the +// instrumentation scope - (`InstrumentationScope.Name` in OTLP). +func OTelScopeName(val string) attribute.KeyValue { + return OTelScopeNameKey.String(val) +} + +// OTelScopeSchemaURL returns an attribute KeyValue conforming to the +// "otel.scope.schema_url" semantic conventions. It represents the schema URL of +// the instrumentation scope. +func OTelScopeSchemaURL(val string) attribute.KeyValue { + return OTelScopeSchemaURLKey.String(val) +} + +// OTelScopeVersion returns an attribute KeyValue conforming to the +// "otel.scope.version" semantic conventions. It represents the version of the +// instrumentation scope - (`InstrumentationScope.Version` in OTLP). +func OTelScopeVersion(val string) attribute.KeyValue { + return OTelScopeVersionKey.String(val) +} + +// OTelStatusDescription returns an attribute KeyValue conforming to the +// "otel.status_description" semantic conventions. It represents the description +// of the Status if it has a value, otherwise not set. +func OTelStatusDescription(val string) attribute.KeyValue { + return OTelStatusDescriptionKey.String(val) +} + +// Enum values for otel.component.type +var ( + // The builtin SDK batching span processor + // + // Stability: development + OTelComponentTypeBatchingSpanProcessor = OTelComponentTypeKey.String("batching_span_processor") + // The builtin SDK simple span processor + // + // Stability: development + OTelComponentTypeSimpleSpanProcessor = OTelComponentTypeKey.String("simple_span_processor") + // The builtin SDK batching log record processor + // + // Stability: development + OTelComponentTypeBatchingLogProcessor = OTelComponentTypeKey.String("batching_log_processor") + // The builtin SDK simple log record processor + // + // Stability: development + OTelComponentTypeSimpleLogProcessor = OTelComponentTypeKey.String("simple_log_processor") + // OTLP span exporter over gRPC with protobuf serialization + // + // Stability: development + OTelComponentTypeOtlpGRPCSpanExporter = OTelComponentTypeKey.String("otlp_grpc_span_exporter") + // OTLP span exporter over HTTP with protobuf serialization + // + // Stability: development + OTelComponentTypeOtlpHTTPSpanExporter = OTelComponentTypeKey.String("otlp_http_span_exporter") + // OTLP span exporter over HTTP with JSON serialization + // + // Stability: development + OTelComponentTypeOtlpHTTPJSONSpanExporter = OTelComponentTypeKey.String("otlp_http_json_span_exporter") + // Zipkin span exporter over HTTP + // + // Stability: development + OTelComponentTypeZipkinHTTPSpanExporter = OTelComponentTypeKey.String("zipkin_http_span_exporter") + // OTLP log record exporter over gRPC with protobuf serialization + // + // Stability: development + OTelComponentTypeOtlpGRPCLogExporter = OTelComponentTypeKey.String("otlp_grpc_log_exporter") + // OTLP log record exporter over HTTP with protobuf serialization + // + // Stability: development + OTelComponentTypeOtlpHTTPLogExporter = OTelComponentTypeKey.String("otlp_http_log_exporter") + // OTLP log record exporter over HTTP with JSON serialization + // + // Stability: development + OTelComponentTypeOtlpHTTPJSONLogExporter = OTelComponentTypeKey.String("otlp_http_json_log_exporter") + // The builtin SDK periodically exporting metric reader + // + // Stability: development + OTelComponentTypePeriodicMetricReader = OTelComponentTypeKey.String("periodic_metric_reader") + // OTLP metric exporter over gRPC with protobuf serialization + // + // Stability: development + OTelComponentTypeOtlpGRPCMetricExporter = OTelComponentTypeKey.String("otlp_grpc_metric_exporter") + // OTLP metric exporter over HTTP with protobuf serialization + // + // Stability: development + OTelComponentTypeOtlpHTTPMetricExporter = OTelComponentTypeKey.String("otlp_http_metric_exporter") + // OTLP metric exporter over HTTP with JSON serialization + // + // Stability: development + OTelComponentTypeOtlpHTTPJSONMetricExporter = OTelComponentTypeKey.String("otlp_http_json_metric_exporter") + // Prometheus metric exporter over HTTP with the default text-based format + // + // Stability: development + OTelComponentTypePrometheusHTTPTextMetricExporter = OTelComponentTypeKey.String("prometheus_http_text_metric_exporter") +) + +// Enum values for otel.span.parent.origin +var ( + // The span does not have a parent, it is a root span + // Stability: development + OTelSpanParentOriginNone = OTelSpanParentOriginKey.String("none") + // The span has a parent and the parent's span context [isRemote()] is false + // Stability: development + // + // [isRemote()]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote + OTelSpanParentOriginLocal = OTelSpanParentOriginKey.String("local") + // The span has a parent and the parent's span context [isRemote()] is true + // Stability: development + // + // [isRemote()]: https://opentelemetry.io/docs/specs/otel/trace/api/#isremote + OTelSpanParentOriginRemote = OTelSpanParentOriginKey.String("remote") +) + +// Enum values for otel.span.sampling_result +var ( + // The span is not sampled and not recording + // Stability: development + OTelSpanSamplingResultDrop = OTelSpanSamplingResultKey.String("DROP") + // The span is not sampled, but recording + // Stability: development + OTelSpanSamplingResultRecordOnly = OTelSpanSamplingResultKey.String("RECORD_ONLY") + // The span is sampled and recording + // Stability: development + OTelSpanSamplingResultRecordAndSample = OTelSpanSamplingResultKey.String("RECORD_AND_SAMPLE") +) + +// Enum values for otel.status_code +var ( + // The operation has been validated by an Application developer or Operator to + // have completed successfully. + // Stability: stable + OTelStatusCodeOk = OTelStatusCodeKey.String("OK") + // The operation contains an error. + // Stability: stable + OTelStatusCodeError = OTelStatusCodeKey.String("ERROR") +) + +// Namespace: peer +const ( + // PeerServiceKey is the attribute Key conforming to the "peer.service" semantic + // conventions. It represents the [`service.name`] of the remote service. SHOULD + // be equal to the actual `service.name` resource attribute of the remote + // service if any. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: AuthTokenCache + // + // [`service.name`]: /docs/resource/README.md#service + PeerServiceKey = attribute.Key("peer.service") +) + +// PeerService returns an attribute KeyValue conforming to the "peer.service" +// semantic conventions. It represents the [`service.name`] of the remote +// service. SHOULD be equal to the actual `service.name` resource attribute of +// the remote service if any. +// +// [`service.name`]: /docs/resource/README.md#service +func PeerService(val string) attribute.KeyValue { + return PeerServiceKey.String(val) +} + +// Namespace: process +const ( + // ProcessArgsCountKey is the attribute Key conforming to the + // "process.args_count" semantic conventions. It represents the length of the + // process.command_args array. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 4 + // Note: This field can be useful for querying or performing bucket analysis on + // how many arguments were provided to start a process. More arguments may be an + // indication of suspicious activity. + ProcessArgsCountKey = attribute.Key("process.args_count") + + // ProcessCommandKey is the attribute Key conforming to the "process.command" + // semantic conventions. It represents the command used to launch the process + // (i.e. the command name). On Linux based systems, can be set to the zeroth + // string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter + // extracted from `GetCommandLineW`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "cmd/otelcol" + ProcessCommandKey = attribute.Key("process.command") + + // ProcessCommandArgsKey is the attribute Key conforming to the + // "process.command_args" semantic conventions. It represents the all the + // command arguments (including the command/executable itself) as received by + // the process. On Linux-based systems (and some other Unixoid systems + // supporting procfs), can be set according to the list of null-delimited + // strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this + // would be the full argv vector passed to `main`. SHOULD NOT be collected by + // default unless there is sanitization that excludes sensitive data. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "cmd/otecol", "--config=config.yaml" + ProcessCommandArgsKey = attribute.Key("process.command_args") + + // ProcessCommandLineKey is the attribute Key conforming to the + // "process.command_line" semantic conventions. It represents the full command + // used to launch the process as a single string representing the full command. + // On Windows, can be set to the result of `GetCommandLineW`. Do not set this if + // you have to assemble it just for monitoring; use `process.command_args` + // instead. SHOULD NOT be collected by default unless there is sanitization that + // excludes sensitive data. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "C:\cmd\otecol --config="my directory\config.yaml"" + ProcessCommandLineKey = attribute.Key("process.command_line") + + // ProcessContextSwitchTypeKey is the attribute Key conforming to the + // "process.context_switch_type" semantic conventions. It represents the + // specifies whether the context switches for this data point were voluntary or + // involuntary. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + ProcessContextSwitchTypeKey = attribute.Key("process.context_switch_type") + + // ProcessCreationTimeKey is the attribute Key conforming to the + // "process.creation.time" semantic conventions. It represents the date and time + // the process was created, in ISO 8601 format. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2023-11-21T09:25:34.853Z" + ProcessCreationTimeKey = attribute.Key("process.creation.time") + + // ProcessExecutableBuildIDGNUKey is the attribute Key conforming to the + // "process.executable.build_id.gnu" semantic conventions. It represents the GNU + // build ID as found in the `.note.gnu.build-id` ELF section (hex string). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "c89b11207f6479603b0d49bf291c092c2b719293" + ProcessExecutableBuildIDGNUKey = attribute.Key("process.executable.build_id.gnu") + + // ProcessExecutableBuildIDGoKey is the attribute Key conforming to the + // "process.executable.build_id.go" semantic conventions. It represents the Go + // build ID as retrieved by `go tool buildid `. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "foh3mEXu7BLZjsN9pOwG/kATcXlYVCDEFouRMQed_/WwRFB1hPo9LBkekthSPG/x8hMC8emW2cCjXD0_1aY" + ProcessExecutableBuildIDGoKey = attribute.Key("process.executable.build_id.go") + + // ProcessExecutableBuildIDHtlhashKey is the attribute Key conforming to the + // "process.executable.build_id.htlhash" semantic conventions. It represents the + // profiling specific build ID for executables. See the OTel specification for + // Profiles for more information. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "600DCAFE4A110000F2BF38C493F5FB92" + ProcessExecutableBuildIDHtlhashKey = attribute.Key("process.executable.build_id.htlhash") + + // ProcessExecutableNameKey is the attribute Key conforming to the + // "process.executable.name" semantic conventions. It represents the name of the + // process executable. On Linux based systems, this SHOULD be set to the base + // name of the target of `/proc/[pid]/exe`. On Windows, this SHOULD be set to + // the base name of `GetProcessImageFileNameW`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "otelcol" + ProcessExecutableNameKey = attribute.Key("process.executable.name") + + // ProcessExecutablePathKey is the attribute Key conforming to the + // "process.executable.path" semantic conventions. It represents the full path + // to the process executable. On Linux based systems, can be set to the target + // of `proc/[pid]/exe`. On Windows, can be set to the result of + // `GetProcessImageFileNameW`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/usr/bin/cmd/otelcol" + ProcessExecutablePathKey = attribute.Key("process.executable.path") + + // ProcessExitCodeKey is the attribute Key conforming to the "process.exit.code" + // semantic conventions. It represents the exit code of the process. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 127 + ProcessExitCodeKey = attribute.Key("process.exit.code") + + // ProcessExitTimeKey is the attribute Key conforming to the "process.exit.time" + // semantic conventions. It represents the date and time the process exited, in + // ISO 8601 format. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2023-11-21T09:26:12.315Z" + ProcessExitTimeKey = attribute.Key("process.exit.time") + + // ProcessGroupLeaderPIDKey is the attribute Key conforming to the + // "process.group_leader.pid" semantic conventions. It represents the PID of the + // process's group leader. This is also the process group ID (PGID) of the + // process. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 23 + ProcessGroupLeaderPIDKey = attribute.Key("process.group_leader.pid") + + // ProcessInteractiveKey is the attribute Key conforming to the + // "process.interactive" semantic conventions. It represents the whether the + // process is connected to an interactive shell. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + ProcessInteractiveKey = attribute.Key("process.interactive") + + // ProcessLinuxCgroupKey is the attribute Key conforming to the + // "process.linux.cgroup" semantic conventions. It represents the control group + // associated with the process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1:name=systemd:/user.slice/user-1000.slice/session-3.scope", + // "0::/user.slice/user-1000.slice/user@1000.service/tmux-spawn-0267755b-4639-4a27-90ed-f19f88e53748.scope" + // Note: Control groups (cgroups) are a kernel feature used to organize and + // manage process resources. This attribute provides the path(s) to the + // cgroup(s) associated with the process, which should match the contents of the + // [/proc/[PID]/cgroup] file. + // + // [/proc/[PID]/cgroup]: https://man7.org/linux/man-pages/man7/cgroups.7.html + ProcessLinuxCgroupKey = attribute.Key("process.linux.cgroup") + + // ProcessOwnerKey is the attribute Key conforming to the "process.owner" + // semantic conventions. It represents the username of the user that owns the + // process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "root" + ProcessOwnerKey = attribute.Key("process.owner") + + // ProcessPagingFaultTypeKey is the attribute Key conforming to the + // "process.paging.fault_type" semantic conventions. It represents the type of + // page fault for this data point. Type `major` is for major/hard page faults, + // and `minor` is for minor/soft page faults. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + ProcessPagingFaultTypeKey = attribute.Key("process.paging.fault_type") + + // ProcessParentPIDKey is the attribute Key conforming to the + // "process.parent_pid" semantic conventions. It represents the parent Process + // identifier (PPID). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 111 + ProcessParentPIDKey = attribute.Key("process.parent_pid") + + // ProcessPIDKey is the attribute Key conforming to the "process.pid" semantic + // conventions. It represents the process identifier (PID). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1234 + ProcessPIDKey = attribute.Key("process.pid") + + // ProcessRealUserIDKey is the attribute Key conforming to the + // "process.real_user.id" semantic conventions. It represents the real user ID + // (RUID) of the process. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1000 + ProcessRealUserIDKey = attribute.Key("process.real_user.id") + + // ProcessRealUserNameKey is the attribute Key conforming to the + // "process.real_user.name" semantic conventions. It represents the username of + // the real user of the process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "operator" + ProcessRealUserNameKey = attribute.Key("process.real_user.name") + + // ProcessRuntimeDescriptionKey is the attribute Key conforming to the + // "process.runtime.description" semantic conventions. It represents an + // additional description about the runtime of the process, for example a + // specific vendor customization of the runtime environment. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: Eclipse OpenJ9 Eclipse OpenJ9 VM openj9-0.21.0 + ProcessRuntimeDescriptionKey = attribute.Key("process.runtime.description") + + // ProcessRuntimeNameKey is the attribute Key conforming to the + // "process.runtime.name" semantic conventions. It represents the name of the + // runtime of this process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "OpenJDK Runtime Environment" + ProcessRuntimeNameKey = attribute.Key("process.runtime.name") + + // ProcessRuntimeVersionKey is the attribute Key conforming to the + // "process.runtime.version" semantic conventions. It represents the version of + // the runtime of this process, as returned by the runtime without modification. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 14.0.2 + ProcessRuntimeVersionKey = attribute.Key("process.runtime.version") + + // ProcessSavedUserIDKey is the attribute Key conforming to the + // "process.saved_user.id" semantic conventions. It represents the saved user ID + // (SUID) of the process. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1002 + ProcessSavedUserIDKey = attribute.Key("process.saved_user.id") + + // ProcessSavedUserNameKey is the attribute Key conforming to the + // "process.saved_user.name" semantic conventions. It represents the username of + // the saved user. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "operator" + ProcessSavedUserNameKey = attribute.Key("process.saved_user.name") + + // ProcessSessionLeaderPIDKey is the attribute Key conforming to the + // "process.session_leader.pid" semantic conventions. It represents the PID of + // the process's session leader. This is also the session ID (SID) of the + // process. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 14 + ProcessSessionLeaderPIDKey = attribute.Key("process.session_leader.pid") + + // ProcessTitleKey is the attribute Key conforming to the "process.title" + // semantic conventions. It represents the process title (proctitle). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "cat /etc/hostname", "xfce4-session", "bash" + // Note: In many Unix-like systems, process title (proctitle), is the string + // that represents the name or command line of a running process, displayed by + // system monitoring tools like ps, top, and htop. + ProcessTitleKey = attribute.Key("process.title") + + // ProcessUserIDKey is the attribute Key conforming to the "process.user.id" + // semantic conventions. It represents the effective user ID (EUID) of the + // process. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1001 + ProcessUserIDKey = attribute.Key("process.user.id") + + // ProcessUserNameKey is the attribute Key conforming to the "process.user.name" + // semantic conventions. It represents the username of the effective user of the + // process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "root" + ProcessUserNameKey = attribute.Key("process.user.name") + + // ProcessVpidKey is the attribute Key conforming to the "process.vpid" semantic + // conventions. It represents the virtual process identifier. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 12 + // Note: The process ID within a PID namespace. This is not necessarily unique + // across all processes on the host but it is unique within the process + // namespace that the process exists within. + ProcessVpidKey = attribute.Key("process.vpid") + + // ProcessWorkingDirectoryKey is the attribute Key conforming to the + // "process.working_directory" semantic conventions. It represents the working + // directory of the process. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/root" + ProcessWorkingDirectoryKey = attribute.Key("process.working_directory") +) + +// ProcessArgsCount returns an attribute KeyValue conforming to the +// "process.args_count" semantic conventions. It represents the length of the +// process.command_args array. +func ProcessArgsCount(val int) attribute.KeyValue { + return ProcessArgsCountKey.Int(val) +} + +// ProcessCommand returns an attribute KeyValue conforming to the +// "process.command" semantic conventions. It represents the command used to +// launch the process (i.e. the command name). On Linux based systems, can be set +// to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the +// first parameter extracted from `GetCommandLineW`. +func ProcessCommand(val string) attribute.KeyValue { + return ProcessCommandKey.String(val) +} + +// ProcessCommandArgs returns an attribute KeyValue conforming to the +// "process.command_args" semantic conventions. It represents the all the command +// arguments (including the command/executable itself) as received by the +// process. On Linux-based systems (and some other Unixoid systems supporting +// procfs), can be set according to the list of null-delimited strings extracted +// from `proc/[pid]/cmdline`. For libc-based executables, this would be the full +// argv vector passed to `main`. SHOULD NOT be collected by default unless there +// is sanitization that excludes sensitive data. +func ProcessCommandArgs(val ...string) attribute.KeyValue { + return ProcessCommandArgsKey.StringSlice(val) +} + +// ProcessCommandLine returns an attribute KeyValue conforming to the +// "process.command_line" semantic conventions. It represents the full command +// used to launch the process as a single string representing the full command. +// On Windows, can be set to the result of `GetCommandLineW`. Do not set this if +// you have to assemble it just for monitoring; use `process.command_args` +// instead. SHOULD NOT be collected by default unless there is sanitization that +// excludes sensitive data. +func ProcessCommandLine(val string) attribute.KeyValue { + return ProcessCommandLineKey.String(val) +} + +// ProcessCreationTime returns an attribute KeyValue conforming to the +// "process.creation.time" semantic conventions. It represents the date and time +// the process was created, in ISO 8601 format. +func ProcessCreationTime(val string) attribute.KeyValue { + return ProcessCreationTimeKey.String(val) +} + +// ProcessEnvironmentVariable returns an attribute KeyValue conforming to the +// "process.environment_variable" semantic conventions. It represents the process +// environment variables, `` being the environment variable name, the value +// being the environment variable value. +func ProcessEnvironmentVariable(key string, val string) attribute.KeyValue { + return attribute.String("process.environment_variable."+key, val) +} + +// ProcessExecutableBuildIDGNU returns an attribute KeyValue conforming to the +// "process.executable.build_id.gnu" semantic conventions. It represents the GNU +// build ID as found in the `.note.gnu.build-id` ELF section (hex string). +func ProcessExecutableBuildIDGNU(val string) attribute.KeyValue { + return ProcessExecutableBuildIDGNUKey.String(val) +} + +// ProcessExecutableBuildIDGo returns an attribute KeyValue conforming to the +// "process.executable.build_id.go" semantic conventions. It represents the Go +// build ID as retrieved by `go tool buildid `. +func ProcessExecutableBuildIDGo(val string) attribute.KeyValue { + return ProcessExecutableBuildIDGoKey.String(val) +} + +// ProcessExecutableBuildIDHtlhash returns an attribute KeyValue conforming to +// the "process.executable.build_id.htlhash" semantic conventions. It represents +// the profiling specific build ID for executables. See the OTel specification +// for Profiles for more information. +func ProcessExecutableBuildIDHtlhash(val string) attribute.KeyValue { + return ProcessExecutableBuildIDHtlhashKey.String(val) +} + +// ProcessExecutableName returns an attribute KeyValue conforming to the +// "process.executable.name" semantic conventions. It represents the name of the +// process executable. On Linux based systems, this SHOULD be set to the base +// name of the target of `/proc/[pid]/exe`. On Windows, this SHOULD be set to the +// base name of `GetProcessImageFileNameW`. +func ProcessExecutableName(val string) attribute.KeyValue { + return ProcessExecutableNameKey.String(val) +} + +// ProcessExecutablePath returns an attribute KeyValue conforming to the +// "process.executable.path" semantic conventions. It represents the full path to +// the process executable. On Linux based systems, can be set to the target of +// `proc/[pid]/exe`. On Windows, can be set to the result of +// `GetProcessImageFileNameW`. +func ProcessExecutablePath(val string) attribute.KeyValue { + return ProcessExecutablePathKey.String(val) +} + +// ProcessExitCode returns an attribute KeyValue conforming to the +// "process.exit.code" semantic conventions. It represents the exit code of the +// process. +func ProcessExitCode(val int) attribute.KeyValue { + return ProcessExitCodeKey.Int(val) +} + +// ProcessExitTime returns an attribute KeyValue conforming to the +// "process.exit.time" semantic conventions. It represents the date and time the +// process exited, in ISO 8601 format. +func ProcessExitTime(val string) attribute.KeyValue { + return ProcessExitTimeKey.String(val) +} + +// ProcessGroupLeaderPID returns an attribute KeyValue conforming to the +// "process.group_leader.pid" semantic conventions. It represents the PID of the +// process's group leader. This is also the process group ID (PGID) of the +// process. +func ProcessGroupLeaderPID(val int) attribute.KeyValue { + return ProcessGroupLeaderPIDKey.Int(val) +} + +// ProcessInteractive returns an attribute KeyValue conforming to the +// "process.interactive" semantic conventions. It represents the whether the +// process is connected to an interactive shell. +func ProcessInteractive(val bool) attribute.KeyValue { + return ProcessInteractiveKey.Bool(val) +} + +// ProcessLinuxCgroup returns an attribute KeyValue conforming to the +// "process.linux.cgroup" semantic conventions. It represents the control group +// associated with the process. +func ProcessLinuxCgroup(val string) attribute.KeyValue { + return ProcessLinuxCgroupKey.String(val) +} + +// ProcessOwner returns an attribute KeyValue conforming to the "process.owner" +// semantic conventions. It represents the username of the user that owns the +// process. +func ProcessOwner(val string) attribute.KeyValue { + return ProcessOwnerKey.String(val) +} + +// ProcessParentPID returns an attribute KeyValue conforming to the +// "process.parent_pid" semantic conventions. It represents the parent Process +// identifier (PPID). +func ProcessParentPID(val int) attribute.KeyValue { + return ProcessParentPIDKey.Int(val) +} + +// ProcessPID returns an attribute KeyValue conforming to the "process.pid" +// semantic conventions. It represents the process identifier (PID). +func ProcessPID(val int) attribute.KeyValue { + return ProcessPIDKey.Int(val) +} + +// ProcessRealUserID returns an attribute KeyValue conforming to the +// "process.real_user.id" semantic conventions. It represents the real user ID +// (RUID) of the process. +func ProcessRealUserID(val int) attribute.KeyValue { + return ProcessRealUserIDKey.Int(val) +} + +// ProcessRealUserName returns an attribute KeyValue conforming to the +// "process.real_user.name" semantic conventions. It represents the username of +// the real user of the process. +func ProcessRealUserName(val string) attribute.KeyValue { + return ProcessRealUserNameKey.String(val) +} + +// ProcessRuntimeDescription returns an attribute KeyValue conforming to the +// "process.runtime.description" semantic conventions. It represents an +// additional description about the runtime of the process, for example a +// specific vendor customization of the runtime environment. +func ProcessRuntimeDescription(val string) attribute.KeyValue { + return ProcessRuntimeDescriptionKey.String(val) +} + +// ProcessRuntimeName returns an attribute KeyValue conforming to the +// "process.runtime.name" semantic conventions. It represents the name of the +// runtime of this process. +func ProcessRuntimeName(val string) attribute.KeyValue { + return ProcessRuntimeNameKey.String(val) +} + +// ProcessRuntimeVersion returns an attribute KeyValue conforming to the +// "process.runtime.version" semantic conventions. It represents the version of +// the runtime of this process, as returned by the runtime without modification. +func ProcessRuntimeVersion(val string) attribute.KeyValue { + return ProcessRuntimeVersionKey.String(val) +} + +// ProcessSavedUserID returns an attribute KeyValue conforming to the +// "process.saved_user.id" semantic conventions. It represents the saved user ID +// (SUID) of the process. +func ProcessSavedUserID(val int) attribute.KeyValue { + return ProcessSavedUserIDKey.Int(val) +} + +// ProcessSavedUserName returns an attribute KeyValue conforming to the +// "process.saved_user.name" semantic conventions. It represents the username of +// the saved user. +func ProcessSavedUserName(val string) attribute.KeyValue { + return ProcessSavedUserNameKey.String(val) +} + +// ProcessSessionLeaderPID returns an attribute KeyValue conforming to the +// "process.session_leader.pid" semantic conventions. It represents the PID of +// the process's session leader. This is also the session ID (SID) of the +// process. +func ProcessSessionLeaderPID(val int) attribute.KeyValue { + return ProcessSessionLeaderPIDKey.Int(val) +} + +// ProcessTitle returns an attribute KeyValue conforming to the "process.title" +// semantic conventions. It represents the process title (proctitle). +func ProcessTitle(val string) attribute.KeyValue { + return ProcessTitleKey.String(val) +} + +// ProcessUserID returns an attribute KeyValue conforming to the +// "process.user.id" semantic conventions. It represents the effective user ID +// (EUID) of the process. +func ProcessUserID(val int) attribute.KeyValue { + return ProcessUserIDKey.Int(val) +} + +// ProcessUserName returns an attribute KeyValue conforming to the +// "process.user.name" semantic conventions. It represents the username of the +// effective user of the process. +func ProcessUserName(val string) attribute.KeyValue { + return ProcessUserNameKey.String(val) +} + +// ProcessVpid returns an attribute KeyValue conforming to the "process.vpid" +// semantic conventions. It represents the virtual process identifier. +func ProcessVpid(val int) attribute.KeyValue { + return ProcessVpidKey.Int(val) +} + +// ProcessWorkingDirectory returns an attribute KeyValue conforming to the +// "process.working_directory" semantic conventions. It represents the working +// directory of the process. +func ProcessWorkingDirectory(val string) attribute.KeyValue { + return ProcessWorkingDirectoryKey.String(val) +} + +// Enum values for process.context_switch_type +var ( + // voluntary + // Stability: development + ProcessContextSwitchTypeVoluntary = ProcessContextSwitchTypeKey.String("voluntary") + // involuntary + // Stability: development + ProcessContextSwitchTypeInvoluntary = ProcessContextSwitchTypeKey.String("involuntary") +) + +// Enum values for process.paging.fault_type +var ( + // major + // Stability: development + ProcessPagingFaultTypeMajor = ProcessPagingFaultTypeKey.String("major") + // minor + // Stability: development + ProcessPagingFaultTypeMinor = ProcessPagingFaultTypeKey.String("minor") +) + +// Namespace: profile +const ( + // ProfileFrameTypeKey is the attribute Key conforming to the + // "profile.frame.type" semantic conventions. It represents the describes the + // interpreter or compiler of a single frame. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "cpython" + ProfileFrameTypeKey = attribute.Key("profile.frame.type") +) + +// Enum values for profile.frame.type +var ( + // [.NET] + // + // Stability: development + // + // [.NET]: https://wikipedia.org/wiki/.NET + ProfileFrameTypeDotnet = ProfileFrameTypeKey.String("dotnet") + // [JVM] + // + // Stability: development + // + // [JVM]: https://wikipedia.org/wiki/Java_virtual_machine + ProfileFrameTypeJVM = ProfileFrameTypeKey.String("jvm") + // [Kernel] + // + // Stability: development + // + // [Kernel]: https://wikipedia.org/wiki/Kernel_(operating_system) + ProfileFrameTypeKernel = ProfileFrameTypeKey.String("kernel") + // Can be one of but not limited to [C], [C++], [Go] or [Rust]. If possible, a + // more precise value MUST be used. + // + // Stability: development + // + // [C]: https://wikipedia.org/wiki/C_(programming_language) + // [C++]: https://wikipedia.org/wiki/C%2B%2B + // [Go]: https://wikipedia.org/wiki/Go_(programming_language) + // [Rust]: https://wikipedia.org/wiki/Rust_(programming_language) + ProfileFrameTypeNative = ProfileFrameTypeKey.String("native") + // [Perl] + // + // Stability: development + // + // [Perl]: https://wikipedia.org/wiki/Perl + ProfileFrameTypePerl = ProfileFrameTypeKey.String("perl") + // [PHP] + // + // Stability: development + // + // [PHP]: https://wikipedia.org/wiki/PHP + ProfileFrameTypePHP = ProfileFrameTypeKey.String("php") + // [Python] + // + // Stability: development + // + // [Python]: https://wikipedia.org/wiki/Python_(programming_language) + ProfileFrameTypeCpython = ProfileFrameTypeKey.String("cpython") + // [Ruby] + // + // Stability: development + // + // [Ruby]: https://wikipedia.org/wiki/Ruby_(programming_language) + ProfileFrameTypeRuby = ProfileFrameTypeKey.String("ruby") + // [V8JS] + // + // Stability: development + // + // [V8JS]: https://wikipedia.org/wiki/V8_(JavaScript_engine) + ProfileFrameTypeV8JS = ProfileFrameTypeKey.String("v8js") + // [Erlang] + // + // Stability: development + // + // [Erlang]: https://en.wikipedia.org/wiki/BEAM_(Erlang_virtual_machine) + ProfileFrameTypeBeam = ProfileFrameTypeKey.String("beam") + // [Go], + // + // Stability: development + // + // [Go]: https://wikipedia.org/wiki/Go_(programming_language) + ProfileFrameTypeGo = ProfileFrameTypeKey.String("go") + // [Rust] + // + // Stability: development + // + // [Rust]: https://wikipedia.org/wiki/Rust_(programming_language) + ProfileFrameTypeRust = ProfileFrameTypeKey.String("rust") +) + +// Namespace: rpc +const ( + // RPCConnectRPCErrorCodeKey is the attribute Key conforming to the + // "rpc.connect_rpc.error_code" semantic conventions. It represents the + // [error codes] of the Connect request. Error codes are always string values. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [error codes]: https://connectrpc.com//docs/protocol/#error-codes + RPCConnectRPCErrorCodeKey = attribute.Key("rpc.connect_rpc.error_code") + + // RPCGRPCStatusCodeKey is the attribute Key conforming to the + // "rpc.grpc.status_code" semantic conventions. It represents the + // [numeric status code] of the gRPC request. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [numeric status code]: https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md + RPCGRPCStatusCodeKey = attribute.Key("rpc.grpc.status_code") + + // RPCJSONRPCErrorCodeKey is the attribute Key conforming to the + // "rpc.jsonrpc.error_code" semantic conventions. It represents the `error.code` + // property of response if it is an error response. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: -32700, 100 + RPCJSONRPCErrorCodeKey = attribute.Key("rpc.jsonrpc.error_code") + + // RPCJSONRPCErrorMessageKey is the attribute Key conforming to the + // "rpc.jsonrpc.error_message" semantic conventions. It represents the + // `error.message` property of response if it is an error response. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Parse error", "User already exists" + RPCJSONRPCErrorMessageKey = attribute.Key("rpc.jsonrpc.error_message") + + // RPCJSONRPCRequestIDKey is the attribute Key conforming to the + // "rpc.jsonrpc.request_id" semantic conventions. It represents the `id` + // property of request or response. Since protocol allows id to be int, string, + // `null` or missing (for notifications), value is expected to be cast to string + // for simplicity. Use empty string in case of `null` value. Omit entirely if + // this is a notification. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "10", "request-7", "" + RPCJSONRPCRequestIDKey = attribute.Key("rpc.jsonrpc.request_id") + + // RPCJSONRPCVersionKey is the attribute Key conforming to the + // "rpc.jsonrpc.version" semantic conventions. It represents the protocol + // version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 + // doesn't specify this, the value can be omitted. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2.0", "1.0" + RPCJSONRPCVersionKey = attribute.Key("rpc.jsonrpc.version") + + // RPCMessageCompressedSizeKey is the attribute Key conforming to the + // "rpc.message.compressed_size" semantic conventions. It represents the + // compressed size of the message in bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + RPCMessageCompressedSizeKey = attribute.Key("rpc.message.compressed_size") + + // RPCMessageIDKey is the attribute Key conforming to the "rpc.message.id" + // semantic conventions. It MUST be calculated as two different counters + // starting from `1` one for sent messages and one for received message.. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: This way we guarantee that the values will be consistent between + // different implementations. + RPCMessageIDKey = attribute.Key("rpc.message.id") + + // RPCMessageTypeKey is the attribute Key conforming to the "rpc.message.type" + // semantic conventions. It represents the whether this is a received or sent + // message. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + RPCMessageTypeKey = attribute.Key("rpc.message.type") + + // RPCMessageUncompressedSizeKey is the attribute Key conforming to the + // "rpc.message.uncompressed_size" semantic conventions. It represents the + // uncompressed size of the message in bytes. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + RPCMessageUncompressedSizeKey = attribute.Key("rpc.message.uncompressed_size") + + // RPCMethodKey is the attribute Key conforming to the "rpc.method" semantic + // conventions. It represents the name of the (logical) method being called, + // must be equal to the $method part in the span name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: exampleMethod + // Note: This is the logical name of the method from the RPC interface + // perspective, which can be different from the name of any implementing + // method/function. The `code.function.name` attribute may be used to store the + // latter (e.g., method actually executing the call on the server side, RPC + // client stub method on the client side). + RPCMethodKey = attribute.Key("rpc.method") + + // RPCServiceKey is the attribute Key conforming to the "rpc.service" semantic + // conventions. It represents the full (logical) name of the service being + // called, including its package name, if applicable. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: myservice.EchoService + // Note: This is the logical name of the service from the RPC interface + // perspective, which can be different from the name of any implementing class. + // The `code.namespace` attribute may be used to store the latter (despite the + // attribute name, it may include a class name; e.g., class with method actually + // executing the call on the server side, RPC client stub class on the client + // side). + RPCServiceKey = attribute.Key("rpc.service") + + // RPCSystemKey is the attribute Key conforming to the "rpc.system" semantic + // conventions. It represents a string identifying the remoting system. See + // below for a list of well-known identifiers. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + RPCSystemKey = attribute.Key("rpc.system") +) + +// RPCConnectRPCRequestMetadata returns an attribute KeyValue conforming to the +// "rpc.connect_rpc.request.metadata" semantic conventions. It represents the +// connect request metadata, `` being the normalized Connect Metadata key +// (lowercase), the value being the metadata values. +func RPCConnectRPCRequestMetadata(key string, val ...string) attribute.KeyValue { + return attribute.StringSlice("rpc.connect_rpc.request.metadata."+key, val) +} + +// RPCConnectRPCResponseMetadata returns an attribute KeyValue conforming to the +// "rpc.connect_rpc.response.metadata" semantic conventions. It represents the +// connect response metadata, `` being the normalized Connect Metadata key +// (lowercase), the value being the metadata values. +func RPCConnectRPCResponseMetadata(key string, val ...string) attribute.KeyValue { + return attribute.StringSlice("rpc.connect_rpc.response.metadata."+key, val) +} + +// RPCGRPCRequestMetadata returns an attribute KeyValue conforming to the +// "rpc.grpc.request.metadata" semantic conventions. It represents the gRPC +// request metadata, `` being the normalized gRPC Metadata key (lowercase), +// the value being the metadata values. +func RPCGRPCRequestMetadata(key string, val ...string) attribute.KeyValue { + return attribute.StringSlice("rpc.grpc.request.metadata."+key, val) +} + +// RPCGRPCResponseMetadata returns an attribute KeyValue conforming to the +// "rpc.grpc.response.metadata" semantic conventions. It represents the gRPC +// response metadata, `` being the normalized gRPC Metadata key (lowercase), +// the value being the metadata values. +func RPCGRPCResponseMetadata(key string, val ...string) attribute.KeyValue { + return attribute.StringSlice("rpc.grpc.response.metadata."+key, val) +} + +// RPCJSONRPCErrorCode returns an attribute KeyValue conforming to the +// "rpc.jsonrpc.error_code" semantic conventions. It represents the `error.code` +// property of response if it is an error response. +func RPCJSONRPCErrorCode(val int) attribute.KeyValue { + return RPCJSONRPCErrorCodeKey.Int(val) +} + +// RPCJSONRPCErrorMessage returns an attribute KeyValue conforming to the +// "rpc.jsonrpc.error_message" semantic conventions. It represents the +// `error.message` property of response if it is an error response. +func RPCJSONRPCErrorMessage(val string) attribute.KeyValue { + return RPCJSONRPCErrorMessageKey.String(val) +} + +// RPCJSONRPCRequestID returns an attribute KeyValue conforming to the +// "rpc.jsonrpc.request_id" semantic conventions. It represents the `id` property +// of request or response. Since protocol allows id to be int, string, `null` or +// missing (for notifications), value is expected to be cast to string for +// simplicity. Use empty string in case of `null` value. Omit entirely if this is +// a notification. +func RPCJSONRPCRequestID(val string) attribute.KeyValue { + return RPCJSONRPCRequestIDKey.String(val) +} + +// RPCJSONRPCVersion returns an attribute KeyValue conforming to the +// "rpc.jsonrpc.version" semantic conventions. It represents the protocol version +// as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 doesn't +// specify this, the value can be omitted. +func RPCJSONRPCVersion(val string) attribute.KeyValue { + return RPCJSONRPCVersionKey.String(val) +} + +// RPCMessageCompressedSize returns an attribute KeyValue conforming to the +// "rpc.message.compressed_size" semantic conventions. It represents the +// compressed size of the message in bytes. +func RPCMessageCompressedSize(val int) attribute.KeyValue { + return RPCMessageCompressedSizeKey.Int(val) +} + +// RPCMessageID returns an attribute KeyValue conforming to the "rpc.message.id" +// semantic conventions. It MUST be calculated as two different counters starting +// from `1` one for sent messages and one for received message.. +func RPCMessageID(val int) attribute.KeyValue { + return RPCMessageIDKey.Int(val) +} + +// RPCMessageUncompressedSize returns an attribute KeyValue conforming to the +// "rpc.message.uncompressed_size" semantic conventions. It represents the +// uncompressed size of the message in bytes. +func RPCMessageUncompressedSize(val int) attribute.KeyValue { + return RPCMessageUncompressedSizeKey.Int(val) +} + +// RPCMethod returns an attribute KeyValue conforming to the "rpc.method" +// semantic conventions. It represents the name of the (logical) method being +// called, must be equal to the $method part in the span name. +func RPCMethod(val string) attribute.KeyValue { + return RPCMethodKey.String(val) +} + +// RPCService returns an attribute KeyValue conforming to the "rpc.service" +// semantic conventions. It represents the full (logical) name of the service +// being called, including its package name, if applicable. +func RPCService(val string) attribute.KeyValue { + return RPCServiceKey.String(val) +} + +// Enum values for rpc.connect_rpc.error_code +var ( + // cancelled + // Stability: development + RPCConnectRPCErrorCodeCancelled = RPCConnectRPCErrorCodeKey.String("cancelled") + // unknown + // Stability: development + RPCConnectRPCErrorCodeUnknown = RPCConnectRPCErrorCodeKey.String("unknown") + // invalid_argument + // Stability: development + RPCConnectRPCErrorCodeInvalidArgument = RPCConnectRPCErrorCodeKey.String("invalid_argument") + // deadline_exceeded + // Stability: development + RPCConnectRPCErrorCodeDeadlineExceeded = RPCConnectRPCErrorCodeKey.String("deadline_exceeded") + // not_found + // Stability: development + RPCConnectRPCErrorCodeNotFound = RPCConnectRPCErrorCodeKey.String("not_found") + // already_exists + // Stability: development + RPCConnectRPCErrorCodeAlreadyExists = RPCConnectRPCErrorCodeKey.String("already_exists") + // permission_denied + // Stability: development + RPCConnectRPCErrorCodePermissionDenied = RPCConnectRPCErrorCodeKey.String("permission_denied") + // resource_exhausted + // Stability: development + RPCConnectRPCErrorCodeResourceExhausted = RPCConnectRPCErrorCodeKey.String("resource_exhausted") + // failed_precondition + // Stability: development + RPCConnectRPCErrorCodeFailedPrecondition = RPCConnectRPCErrorCodeKey.String("failed_precondition") + // aborted + // Stability: development + RPCConnectRPCErrorCodeAborted = RPCConnectRPCErrorCodeKey.String("aborted") + // out_of_range + // Stability: development + RPCConnectRPCErrorCodeOutOfRange = RPCConnectRPCErrorCodeKey.String("out_of_range") + // unimplemented + // Stability: development + RPCConnectRPCErrorCodeUnimplemented = RPCConnectRPCErrorCodeKey.String("unimplemented") + // internal + // Stability: development + RPCConnectRPCErrorCodeInternal = RPCConnectRPCErrorCodeKey.String("internal") + // unavailable + // Stability: development + RPCConnectRPCErrorCodeUnavailable = RPCConnectRPCErrorCodeKey.String("unavailable") + // data_loss + // Stability: development + RPCConnectRPCErrorCodeDataLoss = RPCConnectRPCErrorCodeKey.String("data_loss") + // unauthenticated + // Stability: development + RPCConnectRPCErrorCodeUnauthenticated = RPCConnectRPCErrorCodeKey.String("unauthenticated") +) + +// Enum values for rpc.grpc.status_code +var ( + // OK + // Stability: development + RPCGRPCStatusCodeOk = RPCGRPCStatusCodeKey.Int(0) + // CANCELLED + // Stability: development + RPCGRPCStatusCodeCancelled = RPCGRPCStatusCodeKey.Int(1) + // UNKNOWN + // Stability: development + RPCGRPCStatusCodeUnknown = RPCGRPCStatusCodeKey.Int(2) + // INVALID_ARGUMENT + // Stability: development + RPCGRPCStatusCodeInvalidArgument = RPCGRPCStatusCodeKey.Int(3) + // DEADLINE_EXCEEDED + // Stability: development + RPCGRPCStatusCodeDeadlineExceeded = RPCGRPCStatusCodeKey.Int(4) + // NOT_FOUND + // Stability: development + RPCGRPCStatusCodeNotFound = RPCGRPCStatusCodeKey.Int(5) + // ALREADY_EXISTS + // Stability: development + RPCGRPCStatusCodeAlreadyExists = RPCGRPCStatusCodeKey.Int(6) + // PERMISSION_DENIED + // Stability: development + RPCGRPCStatusCodePermissionDenied = RPCGRPCStatusCodeKey.Int(7) + // RESOURCE_EXHAUSTED + // Stability: development + RPCGRPCStatusCodeResourceExhausted = RPCGRPCStatusCodeKey.Int(8) + // FAILED_PRECONDITION + // Stability: development + RPCGRPCStatusCodeFailedPrecondition = RPCGRPCStatusCodeKey.Int(9) + // ABORTED + // Stability: development + RPCGRPCStatusCodeAborted = RPCGRPCStatusCodeKey.Int(10) + // OUT_OF_RANGE + // Stability: development + RPCGRPCStatusCodeOutOfRange = RPCGRPCStatusCodeKey.Int(11) + // UNIMPLEMENTED + // Stability: development + RPCGRPCStatusCodeUnimplemented = RPCGRPCStatusCodeKey.Int(12) + // INTERNAL + // Stability: development + RPCGRPCStatusCodeInternal = RPCGRPCStatusCodeKey.Int(13) + // UNAVAILABLE + // Stability: development + RPCGRPCStatusCodeUnavailable = RPCGRPCStatusCodeKey.Int(14) + // DATA_LOSS + // Stability: development + RPCGRPCStatusCodeDataLoss = RPCGRPCStatusCodeKey.Int(15) + // UNAUTHENTICATED + // Stability: development + RPCGRPCStatusCodeUnauthenticated = RPCGRPCStatusCodeKey.Int(16) +) + +// Enum values for rpc.message.type +var ( + // sent + // Stability: development + RPCMessageTypeSent = RPCMessageTypeKey.String("SENT") + // received + // Stability: development + RPCMessageTypeReceived = RPCMessageTypeKey.String("RECEIVED") +) + +// Enum values for rpc.system +var ( + // gRPC + // Stability: development + RPCSystemGRPC = RPCSystemKey.String("grpc") + // Java RMI + // Stability: development + RPCSystemJavaRmi = RPCSystemKey.String("java_rmi") + // .NET WCF + // Stability: development + RPCSystemDotnetWcf = RPCSystemKey.String("dotnet_wcf") + // Apache Dubbo + // Stability: development + RPCSystemApacheDubbo = RPCSystemKey.String("apache_dubbo") + // Connect RPC + // Stability: development + RPCSystemConnectRPC = RPCSystemKey.String("connect_rpc") +) + +// Namespace: security_rule +const ( + // SecurityRuleCategoryKey is the attribute Key conforming to the + // "security_rule.category" semantic conventions. It represents a categorization + // value keyword used by the entity using the rule for detection of this event. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Attempted Information Leak" + SecurityRuleCategoryKey = attribute.Key("security_rule.category") + + // SecurityRuleDescriptionKey is the attribute Key conforming to the + // "security_rule.description" semantic conventions. It represents the + // description of the rule generating the event. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Block requests to public DNS over HTTPS / TLS protocols" + SecurityRuleDescriptionKey = attribute.Key("security_rule.description") + + // SecurityRuleLicenseKey is the attribute Key conforming to the + // "security_rule.license" semantic conventions. It represents the name of the + // license under which the rule used to generate this event is made available. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Apache 2.0" + SecurityRuleLicenseKey = attribute.Key("security_rule.license") + + // SecurityRuleNameKey is the attribute Key conforming to the + // "security_rule.name" semantic conventions. It represents the name of the rule + // or signature generating the event. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "BLOCK_DNS_over_TLS" + SecurityRuleNameKey = attribute.Key("security_rule.name") + + // SecurityRuleReferenceKey is the attribute Key conforming to the + // "security_rule.reference" semantic conventions. It represents the reference + // URL to additional information about the rule used to generate this event. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "https://en.wikipedia.org/wiki/DNS_over_TLS" + // Note: The URL can point to the vendor’s documentation about the rule. If + // that’s not available, it can also be a link to a more general page + // describing this type of alert. + SecurityRuleReferenceKey = attribute.Key("security_rule.reference") + + // SecurityRuleRulesetNameKey is the attribute Key conforming to the + // "security_rule.ruleset.name" semantic conventions. It represents the name of + // the ruleset, policy, group, or parent category in which the rule used to + // generate this event is a member. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Standard_Protocol_Filters" + SecurityRuleRulesetNameKey = attribute.Key("security_rule.ruleset.name") + + // SecurityRuleUUIDKey is the attribute Key conforming to the + // "security_rule.uuid" semantic conventions. It represents a rule ID that is + // unique within the scope of a set or group of agents, observers, or other + // entities using the rule for detection of this event. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "550e8400-e29b-41d4-a716-446655440000", "1100110011" + SecurityRuleUUIDKey = attribute.Key("security_rule.uuid") + + // SecurityRuleVersionKey is the attribute Key conforming to the + // "security_rule.version" semantic conventions. It represents the version / + // revision of the rule being used for analysis. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1.0.0" + SecurityRuleVersionKey = attribute.Key("security_rule.version") +) + +// SecurityRuleCategory returns an attribute KeyValue conforming to the +// "security_rule.category" semantic conventions. It represents a categorization +// value keyword used by the entity using the rule for detection of this event. +func SecurityRuleCategory(val string) attribute.KeyValue { + return SecurityRuleCategoryKey.String(val) +} + +// SecurityRuleDescription returns an attribute KeyValue conforming to the +// "security_rule.description" semantic conventions. It represents the +// description of the rule generating the event. +func SecurityRuleDescription(val string) attribute.KeyValue { + return SecurityRuleDescriptionKey.String(val) +} + +// SecurityRuleLicense returns an attribute KeyValue conforming to the +// "security_rule.license" semantic conventions. It represents the name of the +// license under which the rule used to generate this event is made available. +func SecurityRuleLicense(val string) attribute.KeyValue { + return SecurityRuleLicenseKey.String(val) +} + +// SecurityRuleName returns an attribute KeyValue conforming to the +// "security_rule.name" semantic conventions. It represents the name of the rule +// or signature generating the event. +func SecurityRuleName(val string) attribute.KeyValue { + return SecurityRuleNameKey.String(val) +} + +// SecurityRuleReference returns an attribute KeyValue conforming to the +// "security_rule.reference" semantic conventions. It represents the reference +// URL to additional information about the rule used to generate this event. +func SecurityRuleReference(val string) attribute.KeyValue { + return SecurityRuleReferenceKey.String(val) +} + +// SecurityRuleRulesetName returns an attribute KeyValue conforming to the +// "security_rule.ruleset.name" semantic conventions. It represents the name of +// the ruleset, policy, group, or parent category in which the rule used to +// generate this event is a member. +func SecurityRuleRulesetName(val string) attribute.KeyValue { + return SecurityRuleRulesetNameKey.String(val) +} + +// SecurityRuleUUID returns an attribute KeyValue conforming to the +// "security_rule.uuid" semantic conventions. It represents a rule ID that is +// unique within the scope of a set or group of agents, observers, or other +// entities using the rule for detection of this event. +func SecurityRuleUUID(val string) attribute.KeyValue { + return SecurityRuleUUIDKey.String(val) +} + +// SecurityRuleVersion returns an attribute KeyValue conforming to the +// "security_rule.version" semantic conventions. It represents the version / +// revision of the rule being used for analysis. +func SecurityRuleVersion(val string) attribute.KeyValue { + return SecurityRuleVersionKey.String(val) +} + +// Namespace: server +const ( + // ServerAddressKey is the attribute Key conforming to the "server.address" + // semantic conventions. It represents the server domain name if available + // without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "example.com", "10.1.2.80", "/tmp/my.sock" + // Note: When observed from the client side, and when communicating through an + // intermediary, `server.address` SHOULD represent the server address behind any + // intermediaries, for example proxies, if it's available. + ServerAddressKey = attribute.Key("server.address") + + // ServerPortKey is the attribute Key conforming to the "server.port" semantic + // conventions. It represents the server port number. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: 80, 8080, 443 + // Note: When observed from the client side, and when communicating through an + // intermediary, `server.port` SHOULD represent the server port behind any + // intermediaries, for example proxies, if it's available. + ServerPortKey = attribute.Key("server.port") +) + +// ServerAddress returns an attribute KeyValue conforming to the "server.address" +// semantic conventions. It represents the server domain name if available +// without reverse DNS lookup; otherwise, IP address or Unix domain socket name. +func ServerAddress(val string) attribute.KeyValue { + return ServerAddressKey.String(val) +} + +// ServerPort returns an attribute KeyValue conforming to the "server.port" +// semantic conventions. It represents the server port number. +func ServerPort(val int) attribute.KeyValue { + return ServerPortKey.Int(val) +} + +// Namespace: service +const ( + // ServiceInstanceIDKey is the attribute Key conforming to the + // "service.instance.id" semantic conventions. It represents the string ID of + // the service instance. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "627cc493-f310-47de-96bd-71410b7dec09" + // Note: MUST be unique for each instance of the same + // `service.namespace,service.name` pair (in other words + // `service.namespace,service.name,service.instance.id` triplet MUST be globally + // unique). The ID helps to + // distinguish instances of the same service that exist at the same time (e.g. + // instances of a horizontally scaled + // service). + // + // Implementations, such as SDKs, are recommended to generate a random Version 1 + // or Version 4 [RFC + // 4122] UUID, but are free to use an inherent unique ID as + // the source of + // this value if stability is desirable. In that case, the ID SHOULD be used as + // source of a UUID Version 5 and + // SHOULD use the following UUID as the namespace: + // `4d63009a-8d0f-11ee-aad7-4c796ed8e320`. + // + // UUIDs are typically recommended, as only an opaque value for the purposes of + // identifying a service instance is + // needed. Similar to what can be seen in the man page for the + // [`/etc/machine-id`] file, the underlying + // data, such as pod name and namespace should be treated as confidential, being + // the user's choice to expose it + // or not via another resource attribute. + // + // For applications running behind an application server (like unicorn), we do + // not recommend using one identifier + // for all processes participating in the application. Instead, it's recommended + // each division (e.g. a worker + // thread in unicorn) to have its own instance.id. + // + // It's not recommended for a Collector to set `service.instance.id` if it can't + // unambiguously determine the + // service instance that is generating that telemetry. For instance, creating an + // UUID based on `pod.name` will + // likely be wrong, as the Collector might not know from which container within + // that pod the telemetry originated. + // However, Collectors can set the `service.instance.id` if they can + // unambiguously determine the service instance + // for that telemetry. This is typically the case for scraping receivers, as + // they know the target address and + // port. + // + // [RFC + // 4122]: https://www.ietf.org/rfc/rfc4122.txt + // [`/etc/machine-id`]: https://www.freedesktop.org/software/systemd/man/latest/machine-id.html + ServiceInstanceIDKey = attribute.Key("service.instance.id") + + // ServiceNameKey is the attribute Key conforming to the "service.name" semantic + // conventions. It represents the logical name of the service. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "shoppingcart" + // Note: MUST be the same for all instances of horizontally scaled services. If + // the value was not specified, SDKs MUST fallback to `unknown_service:` + // concatenated with [`process.executable.name`], e.g. `unknown_service:bash`. + // If `process.executable.name` is not available, the value MUST be set to + // `unknown_service`. + // + // [`process.executable.name`]: process.md + ServiceNameKey = attribute.Key("service.name") + + // ServiceNamespaceKey is the attribute Key conforming to the + // "service.namespace" semantic conventions. It represents a namespace for + // `service.name`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Shop" + // Note: A string value having a meaning that helps to distinguish a group of + // services, for example the team name that owns a group of services. + // `service.name` is expected to be unique within the same namespace. If + // `service.namespace` is not specified in the Resource then `service.name` is + // expected to be unique for all services that have no explicit namespace + // defined (so the empty/unspecified namespace is simply one more valid + // namespace). Zero-length namespace string is assumed equal to unspecified + // namespace. + ServiceNamespaceKey = attribute.Key("service.namespace") + + // ServiceVersionKey is the attribute Key conforming to the "service.version" + // semantic conventions. It represents the version string of the service API or + // implementation. The format is not defined by these conventions. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "2.0.0", "a01dbef8a" + ServiceVersionKey = attribute.Key("service.version") +) + +// ServiceInstanceID returns an attribute KeyValue conforming to the +// "service.instance.id" semantic conventions. It represents the string ID of the +// service instance. +func ServiceInstanceID(val string) attribute.KeyValue { + return ServiceInstanceIDKey.String(val) +} + +// ServiceName returns an attribute KeyValue conforming to the "service.name" +// semantic conventions. It represents the logical name of the service. +func ServiceName(val string) attribute.KeyValue { + return ServiceNameKey.String(val) +} + +// ServiceNamespace returns an attribute KeyValue conforming to the +// "service.namespace" semantic conventions. It represents a namespace for +// `service.name`. +func ServiceNamespace(val string) attribute.KeyValue { + return ServiceNamespaceKey.String(val) +} + +// ServiceVersion returns an attribute KeyValue conforming to the +// "service.version" semantic conventions. It represents the version string of +// the service API or implementation. The format is not defined by these +// conventions. +func ServiceVersion(val string) attribute.KeyValue { + return ServiceVersionKey.String(val) +} + +// Namespace: session +const ( + // SessionIDKey is the attribute Key conforming to the "session.id" semantic + // conventions. It represents a unique id to identify a session. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 00112233-4455-6677-8899-aabbccddeeff + SessionIDKey = attribute.Key("session.id") + + // SessionPreviousIDKey is the attribute Key conforming to the + // "session.previous_id" semantic conventions. It represents the previous + // `session.id` for this user, when known. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 00112233-4455-6677-8899-aabbccddeeff + SessionPreviousIDKey = attribute.Key("session.previous_id") +) + +// SessionID returns an attribute KeyValue conforming to the "session.id" +// semantic conventions. It represents a unique id to identify a session. +func SessionID(val string) attribute.KeyValue { + return SessionIDKey.String(val) +} + +// SessionPreviousID returns an attribute KeyValue conforming to the +// "session.previous_id" semantic conventions. It represents the previous +// `session.id` for this user, when known. +func SessionPreviousID(val string) attribute.KeyValue { + return SessionPreviousIDKey.String(val) +} + +// Namespace: signalr +const ( + // SignalRConnectionStatusKey is the attribute Key conforming to the + // "signalr.connection.status" semantic conventions. It represents the signalR + // HTTP connection closure status. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "app_shutdown", "timeout" + SignalRConnectionStatusKey = attribute.Key("signalr.connection.status") + + // SignalRTransportKey is the attribute Key conforming to the + // "signalr.transport" semantic conventions. It represents the + // [SignalR transport type]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "web_sockets", "long_polling" + // + // [SignalR transport type]: https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md + SignalRTransportKey = attribute.Key("signalr.transport") +) + +// Enum values for signalr.connection.status +var ( + // The connection was closed normally. + // Stability: stable + SignalRConnectionStatusNormalClosure = SignalRConnectionStatusKey.String("normal_closure") + // The connection was closed due to a timeout. + // Stability: stable + SignalRConnectionStatusTimeout = SignalRConnectionStatusKey.String("timeout") + // The connection was closed because the app is shutting down. + // Stability: stable + SignalRConnectionStatusAppShutdown = SignalRConnectionStatusKey.String("app_shutdown") +) + +// Enum values for signalr.transport +var ( + // ServerSentEvents protocol + // Stability: stable + SignalRTransportServerSentEvents = SignalRTransportKey.String("server_sent_events") + // LongPolling protocol + // Stability: stable + SignalRTransportLongPolling = SignalRTransportKey.String("long_polling") + // WebSockets protocol + // Stability: stable + SignalRTransportWebSockets = SignalRTransportKey.String("web_sockets") +) + +// Namespace: source +const ( + // SourceAddressKey is the attribute Key conforming to the "source.address" + // semantic conventions. It represents the source address - domain name if + // available without reverse DNS lookup; otherwise, IP address or Unix domain + // socket name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "source.example.com", "10.1.2.80", "/tmp/my.sock" + // Note: When observed from the destination side, and when communicating through + // an intermediary, `source.address` SHOULD represent the source address behind + // any intermediaries, for example proxies, if it's available. + SourceAddressKey = attribute.Key("source.address") + + // SourcePortKey is the attribute Key conforming to the "source.port" semantic + // conventions. It represents the source port number. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 3389, 2888 + SourcePortKey = attribute.Key("source.port") +) + +// SourceAddress returns an attribute KeyValue conforming to the "source.address" +// semantic conventions. It represents the source address - domain name if +// available without reverse DNS lookup; otherwise, IP address or Unix domain +// socket name. +func SourceAddress(val string) attribute.KeyValue { + return SourceAddressKey.String(val) +} + +// SourcePort returns an attribute KeyValue conforming to the "source.port" +// semantic conventions. It represents the source port number. +func SourcePort(val int) attribute.KeyValue { + return SourcePortKey.Int(val) +} + +// Namespace: system +const ( + // SystemCPULogicalNumberKey is the attribute Key conforming to the + // "system.cpu.logical_number" semantic conventions. It represents the + // deprecated, use `cpu.logical_number` instead. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 1 + SystemCPULogicalNumberKey = attribute.Key("system.cpu.logical_number") + + // SystemDeviceKey is the attribute Key conforming to the "system.device" + // semantic conventions. It represents the device identifier. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "(identifier)" + SystemDeviceKey = attribute.Key("system.device") + + // SystemFilesystemModeKey is the attribute Key conforming to the + // "system.filesystem.mode" semantic conventions. It represents the filesystem + // mode. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "rw, ro" + SystemFilesystemModeKey = attribute.Key("system.filesystem.mode") + + // SystemFilesystemMountpointKey is the attribute Key conforming to the + // "system.filesystem.mountpoint" semantic conventions. It represents the + // filesystem mount path. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/mnt/data" + SystemFilesystemMountpointKey = attribute.Key("system.filesystem.mountpoint") + + // SystemFilesystemStateKey is the attribute Key conforming to the + // "system.filesystem.state" semantic conventions. It represents the filesystem + // state. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "used" + SystemFilesystemStateKey = attribute.Key("system.filesystem.state") + + // SystemFilesystemTypeKey is the attribute Key conforming to the + // "system.filesystem.type" semantic conventions. It represents the filesystem + // type. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "ext4" + SystemFilesystemTypeKey = attribute.Key("system.filesystem.type") + + // SystemMemoryStateKey is the attribute Key conforming to the + // "system.memory.state" semantic conventions. It represents the memory state. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "free", "cached" + SystemMemoryStateKey = attribute.Key("system.memory.state") + + // SystemPagingDirectionKey is the attribute Key conforming to the + // "system.paging.direction" semantic conventions. It represents the paging + // access direction. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "in" + SystemPagingDirectionKey = attribute.Key("system.paging.direction") + + // SystemPagingStateKey is the attribute Key conforming to the + // "system.paging.state" semantic conventions. It represents the memory paging + // state. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "free" + SystemPagingStateKey = attribute.Key("system.paging.state") + + // SystemPagingTypeKey is the attribute Key conforming to the + // "system.paging.type" semantic conventions. It represents the memory paging + // type. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "minor" + SystemPagingTypeKey = attribute.Key("system.paging.type") + + // SystemProcessStatusKey is the attribute Key conforming to the + // "system.process.status" semantic conventions. It represents the process + // state, e.g., [Linux Process State Codes]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "running" + // + // [Linux Process State Codes]: https://man7.org/linux/man-pages/man1/ps.1.html#PROCESS_STATE_CODES + SystemProcessStatusKey = attribute.Key("system.process.status") +) + +// SystemCPULogicalNumber returns an attribute KeyValue conforming to the +// "system.cpu.logical_number" semantic conventions. It represents the +// deprecated, use `cpu.logical_number` instead. +func SystemCPULogicalNumber(val int) attribute.KeyValue { + return SystemCPULogicalNumberKey.Int(val) +} + +// SystemDevice returns an attribute KeyValue conforming to the "system.device" +// semantic conventions. It represents the device identifier. +func SystemDevice(val string) attribute.KeyValue { + return SystemDeviceKey.String(val) +} + +// SystemFilesystemMode returns an attribute KeyValue conforming to the +// "system.filesystem.mode" semantic conventions. It represents the filesystem +// mode. +func SystemFilesystemMode(val string) attribute.KeyValue { + return SystemFilesystemModeKey.String(val) +} + +// SystemFilesystemMountpoint returns an attribute KeyValue conforming to the +// "system.filesystem.mountpoint" semantic conventions. It represents the +// filesystem mount path. +func SystemFilesystemMountpoint(val string) attribute.KeyValue { + return SystemFilesystemMountpointKey.String(val) +} + +// Enum values for system.filesystem.state +var ( + // used + // Stability: development + SystemFilesystemStateUsed = SystemFilesystemStateKey.String("used") + // free + // Stability: development + SystemFilesystemStateFree = SystemFilesystemStateKey.String("free") + // reserved + // Stability: development + SystemFilesystemStateReserved = SystemFilesystemStateKey.String("reserved") +) + +// Enum values for system.filesystem.type +var ( + // fat32 + // Stability: development + SystemFilesystemTypeFat32 = SystemFilesystemTypeKey.String("fat32") + // exfat + // Stability: development + SystemFilesystemTypeExfat = SystemFilesystemTypeKey.String("exfat") + // ntfs + // Stability: development + SystemFilesystemTypeNtfs = SystemFilesystemTypeKey.String("ntfs") + // refs + // Stability: development + SystemFilesystemTypeRefs = SystemFilesystemTypeKey.String("refs") + // hfsplus + // Stability: development + SystemFilesystemTypeHfsplus = SystemFilesystemTypeKey.String("hfsplus") + // ext4 + // Stability: development + SystemFilesystemTypeExt4 = SystemFilesystemTypeKey.String("ext4") +) + +// Enum values for system.memory.state +var ( + // Actual used virtual memory in bytes. + // Stability: development + SystemMemoryStateUsed = SystemMemoryStateKey.String("used") + // free + // Stability: development + SystemMemoryStateFree = SystemMemoryStateKey.String("free") + // buffers + // Stability: development + SystemMemoryStateBuffers = SystemMemoryStateKey.String("buffers") + // cached + // Stability: development + SystemMemoryStateCached = SystemMemoryStateKey.String("cached") +) + +// Enum values for system.paging.direction +var ( + // in + // Stability: development + SystemPagingDirectionIn = SystemPagingDirectionKey.String("in") + // out + // Stability: development + SystemPagingDirectionOut = SystemPagingDirectionKey.String("out") +) + +// Enum values for system.paging.state +var ( + // used + // Stability: development + SystemPagingStateUsed = SystemPagingStateKey.String("used") + // free + // Stability: development + SystemPagingStateFree = SystemPagingStateKey.String("free") +) + +// Enum values for system.paging.type +var ( + // major + // Stability: development + SystemPagingTypeMajor = SystemPagingTypeKey.String("major") + // minor + // Stability: development + SystemPagingTypeMinor = SystemPagingTypeKey.String("minor") +) + +// Enum values for system.process.status +var ( + // running + // Stability: development + SystemProcessStatusRunning = SystemProcessStatusKey.String("running") + // sleeping + // Stability: development + SystemProcessStatusSleeping = SystemProcessStatusKey.String("sleeping") + // stopped + // Stability: development + SystemProcessStatusStopped = SystemProcessStatusKey.String("stopped") + // defunct + // Stability: development + SystemProcessStatusDefunct = SystemProcessStatusKey.String("defunct") +) + +// Namespace: telemetry +const ( + // TelemetryDistroNameKey is the attribute Key conforming to the + // "telemetry.distro.name" semantic conventions. It represents the name of the + // auto instrumentation agent or distribution, if used. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "parts-unlimited-java" + // Note: Official auto instrumentation agents and distributions SHOULD set the + // `telemetry.distro.name` attribute to + // a string starting with `opentelemetry-`, e.g. + // `opentelemetry-java-instrumentation`. + TelemetryDistroNameKey = attribute.Key("telemetry.distro.name") + + // TelemetryDistroVersionKey is the attribute Key conforming to the + // "telemetry.distro.version" semantic conventions. It represents the version + // string of the auto instrumentation agent or distribution, if used. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1.2.3" + TelemetryDistroVersionKey = attribute.Key("telemetry.distro.version") + + // TelemetrySDKLanguageKey is the attribute Key conforming to the + // "telemetry.sdk.language" semantic conventions. It represents the language of + // the telemetry SDK. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: + TelemetrySDKLanguageKey = attribute.Key("telemetry.sdk.language") + + // TelemetrySDKNameKey is the attribute Key conforming to the + // "telemetry.sdk.name" semantic conventions. It represents the name of the + // telemetry SDK as defined above. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "opentelemetry" + // Note: The OpenTelemetry SDK MUST set the `telemetry.sdk.name` attribute to + // `opentelemetry`. + // If another SDK, like a fork or a vendor-provided implementation, is used, + // this SDK MUST set the + // `telemetry.sdk.name` attribute to the fully-qualified class or module name of + // this SDK's main entry point + // or another suitable identifier depending on the language. + // The identifier `opentelemetry` is reserved and MUST NOT be used in this case. + // All custom identifiers SHOULD be stable across different versions of an + // implementation. + TelemetrySDKNameKey = attribute.Key("telemetry.sdk.name") + + // TelemetrySDKVersionKey is the attribute Key conforming to the + // "telemetry.sdk.version" semantic conventions. It represents the version + // string of the telemetry SDK. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "1.2.3" + TelemetrySDKVersionKey = attribute.Key("telemetry.sdk.version") +) + +// TelemetryDistroName returns an attribute KeyValue conforming to the +// "telemetry.distro.name" semantic conventions. It represents the name of the +// auto instrumentation agent or distribution, if used. +func TelemetryDistroName(val string) attribute.KeyValue { + return TelemetryDistroNameKey.String(val) +} + +// TelemetryDistroVersion returns an attribute KeyValue conforming to the +// "telemetry.distro.version" semantic conventions. It represents the version +// string of the auto instrumentation agent or distribution, if used. +func TelemetryDistroVersion(val string) attribute.KeyValue { + return TelemetryDistroVersionKey.String(val) +} + +// TelemetrySDKName returns an attribute KeyValue conforming to the +// "telemetry.sdk.name" semantic conventions. It represents the name of the +// telemetry SDK as defined above. +func TelemetrySDKName(val string) attribute.KeyValue { + return TelemetrySDKNameKey.String(val) +} + +// TelemetrySDKVersion returns an attribute KeyValue conforming to the +// "telemetry.sdk.version" semantic conventions. It represents the version string +// of the telemetry SDK. +func TelemetrySDKVersion(val string) attribute.KeyValue { + return TelemetrySDKVersionKey.String(val) +} + +// Enum values for telemetry.sdk.language +var ( + // cpp + // Stability: stable + TelemetrySDKLanguageCPP = TelemetrySDKLanguageKey.String("cpp") + // dotnet + // Stability: stable + TelemetrySDKLanguageDotnet = TelemetrySDKLanguageKey.String("dotnet") + // erlang + // Stability: stable + TelemetrySDKLanguageErlang = TelemetrySDKLanguageKey.String("erlang") + // go + // Stability: stable + TelemetrySDKLanguageGo = TelemetrySDKLanguageKey.String("go") + // java + // Stability: stable + TelemetrySDKLanguageJava = TelemetrySDKLanguageKey.String("java") + // nodejs + // Stability: stable + TelemetrySDKLanguageNodejs = TelemetrySDKLanguageKey.String("nodejs") + // php + // Stability: stable + TelemetrySDKLanguagePHP = TelemetrySDKLanguageKey.String("php") + // python + // Stability: stable + TelemetrySDKLanguagePython = TelemetrySDKLanguageKey.String("python") + // ruby + // Stability: stable + TelemetrySDKLanguageRuby = TelemetrySDKLanguageKey.String("ruby") + // rust + // Stability: stable + TelemetrySDKLanguageRust = TelemetrySDKLanguageKey.String("rust") + // swift + // Stability: stable + TelemetrySDKLanguageSwift = TelemetrySDKLanguageKey.String("swift") + // webjs + // Stability: stable + TelemetrySDKLanguageWebJS = TelemetrySDKLanguageKey.String("webjs") +) + +// Namespace: test +const ( + // TestCaseNameKey is the attribute Key conforming to the "test.case.name" + // semantic conventions. It represents the fully qualified human readable name + // of the [test case]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "org.example.TestCase1.test1", "example/tests/TestCase1.test1", + // "ExampleTestCase1_test1" + // + // [test case]: https://wikipedia.org/wiki/Test_case + TestCaseNameKey = attribute.Key("test.case.name") + + // TestCaseResultStatusKey is the attribute Key conforming to the + // "test.case.result.status" semantic conventions. It represents the status of + // the actual test case result from test execution. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "pass", "fail" + TestCaseResultStatusKey = attribute.Key("test.case.result.status") + + // TestSuiteNameKey is the attribute Key conforming to the "test.suite.name" + // semantic conventions. It represents the human readable name of a [test suite] + // . + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "TestSuite1" + // + // [test suite]: https://wikipedia.org/wiki/Test_suite + TestSuiteNameKey = attribute.Key("test.suite.name") + + // TestSuiteRunStatusKey is the attribute Key conforming to the + // "test.suite.run.status" semantic conventions. It represents the status of the + // test suite run. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "success", "failure", "skipped", "aborted", "timed_out", + // "in_progress" + TestSuiteRunStatusKey = attribute.Key("test.suite.run.status") +) + +// TestCaseName returns an attribute KeyValue conforming to the "test.case.name" +// semantic conventions. It represents the fully qualified human readable name of +// the [test case]. +// +// [test case]: https://wikipedia.org/wiki/Test_case +func TestCaseName(val string) attribute.KeyValue { + return TestCaseNameKey.String(val) +} + +// TestSuiteName returns an attribute KeyValue conforming to the +// "test.suite.name" semantic conventions. It represents the human readable name +// of a [test suite]. +// +// [test suite]: https://wikipedia.org/wiki/Test_suite +func TestSuiteName(val string) attribute.KeyValue { + return TestSuiteNameKey.String(val) +} + +// Enum values for test.case.result.status +var ( + // pass + // Stability: development + TestCaseResultStatusPass = TestCaseResultStatusKey.String("pass") + // fail + // Stability: development + TestCaseResultStatusFail = TestCaseResultStatusKey.String("fail") +) + +// Enum values for test.suite.run.status +var ( + // success + // Stability: development + TestSuiteRunStatusSuccess = TestSuiteRunStatusKey.String("success") + // failure + // Stability: development + TestSuiteRunStatusFailure = TestSuiteRunStatusKey.String("failure") + // skipped + // Stability: development + TestSuiteRunStatusSkipped = TestSuiteRunStatusKey.String("skipped") + // aborted + // Stability: development + TestSuiteRunStatusAborted = TestSuiteRunStatusKey.String("aborted") + // timed_out + // Stability: development + TestSuiteRunStatusTimedOut = TestSuiteRunStatusKey.String("timed_out") + // in_progress + // Stability: development + TestSuiteRunStatusInProgress = TestSuiteRunStatusKey.String("in_progress") +) + +// Namespace: thread +const ( + // ThreadIDKey is the attribute Key conforming to the "thread.id" semantic + // conventions. It represents the current "managed" thread ID (as opposed to OS + // thread ID). + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + ThreadIDKey = attribute.Key("thread.id") + + // ThreadNameKey is the attribute Key conforming to the "thread.name" semantic + // conventions. It represents the current thread name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: main + ThreadNameKey = attribute.Key("thread.name") +) + +// ThreadID returns an attribute KeyValue conforming to the "thread.id" semantic +// conventions. It represents the current "managed" thread ID (as opposed to OS +// thread ID). +func ThreadID(val int) attribute.KeyValue { + return ThreadIDKey.Int(val) +} + +// ThreadName returns an attribute KeyValue conforming to the "thread.name" +// semantic conventions. It represents the current thread name. +func ThreadName(val string) attribute.KeyValue { + return ThreadNameKey.String(val) +} + +// Namespace: tls +const ( + // TLSCipherKey is the attribute Key conforming to the "tls.cipher" semantic + // conventions. It represents the string indicating the [cipher] used during the + // current connection. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "TLS_RSA_WITH_3DES_EDE_CBC_SHA", + // "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" + // Note: The values allowed for `tls.cipher` MUST be one of the `Descriptions` + // of the [registered TLS Cipher Suits]. + // + // [cipher]: https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5 + // [registered TLS Cipher Suits]: https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#table-tls-parameters-4 + TLSCipherKey = attribute.Key("tls.cipher") + + // TLSClientCertificateKey is the attribute Key conforming to the + // "tls.client.certificate" semantic conventions. It represents the PEM-encoded + // stand-alone certificate offered by the client. This is usually + // mutually-exclusive of `client.certificate_chain` since this value also exists + // in that list. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "MII..." + TLSClientCertificateKey = attribute.Key("tls.client.certificate") + + // TLSClientCertificateChainKey is the attribute Key conforming to the + // "tls.client.certificate_chain" semantic conventions. It represents the array + // of PEM-encoded certificates that make up the certificate chain offered by the + // client. This is usually mutually-exclusive of `client.certificate` since that + // value should be the first certificate in the chain. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "MII...", "MI..." + TLSClientCertificateChainKey = attribute.Key("tls.client.certificate_chain") + + // TLSClientHashMd5Key is the attribute Key conforming to the + // "tls.client.hash.md5" semantic conventions. It represents the certificate + // fingerprint using the MD5 digest of DER-encoded version of certificate + // offered by the client. For consistency with other hash values, this value + // should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC" + TLSClientHashMd5Key = attribute.Key("tls.client.hash.md5") + + // TLSClientHashSha1Key is the attribute Key conforming to the + // "tls.client.hash.sha1" semantic conventions. It represents the certificate + // fingerprint using the SHA1 digest of DER-encoded version of certificate + // offered by the client. For consistency with other hash values, this value + // should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "9E393D93138888D288266C2D915214D1D1CCEB2A" + TLSClientHashSha1Key = attribute.Key("tls.client.hash.sha1") + + // TLSClientHashSha256Key is the attribute Key conforming to the + // "tls.client.hash.sha256" semantic conventions. It represents the certificate + // fingerprint using the SHA256 digest of DER-encoded version of certificate + // offered by the client. For consistency with other hash values, this value + // should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0" + TLSClientHashSha256Key = attribute.Key("tls.client.hash.sha256") + + // TLSClientIssuerKey is the attribute Key conforming to the "tls.client.issuer" + // semantic conventions. It represents the distinguished name of [subject] of + // the issuer of the x.509 certificate presented by the client. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com" + // + // [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 + TLSClientIssuerKey = attribute.Key("tls.client.issuer") + + // TLSClientJa3Key is the attribute Key conforming to the "tls.client.ja3" + // semantic conventions. It represents a hash that identifies clients based on + // how they perform an SSL/TLS handshake. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "d4e5b18d6b55c71272893221c96ba240" + TLSClientJa3Key = attribute.Key("tls.client.ja3") + + // TLSClientNotAfterKey is the attribute Key conforming to the + // "tls.client.not_after" semantic conventions. It represents the date/Time + // indicating when client certificate is no longer considered valid. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021-01-01T00:00:00.000Z" + TLSClientNotAfterKey = attribute.Key("tls.client.not_after") + + // TLSClientNotBeforeKey is the attribute Key conforming to the + // "tls.client.not_before" semantic conventions. It represents the date/Time + // indicating when client certificate is first considered valid. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1970-01-01T00:00:00.000Z" + TLSClientNotBeforeKey = attribute.Key("tls.client.not_before") + + // TLSClientSubjectKey is the attribute Key conforming to the + // "tls.client.subject" semantic conventions. It represents the distinguished + // name of subject of the x.509 certificate presented by the client. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CN=myclient, OU=Documentation Team, DC=example, DC=com" + TLSClientSubjectKey = attribute.Key("tls.client.subject") + + // TLSClientSupportedCiphersKey is the attribute Key conforming to the + // "tls.client.supported_ciphers" semantic conventions. It represents the array + // of ciphers offered by the client during the client hello. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", + // "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" + TLSClientSupportedCiphersKey = attribute.Key("tls.client.supported_ciphers") + + // TLSCurveKey is the attribute Key conforming to the "tls.curve" semantic + // conventions. It represents the string indicating the curve used for the given + // cipher, when applicable. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "secp256r1" + TLSCurveKey = attribute.Key("tls.curve") + + // TLSEstablishedKey is the attribute Key conforming to the "tls.established" + // semantic conventions. It represents the boolean flag indicating if the TLS + // negotiation was successful and transitioned to an encrypted tunnel. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: true + TLSEstablishedKey = attribute.Key("tls.established") + + // TLSNextProtocolKey is the attribute Key conforming to the "tls.next_protocol" + // semantic conventions. It represents the string indicating the protocol being + // tunneled. Per the values in the [IANA registry], this string should be lower + // case. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "http/1.1" + // + // [IANA registry]: https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids + TLSNextProtocolKey = attribute.Key("tls.next_protocol") + + // TLSProtocolNameKey is the attribute Key conforming to the "tls.protocol.name" + // semantic conventions. It represents the normalized lowercase protocol name + // parsed from original string of the negotiated [SSL/TLS protocol version]. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // + // [SSL/TLS protocol version]: https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values + TLSProtocolNameKey = attribute.Key("tls.protocol.name") + + // TLSProtocolVersionKey is the attribute Key conforming to the + // "tls.protocol.version" semantic conventions. It represents the numeric part + // of the version parsed from the original string of the negotiated + // [SSL/TLS protocol version]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1.2", "3" + // + // [SSL/TLS protocol version]: https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values + TLSProtocolVersionKey = attribute.Key("tls.protocol.version") + + // TLSResumedKey is the attribute Key conforming to the "tls.resumed" semantic + // conventions. It represents the boolean flag indicating if this TLS connection + // was resumed from an existing TLS negotiation. + // + // Type: boolean + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: true + TLSResumedKey = attribute.Key("tls.resumed") + + // TLSServerCertificateKey is the attribute Key conforming to the + // "tls.server.certificate" semantic conventions. It represents the PEM-encoded + // stand-alone certificate offered by the server. This is usually + // mutually-exclusive of `server.certificate_chain` since this value also exists + // in that list. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "MII..." + TLSServerCertificateKey = attribute.Key("tls.server.certificate") + + // TLSServerCertificateChainKey is the attribute Key conforming to the + // "tls.server.certificate_chain" semantic conventions. It represents the array + // of PEM-encoded certificates that make up the certificate chain offered by the + // server. This is usually mutually-exclusive of `server.certificate` since that + // value should be the first certificate in the chain. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "MII...", "MI..." + TLSServerCertificateChainKey = attribute.Key("tls.server.certificate_chain") + + // TLSServerHashMd5Key is the attribute Key conforming to the + // "tls.server.hash.md5" semantic conventions. It represents the certificate + // fingerprint using the MD5 digest of DER-encoded version of certificate + // offered by the server. For consistency with other hash values, this value + // should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC" + TLSServerHashMd5Key = attribute.Key("tls.server.hash.md5") + + // TLSServerHashSha1Key is the attribute Key conforming to the + // "tls.server.hash.sha1" semantic conventions. It represents the certificate + // fingerprint using the SHA1 digest of DER-encoded version of certificate + // offered by the server. For consistency with other hash values, this value + // should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "9E393D93138888D288266C2D915214D1D1CCEB2A" + TLSServerHashSha1Key = attribute.Key("tls.server.hash.sha1") + + // TLSServerHashSha256Key is the attribute Key conforming to the + // "tls.server.hash.sha256" semantic conventions. It represents the certificate + // fingerprint using the SHA256 digest of DER-encoded version of certificate + // offered by the server. For consistency with other hash values, this value + // should be formatted as an uppercase hash. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0" + TLSServerHashSha256Key = attribute.Key("tls.server.hash.sha256") + + // TLSServerIssuerKey is the attribute Key conforming to the "tls.server.issuer" + // semantic conventions. It represents the distinguished name of [subject] of + // the issuer of the x.509 certificate presented by the client. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com" + // + // [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 + TLSServerIssuerKey = attribute.Key("tls.server.issuer") + + // TLSServerJa3sKey is the attribute Key conforming to the "tls.server.ja3s" + // semantic conventions. It represents a hash that identifies servers based on + // how they perform an SSL/TLS handshake. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "d4e5b18d6b55c71272893221c96ba240" + TLSServerJa3sKey = attribute.Key("tls.server.ja3s") + + // TLSServerNotAfterKey is the attribute Key conforming to the + // "tls.server.not_after" semantic conventions. It represents the date/Time + // indicating when server certificate is no longer considered valid. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "2021-01-01T00:00:00.000Z" + TLSServerNotAfterKey = attribute.Key("tls.server.not_after") + + // TLSServerNotBeforeKey is the attribute Key conforming to the + // "tls.server.not_before" semantic conventions. It represents the date/Time + // indicating when server certificate is first considered valid. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "1970-01-01T00:00:00.000Z" + TLSServerNotBeforeKey = attribute.Key("tls.server.not_before") + + // TLSServerSubjectKey is the attribute Key conforming to the + // "tls.server.subject" semantic conventions. It represents the distinguished + // name of subject of the x.509 certificate presented by the server. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "CN=myserver, OU=Documentation Team, DC=example, DC=com" + TLSServerSubjectKey = attribute.Key("tls.server.subject") +) + +// TLSCipher returns an attribute KeyValue conforming to the "tls.cipher" +// semantic conventions. It represents the string indicating the [cipher] used +// during the current connection. +// +// [cipher]: https://datatracker.ietf.org/doc/html/rfc5246#appendix-A.5 +func TLSCipher(val string) attribute.KeyValue { + return TLSCipherKey.String(val) +} + +// TLSClientCertificate returns an attribute KeyValue conforming to the +// "tls.client.certificate" semantic conventions. It represents the PEM-encoded +// stand-alone certificate offered by the client. This is usually +// mutually-exclusive of `client.certificate_chain` since this value also exists +// in that list. +func TLSClientCertificate(val string) attribute.KeyValue { + return TLSClientCertificateKey.String(val) +} + +// TLSClientCertificateChain returns an attribute KeyValue conforming to the +// "tls.client.certificate_chain" semantic conventions. It represents the array +// of PEM-encoded certificates that make up the certificate chain offered by the +// client. This is usually mutually-exclusive of `client.certificate` since that +// value should be the first certificate in the chain. +func TLSClientCertificateChain(val ...string) attribute.KeyValue { + return TLSClientCertificateChainKey.StringSlice(val) +} + +// TLSClientHashMd5 returns an attribute KeyValue conforming to the +// "tls.client.hash.md5" semantic conventions. It represents the certificate +// fingerprint using the MD5 digest of DER-encoded version of certificate offered +// by the client. For consistency with other hash values, this value should be +// formatted as an uppercase hash. +func TLSClientHashMd5(val string) attribute.KeyValue { + return TLSClientHashMd5Key.String(val) +} + +// TLSClientHashSha1 returns an attribute KeyValue conforming to the +// "tls.client.hash.sha1" semantic conventions. It represents the certificate +// fingerprint using the SHA1 digest of DER-encoded version of certificate +// offered by the client. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSClientHashSha1(val string) attribute.KeyValue { + return TLSClientHashSha1Key.String(val) +} + +// TLSClientHashSha256 returns an attribute KeyValue conforming to the +// "tls.client.hash.sha256" semantic conventions. It represents the certificate +// fingerprint using the SHA256 digest of DER-encoded version of certificate +// offered by the client. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSClientHashSha256(val string) attribute.KeyValue { + return TLSClientHashSha256Key.String(val) +} + +// TLSClientIssuer returns an attribute KeyValue conforming to the +// "tls.client.issuer" semantic conventions. It represents the distinguished name +// of [subject] of the issuer of the x.509 certificate presented by the client. +// +// [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 +func TLSClientIssuer(val string) attribute.KeyValue { + return TLSClientIssuerKey.String(val) +} + +// TLSClientJa3 returns an attribute KeyValue conforming to the "tls.client.ja3" +// semantic conventions. It represents a hash that identifies clients based on +// how they perform an SSL/TLS handshake. +func TLSClientJa3(val string) attribute.KeyValue { + return TLSClientJa3Key.String(val) +} + +// TLSClientNotAfter returns an attribute KeyValue conforming to the +// "tls.client.not_after" semantic conventions. It represents the date/Time +// indicating when client certificate is no longer considered valid. +func TLSClientNotAfter(val string) attribute.KeyValue { + return TLSClientNotAfterKey.String(val) +} + +// TLSClientNotBefore returns an attribute KeyValue conforming to the +// "tls.client.not_before" semantic conventions. It represents the date/Time +// indicating when client certificate is first considered valid. +func TLSClientNotBefore(val string) attribute.KeyValue { + return TLSClientNotBeforeKey.String(val) +} + +// TLSClientSubject returns an attribute KeyValue conforming to the +// "tls.client.subject" semantic conventions. It represents the distinguished +// name of subject of the x.509 certificate presented by the client. +func TLSClientSubject(val string) attribute.KeyValue { + return TLSClientSubjectKey.String(val) +} + +// TLSClientSupportedCiphers returns an attribute KeyValue conforming to the +// "tls.client.supported_ciphers" semantic conventions. It represents the array +// of ciphers offered by the client during the client hello. +func TLSClientSupportedCiphers(val ...string) attribute.KeyValue { + return TLSClientSupportedCiphersKey.StringSlice(val) +} + +// TLSCurve returns an attribute KeyValue conforming to the "tls.curve" semantic +// conventions. It represents the string indicating the curve used for the given +// cipher, when applicable. +func TLSCurve(val string) attribute.KeyValue { + return TLSCurveKey.String(val) +} + +// TLSEstablished returns an attribute KeyValue conforming to the +// "tls.established" semantic conventions. It represents the boolean flag +// indicating if the TLS negotiation was successful and transitioned to an +// encrypted tunnel. +func TLSEstablished(val bool) attribute.KeyValue { + return TLSEstablishedKey.Bool(val) +} + +// TLSNextProtocol returns an attribute KeyValue conforming to the +// "tls.next_protocol" semantic conventions. It represents the string indicating +// the protocol being tunneled. Per the values in the [IANA registry], this +// string should be lower case. +// +// [IANA registry]: https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids +func TLSNextProtocol(val string) attribute.KeyValue { + return TLSNextProtocolKey.String(val) +} + +// TLSProtocolVersion returns an attribute KeyValue conforming to the +// "tls.protocol.version" semantic conventions. It represents the numeric part of +// the version parsed from the original string of the negotiated +// [SSL/TLS protocol version]. +// +// [SSL/TLS protocol version]: https://docs.openssl.org/1.1.1/man3/SSL_get_version/#return-values +func TLSProtocolVersion(val string) attribute.KeyValue { + return TLSProtocolVersionKey.String(val) +} + +// TLSResumed returns an attribute KeyValue conforming to the "tls.resumed" +// semantic conventions. It represents the boolean flag indicating if this TLS +// connection was resumed from an existing TLS negotiation. +func TLSResumed(val bool) attribute.KeyValue { + return TLSResumedKey.Bool(val) +} + +// TLSServerCertificate returns an attribute KeyValue conforming to the +// "tls.server.certificate" semantic conventions. It represents the PEM-encoded +// stand-alone certificate offered by the server. This is usually +// mutually-exclusive of `server.certificate_chain` since this value also exists +// in that list. +func TLSServerCertificate(val string) attribute.KeyValue { + return TLSServerCertificateKey.String(val) +} + +// TLSServerCertificateChain returns an attribute KeyValue conforming to the +// "tls.server.certificate_chain" semantic conventions. It represents the array +// of PEM-encoded certificates that make up the certificate chain offered by the +// server. This is usually mutually-exclusive of `server.certificate` since that +// value should be the first certificate in the chain. +func TLSServerCertificateChain(val ...string) attribute.KeyValue { + return TLSServerCertificateChainKey.StringSlice(val) +} + +// TLSServerHashMd5 returns an attribute KeyValue conforming to the +// "tls.server.hash.md5" semantic conventions. It represents the certificate +// fingerprint using the MD5 digest of DER-encoded version of certificate offered +// by the server. For consistency with other hash values, this value should be +// formatted as an uppercase hash. +func TLSServerHashMd5(val string) attribute.KeyValue { + return TLSServerHashMd5Key.String(val) +} + +// TLSServerHashSha1 returns an attribute KeyValue conforming to the +// "tls.server.hash.sha1" semantic conventions. It represents the certificate +// fingerprint using the SHA1 digest of DER-encoded version of certificate +// offered by the server. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSServerHashSha1(val string) attribute.KeyValue { + return TLSServerHashSha1Key.String(val) +} + +// TLSServerHashSha256 returns an attribute KeyValue conforming to the +// "tls.server.hash.sha256" semantic conventions. It represents the certificate +// fingerprint using the SHA256 digest of DER-encoded version of certificate +// offered by the server. For consistency with other hash values, this value +// should be formatted as an uppercase hash. +func TLSServerHashSha256(val string) attribute.KeyValue { + return TLSServerHashSha256Key.String(val) +} + +// TLSServerIssuer returns an attribute KeyValue conforming to the +// "tls.server.issuer" semantic conventions. It represents the distinguished name +// of [subject] of the issuer of the x.509 certificate presented by the client. +// +// [subject]: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 +func TLSServerIssuer(val string) attribute.KeyValue { + return TLSServerIssuerKey.String(val) +} + +// TLSServerJa3s returns an attribute KeyValue conforming to the +// "tls.server.ja3s" semantic conventions. It represents a hash that identifies +// servers based on how they perform an SSL/TLS handshake. +func TLSServerJa3s(val string) attribute.KeyValue { + return TLSServerJa3sKey.String(val) +} + +// TLSServerNotAfter returns an attribute KeyValue conforming to the +// "tls.server.not_after" semantic conventions. It represents the date/Time +// indicating when server certificate is no longer considered valid. +func TLSServerNotAfter(val string) attribute.KeyValue { + return TLSServerNotAfterKey.String(val) +} + +// TLSServerNotBefore returns an attribute KeyValue conforming to the +// "tls.server.not_before" semantic conventions. It represents the date/Time +// indicating when server certificate is first considered valid. +func TLSServerNotBefore(val string) attribute.KeyValue { + return TLSServerNotBeforeKey.String(val) +} + +// TLSServerSubject returns an attribute KeyValue conforming to the +// "tls.server.subject" semantic conventions. It represents the distinguished +// name of subject of the x.509 certificate presented by the server. +func TLSServerSubject(val string) attribute.KeyValue { + return TLSServerSubjectKey.String(val) +} + +// Enum values for tls.protocol.name +var ( + // ssl + // Stability: development + TLSProtocolNameSsl = TLSProtocolNameKey.String("ssl") + // tls + // Stability: development + TLSProtocolNameTLS = TLSProtocolNameKey.String("tls") +) + +// Namespace: url +const ( + // URLDomainKey is the attribute Key conforming to the "url.domain" semantic + // conventions. It represents the domain extracted from the `url.full`, such as + // "opentelemetry.io". + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "www.foo.bar", "opentelemetry.io", "3.12.167.2", + // "[1080:0:0:0:8:800:200C:417A]" + // Note: In some cases a URL may refer to an IP and/or port directly, without a + // domain name. In this case, the IP address would go to the domain field. If + // the URL contains a [literal IPv6 address] enclosed by `[` and `]`, the `[` + // and `]` characters should also be captured in the domain field. + // + // [literal IPv6 address]: https://www.rfc-editor.org/rfc/rfc2732#section-2 + URLDomainKey = attribute.Key("url.domain") + + // URLExtensionKey is the attribute Key conforming to the "url.extension" + // semantic conventions. It represents the file extension extracted from the + // `url.full`, excluding the leading dot. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "png", "gz" + // Note: The file extension is only set if it exists, as not every url has a + // file extension. When the file name has multiple extensions `example.tar.gz`, + // only the last one should be captured `gz`, not `tar.gz`. + URLExtensionKey = attribute.Key("url.extension") + + // URLFragmentKey is the attribute Key conforming to the "url.fragment" semantic + // conventions. It represents the [URI fragment] component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "SemConv" + // + // [URI fragment]: https://www.rfc-editor.org/rfc/rfc3986#section-3.5 + URLFragmentKey = attribute.Key("url.fragment") + + // URLFullKey is the attribute Key conforming to the "url.full" semantic + // conventions. It represents the absolute URL describing a network resource + // according to [RFC3986]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "https://www.foo.bar/search?q=OpenTelemetry#SemConv", "//localhost" + // Note: For network calls, URL usually has + // `scheme://host[:port][path][?query][#fragment]` format, where the fragment + // is not transmitted over HTTP, but if it is known, it SHOULD be included + // nevertheless. + // + // `url.full` MUST NOT contain credentials passed via URL in form of + // `https://username:password@www.example.com/`. + // In such case username and password SHOULD be redacted and attribute's value + // SHOULD be `https://REDACTED:REDACTED@www.example.com/`. + // + // `url.full` SHOULD capture the absolute URL when it is available (or can be + // reconstructed). + // + // Sensitive content provided in `url.full` SHOULD be scrubbed when + // instrumentations can identify it. + // + // + // Query string values for the following keys SHOULD be redacted by default and + // replaced by the + // value `REDACTED`: + // + // - [`AWSAccessKeyId`] + // - [`Signature`] + // - [`sig`] + // - [`X-Goog-Signature`] + // + // This list is subject to change over time. + // + // When a query string value is redacted, the query string key SHOULD still be + // preserved, e.g. + // `https://www.example.com/path?color=blue&sig=REDACTED`. + // + // [RFC3986]: https://www.rfc-editor.org/rfc/rfc3986 + // [`AWSAccessKeyId`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth + // [`Signature`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth + // [`sig`]: https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token + // [`X-Goog-Signature`]: https://cloud.google.com/storage/docs/access-control/signed-urls + URLFullKey = attribute.Key("url.full") + + // URLOriginalKey is the attribute Key conforming to the "url.original" semantic + // conventions. It represents the unmodified original URL as seen in the event + // source. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "https://www.foo.bar/search?q=OpenTelemetry#SemConv", + // "search?q=OpenTelemetry" + // Note: In network monitoring, the observed URL may be a full URL, whereas in + // access logs, the URL is often just represented as a path. This field is meant + // to represent the URL as it was observed, complete or not. + // `url.original` might contain credentials passed via URL in form of + // `https://username:password@www.example.com/`. In such case password and + // username SHOULD NOT be redacted and attribute's value SHOULD remain the same. + URLOriginalKey = attribute.Key("url.original") + + // URLPathKey is the attribute Key conforming to the "url.path" semantic + // conventions. It represents the [URI path] component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "/search" + // Note: Sensitive content provided in `url.path` SHOULD be scrubbed when + // instrumentations can identify it. + // + // [URI path]: https://www.rfc-editor.org/rfc/rfc3986#section-3.3 + URLPathKey = attribute.Key("url.path") + + // URLPortKey is the attribute Key conforming to the "url.port" semantic + // conventions. It represents the port extracted from the `url.full`. + // + // Type: int + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: 443 + URLPortKey = attribute.Key("url.port") + + // URLQueryKey is the attribute Key conforming to the "url.query" semantic + // conventions. It represents the [URI query] component. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "q=OpenTelemetry" + // Note: Sensitive content provided in `url.query` SHOULD be scrubbed when + // instrumentations can identify it. + // + // + // Query string values for the following keys SHOULD be redacted by default and + // replaced by the value `REDACTED`: + // + // - [`AWSAccessKeyId`] + // - [`Signature`] + // - [`sig`] + // - [`X-Goog-Signature`] + // + // This list is subject to change over time. + // + // When a query string value is redacted, the query string key SHOULD still be + // preserved, e.g. + // `q=OpenTelemetry&sig=REDACTED`. + // + // [URI query]: https://www.rfc-editor.org/rfc/rfc3986#section-3.4 + // [`AWSAccessKeyId`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth + // [`Signature`]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth + // [`sig`]: https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token + // [`X-Goog-Signature`]: https://cloud.google.com/storage/docs/access-control/signed-urls + URLQueryKey = attribute.Key("url.query") + + // URLRegisteredDomainKey is the attribute Key conforming to the + // "url.registered_domain" semantic conventions. It represents the highest + // registered url domain, stripped of the subdomain. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "example.com", "foo.co.uk" + // Note: This value can be determined precisely with the [public suffix list]. + // For example, the registered domain for `foo.example.com` is `example.com`. + // Trying to approximate this by simply taking the last two labels will not work + // well for TLDs such as `co.uk`. + // + // [public suffix list]: https://publicsuffix.org/ + URLRegisteredDomainKey = attribute.Key("url.registered_domain") + + // URLSchemeKey is the attribute Key conforming to the "url.scheme" semantic + // conventions. It represents the [URI scheme] component identifying the used + // protocol. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "https", "ftp", "telnet" + // + // [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 + URLSchemeKey = attribute.Key("url.scheme") + + // URLSubdomainKey is the attribute Key conforming to the "url.subdomain" + // semantic conventions. It represents the subdomain portion of a fully + // qualified domain name includes all of the names except the host name under + // the registered_domain. In a partially qualified domain, or if the + // qualification level of the full name cannot be determined, subdomain contains + // all of the names below the registered domain. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "east", "sub2.sub1" + // Note: The subdomain portion of `www.east.mydomain.co.uk` is `east`. If the + // domain has multiple levels of subdomain, such as `sub2.sub1.example.com`, the + // subdomain field should contain `sub2.sub1`, with no trailing period. + URLSubdomainKey = attribute.Key("url.subdomain") + + // URLTemplateKey is the attribute Key conforming to the "url.template" semantic + // conventions. It represents the low-cardinality template of an + // [absolute path reference]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "/users/{id}", "/users/:id", "/users?id={id}" + // + // [absolute path reference]: https://www.rfc-editor.org/rfc/rfc3986#section-4.2 + URLTemplateKey = attribute.Key("url.template") + + // URLTopLevelDomainKey is the attribute Key conforming to the + // "url.top_level_domain" semantic conventions. It represents the effective top + // level domain (eTLD), also known as the domain suffix, is the last part of the + // domain name. For example, the top level domain for example.com is `com`. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "com", "co.uk" + // Note: This value can be determined precisely with the [public suffix list]. + // + // [public suffix list]: https://publicsuffix.org/ + URLTopLevelDomainKey = attribute.Key("url.top_level_domain") +) + +// URLDomain returns an attribute KeyValue conforming to the "url.domain" +// semantic conventions. It represents the domain extracted from the `url.full`, +// such as "opentelemetry.io". +func URLDomain(val string) attribute.KeyValue { + return URLDomainKey.String(val) +} + +// URLExtension returns an attribute KeyValue conforming to the "url.extension" +// semantic conventions. It represents the file extension extracted from the +// `url.full`, excluding the leading dot. +func URLExtension(val string) attribute.KeyValue { + return URLExtensionKey.String(val) +} + +// URLFragment returns an attribute KeyValue conforming to the "url.fragment" +// semantic conventions. It represents the [URI fragment] component. +// +// [URI fragment]: https://www.rfc-editor.org/rfc/rfc3986#section-3.5 +func URLFragment(val string) attribute.KeyValue { + return URLFragmentKey.String(val) +} + +// URLFull returns an attribute KeyValue conforming to the "url.full" semantic +// conventions. It represents the absolute URL describing a network resource +// according to [RFC3986]. +// +// [RFC3986]: https://www.rfc-editor.org/rfc/rfc3986 +func URLFull(val string) attribute.KeyValue { + return URLFullKey.String(val) +} + +// URLOriginal returns an attribute KeyValue conforming to the "url.original" +// semantic conventions. It represents the unmodified original URL as seen in the +// event source. +func URLOriginal(val string) attribute.KeyValue { + return URLOriginalKey.String(val) +} + +// URLPath returns an attribute KeyValue conforming to the "url.path" semantic +// conventions. It represents the [URI path] component. +// +// [URI path]: https://www.rfc-editor.org/rfc/rfc3986#section-3.3 +func URLPath(val string) attribute.KeyValue { + return URLPathKey.String(val) +} + +// URLPort returns an attribute KeyValue conforming to the "url.port" semantic +// conventions. It represents the port extracted from the `url.full`. +func URLPort(val int) attribute.KeyValue { + return URLPortKey.Int(val) +} + +// URLQuery returns an attribute KeyValue conforming to the "url.query" semantic +// conventions. It represents the [URI query] component. +// +// [URI query]: https://www.rfc-editor.org/rfc/rfc3986#section-3.4 +func URLQuery(val string) attribute.KeyValue { + return URLQueryKey.String(val) +} + +// URLRegisteredDomain returns an attribute KeyValue conforming to the +// "url.registered_domain" semantic conventions. It represents the highest +// registered url domain, stripped of the subdomain. +func URLRegisteredDomain(val string) attribute.KeyValue { + return URLRegisteredDomainKey.String(val) +} + +// URLScheme returns an attribute KeyValue conforming to the "url.scheme" +// semantic conventions. It represents the [URI scheme] component identifying the +// used protocol. +// +// [URI scheme]: https://www.rfc-editor.org/rfc/rfc3986#section-3.1 +func URLScheme(val string) attribute.KeyValue { + return URLSchemeKey.String(val) +} + +// URLSubdomain returns an attribute KeyValue conforming to the "url.subdomain" +// semantic conventions. It represents the subdomain portion of a fully qualified +// domain name includes all of the names except the host name under the +// registered_domain. In a partially qualified domain, or if the qualification +// level of the full name cannot be determined, subdomain contains all of the +// names below the registered domain. +func URLSubdomain(val string) attribute.KeyValue { + return URLSubdomainKey.String(val) +} + +// URLTemplate returns an attribute KeyValue conforming to the "url.template" +// semantic conventions. It represents the low-cardinality template of an +// [absolute path reference]. +// +// [absolute path reference]: https://www.rfc-editor.org/rfc/rfc3986#section-4.2 +func URLTemplate(val string) attribute.KeyValue { + return URLTemplateKey.String(val) +} + +// URLTopLevelDomain returns an attribute KeyValue conforming to the +// "url.top_level_domain" semantic conventions. It represents the effective top +// level domain (eTLD), also known as the domain suffix, is the last part of the +// domain name. For example, the top level domain for example.com is `com`. +func URLTopLevelDomain(val string) attribute.KeyValue { + return URLTopLevelDomainKey.String(val) +} + +// Namespace: user +const ( + // UserEmailKey is the attribute Key conforming to the "user.email" semantic + // conventions. It represents the user email address. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "a.einstein@example.com" + UserEmailKey = attribute.Key("user.email") + + // UserFullNameKey is the attribute Key conforming to the "user.full_name" + // semantic conventions. It represents the user's full name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Albert Einstein" + UserFullNameKey = attribute.Key("user.full_name") + + // UserHashKey is the attribute Key conforming to the "user.hash" semantic + // conventions. It represents the unique user hash to correlate information for + // a user in anonymized form. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "364fc68eaf4c8acec74a4e52d7d1feaa" + // Note: Useful if `user.id` or `user.name` contain confidential information and + // cannot be used. + UserHashKey = attribute.Key("user.hash") + + // UserIDKey is the attribute Key conforming to the "user.id" semantic + // conventions. It represents the unique identifier of the user. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "S-1-5-21-202424912787-2692429404-2351956786-1000" + UserIDKey = attribute.Key("user.id") + + // UserNameKey is the attribute Key conforming to the "user.name" semantic + // conventions. It represents the short name or login/username of the user. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "a.einstein" + UserNameKey = attribute.Key("user.name") + + // UserRolesKey is the attribute Key conforming to the "user.roles" semantic + // conventions. It represents the array of user roles at the time of the event. + // + // Type: string[] + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "admin", "reporting_user" + UserRolesKey = attribute.Key("user.roles") +) + +// UserEmail returns an attribute KeyValue conforming to the "user.email" +// semantic conventions. It represents the user email address. +func UserEmail(val string) attribute.KeyValue { + return UserEmailKey.String(val) +} + +// UserFullName returns an attribute KeyValue conforming to the "user.full_name" +// semantic conventions. It represents the user's full name. +func UserFullName(val string) attribute.KeyValue { + return UserFullNameKey.String(val) +} + +// UserHash returns an attribute KeyValue conforming to the "user.hash" semantic +// conventions. It represents the unique user hash to correlate information for a +// user in anonymized form. +func UserHash(val string) attribute.KeyValue { + return UserHashKey.String(val) +} + +// UserID returns an attribute KeyValue conforming to the "user.id" semantic +// conventions. It represents the unique identifier of the user. +func UserID(val string) attribute.KeyValue { + return UserIDKey.String(val) +} + +// UserName returns an attribute KeyValue conforming to the "user.name" semantic +// conventions. It represents the short name or login/username of the user. +func UserName(val string) attribute.KeyValue { + return UserNameKey.String(val) +} + +// UserRoles returns an attribute KeyValue conforming to the "user.roles" +// semantic conventions. It represents the array of user roles at the time of the +// event. +func UserRoles(val ...string) attribute.KeyValue { + return UserRolesKey.StringSlice(val) +} + +// Namespace: user_agent +const ( + // UserAgentNameKey is the attribute Key conforming to the "user_agent.name" + // semantic conventions. It represents the name of the user-agent extracted from + // original. Usually refers to the browser's name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Safari", "YourApp" + // Note: [Example] of extracting browser's name from original string. In the + // case of using a user-agent for non-browser products, such as microservices + // with multiple names/versions inside the `user_agent.original`, the most + // significant name SHOULD be selected. In such a scenario it should align with + // `user_agent.version` + // + // [Example]: https://www.whatsmyua.info + UserAgentNameKey = attribute.Key("user_agent.name") + + // UserAgentOriginalKey is the attribute Key conforming to the + // "user_agent.original" semantic conventions. It represents the value of the + // [HTTP User-Agent] header sent by the client. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Stable + // + // Examples: "CERN-LineMode/2.15 libwww/2.17b3", "Mozilla/5.0 (iPhone; CPU + // iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) + // Version/14.1.2 Mobile/15E148 Safari/604.1", "YourApp/1.0.0 + // grpc-java-okhttp/1.27.2" + // + // [HTTP User-Agent]: https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent + UserAgentOriginalKey = attribute.Key("user_agent.original") + + // UserAgentOSNameKey is the attribute Key conforming to the + // "user_agent.os.name" semantic conventions. It represents the human readable + // operating system name. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "iOS", "Android", "Ubuntu" + // Note: For mapping user agent strings to OS names, libraries such as + // [ua-parser] can be utilized. + // + // [ua-parser]: https://github.com/ua-parser + UserAgentOSNameKey = attribute.Key("user_agent.os.name") + + // UserAgentOSVersionKey is the attribute Key conforming to the + // "user_agent.os.version" semantic conventions. It represents the version + // string of the operating system as defined in [Version Attributes]. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "14.2.1", "18.04.1" + // Note: For mapping user agent strings to OS versions, libraries such as + // [ua-parser] can be utilized. + // + // [Version Attributes]: /docs/resource/README.md#version-attributes + // [ua-parser]: https://github.com/ua-parser + UserAgentOSVersionKey = attribute.Key("user_agent.os.version") + + // UserAgentSyntheticTypeKey is the attribute Key conforming to the + // "user_agent.synthetic.type" semantic conventions. It represents the specifies + // the category of synthetic traffic, such as tests or bots. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // Note: This attribute MAY be derived from the contents of the + // `user_agent.original` attribute. Components that populate the attribute are + // responsible for determining what they consider to be synthetic bot or test + // traffic. This attribute can either be set for self-identification purposes, + // or on telemetry detected to be generated as a result of a synthetic request. + // This attribute is useful for distinguishing between genuine client traffic + // and synthetic traffic generated by bots or tests. + UserAgentSyntheticTypeKey = attribute.Key("user_agent.synthetic.type") + + // UserAgentVersionKey is the attribute Key conforming to the + // "user_agent.version" semantic conventions. It represents the version of the + // user-agent extracted from original. Usually refers to the browser's version. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "14.1.2", "1.0.0" + // Note: [Example] of extracting browser's version from original string. In the + // case of using a user-agent for non-browser products, such as microservices + // with multiple names/versions inside the `user_agent.original`, the most + // significant version SHOULD be selected. In such a scenario it should align + // with `user_agent.name` + // + // [Example]: https://www.whatsmyua.info + UserAgentVersionKey = attribute.Key("user_agent.version") +) + +// UserAgentName returns an attribute KeyValue conforming to the +// "user_agent.name" semantic conventions. It represents the name of the +// user-agent extracted from original. Usually refers to the browser's name. +func UserAgentName(val string) attribute.KeyValue { + return UserAgentNameKey.String(val) +} + +// UserAgentOriginal returns an attribute KeyValue conforming to the +// "user_agent.original" semantic conventions. It represents the value of the +// [HTTP User-Agent] header sent by the client. +// +// [HTTP User-Agent]: https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent +func UserAgentOriginal(val string) attribute.KeyValue { + return UserAgentOriginalKey.String(val) +} + +// UserAgentOSName returns an attribute KeyValue conforming to the +// "user_agent.os.name" semantic conventions. It represents the human readable +// operating system name. +func UserAgentOSName(val string) attribute.KeyValue { + return UserAgentOSNameKey.String(val) +} + +// UserAgentOSVersion returns an attribute KeyValue conforming to the +// "user_agent.os.version" semantic conventions. It represents the version string +// of the operating system as defined in [Version Attributes]. +// +// [Version Attributes]: /docs/resource/README.md#version-attributes +func UserAgentOSVersion(val string) attribute.KeyValue { + return UserAgentOSVersionKey.String(val) +} + +// UserAgentVersion returns an attribute KeyValue conforming to the +// "user_agent.version" semantic conventions. It represents the version of the +// user-agent extracted from original. Usually refers to the browser's version. +func UserAgentVersion(val string) attribute.KeyValue { + return UserAgentVersionKey.String(val) +} + +// Enum values for user_agent.synthetic.type +var ( + // Bot source. + // Stability: development + UserAgentSyntheticTypeBot = UserAgentSyntheticTypeKey.String("bot") + // Synthetic test source. + // Stability: development + UserAgentSyntheticTypeTest = UserAgentSyntheticTypeKey.String("test") +) + +// Namespace: vcs +const ( + // VCSChangeIDKey is the attribute Key conforming to the "vcs.change.id" + // semantic conventions. It represents the ID of the change (pull request/merge + // request/changelist) if applicable. This is usually a unique (within + // repository) identifier generated by the VCS system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "123" + VCSChangeIDKey = attribute.Key("vcs.change.id") + + // VCSChangeStateKey is the attribute Key conforming to the "vcs.change.state" + // semantic conventions. It represents the state of the change (pull + // request/merge request/changelist). + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "open", "closed", "merged" + VCSChangeStateKey = attribute.Key("vcs.change.state") + + // VCSChangeTitleKey is the attribute Key conforming to the "vcs.change.title" + // semantic conventions. It represents the human readable title of the change + // (pull request/merge request/changelist). This title is often a brief summary + // of the change and may get merged in to a ref as the commit summary. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "Fixes broken thing", "feat: add my new feature", "[chore] update + // dependency" + VCSChangeTitleKey = attribute.Key("vcs.change.title") + + // VCSLineChangeTypeKey is the attribute Key conforming to the + // "vcs.line_change.type" semantic conventions. It represents the type of line + // change being measured on a branch or change. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "added", "removed" + VCSLineChangeTypeKey = attribute.Key("vcs.line_change.type") + + // VCSOwnerNameKey is the attribute Key conforming to the "vcs.owner.name" + // semantic conventions. It represents the group owner within the version + // control system. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-org", "myteam", "business-unit" + VCSOwnerNameKey = attribute.Key("vcs.owner.name") + + // VCSProviderNameKey is the attribute Key conforming to the "vcs.provider.name" + // semantic conventions. It represents the name of the version control system + // provider. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "github", "gitlab", "gitea", "bitbucket" + VCSProviderNameKey = attribute.Key("vcs.provider.name") + + // VCSRefBaseNameKey is the attribute Key conforming to the "vcs.ref.base.name" + // semantic conventions. It represents the name of the [reference] such as + // **branch** or **tag** in the repository. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-feature-branch", "tag-1-test" + // Note: `base` refers to the starting point of a change. For example, `main` + // would be the base reference of type branch if you've created a new + // reference of type branch from it and created new commits. + // + // [reference]: https://git-scm.com/docs/gitglossary#def_ref + VCSRefBaseNameKey = attribute.Key("vcs.ref.base.name") + + // VCSRefBaseRevisionKey is the attribute Key conforming to the + // "vcs.ref.base.revision" semantic conventions. It represents the revision, + // literally [revised version], The revision most often refers to a commit + // object in Git, or a revision number in SVN. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc", + // "main", "123", "HEAD" + // Note: `base` refers to the starting point of a change. For example, `main` + // would be the base reference of type branch if you've created a new + // reference of type branch from it and created new commits. The + // revision can be a full [hash value (see + // glossary)], + // of the recorded change to a ref within a repository pointing to a + // commit [commit] object. It does + // not necessarily have to be a hash; it can simply define a [revision + // number] + // which is an integer that is monotonically increasing. In cases where + // it is identical to the `ref.base.name`, it SHOULD still be included. + // It is up to the implementer to decide which value to set as the + // revision based on the VCS system and situational context. + // + // [revised version]: https://www.merriam-webster.com/dictionary/revision + // [hash value (see + // glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf + // [commit]: https://git-scm.com/docs/git-commit + // [revision + // number]: https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html + VCSRefBaseRevisionKey = attribute.Key("vcs.ref.base.revision") + + // VCSRefBaseTypeKey is the attribute Key conforming to the "vcs.ref.base.type" + // semantic conventions. It represents the type of the [reference] in the + // repository. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "branch", "tag" + // Note: `base` refers to the starting point of a change. For example, `main` + // would be the base reference of type branch if you've created a new + // reference of type branch from it and created new commits. + // + // [reference]: https://git-scm.com/docs/gitglossary#def_ref + VCSRefBaseTypeKey = attribute.Key("vcs.ref.base.type") + + // VCSRefHeadNameKey is the attribute Key conforming to the "vcs.ref.head.name" + // semantic conventions. It represents the name of the [reference] such as + // **branch** or **tag** in the repository. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "my-feature-branch", "tag-1-test" + // Note: `head` refers to where you are right now; the current reference at a + // given time. + // + // [reference]: https://git-scm.com/docs/gitglossary#def_ref + VCSRefHeadNameKey = attribute.Key("vcs.ref.head.name") + + // VCSRefHeadRevisionKey is the attribute Key conforming to the + // "vcs.ref.head.revision" semantic conventions. It represents the revision, + // literally [revised version], The revision most often refers to a commit + // object in Git, or a revision number in SVN. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "9d59409acf479dfa0df1aa568182e43e43df8bbe28d60fcf2bc52e30068802cc", + // "main", "123", "HEAD" + // Note: `head` refers to where you are right now; the current reference at a + // given time.The revision can be a full [hash value (see + // glossary)], + // of the recorded change to a ref within a repository pointing to a + // commit [commit] object. It does + // not necessarily have to be a hash; it can simply define a [revision + // number] + // which is an integer that is monotonically increasing. In cases where + // it is identical to the `ref.head.name`, it SHOULD still be included. + // It is up to the implementer to decide which value to set as the + // revision based on the VCS system and situational context. + // + // [revised version]: https://www.merriam-webster.com/dictionary/revision + // [hash value (see + // glossary)]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf + // [commit]: https://git-scm.com/docs/git-commit + // [revision + // number]: https://svnbook.red-bean.com/en/1.7/svn.tour.revs.specifiers.html + VCSRefHeadRevisionKey = attribute.Key("vcs.ref.head.revision") + + // VCSRefHeadTypeKey is the attribute Key conforming to the "vcs.ref.head.type" + // semantic conventions. It represents the type of the [reference] in the + // repository. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "branch", "tag" + // Note: `head` refers to where you are right now; the current reference at a + // given time. + // + // [reference]: https://git-scm.com/docs/gitglossary#def_ref + VCSRefHeadTypeKey = attribute.Key("vcs.ref.head.type") + + // VCSRefTypeKey is the attribute Key conforming to the "vcs.ref.type" semantic + // conventions. It represents the type of the [reference] in the repository. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "branch", "tag" + // + // [reference]: https://git-scm.com/docs/gitglossary#def_ref + VCSRefTypeKey = attribute.Key("vcs.ref.type") + + // VCSRepositoryNameKey is the attribute Key conforming to the + // "vcs.repository.name" semantic conventions. It represents the human readable + // name of the repository. It SHOULD NOT include any additional identifier like + // Group/SubGroup in GitLab or organization in GitHub. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "semantic-conventions", "my-cool-repo" + // Note: Due to it only being the name, it can clash with forks of the same + // repository if collecting telemetry across multiple orgs or groups in + // the same backends. + VCSRepositoryNameKey = attribute.Key("vcs.repository.name") + + // VCSRepositoryURLFullKey is the attribute Key conforming to the + // "vcs.repository.url.full" semantic conventions. It represents the + // [canonical URL] of the repository providing the complete HTTP(S) address in + // order to locate and identify the repository through a browser. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: + // "https://github.com/opentelemetry/open-telemetry-collector-contrib", + // "https://gitlab.com/my-org/my-project/my-projects-project/repo" + // Note: In Git Version Control Systems, the canonical URL SHOULD NOT include + // the `.git` extension. + // + // [canonical URL]: https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical. + VCSRepositoryURLFullKey = attribute.Key("vcs.repository.url.full") + + // VCSRevisionDeltaDirectionKey is the attribute Key conforming to the + // "vcs.revision_delta.direction" semantic conventions. It represents the type + // of revision comparison. + // + // Type: Enum + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "ahead", "behind" + VCSRevisionDeltaDirectionKey = attribute.Key("vcs.revision_delta.direction") +) + +// VCSChangeID returns an attribute KeyValue conforming to the "vcs.change.id" +// semantic conventions. It represents the ID of the change (pull request/merge +// request/changelist) if applicable. This is usually a unique (within +// repository) identifier generated by the VCS system. +func VCSChangeID(val string) attribute.KeyValue { + return VCSChangeIDKey.String(val) +} + +// VCSChangeTitle returns an attribute KeyValue conforming to the +// "vcs.change.title" semantic conventions. It represents the human readable +// title of the change (pull request/merge request/changelist). This title is +// often a brief summary of the change and may get merged in to a ref as the +// commit summary. +func VCSChangeTitle(val string) attribute.KeyValue { + return VCSChangeTitleKey.String(val) +} + +// VCSOwnerName returns an attribute KeyValue conforming to the "vcs.owner.name" +// semantic conventions. It represents the group owner within the version control +// system. +func VCSOwnerName(val string) attribute.KeyValue { + return VCSOwnerNameKey.String(val) +} + +// VCSRefBaseName returns an attribute KeyValue conforming to the +// "vcs.ref.base.name" semantic conventions. It represents the name of the +// [reference] such as **branch** or **tag** in the repository. +// +// [reference]: https://git-scm.com/docs/gitglossary#def_ref +func VCSRefBaseName(val string) attribute.KeyValue { + return VCSRefBaseNameKey.String(val) +} + +// VCSRefBaseRevision returns an attribute KeyValue conforming to the +// "vcs.ref.base.revision" semantic conventions. It represents the revision, +// literally [revised version], The revision most often refers to a commit object +// in Git, or a revision number in SVN. +// +// [revised version]: https://www.merriam-webster.com/dictionary/revision +func VCSRefBaseRevision(val string) attribute.KeyValue { + return VCSRefBaseRevisionKey.String(val) +} + +// VCSRefHeadName returns an attribute KeyValue conforming to the +// "vcs.ref.head.name" semantic conventions. It represents the name of the +// [reference] such as **branch** or **tag** in the repository. +// +// [reference]: https://git-scm.com/docs/gitglossary#def_ref +func VCSRefHeadName(val string) attribute.KeyValue { + return VCSRefHeadNameKey.String(val) +} + +// VCSRefHeadRevision returns an attribute KeyValue conforming to the +// "vcs.ref.head.revision" semantic conventions. It represents the revision, +// literally [revised version], The revision most often refers to a commit object +// in Git, or a revision number in SVN. +// +// [revised version]: https://www.merriam-webster.com/dictionary/revision +func VCSRefHeadRevision(val string) attribute.KeyValue { + return VCSRefHeadRevisionKey.String(val) +} + +// VCSRepositoryName returns an attribute KeyValue conforming to the +// "vcs.repository.name" semantic conventions. It represents the human readable +// name of the repository. It SHOULD NOT include any additional identifier like +// Group/SubGroup in GitLab or organization in GitHub. +func VCSRepositoryName(val string) attribute.KeyValue { + return VCSRepositoryNameKey.String(val) +} + +// VCSRepositoryURLFull returns an attribute KeyValue conforming to the +// "vcs.repository.url.full" semantic conventions. It represents the +// [canonical URL] of the repository providing the complete HTTP(S) address in +// order to locate and identify the repository through a browser. +// +// [canonical URL]: https://support.google.com/webmasters/answer/10347851?hl=en#:~:text=A%20canonical%20URL%20is%20the,Google%20chooses%20one%20as%20canonical. +func VCSRepositoryURLFull(val string) attribute.KeyValue { + return VCSRepositoryURLFullKey.String(val) +} + +// Enum values for vcs.change.state +var ( + // Open means the change is currently active and under review. It hasn't been + // merged into the target branch yet, and it's still possible to make changes or + // add comments. + // Stability: development + VCSChangeStateOpen = VCSChangeStateKey.String("open") + // WIP (work-in-progress, draft) means the change is still in progress and not + // yet ready for a full review. It might still undergo significant changes. + // Stability: development + VCSChangeStateWip = VCSChangeStateKey.String("wip") + // Closed means the merge request has been closed without merging. This can + // happen for various reasons, such as the changes being deemed unnecessary, the + // issue being resolved in another way, or the author deciding to withdraw the + // request. + // Stability: development + VCSChangeStateClosed = VCSChangeStateKey.String("closed") + // Merged indicates that the change has been successfully integrated into the + // target codebase. + // Stability: development + VCSChangeStateMerged = VCSChangeStateKey.String("merged") +) + +// Enum values for vcs.line_change.type +var ( + // How many lines were added. + // Stability: development + VCSLineChangeTypeAdded = VCSLineChangeTypeKey.String("added") + // How many lines were removed. + // Stability: development + VCSLineChangeTypeRemoved = VCSLineChangeTypeKey.String("removed") +) + +// Enum values for vcs.provider.name +var ( + // [GitHub] + // Stability: development + // + // [GitHub]: https://github.com + VCSProviderNameGithub = VCSProviderNameKey.String("github") + // [GitLab] + // Stability: development + // + // [GitLab]: https://gitlab.com + VCSProviderNameGitlab = VCSProviderNameKey.String("gitlab") + // [Gitea] + // Stability: development + // + // [Gitea]: https://gitea.io + VCSProviderNameGitea = VCSProviderNameKey.String("gitea") + // [Bitbucket] + // Stability: development + // + // [Bitbucket]: https://bitbucket.org + VCSProviderNameBitbucket = VCSProviderNameKey.String("bitbucket") +) + +// Enum values for vcs.ref.base.type +var ( + // [branch] + // Stability: development + // + // [branch]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch + VCSRefBaseTypeBranch = VCSRefBaseTypeKey.String("branch") + // [tag] + // Stability: development + // + // [tag]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag + VCSRefBaseTypeTag = VCSRefBaseTypeKey.String("tag") +) + +// Enum values for vcs.ref.head.type +var ( + // [branch] + // Stability: development + // + // [branch]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch + VCSRefHeadTypeBranch = VCSRefHeadTypeKey.String("branch") + // [tag] + // Stability: development + // + // [tag]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag + VCSRefHeadTypeTag = VCSRefHeadTypeKey.String("tag") +) + +// Enum values for vcs.ref.type +var ( + // [branch] + // Stability: development + // + // [branch]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefbranchabranch + VCSRefTypeBranch = VCSRefTypeKey.String("branch") + // [tag] + // Stability: development + // + // [tag]: https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddeftagatag + VCSRefTypeTag = VCSRefTypeKey.String("tag") +) + +// Enum values for vcs.revision_delta.direction +var ( + // How many revisions the change is behind the target ref. + // Stability: development + VCSRevisionDeltaDirectionBehind = VCSRevisionDeltaDirectionKey.String("behind") + // How many revisions the change is ahead of the target ref. + // Stability: development + VCSRevisionDeltaDirectionAhead = VCSRevisionDeltaDirectionKey.String("ahead") +) + +// Namespace: webengine +const ( + // WebEngineDescriptionKey is the attribute Key conforming to the + // "webengine.description" semantic conventions. It represents the additional + // description of the web engine (e.g. detailed version and edition + // information). + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "WildFly Full 21.0.0.Final (WildFly Core 13.0.1.Final) - + // 2.2.2.Final" + WebEngineDescriptionKey = attribute.Key("webengine.description") + + // WebEngineNameKey is the attribute Key conforming to the "webengine.name" + // semantic conventions. It represents the name of the web engine. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "WildFly" + WebEngineNameKey = attribute.Key("webengine.name") + + // WebEngineVersionKey is the attribute Key conforming to the + // "webengine.version" semantic conventions. It represents the version of the + // web engine. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "21.0.0" + WebEngineVersionKey = attribute.Key("webengine.version") +) + +// WebEngineDescription returns an attribute KeyValue conforming to the +// "webengine.description" semantic conventions. It represents the additional +// description of the web engine (e.g. detailed version and edition information). +func WebEngineDescription(val string) attribute.KeyValue { + return WebEngineDescriptionKey.String(val) +} + +// WebEngineName returns an attribute KeyValue conforming to the "webengine.name" +// semantic conventions. It represents the name of the web engine. +func WebEngineName(val string) attribute.KeyValue { + return WebEngineNameKey.String(val) +} + +// WebEngineVersion returns an attribute KeyValue conforming to the +// "webengine.version" semantic conventions. It represents the version of the web +// engine. +func WebEngineVersion(val string) attribute.KeyValue { + return WebEngineVersionKey.String(val) +} + +// Namespace: zos +const ( + // ZOSSmfIDKey is the attribute Key conforming to the "zos.smf.id" semantic + // conventions. It represents the System Management Facility (SMF) Identifier + // uniquely identified a z/OS system within a SYSPLEX or mainframe environment + // and is used for system and performance analysis. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "SYS1" + ZOSSmfIDKey = attribute.Key("zos.smf.id") + + // ZOSSysplexNameKey is the attribute Key conforming to the "zos.sysplex.name" + // semantic conventions. It represents the name of the SYSPLEX to which the z/OS + // system belongs too. + // + // Type: string + // RequirementLevel: Recommended + // Stability: Development + // + // Examples: "SYSPLEX1" + ZOSSysplexNameKey = attribute.Key("zos.sysplex.name") +) + +// ZOSSmfID returns an attribute KeyValue conforming to the "zos.smf.id" semantic +// conventions. It represents the System Management Facility (SMF) Identifier +// uniquely identified a z/OS system within a SYSPLEX or mainframe environment +// and is used for system and performance analysis. +func ZOSSmfID(val string) attribute.KeyValue { + return ZOSSmfIDKey.String(val) +} + +// ZOSSysplexName returns an attribute KeyValue conforming to the +// "zos.sysplex.name" semantic conventions. It represents the name of the SYSPLEX +// to which the z/OS system belongs too. +func ZOSSysplexName(val string) attribute.KeyValue { + return ZOSSysplexNameKey.String(val) +} \ No newline at end of file diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/doc.go b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/doc.go new file mode 100644 index 0000000000..1110103210 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/doc.go @@ -0,0 +1,9 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Package semconv implements OpenTelemetry semantic conventions. +// +// OpenTelemetry semantic conventions are agreed standardized naming +// patterns for OpenTelemetry things. This package represents the v1.37.0 +// version of the OpenTelemetry semantic conventions. +package semconv // import "go.opentelemetry.io/otel/semconv/v1.37.0" diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/error_type.go b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/error_type.go new file mode 100644 index 0000000000..666bded4ba --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/error_type.go @@ -0,0 +1,31 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package semconv // import "go.opentelemetry.io/otel/semconv/v1.37.0" + +import ( + "fmt" + "reflect" + + "go.opentelemetry.io/otel/attribute" +) + +// ErrorType returns an [attribute.KeyValue] identifying the error type of err. +func ErrorType(err error) attribute.KeyValue { + if err == nil { + return ErrorTypeOther + } + t := reflect.TypeOf(err) + var value string + if t.PkgPath() == "" && t.Name() == "" { + // Likely a builtin type. + value = t.String() + } else { + value = fmt.Sprintf("%s.%s", t.PkgPath(), t.Name()) + } + + if value == "" { + return ErrorTypeOther + } + return ErrorTypeKey.String(value) +} diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/exception.go b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/exception.go new file mode 100644 index 0000000000..e67469a4f6 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/exception.go @@ -0,0 +1,9 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package semconv // import "go.opentelemetry.io/otel/semconv/v1.37.0" + +const ( + // ExceptionEventName is the name of the Span event representing an exception. + ExceptionEventName = "exception" +) diff --git a/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/schema.go b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/schema.go new file mode 100644 index 0000000000..f8a0b70441 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/semconv/v1.37.0/schema.go @@ -0,0 +1,9 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package semconv // import "go.opentelemetry.io/otel/semconv/v1.37.0" + +// SchemaURL is the schema URL that matches the version of the semantic conventions +// that this package defines. Semconv packages starting from v1.4.0 must declare +// non-empty schema URL in the form https://opentelemetry.io/schemas/ +const SchemaURL = "https://opentelemetry.io/schemas/1.37.0" diff --git a/vendor/go.opentelemetry.io/otel/trace/LICENSE b/vendor/go.opentelemetry.io/otel/trace/LICENSE index 261eeb9e9f..f1aee0f110 100644 --- a/vendor/go.opentelemetry.io/otel/trace/LICENSE +++ b/vendor/go.opentelemetry.io/otel/trace/LICENSE @@ -199,3 +199,33 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +-------------------------------------------------------------------------------- + +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/go.opentelemetry.io/otel/trace/auto.go b/vendor/go.opentelemetry.io/otel/trace/auto.go index f3aa398138..8763936a84 100644 --- a/vendor/go.opentelemetry.io/otel/trace/auto.go +++ b/vendor/go.opentelemetry.io/otel/trace/auto.go @@ -20,7 +20,7 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" - semconv "go.opentelemetry.io/otel/semconv/v1.34.0" + semconv "go.opentelemetry.io/otel/semconv/v1.37.0" "go.opentelemetry.io/otel/trace/embedded" "go.opentelemetry.io/otel/trace/internal/telemetry" ) @@ -39,7 +39,7 @@ type autoTracerProvider struct{ embedded.TracerProvider } var _ TracerProvider = autoTracerProvider{} -func (p autoTracerProvider) Tracer(name string, opts ...TracerOption) Tracer { +func (autoTracerProvider) Tracer(name string, opts ...TracerOption) Tracer { cfg := NewTracerConfig(opts...) return autoTracer{ name: name, @@ -81,7 +81,7 @@ func (t autoTracer) Start(ctx context.Context, name string, opts ...SpanStartOpt // Expected to be implemented in eBPF. // //go:noinline -func (t *autoTracer) start( +func (*autoTracer) start( ctx context.Context, spanPtr *autoSpan, psc *SpanContext, diff --git a/vendor/go.opentelemetry.io/otel/trace/config.go b/vendor/go.opentelemetry.io/otel/trace/config.go index 9c0b720a4d..aea11a2b52 100644 --- a/vendor/go.opentelemetry.io/otel/trace/config.go +++ b/vendor/go.opentelemetry.io/otel/trace/config.go @@ -73,7 +73,7 @@ func (cfg *SpanConfig) Timestamp() time.Time { return cfg.timestamp } -// StackTrace checks whether stack trace capturing is enabled. +// StackTrace reports whether stack trace capturing is enabled. func (cfg *SpanConfig) StackTrace() bool { return cfg.stackTrace } @@ -154,7 +154,7 @@ func (cfg *EventConfig) Timestamp() time.Time { return cfg.timestamp } -// StackTrace checks whether stack trace capturing is enabled. +// StackTrace reports whether stack trace capturing is enabled. func (cfg *EventConfig) StackTrace() bool { return cfg.stackTrace } diff --git a/vendor/go.opentelemetry.io/otel/trace/hex.go b/vendor/go.opentelemetry.io/otel/trace/hex.go new file mode 100644 index 0000000000..1cbef1d4b9 --- /dev/null +++ b/vendor/go.opentelemetry.io/otel/trace/hex.go @@ -0,0 +1,38 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package trace // import "go.opentelemetry.io/otel/trace" + +const ( + // hexLU is a hex lookup table of the 16 lowercase hex digits. + // The character values of the string are indexed at the equivalent + // hexadecimal value they represent. This table efficiently encodes byte data + // into a string representation of hexadecimal. + hexLU = "0123456789abcdef" + + // hexRev is a reverse hex lookup table for lowercase hex digits. + // The table is efficiently decodes a hexadecimal string into bytes. + // Valid hexadecimal characters are indexed at their respective values. All + // other invalid ASCII characters are represented with '\xff'. + // + // The '\xff' character is used as invalid because no valid character has + // the upper 4 bits set. Meaning, an efficient validation can be performed + // over multiple character parsing by checking these bits remain zero. + hexRev = "" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\x0a\x0b\x0c\x0d\x0e\x0f\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" + + "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" +) diff --git a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.go b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.go index f663547b4e..ff0f6eac62 100644 --- a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.go +++ b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/attr.go @@ -52,7 +52,7 @@ func Map(key string, value ...Attr) Attr { return Attr{key, MapValue(value...)} } -// Equal returns if a is equal to b. +// Equal reports whether a is equal to b. func (a Attr) Equal(b Attr) bool { return a.Key == b.Key && a.Value.Equal(b.Value) } diff --git a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.go b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.go index 7b1ae3c4ea..bea56f2e7d 100644 --- a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.go +++ b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/id.go @@ -22,7 +22,7 @@ func (tid TraceID) String() string { return hex.EncodeToString(tid[:]) } -// IsEmpty returns false if id contains at least one non-zero byte. +// IsEmpty reports whether the TraceID contains only zero bytes. func (tid TraceID) IsEmpty() bool { return tid == [traceIDSize]byte{} } @@ -50,7 +50,7 @@ func (sid SpanID) String() string { return hex.EncodeToString(sid[:]) } -// IsEmpty returns true if the span ID contains at least one non-zero byte. +// IsEmpty reports whether the SpanID contains only zero bytes. func (sid SpanID) IsEmpty() bool { return sid == [spanIDSize]byte{} } @@ -82,7 +82,7 @@ func marshalJSON(id []byte) ([]byte, error) { } // unmarshalJSON inflates trace id from hex string, possibly enclosed in quotes. -func unmarshalJSON(dst []byte, src []byte) error { +func unmarshalJSON(dst, src []byte) error { if l := len(src); l >= 2 && src[0] == '"' && src[l-1] == '"' { src = src[1 : l-1] } diff --git a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go index ae9ce102a9..cb7927b816 100644 --- a/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go +++ b/vendor/go.opentelemetry.io/otel/trace/internal/telemetry/value.go @@ -257,10 +257,10 @@ func (v Value) Kind() ValueKind { } } -// Empty returns if v does not hold any value. +// Empty reports whether v does not hold any value. func (v Value) Empty() bool { return v.Kind() == ValueKindEmpty } -// Equal returns if v is equal to w. +// Equal reports whether v is equal to w. func (v Value) Equal(w Value) bool { k1 := v.Kind() k2 := w.Kind() diff --git a/vendor/go.opentelemetry.io/otel/trace/noop.go b/vendor/go.opentelemetry.io/otel/trace/noop.go index 0f56e4dbb3..400fab1238 100644 --- a/vendor/go.opentelemetry.io/otel/trace/noop.go +++ b/vendor/go.opentelemetry.io/otel/trace/noop.go @@ -26,7 +26,7 @@ type noopTracerProvider struct{ embedded.TracerProvider } var _ TracerProvider = noopTracerProvider{} // Tracer returns noop implementation of Tracer. -func (p noopTracerProvider) Tracer(string, ...TracerOption) Tracer { +func (noopTracerProvider) Tracer(string, ...TracerOption) Tracer { return noopTracer{} } @@ -37,7 +37,7 @@ var _ Tracer = noopTracer{} // Start carries forward a non-recording Span, if one is present in the context, otherwise it // creates a no-op Span. -func (t noopTracer) Start(ctx context.Context, name string, _ ...SpanStartOption) (context.Context, Span) { +func (noopTracer) Start(ctx context.Context, _ string, _ ...SpanStartOption) (context.Context, Span) { span := SpanFromContext(ctx) if _, ok := span.(nonRecordingSpan); !ok { // span is likely already a noopSpan, but let's be sure diff --git a/vendor/go.opentelemetry.io/otel/trace/noop/noop.go b/vendor/go.opentelemetry.io/otel/trace/noop/noop.go index 64a4f1b362..689d220df7 100644 --- a/vendor/go.opentelemetry.io/otel/trace/noop/noop.go +++ b/vendor/go.opentelemetry.io/otel/trace/noop/noop.go @@ -51,7 +51,7 @@ type Tracer struct{ embedded.Tracer } // If ctx contains a span context, the returned span will also contain that // span context. If the span context in ctx is for a non-recording span, that // span instance will be returned directly. -func (t Tracer) Start(ctx context.Context, _ string, _ ...trace.SpanStartOption) (context.Context, trace.Span) { +func (Tracer) Start(ctx context.Context, _ string, _ ...trace.SpanStartOption) (context.Context, trace.Span) { span := trace.SpanFromContext(ctx) // If the parent context contains a non-zero span context, that span diff --git a/vendor/go.opentelemetry.io/otel/trace/trace.go b/vendor/go.opentelemetry.io/otel/trace/trace.go index d49adf671b..ee6f4bcb2a 100644 --- a/vendor/go.opentelemetry.io/otel/trace/trace.go +++ b/vendor/go.opentelemetry.io/otel/trace/trace.go @@ -4,8 +4,6 @@ package trace // import "go.opentelemetry.io/otel/trace" import ( - "bytes" - "encoding/hex" "encoding/json" ) @@ -38,21 +36,47 @@ var ( _ json.Marshaler = nilTraceID ) -// IsValid checks whether the trace TraceID is valid. A valid trace ID does +// IsValid reports whether the trace TraceID is valid. A valid trace ID does // not consist of zeros only. func (t TraceID) IsValid() bool { - return !bytes.Equal(t[:], nilTraceID[:]) + return t != nilTraceID } // MarshalJSON implements a custom marshal function to encode TraceID // as a hex string. func (t TraceID) MarshalJSON() ([]byte, error) { - return json.Marshal(t.String()) + b := [32 + 2]byte{0: '"', 33: '"'} + h := t.hexBytes() + copy(b[1:], h[:]) + return b[:], nil } // String returns the hex string representation form of a TraceID. func (t TraceID) String() string { - return hex.EncodeToString(t[:]) + h := t.hexBytes() + return string(h[:]) +} + +// hexBytes returns the hex string representation form of a TraceID. +func (t TraceID) hexBytes() [32]byte { + return [32]byte{ + hexLU[t[0x0]>>4], hexLU[t[0x0]&0xf], + hexLU[t[0x1]>>4], hexLU[t[0x1]&0xf], + hexLU[t[0x2]>>4], hexLU[t[0x2]&0xf], + hexLU[t[0x3]>>4], hexLU[t[0x3]&0xf], + hexLU[t[0x4]>>4], hexLU[t[0x4]&0xf], + hexLU[t[0x5]>>4], hexLU[t[0x5]&0xf], + hexLU[t[0x6]>>4], hexLU[t[0x6]&0xf], + hexLU[t[0x7]>>4], hexLU[t[0x7]&0xf], + hexLU[t[0x8]>>4], hexLU[t[0x8]&0xf], + hexLU[t[0x9]>>4], hexLU[t[0x9]&0xf], + hexLU[t[0xa]>>4], hexLU[t[0xa]&0xf], + hexLU[t[0xb]>>4], hexLU[t[0xb]&0xf], + hexLU[t[0xc]>>4], hexLU[t[0xc]&0xf], + hexLU[t[0xd]>>4], hexLU[t[0xd]&0xf], + hexLU[t[0xe]>>4], hexLU[t[0xe]&0xf], + hexLU[t[0xf]>>4], hexLU[t[0xf]&0xf], + } } // SpanID is a unique identity of a span in a trace. @@ -63,21 +87,38 @@ var ( _ json.Marshaler = nilSpanID ) -// IsValid checks whether the SpanID is valid. A valid SpanID does not consist +// IsValid reports whether the SpanID is valid. A valid SpanID does not consist // of zeros only. func (s SpanID) IsValid() bool { - return !bytes.Equal(s[:], nilSpanID[:]) + return s != nilSpanID } // MarshalJSON implements a custom marshal function to encode SpanID // as a hex string. func (s SpanID) MarshalJSON() ([]byte, error) { - return json.Marshal(s.String()) + b := [16 + 2]byte{0: '"', 17: '"'} + h := s.hexBytes() + copy(b[1:], h[:]) + return b[:], nil } // String returns the hex string representation form of a SpanID. func (s SpanID) String() string { - return hex.EncodeToString(s[:]) + b := s.hexBytes() + return string(b[:]) +} + +func (s SpanID) hexBytes() [16]byte { + return [16]byte{ + hexLU[s[0]>>4], hexLU[s[0]&0xf], + hexLU[s[1]>>4], hexLU[s[1]&0xf], + hexLU[s[2]>>4], hexLU[s[2]&0xf], + hexLU[s[3]>>4], hexLU[s[3]&0xf], + hexLU[s[4]>>4], hexLU[s[4]&0xf], + hexLU[s[5]>>4], hexLU[s[5]&0xf], + hexLU[s[6]>>4], hexLU[s[6]&0xf], + hexLU[s[7]>>4], hexLU[s[7]&0xf], + } } // TraceIDFromHex returns a TraceID from a hex string if it is compliant with @@ -85,65 +126,58 @@ func (s SpanID) String() string { // https://www.w3.org/TR/trace-context/#trace-id // nolint:revive // revive complains about stutter of `trace.TraceIDFromHex`. func TraceIDFromHex(h string) (TraceID, error) { - t := TraceID{} if len(h) != 32 { - return t, errInvalidTraceIDLength + return [16]byte{}, errInvalidTraceIDLength } - - if err := decodeHex(h, t[:]); err != nil { - return t, err + var b [16]byte + invalidMark := byte(0) + for i := 0; i < len(h); i += 4 { + b[i/2] = (hexRev[h[i]] << 4) | hexRev[h[i+1]] + b[i/2+1] = (hexRev[h[i+2]] << 4) | hexRev[h[i+3]] + invalidMark |= hexRev[h[i]] | hexRev[h[i+1]] | hexRev[h[i+2]] | hexRev[h[i+3]] } - - if !t.IsValid() { - return t, errNilTraceID + // If the upper 4 bits of any byte are not zero, there was an invalid hex + // character since invalid hex characters are 0xff in hexRev. + if invalidMark&0xf0 != 0 { + return [16]byte{}, errInvalidHexID + } + // If we didn't set any bits, then h was all zeros. + if invalidMark == 0 { + return [16]byte{}, errNilTraceID } - return t, nil + return b, nil } // SpanIDFromHex returns a SpanID from a hex string if it is compliant // with the w3c trace-context specification. // See more at https://www.w3.org/TR/trace-context/#parent-id func SpanIDFromHex(h string) (SpanID, error) { - s := SpanID{} if len(h) != 16 { - return s, errInvalidSpanIDLength - } - - if err := decodeHex(h, s[:]); err != nil { - return s, err + return [8]byte{}, errInvalidSpanIDLength } - - if !s.IsValid() { - return s, errNilSpanID + var b [8]byte + invalidMark := byte(0) + for i := 0; i < len(h); i += 4 { + b[i/2] = (hexRev[h[i]] << 4) | hexRev[h[i+1]] + b[i/2+1] = (hexRev[h[i+2]] << 4) | hexRev[h[i+3]] + invalidMark |= hexRev[h[i]] | hexRev[h[i+1]] | hexRev[h[i+2]] | hexRev[h[i+3]] } - return s, nil -} - -func decodeHex(h string, b []byte) error { - for _, r := range h { - switch { - case 'a' <= r && r <= 'f': - continue - case '0' <= r && r <= '9': - continue - default: - return errInvalidHexID - } + // If the upper 4 bits of any byte are not zero, there was an invalid hex + // character since invalid hex characters are 0xff in hexRev. + if invalidMark&0xf0 != 0 { + return [8]byte{}, errInvalidHexID } - - decoded, err := hex.DecodeString(h) - if err != nil { - return err + // If we didn't set any bits, then h was all zeros. + if invalidMark == 0 { + return [8]byte{}, errNilSpanID } - - copy(b, decoded) - return nil + return b, nil } // TraceFlags contains flags that can be set on a SpanContext. type TraceFlags byte //nolint:revive // revive complains about stutter of `trace.TraceFlags`. -// IsSampled returns if the sampling bit is set in the TraceFlags. +// IsSampled reports whether the sampling bit is set in the TraceFlags. func (tf TraceFlags) IsSampled() bool { return tf&FlagsSampled == FlagsSampled } @@ -160,12 +194,20 @@ func (tf TraceFlags) WithSampled(sampled bool) TraceFlags { // nolint:revive // // MarshalJSON implements a custom marshal function to encode TraceFlags // as a hex string. func (tf TraceFlags) MarshalJSON() ([]byte, error) { - return json.Marshal(tf.String()) + b := [2 + 2]byte{0: '"', 3: '"'} + h := tf.hexBytes() + copy(b[1:], h[:]) + return b[:], nil } // String returns the hex string representation form of TraceFlags. func (tf TraceFlags) String() string { - return hex.EncodeToString([]byte{byte(tf)}[:]) + h := tf.hexBytes() + return string(h[:]) +} + +func (tf TraceFlags) hexBytes() [2]byte { + return [2]byte{hexLU[tf>>4], hexLU[tf&0xf]} } // SpanContextConfig contains mutable fields usable for constructing @@ -201,13 +243,13 @@ type SpanContext struct { var _ json.Marshaler = SpanContext{} -// IsValid returns if the SpanContext is valid. A valid span context has a +// IsValid reports whether the SpanContext is valid. A valid span context has a // valid TraceID and SpanID. func (sc SpanContext) IsValid() bool { return sc.HasTraceID() && sc.HasSpanID() } -// IsRemote indicates whether the SpanContext represents a remotely-created Span. +// IsRemote reports whether the SpanContext represents a remotely-created Span. func (sc SpanContext) IsRemote() bool { return sc.remote } @@ -228,7 +270,7 @@ func (sc SpanContext) TraceID() TraceID { return sc.traceID } -// HasTraceID checks if the SpanContext has a valid TraceID. +// HasTraceID reports whether the SpanContext has a valid TraceID. func (sc SpanContext) HasTraceID() bool { return sc.traceID.IsValid() } @@ -249,7 +291,7 @@ func (sc SpanContext) SpanID() SpanID { return sc.spanID } -// HasSpanID checks if the SpanContext has a valid SpanID. +// HasSpanID reports whether the SpanContext has a valid SpanID. func (sc SpanContext) HasSpanID() bool { return sc.spanID.IsValid() } @@ -270,7 +312,7 @@ func (sc SpanContext) TraceFlags() TraceFlags { return sc.traceFlags } -// IsSampled returns if the sampling bit is set in the SpanContext's TraceFlags. +// IsSampled reports whether the sampling bit is set in the SpanContext's TraceFlags. func (sc SpanContext) IsSampled() bool { return sc.traceFlags.IsSampled() } @@ -302,7 +344,7 @@ func (sc SpanContext) WithTraceState(state TraceState) SpanContext { } } -// Equal is a predicate that determines whether two SpanContext values are equal. +// Equal reports whether two SpanContext values are equal. func (sc SpanContext) Equal(other SpanContext) bool { return sc.traceID == other.traceID && sc.spanID == other.spanID && diff --git a/vendor/go.opentelemetry.io/otel/trace/tracestate.go b/vendor/go.opentelemetry.io/otel/trace/tracestate.go index dc5e34cad0..073adae2fa 100644 --- a/vendor/go.opentelemetry.io/otel/trace/tracestate.go +++ b/vendor/go.opentelemetry.io/otel/trace/tracestate.go @@ -80,7 +80,7 @@ func checkKeyRemain(key string) bool { // // param n is remain part length, should be 255 in simple-key or 13 in system-id. func checkKeyPart(key string, n int) bool { - if len(key) == 0 { + if key == "" { return false } first := key[0] // key's first char @@ -102,7 +102,7 @@ func isAlphaNum(c byte) bool { // // param n is remain part length, should be 240 exactly. func checkKeyTenant(key string, n int) bool { - if len(key) == 0 { + if key == "" { return false } return isAlphaNum(key[0]) && len(key[1:]) <= n && checkKeyRemain(key[1:]) @@ -191,7 +191,7 @@ func ParseTraceState(ts string) (TraceState, error) { for ts != "" { var memberStr string memberStr, ts, _ = strings.Cut(ts, listDelimiters) - if len(memberStr) == 0 { + if memberStr == "" { continue } diff --git a/vendor/go.opentelemetry.io/otel/version.go b/vendor/go.opentelemetry.io/otel/version.go index 7afe92b598..bcaa5aa537 100644 --- a/vendor/go.opentelemetry.io/otel/version.go +++ b/vendor/go.opentelemetry.io/otel/version.go @@ -5,5 +5,5 @@ package otel // import "go.opentelemetry.io/otel" // Version is the current release version of OpenTelemetry in use. func Version() string { - return "1.37.0" + return "1.38.0" } diff --git a/vendor/go.opentelemetry.io/otel/versions.yaml b/vendor/go.opentelemetry.io/otel/versions.yaml index 9d4742a176..07145e254b 100644 --- a/vendor/go.opentelemetry.io/otel/versions.yaml +++ b/vendor/go.opentelemetry.io/otel/versions.yaml @@ -3,7 +3,7 @@ module-sets: stable-v1: - version: v1.37.0 + version: v1.38.0 modules: - go.opentelemetry.io/otel - go.opentelemetry.io/otel/bridge/opencensus @@ -22,11 +22,11 @@ module-sets: - go.opentelemetry.io/otel/sdk/metric - go.opentelemetry.io/otel/trace experimental-metrics: - version: v0.59.0 + version: v0.60.0 modules: - go.opentelemetry.io/otel/exporters/prometheus experimental-logs: - version: v0.13.0 + version: v0.14.0 modules: - go.opentelemetry.io/otel/log - go.opentelemetry.io/otel/log/logtest @@ -36,7 +36,7 @@ module-sets: - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp - go.opentelemetry.io/otel/exporters/stdout/stdoutlog experimental-schema: - version: v0.0.12 + version: v0.0.13 modules: - go.opentelemetry.io/otel/schema excluded-modules: diff --git a/vendor/go.yaml.in/yaml/v3/LICENSE b/vendor/go.yaml.in/yaml/v3/LICENSE new file mode 100644 index 0000000000..2683e4bb1f --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/LICENSE @@ -0,0 +1,50 @@ + +This project is covered by two different licenses: MIT and Apache. + +#### MIT License #### + +The following files were ported to Go from C files of libyaml, and thus +are still covered by their original MIT license, with the additional +copyright staring in 2011 when the project was ported over: + + apic.go emitterc.go parserc.go readerc.go scannerc.go + writerc.go yamlh.go yamlprivateh.go + +Copyright (c) 2006-2010 Kirill Simonov +Copyright (c) 2006-2011 Kirill Simonov + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +### Apache License ### + +All the remaining project files are covered by the Apache license: + +Copyright (c) 2011-2019 Canonical Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/vendor/k8s.io/client-go/listers/networking/v1alpha1/expansion_generated.go b/vendor/go.yaml.in/yaml/v3/NOTICE similarity index 58% rename from vendor/k8s.io/client-go/listers/networking/v1alpha1/expansion_generated.go rename to vendor/go.yaml.in/yaml/v3/NOTICE index fc7316521b..866d74a7ad 100644 --- a/vendor/k8s.io/client-go/listers/networking/v1alpha1/expansion_generated.go +++ b/vendor/go.yaml.in/yaml/v3/NOTICE @@ -1,5 +1,4 @@ -/* -Copyright The Kubernetes Authors. +Copyright 2011-2016 Canonical Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -12,16 +11,3 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -*/ - -// Code generated by lister-gen. DO NOT EDIT. - -package v1alpha1 - -// IPAddressListerExpansion allows custom methods to be added to -// IPAddressLister. -type IPAddressListerExpansion interface{} - -// ServiceCIDRListerExpansion allows custom methods to be added to -// ServiceCIDRLister. -type ServiceCIDRListerExpansion interface{} diff --git a/vendor/go.yaml.in/yaml/v3/README.md b/vendor/go.yaml.in/yaml/v3/README.md new file mode 100644 index 0000000000..15a85a6350 --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/README.md @@ -0,0 +1,171 @@ +go.yaml.in/yaml +=============== + +YAML Support for the Go Language + + +## Introduction + +The `yaml` package enables [Go](https://go.dev/) programs to comfortably encode +and decode [YAML](https://yaml.org/) values. + +It was originally developed within [Canonical](https://www.canonical.com) as +part of the [juju](https://juju.ubuntu.com) project, and is based on a pure Go +port of the well-known [libyaml](http://pyyaml.org/wiki/LibYAML) C library to +parse and generate YAML data quickly and reliably. + + +## Project Status + +This project started as a fork of the extremely popular [go-yaml]( +https://github.com/go-yaml/yaml/) +project, and is being maintained by the official [YAML organization]( +https://github.com/yaml/). + +The YAML team took over ongoing maintenance and development of the project after +discussion with go-yaml's author, @niemeyer, following his decision to +[label the project repository as "unmaintained"]( +https://github.com/go-yaml/yaml/blob/944c86a7d2/README.md) in April 2025. + +We have put together a team of dedicated maintainers including representatives +of go-yaml's most important downstream projects. + +We will strive to earn the trust of the various go-yaml forks to switch back to +this repository as their upstream. + +Please [contact us](https://cloud-native.slack.com/archives/C08PPAT8PS7) if you +would like to contribute or be involved. + + +## Compatibility + +The `yaml` package supports most of YAML 1.2, but preserves some behavior from +1.1 for backwards compatibility. + +Specifically, v3 of the `yaml` package: + +* Supports YAML 1.1 bools (`yes`/`no`, `on`/`off`) as long as they are being + decoded into a typed bool value. + Otherwise they behave as a string. + Booleans in YAML 1.2 are `true`/`false` only. +* Supports octals encoded and decoded as `0777` per YAML 1.1, rather than + `0o777` as specified in YAML 1.2, because most parsers still use the old + format. + Octals in the `0o777` format are supported though, so new files work. +* Does not support base-60 floats. + These are gone from YAML 1.2, and were actually never supported by this + package as it's clearly a poor choice. + + +## Installation and Usage + +The import path for the package is *go.yaml.in/yaml/v3*. + +To install it, run: + +```bash +go get go.yaml.in/yaml/v3 +``` + + +## API Documentation + +See: + + +## API Stability + +The package API for yaml v3 will remain stable as described in [gopkg.in]( +https://gopkg.in). + + +## Example + +```go +package main + +import ( + "fmt" + "log" + + "go.yaml.in/yaml/v3" +) + +var data = ` +a: Easy! +b: + c: 2 + d: [3, 4] +` + +// Note: struct fields must be public in order for unmarshal to +// correctly populate the data. +type T struct { + A string + B struct { + RenamedC int `yaml:"c"` + D []int `yaml:",flow"` + } +} + +func main() { + t := T{} + + err := yaml.Unmarshal([]byte(data), &t) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Printf("--- t:\n%v\n\n", t) + + d, err := yaml.Marshal(&t) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Printf("--- t dump:\n%s\n\n", string(d)) + + m := make(map[interface{}]interface{}) + + err = yaml.Unmarshal([]byte(data), &m) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Printf("--- m:\n%v\n\n", m) + + d, err = yaml.Marshal(&m) + if err != nil { + log.Fatalf("error: %v", err) + } + fmt.Printf("--- m dump:\n%s\n\n", string(d)) +} +``` + +This example will generate the following output: + +``` +--- t: +{Easy! {2 [3 4]}} + +--- t dump: +a: Easy! +b: + c: 2 + d: [3, 4] + + +--- m: +map[a:Easy! b:map[c:2 d:[3 4]]] + +--- m dump: +a: Easy! +b: + c: 2 + d: + - 3 + - 4 +``` + + +## License + +The yaml package is licensed under the MIT and Apache License 2.0 licenses. +Please see the LICENSE file for details. diff --git a/vendor/go.yaml.in/yaml/v3/apic.go b/vendor/go.yaml.in/yaml/v3/apic.go new file mode 100644 index 0000000000..05fd305da1 --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/apic.go @@ -0,0 +1,747 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +import ( + "io" +) + +func yaml_insert_token(parser *yaml_parser_t, pos int, token *yaml_token_t) { + //fmt.Println("yaml_insert_token", "pos:", pos, "typ:", token.typ, "head:", parser.tokens_head, "len:", len(parser.tokens)) + + // Check if we can move the queue at the beginning of the buffer. + if parser.tokens_head > 0 && len(parser.tokens) == cap(parser.tokens) { + if parser.tokens_head != len(parser.tokens) { + copy(parser.tokens, parser.tokens[parser.tokens_head:]) + } + parser.tokens = parser.tokens[:len(parser.tokens)-parser.tokens_head] + parser.tokens_head = 0 + } + parser.tokens = append(parser.tokens, *token) + if pos < 0 { + return + } + copy(parser.tokens[parser.tokens_head+pos+1:], parser.tokens[parser.tokens_head+pos:]) + parser.tokens[parser.tokens_head+pos] = *token +} + +// Create a new parser object. +func yaml_parser_initialize(parser *yaml_parser_t) bool { + *parser = yaml_parser_t{ + raw_buffer: make([]byte, 0, input_raw_buffer_size), + buffer: make([]byte, 0, input_buffer_size), + } + return true +} + +// Destroy a parser object. +func yaml_parser_delete(parser *yaml_parser_t) { + *parser = yaml_parser_t{} +} + +// String read handler. +func yaml_string_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { + if parser.input_pos == len(parser.input) { + return 0, io.EOF + } + n = copy(buffer, parser.input[parser.input_pos:]) + parser.input_pos += n + return n, nil +} + +// Reader read handler. +func yaml_reader_read_handler(parser *yaml_parser_t, buffer []byte) (n int, err error) { + return parser.input_reader.Read(buffer) +} + +// Set a string input. +func yaml_parser_set_input_string(parser *yaml_parser_t, input []byte) { + if parser.read_handler != nil { + panic("must set the input source only once") + } + parser.read_handler = yaml_string_read_handler + parser.input = input + parser.input_pos = 0 +} + +// Set a file input. +func yaml_parser_set_input_reader(parser *yaml_parser_t, r io.Reader) { + if parser.read_handler != nil { + panic("must set the input source only once") + } + parser.read_handler = yaml_reader_read_handler + parser.input_reader = r +} + +// Set the source encoding. +func yaml_parser_set_encoding(parser *yaml_parser_t, encoding yaml_encoding_t) { + if parser.encoding != yaml_ANY_ENCODING { + panic("must set the encoding only once") + } + parser.encoding = encoding +} + +// Create a new emitter object. +func yaml_emitter_initialize(emitter *yaml_emitter_t) { + *emitter = yaml_emitter_t{ + buffer: make([]byte, output_buffer_size), + raw_buffer: make([]byte, 0, output_raw_buffer_size), + states: make([]yaml_emitter_state_t, 0, initial_stack_size), + events: make([]yaml_event_t, 0, initial_queue_size), + best_width: -1, + } +} + +// Destroy an emitter object. +func yaml_emitter_delete(emitter *yaml_emitter_t) { + *emitter = yaml_emitter_t{} +} + +// String write handler. +func yaml_string_write_handler(emitter *yaml_emitter_t, buffer []byte) error { + *emitter.output_buffer = append(*emitter.output_buffer, buffer...) + return nil +} + +// yaml_writer_write_handler uses emitter.output_writer to write the +// emitted text. +func yaml_writer_write_handler(emitter *yaml_emitter_t, buffer []byte) error { + _, err := emitter.output_writer.Write(buffer) + return err +} + +// Set a string output. +func yaml_emitter_set_output_string(emitter *yaml_emitter_t, output_buffer *[]byte) { + if emitter.write_handler != nil { + panic("must set the output target only once") + } + emitter.write_handler = yaml_string_write_handler + emitter.output_buffer = output_buffer +} + +// Set a file output. +func yaml_emitter_set_output_writer(emitter *yaml_emitter_t, w io.Writer) { + if emitter.write_handler != nil { + panic("must set the output target only once") + } + emitter.write_handler = yaml_writer_write_handler + emitter.output_writer = w +} + +// Set the output encoding. +func yaml_emitter_set_encoding(emitter *yaml_emitter_t, encoding yaml_encoding_t) { + if emitter.encoding != yaml_ANY_ENCODING { + panic("must set the output encoding only once") + } + emitter.encoding = encoding +} + +// Set the canonical output style. +func yaml_emitter_set_canonical(emitter *yaml_emitter_t, canonical bool) { + emitter.canonical = canonical +} + +// Set the indentation increment. +func yaml_emitter_set_indent(emitter *yaml_emitter_t, indent int) { + if indent < 2 || indent > 9 { + indent = 2 + } + emitter.best_indent = indent +} + +// Set the preferred line width. +func yaml_emitter_set_width(emitter *yaml_emitter_t, width int) { + if width < 0 { + width = -1 + } + emitter.best_width = width +} + +// Set if unescaped non-ASCII characters are allowed. +func yaml_emitter_set_unicode(emitter *yaml_emitter_t, unicode bool) { + emitter.unicode = unicode +} + +// Set the preferred line break character. +func yaml_emitter_set_break(emitter *yaml_emitter_t, line_break yaml_break_t) { + emitter.line_break = line_break +} + +///* +// * Destroy a token object. +// */ +// +//YAML_DECLARE(void) +//yaml_token_delete(yaml_token_t *token) +//{ +// assert(token); // Non-NULL token object expected. +// +// switch (token.type) +// { +// case YAML_TAG_DIRECTIVE_TOKEN: +// yaml_free(token.data.tag_directive.handle); +// yaml_free(token.data.tag_directive.prefix); +// break; +// +// case YAML_ALIAS_TOKEN: +// yaml_free(token.data.alias.value); +// break; +// +// case YAML_ANCHOR_TOKEN: +// yaml_free(token.data.anchor.value); +// break; +// +// case YAML_TAG_TOKEN: +// yaml_free(token.data.tag.handle); +// yaml_free(token.data.tag.suffix); +// break; +// +// case YAML_SCALAR_TOKEN: +// yaml_free(token.data.scalar.value); +// break; +// +// default: +// break; +// } +// +// memset(token, 0, sizeof(yaml_token_t)); +//} +// +///* +// * Check if a string is a valid UTF-8 sequence. +// * +// * Check 'reader.c' for more details on UTF-8 encoding. +// */ +// +//static int +//yaml_check_utf8(yaml_char_t *start, size_t length) +//{ +// yaml_char_t *end = start+length; +// yaml_char_t *pointer = start; +// +// while (pointer < end) { +// unsigned char octet; +// unsigned int width; +// unsigned int value; +// size_t k; +// +// octet = pointer[0]; +// width = (octet & 0x80) == 0x00 ? 1 : +// (octet & 0xE0) == 0xC0 ? 2 : +// (octet & 0xF0) == 0xE0 ? 3 : +// (octet & 0xF8) == 0xF0 ? 4 : 0; +// value = (octet & 0x80) == 0x00 ? octet & 0x7F : +// (octet & 0xE0) == 0xC0 ? octet & 0x1F : +// (octet & 0xF0) == 0xE0 ? octet & 0x0F : +// (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0; +// if (!width) return 0; +// if (pointer+width > end) return 0; +// for (k = 1; k < width; k ++) { +// octet = pointer[k]; +// if ((octet & 0xC0) != 0x80) return 0; +// value = (value << 6) + (octet & 0x3F); +// } +// if (!((width == 1) || +// (width == 2 && value >= 0x80) || +// (width == 3 && value >= 0x800) || +// (width == 4 && value >= 0x10000))) return 0; +// +// pointer += width; +// } +// +// return 1; +//} +// + +// Create STREAM-START. +func yaml_stream_start_event_initialize(event *yaml_event_t, encoding yaml_encoding_t) { + *event = yaml_event_t{ + typ: yaml_STREAM_START_EVENT, + encoding: encoding, + } +} + +// Create STREAM-END. +func yaml_stream_end_event_initialize(event *yaml_event_t) { + *event = yaml_event_t{ + typ: yaml_STREAM_END_EVENT, + } +} + +// Create DOCUMENT-START. +func yaml_document_start_event_initialize( + event *yaml_event_t, + version_directive *yaml_version_directive_t, + tag_directives []yaml_tag_directive_t, + implicit bool, +) { + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + version_directive: version_directive, + tag_directives: tag_directives, + implicit: implicit, + } +} + +// Create DOCUMENT-END. +func yaml_document_end_event_initialize(event *yaml_event_t, implicit bool) { + *event = yaml_event_t{ + typ: yaml_DOCUMENT_END_EVENT, + implicit: implicit, + } +} + +// Create ALIAS. +func yaml_alias_event_initialize(event *yaml_event_t, anchor []byte) bool { + *event = yaml_event_t{ + typ: yaml_ALIAS_EVENT, + anchor: anchor, + } + return true +} + +// Create SCALAR. +func yaml_scalar_event_initialize(event *yaml_event_t, anchor, tag, value []byte, plain_implicit, quoted_implicit bool, style yaml_scalar_style_t) bool { + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + anchor: anchor, + tag: tag, + value: value, + implicit: plain_implicit, + quoted_implicit: quoted_implicit, + style: yaml_style_t(style), + } + return true +} + +// Create SEQUENCE-START. +func yaml_sequence_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_sequence_style_t) bool { + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(style), + } + return true +} + +// Create SEQUENCE-END. +func yaml_sequence_end_event_initialize(event *yaml_event_t) bool { + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + } + return true +} + +// Create MAPPING-START. +func yaml_mapping_start_event_initialize(event *yaml_event_t, anchor, tag []byte, implicit bool, style yaml_mapping_style_t) { + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(style), + } +} + +// Create MAPPING-END. +func yaml_mapping_end_event_initialize(event *yaml_event_t) { + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + } +} + +// Destroy an event object. +func yaml_event_delete(event *yaml_event_t) { + *event = yaml_event_t{} +} + +///* +// * Create a document object. +// */ +// +//YAML_DECLARE(int) +//yaml_document_initialize(document *yaml_document_t, +// version_directive *yaml_version_directive_t, +// tag_directives_start *yaml_tag_directive_t, +// tag_directives_end *yaml_tag_directive_t, +// start_implicit int, end_implicit int) +//{ +// struct { +// error yaml_error_type_t +// } context +// struct { +// start *yaml_node_t +// end *yaml_node_t +// top *yaml_node_t +// } nodes = { NULL, NULL, NULL } +// version_directive_copy *yaml_version_directive_t = NULL +// struct { +// start *yaml_tag_directive_t +// end *yaml_tag_directive_t +// top *yaml_tag_directive_t +// } tag_directives_copy = { NULL, NULL, NULL } +// value yaml_tag_directive_t = { NULL, NULL } +// mark yaml_mark_t = { 0, 0, 0 } +// +// assert(document) // Non-NULL document object is expected. +// assert((tag_directives_start && tag_directives_end) || +// (tag_directives_start == tag_directives_end)) +// // Valid tag directives are expected. +// +// if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error +// +// if (version_directive) { +// version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t)) +// if (!version_directive_copy) goto error +// version_directive_copy.major = version_directive.major +// version_directive_copy.minor = version_directive.minor +// } +// +// if (tag_directives_start != tag_directives_end) { +// tag_directive *yaml_tag_directive_t +// if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE)) +// goto error +// for (tag_directive = tag_directives_start +// tag_directive != tag_directives_end; tag_directive ++) { +// assert(tag_directive.handle) +// assert(tag_directive.prefix) +// if (!yaml_check_utf8(tag_directive.handle, +// strlen((char *)tag_directive.handle))) +// goto error +// if (!yaml_check_utf8(tag_directive.prefix, +// strlen((char *)tag_directive.prefix))) +// goto error +// value.handle = yaml_strdup(tag_directive.handle) +// value.prefix = yaml_strdup(tag_directive.prefix) +// if (!value.handle || !value.prefix) goto error +// if (!PUSH(&context, tag_directives_copy, value)) +// goto error +// value.handle = NULL +// value.prefix = NULL +// } +// } +// +// DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy, +// tag_directives_copy.start, tag_directives_copy.top, +// start_implicit, end_implicit, mark, mark) +// +// return 1 +// +//error: +// STACK_DEL(&context, nodes) +// yaml_free(version_directive_copy) +// while (!STACK_EMPTY(&context, tag_directives_copy)) { +// value yaml_tag_directive_t = POP(&context, tag_directives_copy) +// yaml_free(value.handle) +// yaml_free(value.prefix) +// } +// STACK_DEL(&context, tag_directives_copy) +// yaml_free(value.handle) +// yaml_free(value.prefix) +// +// return 0 +//} +// +///* +// * Destroy a document object. +// */ +// +//YAML_DECLARE(void) +//yaml_document_delete(document *yaml_document_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// tag_directive *yaml_tag_directive_t +// +// context.error = YAML_NO_ERROR // Eliminate a compiler warning. +// +// assert(document) // Non-NULL document object is expected. +// +// while (!STACK_EMPTY(&context, document.nodes)) { +// node yaml_node_t = POP(&context, document.nodes) +// yaml_free(node.tag) +// switch (node.type) { +// case YAML_SCALAR_NODE: +// yaml_free(node.data.scalar.value) +// break +// case YAML_SEQUENCE_NODE: +// STACK_DEL(&context, node.data.sequence.items) +// break +// case YAML_MAPPING_NODE: +// STACK_DEL(&context, node.data.mapping.pairs) +// break +// default: +// assert(0) // Should not happen. +// } +// } +// STACK_DEL(&context, document.nodes) +// +// yaml_free(document.version_directive) +// for (tag_directive = document.tag_directives.start +// tag_directive != document.tag_directives.end +// tag_directive++) { +// yaml_free(tag_directive.handle) +// yaml_free(tag_directive.prefix) +// } +// yaml_free(document.tag_directives.start) +// +// memset(document, 0, sizeof(yaml_document_t)) +//} +// +///** +// * Get a document node. +// */ +// +//YAML_DECLARE(yaml_node_t *) +//yaml_document_get_node(document *yaml_document_t, index int) +//{ +// assert(document) // Non-NULL document object is expected. +// +// if (index > 0 && document.nodes.start + index <= document.nodes.top) { +// return document.nodes.start + index - 1 +// } +// return NULL +//} +// +///** +// * Get the root object. +// */ +// +//YAML_DECLARE(yaml_node_t *) +//yaml_document_get_root_node(document *yaml_document_t) +//{ +// assert(document) // Non-NULL document object is expected. +// +// if (document.nodes.top != document.nodes.start) { +// return document.nodes.start +// } +// return NULL +//} +// +///* +// * Add a scalar node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_scalar(document *yaml_document_t, +// tag *yaml_char_t, value *yaml_char_t, length int, +// style yaml_scalar_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// value_copy *yaml_char_t = NULL +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// assert(value) // Non-NULL value is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (length < 0) { +// length = strlen((char *)value) +// } +// +// if (!yaml_check_utf8(value, length)) goto error +// value_copy = yaml_malloc(length+1) +// if (!value_copy) goto error +// memcpy(value_copy, value, length) +// value_copy[length] = '\0' +// +// SCALAR_NODE_INIT(node, tag_copy, value_copy, length, style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// yaml_free(tag_copy) +// yaml_free(value_copy) +// +// return 0 +//} +// +///* +// * Add a sequence node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_sequence(document *yaml_document_t, +// tag *yaml_char_t, style yaml_sequence_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// struct { +// start *yaml_node_item_t +// end *yaml_node_item_t +// top *yaml_node_item_t +// } items = { NULL, NULL, NULL } +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error +// +// SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end, +// style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// STACK_DEL(&context, items) +// yaml_free(tag_copy) +// +// return 0 +//} +// +///* +// * Add a mapping node to a document. +// */ +// +//YAML_DECLARE(int) +//yaml_document_add_mapping(document *yaml_document_t, +// tag *yaml_char_t, style yaml_mapping_style_t) +//{ +// struct { +// error yaml_error_type_t +// } context +// mark yaml_mark_t = { 0, 0, 0 } +// tag_copy *yaml_char_t = NULL +// struct { +// start *yaml_node_pair_t +// end *yaml_node_pair_t +// top *yaml_node_pair_t +// } pairs = { NULL, NULL, NULL } +// node yaml_node_t +// +// assert(document) // Non-NULL document object is expected. +// +// if (!tag) { +// tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG +// } +// +// if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error +// tag_copy = yaml_strdup(tag) +// if (!tag_copy) goto error +// +// if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error +// +// MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end, +// style, mark, mark) +// if (!PUSH(&context, document.nodes, node)) goto error +// +// return document.nodes.top - document.nodes.start +// +//error: +// STACK_DEL(&context, pairs) +// yaml_free(tag_copy) +// +// return 0 +//} +// +///* +// * Append an item to a sequence node. +// */ +// +//YAML_DECLARE(int) +//yaml_document_append_sequence_item(document *yaml_document_t, +// sequence int, item int) +//{ +// struct { +// error yaml_error_type_t +// } context +// +// assert(document) // Non-NULL document is required. +// assert(sequence > 0 +// && document.nodes.start + sequence <= document.nodes.top) +// // Valid sequence id is required. +// assert(document.nodes.start[sequence-1].type == YAML_SEQUENCE_NODE) +// // A sequence node is required. +// assert(item > 0 && document.nodes.start + item <= document.nodes.top) +// // Valid item id is required. +// +// if (!PUSH(&context, +// document.nodes.start[sequence-1].data.sequence.items, item)) +// return 0 +// +// return 1 +//} +// +///* +// * Append a pair of a key and a value to a mapping node. +// */ +// +//YAML_DECLARE(int) +//yaml_document_append_mapping_pair(document *yaml_document_t, +// mapping int, key int, value int) +//{ +// struct { +// error yaml_error_type_t +// } context +// +// pair yaml_node_pair_t +// +// assert(document) // Non-NULL document is required. +// assert(mapping > 0 +// && document.nodes.start + mapping <= document.nodes.top) +// // Valid mapping id is required. +// assert(document.nodes.start[mapping-1].type == YAML_MAPPING_NODE) +// // A mapping node is required. +// assert(key > 0 && document.nodes.start + key <= document.nodes.top) +// // Valid key id is required. +// assert(value > 0 && document.nodes.start + value <= document.nodes.top) +// // Valid value id is required. +// +// pair.key = key +// pair.value = value +// +// if (!PUSH(&context, +// document.nodes.start[mapping-1].data.mapping.pairs, pair)) +// return 0 +// +// return 1 +//} +// +// diff --git a/vendor/go.yaml.in/yaml/v3/decode.go b/vendor/go.yaml.in/yaml/v3/decode.go new file mode 100644 index 0000000000..02e2b17bfe --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/decode.go @@ -0,0 +1,1018 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package yaml + +import ( + "encoding" + "encoding/base64" + "fmt" + "io" + "math" + "reflect" + "strconv" + "time" +) + +// ---------------------------------------------------------------------------- +// Parser, produces a node tree out of a libyaml event stream. + +type parser struct { + parser yaml_parser_t + event yaml_event_t + doc *Node + anchors map[string]*Node + doneInit bool + textless bool +} + +func newParser(b []byte) *parser { + p := parser{} + if !yaml_parser_initialize(&p.parser) { + panic("failed to initialize YAML emitter") + } + if len(b) == 0 { + b = []byte{'\n'} + } + yaml_parser_set_input_string(&p.parser, b) + return &p +} + +func newParserFromReader(r io.Reader) *parser { + p := parser{} + if !yaml_parser_initialize(&p.parser) { + panic("failed to initialize YAML emitter") + } + yaml_parser_set_input_reader(&p.parser, r) + return &p +} + +func (p *parser) init() { + if p.doneInit { + return + } + p.anchors = make(map[string]*Node) + p.expect(yaml_STREAM_START_EVENT) + p.doneInit = true +} + +func (p *parser) destroy() { + if p.event.typ != yaml_NO_EVENT { + yaml_event_delete(&p.event) + } + yaml_parser_delete(&p.parser) +} + +// expect consumes an event from the event stream and +// checks that it's of the expected type. +func (p *parser) expect(e yaml_event_type_t) { + if p.event.typ == yaml_NO_EVENT { + if !yaml_parser_parse(&p.parser, &p.event) { + p.fail() + } + } + if p.event.typ == yaml_STREAM_END_EVENT { + failf("attempted to go past the end of stream; corrupted value?") + } + if p.event.typ != e { + p.parser.problem = fmt.Sprintf("expected %s event but got %s", e, p.event.typ) + p.fail() + } + yaml_event_delete(&p.event) + p.event.typ = yaml_NO_EVENT +} + +// peek peeks at the next event in the event stream, +// puts the results into p.event and returns the event type. +func (p *parser) peek() yaml_event_type_t { + if p.event.typ != yaml_NO_EVENT { + return p.event.typ + } + // It's curious choice from the underlying API to generally return a + // positive result on success, but on this case return true in an error + // scenario. This was the source of bugs in the past (issue #666). + if !yaml_parser_parse(&p.parser, &p.event) || p.parser.error != yaml_NO_ERROR { + p.fail() + } + return p.event.typ +} + +func (p *parser) fail() { + var where string + var line int + if p.parser.context_mark.line != 0 { + line = p.parser.context_mark.line + // Scanner errors don't iterate line before returning error + if p.parser.error == yaml_SCANNER_ERROR { + line++ + } + } else if p.parser.problem_mark.line != 0 { + line = p.parser.problem_mark.line + // Scanner errors don't iterate line before returning error + if p.parser.error == yaml_SCANNER_ERROR { + line++ + } + } + if line != 0 { + where = "line " + strconv.Itoa(line) + ": " + } + var msg string + if len(p.parser.problem) > 0 { + msg = p.parser.problem + } else { + msg = "unknown problem parsing YAML content" + } + failf("%s%s", where, msg) +} + +func (p *parser) anchor(n *Node, anchor []byte) { + if anchor != nil { + n.Anchor = string(anchor) + p.anchors[n.Anchor] = n + } +} + +func (p *parser) parse() *Node { + p.init() + switch p.peek() { + case yaml_SCALAR_EVENT: + return p.scalar() + case yaml_ALIAS_EVENT: + return p.alias() + case yaml_MAPPING_START_EVENT: + return p.mapping() + case yaml_SEQUENCE_START_EVENT: + return p.sequence() + case yaml_DOCUMENT_START_EVENT: + return p.document() + case yaml_STREAM_END_EVENT: + // Happens when attempting to decode an empty buffer. + return nil + case yaml_TAIL_COMMENT_EVENT: + panic("internal error: unexpected tail comment event (please report)") + default: + panic("internal error: attempted to parse unknown event (please report): " + p.event.typ.String()) + } +} + +func (p *parser) node(kind Kind, defaultTag, tag, value string) *Node { + var style Style + if tag != "" && tag != "!" { + tag = shortTag(tag) + style = TaggedStyle + } else if defaultTag != "" { + tag = defaultTag + } else if kind == ScalarNode { + tag, _ = resolve("", value) + } + n := &Node{ + Kind: kind, + Tag: tag, + Value: value, + Style: style, + } + if !p.textless { + n.Line = p.event.start_mark.line + 1 + n.Column = p.event.start_mark.column + 1 + n.HeadComment = string(p.event.head_comment) + n.LineComment = string(p.event.line_comment) + n.FootComment = string(p.event.foot_comment) + } + return n +} + +func (p *parser) parseChild(parent *Node) *Node { + child := p.parse() + parent.Content = append(parent.Content, child) + return child +} + +func (p *parser) document() *Node { + n := p.node(DocumentNode, "", "", "") + p.doc = n + p.expect(yaml_DOCUMENT_START_EVENT) + p.parseChild(n) + if p.peek() == yaml_DOCUMENT_END_EVENT { + n.FootComment = string(p.event.foot_comment) + } + p.expect(yaml_DOCUMENT_END_EVENT) + return n +} + +func (p *parser) alias() *Node { + n := p.node(AliasNode, "", "", string(p.event.anchor)) + n.Alias = p.anchors[n.Value] + if n.Alias == nil { + failf("unknown anchor '%s' referenced", n.Value) + } + p.expect(yaml_ALIAS_EVENT) + return n +} + +func (p *parser) scalar() *Node { + var parsedStyle = p.event.scalar_style() + var nodeStyle Style + switch { + case parsedStyle&yaml_DOUBLE_QUOTED_SCALAR_STYLE != 0: + nodeStyle = DoubleQuotedStyle + case parsedStyle&yaml_SINGLE_QUOTED_SCALAR_STYLE != 0: + nodeStyle = SingleQuotedStyle + case parsedStyle&yaml_LITERAL_SCALAR_STYLE != 0: + nodeStyle = LiteralStyle + case parsedStyle&yaml_FOLDED_SCALAR_STYLE != 0: + nodeStyle = FoldedStyle + } + var nodeValue = string(p.event.value) + var nodeTag = string(p.event.tag) + var defaultTag string + if nodeStyle == 0 { + if nodeValue == "<<" { + defaultTag = mergeTag + } + } else { + defaultTag = strTag + } + n := p.node(ScalarNode, defaultTag, nodeTag, nodeValue) + n.Style |= nodeStyle + p.anchor(n, p.event.anchor) + p.expect(yaml_SCALAR_EVENT) + return n +} + +func (p *parser) sequence() *Node { + n := p.node(SequenceNode, seqTag, string(p.event.tag), "") + if p.event.sequence_style()&yaml_FLOW_SEQUENCE_STYLE != 0 { + n.Style |= FlowStyle + } + p.anchor(n, p.event.anchor) + p.expect(yaml_SEQUENCE_START_EVENT) + for p.peek() != yaml_SEQUENCE_END_EVENT { + p.parseChild(n) + } + n.LineComment = string(p.event.line_comment) + n.FootComment = string(p.event.foot_comment) + p.expect(yaml_SEQUENCE_END_EVENT) + return n +} + +func (p *parser) mapping() *Node { + n := p.node(MappingNode, mapTag, string(p.event.tag), "") + block := true + if p.event.mapping_style()&yaml_FLOW_MAPPING_STYLE != 0 { + block = false + n.Style |= FlowStyle + } + p.anchor(n, p.event.anchor) + p.expect(yaml_MAPPING_START_EVENT) + for p.peek() != yaml_MAPPING_END_EVENT { + k := p.parseChild(n) + if block && k.FootComment != "" { + // Must be a foot comment for the prior value when being dedented. + if len(n.Content) > 2 { + n.Content[len(n.Content)-3].FootComment = k.FootComment + k.FootComment = "" + } + } + v := p.parseChild(n) + if k.FootComment == "" && v.FootComment != "" { + k.FootComment = v.FootComment + v.FootComment = "" + } + if p.peek() == yaml_TAIL_COMMENT_EVENT { + if k.FootComment == "" { + k.FootComment = string(p.event.foot_comment) + } + p.expect(yaml_TAIL_COMMENT_EVENT) + } + } + n.LineComment = string(p.event.line_comment) + n.FootComment = string(p.event.foot_comment) + if n.Style&FlowStyle == 0 && n.FootComment != "" && len(n.Content) > 1 { + n.Content[len(n.Content)-2].FootComment = n.FootComment + n.FootComment = "" + } + p.expect(yaml_MAPPING_END_EVENT) + return n +} + +// ---------------------------------------------------------------------------- +// Decoder, unmarshals a node into a provided value. + +type decoder struct { + doc *Node + aliases map[*Node]bool + terrors []string + + stringMapType reflect.Type + generalMapType reflect.Type + + knownFields bool + uniqueKeys bool + decodeCount int + aliasCount int + aliasDepth int + + mergedFields map[interface{}]bool +} + +var ( + nodeType = reflect.TypeOf(Node{}) + durationType = reflect.TypeOf(time.Duration(0)) + stringMapType = reflect.TypeOf(map[string]interface{}{}) + generalMapType = reflect.TypeOf(map[interface{}]interface{}{}) + ifaceType = generalMapType.Elem() + timeType = reflect.TypeOf(time.Time{}) + ptrTimeType = reflect.TypeOf(&time.Time{}) +) + +func newDecoder() *decoder { + d := &decoder{ + stringMapType: stringMapType, + generalMapType: generalMapType, + uniqueKeys: true, + } + d.aliases = make(map[*Node]bool) + return d +} + +func (d *decoder) terror(n *Node, tag string, out reflect.Value) { + if n.Tag != "" { + tag = n.Tag + } + value := n.Value + if tag != seqTag && tag != mapTag { + if len(value) > 10 { + value = " `" + value[:7] + "...`" + } else { + value = " `" + value + "`" + } + } + d.terrors = append(d.terrors, fmt.Sprintf("line %d: cannot unmarshal %s%s into %s", n.Line, shortTag(tag), value, out.Type())) +} + +func (d *decoder) callUnmarshaler(n *Node, u Unmarshaler) (good bool) { + err := u.UnmarshalYAML(n) + if e, ok := err.(*TypeError); ok { + d.terrors = append(d.terrors, e.Errors...) + return false + } + if err != nil { + fail(err) + } + return true +} + +func (d *decoder) callObsoleteUnmarshaler(n *Node, u obsoleteUnmarshaler) (good bool) { + terrlen := len(d.terrors) + err := u.UnmarshalYAML(func(v interface{}) (err error) { + defer handleErr(&err) + d.unmarshal(n, reflect.ValueOf(v)) + if len(d.terrors) > terrlen { + issues := d.terrors[terrlen:] + d.terrors = d.terrors[:terrlen] + return &TypeError{issues} + } + return nil + }) + if e, ok := err.(*TypeError); ok { + d.terrors = append(d.terrors, e.Errors...) + return false + } + if err != nil { + fail(err) + } + return true +} + +// d.prepare initializes and dereferences pointers and calls UnmarshalYAML +// if a value is found to implement it. +// It returns the initialized and dereferenced out value, whether +// unmarshalling was already done by UnmarshalYAML, and if so whether +// its types unmarshalled appropriately. +// +// If n holds a null value, prepare returns before doing anything. +func (d *decoder) prepare(n *Node, out reflect.Value) (newout reflect.Value, unmarshaled, good bool) { + if n.ShortTag() == nullTag { + return out, false, false + } + again := true + for again { + again = false + if out.Kind() == reflect.Ptr { + if out.IsNil() { + out.Set(reflect.New(out.Type().Elem())) + } + out = out.Elem() + again = true + } + if out.CanAddr() { + outi := out.Addr().Interface() + if u, ok := outi.(Unmarshaler); ok { + good = d.callUnmarshaler(n, u) + return out, true, good + } + if u, ok := outi.(obsoleteUnmarshaler); ok { + good = d.callObsoleteUnmarshaler(n, u) + return out, true, good + } + } + } + return out, false, false +} + +func (d *decoder) fieldByIndex(n *Node, v reflect.Value, index []int) (field reflect.Value) { + if n.ShortTag() == nullTag { + return reflect.Value{} + } + for _, num := range index { + for { + if v.Kind() == reflect.Ptr { + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + v = v.Elem() + continue + } + break + } + v = v.Field(num) + } + return v +} + +const ( + // 400,000 decode operations is ~500kb of dense object declarations, or + // ~5kb of dense object declarations with 10000% alias expansion + alias_ratio_range_low = 400000 + + // 4,000,000 decode operations is ~5MB of dense object declarations, or + // ~4.5MB of dense object declarations with 10% alias expansion + alias_ratio_range_high = 4000000 + + // alias_ratio_range is the range over which we scale allowed alias ratios + alias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low) +) + +func allowedAliasRatio(decodeCount int) float64 { + switch { + case decodeCount <= alias_ratio_range_low: + // allow 99% to come from alias expansion for small-to-medium documents + return 0.99 + case decodeCount >= alias_ratio_range_high: + // allow 10% to come from alias expansion for very large documents + return 0.10 + default: + // scale smoothly from 99% down to 10% over the range. + // this maps to 396,000 - 400,000 allowed alias-driven decodes over the range. + // 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps). + return 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range) + } +} + +func (d *decoder) unmarshal(n *Node, out reflect.Value) (good bool) { + d.decodeCount++ + if d.aliasDepth > 0 { + d.aliasCount++ + } + if d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) { + failf("document contains excessive aliasing") + } + if out.Type() == nodeType { + out.Set(reflect.ValueOf(n).Elem()) + return true + } + switch n.Kind { + case DocumentNode: + return d.document(n, out) + case AliasNode: + return d.alias(n, out) + } + out, unmarshaled, good := d.prepare(n, out) + if unmarshaled { + return good + } + switch n.Kind { + case ScalarNode: + good = d.scalar(n, out) + case MappingNode: + good = d.mapping(n, out) + case SequenceNode: + good = d.sequence(n, out) + case 0: + if n.IsZero() { + return d.null(out) + } + fallthrough + default: + failf("cannot decode node with unknown kind %d", n.Kind) + } + return good +} + +func (d *decoder) document(n *Node, out reflect.Value) (good bool) { + if len(n.Content) == 1 { + d.doc = n + d.unmarshal(n.Content[0], out) + return true + } + return false +} + +func (d *decoder) alias(n *Node, out reflect.Value) (good bool) { + if d.aliases[n] { + // TODO this could actually be allowed in some circumstances. + failf("anchor '%s' value contains itself", n.Value) + } + d.aliases[n] = true + d.aliasDepth++ + good = d.unmarshal(n.Alias, out) + d.aliasDepth-- + delete(d.aliases, n) + return good +} + +var zeroValue reflect.Value + +func resetMap(out reflect.Value) { + for _, k := range out.MapKeys() { + out.SetMapIndex(k, zeroValue) + } +} + +func (d *decoder) null(out reflect.Value) bool { + if out.CanAddr() { + switch out.Kind() { + case reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: + out.Set(reflect.Zero(out.Type())) + return true + } + } + return false +} + +func (d *decoder) scalar(n *Node, out reflect.Value) bool { + var tag string + var resolved interface{} + if n.indicatedString() { + tag = strTag + resolved = n.Value + } else { + tag, resolved = resolve(n.Tag, n.Value) + if tag == binaryTag { + data, err := base64.StdEncoding.DecodeString(resolved.(string)) + if err != nil { + failf("!!binary value contains invalid base64 data") + } + resolved = string(data) + } + } + if resolved == nil { + return d.null(out) + } + if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { + // We've resolved to exactly the type we want, so use that. + out.Set(resolvedv) + return true + } + // Perhaps we can use the value as a TextUnmarshaler to + // set its value. + if out.CanAddr() { + u, ok := out.Addr().Interface().(encoding.TextUnmarshaler) + if ok { + var text []byte + if tag == binaryTag { + text = []byte(resolved.(string)) + } else { + // We let any value be unmarshaled into TextUnmarshaler. + // That might be more lax than we'd like, but the + // TextUnmarshaler itself should bowl out any dubious values. + text = []byte(n.Value) + } + err := u.UnmarshalText(text) + if err != nil { + fail(err) + } + return true + } + } + switch out.Kind() { + case reflect.String: + if tag == binaryTag { + out.SetString(resolved.(string)) + return true + } + out.SetString(n.Value) + return true + case reflect.Interface: + out.Set(reflect.ValueOf(resolved)) + return true + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + // This used to work in v2, but it's very unfriendly. + isDuration := out.Type() == durationType + + switch resolved := resolved.(type) { + case int: + if !isDuration && !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + return true + } + case int64: + if !isDuration && !out.OverflowInt(resolved) { + out.SetInt(resolved) + return true + } + case uint64: + if !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + return true + } + case float64: + if !isDuration && resolved <= math.MaxInt64 && !out.OverflowInt(int64(resolved)) { + out.SetInt(int64(resolved)) + return true + } + case string: + if out.Type() == durationType { + d, err := time.ParseDuration(resolved) + if err == nil { + out.SetInt(int64(d)) + return true + } + } + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + switch resolved := resolved.(type) { + case int: + if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + return true + } + case int64: + if resolved >= 0 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + return true + } + case uint64: + if !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + return true + } + case float64: + if resolved <= math.MaxUint64 && !out.OverflowUint(uint64(resolved)) { + out.SetUint(uint64(resolved)) + return true + } + } + case reflect.Bool: + switch resolved := resolved.(type) { + case bool: + out.SetBool(resolved) + return true + case string: + // This offers some compatibility with the 1.1 spec (https://yaml.org/type/bool.html). + // It only works if explicitly attempting to unmarshal into a typed bool value. + switch resolved { + case "y", "Y", "yes", "Yes", "YES", "on", "On", "ON": + out.SetBool(true) + return true + case "n", "N", "no", "No", "NO", "off", "Off", "OFF": + out.SetBool(false) + return true + } + } + case reflect.Float32, reflect.Float64: + switch resolved := resolved.(type) { + case int: + out.SetFloat(float64(resolved)) + return true + case int64: + out.SetFloat(float64(resolved)) + return true + case uint64: + out.SetFloat(float64(resolved)) + return true + case float64: + out.SetFloat(resolved) + return true + } + case reflect.Struct: + if resolvedv := reflect.ValueOf(resolved); out.Type() == resolvedv.Type() { + out.Set(resolvedv) + return true + } + case reflect.Ptr: + panic("yaml internal error: please report the issue") + } + d.terror(n, tag, out) + return false +} + +func settableValueOf(i interface{}) reflect.Value { + v := reflect.ValueOf(i) + sv := reflect.New(v.Type()).Elem() + sv.Set(v) + return sv +} + +func (d *decoder) sequence(n *Node, out reflect.Value) (good bool) { + l := len(n.Content) + + var iface reflect.Value + switch out.Kind() { + case reflect.Slice: + out.Set(reflect.MakeSlice(out.Type(), l, l)) + case reflect.Array: + if l != out.Len() { + failf("invalid array: want %d elements but got %d", out.Len(), l) + } + case reflect.Interface: + // No type hints. Will have to use a generic sequence. + iface = out + out = settableValueOf(make([]interface{}, l)) + default: + d.terror(n, seqTag, out) + return false + } + et := out.Type().Elem() + + j := 0 + for i := 0; i < l; i++ { + e := reflect.New(et).Elem() + if ok := d.unmarshal(n.Content[i], e); ok { + out.Index(j).Set(e) + j++ + } + } + if out.Kind() != reflect.Array { + out.Set(out.Slice(0, j)) + } + if iface.IsValid() { + iface.Set(out) + } + return true +} + +func (d *decoder) mapping(n *Node, out reflect.Value) (good bool) { + l := len(n.Content) + if d.uniqueKeys { + nerrs := len(d.terrors) + for i := 0; i < l; i += 2 { + ni := n.Content[i] + for j := i + 2; j < l; j += 2 { + nj := n.Content[j] + if ni.Kind == nj.Kind && ni.Value == nj.Value { + d.terrors = append(d.terrors, fmt.Sprintf("line %d: mapping key %#v already defined at line %d", nj.Line, nj.Value, ni.Line)) + } + } + } + if len(d.terrors) > nerrs { + return false + } + } + switch out.Kind() { + case reflect.Struct: + return d.mappingStruct(n, out) + case reflect.Map: + // okay + case reflect.Interface: + iface := out + if isStringMap(n) { + out = reflect.MakeMap(d.stringMapType) + } else { + out = reflect.MakeMap(d.generalMapType) + } + iface.Set(out) + default: + d.terror(n, mapTag, out) + return false + } + + outt := out.Type() + kt := outt.Key() + et := outt.Elem() + + stringMapType := d.stringMapType + generalMapType := d.generalMapType + if outt.Elem() == ifaceType { + if outt.Key().Kind() == reflect.String { + d.stringMapType = outt + } else if outt.Key() == ifaceType { + d.generalMapType = outt + } + } + + mergedFields := d.mergedFields + d.mergedFields = nil + + var mergeNode *Node + + mapIsNew := false + if out.IsNil() { + out.Set(reflect.MakeMap(outt)) + mapIsNew = true + } + for i := 0; i < l; i += 2 { + if isMerge(n.Content[i]) { + mergeNode = n.Content[i+1] + continue + } + k := reflect.New(kt).Elem() + if d.unmarshal(n.Content[i], k) { + if mergedFields != nil { + ki := k.Interface() + if d.getPossiblyUnhashableKey(mergedFields, ki) { + continue + } + d.setPossiblyUnhashableKey(mergedFields, ki, true) + } + kkind := k.Kind() + if kkind == reflect.Interface { + kkind = k.Elem().Kind() + } + if kkind == reflect.Map || kkind == reflect.Slice { + failf("invalid map key: %#v", k.Interface()) + } + e := reflect.New(et).Elem() + if d.unmarshal(n.Content[i+1], e) || n.Content[i+1].ShortTag() == nullTag && (mapIsNew || !out.MapIndex(k).IsValid()) { + out.SetMapIndex(k, e) + } + } + } + + d.mergedFields = mergedFields + if mergeNode != nil { + d.merge(n, mergeNode, out) + } + + d.stringMapType = stringMapType + d.generalMapType = generalMapType + return true +} + +func isStringMap(n *Node) bool { + if n.Kind != MappingNode { + return false + } + l := len(n.Content) + for i := 0; i < l; i += 2 { + shortTag := n.Content[i].ShortTag() + if shortTag != strTag && shortTag != mergeTag { + return false + } + } + return true +} + +func (d *decoder) mappingStruct(n *Node, out reflect.Value) (good bool) { + sinfo, err := getStructInfo(out.Type()) + if err != nil { + panic(err) + } + + var inlineMap reflect.Value + var elemType reflect.Type + if sinfo.InlineMap != -1 { + inlineMap = out.Field(sinfo.InlineMap) + elemType = inlineMap.Type().Elem() + } + + for _, index := range sinfo.InlineUnmarshalers { + field := d.fieldByIndex(n, out, index) + d.prepare(n, field) + } + + mergedFields := d.mergedFields + d.mergedFields = nil + var mergeNode *Node + var doneFields []bool + if d.uniqueKeys { + doneFields = make([]bool, len(sinfo.FieldsList)) + } + name := settableValueOf("") + l := len(n.Content) + for i := 0; i < l; i += 2 { + ni := n.Content[i] + if isMerge(ni) { + mergeNode = n.Content[i+1] + continue + } + if !d.unmarshal(ni, name) { + continue + } + sname := name.String() + if mergedFields != nil { + if mergedFields[sname] { + continue + } + mergedFields[sname] = true + } + if info, ok := sinfo.FieldsMap[sname]; ok { + if d.uniqueKeys { + if doneFields[info.Id] { + d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s already set in type %s", ni.Line, name.String(), out.Type())) + continue + } + doneFields[info.Id] = true + } + var field reflect.Value + if info.Inline == nil { + field = out.Field(info.Num) + } else { + field = d.fieldByIndex(n, out, info.Inline) + } + d.unmarshal(n.Content[i+1], field) + } else if sinfo.InlineMap != -1 { + if inlineMap.IsNil() { + inlineMap.Set(reflect.MakeMap(inlineMap.Type())) + } + value := reflect.New(elemType).Elem() + d.unmarshal(n.Content[i+1], value) + inlineMap.SetMapIndex(name, value) + } else if d.knownFields { + d.terrors = append(d.terrors, fmt.Sprintf("line %d: field %s not found in type %s", ni.Line, name.String(), out.Type())) + } + } + + d.mergedFields = mergedFields + if mergeNode != nil { + d.merge(n, mergeNode, out) + } + return true +} + +func failWantMap() { + failf("map merge requires map or sequence of maps as the value") +} + +func (d *decoder) setPossiblyUnhashableKey(m map[interface{}]bool, key interface{}, value bool) { + defer func() { + if err := recover(); err != nil { + failf("%v", err) + } + }() + m[key] = value +} + +func (d *decoder) getPossiblyUnhashableKey(m map[interface{}]bool, key interface{}) bool { + defer func() { + if err := recover(); err != nil { + failf("%v", err) + } + }() + return m[key] +} + +func (d *decoder) merge(parent *Node, merge *Node, out reflect.Value) { + mergedFields := d.mergedFields + if mergedFields == nil { + d.mergedFields = make(map[interface{}]bool) + for i := 0; i < len(parent.Content); i += 2 { + k := reflect.New(ifaceType).Elem() + if d.unmarshal(parent.Content[i], k) { + d.setPossiblyUnhashableKey(d.mergedFields, k.Interface(), true) + } + } + } + + switch merge.Kind { + case MappingNode: + d.unmarshal(merge, out) + case AliasNode: + if merge.Alias != nil && merge.Alias.Kind != MappingNode { + failWantMap() + } + d.unmarshal(merge, out) + case SequenceNode: + for i := 0; i < len(merge.Content); i++ { + ni := merge.Content[i] + if ni.Kind == AliasNode { + if ni.Alias != nil && ni.Alias.Kind != MappingNode { + failWantMap() + } + } else if ni.Kind != MappingNode { + failWantMap() + } + d.unmarshal(ni, out) + } + default: + failWantMap() + } + + d.mergedFields = mergedFields +} + +func isMerge(n *Node) bool { + return n.Kind == ScalarNode && n.Value == "<<" && (n.Tag == "" || n.Tag == "!" || shortTag(n.Tag) == mergeTag) +} diff --git a/vendor/go.yaml.in/yaml/v3/emitterc.go b/vendor/go.yaml.in/yaml/v3/emitterc.go new file mode 100644 index 0000000000..ab4e03ba72 --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/emitterc.go @@ -0,0 +1,2054 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +import ( + "bytes" + "fmt" +) + +// Flush the buffer if needed. +func flush(emitter *yaml_emitter_t) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) { + return yaml_emitter_flush(emitter) + } + return true +} + +// Put a character to the output buffer. +func put(emitter *yaml_emitter_t, value byte) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + emitter.buffer[emitter.buffer_pos] = value + emitter.buffer_pos++ + emitter.column++ + return true +} + +// Put a line break to the output buffer. +func put_break(emitter *yaml_emitter_t) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + switch emitter.line_break { + case yaml_CR_BREAK: + emitter.buffer[emitter.buffer_pos] = '\r' + emitter.buffer_pos += 1 + case yaml_LN_BREAK: + emitter.buffer[emitter.buffer_pos] = '\n' + emitter.buffer_pos += 1 + case yaml_CRLN_BREAK: + emitter.buffer[emitter.buffer_pos+0] = '\r' + emitter.buffer[emitter.buffer_pos+1] = '\n' + emitter.buffer_pos += 2 + default: + panic("unknown line break setting") + } + if emitter.column == 0 { + emitter.space_above = true + } + emitter.column = 0 + emitter.line++ + // [Go] Do this here and below and drop from everywhere else (see commented lines). + emitter.indention = true + return true +} + +// Copy a character from a string into buffer. +func write(emitter *yaml_emitter_t, s []byte, i *int) bool { + if emitter.buffer_pos+5 >= len(emitter.buffer) && !yaml_emitter_flush(emitter) { + return false + } + p := emitter.buffer_pos + w := width(s[*i]) + switch w { + case 4: + emitter.buffer[p+3] = s[*i+3] + fallthrough + case 3: + emitter.buffer[p+2] = s[*i+2] + fallthrough + case 2: + emitter.buffer[p+1] = s[*i+1] + fallthrough + case 1: + emitter.buffer[p+0] = s[*i+0] + default: + panic("unknown character width") + } + emitter.column++ + emitter.buffer_pos += w + *i += w + return true +} + +// Write a whole string into buffer. +func write_all(emitter *yaml_emitter_t, s []byte) bool { + for i := 0; i < len(s); { + if !write(emitter, s, &i) { + return false + } + } + return true +} + +// Copy a line break character from a string into buffer. +func write_break(emitter *yaml_emitter_t, s []byte, i *int) bool { + if s[*i] == '\n' { + if !put_break(emitter) { + return false + } + *i++ + } else { + if !write(emitter, s, i) { + return false + } + if emitter.column == 0 { + emitter.space_above = true + } + emitter.column = 0 + emitter.line++ + // [Go] Do this here and above and drop from everywhere else (see commented lines). + emitter.indention = true + } + return true +} + +// Set an emitter error and return false. +func yaml_emitter_set_emitter_error(emitter *yaml_emitter_t, problem string) bool { + emitter.error = yaml_EMITTER_ERROR + emitter.problem = problem + return false +} + +// Emit an event. +func yaml_emitter_emit(emitter *yaml_emitter_t, event *yaml_event_t) bool { + emitter.events = append(emitter.events, *event) + for !yaml_emitter_need_more_events(emitter) { + event := &emitter.events[emitter.events_head] + if !yaml_emitter_analyze_event(emitter, event) { + return false + } + if !yaml_emitter_state_machine(emitter, event) { + return false + } + yaml_event_delete(event) + emitter.events_head++ + } + return true +} + +// Check if we need to accumulate more events before emitting. +// +// We accumulate extra +// - 1 event for DOCUMENT-START +// - 2 events for SEQUENCE-START +// - 3 events for MAPPING-START +func yaml_emitter_need_more_events(emitter *yaml_emitter_t) bool { + if emitter.events_head == len(emitter.events) { + return true + } + var accumulate int + switch emitter.events[emitter.events_head].typ { + case yaml_DOCUMENT_START_EVENT: + accumulate = 1 + break + case yaml_SEQUENCE_START_EVENT: + accumulate = 2 + break + case yaml_MAPPING_START_EVENT: + accumulate = 3 + break + default: + return false + } + if len(emitter.events)-emitter.events_head > accumulate { + return false + } + var level int + for i := emitter.events_head; i < len(emitter.events); i++ { + switch emitter.events[i].typ { + case yaml_STREAM_START_EVENT, yaml_DOCUMENT_START_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT: + level++ + case yaml_STREAM_END_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_END_EVENT, yaml_MAPPING_END_EVENT: + level-- + } + if level == 0 { + return false + } + } + return true +} + +// Append a directive to the directives stack. +func yaml_emitter_append_tag_directive(emitter *yaml_emitter_t, value *yaml_tag_directive_t, allow_duplicates bool) bool { + for i := 0; i < len(emitter.tag_directives); i++ { + if bytes.Equal(value.handle, emitter.tag_directives[i].handle) { + if allow_duplicates { + return true + } + return yaml_emitter_set_emitter_error(emitter, "duplicate %TAG directive") + } + } + + // [Go] Do we actually need to copy this given garbage collection + // and the lack of deallocating destructors? + tag_copy := yaml_tag_directive_t{ + handle: make([]byte, len(value.handle)), + prefix: make([]byte, len(value.prefix)), + } + copy(tag_copy.handle, value.handle) + copy(tag_copy.prefix, value.prefix) + emitter.tag_directives = append(emitter.tag_directives, tag_copy) + return true +} + +// Increase the indentation level. +func yaml_emitter_increase_indent_compact(emitter *yaml_emitter_t, flow, indentless bool, compact_seq bool) bool { + emitter.indents = append(emitter.indents, emitter.indent) + if emitter.indent < 0 { + if flow { + emitter.indent = emitter.best_indent + } else { + emitter.indent = 0 + } + } else if !indentless { + // [Go] This was changed so that indentations are more regular. + if emitter.states[len(emitter.states)-1] == yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE { + // The first indent inside a sequence will just skip the "- " indicator. + emitter.indent += 2 + } else { + // Everything else aligns to the chosen indentation. + emitter.indent = emitter.best_indent * ((emitter.indent + emitter.best_indent) / emitter.best_indent) + if compact_seq { + // The value compact_seq passed in is almost always set to `false` when this function is called, + // except when we are dealing with sequence nodes. So this gets triggered to subtract 2 only when we + // are increasing the indent to account for sequence nodes, which will be correct because we need to + // subtract 2 to account for the - at the beginning of the sequence node. + emitter.indent = emitter.indent - 2 + } + } + } + return true +} + +// State dispatcher. +func yaml_emitter_state_machine(emitter *yaml_emitter_t, event *yaml_event_t) bool { + switch emitter.state { + default: + case yaml_EMIT_STREAM_START_STATE: + return yaml_emitter_emit_stream_start(emitter, event) + + case yaml_EMIT_FIRST_DOCUMENT_START_STATE: + return yaml_emitter_emit_document_start(emitter, event, true) + + case yaml_EMIT_DOCUMENT_START_STATE: + return yaml_emitter_emit_document_start(emitter, event, false) + + case yaml_EMIT_DOCUMENT_CONTENT_STATE: + return yaml_emitter_emit_document_content(emitter, event) + + case yaml_EMIT_DOCUMENT_END_STATE: + return yaml_emitter_emit_document_end(emitter, event) + + case yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, true, false) + + case yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, false, true) + + case yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE: + return yaml_emitter_emit_flow_sequence_item(emitter, event, false, false) + + case yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, true, false) + + case yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, false, true) + + case yaml_EMIT_FLOW_MAPPING_KEY_STATE: + return yaml_emitter_emit_flow_mapping_key(emitter, event, false, false) + + case yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE: + return yaml_emitter_emit_flow_mapping_value(emitter, event, true) + + case yaml_EMIT_FLOW_MAPPING_VALUE_STATE: + return yaml_emitter_emit_flow_mapping_value(emitter, event, false) + + case yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE: + return yaml_emitter_emit_block_sequence_item(emitter, event, true) + + case yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE: + return yaml_emitter_emit_block_sequence_item(emitter, event, false) + + case yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE: + return yaml_emitter_emit_block_mapping_key(emitter, event, true) + + case yaml_EMIT_BLOCK_MAPPING_KEY_STATE: + return yaml_emitter_emit_block_mapping_key(emitter, event, false) + + case yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE: + return yaml_emitter_emit_block_mapping_value(emitter, event, true) + + case yaml_EMIT_BLOCK_MAPPING_VALUE_STATE: + return yaml_emitter_emit_block_mapping_value(emitter, event, false) + + case yaml_EMIT_END_STATE: + return yaml_emitter_set_emitter_error(emitter, "expected nothing after STREAM-END") + } + panic("invalid emitter state") +} + +// Expect STREAM-START. +func yaml_emitter_emit_stream_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if event.typ != yaml_STREAM_START_EVENT { + return yaml_emitter_set_emitter_error(emitter, "expected STREAM-START") + } + if emitter.encoding == yaml_ANY_ENCODING { + emitter.encoding = event.encoding + if emitter.encoding == yaml_ANY_ENCODING { + emitter.encoding = yaml_UTF8_ENCODING + } + } + if emitter.best_indent < 2 || emitter.best_indent > 9 { + emitter.best_indent = 2 + } + if emitter.best_width >= 0 && emitter.best_width <= emitter.best_indent*2 { + emitter.best_width = 80 + } + if emitter.best_width < 0 { + emitter.best_width = 1<<31 - 1 + } + if emitter.line_break == yaml_ANY_BREAK { + emitter.line_break = yaml_LN_BREAK + } + + emitter.indent = -1 + emitter.line = 0 + emitter.column = 0 + emitter.whitespace = true + emitter.indention = true + emitter.space_above = true + emitter.foot_indent = -1 + + if emitter.encoding != yaml_UTF8_ENCODING { + if !yaml_emitter_write_bom(emitter) { + return false + } + } + emitter.state = yaml_EMIT_FIRST_DOCUMENT_START_STATE + return true +} + +// Expect DOCUMENT-START or STREAM-END. +func yaml_emitter_emit_document_start(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + + if event.typ == yaml_DOCUMENT_START_EVENT { + + if event.version_directive != nil { + if !yaml_emitter_analyze_version_directive(emitter, event.version_directive) { + return false + } + } + + for i := 0; i < len(event.tag_directives); i++ { + tag_directive := &event.tag_directives[i] + if !yaml_emitter_analyze_tag_directive(emitter, tag_directive) { + return false + } + if !yaml_emitter_append_tag_directive(emitter, tag_directive, false) { + return false + } + } + + for i := 0; i < len(default_tag_directives); i++ { + tag_directive := &default_tag_directives[i] + if !yaml_emitter_append_tag_directive(emitter, tag_directive, true) { + return false + } + } + + implicit := event.implicit + if !first || emitter.canonical { + implicit = false + } + + if emitter.open_ended && (event.version_directive != nil || len(event.tag_directives) > 0) { + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if event.version_directive != nil { + implicit = false + if !yaml_emitter_write_indicator(emitter, []byte("%YAML"), true, false, false) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte("1.1"), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if len(event.tag_directives) > 0 { + implicit = false + for i := 0; i < len(event.tag_directives); i++ { + tag_directive := &event.tag_directives[i] + if !yaml_emitter_write_indicator(emitter, []byte("%TAG"), true, false, false) { + return false + } + if !yaml_emitter_write_tag_handle(emitter, tag_directive.handle) { + return false + } + if !yaml_emitter_write_tag_content(emitter, tag_directive.prefix, true) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + } + + if yaml_emitter_check_empty_document(emitter) { + implicit = false + } + if !implicit { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte("---"), true, false, false) { + return false + } + if emitter.canonical || true { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + } + + if len(emitter.head_comment) > 0 { + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if !put_break(emitter) { + return false + } + } + + emitter.state = yaml_EMIT_DOCUMENT_CONTENT_STATE + return true + } + + if event.typ == yaml_STREAM_END_EVENT { + if emitter.open_ended { + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_flush(emitter) { + return false + } + emitter.state = yaml_EMIT_END_STATE + return true + } + + return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-START or STREAM-END") +} + +// yaml_emitter_increase_indent preserves the original signature and delegates to +// yaml_emitter_increase_indent_compact without compact-sequence indentation +func yaml_emitter_increase_indent(emitter *yaml_emitter_t, flow, indentless bool) bool { + return yaml_emitter_increase_indent_compact(emitter, flow, indentless, false) +} + +// yaml_emitter_process_line_comment preserves the original signature and delegates to +// yaml_emitter_process_line_comment_linebreak passing false for linebreak +func yaml_emitter_process_line_comment(emitter *yaml_emitter_t) bool { + return yaml_emitter_process_line_comment_linebreak(emitter, false) +} + +// Expect the root node. +func yaml_emitter_emit_document_content(emitter *yaml_emitter_t, event *yaml_event_t) bool { + emitter.states = append(emitter.states, yaml_EMIT_DOCUMENT_END_STATE) + + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if !yaml_emitter_emit_node(emitter, event, true, false, false, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +// Expect DOCUMENT-END. +func yaml_emitter_emit_document_end(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if event.typ != yaml_DOCUMENT_END_EVENT { + return yaml_emitter_set_emitter_error(emitter, "expected DOCUMENT-END") + } + // [Go] Force document foot separation. + emitter.foot_indent = 0 + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + emitter.foot_indent = -1 + if !yaml_emitter_write_indent(emitter) { + return false + } + if !event.implicit { + // [Go] Allocate the slice elsewhere. + if !yaml_emitter_write_indicator(emitter, []byte("..."), true, false, false) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_flush(emitter) { + return false + } + emitter.state = yaml_EMIT_DOCUMENT_START_STATE + emitter.tag_directives = emitter.tag_directives[:0] + return true +} + +// Expect a flow item node. +func yaml_emitter_emit_flow_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool { + if first { + if !yaml_emitter_write_indicator(emitter, []byte{'['}, true, true, false) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + emitter.flow_level++ + } + + if event.typ == yaml_SEQUENCE_END_EVENT { + if emitter.canonical && !first && !trail { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + emitter.flow_level-- + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + if emitter.column == 0 || emitter.canonical && !first { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{']'}, false, false, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + + return true + } + + if !first && !trail { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if emitter.column == 0 { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE) + } else { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE) + } + if !yaml_emitter_emit_node(emitter, event, false, true, false, false) { + return false + } + if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +// Expect a flow key node. +func yaml_emitter_emit_flow_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first, trail bool) bool { + if first { + if !yaml_emitter_write_indicator(emitter, []byte{'{'}, true, true, false) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + emitter.flow_level++ + } + + if event.typ == yaml_MAPPING_END_EVENT { + if (emitter.canonical || len(emitter.head_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0) && !first && !trail { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + if !yaml_emitter_process_head_comment(emitter) { + return false + } + emitter.flow_level-- + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + if emitter.canonical && !first { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'}'}, false, false, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + + if !first && !trail { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + + if !yaml_emitter_process_head_comment(emitter) { + return false + } + + if emitter.column == 0 { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + + if !emitter.canonical && yaml_emitter_check_simple_key(emitter) { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, true) + } + if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, false) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a flow value node. +func yaml_emitter_emit_flow_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { + if simple { + if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { + return false + } + } else { + if emitter.canonical || emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, false) { + return false + } + } + if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE) + } else { + emitter.states = append(emitter.states, yaml_EMIT_FLOW_MAPPING_KEY_STATE) + } + if !yaml_emitter_emit_node(emitter, event, false, false, true, false) { + return false + } + if len(emitter.line_comment)+len(emitter.foot_comment)+len(emitter.tail_comment) > 0 { + if !yaml_emitter_write_indicator(emitter, []byte{','}, false, false, false) { + return false + } + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +// Expect a block item node. +func yaml_emitter_emit_block_sequence_item(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + // emitter.mapping context tells us if we are currently in a mapping context. + // emiiter.column tells us which column we are in in the yaml output. 0 is the first char of the column. + // emitter.indentation tells us if the last character was an indentation character. + // emitter.compact_sequence_indent tells us if '- ' is considered part of the indentation for sequence elements. + // So, `seq` means that we are in a mapping context, and we are either at the first char of the column or + // the last character was not an indentation character, and we consider '- ' part of the indentation + // for sequence elements. + seq := emitter.mapping_context && (emitter.column == 0 || !emitter.indention) && + emitter.compact_sequence_indent + if !yaml_emitter_increase_indent_compact(emitter, false, false, seq) { + return false + } + } + if event.typ == yaml_SEQUENCE_END_EVENT { + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{'-'}, true, false, true) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE) + if !yaml_emitter_emit_node(emitter, event, false, true, false, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +// Expect a block key node. +func yaml_emitter_emit_block_mapping_key(emitter *yaml_emitter_t, event *yaml_event_t, first bool) bool { + if first { + if !yaml_emitter_increase_indent(emitter, false, false) { + return false + } + } + if !yaml_emitter_process_head_comment(emitter) { + return false + } + if event.typ == yaml_MAPPING_END_EVENT { + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if len(emitter.line_comment) > 0 { + // [Go] A line comment was provided for the key. That's unusual as the + // scanner associates line comments with the value. Either way, + // save the line comment and render it appropriately later. + emitter.key_line_comment = emitter.line_comment + emitter.line_comment = nil + } + if yaml_emitter_check_simple_key(emitter) { + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, true) + } + if !yaml_emitter_write_indicator(emitter, []byte{'?'}, true, false, true) { + return false + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_VALUE_STATE) + return yaml_emitter_emit_node(emitter, event, false, false, true, false) +} + +// Expect a block value node. +func yaml_emitter_emit_block_mapping_value(emitter *yaml_emitter_t, event *yaml_event_t, simple bool) bool { + if simple { + if !yaml_emitter_write_indicator(emitter, []byte{':'}, false, false, false) { + return false + } + } else { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{':'}, true, false, true) { + return false + } + } + if len(emitter.key_line_comment) > 0 { + // [Go] Line comments are generally associated with the value, but when there's + // no value on the same line as a mapping key they end up attached to the + // key itself. + if event.typ == yaml_SCALAR_EVENT { + if len(emitter.line_comment) == 0 { + // A scalar is coming and it has no line comments by itself yet, + // so just let it handle the line comment as usual. If it has a + // line comment, we can't have both so the one from the key is lost. + emitter.line_comment = emitter.key_line_comment + emitter.key_line_comment = nil + } + } else if event.sequence_style() != yaml_FLOW_SEQUENCE_STYLE && (event.typ == yaml_MAPPING_START_EVENT || event.typ == yaml_SEQUENCE_START_EVENT) { + // An indented block follows, so write the comment right now. + emitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment + if !yaml_emitter_process_line_comment(emitter) { + return false + } + emitter.line_comment, emitter.key_line_comment = emitter.key_line_comment, emitter.line_comment + } + } + emitter.states = append(emitter.states, yaml_EMIT_BLOCK_MAPPING_KEY_STATE) + if !yaml_emitter_emit_node(emitter, event, false, false, true, false) { + return false + } + if !yaml_emitter_process_line_comment(emitter) { + return false + } + if !yaml_emitter_process_foot_comment(emitter) { + return false + } + return true +} + +func yaml_emitter_silent_nil_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { + return event.typ == yaml_SCALAR_EVENT && event.implicit && !emitter.canonical && len(emitter.scalar_data.value) == 0 +} + +// Expect a node. +func yaml_emitter_emit_node(emitter *yaml_emitter_t, event *yaml_event_t, + root bool, sequence bool, mapping bool, simple_key bool) bool { + + emitter.root_context = root + emitter.sequence_context = sequence + emitter.mapping_context = mapping + emitter.simple_key_context = simple_key + + switch event.typ { + case yaml_ALIAS_EVENT: + return yaml_emitter_emit_alias(emitter, event) + case yaml_SCALAR_EVENT: + return yaml_emitter_emit_scalar(emitter, event) + case yaml_SEQUENCE_START_EVENT: + return yaml_emitter_emit_sequence_start(emitter, event) + case yaml_MAPPING_START_EVENT: + return yaml_emitter_emit_mapping_start(emitter, event) + default: + return yaml_emitter_set_emitter_error(emitter, + fmt.Sprintf("expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS, but got %v", event.typ)) + } +} + +// Expect ALIAS. +func yaml_emitter_emit_alias(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true +} + +// Expect SCALAR. +func yaml_emitter_emit_scalar(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_select_scalar_style(emitter, event) { + return false + } + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if !yaml_emitter_increase_indent(emitter, true, false) { + return false + } + if !yaml_emitter_process_scalar(emitter) { + return false + } + emitter.indent = emitter.indents[len(emitter.indents)-1] + emitter.indents = emitter.indents[:len(emitter.indents)-1] + emitter.state = emitter.states[len(emitter.states)-1] + emitter.states = emitter.states[:len(emitter.states)-1] + return true +} + +// Expect SEQUENCE-START. +func yaml_emitter_emit_sequence_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if emitter.flow_level > 0 || emitter.canonical || event.sequence_style() == yaml_FLOW_SEQUENCE_STYLE || + yaml_emitter_check_empty_sequence(emitter) { + emitter.state = yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE + } else { + emitter.state = yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE + } + return true +} + +// Expect MAPPING-START. +func yaml_emitter_emit_mapping_start(emitter *yaml_emitter_t, event *yaml_event_t) bool { + if !yaml_emitter_process_anchor(emitter) { + return false + } + if !yaml_emitter_process_tag(emitter) { + return false + } + if emitter.flow_level > 0 || emitter.canonical || event.mapping_style() == yaml_FLOW_MAPPING_STYLE || + yaml_emitter_check_empty_mapping(emitter) { + emitter.state = yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE + } else { + emitter.state = yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE + } + return true +} + +// Check if the document content is an empty scalar. +func yaml_emitter_check_empty_document(emitter *yaml_emitter_t) bool { + return false // [Go] Huh? +} + +// Check if the next events represent an empty sequence. +func yaml_emitter_check_empty_sequence(emitter *yaml_emitter_t) bool { + if len(emitter.events)-emitter.events_head < 2 { + return false + } + return emitter.events[emitter.events_head].typ == yaml_SEQUENCE_START_EVENT && + emitter.events[emitter.events_head+1].typ == yaml_SEQUENCE_END_EVENT +} + +// Check if the next events represent an empty mapping. +func yaml_emitter_check_empty_mapping(emitter *yaml_emitter_t) bool { + if len(emitter.events)-emitter.events_head < 2 { + return false + } + return emitter.events[emitter.events_head].typ == yaml_MAPPING_START_EVENT && + emitter.events[emitter.events_head+1].typ == yaml_MAPPING_END_EVENT +} + +// Check if the next node can be expressed as a simple key. +func yaml_emitter_check_simple_key(emitter *yaml_emitter_t) bool { + length := 0 + switch emitter.events[emitter.events_head].typ { + case yaml_ALIAS_EVENT: + length += len(emitter.anchor_data.anchor) + case yaml_SCALAR_EVENT: + if emitter.scalar_data.multiline { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + + len(emitter.scalar_data.value) + case yaml_SEQUENCE_START_EVENT: + if !yaml_emitter_check_empty_sequence(emitter) { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + case yaml_MAPPING_START_EVENT: + if !yaml_emitter_check_empty_mapping(emitter) { + return false + } + length += len(emitter.anchor_data.anchor) + + len(emitter.tag_data.handle) + + len(emitter.tag_data.suffix) + default: + return false + } + return length <= 128 +} + +// Determine an acceptable scalar style. +func yaml_emitter_select_scalar_style(emitter *yaml_emitter_t, event *yaml_event_t) bool { + + no_tag := len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 + if no_tag && !event.implicit && !event.quoted_implicit { + return yaml_emitter_set_emitter_error(emitter, "neither tag nor implicit flags are specified") + } + + style := event.scalar_style() + if style == yaml_ANY_SCALAR_STYLE { + style = yaml_PLAIN_SCALAR_STYLE + } + if emitter.canonical { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + if emitter.simple_key_context && emitter.scalar_data.multiline { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + + if style == yaml_PLAIN_SCALAR_STYLE { + if emitter.flow_level > 0 && !emitter.scalar_data.flow_plain_allowed || + emitter.flow_level == 0 && !emitter.scalar_data.block_plain_allowed { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + if len(emitter.scalar_data.value) == 0 && (emitter.flow_level > 0 || emitter.simple_key_context) { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + if no_tag && !event.implicit { + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + } + } + if style == yaml_SINGLE_QUOTED_SCALAR_STYLE { + if !emitter.scalar_data.single_quoted_allowed { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + } + if style == yaml_LITERAL_SCALAR_STYLE || style == yaml_FOLDED_SCALAR_STYLE { + if !emitter.scalar_data.block_allowed || emitter.flow_level > 0 || emitter.simple_key_context { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + } + + if no_tag && !event.quoted_implicit && style != yaml_PLAIN_SCALAR_STYLE { + emitter.tag_data.handle = []byte{'!'} + } + emitter.scalar_data.style = style + return true +} + +// Write an anchor. +func yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool { + if emitter.anchor_data.anchor == nil { + return true + } + c := []byte{'&'} + if emitter.anchor_data.alias { + c[0] = '*' + } + if !yaml_emitter_write_indicator(emitter, c, true, false, false) { + return false + } + return yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor) +} + +// Write a tag. +func yaml_emitter_process_tag(emitter *yaml_emitter_t) bool { + if len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 { + return true + } + if len(emitter.tag_data.handle) > 0 { + if !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) { + return false + } + if len(emitter.tag_data.suffix) > 0 { + if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { + return false + } + } + } else { + // [Go] Allocate these slices elsewhere. + if !yaml_emitter_write_indicator(emitter, []byte("!<"), true, false, false) { + return false + } + if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) { + return false + } + if !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) { + return false + } + } + return true +} + +// Write a scalar. +func yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool { + switch emitter.scalar_data.style { + case yaml_PLAIN_SCALAR_STYLE: + return yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_SINGLE_QUOTED_SCALAR_STYLE: + return yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_DOUBLE_QUOTED_SCALAR_STYLE: + return yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context) + + case yaml_LITERAL_SCALAR_STYLE: + return yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value) + + case yaml_FOLDED_SCALAR_STYLE: + return yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value) + } + panic("unknown scalar style") +} + +// Write a head comment. +func yaml_emitter_process_head_comment(emitter *yaml_emitter_t) bool { + if len(emitter.tail_comment) > 0 { + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_comment(emitter, emitter.tail_comment) { + return false + } + emitter.tail_comment = emitter.tail_comment[:0] + emitter.foot_indent = emitter.indent + if emitter.foot_indent < 0 { + emitter.foot_indent = 0 + } + } + + if len(emitter.head_comment) == 0 { + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_comment(emitter, emitter.head_comment) { + return false + } + emitter.head_comment = emitter.head_comment[:0] + return true +} + +// Write an line comment. +func yaml_emitter_process_line_comment_linebreak(emitter *yaml_emitter_t, linebreak bool) bool { + if len(emitter.line_comment) == 0 { + // The next 3 lines are needed to resolve an issue with leading newlines + // See https://github.com/go-yaml/yaml/issues/755 + // When linebreak is set to true, put_break will be called and will add + // the needed newline. + if linebreak && !put_break(emitter) { + return false + } + return true + } + if !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !yaml_emitter_write_comment(emitter, emitter.line_comment) { + return false + } + emitter.line_comment = emitter.line_comment[:0] + return true +} + +// Write a foot comment. +func yaml_emitter_process_foot_comment(emitter *yaml_emitter_t) bool { + if len(emitter.foot_comment) == 0 { + return true + } + if !yaml_emitter_write_indent(emitter) { + return false + } + if !yaml_emitter_write_comment(emitter, emitter.foot_comment) { + return false + } + emitter.foot_comment = emitter.foot_comment[:0] + emitter.foot_indent = emitter.indent + if emitter.foot_indent < 0 { + emitter.foot_indent = 0 + } + return true +} + +// Check if a %YAML directive is valid. +func yaml_emitter_analyze_version_directive(emitter *yaml_emitter_t, version_directive *yaml_version_directive_t) bool { + if version_directive.major != 1 || version_directive.minor != 1 { + return yaml_emitter_set_emitter_error(emitter, "incompatible %YAML directive") + } + return true +} + +// Check if a %TAG directive is valid. +func yaml_emitter_analyze_tag_directive(emitter *yaml_emitter_t, tag_directive *yaml_tag_directive_t) bool { + handle := tag_directive.handle + prefix := tag_directive.prefix + if len(handle) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag handle must not be empty") + } + if handle[0] != '!' { + return yaml_emitter_set_emitter_error(emitter, "tag handle must start with '!'") + } + if handle[len(handle)-1] != '!' { + return yaml_emitter_set_emitter_error(emitter, "tag handle must end with '!'") + } + for i := 1; i < len(handle)-1; i += width(handle[i]) { + if !is_alpha(handle, i) { + return yaml_emitter_set_emitter_error(emitter, "tag handle must contain alphanumerical characters only") + } + } + if len(prefix) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag prefix must not be empty") + } + return true +} + +// Check if an anchor is valid. +func yaml_emitter_analyze_anchor(emitter *yaml_emitter_t, anchor []byte, alias bool) bool { + if len(anchor) == 0 { + problem := "anchor value must not be empty" + if alias { + problem = "alias value must not be empty" + } + return yaml_emitter_set_emitter_error(emitter, problem) + } + for i := 0; i < len(anchor); i += width(anchor[i]) { + if !is_alpha(anchor, i) { + problem := "anchor value must contain alphanumerical characters only" + if alias { + problem = "alias value must contain alphanumerical characters only" + } + return yaml_emitter_set_emitter_error(emitter, problem) + } + } + emitter.anchor_data.anchor = anchor + emitter.anchor_data.alias = alias + return true +} + +// Check if a tag is valid. +func yaml_emitter_analyze_tag(emitter *yaml_emitter_t, tag []byte) bool { + if len(tag) == 0 { + return yaml_emitter_set_emitter_error(emitter, "tag value must not be empty") + } + for i := 0; i < len(emitter.tag_directives); i++ { + tag_directive := &emitter.tag_directives[i] + if bytes.HasPrefix(tag, tag_directive.prefix) { + emitter.tag_data.handle = tag_directive.handle + emitter.tag_data.suffix = tag[len(tag_directive.prefix):] + return true + } + } + emitter.tag_data.suffix = tag + return true +} + +// Check if a scalar is valid. +func yaml_emitter_analyze_scalar(emitter *yaml_emitter_t, value []byte) bool { + var ( + block_indicators = false + flow_indicators = false + line_breaks = false + special_characters = false + tab_characters = false + + leading_space = false + leading_break = false + trailing_space = false + trailing_break = false + break_space = false + space_break = false + + preceded_by_whitespace = false + followed_by_whitespace = false + previous_space = false + previous_break = false + ) + + emitter.scalar_data.value = value + + if len(value) == 0 { + emitter.scalar_data.multiline = false + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = true + emitter.scalar_data.single_quoted_allowed = true + emitter.scalar_data.block_allowed = false + return true + } + + if len(value) >= 3 && ((value[0] == '-' && value[1] == '-' && value[2] == '-') || (value[0] == '.' && value[1] == '.' && value[2] == '.')) { + block_indicators = true + flow_indicators = true + } + + preceded_by_whitespace = true + for i, w := 0, 0; i < len(value); i += w { + w = width(value[i]) + followed_by_whitespace = i+w >= len(value) || is_blank(value, i+w) + + if i == 0 { + switch value[i] { + case '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`': + flow_indicators = true + block_indicators = true + case '?', ':': + flow_indicators = true + if followed_by_whitespace { + block_indicators = true + } + case '-': + if followed_by_whitespace { + flow_indicators = true + block_indicators = true + } + } + } else { + switch value[i] { + case ',', '?', '[', ']', '{', '}': + flow_indicators = true + case ':': + flow_indicators = true + if followed_by_whitespace { + block_indicators = true + } + case '#': + if preceded_by_whitespace { + flow_indicators = true + block_indicators = true + } + } + } + + if value[i] == '\t' { + tab_characters = true + } else if !is_printable(value, i) || !is_ascii(value, i) && !emitter.unicode { + special_characters = true + } + if is_space(value, i) { + if i == 0 { + leading_space = true + } + if i+width(value[i]) == len(value) { + trailing_space = true + } + if previous_break { + break_space = true + } + previous_space = true + previous_break = false + } else if is_break(value, i) { + line_breaks = true + if i == 0 { + leading_break = true + } + if i+width(value[i]) == len(value) { + trailing_break = true + } + if previous_space { + space_break = true + } + previous_space = false + previous_break = true + } else { + previous_space = false + previous_break = false + } + + // [Go]: Why 'z'? Couldn't be the end of the string as that's the loop condition. + preceded_by_whitespace = is_blankz(value, i) + } + + emitter.scalar_data.multiline = line_breaks + emitter.scalar_data.flow_plain_allowed = true + emitter.scalar_data.block_plain_allowed = true + emitter.scalar_data.single_quoted_allowed = true + emitter.scalar_data.block_allowed = true + + if leading_space || leading_break || trailing_space || trailing_break { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + } + if trailing_space { + emitter.scalar_data.block_allowed = false + } + if break_space { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + emitter.scalar_data.single_quoted_allowed = false + } + if space_break || tab_characters || special_characters { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + emitter.scalar_data.single_quoted_allowed = false + } + if space_break || special_characters { + emitter.scalar_data.block_allowed = false + } + if line_breaks { + emitter.scalar_data.flow_plain_allowed = false + emitter.scalar_data.block_plain_allowed = false + } + if flow_indicators { + emitter.scalar_data.flow_plain_allowed = false + } + if block_indicators { + emitter.scalar_data.block_plain_allowed = false + } + return true +} + +// Check if the event data is valid. +func yaml_emitter_analyze_event(emitter *yaml_emitter_t, event *yaml_event_t) bool { + + emitter.anchor_data.anchor = nil + emitter.tag_data.handle = nil + emitter.tag_data.suffix = nil + emitter.scalar_data.value = nil + + if len(event.head_comment) > 0 { + emitter.head_comment = event.head_comment + } + if len(event.line_comment) > 0 { + emitter.line_comment = event.line_comment + } + if len(event.foot_comment) > 0 { + emitter.foot_comment = event.foot_comment + } + if len(event.tail_comment) > 0 { + emitter.tail_comment = event.tail_comment + } + + switch event.typ { + case yaml_ALIAS_EVENT: + if !yaml_emitter_analyze_anchor(emitter, event.anchor, true) { + return false + } + + case yaml_SCALAR_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || (!event.implicit && !event.quoted_implicit)) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + if !yaml_emitter_analyze_scalar(emitter, event.value) { + return false + } + + case yaml_SEQUENCE_START_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + + case yaml_MAPPING_START_EVENT: + if len(event.anchor) > 0 { + if !yaml_emitter_analyze_anchor(emitter, event.anchor, false) { + return false + } + } + if len(event.tag) > 0 && (emitter.canonical || !event.implicit) { + if !yaml_emitter_analyze_tag(emitter, event.tag) { + return false + } + } + } + return true +} + +// Write the BOM character. +func yaml_emitter_write_bom(emitter *yaml_emitter_t) bool { + if !flush(emitter) { + return false + } + pos := emitter.buffer_pos + emitter.buffer[pos+0] = '\xEF' + emitter.buffer[pos+1] = '\xBB' + emitter.buffer[pos+2] = '\xBF' + emitter.buffer_pos += 3 + return true +} + +func yaml_emitter_write_indent(emitter *yaml_emitter_t) bool { + indent := emitter.indent + if indent < 0 { + indent = 0 + } + if !emitter.indention || emitter.column > indent || (emitter.column == indent && !emitter.whitespace) { + if !put_break(emitter) { + return false + } + } + if emitter.foot_indent == indent { + if !put_break(emitter) { + return false + } + } + for emitter.column < indent { + if !put(emitter, ' ') { + return false + } + } + emitter.whitespace = true + //emitter.indention = true + emitter.space_above = false + emitter.foot_indent = -1 + return true +} + +func yaml_emitter_write_indicator(emitter *yaml_emitter_t, indicator []byte, need_whitespace, is_whitespace, is_indention bool) bool { + if need_whitespace && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !write_all(emitter, indicator) { + return false + } + emitter.whitespace = is_whitespace + emitter.indention = (emitter.indention && is_indention) + emitter.open_ended = false + return true +} + +func yaml_emitter_write_anchor(emitter *yaml_emitter_t, value []byte) bool { + if !write_all(emitter, value) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_tag_handle(emitter *yaml_emitter_t, value []byte) bool { + if !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + if !write_all(emitter, value) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_tag_content(emitter *yaml_emitter_t, value []byte, need_whitespace bool) bool { + if need_whitespace && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + for i := 0; i < len(value); { + var must_write bool + switch value[i] { + case ';', '/', '?', ':', '@', '&', '=', '+', '$', ',', '_', '.', '~', '*', '\'', '(', ')', '[', ']': + must_write = true + default: + must_write = is_alpha(value, i) + } + if must_write { + if !write(emitter, value, &i) { + return false + } + } else { + w := width(value[i]) + for k := 0; k < w; k++ { + octet := value[i] + i++ + if !put(emitter, '%') { + return false + } + + c := octet >> 4 + if c < 10 { + c += '0' + } else { + c += 'A' - 10 + } + if !put(emitter, c) { + return false + } + + c = octet & 0x0f + if c < 10 { + c += '0' + } else { + c += 'A' - 10 + } + if !put(emitter, c) { + return false + } + } + } + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_plain_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + if len(value) > 0 && !emitter.whitespace { + if !put(emitter, ' ') { + return false + } + } + + spaces := false + breaks := false + for i := 0; i < len(value); { + if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && !is_space(value, i+1) { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + spaces = true + } else if is_break(value, i) { + if !breaks && value[i] == '\n' { + if !put_break(emitter) { + return false + } + } + if !write_break(emitter, value, &i) { + return false + } + //emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + spaces = false + breaks = false + } + } + + if len(value) > 0 { + emitter.whitespace = false + } + emitter.indention = false + if emitter.root_context { + emitter.open_ended = true + } + + return true +} + +func yaml_emitter_write_single_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + + if !yaml_emitter_write_indicator(emitter, []byte{'\''}, true, false, false) { + return false + } + + spaces := false + breaks := false + for i := 0; i < len(value); { + if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 && !is_space(value, i+1) { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + spaces = true + } else if is_break(value, i) { + if !breaks && value[i] == '\n' { + if !put_break(emitter) { + return false + } + } + if !write_break(emitter, value, &i) { + return false + } + //emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if value[i] == '\'' { + if !put(emitter, '\'') { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + spaces = false + breaks = false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'\''}, false, false, false) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool { + spaces := false + if !yaml_emitter_write_indicator(emitter, []byte{'"'}, true, false, false) { + return false + } + + for i := 0; i < len(value); { + if !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) || + is_bom(value, i) || is_break(value, i) || + value[i] == '"' || value[i] == '\\' { + + octet := value[i] + + var w int + var v rune + switch { + case octet&0x80 == 0x00: + w, v = 1, rune(octet&0x7F) + case octet&0xE0 == 0xC0: + w, v = 2, rune(octet&0x1F) + case octet&0xF0 == 0xE0: + w, v = 3, rune(octet&0x0F) + case octet&0xF8 == 0xF0: + w, v = 4, rune(octet&0x07) + } + for k := 1; k < w; k++ { + octet = value[i+k] + v = (v << 6) + (rune(octet) & 0x3F) + } + i += w + + if !put(emitter, '\\') { + return false + } + + var ok bool + switch v { + case 0x00: + ok = put(emitter, '0') + case 0x07: + ok = put(emitter, 'a') + case 0x08: + ok = put(emitter, 'b') + case 0x09: + ok = put(emitter, 't') + case 0x0A: + ok = put(emitter, 'n') + case 0x0b: + ok = put(emitter, 'v') + case 0x0c: + ok = put(emitter, 'f') + case 0x0d: + ok = put(emitter, 'r') + case 0x1b: + ok = put(emitter, 'e') + case 0x22: + ok = put(emitter, '"') + case 0x5c: + ok = put(emitter, '\\') + case 0x85: + ok = put(emitter, 'N') + case 0xA0: + ok = put(emitter, '_') + case 0x2028: + ok = put(emitter, 'L') + case 0x2029: + ok = put(emitter, 'P') + default: + if v <= 0xFF { + ok = put(emitter, 'x') + w = 2 + } else if v <= 0xFFFF { + ok = put(emitter, 'u') + w = 4 + } else { + ok = put(emitter, 'U') + w = 8 + } + for k := (w - 1) * 4; ok && k >= 0; k -= 4 { + digit := byte((v >> uint(k)) & 0x0F) + if digit < 10 { + ok = put(emitter, digit+'0') + } else { + ok = put(emitter, digit+'A'-10) + } + } + } + if !ok { + return false + } + spaces = false + } else if is_space(value, i) { + if allow_breaks && !spaces && emitter.column > emitter.best_width && i > 0 && i < len(value)-1 { + if !yaml_emitter_write_indent(emitter) { + return false + } + if is_space(value, i+1) { + if !put(emitter, '\\') { + return false + } + } + i += width(value[i]) + } else if !write(emitter, value, &i) { + return false + } + spaces = true + } else { + if !write(emitter, value, &i) { + return false + } + spaces = false + } + } + if !yaml_emitter_write_indicator(emitter, []byte{'"'}, false, false, false) { + return false + } + emitter.whitespace = false + emitter.indention = false + return true +} + +func yaml_emitter_write_block_scalar_hints(emitter *yaml_emitter_t, value []byte) bool { + if is_space(value, 0) || is_break(value, 0) { + indent_hint := []byte{'0' + byte(emitter.best_indent)} + if !yaml_emitter_write_indicator(emitter, indent_hint, false, false, false) { + return false + } + } + + emitter.open_ended = false + + var chomp_hint [1]byte + if len(value) == 0 { + chomp_hint[0] = '-' + } else { + i := len(value) - 1 + for value[i]&0xC0 == 0x80 { + i-- + } + if !is_break(value, i) { + chomp_hint[0] = '-' + } else if i == 0 { + chomp_hint[0] = '+' + emitter.open_ended = true + } else { + i-- + for value[i]&0xC0 == 0x80 { + i-- + } + if is_break(value, i) { + chomp_hint[0] = '+' + emitter.open_ended = true + } + } + } + if chomp_hint[0] != 0 { + if !yaml_emitter_write_indicator(emitter, chomp_hint[:], false, false, false) { + return false + } + } + return true +} + +func yaml_emitter_write_literal_scalar(emitter *yaml_emitter_t, value []byte) bool { + if !yaml_emitter_write_indicator(emitter, []byte{'|'}, true, false, false) { + return false + } + if !yaml_emitter_write_block_scalar_hints(emitter, value) { + return false + } + if !yaml_emitter_process_line_comment_linebreak(emitter, true) { + return false + } + //emitter.indention = true + emitter.whitespace = true + breaks := true + for i := 0; i < len(value); { + if is_break(value, i) { + if !write_break(emitter, value, &i) { + return false + } + //emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + } + if !write(emitter, value, &i) { + return false + } + emitter.indention = false + breaks = false + } + } + + return true +} + +func yaml_emitter_write_folded_scalar(emitter *yaml_emitter_t, value []byte) bool { + if !yaml_emitter_write_indicator(emitter, []byte{'>'}, true, false, false) { + return false + } + if !yaml_emitter_write_block_scalar_hints(emitter, value) { + return false + } + if !yaml_emitter_process_line_comment_linebreak(emitter, true) { + return false + } + + //emitter.indention = true + emitter.whitespace = true + + breaks := true + leading_spaces := true + for i := 0; i < len(value); { + if is_break(value, i) { + if !breaks && !leading_spaces && value[i] == '\n' { + k := 0 + for is_break(value, k) { + k += width(value[k]) + } + if !is_blankz(value, k) { + if !put_break(emitter) { + return false + } + } + } + if !write_break(emitter, value, &i) { + return false + } + //emitter.indention = true + breaks = true + } else { + if breaks { + if !yaml_emitter_write_indent(emitter) { + return false + } + leading_spaces = is_blank(value, i) + } + if !breaks && is_space(value, i) && !is_space(value, i+1) && emitter.column > emitter.best_width { + if !yaml_emitter_write_indent(emitter) { + return false + } + i += width(value[i]) + } else { + if !write(emitter, value, &i) { + return false + } + } + emitter.indention = false + breaks = false + } + } + return true +} + +func yaml_emitter_write_comment(emitter *yaml_emitter_t, comment []byte) bool { + breaks := false + pound := false + for i := 0; i < len(comment); { + if is_break(comment, i) { + if !write_break(emitter, comment, &i) { + return false + } + //emitter.indention = true + breaks = true + pound = false + } else { + if breaks && !yaml_emitter_write_indent(emitter) { + return false + } + if !pound { + if comment[i] != '#' && (!put(emitter, '#') || !put(emitter, ' ')) { + return false + } + pound = true + } + if !write(emitter, comment, &i) { + return false + } + emitter.indention = false + breaks = false + } + } + if !breaks && !put_break(emitter) { + return false + } + + emitter.whitespace = true + //emitter.indention = true + return true +} diff --git a/vendor/go.yaml.in/yaml/v3/encode.go b/vendor/go.yaml.in/yaml/v3/encode.go new file mode 100644 index 0000000000..de9e72a3e6 --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/encode.go @@ -0,0 +1,577 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package yaml + +import ( + "encoding" + "fmt" + "io" + "reflect" + "regexp" + "sort" + "strconv" + "strings" + "time" + "unicode/utf8" +) + +type encoder struct { + emitter yaml_emitter_t + event yaml_event_t + out []byte + flow bool + indent int + doneInit bool +} + +func newEncoder() *encoder { + e := &encoder{} + yaml_emitter_initialize(&e.emitter) + yaml_emitter_set_output_string(&e.emitter, &e.out) + yaml_emitter_set_unicode(&e.emitter, true) + return e +} + +func newEncoderWithWriter(w io.Writer) *encoder { + e := &encoder{} + yaml_emitter_initialize(&e.emitter) + yaml_emitter_set_output_writer(&e.emitter, w) + yaml_emitter_set_unicode(&e.emitter, true) + return e +} + +func (e *encoder) init() { + if e.doneInit { + return + } + if e.indent == 0 { + e.indent = 4 + } + e.emitter.best_indent = e.indent + yaml_stream_start_event_initialize(&e.event, yaml_UTF8_ENCODING) + e.emit() + e.doneInit = true +} + +func (e *encoder) finish() { + e.emitter.open_ended = false + yaml_stream_end_event_initialize(&e.event) + e.emit() +} + +func (e *encoder) destroy() { + yaml_emitter_delete(&e.emitter) +} + +func (e *encoder) emit() { + // This will internally delete the e.event value. + e.must(yaml_emitter_emit(&e.emitter, &e.event)) +} + +func (e *encoder) must(ok bool) { + if !ok { + msg := e.emitter.problem + if msg == "" { + msg = "unknown problem generating YAML content" + } + failf("%s", msg) + } +} + +func (e *encoder) marshalDoc(tag string, in reflect.Value) { + e.init() + var node *Node + if in.IsValid() { + node, _ = in.Interface().(*Node) + } + if node != nil && node.Kind == DocumentNode { + e.nodev(in) + } else { + yaml_document_start_event_initialize(&e.event, nil, nil, true) + e.emit() + e.marshal(tag, in) + yaml_document_end_event_initialize(&e.event, true) + e.emit() + } +} + +func (e *encoder) marshal(tag string, in reflect.Value) { + tag = shortTag(tag) + if !in.IsValid() || in.Kind() == reflect.Ptr && in.IsNil() { + e.nilv() + return + } + iface := in.Interface() + switch value := iface.(type) { + case *Node: + e.nodev(in) + return + case Node: + if !in.CanAddr() { + var n = reflect.New(in.Type()).Elem() + n.Set(in) + in = n + } + e.nodev(in.Addr()) + return + case time.Time: + e.timev(tag, in) + return + case *time.Time: + e.timev(tag, in.Elem()) + return + case time.Duration: + e.stringv(tag, reflect.ValueOf(value.String())) + return + case Marshaler: + v, err := value.MarshalYAML() + if err != nil { + fail(err) + } + if v == nil { + e.nilv() + return + } + e.marshal(tag, reflect.ValueOf(v)) + return + case encoding.TextMarshaler: + text, err := value.MarshalText() + if err != nil { + fail(err) + } + in = reflect.ValueOf(string(text)) + case nil: + e.nilv() + return + } + switch in.Kind() { + case reflect.Interface: + e.marshal(tag, in.Elem()) + case reflect.Map: + e.mapv(tag, in) + case reflect.Ptr: + e.marshal(tag, in.Elem()) + case reflect.Struct: + e.structv(tag, in) + case reflect.Slice, reflect.Array: + e.slicev(tag, in) + case reflect.String: + e.stringv(tag, in) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + e.intv(tag, in) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + e.uintv(tag, in) + case reflect.Float32, reflect.Float64: + e.floatv(tag, in) + case reflect.Bool: + e.boolv(tag, in) + default: + panic("cannot marshal type: " + in.Type().String()) + } +} + +func (e *encoder) mapv(tag string, in reflect.Value) { + e.mappingv(tag, func() { + keys := keyList(in.MapKeys()) + sort.Sort(keys) + for _, k := range keys { + e.marshal("", k) + e.marshal("", in.MapIndex(k)) + } + }) +} + +func (e *encoder) fieldByIndex(v reflect.Value, index []int) (field reflect.Value) { + for _, num := range index { + for { + if v.Kind() == reflect.Ptr { + if v.IsNil() { + return reflect.Value{} + } + v = v.Elem() + continue + } + break + } + v = v.Field(num) + } + return v +} + +func (e *encoder) structv(tag string, in reflect.Value) { + sinfo, err := getStructInfo(in.Type()) + if err != nil { + panic(err) + } + e.mappingv(tag, func() { + for _, info := range sinfo.FieldsList { + var value reflect.Value + if info.Inline == nil { + value = in.Field(info.Num) + } else { + value = e.fieldByIndex(in, info.Inline) + if !value.IsValid() { + continue + } + } + if info.OmitEmpty && isZero(value) { + continue + } + e.marshal("", reflect.ValueOf(info.Key)) + e.flow = info.Flow + e.marshal("", value) + } + if sinfo.InlineMap >= 0 { + m := in.Field(sinfo.InlineMap) + if m.Len() > 0 { + e.flow = false + keys := keyList(m.MapKeys()) + sort.Sort(keys) + for _, k := range keys { + if _, found := sinfo.FieldsMap[k.String()]; found { + panic(fmt.Sprintf("cannot have key %q in inlined map: conflicts with struct field", k.String())) + } + e.marshal("", k) + e.flow = false + e.marshal("", m.MapIndex(k)) + } + } + } + }) +} + +func (e *encoder) mappingv(tag string, f func()) { + implicit := tag == "" + style := yaml_BLOCK_MAPPING_STYLE + if e.flow { + e.flow = false + style = yaml_FLOW_MAPPING_STYLE + } + yaml_mapping_start_event_initialize(&e.event, nil, []byte(tag), implicit, style) + e.emit() + f() + yaml_mapping_end_event_initialize(&e.event) + e.emit() +} + +func (e *encoder) slicev(tag string, in reflect.Value) { + implicit := tag == "" + style := yaml_BLOCK_SEQUENCE_STYLE + if e.flow { + e.flow = false + style = yaml_FLOW_SEQUENCE_STYLE + } + e.must(yaml_sequence_start_event_initialize(&e.event, nil, []byte(tag), implicit, style)) + e.emit() + n := in.Len() + for i := 0; i < n; i++ { + e.marshal("", in.Index(i)) + } + e.must(yaml_sequence_end_event_initialize(&e.event)) + e.emit() +} + +// isBase60 returns whether s is in base 60 notation as defined in YAML 1.1. +// +// The base 60 float notation in YAML 1.1 is a terrible idea and is unsupported +// in YAML 1.2 and by this package, but these should be marshalled quoted for +// the time being for compatibility with other parsers. +func isBase60Float(s string) (result bool) { + // Fast path. + if s == "" { + return false + } + c := s[0] + if !(c == '+' || c == '-' || c >= '0' && c <= '9') || strings.IndexByte(s, ':') < 0 { + return false + } + // Do the full match. + return base60float.MatchString(s) +} + +// From http://yaml.org/type/float.html, except the regular expression there +// is bogus. In practice parsers do not enforce the "\.[0-9_]*" suffix. +var base60float = regexp.MustCompile(`^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\.[0-9_]*)?$`) + +// isOldBool returns whether s is bool notation as defined in YAML 1.1. +// +// We continue to force strings that YAML 1.1 would interpret as booleans to be +// rendered as quotes strings so that the marshalled output valid for YAML 1.1 +// parsing. +func isOldBool(s string) (result bool) { + switch s { + case "y", "Y", "yes", "Yes", "YES", "on", "On", "ON", + "n", "N", "no", "No", "NO", "off", "Off", "OFF": + return true + default: + return false + } +} + +func (e *encoder) stringv(tag string, in reflect.Value) { + var style yaml_scalar_style_t + s := in.String() + canUsePlain := true + switch { + case !utf8.ValidString(s): + if tag == binaryTag { + failf("explicitly tagged !!binary data must be base64-encoded") + } + if tag != "" { + failf("cannot marshal invalid UTF-8 data as %s", shortTag(tag)) + } + // It can't be encoded directly as YAML so use a binary tag + // and encode it as base64. + tag = binaryTag + s = encodeBase64(s) + case tag == "": + // Check to see if it would resolve to a specific + // tag when encoded unquoted. If it doesn't, + // there's no need to quote it. + rtag, _ := resolve("", s) + canUsePlain = rtag == strTag && !(isBase60Float(s) || isOldBool(s)) + } + // Note: it's possible for user code to emit invalid YAML + // if they explicitly specify a tag and a string containing + // text that's incompatible with that tag. + switch { + case strings.Contains(s, "\n"): + if e.flow { + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } else { + style = yaml_LITERAL_SCALAR_STYLE + } + case canUsePlain: + style = yaml_PLAIN_SCALAR_STYLE + default: + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + e.emitScalar(s, "", tag, style, nil, nil, nil, nil) +} + +func (e *encoder) boolv(tag string, in reflect.Value) { + var s string + if in.Bool() { + s = "true" + } else { + s = "false" + } + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) intv(tag string, in reflect.Value) { + s := strconv.FormatInt(in.Int(), 10) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) uintv(tag string, in reflect.Value) { + s := strconv.FormatUint(in.Uint(), 10) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) timev(tag string, in reflect.Value) { + t := in.Interface().(time.Time) + s := t.Format(time.RFC3339Nano) + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) floatv(tag string, in reflect.Value) { + // Issue #352: When formatting, use the precision of the underlying value + precision := 64 + if in.Kind() == reflect.Float32 { + precision = 32 + } + + s := strconv.FormatFloat(in.Float(), 'g', -1, precision) + switch s { + case "+Inf": + s = ".inf" + case "-Inf": + s = "-.inf" + case "NaN": + s = ".nan" + } + e.emitScalar(s, "", tag, yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) nilv() { + e.emitScalar("null", "", "", yaml_PLAIN_SCALAR_STYLE, nil, nil, nil, nil) +} + +func (e *encoder) emitScalar(value, anchor, tag string, style yaml_scalar_style_t, head, line, foot, tail []byte) { + // TODO Kill this function. Replace all initialize calls by their underlining Go literals. + implicit := tag == "" + if !implicit { + tag = longTag(tag) + } + e.must(yaml_scalar_event_initialize(&e.event, []byte(anchor), []byte(tag), []byte(value), implicit, implicit, style)) + e.event.head_comment = head + e.event.line_comment = line + e.event.foot_comment = foot + e.event.tail_comment = tail + e.emit() +} + +func (e *encoder) nodev(in reflect.Value) { + e.node(in.Interface().(*Node), "") +} + +func (e *encoder) node(node *Node, tail string) { + // Zero nodes behave as nil. + if node.Kind == 0 && node.IsZero() { + e.nilv() + return + } + + // If the tag was not explicitly requested, and dropping it won't change the + // implicit tag of the value, don't include it in the presentation. + var tag = node.Tag + var stag = shortTag(tag) + var forceQuoting bool + if tag != "" && node.Style&TaggedStyle == 0 { + if node.Kind == ScalarNode { + if stag == strTag && node.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0 { + tag = "" + } else { + rtag, _ := resolve("", node.Value) + if rtag == stag { + tag = "" + } else if stag == strTag { + tag = "" + forceQuoting = true + } + } + } else { + var rtag string + switch node.Kind { + case MappingNode: + rtag = mapTag + case SequenceNode: + rtag = seqTag + } + if rtag == stag { + tag = "" + } + } + } + + switch node.Kind { + case DocumentNode: + yaml_document_start_event_initialize(&e.event, nil, nil, true) + e.event.head_comment = []byte(node.HeadComment) + e.emit() + for _, node := range node.Content { + e.node(node, "") + } + yaml_document_end_event_initialize(&e.event, true) + e.event.foot_comment = []byte(node.FootComment) + e.emit() + + case SequenceNode: + style := yaml_BLOCK_SEQUENCE_STYLE + if node.Style&FlowStyle != 0 { + style = yaml_FLOW_SEQUENCE_STYLE + } + e.must(yaml_sequence_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == "", style)) + e.event.head_comment = []byte(node.HeadComment) + e.emit() + for _, node := range node.Content { + e.node(node, "") + } + e.must(yaml_sequence_end_event_initialize(&e.event)) + e.event.line_comment = []byte(node.LineComment) + e.event.foot_comment = []byte(node.FootComment) + e.emit() + + case MappingNode: + style := yaml_BLOCK_MAPPING_STYLE + if node.Style&FlowStyle != 0 { + style = yaml_FLOW_MAPPING_STYLE + } + yaml_mapping_start_event_initialize(&e.event, []byte(node.Anchor), []byte(longTag(tag)), tag == "", style) + e.event.tail_comment = []byte(tail) + e.event.head_comment = []byte(node.HeadComment) + e.emit() + + // The tail logic below moves the foot comment of prior keys to the following key, + // since the value for each key may be a nested structure and the foot needs to be + // processed only the entirety of the value is streamed. The last tail is processed + // with the mapping end event. + var tail string + for i := 0; i+1 < len(node.Content); i += 2 { + k := node.Content[i] + foot := k.FootComment + if foot != "" { + kopy := *k + kopy.FootComment = "" + k = &kopy + } + e.node(k, tail) + tail = foot + + v := node.Content[i+1] + e.node(v, "") + } + + yaml_mapping_end_event_initialize(&e.event) + e.event.tail_comment = []byte(tail) + e.event.line_comment = []byte(node.LineComment) + e.event.foot_comment = []byte(node.FootComment) + e.emit() + + case AliasNode: + yaml_alias_event_initialize(&e.event, []byte(node.Value)) + e.event.head_comment = []byte(node.HeadComment) + e.event.line_comment = []byte(node.LineComment) + e.event.foot_comment = []byte(node.FootComment) + e.emit() + + case ScalarNode: + value := node.Value + if !utf8.ValidString(value) { + if stag == binaryTag { + failf("explicitly tagged !!binary data must be base64-encoded") + } + if stag != "" { + failf("cannot marshal invalid UTF-8 data as %s", stag) + } + // It can't be encoded directly as YAML so use a binary tag + // and encode it as base64. + tag = binaryTag + value = encodeBase64(value) + } + + style := yaml_PLAIN_SCALAR_STYLE + switch { + case node.Style&DoubleQuotedStyle != 0: + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + case node.Style&SingleQuotedStyle != 0: + style = yaml_SINGLE_QUOTED_SCALAR_STYLE + case node.Style&LiteralStyle != 0: + style = yaml_LITERAL_SCALAR_STYLE + case node.Style&FoldedStyle != 0: + style = yaml_FOLDED_SCALAR_STYLE + case strings.Contains(value, "\n"): + style = yaml_LITERAL_SCALAR_STYLE + case forceQuoting: + style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + + e.emitScalar(value, node.Anchor, tag, style, []byte(node.HeadComment), []byte(node.LineComment), []byte(node.FootComment), []byte(tail)) + default: + failf("cannot encode node with unknown kind %d", node.Kind) + } +} diff --git a/vendor/go.yaml.in/yaml/v3/parserc.go b/vendor/go.yaml.in/yaml/v3/parserc.go new file mode 100644 index 0000000000..25fe823637 --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/parserc.go @@ -0,0 +1,1274 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +import ( + "bytes" +) + +// The parser implements the following grammar: +// +// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +// implicit_document ::= block_node DOCUMENT-END* +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// block_node_or_indentless_sequence ::= +// ALIAS +// | properties (block_content | indentless_block_sequence)? +// | block_content +// | indentless_block_sequence +// block_node ::= ALIAS +// | properties block_content? +// | block_content +// flow_node ::= ALIAS +// | properties flow_content? +// | flow_content +// properties ::= TAG ANCHOR? | ANCHOR TAG? +// block_content ::= block_collection | flow_collection | SCALAR +// flow_content ::= flow_collection | SCALAR +// block_collection ::= block_sequence | block_mapping +// flow_collection ::= flow_sequence | flow_mapping +// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +// block_mapping ::= BLOCK-MAPPING_START +// ((KEY block_node_or_indentless_sequence?)? +// (VALUE block_node_or_indentless_sequence?)?)* +// BLOCK-END +// flow_sequence ::= FLOW-SEQUENCE-START +// (flow_sequence_entry FLOW-ENTRY)* +// flow_sequence_entry? +// FLOW-SEQUENCE-END +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// flow_mapping ::= FLOW-MAPPING-START +// (flow_mapping_entry FLOW-ENTRY)* +// flow_mapping_entry? +// FLOW-MAPPING-END +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? + +// Peek the next token in the token queue. +func peek_token(parser *yaml_parser_t) *yaml_token_t { + if parser.token_available || yaml_parser_fetch_more_tokens(parser) { + token := &parser.tokens[parser.tokens_head] + yaml_parser_unfold_comments(parser, token) + return token + } + return nil +} + +// yaml_parser_unfold_comments walks through the comments queue and joins all +// comments behind the position of the provided token into the respective +// top-level comment slices in the parser. +func yaml_parser_unfold_comments(parser *yaml_parser_t, token *yaml_token_t) { + for parser.comments_head < len(parser.comments) && token.start_mark.index >= parser.comments[parser.comments_head].token_mark.index { + comment := &parser.comments[parser.comments_head] + if len(comment.head) > 0 { + if token.typ == yaml_BLOCK_END_TOKEN { + // No heads on ends, so keep comment.head for a follow up token. + break + } + if len(parser.head_comment) > 0 { + parser.head_comment = append(parser.head_comment, '\n') + } + parser.head_comment = append(parser.head_comment, comment.head...) + } + if len(comment.foot) > 0 { + if len(parser.foot_comment) > 0 { + parser.foot_comment = append(parser.foot_comment, '\n') + } + parser.foot_comment = append(parser.foot_comment, comment.foot...) + } + if len(comment.line) > 0 { + if len(parser.line_comment) > 0 { + parser.line_comment = append(parser.line_comment, '\n') + } + parser.line_comment = append(parser.line_comment, comment.line...) + } + *comment = yaml_comment_t{} + parser.comments_head++ + } +} + +// Remove the next token from the queue (must be called after peek_token). +func skip_token(parser *yaml_parser_t) { + parser.token_available = false + parser.tokens_parsed++ + parser.stream_end_produced = parser.tokens[parser.tokens_head].typ == yaml_STREAM_END_TOKEN + parser.tokens_head++ +} + +// Get the next event. +func yaml_parser_parse(parser *yaml_parser_t, event *yaml_event_t) bool { + // Erase the event object. + *event = yaml_event_t{} + + // No events after the end of the stream or error. + if parser.stream_end_produced || parser.error != yaml_NO_ERROR || parser.state == yaml_PARSE_END_STATE { + return true + } + + // Generate the next event. + return yaml_parser_state_machine(parser, event) +} + +// Set parser error. +func yaml_parser_set_parser_error(parser *yaml_parser_t, problem string, problem_mark yaml_mark_t) bool { + parser.error = yaml_PARSER_ERROR + parser.problem = problem + parser.problem_mark = problem_mark + return false +} + +func yaml_parser_set_parser_error_context(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string, problem_mark yaml_mark_t) bool { + parser.error = yaml_PARSER_ERROR + parser.context = context + parser.context_mark = context_mark + parser.problem = problem + parser.problem_mark = problem_mark + return false +} + +// State dispatcher. +func yaml_parser_state_machine(parser *yaml_parser_t, event *yaml_event_t) bool { + //trace("yaml_parser_state_machine", "state:", parser.state.String()) + + switch parser.state { + case yaml_PARSE_STREAM_START_STATE: + return yaml_parser_parse_stream_start(parser, event) + + case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: + return yaml_parser_parse_document_start(parser, event, true) + + case yaml_PARSE_DOCUMENT_START_STATE: + return yaml_parser_parse_document_start(parser, event, false) + + case yaml_PARSE_DOCUMENT_CONTENT_STATE: + return yaml_parser_parse_document_content(parser, event) + + case yaml_PARSE_DOCUMENT_END_STATE: + return yaml_parser_parse_document_end(parser, event) + + case yaml_PARSE_BLOCK_NODE_STATE: + return yaml_parser_parse_node(parser, event, true, false) + + case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: + return yaml_parser_parse_node(parser, event, true, true) + + case yaml_PARSE_FLOW_NODE_STATE: + return yaml_parser_parse_node(parser, event, false, false) + + case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: + return yaml_parser_parse_block_sequence_entry(parser, event, true) + + case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_block_sequence_entry(parser, event, false) + + case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_indentless_sequence_entry(parser, event) + + case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: + return yaml_parser_parse_block_mapping_key(parser, event, true) + + case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: + return yaml_parser_parse_block_mapping_key(parser, event, false) + + case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: + return yaml_parser_parse_block_mapping_value(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: + return yaml_parser_parse_flow_sequence_entry(parser, event, true) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: + return yaml_parser_parse_flow_sequence_entry(parser, event, false) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event) + + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: + return yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event) + + case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: + return yaml_parser_parse_flow_mapping_key(parser, event, true) + + case yaml_PARSE_FLOW_MAPPING_KEY_STATE: + return yaml_parser_parse_flow_mapping_key(parser, event, false) + + case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: + return yaml_parser_parse_flow_mapping_value(parser, event, false) + + case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: + return yaml_parser_parse_flow_mapping_value(parser, event, true) + + default: + panic("invalid parser state") + } +} + +// Parse the production: +// stream ::= STREAM-START implicit_document? explicit_document* STREAM-END +// +// ************ +func yaml_parser_parse_stream_start(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_STREAM_START_TOKEN { + return yaml_parser_set_parser_error(parser, "did not find expected ", token.start_mark) + } + parser.state = yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE + *event = yaml_event_t{ + typ: yaml_STREAM_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + encoding: token.encoding, + } + skip_token(parser) + return true +} + +// Parse the productions: +// implicit_document ::= block_node DOCUMENT-END* +// +// * +// +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// +// ************************* +func yaml_parser_parse_document_start(parser *yaml_parser_t, event *yaml_event_t, implicit bool) bool { + + token := peek_token(parser) + if token == nil { + return false + } + + // Parse extra document end indicators. + if !implicit { + for token.typ == yaml_DOCUMENT_END_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } + + if implicit && token.typ != yaml_VERSION_DIRECTIVE_TOKEN && + token.typ != yaml_TAG_DIRECTIVE_TOKEN && + token.typ != yaml_DOCUMENT_START_TOKEN && + token.typ != yaml_STREAM_END_TOKEN { + // Parse an implicit document. + if !yaml_parser_process_directives(parser, nil, nil) { + return false + } + parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) + parser.state = yaml_PARSE_BLOCK_NODE_STATE + + var head_comment []byte + if len(parser.head_comment) > 0 { + // [Go] Scan the header comment backwards, and if an empty line is found, break + // the header so the part before the last empty line goes into the + // document header, while the bottom of it goes into a follow up event. + for i := len(parser.head_comment) - 1; i > 0; i-- { + if parser.head_comment[i] == '\n' { + if i == len(parser.head_comment)-1 { + head_comment = parser.head_comment[:i] + parser.head_comment = parser.head_comment[i+1:] + break + } else if parser.head_comment[i-1] == '\n' { + head_comment = parser.head_comment[:i-1] + parser.head_comment = parser.head_comment[i+1:] + break + } + } + } + } + + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + + head_comment: head_comment, + } + + } else if token.typ != yaml_STREAM_END_TOKEN { + // Parse an explicit document. + var version_directive *yaml_version_directive_t + var tag_directives []yaml_tag_directive_t + start_mark := token.start_mark + if !yaml_parser_process_directives(parser, &version_directive, &tag_directives) { + return false + } + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_DOCUMENT_START_TOKEN { + yaml_parser_set_parser_error(parser, + "did not find expected ", token.start_mark) + return false + } + parser.states = append(parser.states, yaml_PARSE_DOCUMENT_END_STATE) + parser.state = yaml_PARSE_DOCUMENT_CONTENT_STATE + end_mark := token.end_mark + + *event = yaml_event_t{ + typ: yaml_DOCUMENT_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + version_directive: version_directive, + tag_directives: tag_directives, + implicit: false, + } + skip_token(parser) + + } else { + // Parse the stream end. + parser.state = yaml_PARSE_END_STATE + *event = yaml_event_t{ + typ: yaml_STREAM_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + skip_token(parser) + } + + return true +} + +// Parse the productions: +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +// +// *********** +func yaml_parser_parse_document_content(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_VERSION_DIRECTIVE_TOKEN || + token.typ == yaml_TAG_DIRECTIVE_TOKEN || + token.typ == yaml_DOCUMENT_START_TOKEN || + token.typ == yaml_DOCUMENT_END_TOKEN || + token.typ == yaml_STREAM_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + return yaml_parser_process_empty_scalar(parser, event, + token.start_mark) + } + return yaml_parser_parse_node(parser, event, true, false) +} + +// Parse the productions: +// implicit_document ::= block_node DOCUMENT-END* +// +// ************* +// +// explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END* +func yaml_parser_parse_document_end(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + start_mark := token.start_mark + end_mark := token.start_mark + + implicit := true + if token.typ == yaml_DOCUMENT_END_TOKEN { + end_mark = token.end_mark + skip_token(parser) + implicit = false + } + + parser.tag_directives = parser.tag_directives[:0] + + parser.state = yaml_PARSE_DOCUMENT_START_STATE + *event = yaml_event_t{ + typ: yaml_DOCUMENT_END_EVENT, + start_mark: start_mark, + end_mark: end_mark, + implicit: implicit, + } + yaml_parser_set_event_comments(parser, event) + if len(event.head_comment) > 0 && len(event.foot_comment) == 0 { + event.foot_comment = event.head_comment + event.head_comment = nil + } + return true +} + +func yaml_parser_set_event_comments(parser *yaml_parser_t, event *yaml_event_t) { + event.head_comment = parser.head_comment + event.line_comment = parser.line_comment + event.foot_comment = parser.foot_comment + parser.head_comment = nil + parser.line_comment = nil + parser.foot_comment = nil + parser.tail_comment = nil + parser.stem_comment = nil +} + +// Parse the productions: +// block_node_or_indentless_sequence ::= +// +// ALIAS +// ***** +// | properties (block_content | indentless_block_sequence)? +// ********** * +// | block_content | indentless_block_sequence +// * +// +// block_node ::= ALIAS +// +// ***** +// | properties block_content? +// ********** * +// | block_content +// * +// +// flow_node ::= ALIAS +// +// ***** +// | properties flow_content? +// ********** * +// | flow_content +// * +// +// properties ::= TAG ANCHOR? | ANCHOR TAG? +// +// ************************* +// +// block_content ::= block_collection | flow_collection | SCALAR +// +// ****** +// +// flow_content ::= flow_collection | SCALAR +// +// ****** +func yaml_parser_parse_node(parser *yaml_parser_t, event *yaml_event_t, block, indentless_sequence bool) bool { + //defer trace("yaml_parser_parse_node", "block:", block, "indentless_sequence:", indentless_sequence)() + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_ALIAS_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + *event = yaml_event_t{ + typ: yaml_ALIAS_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + anchor: token.value, + } + yaml_parser_set_event_comments(parser, event) + skip_token(parser) + return true + } + + start_mark := token.start_mark + end_mark := token.start_mark + + var tag_token bool + var tag_handle, tag_suffix, anchor []byte + var tag_mark yaml_mark_t + if token.typ == yaml_ANCHOR_TOKEN { + anchor = token.value + start_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_TAG_TOKEN { + tag_token = true + tag_handle = token.value + tag_suffix = token.suffix + tag_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } else if token.typ == yaml_TAG_TOKEN { + tag_token = true + tag_handle = token.value + tag_suffix = token.suffix + start_mark = token.start_mark + tag_mark = token.start_mark + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_ANCHOR_TOKEN { + anchor = token.value + end_mark = token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + } + + var tag []byte + if tag_token { + if len(tag_handle) == 0 { + tag = tag_suffix + tag_suffix = nil + } else { + for i := range parser.tag_directives { + if bytes.Equal(parser.tag_directives[i].handle, tag_handle) { + tag = append([]byte(nil), parser.tag_directives[i].prefix...) + tag = append(tag, tag_suffix...) + break + } + } + if len(tag) == 0 { + yaml_parser_set_parser_error_context(parser, + "while parsing a node", start_mark, + "found undefined tag handle", tag_mark) + return false + } + } + } + + implicit := len(tag) == 0 + if indentless_sequence && token.typ == yaml_BLOCK_ENTRY_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), + } + return true + } + if token.typ == yaml_SCALAR_TOKEN { + var plain_implicit, quoted_implicit bool + end_mark = token.end_mark + if (len(tag) == 0 && token.style == yaml_PLAIN_SCALAR_STYLE) || (len(tag) == 1 && tag[0] == '!') { + plain_implicit = true + } else if len(tag) == 0 { + quoted_implicit = true + } + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + value: token.value, + implicit: plain_implicit, + quoted_implicit: quoted_implicit, + style: yaml_style_t(token.style), + } + yaml_parser_set_event_comments(parser, event) + skip_token(parser) + return true + } + if token.typ == yaml_FLOW_SEQUENCE_START_TOKEN { + // [Go] Some of the events below can be merged as they differ only on style. + end_mark = token.end_mark + parser.state = yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_FLOW_SEQUENCE_STYLE), + } + yaml_parser_set_event_comments(parser, event) + return true + } + if token.typ == yaml_FLOW_MAPPING_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), + } + yaml_parser_set_event_comments(parser, event) + return true + } + if block && token.typ == yaml_BLOCK_SEQUENCE_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_SEQUENCE_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_SEQUENCE_STYLE), + } + if parser.stem_comment != nil { + event.head_comment = parser.stem_comment + parser.stem_comment = nil + } + return true + } + if block && token.typ == yaml_BLOCK_MAPPING_START_TOKEN { + end_mark = token.end_mark + parser.state = yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + style: yaml_style_t(yaml_BLOCK_MAPPING_STYLE), + } + if parser.stem_comment != nil { + event.head_comment = parser.stem_comment + parser.stem_comment = nil + } + return true + } + if len(anchor) > 0 || len(tag) > 0 { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: start_mark, + end_mark: end_mark, + anchor: anchor, + tag: tag, + implicit: implicit, + quoted_implicit: false, + style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), + } + return true + } + + context := "while parsing a flow node" + if block { + context = "while parsing a block node" + } + yaml_parser_set_parser_error_context(parser, context, start_mark, + "did not find expected node content", token.start_mark) + return false +} + +// Parse the productions: +// block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END +// +// ******************** *********** * ********* +func yaml_parser_parse_block_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + if token == nil { + return false + } + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_BLOCK_ENTRY_TOKEN { + mark := token.end_mark + prior_head_len := len(parser.head_comment) + skip_token(parser) + yaml_parser_split_stem_comment(parser, prior_head_len) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_BLOCK_ENTRY_TOKEN && token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, true, false) + } else { + parser.state = yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + } + if token.typ == yaml_BLOCK_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + + skip_token(parser) + return true + } + + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a block collection", context_mark, + "did not find expected '-' indicator", token.start_mark) +} + +// Parse the productions: +// indentless_sequence ::= (BLOCK-ENTRY block_node?)+ +// +// *********** * +func yaml_parser_parse_indentless_sequence_entry(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ == yaml_BLOCK_ENTRY_TOKEN { + mark := token.end_mark + prior_head_len := len(parser.head_comment) + skip_token(parser) + yaml_parser_split_stem_comment(parser, prior_head_len) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_BLOCK_ENTRY_TOKEN && + token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, true, false) + } + parser.state = yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.start_mark, // [Go] Shouldn't this be token.end_mark? + } + return true +} + +// Split stem comment from head comment. +// +// When a sequence or map is found under a sequence entry, the former head comment +// is assigned to the underlying sequence or map as a whole, not the individual +// sequence or map entry as would be expected otherwise. To handle this case the +// previous head comment is moved aside as the stem comment. +func yaml_parser_split_stem_comment(parser *yaml_parser_t, stem_len int) { + if stem_len == 0 { + return + } + + token := peek_token(parser) + if token == nil || token.typ != yaml_BLOCK_SEQUENCE_START_TOKEN && token.typ != yaml_BLOCK_MAPPING_START_TOKEN { + return + } + + parser.stem_comment = parser.head_comment[:stem_len] + if len(parser.head_comment) == stem_len { + parser.head_comment = nil + } else { + // Copy suffix to prevent very strange bugs if someone ever appends + // further bytes to the prefix in the stem_comment slice above. + parser.head_comment = append([]byte(nil), parser.head_comment[stem_len+1:]...) + } +} + +// Parse the productions: +// block_mapping ::= BLOCK-MAPPING_START +// +// ******************* +// ((KEY block_node_or_indentless_sequence?)? +// *** * +// (VALUE block_node_or_indentless_sequence?)?)* +// +// BLOCK-END +// ********* +func yaml_parser_parse_block_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + if token == nil { + return false + } + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + // [Go] A tail comment was left from the prior mapping value processed. Emit an event + // as it needs to be processed with that value and not the following key. + if len(parser.tail_comment) > 0 { + *event = yaml_event_t{ + typ: yaml_TAIL_COMMENT_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + foot_comment: parser.tail_comment, + } + parser.tail_comment = nil + return true + } + + if token.typ == yaml_KEY_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, true, true) + } else { + parser.state = yaml_PARSE_BLOCK_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + } else if token.typ == yaml_BLOCK_END_TOKEN { + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + yaml_parser_set_event_comments(parser, event) + skip_token(parser) + return true + } + + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a block mapping", context_mark, + "did not find expected key", token.start_mark) +} + +// Parse the productions: +// block_mapping ::= BLOCK-MAPPING_START +// +// ((KEY block_node_or_indentless_sequence?)? +// +// (VALUE block_node_or_indentless_sequence?)?)* +// ***** * +// BLOCK-END +func yaml_parser_parse_block_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_VALUE_TOKEN { + mark := token.end_mark + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_KEY_TOKEN && + token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_BLOCK_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_BLOCK_MAPPING_KEY_STATE) + return yaml_parser_parse_node(parser, event, true, true) + } + parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) + } + parser.state = yaml_PARSE_BLOCK_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Parse the productions: +// flow_sequence ::= FLOW-SEQUENCE-START +// +// ******************* +// (flow_sequence_entry FLOW-ENTRY)* +// * ********** +// flow_sequence_entry? +// * +// FLOW-SEQUENCE-END +// ***************** +// +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// +// * +func yaml_parser_parse_flow_sequence_entry(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + if token == nil { + return false + } + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + if !first { + if token.typ == yaml_FLOW_ENTRY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } else { + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a flow sequence", context_mark, + "did not find expected ',' or ']'", token.start_mark) + } + } + + if token.typ == yaml_KEY_TOKEN { + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_START_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + implicit: true, + style: yaml_style_t(yaml_FLOW_MAPPING_STYLE), + } + skip_token(parser) + return true + } else if token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + + *event = yaml_event_t{ + typ: yaml_SEQUENCE_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + yaml_parser_set_event_comments(parser, event) + + skip_token(parser) + return true +} + +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// +// *** * +func yaml_parser_parse_flow_sequence_entry_mapping_key(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_FLOW_ENTRY_TOKEN && + token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + mark := token.end_mark + skip_token(parser) + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, mark) +} + +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// +// ***** * +func yaml_parser_parse_flow_sequence_entry_mapping_value(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + if token.typ == yaml_VALUE_TOKEN { + skip_token(parser) + token := peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_SEQUENCE_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Parse the productions: +// flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// +// * +func yaml_parser_parse_flow_sequence_entry_mapping_end(parser *yaml_parser_t, event *yaml_event_t) bool { + token := peek_token(parser) + if token == nil { + return false + } + parser.state = yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.start_mark, // [Go] Shouldn't this be end_mark? + } + return true +} + +// Parse the productions: +// flow_mapping ::= FLOW-MAPPING-START +// +// ****************** +// (flow_mapping_entry FLOW-ENTRY)* +// * ********** +// flow_mapping_entry? +// ****************** +// FLOW-MAPPING-END +// **************** +// +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// - *** * +func yaml_parser_parse_flow_mapping_key(parser *yaml_parser_t, event *yaml_event_t, first bool) bool { + if first { + token := peek_token(parser) + parser.marks = append(parser.marks, token.start_mark) + skip_token(parser) + } + + token := peek_token(parser) + if token == nil { + return false + } + + if token.typ != yaml_FLOW_MAPPING_END_TOKEN { + if !first { + if token.typ == yaml_FLOW_ENTRY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } else { + context_mark := parser.marks[len(parser.marks)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + return yaml_parser_set_parser_error_context(parser, + "while parsing a flow mapping", context_mark, + "did not find expected ',' or '}'", token.start_mark) + } + } + + if token.typ == yaml_KEY_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_VALUE_TOKEN && + token.typ != yaml_FLOW_ENTRY_TOKEN && + token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } else { + parser.state = yaml_PARSE_FLOW_MAPPING_VALUE_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) + } + } else if token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + + parser.state = parser.states[len(parser.states)-1] + parser.states = parser.states[:len(parser.states)-1] + parser.marks = parser.marks[:len(parser.marks)-1] + *event = yaml_event_t{ + typ: yaml_MAPPING_END_EVENT, + start_mark: token.start_mark, + end_mark: token.end_mark, + } + yaml_parser_set_event_comments(parser, event) + skip_token(parser) + return true +} + +// Parse the productions: +// flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)? +// - ***** * +func yaml_parser_parse_flow_mapping_value(parser *yaml_parser_t, event *yaml_event_t, empty bool) bool { + token := peek_token(parser) + if token == nil { + return false + } + if empty { + parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) + } + if token.typ == yaml_VALUE_TOKEN { + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + if token.typ != yaml_FLOW_ENTRY_TOKEN && token.typ != yaml_FLOW_MAPPING_END_TOKEN { + parser.states = append(parser.states, yaml_PARSE_FLOW_MAPPING_KEY_STATE) + return yaml_parser_parse_node(parser, event, false, false) + } + } + parser.state = yaml_PARSE_FLOW_MAPPING_KEY_STATE + return yaml_parser_process_empty_scalar(parser, event, token.start_mark) +} + +// Generate an empty scalar event. +func yaml_parser_process_empty_scalar(parser *yaml_parser_t, event *yaml_event_t, mark yaml_mark_t) bool { + *event = yaml_event_t{ + typ: yaml_SCALAR_EVENT, + start_mark: mark, + end_mark: mark, + value: nil, // Empty + implicit: true, + style: yaml_style_t(yaml_PLAIN_SCALAR_STYLE), + } + return true +} + +var default_tag_directives = []yaml_tag_directive_t{ + {[]byte("!"), []byte("!")}, + {[]byte("!!"), []byte("tag:yaml.org,2002:")}, +} + +// Parse directives. +func yaml_parser_process_directives(parser *yaml_parser_t, + version_directive_ref **yaml_version_directive_t, + tag_directives_ref *[]yaml_tag_directive_t) bool { + + var version_directive *yaml_version_directive_t + var tag_directives []yaml_tag_directive_t + + token := peek_token(parser) + if token == nil { + return false + } + + for token.typ == yaml_VERSION_DIRECTIVE_TOKEN || token.typ == yaml_TAG_DIRECTIVE_TOKEN { + if token.typ == yaml_VERSION_DIRECTIVE_TOKEN { + if version_directive != nil { + yaml_parser_set_parser_error(parser, + "found duplicate %YAML directive", token.start_mark) + return false + } + if token.major != 1 || token.minor != 1 { + yaml_parser_set_parser_error(parser, + "found incompatible YAML document", token.start_mark) + return false + } + version_directive = &yaml_version_directive_t{ + major: token.major, + minor: token.minor, + } + } else if token.typ == yaml_TAG_DIRECTIVE_TOKEN { + value := yaml_tag_directive_t{ + handle: token.value, + prefix: token.prefix, + } + if !yaml_parser_append_tag_directive(parser, value, false, token.start_mark) { + return false + } + tag_directives = append(tag_directives, value) + } + + skip_token(parser) + token = peek_token(parser) + if token == nil { + return false + } + } + + for i := range default_tag_directives { + if !yaml_parser_append_tag_directive(parser, default_tag_directives[i], true, token.start_mark) { + return false + } + } + + if version_directive_ref != nil { + *version_directive_ref = version_directive + } + if tag_directives_ref != nil { + *tag_directives_ref = tag_directives + } + return true +} + +// Append a tag directive to the directives stack. +func yaml_parser_append_tag_directive(parser *yaml_parser_t, value yaml_tag_directive_t, allow_duplicates bool, mark yaml_mark_t) bool { + for i := range parser.tag_directives { + if bytes.Equal(value.handle, parser.tag_directives[i].handle) { + if allow_duplicates { + return true + } + return yaml_parser_set_parser_error(parser, "found duplicate %TAG directive", mark) + } + } + + // [Go] I suspect the copy is unnecessary. This was likely done + // because there was no way to track ownership of the data. + value_copy := yaml_tag_directive_t{ + handle: make([]byte, len(value.handle)), + prefix: make([]byte, len(value.prefix)), + } + copy(value_copy.handle, value.handle) + copy(value_copy.prefix, value.prefix) + parser.tag_directives = append(parser.tag_directives, value_copy) + return true +} diff --git a/vendor/go.yaml.in/yaml/v3/readerc.go b/vendor/go.yaml.in/yaml/v3/readerc.go new file mode 100644 index 0000000000..56af245366 --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/readerc.go @@ -0,0 +1,434 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +import ( + "io" +) + +// Set the reader error and return 0. +func yaml_parser_set_reader_error(parser *yaml_parser_t, problem string, offset int, value int) bool { + parser.error = yaml_READER_ERROR + parser.problem = problem + parser.problem_offset = offset + parser.problem_value = value + return false +} + +// Byte order marks. +const ( + bom_UTF8 = "\xef\xbb\xbf" + bom_UTF16LE = "\xff\xfe" + bom_UTF16BE = "\xfe\xff" +) + +// Determine the input stream encoding by checking the BOM symbol. If no BOM is +// found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure. +func yaml_parser_determine_encoding(parser *yaml_parser_t) bool { + // Ensure that we had enough bytes in the raw buffer. + for !parser.eof && len(parser.raw_buffer)-parser.raw_buffer_pos < 3 { + if !yaml_parser_update_raw_buffer(parser) { + return false + } + } + + // Determine the encoding. + buf := parser.raw_buffer + pos := parser.raw_buffer_pos + avail := len(buf) - pos + if avail >= 2 && buf[pos] == bom_UTF16LE[0] && buf[pos+1] == bom_UTF16LE[1] { + parser.encoding = yaml_UTF16LE_ENCODING + parser.raw_buffer_pos += 2 + parser.offset += 2 + } else if avail >= 2 && buf[pos] == bom_UTF16BE[0] && buf[pos+1] == bom_UTF16BE[1] { + parser.encoding = yaml_UTF16BE_ENCODING + parser.raw_buffer_pos += 2 + parser.offset += 2 + } else if avail >= 3 && buf[pos] == bom_UTF8[0] && buf[pos+1] == bom_UTF8[1] && buf[pos+2] == bom_UTF8[2] { + parser.encoding = yaml_UTF8_ENCODING + parser.raw_buffer_pos += 3 + parser.offset += 3 + } else { + parser.encoding = yaml_UTF8_ENCODING + } + return true +} + +// Update the raw buffer. +func yaml_parser_update_raw_buffer(parser *yaml_parser_t) bool { + size_read := 0 + + // Return if the raw buffer is full. + if parser.raw_buffer_pos == 0 && len(parser.raw_buffer) == cap(parser.raw_buffer) { + return true + } + + // Return on EOF. + if parser.eof { + return true + } + + // Move the remaining bytes in the raw buffer to the beginning. + if parser.raw_buffer_pos > 0 && parser.raw_buffer_pos < len(parser.raw_buffer) { + copy(parser.raw_buffer, parser.raw_buffer[parser.raw_buffer_pos:]) + } + parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)-parser.raw_buffer_pos] + parser.raw_buffer_pos = 0 + + // Call the read handler to fill the buffer. + size_read, err := parser.read_handler(parser, parser.raw_buffer[len(parser.raw_buffer):cap(parser.raw_buffer)]) + parser.raw_buffer = parser.raw_buffer[:len(parser.raw_buffer)+size_read] + if err == io.EOF { + parser.eof = true + } else if err != nil { + return yaml_parser_set_reader_error(parser, "input error: "+err.Error(), parser.offset, -1) + } + return true +} + +// Ensure that the buffer contains at least `length` characters. +// Return true on success, false on failure. +// +// The length is supposed to be significantly less that the buffer size. +func yaml_parser_update_buffer(parser *yaml_parser_t, length int) bool { + if parser.read_handler == nil { + panic("read handler must be set") + } + + // [Go] This function was changed to guarantee the requested length size at EOF. + // The fact we need to do this is pretty awful, but the description above implies + // for that to be the case, and there are tests + + // If the EOF flag is set and the raw buffer is empty, do nothing. + if parser.eof && parser.raw_buffer_pos == len(parser.raw_buffer) { + // [Go] ACTUALLY! Read the documentation of this function above. + // This is just broken. To return true, we need to have the + // given length in the buffer. Not doing that means every single + // check that calls this function to make sure the buffer has a + // given length is Go) panicking; or C) accessing invalid memory. + //return true + } + + // Return if the buffer contains enough characters. + if parser.unread >= length { + return true + } + + // Determine the input encoding if it is not known yet. + if parser.encoding == yaml_ANY_ENCODING { + if !yaml_parser_determine_encoding(parser) { + return false + } + } + + // Move the unread characters to the beginning of the buffer. + buffer_len := len(parser.buffer) + if parser.buffer_pos > 0 && parser.buffer_pos < buffer_len { + copy(parser.buffer, parser.buffer[parser.buffer_pos:]) + buffer_len -= parser.buffer_pos + parser.buffer_pos = 0 + } else if parser.buffer_pos == buffer_len { + buffer_len = 0 + parser.buffer_pos = 0 + } + + // Open the whole buffer for writing, and cut it before returning. + parser.buffer = parser.buffer[:cap(parser.buffer)] + + // Fill the buffer until it has enough characters. + first := true + for parser.unread < length { + + // Fill the raw buffer if necessary. + if !first || parser.raw_buffer_pos == len(parser.raw_buffer) { + if !yaml_parser_update_raw_buffer(parser) { + parser.buffer = parser.buffer[:buffer_len] + return false + } + } + first = false + + // Decode the raw buffer. + inner: + for parser.raw_buffer_pos != len(parser.raw_buffer) { + var value rune + var width int + + raw_unread := len(parser.raw_buffer) - parser.raw_buffer_pos + + // Decode the next character. + switch parser.encoding { + case yaml_UTF8_ENCODING: + // Decode a UTF-8 character. Check RFC 3629 + // (http://www.ietf.org/rfc/rfc3629.txt) for more details. + // + // The following table (taken from the RFC) is used for + // decoding. + // + // Char. number range | UTF-8 octet sequence + // (hexadecimal) | (binary) + // --------------------+------------------------------------ + // 0000 0000-0000 007F | 0xxxxxxx + // 0000 0080-0000 07FF | 110xxxxx 10xxxxxx + // 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx + // 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + // + // Additionally, the characters in the range 0xD800-0xDFFF + // are prohibited as they are reserved for use with UTF-16 + // surrogate pairs. + + // Determine the length of the UTF-8 sequence. + octet := parser.raw_buffer[parser.raw_buffer_pos] + switch { + case octet&0x80 == 0x00: + width = 1 + case octet&0xE0 == 0xC0: + width = 2 + case octet&0xF0 == 0xE0: + width = 3 + case octet&0xF8 == 0xF0: + width = 4 + default: + // The leading octet is invalid. + return yaml_parser_set_reader_error(parser, + "invalid leading UTF-8 octet", + parser.offset, int(octet)) + } + + // Check if the raw buffer contains an incomplete character. + if width > raw_unread { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-8 octet sequence", + parser.offset, -1) + } + break inner + } + + // Decode the leading octet. + switch { + case octet&0x80 == 0x00: + value = rune(octet & 0x7F) + case octet&0xE0 == 0xC0: + value = rune(octet & 0x1F) + case octet&0xF0 == 0xE0: + value = rune(octet & 0x0F) + case octet&0xF8 == 0xF0: + value = rune(octet & 0x07) + default: + value = 0 + } + + // Check and decode the trailing octets. + for k := 1; k < width; k++ { + octet = parser.raw_buffer[parser.raw_buffer_pos+k] + + // Check if the octet is valid. + if (octet & 0xC0) != 0x80 { + return yaml_parser_set_reader_error(parser, + "invalid trailing UTF-8 octet", + parser.offset+k, int(octet)) + } + + // Decode the octet. + value = (value << 6) + rune(octet&0x3F) + } + + // Check the length of the sequence against the value. + switch { + case width == 1: + case width == 2 && value >= 0x80: + case width == 3 && value >= 0x800: + case width == 4 && value >= 0x10000: + default: + return yaml_parser_set_reader_error(parser, + "invalid length of a UTF-8 sequence", + parser.offset, -1) + } + + // Check the range of the value. + if value >= 0xD800 && value <= 0xDFFF || value > 0x10FFFF { + return yaml_parser_set_reader_error(parser, + "invalid Unicode character", + parser.offset, int(value)) + } + + case yaml_UTF16LE_ENCODING, yaml_UTF16BE_ENCODING: + var low, high int + if parser.encoding == yaml_UTF16LE_ENCODING { + low, high = 0, 1 + } else { + low, high = 1, 0 + } + + // The UTF-16 encoding is not as simple as one might + // naively think. Check RFC 2781 + // (http://www.ietf.org/rfc/rfc2781.txt). + // + // Normally, two subsequent bytes describe a Unicode + // character. However a special technique (called a + // surrogate pair) is used for specifying character + // values larger than 0xFFFF. + // + // A surrogate pair consists of two pseudo-characters: + // high surrogate area (0xD800-0xDBFF) + // low surrogate area (0xDC00-0xDFFF) + // + // The following formulas are used for decoding + // and encoding characters using surrogate pairs: + // + // U = U' + 0x10000 (0x01 00 00 <= U <= 0x10 FF FF) + // U' = yyyyyyyyyyxxxxxxxxxx (0 <= U' <= 0x0F FF FF) + // W1 = 110110yyyyyyyyyy + // W2 = 110111xxxxxxxxxx + // + // where U is the character value, W1 is the high surrogate + // area, W2 is the low surrogate area. + + // Check for incomplete UTF-16 character. + if raw_unread < 2 { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-16 character", + parser.offset, -1) + } + break inner + } + + // Get the character. + value = rune(parser.raw_buffer[parser.raw_buffer_pos+low]) + + (rune(parser.raw_buffer[parser.raw_buffer_pos+high]) << 8) + + // Check for unexpected low surrogate area. + if value&0xFC00 == 0xDC00 { + return yaml_parser_set_reader_error(parser, + "unexpected low surrogate area", + parser.offset, int(value)) + } + + // Check for a high surrogate area. + if value&0xFC00 == 0xD800 { + width = 4 + + // Check for incomplete surrogate pair. + if raw_unread < 4 { + if parser.eof { + return yaml_parser_set_reader_error(parser, + "incomplete UTF-16 surrogate pair", + parser.offset, -1) + } + break inner + } + + // Get the next character. + value2 := rune(parser.raw_buffer[parser.raw_buffer_pos+low+2]) + + (rune(parser.raw_buffer[parser.raw_buffer_pos+high+2]) << 8) + + // Check for a low surrogate area. + if value2&0xFC00 != 0xDC00 { + return yaml_parser_set_reader_error(parser, + "expected low surrogate area", + parser.offset+2, int(value2)) + } + + // Generate the value of the surrogate pair. + value = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF) + } else { + width = 2 + } + + default: + panic("impossible") + } + + // Check if the character is in the allowed range: + // #x9 | #xA | #xD | [#x20-#x7E] (8 bit) + // | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] (16 bit) + // | [#x10000-#x10FFFF] (32 bit) + switch { + case value == 0x09: + case value == 0x0A: + case value == 0x0D: + case value >= 0x20 && value <= 0x7E: + case value == 0x85: + case value >= 0xA0 && value <= 0xD7FF: + case value >= 0xE000 && value <= 0xFFFD: + case value >= 0x10000 && value <= 0x10FFFF: + default: + return yaml_parser_set_reader_error(parser, + "control characters are not allowed", + parser.offset, int(value)) + } + + // Move the raw pointers. + parser.raw_buffer_pos += width + parser.offset += width + + // Finally put the character into the buffer. + if value <= 0x7F { + // 0000 0000-0000 007F . 0xxxxxxx + parser.buffer[buffer_len+0] = byte(value) + buffer_len += 1 + } else if value <= 0x7FF { + // 0000 0080-0000 07FF . 110xxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xC0 + (value >> 6)) + parser.buffer[buffer_len+1] = byte(0x80 + (value & 0x3F)) + buffer_len += 2 + } else if value <= 0xFFFF { + // 0000 0800-0000 FFFF . 1110xxxx 10xxxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xE0 + (value >> 12)) + parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 6) & 0x3F)) + parser.buffer[buffer_len+2] = byte(0x80 + (value & 0x3F)) + buffer_len += 3 + } else { + // 0001 0000-0010 FFFF . 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + parser.buffer[buffer_len+0] = byte(0xF0 + (value >> 18)) + parser.buffer[buffer_len+1] = byte(0x80 + ((value >> 12) & 0x3F)) + parser.buffer[buffer_len+2] = byte(0x80 + ((value >> 6) & 0x3F)) + parser.buffer[buffer_len+3] = byte(0x80 + (value & 0x3F)) + buffer_len += 4 + } + + parser.unread++ + } + + // On EOF, put NUL into the buffer and return. + if parser.eof { + parser.buffer[buffer_len] = 0 + buffer_len++ + parser.unread++ + break + } + } + // [Go] Read the documentation of this function above. To return true, + // we need to have the given length in the buffer. Not doing that means + // every single check that calls this function to make sure the buffer + // has a given length is Go) panicking; or C) accessing invalid memory. + // This happens here due to the EOF above breaking early. + for buffer_len < length { + parser.buffer[buffer_len] = 0 + buffer_len++ + } + parser.buffer = parser.buffer[:buffer_len] + return true +} diff --git a/vendor/go.yaml.in/yaml/v3/resolve.go b/vendor/go.yaml.in/yaml/v3/resolve.go new file mode 100644 index 0000000000..64ae888057 --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/resolve.go @@ -0,0 +1,326 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package yaml + +import ( + "encoding/base64" + "math" + "regexp" + "strconv" + "strings" + "time" +) + +type resolveMapItem struct { + value interface{} + tag string +} + +var resolveTable = make([]byte, 256) +var resolveMap = make(map[string]resolveMapItem) + +func init() { + t := resolveTable + t[int('+')] = 'S' // Sign + t[int('-')] = 'S' + for _, c := range "0123456789" { + t[int(c)] = 'D' // Digit + } + for _, c := range "yYnNtTfFoO~" { + t[int(c)] = 'M' // In map + } + t[int('.')] = '.' // Float (potentially in map) + + var resolveMapList = []struct { + v interface{} + tag string + l []string + }{ + {true, boolTag, []string{"true", "True", "TRUE"}}, + {false, boolTag, []string{"false", "False", "FALSE"}}, + {nil, nullTag, []string{"", "~", "null", "Null", "NULL"}}, + {math.NaN(), floatTag, []string{".nan", ".NaN", ".NAN"}}, + {math.Inf(+1), floatTag, []string{".inf", ".Inf", ".INF"}}, + {math.Inf(+1), floatTag, []string{"+.inf", "+.Inf", "+.INF"}}, + {math.Inf(-1), floatTag, []string{"-.inf", "-.Inf", "-.INF"}}, + {"<<", mergeTag, []string{"<<"}}, + } + + m := resolveMap + for _, item := range resolveMapList { + for _, s := range item.l { + m[s] = resolveMapItem{item.v, item.tag} + } + } +} + +const ( + nullTag = "!!null" + boolTag = "!!bool" + strTag = "!!str" + intTag = "!!int" + floatTag = "!!float" + timestampTag = "!!timestamp" + seqTag = "!!seq" + mapTag = "!!map" + binaryTag = "!!binary" + mergeTag = "!!merge" +) + +var longTags = make(map[string]string) +var shortTags = make(map[string]string) + +func init() { + for _, stag := range []string{nullTag, boolTag, strTag, intTag, floatTag, timestampTag, seqTag, mapTag, binaryTag, mergeTag} { + ltag := longTag(stag) + longTags[stag] = ltag + shortTags[ltag] = stag + } +} + +const longTagPrefix = "tag:yaml.org,2002:" + +func shortTag(tag string) string { + if strings.HasPrefix(tag, longTagPrefix) { + if stag, ok := shortTags[tag]; ok { + return stag + } + return "!!" + tag[len(longTagPrefix):] + } + return tag +} + +func longTag(tag string) string { + if strings.HasPrefix(tag, "!!") { + if ltag, ok := longTags[tag]; ok { + return ltag + } + return longTagPrefix + tag[2:] + } + return tag +} + +func resolvableTag(tag string) bool { + switch tag { + case "", strTag, boolTag, intTag, floatTag, nullTag, timestampTag: + return true + } + return false +} + +var yamlStyleFloat = regexp.MustCompile(`^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$`) + +func resolve(tag string, in string) (rtag string, out interface{}) { + tag = shortTag(tag) + if !resolvableTag(tag) { + return tag, in + } + + defer func() { + switch tag { + case "", rtag, strTag, binaryTag: + return + case floatTag: + if rtag == intTag { + switch v := out.(type) { + case int64: + rtag = floatTag + out = float64(v) + return + case int: + rtag = floatTag + out = float64(v) + return + } + } + } + failf("cannot decode %s `%s` as a %s", shortTag(rtag), in, shortTag(tag)) + }() + + // Any data is accepted as a !!str or !!binary. + // Otherwise, the prefix is enough of a hint about what it might be. + hint := byte('N') + if in != "" { + hint = resolveTable[in[0]] + } + if hint != 0 && tag != strTag && tag != binaryTag { + // Handle things we can lookup in a map. + if item, ok := resolveMap[in]; ok { + return item.tag, item.value + } + + // Base 60 floats are a bad idea, were dropped in YAML 1.2, and + // are purposefully unsupported here. They're still quoted on + // the way out for compatibility with other parser, though. + + switch hint { + case 'M': + // We've already checked the map above. + + case '.': + // Not in the map, so maybe a normal float. + floatv, err := strconv.ParseFloat(in, 64) + if err == nil { + return floatTag, floatv + } + + case 'D', 'S': + // Int, float, or timestamp. + // Only try values as a timestamp if the value is unquoted or there's an explicit + // !!timestamp tag. + if tag == "" || tag == timestampTag { + t, ok := parseTimestamp(in) + if ok { + return timestampTag, t + } + } + + plain := strings.Replace(in, "_", "", -1) + intv, err := strconv.ParseInt(plain, 0, 64) + if err == nil { + if intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + uintv, err := strconv.ParseUint(plain, 0, 64) + if err == nil { + return intTag, uintv + } + if yamlStyleFloat.MatchString(plain) { + floatv, err := strconv.ParseFloat(plain, 64) + if err == nil { + return floatTag, floatv + } + } + if strings.HasPrefix(plain, "0b") { + intv, err := strconv.ParseInt(plain[2:], 2, 64) + if err == nil { + if intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + uintv, err := strconv.ParseUint(plain[2:], 2, 64) + if err == nil { + return intTag, uintv + } + } else if strings.HasPrefix(plain, "-0b") { + intv, err := strconv.ParseInt("-"+plain[3:], 2, 64) + if err == nil { + if true || intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + } + // Octals as introduced in version 1.2 of the spec. + // Octals from the 1.1 spec, spelled as 0777, are still + // decoded by default in v3 as well for compatibility. + // May be dropped in v4 depending on how usage evolves. + if strings.HasPrefix(plain, "0o") { + intv, err := strconv.ParseInt(plain[2:], 8, 64) + if err == nil { + if intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + uintv, err := strconv.ParseUint(plain[2:], 8, 64) + if err == nil { + return intTag, uintv + } + } else if strings.HasPrefix(plain, "-0o") { + intv, err := strconv.ParseInt("-"+plain[3:], 8, 64) + if err == nil { + if true || intv == int64(int(intv)) { + return intTag, int(intv) + } else { + return intTag, intv + } + } + } + default: + panic("internal error: missing handler for resolver table: " + string(rune(hint)) + " (with " + in + ")") + } + } + return strTag, in +} + +// encodeBase64 encodes s as base64 that is broken up into multiple lines +// as appropriate for the resulting length. +func encodeBase64(s string) string { + const lineLen = 70 + encLen := base64.StdEncoding.EncodedLen(len(s)) + lines := encLen/lineLen + 1 + buf := make([]byte, encLen*2+lines) + in := buf[0:encLen] + out := buf[encLen:] + base64.StdEncoding.Encode(in, []byte(s)) + k := 0 + for i := 0; i < len(in); i += lineLen { + j := i + lineLen + if j > len(in) { + j = len(in) + } + k += copy(out[k:], in[i:j]) + if lines > 1 { + out[k] = '\n' + k++ + } + } + return string(out[:k]) +} + +// This is a subset of the formats allowed by the regular expression +// defined at http://yaml.org/type/timestamp.html. +var allowedTimestampFormats = []string{ + "2006-1-2T15:4:5.999999999Z07:00", // RCF3339Nano with short date fields. + "2006-1-2t15:4:5.999999999Z07:00", // RFC3339Nano with short date fields and lower-case "t". + "2006-1-2 15:4:5.999999999", // space separated with no time zone + "2006-1-2", // date only + // Notable exception: time.Parse cannot handle: "2001-12-14 21:59:43.10 -5" + // from the set of examples. +} + +// parseTimestamp parses s as a timestamp string and +// returns the timestamp and reports whether it succeeded. +// Timestamp formats are defined at http://yaml.org/type/timestamp.html +func parseTimestamp(s string) (time.Time, bool) { + // TODO write code to check all the formats supported by + // http://yaml.org/type/timestamp.html instead of using time.Parse. + + // Quick check: all date formats start with YYYY-. + i := 0 + for ; i < len(s); i++ { + if c := s[i]; c < '0' || c > '9' { + break + } + } + if i != 4 || i == len(s) || s[i] != '-' { + return time.Time{}, false + } + for _, format := range allowedTimestampFormats { + if t, err := time.Parse(format, s); err == nil { + return t, true + } + } + return time.Time{}, false +} diff --git a/vendor/go.yaml.in/yaml/v3/scannerc.go b/vendor/go.yaml.in/yaml/v3/scannerc.go new file mode 100644 index 0000000000..30b1f08920 --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/scannerc.go @@ -0,0 +1,3040 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +import ( + "bytes" + "fmt" +) + +// Introduction +// ************ +// +// The following notes assume that you are familiar with the YAML specification +// (http://yaml.org/spec/1.2/spec.html). We mostly follow it, although in +// some cases we are less restrictive that it requires. +// +// The process of transforming a YAML stream into a sequence of events is +// divided on two steps: Scanning and Parsing. +// +// The Scanner transforms the input stream into a sequence of tokens, while the +// parser transform the sequence of tokens produced by the Scanner into a +// sequence of parsing events. +// +// The Scanner is rather clever and complicated. The Parser, on the contrary, +// is a straightforward implementation of a recursive-descendant parser (or, +// LL(1) parser, as it is usually called). +// +// Actually there are two issues of Scanning that might be called "clever", the +// rest is quite straightforward. The issues are "block collection start" and +// "simple keys". Both issues are explained below in details. +// +// Here the Scanning step is explained and implemented. We start with the list +// of all the tokens produced by the Scanner together with short descriptions. +// +// Now, tokens: +// +// STREAM-START(encoding) # The stream start. +// STREAM-END # The stream end. +// VERSION-DIRECTIVE(major,minor) # The '%YAML' directive. +// TAG-DIRECTIVE(handle,prefix) # The '%TAG' directive. +// DOCUMENT-START # '---' +// DOCUMENT-END # '...' +// BLOCK-SEQUENCE-START # Indentation increase denoting a block +// BLOCK-MAPPING-START # sequence or a block mapping. +// BLOCK-END # Indentation decrease. +// FLOW-SEQUENCE-START # '[' +// FLOW-SEQUENCE-END # ']' +// BLOCK-SEQUENCE-START # '{' +// BLOCK-SEQUENCE-END # '}' +// BLOCK-ENTRY # '-' +// FLOW-ENTRY # ',' +// KEY # '?' or nothing (simple keys). +// VALUE # ':' +// ALIAS(anchor) # '*anchor' +// ANCHOR(anchor) # '&anchor' +// TAG(handle,suffix) # '!handle!suffix' +// SCALAR(value,style) # A scalar. +// +// The following two tokens are "virtual" tokens denoting the beginning and the +// end of the stream: +// +// STREAM-START(encoding) +// STREAM-END +// +// We pass the information about the input stream encoding with the +// STREAM-START token. +// +// The next two tokens are responsible for tags: +// +// VERSION-DIRECTIVE(major,minor) +// TAG-DIRECTIVE(handle,prefix) +// +// Example: +// +// %YAML 1.1 +// %TAG ! !foo +// %TAG !yaml! tag:yaml.org,2002: +// --- +// +// The correspoding sequence of tokens: +// +// STREAM-START(utf-8) +// VERSION-DIRECTIVE(1,1) +// TAG-DIRECTIVE("!","!foo") +// TAG-DIRECTIVE("!yaml","tag:yaml.org,2002:") +// DOCUMENT-START +// STREAM-END +// +// Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole +// line. +// +// The document start and end indicators are represented by: +// +// DOCUMENT-START +// DOCUMENT-END +// +// Note that if a YAML stream contains an implicit document (without '---' +// and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be +// produced. +// +// In the following examples, we present whole documents together with the +// produced tokens. +// +// 1. An implicit document: +// +// 'a scalar' +// +// Tokens: +// +// STREAM-START(utf-8) +// SCALAR("a scalar",single-quoted) +// STREAM-END +// +// 2. An explicit document: +// +// --- +// 'a scalar' +// ... +// +// Tokens: +// +// STREAM-START(utf-8) +// DOCUMENT-START +// SCALAR("a scalar",single-quoted) +// DOCUMENT-END +// STREAM-END +// +// 3. Several documents in a stream: +// +// 'a scalar' +// --- +// 'another scalar' +// --- +// 'yet another scalar' +// +// Tokens: +// +// STREAM-START(utf-8) +// SCALAR("a scalar",single-quoted) +// DOCUMENT-START +// SCALAR("another scalar",single-quoted) +// DOCUMENT-START +// SCALAR("yet another scalar",single-quoted) +// STREAM-END +// +// We have already introduced the SCALAR token above. The following tokens are +// used to describe aliases, anchors, tag, and scalars: +// +// ALIAS(anchor) +// ANCHOR(anchor) +// TAG(handle,suffix) +// SCALAR(value,style) +// +// The following series of examples illustrate the usage of these tokens: +// +// 1. A recursive sequence: +// +// &A [ *A ] +// +// Tokens: +// +// STREAM-START(utf-8) +// ANCHOR("A") +// FLOW-SEQUENCE-START +// ALIAS("A") +// FLOW-SEQUENCE-END +// STREAM-END +// +// 2. A tagged scalar: +// +// !!float "3.14" # A good approximation. +// +// Tokens: +// +// STREAM-START(utf-8) +// TAG("!!","float") +// SCALAR("3.14",double-quoted) +// STREAM-END +// +// 3. Various scalar styles: +// +// --- # Implicit empty plain scalars do not produce tokens. +// --- a plain scalar +// --- 'a single-quoted scalar' +// --- "a double-quoted scalar" +// --- |- +// a literal scalar +// --- >- +// a folded +// scalar +// +// Tokens: +// +// STREAM-START(utf-8) +// DOCUMENT-START +// DOCUMENT-START +// SCALAR("a plain scalar",plain) +// DOCUMENT-START +// SCALAR("a single-quoted scalar",single-quoted) +// DOCUMENT-START +// SCALAR("a double-quoted scalar",double-quoted) +// DOCUMENT-START +// SCALAR("a literal scalar",literal) +// DOCUMENT-START +// SCALAR("a folded scalar",folded) +// STREAM-END +// +// Now it's time to review collection-related tokens. We will start with +// flow collections: +// +// FLOW-SEQUENCE-START +// FLOW-SEQUENCE-END +// FLOW-MAPPING-START +// FLOW-MAPPING-END +// FLOW-ENTRY +// KEY +// VALUE +// +// The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and +// FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}' +// correspondingly. FLOW-ENTRY represent the ',' indicator. Finally the +// indicators '?' and ':', which are used for denoting mapping keys and values, +// are represented by the KEY and VALUE tokens. +// +// The following examples show flow collections: +// +// 1. A flow sequence: +// +// [item 1, item 2, item 3] +// +// Tokens: +// +// STREAM-START(utf-8) +// FLOW-SEQUENCE-START +// SCALAR("item 1",plain) +// FLOW-ENTRY +// SCALAR("item 2",plain) +// FLOW-ENTRY +// SCALAR("item 3",plain) +// FLOW-SEQUENCE-END +// STREAM-END +// +// 2. A flow mapping: +// +// { +// a simple key: a value, # Note that the KEY token is produced. +// ? a complex key: another value, +// } +// +// Tokens: +// +// STREAM-START(utf-8) +// FLOW-MAPPING-START +// KEY +// SCALAR("a simple key",plain) +// VALUE +// SCALAR("a value",plain) +// FLOW-ENTRY +// KEY +// SCALAR("a complex key",plain) +// VALUE +// SCALAR("another value",plain) +// FLOW-ENTRY +// FLOW-MAPPING-END +// STREAM-END +// +// A simple key is a key which is not denoted by the '?' indicator. Note that +// the Scanner still produce the KEY token whenever it encounters a simple key. +// +// For scanning block collections, the following tokens are used (note that we +// repeat KEY and VALUE here): +// +// BLOCK-SEQUENCE-START +// BLOCK-MAPPING-START +// BLOCK-END +// BLOCK-ENTRY +// KEY +// VALUE +// +// The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation +// increase that precedes a block collection (cf. the INDENT token in Python). +// The token BLOCK-END denote indentation decrease that ends a block collection +// (cf. the DEDENT token in Python). However YAML has some syntax pecularities +// that makes detections of these tokens more complex. +// +// The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators +// '-', '?', and ':' correspondingly. +// +// The following examples show how the tokens BLOCK-SEQUENCE-START, +// BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner: +// +// 1. Block sequences: +// +// - item 1 +// - item 2 +// - +// - item 3.1 +// - item 3.2 +// - +// key 1: value 1 +// key 2: value 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-ENTRY +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 3.1",plain) +// BLOCK-ENTRY +// SCALAR("item 3.2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// 2. Block mappings: +// +// a simple key: a value # The KEY token is produced here. +// ? a complex key +// : another value +// a mapping: +// key 1: value 1 +// key 2: value 2 +// a sequence: +// - item 1 +// - item 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("a simple key",plain) +// VALUE +// SCALAR("a value",plain) +// KEY +// SCALAR("a complex key",plain) +// VALUE +// SCALAR("another value",plain) +// KEY +// SCALAR("a mapping",plain) +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// KEY +// SCALAR("a sequence",plain) +// VALUE +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// YAML does not always require to start a new block collection from a new +// line. If the current line contains only '-', '?', and ':' indicators, a new +// block collection may start at the current line. The following examples +// illustrate this case: +// +// 1. Collections in a sequence: +// +// - - item 1 +// - item 2 +// - key 1: value 1 +// key 2: value 2 +// - ? complex key +// : complex value +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-ENTRY +// BLOCK-MAPPING-START +// KEY +// SCALAR("complex key") +// VALUE +// SCALAR("complex value") +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// 2. Collections in a mapping: +// +// ? a sequence +// : - item 1 +// - item 2 +// ? a mapping +// : key 1: value 1 +// key 2: value 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("a sequence",plain) +// VALUE +// BLOCK-SEQUENCE-START +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// KEY +// SCALAR("a mapping",plain) +// VALUE +// BLOCK-MAPPING-START +// KEY +// SCALAR("key 1",plain) +// VALUE +// SCALAR("value 1",plain) +// KEY +// SCALAR("key 2",plain) +// VALUE +// SCALAR("value 2",plain) +// BLOCK-END +// BLOCK-END +// STREAM-END +// +// YAML also permits non-indented sequences if they are included into a block +// mapping. In this case, the token BLOCK-SEQUENCE-START is not produced: +// +// key: +// - item 1 # BLOCK-SEQUENCE-START is NOT produced here. +// - item 2 +// +// Tokens: +// +// STREAM-START(utf-8) +// BLOCK-MAPPING-START +// KEY +// SCALAR("key",plain) +// VALUE +// BLOCK-ENTRY +// SCALAR("item 1",plain) +// BLOCK-ENTRY +// SCALAR("item 2",plain) +// BLOCK-END +// + +// Ensure that the buffer contains the required number of characters. +// Return true on success, false on failure (reader error or memory error). +func cache(parser *yaml_parser_t, length int) bool { + // [Go] This was inlined: !cache(A, B) -> unread < B && !update(A, B) + return parser.unread >= length || yaml_parser_update_buffer(parser, length) +} + +// Advance the buffer pointer. +func skip(parser *yaml_parser_t) { + if !is_blank(parser.buffer, parser.buffer_pos) { + parser.newlines = 0 + } + parser.mark.index++ + parser.mark.column++ + parser.unread-- + parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) +} + +func skip_line(parser *yaml_parser_t) { + if is_crlf(parser.buffer, parser.buffer_pos) { + parser.mark.index += 2 + parser.mark.column = 0 + parser.mark.line++ + parser.unread -= 2 + parser.buffer_pos += 2 + parser.newlines++ + } else if is_break(parser.buffer, parser.buffer_pos) { + parser.mark.index++ + parser.mark.column = 0 + parser.mark.line++ + parser.unread-- + parser.buffer_pos += width(parser.buffer[parser.buffer_pos]) + parser.newlines++ + } +} + +// Copy a character to a string buffer and advance pointers. +func read(parser *yaml_parser_t, s []byte) []byte { + if !is_blank(parser.buffer, parser.buffer_pos) { + parser.newlines = 0 + } + w := width(parser.buffer[parser.buffer_pos]) + if w == 0 { + panic("invalid character sequence") + } + if len(s) == 0 { + s = make([]byte, 0, 32) + } + if w == 1 && len(s)+w <= cap(s) { + s = s[:len(s)+1] + s[len(s)-1] = parser.buffer[parser.buffer_pos] + parser.buffer_pos++ + } else { + s = append(s, parser.buffer[parser.buffer_pos:parser.buffer_pos+w]...) + parser.buffer_pos += w + } + parser.mark.index++ + parser.mark.column++ + parser.unread-- + return s +} + +// Copy a line break character to a string buffer and advance pointers. +func read_line(parser *yaml_parser_t, s []byte) []byte { + buf := parser.buffer + pos := parser.buffer_pos + switch { + case buf[pos] == '\r' && buf[pos+1] == '\n': + // CR LF . LF + s = append(s, '\n') + parser.buffer_pos += 2 + parser.mark.index++ + parser.unread-- + case buf[pos] == '\r' || buf[pos] == '\n': + // CR|LF . LF + s = append(s, '\n') + parser.buffer_pos += 1 + case buf[pos] == '\xC2' && buf[pos+1] == '\x85': + // NEL . LF + s = append(s, '\n') + parser.buffer_pos += 2 + case buf[pos] == '\xE2' && buf[pos+1] == '\x80' && (buf[pos+2] == '\xA8' || buf[pos+2] == '\xA9'): + // LS|PS . LS|PS + s = append(s, buf[parser.buffer_pos:pos+3]...) + parser.buffer_pos += 3 + default: + return s + } + parser.mark.index++ + parser.mark.column = 0 + parser.mark.line++ + parser.unread-- + parser.newlines++ + return s +} + +// Get the next token. +func yaml_parser_scan(parser *yaml_parser_t, token *yaml_token_t) bool { + // Erase the token object. + *token = yaml_token_t{} // [Go] Is this necessary? + + // No tokens after STREAM-END or error. + if parser.stream_end_produced || parser.error != yaml_NO_ERROR { + return true + } + + // Ensure that the tokens queue contains enough tokens. + if !parser.token_available { + if !yaml_parser_fetch_more_tokens(parser) { + return false + } + } + + // Fetch the next token from the queue. + *token = parser.tokens[parser.tokens_head] + parser.tokens_head++ + parser.tokens_parsed++ + parser.token_available = false + + if token.typ == yaml_STREAM_END_TOKEN { + parser.stream_end_produced = true + } + return true +} + +// Set the scanner error and return false. +func yaml_parser_set_scanner_error(parser *yaml_parser_t, context string, context_mark yaml_mark_t, problem string) bool { + parser.error = yaml_SCANNER_ERROR + parser.context = context + parser.context_mark = context_mark + parser.problem = problem + parser.problem_mark = parser.mark + return false +} + +func yaml_parser_set_scanner_tag_error(parser *yaml_parser_t, directive bool, context_mark yaml_mark_t, problem string) bool { + context := "while parsing a tag" + if directive { + context = "while parsing a %TAG directive" + } + return yaml_parser_set_scanner_error(parser, context, context_mark, problem) +} + +func trace(args ...interface{}) func() { + pargs := append([]interface{}{"+++"}, args...) + fmt.Println(pargs...) + pargs = append([]interface{}{"---"}, args...) + return func() { fmt.Println(pargs...) } +} + +// Ensure that the tokens queue contains at least one token which can be +// returned to the Parser. +func yaml_parser_fetch_more_tokens(parser *yaml_parser_t) bool { + // While we need more tokens to fetch, do it. + for { + // [Go] The comment parsing logic requires a lookahead of two tokens + // so that foot comments may be parsed in time of associating them + // with the tokens that are parsed before them, and also for line + // comments to be transformed into head comments in some edge cases. + if parser.tokens_head < len(parser.tokens)-2 { + // If a potential simple key is at the head position, we need to fetch + // the next token to disambiguate it. + head_tok_idx, ok := parser.simple_keys_by_tok[parser.tokens_parsed] + if !ok { + break + } else if valid, ok := yaml_simple_key_is_valid(parser, &parser.simple_keys[head_tok_idx]); !ok { + return false + } else if !valid { + break + } + } + // Fetch the next token. + if !yaml_parser_fetch_next_token(parser) { + return false + } + } + + parser.token_available = true + return true +} + +// The dispatcher for token fetchers. +func yaml_parser_fetch_next_token(parser *yaml_parser_t) (ok bool) { + // Ensure that the buffer is initialized. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check if we just started scanning. Fetch STREAM-START then. + if !parser.stream_start_produced { + return yaml_parser_fetch_stream_start(parser) + } + + scan_mark := parser.mark + + // Eat whitespaces and comments until we reach the next token. + if !yaml_parser_scan_to_next_token(parser) { + return false + } + + // [Go] While unrolling indents, transform the head comments of prior + // indentation levels observed after scan_start into foot comments at + // the respective indexes. + + // Check the indentation level against the current column. + if !yaml_parser_unroll_indent(parser, parser.mark.column, scan_mark) { + return false + } + + // Ensure that the buffer contains at least 4 characters. 4 is the length + // of the longest indicators ('--- ' and '... '). + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + + // Is it the end of the stream? + if is_z(parser.buffer, parser.buffer_pos) { + return yaml_parser_fetch_stream_end(parser) + } + + // Is it a directive? + if parser.mark.column == 0 && parser.buffer[parser.buffer_pos] == '%' { + return yaml_parser_fetch_directive(parser) + } + + buf := parser.buffer + pos := parser.buffer_pos + + // Is it the document start indicator? + if parser.mark.column == 0 && buf[pos] == '-' && buf[pos+1] == '-' && buf[pos+2] == '-' && is_blankz(buf, pos+3) { + return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_START_TOKEN) + } + + // Is it the document end indicator? + if parser.mark.column == 0 && buf[pos] == '.' && buf[pos+1] == '.' && buf[pos+2] == '.' && is_blankz(buf, pos+3) { + return yaml_parser_fetch_document_indicator(parser, yaml_DOCUMENT_END_TOKEN) + } + + comment_mark := parser.mark + if len(parser.tokens) > 0 && (parser.flow_level == 0 && buf[pos] == ':' || parser.flow_level > 0 && buf[pos] == ',') { + // Associate any following comments with the prior token. + comment_mark = parser.tokens[len(parser.tokens)-1].start_mark + } + defer func() { + if !ok { + return + } + if len(parser.tokens) > 0 && parser.tokens[len(parser.tokens)-1].typ == yaml_BLOCK_ENTRY_TOKEN { + // Sequence indicators alone have no line comments. It becomes + // a head comment for whatever follows. + return + } + if !yaml_parser_scan_line_comment(parser, comment_mark) { + ok = false + return + } + }() + + // Is it the flow sequence start indicator? + if buf[pos] == '[' { + return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_SEQUENCE_START_TOKEN) + } + + // Is it the flow mapping start indicator? + if parser.buffer[parser.buffer_pos] == '{' { + return yaml_parser_fetch_flow_collection_start(parser, yaml_FLOW_MAPPING_START_TOKEN) + } + + // Is it the flow sequence end indicator? + if parser.buffer[parser.buffer_pos] == ']' { + return yaml_parser_fetch_flow_collection_end(parser, + yaml_FLOW_SEQUENCE_END_TOKEN) + } + + // Is it the flow mapping end indicator? + if parser.buffer[parser.buffer_pos] == '}' { + return yaml_parser_fetch_flow_collection_end(parser, + yaml_FLOW_MAPPING_END_TOKEN) + } + + // Is it the flow entry indicator? + if parser.buffer[parser.buffer_pos] == ',' { + return yaml_parser_fetch_flow_entry(parser) + } + + // Is it the block entry indicator? + if parser.buffer[parser.buffer_pos] == '-' && is_blankz(parser.buffer, parser.buffer_pos+1) { + return yaml_parser_fetch_block_entry(parser) + } + + // Is it the key indicator? + if parser.buffer[parser.buffer_pos] == '?' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_key(parser) + } + + // Is it the value indicator? + if parser.buffer[parser.buffer_pos] == ':' && (parser.flow_level > 0 || is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_value(parser) + } + + // Is it an alias? + if parser.buffer[parser.buffer_pos] == '*' { + return yaml_parser_fetch_anchor(parser, yaml_ALIAS_TOKEN) + } + + // Is it an anchor? + if parser.buffer[parser.buffer_pos] == '&' { + return yaml_parser_fetch_anchor(parser, yaml_ANCHOR_TOKEN) + } + + // Is it a tag? + if parser.buffer[parser.buffer_pos] == '!' { + return yaml_parser_fetch_tag(parser) + } + + // Is it a literal scalar? + if parser.buffer[parser.buffer_pos] == '|' && parser.flow_level == 0 { + return yaml_parser_fetch_block_scalar(parser, true) + } + + // Is it a folded scalar? + if parser.buffer[parser.buffer_pos] == '>' && parser.flow_level == 0 { + return yaml_parser_fetch_block_scalar(parser, false) + } + + // Is it a single-quoted scalar? + if parser.buffer[parser.buffer_pos] == '\'' { + return yaml_parser_fetch_flow_scalar(parser, true) + } + + // Is it a double-quoted scalar? + if parser.buffer[parser.buffer_pos] == '"' { + return yaml_parser_fetch_flow_scalar(parser, false) + } + + // Is it a plain scalar? + // + // A plain scalar may start with any non-blank characters except + // + // '-', '?', ':', ',', '[', ']', '{', '}', + // '#', '&', '*', '!', '|', '>', '\'', '\"', + // '%', '@', '`'. + // + // In the block context (and, for the '-' indicator, in the flow context + // too), it may also start with the characters + // + // '-', '?', ':' + // + // if it is followed by a non-space character. + // + // The last rule is more restrictive than the specification requires. + // [Go] TODO Make this logic more reasonable. + //switch parser.buffer[parser.buffer_pos] { + //case '-', '?', ':', ',', '?', '-', ',', ':', ']', '[', '}', '{', '&', '#', '!', '*', '>', '|', '"', '\'', '@', '%', '-', '`': + //} + if !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '-' || + parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':' || + parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '[' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || + parser.buffer[parser.buffer_pos] == '}' || parser.buffer[parser.buffer_pos] == '#' || + parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '*' || + parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '|' || + parser.buffer[parser.buffer_pos] == '>' || parser.buffer[parser.buffer_pos] == '\'' || + parser.buffer[parser.buffer_pos] == '"' || parser.buffer[parser.buffer_pos] == '%' || + parser.buffer[parser.buffer_pos] == '@' || parser.buffer[parser.buffer_pos] == '`') || + (parser.buffer[parser.buffer_pos] == '-' && !is_blank(parser.buffer, parser.buffer_pos+1)) || + (parser.flow_level == 0 && + (parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == ':') && + !is_blankz(parser.buffer, parser.buffer_pos+1)) { + return yaml_parser_fetch_plain_scalar(parser) + } + + // If we don't determine the token type so far, it is an error. + return yaml_parser_set_scanner_error(parser, + "while scanning for the next token", parser.mark, + "found character that cannot start any token") +} + +func yaml_simple_key_is_valid(parser *yaml_parser_t, simple_key *yaml_simple_key_t) (valid, ok bool) { + if !simple_key.possible { + return false, true + } + + // The 1.2 specification says: + // + // "If the ? indicator is omitted, parsing needs to see past the + // implicit key to recognize it as such. To limit the amount of + // lookahead required, the “:” indicator must appear at most 1024 + // Unicode characters beyond the start of the key. In addition, the key + // is restricted to a single line." + // + if simple_key.mark.line < parser.mark.line || simple_key.mark.index+1024 < parser.mark.index { + // Check if the potential simple key to be removed is required. + if simple_key.required { + return false, yaml_parser_set_scanner_error(parser, + "while scanning a simple key", simple_key.mark, + "could not find expected ':'") + } + simple_key.possible = false + return false, true + } + return true, true +} + +// Check if a simple key may start at the current position and add it if +// needed. +func yaml_parser_save_simple_key(parser *yaml_parser_t) bool { + // A simple key is required at the current position if the scanner is in + // the block context and the current column coincides with the indentation + // level. + + required := parser.flow_level == 0 && parser.indent == parser.mark.column + + // + // If the current position may start a simple key, save it. + // + if parser.simple_key_allowed { + simple_key := yaml_simple_key_t{ + possible: true, + required: required, + token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), + mark: parser.mark, + } + + if !yaml_parser_remove_simple_key(parser) { + return false + } + parser.simple_keys[len(parser.simple_keys)-1] = simple_key + parser.simple_keys_by_tok[simple_key.token_number] = len(parser.simple_keys) - 1 + } + return true +} + +// Remove a potential simple key at the current flow level. +func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { + i := len(parser.simple_keys) - 1 + if parser.simple_keys[i].possible { + // If the key is required, it is an error. + if parser.simple_keys[i].required { + return yaml_parser_set_scanner_error(parser, + "while scanning a simple key", parser.simple_keys[i].mark, + "could not find expected ':'") + } + // Remove the key from the stack. + parser.simple_keys[i].possible = false + delete(parser.simple_keys_by_tok, parser.simple_keys[i].token_number) + } + return true +} + +// max_flow_level limits the flow_level +const max_flow_level = 10000 + +// Increase the flow level and resize the simple key list if needed. +func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { + // Reset the simple key on the next level. + parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{ + possible: false, + required: false, + token_number: parser.tokens_parsed + (len(parser.tokens) - parser.tokens_head), + mark: parser.mark, + }) + + // Increase the flow level. + parser.flow_level++ + if parser.flow_level > max_flow_level { + return yaml_parser_set_scanner_error(parser, + "while increasing flow level", parser.simple_keys[len(parser.simple_keys)-1].mark, + fmt.Sprintf("exceeded max depth of %d", max_flow_level)) + } + return true +} + +// Decrease the flow level. +func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { + if parser.flow_level > 0 { + parser.flow_level-- + last := len(parser.simple_keys) - 1 + delete(parser.simple_keys_by_tok, parser.simple_keys[last].token_number) + parser.simple_keys = parser.simple_keys[:last] + } + return true +} + +// max_indents limits the indents stack size +const max_indents = 10000 + +// Push the current indentation level to the stack and set the new level +// the current column is greater than the indentation level. In this case, +// append or insert the specified token into the token queue. +func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml_token_type_t, mark yaml_mark_t) bool { + // In the flow context, do nothing. + if parser.flow_level > 0 { + return true + } + + if parser.indent < column { + // Push the current indentation level to the stack and set the new + // indentation level. + parser.indents = append(parser.indents, parser.indent) + parser.indent = column + if len(parser.indents) > max_indents { + return yaml_parser_set_scanner_error(parser, + "while increasing indent level", parser.simple_keys[len(parser.simple_keys)-1].mark, + fmt.Sprintf("exceeded max depth of %d", max_indents)) + } + + // Create a token and insert it into the queue. + token := yaml_token_t{ + typ: typ, + start_mark: mark, + end_mark: mark, + } + if number > -1 { + number -= parser.tokens_parsed + } + yaml_insert_token(parser, number, &token) + } + return true +} + +// Pop indentation levels from the indents stack until the current level +// becomes less or equal to the column. For each indentation level, append +// the BLOCK-END token. +func yaml_parser_unroll_indent(parser *yaml_parser_t, column int, scan_mark yaml_mark_t) bool { + // In the flow context, do nothing. + if parser.flow_level > 0 { + return true + } + + block_mark := scan_mark + block_mark.index-- + + // Loop through the indentation levels in the stack. + for parser.indent > column { + + // [Go] Reposition the end token before potential following + // foot comments of parent blocks. For that, search + // backwards for recent comments that were at the same + // indent as the block that is ending now. + stop_index := block_mark.index + for i := len(parser.comments) - 1; i >= 0; i-- { + comment := &parser.comments[i] + + if comment.end_mark.index < stop_index { + // Don't go back beyond the start of the comment/whitespace scan, unless column < 0. + // If requested indent column is < 0, then the document is over and everything else + // is a foot anyway. + break + } + if comment.start_mark.column == parser.indent+1 { + // This is a good match. But maybe there's a former comment + // at that same indent level, so keep searching. + block_mark = comment.start_mark + } + + // While the end of the former comment matches with + // the start of the following one, we know there's + // nothing in between and scanning is still safe. + stop_index = comment.scan_mark.index + } + + // Create a token and append it to the queue. + token := yaml_token_t{ + typ: yaml_BLOCK_END_TOKEN, + start_mark: block_mark, + end_mark: block_mark, + } + yaml_insert_token(parser, -1, &token) + + // Pop the indentation level. + parser.indent = parser.indents[len(parser.indents)-1] + parser.indents = parser.indents[:len(parser.indents)-1] + } + return true +} + +// Initialize the scanner and produce the STREAM-START token. +func yaml_parser_fetch_stream_start(parser *yaml_parser_t) bool { + + // Set the initial indentation. + parser.indent = -1 + + // Initialize the simple key stack. + parser.simple_keys = append(parser.simple_keys, yaml_simple_key_t{}) + + parser.simple_keys_by_tok = make(map[int]int) + + // A simple key is allowed at the beginning of the stream. + parser.simple_key_allowed = true + + // We have started. + parser.stream_start_produced = true + + // Create the STREAM-START token and append it to the queue. + token := yaml_token_t{ + typ: yaml_STREAM_START_TOKEN, + start_mark: parser.mark, + end_mark: parser.mark, + encoding: parser.encoding, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the STREAM-END token and shut down the scanner. +func yaml_parser_fetch_stream_end(parser *yaml_parser_t) bool { + + // Force new line. + if parser.mark.column != 0 { + parser.mark.column = 0 + parser.mark.line++ + } + + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1, parser.mark) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Create the STREAM-END token and append it to the queue. + token := yaml_token_t{ + typ: yaml_STREAM_END_TOKEN, + start_mark: parser.mark, + end_mark: parser.mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token. +func yaml_parser_fetch_directive(parser *yaml_parser_t) bool { + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1, parser.mark) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Create the YAML-DIRECTIVE or TAG-DIRECTIVE token. + token := yaml_token_t{} + if !yaml_parser_scan_directive(parser, &token) { + return false + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the DOCUMENT-START or DOCUMENT-END token. +func yaml_parser_fetch_document_indicator(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // Reset the indentation level. + if !yaml_parser_unroll_indent(parser, -1, parser.mark) { + return false + } + + // Reset simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + parser.simple_key_allowed = false + + // Consume the token. + start_mark := parser.mark + + skip(parser) + skip(parser) + skip(parser) + + end_mark := parser.mark + + // Create the DOCUMENT-START or DOCUMENT-END token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token. +func yaml_parser_fetch_flow_collection_start(parser *yaml_parser_t, typ yaml_token_type_t) bool { + + // The indicators '[' and '{' may start a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // Increase the flow level. + if !yaml_parser_increase_flow_level(parser) { + return false + } + + // A simple key may follow the indicators '[' and '{'. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token. +func yaml_parser_fetch_flow_collection_end(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // Reset any potential simple key on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Decrease the flow level. + if !yaml_parser_decrease_flow_level(parser) { + return false + } + + // No simple keys after the indicators ']' and '}'. + parser.simple_key_allowed = false + + // Consume the token. + + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token. + token := yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + } + // Append the token to the queue. + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the FLOW-ENTRY token. +func yaml_parser_fetch_flow_entry(parser *yaml_parser_t) bool { + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after ','. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the FLOW-ENTRY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_FLOW_ENTRY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the BLOCK-ENTRY token. +func yaml_parser_fetch_block_entry(parser *yaml_parser_t) bool { + // Check if the scanner is in the block context. + if parser.flow_level == 0 { + // Check if we are allowed to start a new entry. + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "block sequence entries are not allowed in this context") + } + // Add the BLOCK-SEQUENCE-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_SEQUENCE_START_TOKEN, parser.mark) { + return false + } + } else { + // It is an error for the '-' indicator to occur in the flow context, + // but we let the Parser detect and report about it because the Parser + // is able to point to the context. + } + + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after '-'. + parser.simple_key_allowed = true + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the BLOCK-ENTRY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_BLOCK_ENTRY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the KEY token. +func yaml_parser_fetch_key(parser *yaml_parser_t) bool { + + // In the block context, additional checks are required. + if parser.flow_level == 0 { + // Check if we are allowed to start a new key (not nessesary simple). + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "mapping keys are not allowed in this context") + } + // Add the BLOCK-MAPPING-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { + return false + } + } + + // Reset any potential simple keys on the current flow level. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // Simple keys are allowed after '?' in the block context. + parser.simple_key_allowed = parser.flow_level == 0 + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the KEY token and append it to the queue. + token := yaml_token_t{ + typ: yaml_KEY_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the VALUE token. +func yaml_parser_fetch_value(parser *yaml_parser_t) bool { + + simple_key := &parser.simple_keys[len(parser.simple_keys)-1] + + // Have we found a simple key? + if valid, ok := yaml_simple_key_is_valid(parser, simple_key); !ok { + return false + + } else if valid { + + // Create the KEY token and insert it into the queue. + token := yaml_token_t{ + typ: yaml_KEY_TOKEN, + start_mark: simple_key.mark, + end_mark: simple_key.mark, + } + yaml_insert_token(parser, simple_key.token_number-parser.tokens_parsed, &token) + + // In the block context, we may need to add the BLOCK-MAPPING-START token. + if !yaml_parser_roll_indent(parser, simple_key.mark.column, + simple_key.token_number, + yaml_BLOCK_MAPPING_START_TOKEN, simple_key.mark) { + return false + } + + // Remove the simple key. + simple_key.possible = false + delete(parser.simple_keys_by_tok, simple_key.token_number) + + // A simple key cannot follow another simple key. + parser.simple_key_allowed = false + + } else { + // The ':' indicator follows a complex key. + + // In the block context, extra checks are required. + if parser.flow_level == 0 { + + // Check if we are allowed to start a complex value. + if !parser.simple_key_allowed { + return yaml_parser_set_scanner_error(parser, "", parser.mark, + "mapping values are not allowed in this context") + } + + // Add the BLOCK-MAPPING-START token if needed. + if !yaml_parser_roll_indent(parser, parser.mark.column, -1, yaml_BLOCK_MAPPING_START_TOKEN, parser.mark) { + return false + } + } + + // Simple keys after ':' are allowed in the block context. + parser.simple_key_allowed = parser.flow_level == 0 + } + + // Consume the token. + start_mark := parser.mark + skip(parser) + end_mark := parser.mark + + // Create the VALUE token and append it to the queue. + token := yaml_token_t{ + typ: yaml_VALUE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the ALIAS or ANCHOR token. +func yaml_parser_fetch_anchor(parser *yaml_parser_t, typ yaml_token_type_t) bool { + // An anchor or an alias could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow an anchor or an alias. + parser.simple_key_allowed = false + + // Create the ALIAS or ANCHOR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_anchor(parser, &token, typ) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the TAG token. +func yaml_parser_fetch_tag(parser *yaml_parser_t) bool { + // A tag could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a tag. + parser.simple_key_allowed = false + + // Create the TAG token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_tag(parser, &token) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens. +func yaml_parser_fetch_block_scalar(parser *yaml_parser_t, literal bool) bool { + // Remove any potential simple keys. + if !yaml_parser_remove_simple_key(parser) { + return false + } + + // A simple key may follow a block scalar. + parser.simple_key_allowed = true + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_block_scalar(parser, &token, literal) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens. +func yaml_parser_fetch_flow_scalar(parser *yaml_parser_t, single bool) bool { + // A plain scalar could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a flow scalar. + parser.simple_key_allowed = false + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_flow_scalar(parser, &token, single) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Produce the SCALAR(...,plain) token. +func yaml_parser_fetch_plain_scalar(parser *yaml_parser_t) bool { + // A plain scalar could be a simple key. + if !yaml_parser_save_simple_key(parser) { + return false + } + + // A simple key cannot follow a flow scalar. + parser.simple_key_allowed = false + + // Create the SCALAR token and append it to the queue. + var token yaml_token_t + if !yaml_parser_scan_plain_scalar(parser, &token) { + return false + } + yaml_insert_token(parser, -1, &token) + return true +} + +// Eat whitespaces and comments until the next token is found. +func yaml_parser_scan_to_next_token(parser *yaml_parser_t) bool { + + scan_mark := parser.mark + + // Until the next token is not found. + for { + // Allow the BOM mark to start a line. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.mark.column == 0 && is_bom(parser.buffer, parser.buffer_pos) { + skip(parser) + } + + // Eat whitespaces. + // Tabs are allowed: + // - in the flow context + // - in the block context, but not at the beginning of the line or + // after '-', '?', or ':' (complex value). + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for parser.buffer[parser.buffer_pos] == ' ' || ((parser.flow_level > 0 || !parser.simple_key_allowed) && parser.buffer[parser.buffer_pos] == '\t') { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if we just had a line comment under a sequence entry that + // looks more like a header to the following content. Similar to this: + // + // - # The comment + // - Some data + // + // If so, transform the line comment to a head comment and reposition. + if len(parser.comments) > 0 && len(parser.tokens) > 1 { + tokenA := parser.tokens[len(parser.tokens)-2] + tokenB := parser.tokens[len(parser.tokens)-1] + comment := &parser.comments[len(parser.comments)-1] + if tokenA.typ == yaml_BLOCK_SEQUENCE_START_TOKEN && tokenB.typ == yaml_BLOCK_ENTRY_TOKEN && len(comment.line) > 0 && !is_break(parser.buffer, parser.buffer_pos) { + // If it was in the prior line, reposition so it becomes a + // header of the follow up token. Otherwise, keep it in place + // so it becomes a header of the former. + comment.head = comment.line + comment.line = nil + if comment.start_mark.line == parser.mark.line-1 { + comment.token_mark = parser.mark + } + } + } + + // Eat a comment until a line break. + if parser.buffer[parser.buffer_pos] == '#' { + if !yaml_parser_scan_comments(parser, scan_mark) { + return false + } + } + + // If it is a line break, eat it. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + + // In the block context, a new line may start a simple key. + if parser.flow_level == 0 { + parser.simple_key_allowed = true + } + } else { + break // We have found a token. + } + } + + return true +} + +// Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token. +// +// Scope: +// +// %YAML 1.1 # a comment \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +func yaml_parser_scan_directive(parser *yaml_parser_t, token *yaml_token_t) bool { + // Eat '%'. + start_mark := parser.mark + skip(parser) + + // Scan the directive name. + var name []byte + if !yaml_parser_scan_directive_name(parser, start_mark, &name) { + return false + } + + // Is it a YAML directive? + if bytes.Equal(name, []byte("YAML")) { + // Scan the VERSION directive value. + var major, minor int8 + if !yaml_parser_scan_version_directive_value(parser, start_mark, &major, &minor) { + return false + } + end_mark := parser.mark + + // Create a VERSION-DIRECTIVE token. + *token = yaml_token_t{ + typ: yaml_VERSION_DIRECTIVE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + major: major, + minor: minor, + } + + // Is it a TAG directive? + } else if bytes.Equal(name, []byte("TAG")) { + // Scan the TAG directive value. + var handle, prefix []byte + if !yaml_parser_scan_tag_directive_value(parser, start_mark, &handle, &prefix) { + return false + } + end_mark := parser.mark + + // Create a TAG-DIRECTIVE token. + *token = yaml_token_t{ + typ: yaml_TAG_DIRECTIVE_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: handle, + prefix: prefix, + } + + // Unknown directive. + } else { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "found unknown directive name") + return false + } + + // Eat the rest of the line including any comments. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + if parser.buffer[parser.buffer_pos] == '#' { + // [Go] Discard this inline comment for the time being. + //if !yaml_parser_scan_line_comment(parser, start_mark) { + // return false + //} + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + } + + // Check if we are at the end of the line. + if !is_breakz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "did not find expected comment or line break") + return false + } + + // Eat a line break. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } + + return true +} + +// Scan the directive name. +// +// Scope: +// +// %YAML 1.1 # a comment \n +// ^^^^ +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^ +func yaml_parser_scan_directive_name(parser *yaml_parser_t, start_mark yaml_mark_t, name *[]byte) bool { + // Consume the directive name. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + var s []byte + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the name is empty. + if len(s) == 0 { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "could not find expected directive name") + return false + } + + // Check for an blank character after the name. + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a directive", + start_mark, "found unexpected non-alphabetical character") + return false + } + *name = s + return true +} + +// Scan the value of VERSION-DIRECTIVE. +// +// Scope: +// +// %YAML 1.1 # a comment \n +// ^^^^^^ +func yaml_parser_scan_version_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, major, minor *int8) bool { + // Eat whitespaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Consume the major version number. + if !yaml_parser_scan_version_directive_number(parser, start_mark, major) { + return false + } + + // Eat '.'. + if parser.buffer[parser.buffer_pos] != '.' { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "did not find expected digit or '.' character") + } + + skip(parser) + + // Consume the minor version number. + if !yaml_parser_scan_version_directive_number(parser, start_mark, minor) { + return false + } + return true +} + +const max_number_length = 2 + +// Scan the version number of VERSION-DIRECTIVE. +// +// Scope: +// +// %YAML 1.1 # a comment \n +// ^ +// %YAML 1.1 # a comment \n +// ^ +func yaml_parser_scan_version_directive_number(parser *yaml_parser_t, start_mark yaml_mark_t, number *int8) bool { + + // Repeat while the next character is digit. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + var value, length int8 + for is_digit(parser.buffer, parser.buffer_pos) { + // Check if the number is too long. + length++ + if length > max_number_length { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "found extremely long version number") + } + value = value*10 + int8(as_digit(parser.buffer, parser.buffer_pos)) + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the number was present. + if length == 0 { + return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive", + start_mark, "did not find expected version number") + } + *number = value + return true +} + +// Scan the value of a TAG-DIRECTIVE token. +// +// Scope: +// +// %TAG !yaml! tag:yaml.org,2002: \n +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +func yaml_parser_scan_tag_directive_value(parser *yaml_parser_t, start_mark yaml_mark_t, handle, prefix *[]byte) bool { + var handle_value, prefix_value []byte + + // Eat whitespaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Scan a handle. + if !yaml_parser_scan_tag_handle(parser, true, start_mark, &handle_value) { + return false + } + + // Expect a whitespace. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blank(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", + start_mark, "did not find expected whitespace") + return false + } + + // Eat whitespaces. + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Scan a prefix. + if !yaml_parser_scan_tag_uri(parser, true, nil, start_mark, &prefix_value) { + return false + } + + // Expect a whitespace or line break. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive", + start_mark, "did not find expected whitespace or line break") + return false + } + + *handle = handle_value + *prefix = prefix_value + return true +} + +func yaml_parser_scan_anchor(parser *yaml_parser_t, token *yaml_token_t, typ yaml_token_type_t) bool { + var s []byte + + // Eat the indicator character. + start_mark := parser.mark + skip(parser) + + // Consume the value. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + end_mark := parser.mark + + /* + * Check if length of the anchor is greater than 0 and it is followed by + * a whitespace character or one of the indicators: + * + * '?', ':', ',', ']', '}', '%', '@', '`'. + */ + + if len(s) == 0 || + !(is_blankz(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == '?' || + parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == ',' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '}' || + parser.buffer[parser.buffer_pos] == '%' || parser.buffer[parser.buffer_pos] == '@' || + parser.buffer[parser.buffer_pos] == '`') { + context := "while scanning an alias" + if typ == yaml_ANCHOR_TOKEN { + context = "while scanning an anchor" + } + yaml_parser_set_scanner_error(parser, context, start_mark, + "did not find expected alphabetic or numeric character") + return false + } + + // Create a token. + *token = yaml_token_t{ + typ: typ, + start_mark: start_mark, + end_mark: end_mark, + value: s, + } + + return true +} + +/* + * Scan a TAG token. + */ + +func yaml_parser_scan_tag(parser *yaml_parser_t, token *yaml_token_t) bool { + var handle, suffix []byte + + start_mark := parser.mark + + // Check if the tag is in the canonical form. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + if parser.buffer[parser.buffer_pos+1] == '<' { + // Keep the handle as '' + + // Eat '!<' + skip(parser) + skip(parser) + + // Consume the tag value. + if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { + return false + } + + // Check for '>' and eat it. + if parser.buffer[parser.buffer_pos] != '>' { + yaml_parser_set_scanner_error(parser, "while scanning a tag", + start_mark, "did not find the expected '>'") + return false + } + + skip(parser) + } else { + // The tag has either the '!suffix' or the '!handle!suffix' form. + + // First, try to scan a handle. + if !yaml_parser_scan_tag_handle(parser, false, start_mark, &handle) { + return false + } + + // Check if it is, indeed, handle. + if handle[0] == '!' && len(handle) > 1 && handle[len(handle)-1] == '!' { + // Scan the suffix now. + if !yaml_parser_scan_tag_uri(parser, false, nil, start_mark, &suffix) { + return false + } + } else { + // It wasn't a handle after all. Scan the rest of the tag. + if !yaml_parser_scan_tag_uri(parser, false, handle, start_mark, &suffix) { + return false + } + + // Set the handle to '!'. + handle = []byte{'!'} + + // A special case: the '!' tag. Set the handle to '' and the + // suffix to '!'. + if len(suffix) == 0 { + handle, suffix = suffix, handle + } + } + } + + // Check the character which ends the tag. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if !is_blankz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a tag", + start_mark, "did not find expected whitespace or line break") + return false + } + + end_mark := parser.mark + + // Create a token. + *token = yaml_token_t{ + typ: yaml_TAG_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: handle, + suffix: suffix, + } + return true +} + +// Scan a tag handle. +func yaml_parser_scan_tag_handle(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, handle *[]byte) bool { + // Check the initial '!' character. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.buffer[parser.buffer_pos] != '!' { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected '!'") + return false + } + + var s []byte + + // Copy the '!' character. + s = read(parser, s) + + // Copy all subsequent alphabetical and numerical characters. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_alpha(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check if the trailing character is '!' and copy it. + if parser.buffer[parser.buffer_pos] == '!' { + s = read(parser, s) + } else { + // It's either the '!' tag or not really a tag handle. If it's a %TAG + // directive, it's an error. If it's a tag token, it must be a part of URI. + if directive && string(s) != "!" { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected '!'") + return false + } + } + + *handle = s + return true +} + +// Scan a tag. +func yaml_parser_scan_tag_uri(parser *yaml_parser_t, directive bool, head []byte, start_mark yaml_mark_t, uri *[]byte) bool { + //size_t length = head ? strlen((char *)head) : 0 + var s []byte + hasTag := len(head) > 0 + + // Copy the head if needed. + // + // Note that we don't copy the leading '!' character. + if len(head) > 1 { + s = append(s, head[1:]...) + } + + // Scan the tag. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // The set of characters that may appear in URI is as follows: + // + // '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&', + // '=', '+', '$', ',', '.', '!', '~', '*', '\'', '(', ')', '[', ']', + // '%'. + // [Go] TODO Convert this into more reasonable logic. + for is_alpha(parser.buffer, parser.buffer_pos) || parser.buffer[parser.buffer_pos] == ';' || + parser.buffer[parser.buffer_pos] == '/' || parser.buffer[parser.buffer_pos] == '?' || + parser.buffer[parser.buffer_pos] == ':' || parser.buffer[parser.buffer_pos] == '@' || + parser.buffer[parser.buffer_pos] == '&' || parser.buffer[parser.buffer_pos] == '=' || + parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '$' || + parser.buffer[parser.buffer_pos] == ',' || parser.buffer[parser.buffer_pos] == '.' || + parser.buffer[parser.buffer_pos] == '!' || parser.buffer[parser.buffer_pos] == '~' || + parser.buffer[parser.buffer_pos] == '*' || parser.buffer[parser.buffer_pos] == '\'' || + parser.buffer[parser.buffer_pos] == '(' || parser.buffer[parser.buffer_pos] == ')' || + parser.buffer[parser.buffer_pos] == '[' || parser.buffer[parser.buffer_pos] == ']' || + parser.buffer[parser.buffer_pos] == '%' { + // Check if it is a URI-escape sequence. + if parser.buffer[parser.buffer_pos] == '%' { + if !yaml_parser_scan_uri_escapes(parser, directive, start_mark, &s) { + return false + } + } else { + s = read(parser, s) + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + hasTag = true + } + + if !hasTag { + yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find expected tag URI") + return false + } + *uri = s + return true +} + +// Decode an URI-escape sequence corresponding to a single UTF-8 character. +func yaml_parser_scan_uri_escapes(parser *yaml_parser_t, directive bool, start_mark yaml_mark_t, s *[]byte) bool { + + // Decode the required number of characters. + w := 1024 + for w > 0 { + // Check for a URI-escaped octet. + if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { + return false + } + + if !(parser.buffer[parser.buffer_pos] == '%' && + is_hex(parser.buffer, parser.buffer_pos+1) && + is_hex(parser.buffer, parser.buffer_pos+2)) { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "did not find URI escaped octet") + } + + // Get the octet. + octet := byte((as_hex(parser.buffer, parser.buffer_pos+1) << 4) + as_hex(parser.buffer, parser.buffer_pos+2)) + + // If it is the leading octet, determine the length of the UTF-8 sequence. + if w == 1024 { + w = width(octet) + if w == 0 { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "found an incorrect leading UTF-8 octet") + } + } else { + // Check if the trailing octet is correct. + if octet&0xC0 != 0x80 { + return yaml_parser_set_scanner_tag_error(parser, directive, + start_mark, "found an incorrect trailing UTF-8 octet") + } + } + + // Copy the octet and move the pointers. + *s = append(*s, octet) + skip(parser) + skip(parser) + skip(parser) + w-- + } + return true +} + +// Scan a block scalar. +func yaml_parser_scan_block_scalar(parser *yaml_parser_t, token *yaml_token_t, literal bool) bool { + // Eat the indicator '|' or '>'. + start_mark := parser.mark + skip(parser) + + // Scan the additional block scalar indicators. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check for a chomping indicator. + var chomping, increment int + if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { + // Set the chomping method and eat the indicator. + if parser.buffer[parser.buffer_pos] == '+' { + chomping = +1 + } else { + chomping = -1 + } + skip(parser) + + // Check for an indentation indicator. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if is_digit(parser.buffer, parser.buffer_pos) { + // Check that the indentation is greater than 0. + if parser.buffer[parser.buffer_pos] == '0' { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found an indentation indicator equal to 0") + return false + } + + // Get the indentation level and eat the indicator. + increment = as_digit(parser.buffer, parser.buffer_pos) + skip(parser) + } + + } else if is_digit(parser.buffer, parser.buffer_pos) { + // Do the same as above, but in the opposite order. + + if parser.buffer[parser.buffer_pos] == '0' { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found an indentation indicator equal to 0") + return false + } + increment = as_digit(parser.buffer, parser.buffer_pos) + skip(parser) + + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if parser.buffer[parser.buffer_pos] == '+' || parser.buffer[parser.buffer_pos] == '-' { + if parser.buffer[parser.buffer_pos] == '+' { + chomping = +1 + } else { + chomping = -1 + } + skip(parser) + } + } + + // Eat whitespaces and comments to the end of the line. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for is_blank(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + if parser.buffer[parser.buffer_pos] == '#' { + if !yaml_parser_scan_line_comment(parser, start_mark) { + return false + } + for !is_breakz(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + } + + // Check if we are at the end of the line. + if !is_breakz(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "did not find expected comment or line break") + return false + } + + // Eat a line break. + if is_break(parser.buffer, parser.buffer_pos) { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } + + end_mark := parser.mark + + // Set the indentation level if it was specified. + var indent int + if increment > 0 { + if parser.indent >= 0 { + indent = parser.indent + increment + } else { + indent = increment + } + } + + // Scan the leading line breaks and determine the indentation level if needed. + var s, leading_break, trailing_breaks []byte + if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { + return false + } + + // Scan the block scalar content. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + var leading_blank, trailing_blank bool + for parser.mark.column == indent && !is_z(parser.buffer, parser.buffer_pos) { + // We are at the beginning of a non-empty line. + + // Is it a trailing whitespace? + trailing_blank = is_blank(parser.buffer, parser.buffer_pos) + + // Check if we need to fold the leading line break. + if !literal && !leading_blank && !trailing_blank && len(leading_break) > 0 && leading_break[0] == '\n' { + // Do we need to join the lines by space? + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } + } else { + s = append(s, leading_break...) + } + leading_break = leading_break[:0] + + // Append the remaining line breaks. + s = append(s, trailing_breaks...) + trailing_breaks = trailing_breaks[:0] + + // Is it a leading whitespace? + leading_blank = is_blank(parser.buffer, parser.buffer_pos) + + // Consume the current line. + for !is_breakz(parser.buffer, parser.buffer_pos) { + s = read(parser, s) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Consume the line break. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + leading_break = read_line(parser, leading_break) + + // Eat the following indentation spaces and line breaks. + if !yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks, start_mark, &end_mark) { + return false + } + } + + // Chomp the tail. + if chomping != -1 { + s = append(s, leading_break...) + } + if chomping == 1 { + s = append(s, trailing_breaks...) + } + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_LITERAL_SCALAR_STYLE, + } + if !literal { + token.style = yaml_FOLDED_SCALAR_STYLE + } + return true +} + +// Scan indentation spaces and line breaks for a block scalar. Determine the +// indentation level if needed. +func yaml_parser_scan_block_scalar_breaks(parser *yaml_parser_t, indent *int, breaks *[]byte, start_mark yaml_mark_t, end_mark *yaml_mark_t) bool { + *end_mark = parser.mark + + // Eat the indentation spaces and line breaks. + max_indent := 0 + for { + // Eat the indentation spaces. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + for (*indent == 0 || parser.mark.column < *indent) && is_space(parser.buffer, parser.buffer_pos) { + skip(parser) + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + if parser.mark.column > max_indent { + max_indent = parser.mark.column + } + + // Check for a tab character messing the indentation. + if (*indent == 0 || parser.mark.column < *indent) && is_tab(parser.buffer, parser.buffer_pos) { + return yaml_parser_set_scanner_error(parser, "while scanning a block scalar", + start_mark, "found a tab character where an indentation space is expected") + } + + // Have we found a non-empty line? + if !is_break(parser.buffer, parser.buffer_pos) { + break + } + + // Consume the line break. + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + // [Go] Should really be returning breaks instead. + *breaks = read_line(parser, *breaks) + *end_mark = parser.mark + } + + // Determine the indentation level if needed. + if *indent == 0 { + *indent = max_indent + if *indent < parser.indent+1 { + *indent = parser.indent + 1 + } + if *indent < 1 { + *indent = 1 + } + } + return true +} + +// Scan a quoted scalar. +func yaml_parser_scan_flow_scalar(parser *yaml_parser_t, token *yaml_token_t, single bool) bool { + // Eat the left quote. + start_mark := parser.mark + skip(parser) + + // Consume the content of the quoted scalar. + var s, leading_break, trailing_breaks, whitespaces []byte + for { + // Check that there are no document indicators at the beginning of the line. + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + + if parser.mark.column == 0 && + ((parser.buffer[parser.buffer_pos+0] == '-' && + parser.buffer[parser.buffer_pos+1] == '-' && + parser.buffer[parser.buffer_pos+2] == '-') || + (parser.buffer[parser.buffer_pos+0] == '.' && + parser.buffer[parser.buffer_pos+1] == '.' && + parser.buffer[parser.buffer_pos+2] == '.')) && + is_blankz(parser.buffer, parser.buffer_pos+3) { + yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", + start_mark, "found unexpected document indicator") + return false + } + + // Check for EOF. + if is_z(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar", + start_mark, "found unexpected end of stream") + return false + } + + // Consume non-blank characters. + leading_blanks := false + for !is_blankz(parser.buffer, parser.buffer_pos) { + if single && parser.buffer[parser.buffer_pos] == '\'' && parser.buffer[parser.buffer_pos+1] == '\'' { + // Is is an escaped single quote. + s = append(s, '\'') + skip(parser) + skip(parser) + + } else if single && parser.buffer[parser.buffer_pos] == '\'' { + // It is a right single quote. + break + } else if !single && parser.buffer[parser.buffer_pos] == '"' { + // It is a right double quote. + break + + } else if !single && parser.buffer[parser.buffer_pos] == '\\' && is_break(parser.buffer, parser.buffer_pos+1) { + // It is an escaped line break. + if parser.unread < 3 && !yaml_parser_update_buffer(parser, 3) { + return false + } + skip(parser) + skip_line(parser) + leading_blanks = true + break + + } else if !single && parser.buffer[parser.buffer_pos] == '\\' { + // It is an escape sequence. + code_length := 0 + + // Check the escape character. + switch parser.buffer[parser.buffer_pos+1] { + case '0': + s = append(s, 0) + case 'a': + s = append(s, '\x07') + case 'b': + s = append(s, '\x08') + case 't', '\t': + s = append(s, '\x09') + case 'n': + s = append(s, '\x0A') + case 'v': + s = append(s, '\x0B') + case 'f': + s = append(s, '\x0C') + case 'r': + s = append(s, '\x0D') + case 'e': + s = append(s, '\x1B') + case ' ': + s = append(s, '\x20') + case '"': + s = append(s, '"') + case '\'': + s = append(s, '\'') + case '\\': + s = append(s, '\\') + case 'N': // NEL (#x85) + s = append(s, '\xC2') + s = append(s, '\x85') + case '_': // #xA0 + s = append(s, '\xC2') + s = append(s, '\xA0') + case 'L': // LS (#x2028) + s = append(s, '\xE2') + s = append(s, '\x80') + s = append(s, '\xA8') + case 'P': // PS (#x2029) + s = append(s, '\xE2') + s = append(s, '\x80') + s = append(s, '\xA9') + case 'x': + code_length = 2 + case 'u': + code_length = 4 + case 'U': + code_length = 8 + default: + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "found unknown escape character") + return false + } + + skip(parser) + skip(parser) + + // Consume an arbitrary escape code. + if code_length > 0 { + var value int + + // Scan the character value. + if parser.unread < code_length && !yaml_parser_update_buffer(parser, code_length) { + return false + } + for k := 0; k < code_length; k++ { + if !is_hex(parser.buffer, parser.buffer_pos+k) { + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "did not find expected hexdecimal number") + return false + } + value = (value << 4) + as_hex(parser.buffer, parser.buffer_pos+k) + } + + // Check the value and write the character. + if (value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF { + yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar", + start_mark, "found invalid Unicode character escape code") + return false + } + if value <= 0x7F { + s = append(s, byte(value)) + } else if value <= 0x7FF { + s = append(s, byte(0xC0+(value>>6))) + s = append(s, byte(0x80+(value&0x3F))) + } else if value <= 0xFFFF { + s = append(s, byte(0xE0+(value>>12))) + s = append(s, byte(0x80+((value>>6)&0x3F))) + s = append(s, byte(0x80+(value&0x3F))) + } else { + s = append(s, byte(0xF0+(value>>18))) + s = append(s, byte(0x80+((value>>12)&0x3F))) + s = append(s, byte(0x80+((value>>6)&0x3F))) + s = append(s, byte(0x80+(value&0x3F))) + } + + // Advance the pointer. + for k := 0; k < code_length; k++ { + skip(parser) + } + } + } else { + // It is a non-escaped non-blank character. + s = read(parser, s) + } + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + } + + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + // Check if we are at the end of the scalar. + if single { + if parser.buffer[parser.buffer_pos] == '\'' { + break + } + } else { + if parser.buffer[parser.buffer_pos] == '"' { + break + } + } + + // Consume blank characters. + for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { + if is_blank(parser.buffer, parser.buffer_pos) { + // Consume a space or a tab character. + if !leading_blanks { + whitespaces = read(parser, whitespaces) + } else { + skip(parser) + } + } else { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + // Check if it is a first line break. + if !leading_blanks { + whitespaces = whitespaces[:0] + leading_break = read_line(parser, leading_break) + leading_blanks = true + } else { + trailing_breaks = read_line(parser, trailing_breaks) + } + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Join the whitespaces or fold line breaks. + if leading_blanks { + // Do we need to fold line breaks? + if len(leading_break) > 0 && leading_break[0] == '\n' { + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } else { + s = append(s, trailing_breaks...) + } + } else { + s = append(s, leading_break...) + s = append(s, trailing_breaks...) + } + trailing_breaks = trailing_breaks[:0] + leading_break = leading_break[:0] + } else { + s = append(s, whitespaces...) + whitespaces = whitespaces[:0] + } + } + + // Eat the right quote. + skip(parser) + end_mark := parser.mark + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_SINGLE_QUOTED_SCALAR_STYLE, + } + if !single { + token.style = yaml_DOUBLE_QUOTED_SCALAR_STYLE + } + return true +} + +// Scan a plain scalar. +func yaml_parser_scan_plain_scalar(parser *yaml_parser_t, token *yaml_token_t) bool { + + var s, leading_break, trailing_breaks, whitespaces []byte + var leading_blanks bool + var indent = parser.indent + 1 + + start_mark := parser.mark + end_mark := parser.mark + + // Consume the content of the plain scalar. + for { + // Check for a document indicator. + if parser.unread < 4 && !yaml_parser_update_buffer(parser, 4) { + return false + } + if parser.mark.column == 0 && + ((parser.buffer[parser.buffer_pos+0] == '-' && + parser.buffer[parser.buffer_pos+1] == '-' && + parser.buffer[parser.buffer_pos+2] == '-') || + (parser.buffer[parser.buffer_pos+0] == '.' && + parser.buffer[parser.buffer_pos+1] == '.' && + parser.buffer[parser.buffer_pos+2] == '.')) && + is_blankz(parser.buffer, parser.buffer_pos+3) { + break + } + + // Check for a comment. + if parser.buffer[parser.buffer_pos] == '#' { + break + } + + // Consume non-blank characters. + for !is_blankz(parser.buffer, parser.buffer_pos) { + + // Check for indicators that may end a plain scalar. + if (parser.buffer[parser.buffer_pos] == ':' && is_blankz(parser.buffer, parser.buffer_pos+1)) || + (parser.flow_level > 0 && + (parser.buffer[parser.buffer_pos] == ',' || + parser.buffer[parser.buffer_pos] == '?' || parser.buffer[parser.buffer_pos] == '[' || + parser.buffer[parser.buffer_pos] == ']' || parser.buffer[parser.buffer_pos] == '{' || + parser.buffer[parser.buffer_pos] == '}')) { + break + } + + // Check if we need to join whitespaces and breaks. + if leading_blanks || len(whitespaces) > 0 { + if leading_blanks { + // Do we need to fold line breaks? + if leading_break[0] == '\n' { + if len(trailing_breaks) == 0 { + s = append(s, ' ') + } else { + s = append(s, trailing_breaks...) + } + } else { + s = append(s, leading_break...) + s = append(s, trailing_breaks...) + } + trailing_breaks = trailing_breaks[:0] + leading_break = leading_break[:0] + leading_blanks = false + } else { + s = append(s, whitespaces...) + whitespaces = whitespaces[:0] + } + } + + // Copy the character. + s = read(parser, s) + + end_mark = parser.mark + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + } + + // Is it the end? + if !(is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos)) { + break + } + + // Consume blank characters. + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + + for is_blank(parser.buffer, parser.buffer_pos) || is_break(parser.buffer, parser.buffer_pos) { + if is_blank(parser.buffer, parser.buffer_pos) { + + // Check for tab characters that abuse indentation. + if leading_blanks && parser.mark.column < indent && is_tab(parser.buffer, parser.buffer_pos) { + yaml_parser_set_scanner_error(parser, "while scanning a plain scalar", + start_mark, "found a tab character that violates indentation") + return false + } + + // Consume a space or a tab character. + if !leading_blanks { + whitespaces = read(parser, whitespaces) + } else { + skip(parser) + } + } else { + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + + // Check if it is a first line break. + if !leading_blanks { + whitespaces = whitespaces[:0] + leading_break = read_line(parser, leading_break) + leading_blanks = true + } else { + trailing_breaks = read_line(parser, trailing_breaks) + } + } + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + } + + // Check indentation level. + if parser.flow_level == 0 && parser.mark.column < indent { + break + } + } + + // Create a token. + *token = yaml_token_t{ + typ: yaml_SCALAR_TOKEN, + start_mark: start_mark, + end_mark: end_mark, + value: s, + style: yaml_PLAIN_SCALAR_STYLE, + } + + // Note that we change the 'simple_key_allowed' flag. + if leading_blanks { + parser.simple_key_allowed = true + } + return true +} + +func yaml_parser_scan_line_comment(parser *yaml_parser_t, token_mark yaml_mark_t) bool { + if parser.newlines > 0 { + return true + } + + var start_mark yaml_mark_t + var text []byte + + for peek := 0; peek < 512; peek++ { + if parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) { + break + } + if is_blank(parser.buffer, parser.buffer_pos+peek) { + continue + } + if parser.buffer[parser.buffer_pos+peek] == '#' { + seen := parser.mark.index + peek + for { + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if is_breakz(parser.buffer, parser.buffer_pos) { + if parser.mark.index >= seen { + break + } + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } else if parser.mark.index >= seen { + if len(text) == 0 { + start_mark = parser.mark + } + text = read(parser, text) + } else { + skip(parser) + } + } + } + break + } + if len(text) > 0 { + parser.comments = append(parser.comments, yaml_comment_t{ + token_mark: token_mark, + start_mark: start_mark, + line: text, + }) + } + return true +} + +func yaml_parser_scan_comments(parser *yaml_parser_t, scan_mark yaml_mark_t) bool { + token := parser.tokens[len(parser.tokens)-1] + + if token.typ == yaml_FLOW_ENTRY_TOKEN && len(parser.tokens) > 1 { + token = parser.tokens[len(parser.tokens)-2] + } + + var token_mark = token.start_mark + var start_mark yaml_mark_t + var next_indent = parser.indent + if next_indent < 0 { + next_indent = 0 + } + + var recent_empty = false + var first_empty = parser.newlines <= 1 + + var line = parser.mark.line + var column = parser.mark.column + + var text []byte + + // The foot line is the place where a comment must start to + // still be considered as a foot of the prior content. + // If there's some content in the currently parsed line, then + // the foot is the line below it. + var foot_line = -1 + if scan_mark.line > 0 { + foot_line = parser.mark.line - parser.newlines + 1 + if parser.newlines == 0 && parser.mark.column > 1 { + foot_line++ + } + } + + var peek = 0 + for ; peek < 512; peek++ { + if parser.unread < peek+1 && !yaml_parser_update_buffer(parser, peek+1) { + break + } + column++ + if is_blank(parser.buffer, parser.buffer_pos+peek) { + continue + } + c := parser.buffer[parser.buffer_pos+peek] + var close_flow = parser.flow_level > 0 && (c == ']' || c == '}') + if close_flow || is_breakz(parser.buffer, parser.buffer_pos+peek) { + // Got line break or terminator. + if close_flow || !recent_empty { + if close_flow || first_empty && (start_mark.line == foot_line && token.typ != yaml_VALUE_TOKEN || start_mark.column-1 < next_indent) { + // This is the first empty line and there were no empty lines before, + // so this initial part of the comment is a foot of the prior token + // instead of being a head for the following one. Split it up. + // Alternatively, this might also be the last comment inside a flow + // scope, so it must be a footer. + if len(text) > 0 { + if start_mark.column-1 < next_indent { + // If dedented it's unrelated to the prior token. + token_mark = start_mark + } + parser.comments = append(parser.comments, yaml_comment_t{ + scan_mark: scan_mark, + token_mark: token_mark, + start_mark: start_mark, + end_mark: yaml_mark_t{parser.mark.index + peek, line, column}, + foot: text, + }) + scan_mark = yaml_mark_t{parser.mark.index + peek, line, column} + token_mark = scan_mark + text = nil + } + } else { + if len(text) > 0 && parser.buffer[parser.buffer_pos+peek] != 0 { + text = append(text, '\n') + } + } + } + if !is_break(parser.buffer, parser.buffer_pos+peek) { + break + } + first_empty = false + recent_empty = true + column = 0 + line++ + continue + } + + if len(text) > 0 && (close_flow || column-1 < next_indent && column != start_mark.column) { + // The comment at the different indentation is a foot of the + // preceding data rather than a head of the upcoming one. + parser.comments = append(parser.comments, yaml_comment_t{ + scan_mark: scan_mark, + token_mark: token_mark, + start_mark: start_mark, + end_mark: yaml_mark_t{parser.mark.index + peek, line, column}, + foot: text, + }) + scan_mark = yaml_mark_t{parser.mark.index + peek, line, column} + token_mark = scan_mark + text = nil + } + + if parser.buffer[parser.buffer_pos+peek] != '#' { + break + } + + if len(text) == 0 { + start_mark = yaml_mark_t{parser.mark.index + peek, line, column} + } else { + text = append(text, '\n') + } + + recent_empty = false + + // Consume until after the consumed comment line. + seen := parser.mark.index + peek + for { + if parser.unread < 1 && !yaml_parser_update_buffer(parser, 1) { + return false + } + if is_breakz(parser.buffer, parser.buffer_pos) { + if parser.mark.index >= seen { + break + } + if parser.unread < 2 && !yaml_parser_update_buffer(parser, 2) { + return false + } + skip_line(parser) + } else if parser.mark.index >= seen { + text = read(parser, text) + } else { + skip(parser) + } + } + + peek = 0 + column = 0 + line = parser.mark.line + next_indent = parser.indent + if next_indent < 0 { + next_indent = 0 + } + } + + if len(text) > 0 { + parser.comments = append(parser.comments, yaml_comment_t{ + scan_mark: scan_mark, + token_mark: start_mark, + start_mark: start_mark, + end_mark: yaml_mark_t{parser.mark.index + peek - 1, line, column}, + head: text, + }) + } + return true +} diff --git a/vendor/go.yaml.in/yaml/v3/sorter.go b/vendor/go.yaml.in/yaml/v3/sorter.go new file mode 100644 index 0000000000..9210ece7e9 --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/sorter.go @@ -0,0 +1,134 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package yaml + +import ( + "reflect" + "unicode" +) + +type keyList []reflect.Value + +func (l keyList) Len() int { return len(l) } +func (l keyList) Swap(i, j int) { l[i], l[j] = l[j], l[i] } +func (l keyList) Less(i, j int) bool { + a := l[i] + b := l[j] + ak := a.Kind() + bk := b.Kind() + for (ak == reflect.Interface || ak == reflect.Ptr) && !a.IsNil() { + a = a.Elem() + ak = a.Kind() + } + for (bk == reflect.Interface || bk == reflect.Ptr) && !b.IsNil() { + b = b.Elem() + bk = b.Kind() + } + af, aok := keyFloat(a) + bf, bok := keyFloat(b) + if aok && bok { + if af != bf { + return af < bf + } + if ak != bk { + return ak < bk + } + return numLess(a, b) + } + if ak != reflect.String || bk != reflect.String { + return ak < bk + } + ar, br := []rune(a.String()), []rune(b.String()) + digits := false + for i := 0; i < len(ar) && i < len(br); i++ { + if ar[i] == br[i] { + digits = unicode.IsDigit(ar[i]) + continue + } + al := unicode.IsLetter(ar[i]) + bl := unicode.IsLetter(br[i]) + if al && bl { + return ar[i] < br[i] + } + if al || bl { + if digits { + return al + } else { + return bl + } + } + var ai, bi int + var an, bn int64 + if ar[i] == '0' || br[i] == '0' { + for j := i - 1; j >= 0 && unicode.IsDigit(ar[j]); j-- { + if ar[j] != '0' { + an = 1 + bn = 1 + break + } + } + } + for ai = i; ai < len(ar) && unicode.IsDigit(ar[ai]); ai++ { + an = an*10 + int64(ar[ai]-'0') + } + for bi = i; bi < len(br) && unicode.IsDigit(br[bi]); bi++ { + bn = bn*10 + int64(br[bi]-'0') + } + if an != bn { + return an < bn + } + if ai != bi { + return ai < bi + } + return ar[i] < br[i] + } + return len(ar) < len(br) +} + +// keyFloat returns a float value for v if it is a number/bool +// and whether it is a number/bool or not. +func keyFloat(v reflect.Value) (f float64, ok bool) { + switch v.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return float64(v.Int()), true + case reflect.Float32, reflect.Float64: + return v.Float(), true + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return float64(v.Uint()), true + case reflect.Bool: + if v.Bool() { + return 1, true + } + return 0, true + } + return 0, false +} + +// numLess returns whether a < b. +// a and b must necessarily have the same kind. +func numLess(a, b reflect.Value) bool { + switch a.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return a.Int() < b.Int() + case reflect.Float32, reflect.Float64: + return a.Float() < b.Float() + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return a.Uint() < b.Uint() + case reflect.Bool: + return !a.Bool() && b.Bool() + } + panic("not a number") +} diff --git a/vendor/go.yaml.in/yaml/v3/writerc.go b/vendor/go.yaml.in/yaml/v3/writerc.go new file mode 100644 index 0000000000..266d0b092c --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/writerc.go @@ -0,0 +1,48 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +// Set the writer error and return false. +func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool { + emitter.error = yaml_WRITER_ERROR + emitter.problem = problem + return false +} + +// Flush the output buffer. +func yaml_emitter_flush(emitter *yaml_emitter_t) bool { + if emitter.write_handler == nil { + panic("write handler not set") + } + + // Check if the buffer is empty. + if emitter.buffer_pos == 0 { + return true + } + + if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil { + return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error()) + } + emitter.buffer_pos = 0 + return true +} diff --git a/vendor/go.yaml.in/yaml/v3/yaml.go b/vendor/go.yaml.in/yaml/v3/yaml.go new file mode 100644 index 0000000000..0b101cd20d --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/yaml.go @@ -0,0 +1,703 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package yaml implements YAML support for the Go language. +// +// Source code and other details for the project are available at GitHub: +// +// https://github.com/yaml/go-yaml +package yaml + +import ( + "errors" + "fmt" + "io" + "reflect" + "strings" + "sync" + "unicode/utf8" +) + +// The Unmarshaler interface may be implemented by types to customize their +// behavior when being unmarshaled from a YAML document. +type Unmarshaler interface { + UnmarshalYAML(value *Node) error +} + +type obsoleteUnmarshaler interface { + UnmarshalYAML(unmarshal func(interface{}) error) error +} + +// The Marshaler interface may be implemented by types to customize their +// behavior when being marshaled into a YAML document. The returned value +// is marshaled in place of the original value implementing Marshaler. +// +// If an error is returned by MarshalYAML, the marshaling procedure stops +// and returns with the provided error. +type Marshaler interface { + MarshalYAML() (interface{}, error) +} + +// Unmarshal decodes the first document found within the in byte slice +// and assigns decoded values into the out value. +// +// Maps and pointers (to a struct, string, int, etc) are accepted as out +// values. If an internal pointer within a struct is not initialized, +// the yaml package will initialize it if necessary for unmarshalling +// the provided data. The out parameter must not be nil. +// +// The type of the decoded values should be compatible with the respective +// values in out. If one or more values cannot be decoded due to a type +// mismatches, decoding continues partially until the end of the YAML +// content, and a *yaml.TypeError is returned with details for all +// missed values. +// +// Struct fields are only unmarshalled if they are exported (have an +// upper case first letter), and are unmarshalled using the field name +// lowercased as the default key. Custom keys may be defined via the +// "yaml" name in the field tag: the content preceding the first comma +// is used as the key, and the following comma-separated options are +// used to tweak the marshalling process (see Marshal). +// Conflicting names result in a runtime error. +// +// For example: +// +// type T struct { +// F int `yaml:"a,omitempty"` +// B int +// } +// var t T +// yaml.Unmarshal([]byte("a: 1\nb: 2"), &t) +// +// See the documentation of Marshal for the format of tags and a list of +// supported tag options. +func Unmarshal(in []byte, out interface{}) (err error) { + return unmarshal(in, out, false) +} + +// A Decoder reads and decodes YAML values from an input stream. +type Decoder struct { + parser *parser + knownFields bool +} + +// NewDecoder returns a new decoder that reads from r. +// +// The decoder introduces its own buffering and may read +// data from r beyond the YAML values requested. +func NewDecoder(r io.Reader) *Decoder { + return &Decoder{ + parser: newParserFromReader(r), + } +} + +// KnownFields ensures that the keys in decoded mappings to +// exist as fields in the struct being decoded into. +func (dec *Decoder) KnownFields(enable bool) { + dec.knownFields = enable +} + +// Decode reads the next YAML-encoded value from its input +// and stores it in the value pointed to by v. +// +// See the documentation for Unmarshal for details about the +// conversion of YAML into a Go value. +func (dec *Decoder) Decode(v interface{}) (err error) { + d := newDecoder() + d.knownFields = dec.knownFields + defer handleErr(&err) + node := dec.parser.parse() + if node == nil { + return io.EOF + } + out := reflect.ValueOf(v) + if out.Kind() == reflect.Ptr && !out.IsNil() { + out = out.Elem() + } + d.unmarshal(node, out) + if len(d.terrors) > 0 { + return &TypeError{d.terrors} + } + return nil +} + +// Decode decodes the node and stores its data into the value pointed to by v. +// +// See the documentation for Unmarshal for details about the +// conversion of YAML into a Go value. +func (n *Node) Decode(v interface{}) (err error) { + d := newDecoder() + defer handleErr(&err) + out := reflect.ValueOf(v) + if out.Kind() == reflect.Ptr && !out.IsNil() { + out = out.Elem() + } + d.unmarshal(n, out) + if len(d.terrors) > 0 { + return &TypeError{d.terrors} + } + return nil +} + +func unmarshal(in []byte, out interface{}, strict bool) (err error) { + defer handleErr(&err) + d := newDecoder() + p := newParser(in) + defer p.destroy() + node := p.parse() + if node != nil { + v := reflect.ValueOf(out) + if v.Kind() == reflect.Ptr && !v.IsNil() { + v = v.Elem() + } + d.unmarshal(node, v) + } + if len(d.terrors) > 0 { + return &TypeError{d.terrors} + } + return nil +} + +// Marshal serializes the value provided into a YAML document. The structure +// of the generated document will reflect the structure of the value itself. +// Maps and pointers (to struct, string, int, etc) are accepted as the in value. +// +// Struct fields are only marshalled if they are exported (have an upper case +// first letter), and are marshalled using the field name lowercased as the +// default key. Custom keys may be defined via the "yaml" name in the field +// tag: the content preceding the first comma is used as the key, and the +// following comma-separated options are used to tweak the marshalling process. +// Conflicting names result in a runtime error. +// +// The field tag format accepted is: +// +// `(...) yaml:"[][,[,]]" (...)` +// +// The following flags are currently supported: +// +// omitempty Only include the field if it's not set to the zero +// value for the type or to empty slices or maps. +// Zero valued structs will be omitted if all their public +// fields are zero, unless they implement an IsZero +// method (see the IsZeroer interface type), in which +// case the field will be excluded if IsZero returns true. +// +// flow Marshal using a flow style (useful for structs, +// sequences and maps). +// +// inline Inline the field, which must be a struct or a map, +// causing all of its fields or keys to be processed as if +// they were part of the outer struct. For maps, keys must +// not conflict with the yaml keys of other struct fields. +// +// In addition, if the key is "-", the field is ignored. +// +// For example: +// +// type T struct { +// F int `yaml:"a,omitempty"` +// B int +// } +// yaml.Marshal(&T{B: 2}) // Returns "b: 2\n" +// yaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n" +func Marshal(in interface{}) (out []byte, err error) { + defer handleErr(&err) + e := newEncoder() + defer e.destroy() + e.marshalDoc("", reflect.ValueOf(in)) + e.finish() + out = e.out + return +} + +// An Encoder writes YAML values to an output stream. +type Encoder struct { + encoder *encoder +} + +// NewEncoder returns a new encoder that writes to w. +// The Encoder should be closed after use to flush all data +// to w. +func NewEncoder(w io.Writer) *Encoder { + return &Encoder{ + encoder: newEncoderWithWriter(w), + } +} + +// Encode writes the YAML encoding of v to the stream. +// If multiple items are encoded to the stream, the +// second and subsequent document will be preceded +// with a "---" document separator, but the first will not. +// +// See the documentation for Marshal for details about the conversion of Go +// values to YAML. +func (e *Encoder) Encode(v interface{}) (err error) { + defer handleErr(&err) + e.encoder.marshalDoc("", reflect.ValueOf(v)) + return nil +} + +// Encode encodes value v and stores its representation in n. +// +// See the documentation for Marshal for details about the +// conversion of Go values into YAML. +func (n *Node) Encode(v interface{}) (err error) { + defer handleErr(&err) + e := newEncoder() + defer e.destroy() + e.marshalDoc("", reflect.ValueOf(v)) + e.finish() + p := newParser(e.out) + p.textless = true + defer p.destroy() + doc := p.parse() + *n = *doc.Content[0] + return nil +} + +// SetIndent changes the used indentation used when encoding. +func (e *Encoder) SetIndent(spaces int) { + if spaces < 0 { + panic("yaml: cannot indent to a negative number of spaces") + } + e.encoder.indent = spaces +} + +// CompactSeqIndent makes it so that '- ' is considered part of the indentation. +func (e *Encoder) CompactSeqIndent() { + e.encoder.emitter.compact_sequence_indent = true +} + +// DefaultSeqIndent makes it so that '- ' is not considered part of the indentation. +func (e *Encoder) DefaultSeqIndent() { + e.encoder.emitter.compact_sequence_indent = false +} + +// Close closes the encoder by writing any remaining data. +// It does not write a stream terminating string "...". +func (e *Encoder) Close() (err error) { + defer handleErr(&err) + e.encoder.finish() + return nil +} + +func handleErr(err *error) { + if v := recover(); v != nil { + if e, ok := v.(yamlError); ok { + *err = e.err + } else { + panic(v) + } + } +} + +type yamlError struct { + err error +} + +func fail(err error) { + panic(yamlError{err}) +} + +func failf(format string, args ...interface{}) { + panic(yamlError{fmt.Errorf("yaml: "+format, args...)}) +} + +// A TypeError is returned by Unmarshal when one or more fields in +// the YAML document cannot be properly decoded into the requested +// types. When this error is returned, the value is still +// unmarshaled partially. +type TypeError struct { + Errors []string +} + +func (e *TypeError) Error() string { + return fmt.Sprintf("yaml: unmarshal errors:\n %s", strings.Join(e.Errors, "\n ")) +} + +type Kind uint32 + +const ( + DocumentNode Kind = 1 << iota + SequenceNode + MappingNode + ScalarNode + AliasNode +) + +type Style uint32 + +const ( + TaggedStyle Style = 1 << iota + DoubleQuotedStyle + SingleQuotedStyle + LiteralStyle + FoldedStyle + FlowStyle +) + +// Node represents an element in the YAML document hierarchy. While documents +// are typically encoded and decoded into higher level types, such as structs +// and maps, Node is an intermediate representation that allows detailed +// control over the content being decoded or encoded. +// +// It's worth noting that although Node offers access into details such as +// line numbers, colums, and comments, the content when re-encoded will not +// have its original textual representation preserved. An effort is made to +// render the data plesantly, and to preserve comments near the data they +// describe, though. +// +// Values that make use of the Node type interact with the yaml package in the +// same way any other type would do, by encoding and decoding yaml data +// directly or indirectly into them. +// +// For example: +// +// var person struct { +// Name string +// Address yaml.Node +// } +// err := yaml.Unmarshal(data, &person) +// +// Or by itself: +// +// var person Node +// err := yaml.Unmarshal(data, &person) +type Node struct { + // Kind defines whether the node is a document, a mapping, a sequence, + // a scalar value, or an alias to another node. The specific data type of + // scalar nodes may be obtained via the ShortTag and LongTag methods. + Kind Kind + + // Style allows customizing the apperance of the node in the tree. + Style Style + + // Tag holds the YAML tag defining the data type for the value. + // When decoding, this field will always be set to the resolved tag, + // even when it wasn't explicitly provided in the YAML content. + // When encoding, if this field is unset the value type will be + // implied from the node properties, and if it is set, it will only + // be serialized into the representation if TaggedStyle is used or + // the implicit tag diverges from the provided one. + Tag string + + // Value holds the unescaped and unquoted represenation of the value. + Value string + + // Anchor holds the anchor name for this node, which allows aliases to point to it. + Anchor string + + // Alias holds the node that this alias points to. Only valid when Kind is AliasNode. + Alias *Node + + // Content holds contained nodes for documents, mappings, and sequences. + Content []*Node + + // HeadComment holds any comments in the lines preceding the node and + // not separated by an empty line. + HeadComment string + + // LineComment holds any comments at the end of the line where the node is in. + LineComment string + + // FootComment holds any comments following the node and before empty lines. + FootComment string + + // Line and Column hold the node position in the decoded YAML text. + // These fields are not respected when encoding the node. + Line int + Column int +} + +// IsZero returns whether the node has all of its fields unset. +func (n *Node) IsZero() bool { + return n.Kind == 0 && n.Style == 0 && n.Tag == "" && n.Value == "" && n.Anchor == "" && n.Alias == nil && n.Content == nil && + n.HeadComment == "" && n.LineComment == "" && n.FootComment == "" && n.Line == 0 && n.Column == 0 +} + +// LongTag returns the long form of the tag that indicates the data type for +// the node. If the Tag field isn't explicitly defined, one will be computed +// based on the node properties. +func (n *Node) LongTag() string { + return longTag(n.ShortTag()) +} + +// ShortTag returns the short form of the YAML tag that indicates data type for +// the node. If the Tag field isn't explicitly defined, one will be computed +// based on the node properties. +func (n *Node) ShortTag() string { + if n.indicatedString() { + return strTag + } + if n.Tag == "" || n.Tag == "!" { + switch n.Kind { + case MappingNode: + return mapTag + case SequenceNode: + return seqTag + case AliasNode: + if n.Alias != nil { + return n.Alias.ShortTag() + } + case ScalarNode: + tag, _ := resolve("", n.Value) + return tag + case 0: + // Special case to make the zero value convenient. + if n.IsZero() { + return nullTag + } + } + return "" + } + return shortTag(n.Tag) +} + +func (n *Node) indicatedString() bool { + return n.Kind == ScalarNode && + (shortTag(n.Tag) == strTag || + (n.Tag == "" || n.Tag == "!") && n.Style&(SingleQuotedStyle|DoubleQuotedStyle|LiteralStyle|FoldedStyle) != 0) +} + +// SetString is a convenience function that sets the node to a string value +// and defines its style in a pleasant way depending on its content. +func (n *Node) SetString(s string) { + n.Kind = ScalarNode + if utf8.ValidString(s) { + n.Value = s + n.Tag = strTag + } else { + n.Value = encodeBase64(s) + n.Tag = binaryTag + } + if strings.Contains(n.Value, "\n") { + n.Style = LiteralStyle + } +} + +// -------------------------------------------------------------------------- +// Maintain a mapping of keys to structure field indexes + +// The code in this section was copied from mgo/bson. + +// structInfo holds details for the serialization of fields of +// a given struct. +type structInfo struct { + FieldsMap map[string]fieldInfo + FieldsList []fieldInfo + + // InlineMap is the number of the field in the struct that + // contains an ,inline map, or -1 if there's none. + InlineMap int + + // InlineUnmarshalers holds indexes to inlined fields that + // contain unmarshaler values. + InlineUnmarshalers [][]int +} + +type fieldInfo struct { + Key string + Num int + OmitEmpty bool + Flow bool + // Id holds the unique field identifier, so we can cheaply + // check for field duplicates without maintaining an extra map. + Id int + + // Inline holds the field index if the field is part of an inlined struct. + Inline []int +} + +var structMap = make(map[reflect.Type]*structInfo) +var fieldMapMutex sync.RWMutex +var unmarshalerType reflect.Type + +func init() { + var v Unmarshaler + unmarshalerType = reflect.ValueOf(&v).Elem().Type() +} + +func getStructInfo(st reflect.Type) (*structInfo, error) { + fieldMapMutex.RLock() + sinfo, found := structMap[st] + fieldMapMutex.RUnlock() + if found { + return sinfo, nil + } + + n := st.NumField() + fieldsMap := make(map[string]fieldInfo) + fieldsList := make([]fieldInfo, 0, n) + inlineMap := -1 + inlineUnmarshalers := [][]int(nil) + for i := 0; i != n; i++ { + field := st.Field(i) + if field.PkgPath != "" && !field.Anonymous { + continue // Private field + } + + info := fieldInfo{Num: i} + + tag := field.Tag.Get("yaml") + if tag == "" && strings.Index(string(field.Tag), ":") < 0 { + tag = string(field.Tag) + } + if tag == "-" { + continue + } + + inline := false + fields := strings.Split(tag, ",") + if len(fields) > 1 { + for _, flag := range fields[1:] { + switch flag { + case "omitempty": + info.OmitEmpty = true + case "flow": + info.Flow = true + case "inline": + inline = true + default: + return nil, errors.New(fmt.Sprintf("unsupported flag %q in tag %q of type %s", flag, tag, st)) + } + } + tag = fields[0] + } + + if inline { + switch field.Type.Kind() { + case reflect.Map: + if inlineMap >= 0 { + return nil, errors.New("multiple ,inline maps in struct " + st.String()) + } + if field.Type.Key() != reflect.TypeOf("") { + return nil, errors.New("option ,inline needs a map with string keys in struct " + st.String()) + } + inlineMap = info.Num + case reflect.Struct, reflect.Ptr: + ftype := field.Type + for ftype.Kind() == reflect.Ptr { + ftype = ftype.Elem() + } + if ftype.Kind() != reflect.Struct { + return nil, errors.New("option ,inline may only be used on a struct or map field") + } + if reflect.PtrTo(ftype).Implements(unmarshalerType) { + inlineUnmarshalers = append(inlineUnmarshalers, []int{i}) + } else { + sinfo, err := getStructInfo(ftype) + if err != nil { + return nil, err + } + for _, index := range sinfo.InlineUnmarshalers { + inlineUnmarshalers = append(inlineUnmarshalers, append([]int{i}, index...)) + } + for _, finfo := range sinfo.FieldsList { + if _, found := fieldsMap[finfo.Key]; found { + msg := "duplicated key '" + finfo.Key + "' in struct " + st.String() + return nil, errors.New(msg) + } + if finfo.Inline == nil { + finfo.Inline = []int{i, finfo.Num} + } else { + finfo.Inline = append([]int{i}, finfo.Inline...) + } + finfo.Id = len(fieldsList) + fieldsMap[finfo.Key] = finfo + fieldsList = append(fieldsList, finfo) + } + } + default: + return nil, errors.New("option ,inline may only be used on a struct or map field") + } + continue + } + + if tag != "" { + info.Key = tag + } else { + info.Key = strings.ToLower(field.Name) + } + + if _, found = fieldsMap[info.Key]; found { + msg := "duplicated key '" + info.Key + "' in struct " + st.String() + return nil, errors.New(msg) + } + + info.Id = len(fieldsList) + fieldsList = append(fieldsList, info) + fieldsMap[info.Key] = info + } + + sinfo = &structInfo{ + FieldsMap: fieldsMap, + FieldsList: fieldsList, + InlineMap: inlineMap, + InlineUnmarshalers: inlineUnmarshalers, + } + + fieldMapMutex.Lock() + structMap[st] = sinfo + fieldMapMutex.Unlock() + return sinfo, nil +} + +// IsZeroer is used to check whether an object is zero to +// determine whether it should be omitted when marshaling +// with the omitempty flag. One notable implementation +// is time.Time. +type IsZeroer interface { + IsZero() bool +} + +func isZero(v reflect.Value) bool { + kind := v.Kind() + if z, ok := v.Interface().(IsZeroer); ok { + if (kind == reflect.Ptr || kind == reflect.Interface) && v.IsNil() { + return true + } + return z.IsZero() + } + switch kind { + case reflect.String: + return len(v.String()) == 0 + case reflect.Interface, reflect.Ptr: + return v.IsNil() + case reflect.Slice: + return v.Len() == 0 + case reflect.Map: + return v.Len() == 0 + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Bool: + return !v.Bool() + case reflect.Struct: + vt := v.Type() + for i := v.NumField() - 1; i >= 0; i-- { + if vt.Field(i).PkgPath != "" { + continue // Private field + } + if !isZero(v.Field(i)) { + return false + } + } + return true + } + return false +} diff --git a/vendor/go.yaml.in/yaml/v3/yamlh.go b/vendor/go.yaml.in/yaml/v3/yamlh.go new file mode 100644 index 0000000000..f59aa40f64 --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/yamlh.go @@ -0,0 +1,811 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +import ( + "fmt" + "io" +) + +// The version directive data. +type yaml_version_directive_t struct { + major int8 // The major version number. + minor int8 // The minor version number. +} + +// The tag directive data. +type yaml_tag_directive_t struct { + handle []byte // The tag handle. + prefix []byte // The tag prefix. +} + +type yaml_encoding_t int + +// The stream encoding. +const ( + // Let the parser choose the encoding. + yaml_ANY_ENCODING yaml_encoding_t = iota + + yaml_UTF8_ENCODING // The default UTF-8 encoding. + yaml_UTF16LE_ENCODING // The UTF-16-LE encoding with BOM. + yaml_UTF16BE_ENCODING // The UTF-16-BE encoding with BOM. +) + +type yaml_break_t int + +// Line break types. +const ( + // Let the parser choose the break type. + yaml_ANY_BREAK yaml_break_t = iota + + yaml_CR_BREAK // Use CR for line breaks (Mac style). + yaml_LN_BREAK // Use LN for line breaks (Unix style). + yaml_CRLN_BREAK // Use CR LN for line breaks (DOS style). +) + +type yaml_error_type_t int + +// Many bad things could happen with the parser and emitter. +const ( + // No error is produced. + yaml_NO_ERROR yaml_error_type_t = iota + + yaml_MEMORY_ERROR // Cannot allocate or reallocate a block of memory. + yaml_READER_ERROR // Cannot read or decode the input stream. + yaml_SCANNER_ERROR // Cannot scan the input stream. + yaml_PARSER_ERROR // Cannot parse the input stream. + yaml_COMPOSER_ERROR // Cannot compose a YAML document. + yaml_WRITER_ERROR // Cannot write to the output stream. + yaml_EMITTER_ERROR // Cannot emit a YAML stream. +) + +// The pointer position. +type yaml_mark_t struct { + index int // The position index. + line int // The position line. + column int // The position column. +} + +// Node Styles + +type yaml_style_t int8 + +type yaml_scalar_style_t yaml_style_t + +// Scalar styles. +const ( + // Let the emitter choose the style. + yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = 0 + + yaml_PLAIN_SCALAR_STYLE yaml_scalar_style_t = 1 << iota // The plain scalar style. + yaml_SINGLE_QUOTED_SCALAR_STYLE // The single-quoted scalar style. + yaml_DOUBLE_QUOTED_SCALAR_STYLE // The double-quoted scalar style. + yaml_LITERAL_SCALAR_STYLE // The literal scalar style. + yaml_FOLDED_SCALAR_STYLE // The folded scalar style. +) + +type yaml_sequence_style_t yaml_style_t + +// Sequence styles. +const ( + // Let the emitter choose the style. + yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota + + yaml_BLOCK_SEQUENCE_STYLE // The block sequence style. + yaml_FLOW_SEQUENCE_STYLE // The flow sequence style. +) + +type yaml_mapping_style_t yaml_style_t + +// Mapping styles. +const ( + // Let the emitter choose the style. + yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota + + yaml_BLOCK_MAPPING_STYLE // The block mapping style. + yaml_FLOW_MAPPING_STYLE // The flow mapping style. +) + +// Tokens + +type yaml_token_type_t int + +// Token types. +const ( + // An empty token. + yaml_NO_TOKEN yaml_token_type_t = iota + + yaml_STREAM_START_TOKEN // A STREAM-START token. + yaml_STREAM_END_TOKEN // A STREAM-END token. + + yaml_VERSION_DIRECTIVE_TOKEN // A VERSION-DIRECTIVE token. + yaml_TAG_DIRECTIVE_TOKEN // A TAG-DIRECTIVE token. + yaml_DOCUMENT_START_TOKEN // A DOCUMENT-START token. + yaml_DOCUMENT_END_TOKEN // A DOCUMENT-END token. + + yaml_BLOCK_SEQUENCE_START_TOKEN // A BLOCK-SEQUENCE-START token. + yaml_BLOCK_MAPPING_START_TOKEN // A BLOCK-SEQUENCE-END token. + yaml_BLOCK_END_TOKEN // A BLOCK-END token. + + yaml_FLOW_SEQUENCE_START_TOKEN // A FLOW-SEQUENCE-START token. + yaml_FLOW_SEQUENCE_END_TOKEN // A FLOW-SEQUENCE-END token. + yaml_FLOW_MAPPING_START_TOKEN // A FLOW-MAPPING-START token. + yaml_FLOW_MAPPING_END_TOKEN // A FLOW-MAPPING-END token. + + yaml_BLOCK_ENTRY_TOKEN // A BLOCK-ENTRY token. + yaml_FLOW_ENTRY_TOKEN // A FLOW-ENTRY token. + yaml_KEY_TOKEN // A KEY token. + yaml_VALUE_TOKEN // A VALUE token. + + yaml_ALIAS_TOKEN // An ALIAS token. + yaml_ANCHOR_TOKEN // An ANCHOR token. + yaml_TAG_TOKEN // A TAG token. + yaml_SCALAR_TOKEN // A SCALAR token. +) + +func (tt yaml_token_type_t) String() string { + switch tt { + case yaml_NO_TOKEN: + return "yaml_NO_TOKEN" + case yaml_STREAM_START_TOKEN: + return "yaml_STREAM_START_TOKEN" + case yaml_STREAM_END_TOKEN: + return "yaml_STREAM_END_TOKEN" + case yaml_VERSION_DIRECTIVE_TOKEN: + return "yaml_VERSION_DIRECTIVE_TOKEN" + case yaml_TAG_DIRECTIVE_TOKEN: + return "yaml_TAG_DIRECTIVE_TOKEN" + case yaml_DOCUMENT_START_TOKEN: + return "yaml_DOCUMENT_START_TOKEN" + case yaml_DOCUMENT_END_TOKEN: + return "yaml_DOCUMENT_END_TOKEN" + case yaml_BLOCK_SEQUENCE_START_TOKEN: + return "yaml_BLOCK_SEQUENCE_START_TOKEN" + case yaml_BLOCK_MAPPING_START_TOKEN: + return "yaml_BLOCK_MAPPING_START_TOKEN" + case yaml_BLOCK_END_TOKEN: + return "yaml_BLOCK_END_TOKEN" + case yaml_FLOW_SEQUENCE_START_TOKEN: + return "yaml_FLOW_SEQUENCE_START_TOKEN" + case yaml_FLOW_SEQUENCE_END_TOKEN: + return "yaml_FLOW_SEQUENCE_END_TOKEN" + case yaml_FLOW_MAPPING_START_TOKEN: + return "yaml_FLOW_MAPPING_START_TOKEN" + case yaml_FLOW_MAPPING_END_TOKEN: + return "yaml_FLOW_MAPPING_END_TOKEN" + case yaml_BLOCK_ENTRY_TOKEN: + return "yaml_BLOCK_ENTRY_TOKEN" + case yaml_FLOW_ENTRY_TOKEN: + return "yaml_FLOW_ENTRY_TOKEN" + case yaml_KEY_TOKEN: + return "yaml_KEY_TOKEN" + case yaml_VALUE_TOKEN: + return "yaml_VALUE_TOKEN" + case yaml_ALIAS_TOKEN: + return "yaml_ALIAS_TOKEN" + case yaml_ANCHOR_TOKEN: + return "yaml_ANCHOR_TOKEN" + case yaml_TAG_TOKEN: + return "yaml_TAG_TOKEN" + case yaml_SCALAR_TOKEN: + return "yaml_SCALAR_TOKEN" + } + return "" +} + +// The token structure. +type yaml_token_t struct { + // The token type. + typ yaml_token_type_t + + // The start/end of the token. + start_mark, end_mark yaml_mark_t + + // The stream encoding (for yaml_STREAM_START_TOKEN). + encoding yaml_encoding_t + + // The alias/anchor/scalar value or tag/tag directive handle + // (for yaml_ALIAS_TOKEN, yaml_ANCHOR_TOKEN, yaml_SCALAR_TOKEN, yaml_TAG_TOKEN, yaml_TAG_DIRECTIVE_TOKEN). + value []byte + + // The tag suffix (for yaml_TAG_TOKEN). + suffix []byte + + // The tag directive prefix (for yaml_TAG_DIRECTIVE_TOKEN). + prefix []byte + + // The scalar style (for yaml_SCALAR_TOKEN). + style yaml_scalar_style_t + + // The version directive major/minor (for yaml_VERSION_DIRECTIVE_TOKEN). + major, minor int8 +} + +// Events + +type yaml_event_type_t int8 + +// Event types. +const ( + // An empty event. + yaml_NO_EVENT yaml_event_type_t = iota + + yaml_STREAM_START_EVENT // A STREAM-START event. + yaml_STREAM_END_EVENT // A STREAM-END event. + yaml_DOCUMENT_START_EVENT // A DOCUMENT-START event. + yaml_DOCUMENT_END_EVENT // A DOCUMENT-END event. + yaml_ALIAS_EVENT // An ALIAS event. + yaml_SCALAR_EVENT // A SCALAR event. + yaml_SEQUENCE_START_EVENT // A SEQUENCE-START event. + yaml_SEQUENCE_END_EVENT // A SEQUENCE-END event. + yaml_MAPPING_START_EVENT // A MAPPING-START event. + yaml_MAPPING_END_EVENT // A MAPPING-END event. + yaml_TAIL_COMMENT_EVENT +) + +var eventStrings = []string{ + yaml_NO_EVENT: "none", + yaml_STREAM_START_EVENT: "stream start", + yaml_STREAM_END_EVENT: "stream end", + yaml_DOCUMENT_START_EVENT: "document start", + yaml_DOCUMENT_END_EVENT: "document end", + yaml_ALIAS_EVENT: "alias", + yaml_SCALAR_EVENT: "scalar", + yaml_SEQUENCE_START_EVENT: "sequence start", + yaml_SEQUENCE_END_EVENT: "sequence end", + yaml_MAPPING_START_EVENT: "mapping start", + yaml_MAPPING_END_EVENT: "mapping end", + yaml_TAIL_COMMENT_EVENT: "tail comment", +} + +func (e yaml_event_type_t) String() string { + if e < 0 || int(e) >= len(eventStrings) { + return fmt.Sprintf("unknown event %d", e) + } + return eventStrings[e] +} + +// The event structure. +type yaml_event_t struct { + + // The event type. + typ yaml_event_type_t + + // The start and end of the event. + start_mark, end_mark yaml_mark_t + + // The document encoding (for yaml_STREAM_START_EVENT). + encoding yaml_encoding_t + + // The version directive (for yaml_DOCUMENT_START_EVENT). + version_directive *yaml_version_directive_t + + // The list of tag directives (for yaml_DOCUMENT_START_EVENT). + tag_directives []yaml_tag_directive_t + + // The comments + head_comment []byte + line_comment []byte + foot_comment []byte + tail_comment []byte + + // The anchor (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_ALIAS_EVENT). + anchor []byte + + // The tag (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). + tag []byte + + // The scalar value (for yaml_SCALAR_EVENT). + value []byte + + // Is the document start/end indicator implicit, or the tag optional? + // (for yaml_DOCUMENT_START_EVENT, yaml_DOCUMENT_END_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT, yaml_SCALAR_EVENT). + implicit bool + + // Is the tag optional for any non-plain style? (for yaml_SCALAR_EVENT). + quoted_implicit bool + + // The style (for yaml_SCALAR_EVENT, yaml_SEQUENCE_START_EVENT, yaml_MAPPING_START_EVENT). + style yaml_style_t +} + +func (e *yaml_event_t) scalar_style() yaml_scalar_style_t { return yaml_scalar_style_t(e.style) } +func (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) } +func (e *yaml_event_t) mapping_style() yaml_mapping_style_t { return yaml_mapping_style_t(e.style) } + +// Nodes + +const ( + yaml_NULL_TAG = "tag:yaml.org,2002:null" // The tag !!null with the only possible value: null. + yaml_BOOL_TAG = "tag:yaml.org,2002:bool" // The tag !!bool with the values: true and false. + yaml_STR_TAG = "tag:yaml.org,2002:str" // The tag !!str for string values. + yaml_INT_TAG = "tag:yaml.org,2002:int" // The tag !!int for integer values. + yaml_FLOAT_TAG = "tag:yaml.org,2002:float" // The tag !!float for float values. + yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp" // The tag !!timestamp for date and time values. + + yaml_SEQ_TAG = "tag:yaml.org,2002:seq" // The tag !!seq is used to denote sequences. + yaml_MAP_TAG = "tag:yaml.org,2002:map" // The tag !!map is used to denote mapping. + + // Not in original libyaml. + yaml_BINARY_TAG = "tag:yaml.org,2002:binary" + yaml_MERGE_TAG = "tag:yaml.org,2002:merge" + + yaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG // The default scalar tag is !!str. + yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG // The default sequence tag is !!seq. + yaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG // The default mapping tag is !!map. +) + +type yaml_node_type_t int + +// Node types. +const ( + // An empty node. + yaml_NO_NODE yaml_node_type_t = iota + + yaml_SCALAR_NODE // A scalar node. + yaml_SEQUENCE_NODE // A sequence node. + yaml_MAPPING_NODE // A mapping node. +) + +// An element of a sequence node. +type yaml_node_item_t int + +// An element of a mapping node. +type yaml_node_pair_t struct { + key int // The key of the element. + value int // The value of the element. +} + +// The node structure. +type yaml_node_t struct { + typ yaml_node_type_t // The node type. + tag []byte // The node tag. + + // The node data. + + // The scalar parameters (for yaml_SCALAR_NODE). + scalar struct { + value []byte // The scalar value. + length int // The length of the scalar value. + style yaml_scalar_style_t // The scalar style. + } + + // The sequence parameters (for YAML_SEQUENCE_NODE). + sequence struct { + items_data []yaml_node_item_t // The stack of sequence items. + style yaml_sequence_style_t // The sequence style. + } + + // The mapping parameters (for yaml_MAPPING_NODE). + mapping struct { + pairs_data []yaml_node_pair_t // The stack of mapping pairs (key, value). + pairs_start *yaml_node_pair_t // The beginning of the stack. + pairs_end *yaml_node_pair_t // The end of the stack. + pairs_top *yaml_node_pair_t // The top of the stack. + style yaml_mapping_style_t // The mapping style. + } + + start_mark yaml_mark_t // The beginning of the node. + end_mark yaml_mark_t // The end of the node. + +} + +// The document structure. +type yaml_document_t struct { + + // The document nodes. + nodes []yaml_node_t + + // The version directive. + version_directive *yaml_version_directive_t + + // The list of tag directives. + tag_directives_data []yaml_tag_directive_t + tag_directives_start int // The beginning of the tag directives list. + tag_directives_end int // The end of the tag directives list. + + start_implicit int // Is the document start indicator implicit? + end_implicit int // Is the document end indicator implicit? + + // The start/end of the document. + start_mark, end_mark yaml_mark_t +} + +// The prototype of a read handler. +// +// The read handler is called when the parser needs to read more bytes from the +// source. The handler should write not more than size bytes to the buffer. +// The number of written bytes should be set to the size_read variable. +// +// [in,out] data A pointer to an application data specified by +// +// yaml_parser_set_input(). +// +// [out] buffer The buffer to write the data from the source. +// [in] size The size of the buffer. +// [out] size_read The actual number of bytes read from the source. +// +// On success, the handler should return 1. If the handler failed, +// the returned value should be 0. On EOF, the handler should set the +// size_read to 0 and return 1. +type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error) + +// This structure holds information about a potential simple key. +type yaml_simple_key_t struct { + possible bool // Is a simple key possible? + required bool // Is a simple key required? + token_number int // The number of the token. + mark yaml_mark_t // The position mark. +} + +// The states of the parser. +type yaml_parser_state_t int + +const ( + yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota + + yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE // Expect the beginning of an implicit document. + yaml_PARSE_DOCUMENT_START_STATE // Expect DOCUMENT-START. + yaml_PARSE_DOCUMENT_CONTENT_STATE // Expect the content of a document. + yaml_PARSE_DOCUMENT_END_STATE // Expect DOCUMENT-END. + yaml_PARSE_BLOCK_NODE_STATE // Expect a block node. + yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE // Expect a block node or indentless sequence. + yaml_PARSE_FLOW_NODE_STATE // Expect a flow node. + yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a block sequence. + yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE // Expect an entry of a block sequence. + yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE // Expect an entry of an indentless sequence. + yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. + yaml_PARSE_BLOCK_MAPPING_KEY_STATE // Expect a block mapping key. + yaml_PARSE_BLOCK_MAPPING_VALUE_STATE // Expect a block mapping value. + yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE // Expect the first entry of a flow sequence. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE // Expect an entry of a flow sequence. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE // Expect a key of an ordered mapping. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE // Expect a value of an ordered mapping. + yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE // Expect the and of an ordered mapping entry. + yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. + yaml_PARSE_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. + yaml_PARSE_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. + yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE // Expect an empty value of a flow mapping. + yaml_PARSE_END_STATE // Expect nothing. +) + +func (ps yaml_parser_state_t) String() string { + switch ps { + case yaml_PARSE_STREAM_START_STATE: + return "yaml_PARSE_STREAM_START_STATE" + case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE: + return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE" + case yaml_PARSE_DOCUMENT_START_STATE: + return "yaml_PARSE_DOCUMENT_START_STATE" + case yaml_PARSE_DOCUMENT_CONTENT_STATE: + return "yaml_PARSE_DOCUMENT_CONTENT_STATE" + case yaml_PARSE_DOCUMENT_END_STATE: + return "yaml_PARSE_DOCUMENT_END_STATE" + case yaml_PARSE_BLOCK_NODE_STATE: + return "yaml_PARSE_BLOCK_NODE_STATE" + case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE: + return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE" + case yaml_PARSE_FLOW_NODE_STATE: + return "yaml_PARSE_FLOW_NODE_STATE" + case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE: + return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE" + case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE: + return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE" + case yaml_PARSE_BLOCK_MAPPING_KEY_STATE: + return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE" + case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE: + return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE: + return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE" + case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE: + return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE" + case yaml_PARSE_FLOW_MAPPING_KEY_STATE: + return "yaml_PARSE_FLOW_MAPPING_KEY_STATE" + case yaml_PARSE_FLOW_MAPPING_VALUE_STATE: + return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE" + case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE: + return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE" + case yaml_PARSE_END_STATE: + return "yaml_PARSE_END_STATE" + } + return "" +} + +// This structure holds aliases data. +type yaml_alias_data_t struct { + anchor []byte // The anchor. + index int // The node id. + mark yaml_mark_t // The anchor mark. +} + +// The parser structure. +// +// All members are internal. Manage the structure using the +// yaml_parser_ family of functions. +type yaml_parser_t struct { + + // Error handling + + error yaml_error_type_t // Error type. + + problem string // Error description. + + // The byte about which the problem occurred. + problem_offset int + problem_value int + problem_mark yaml_mark_t + + // The error context. + context string + context_mark yaml_mark_t + + // Reader stuff + + read_handler yaml_read_handler_t // Read handler. + + input_reader io.Reader // File input data. + input []byte // String input data. + input_pos int + + eof bool // EOF flag + + buffer []byte // The working buffer. + buffer_pos int // The current position of the buffer. + + unread int // The number of unread characters in the buffer. + + newlines int // The number of line breaks since last non-break/non-blank character + + raw_buffer []byte // The raw buffer. + raw_buffer_pos int // The current position of the buffer. + + encoding yaml_encoding_t // The input encoding. + + offset int // The offset of the current position (in bytes). + mark yaml_mark_t // The mark of the current position. + + // Comments + + head_comment []byte // The current head comments + line_comment []byte // The current line comments + foot_comment []byte // The current foot comments + tail_comment []byte // Foot comment that happens at the end of a block. + stem_comment []byte // Comment in item preceding a nested structure (list inside list item, etc) + + comments []yaml_comment_t // The folded comments for all parsed tokens + comments_head int + + // Scanner stuff + + stream_start_produced bool // Have we started to scan the input stream? + stream_end_produced bool // Have we reached the end of the input stream? + + flow_level int // The number of unclosed '[' and '{' indicators. + + tokens []yaml_token_t // The tokens queue. + tokens_head int // The head of the tokens queue. + tokens_parsed int // The number of tokens fetched from the queue. + token_available bool // Does the tokens queue contain a token ready for dequeueing. + + indent int // The current indentation level. + indents []int // The indentation levels stack. + + simple_key_allowed bool // May a simple key occur at the current position? + simple_keys []yaml_simple_key_t // The stack of simple keys. + simple_keys_by_tok map[int]int // possible simple_key indexes indexed by token_number + + // Parser stuff + + state yaml_parser_state_t // The current parser state. + states []yaml_parser_state_t // The parser states stack. + marks []yaml_mark_t // The stack of marks. + tag_directives []yaml_tag_directive_t // The list of TAG directives. + + // Dumper stuff + + aliases []yaml_alias_data_t // The alias data. + + document *yaml_document_t // The currently parsed document. +} + +type yaml_comment_t struct { + scan_mark yaml_mark_t // Position where scanning for comments started + token_mark yaml_mark_t // Position after which tokens will be associated with this comment + start_mark yaml_mark_t // Position of '#' comment mark + end_mark yaml_mark_t // Position where comment terminated + + head []byte + line []byte + foot []byte +} + +// Emitter Definitions + +// The prototype of a write handler. +// +// The write handler is called when the emitter needs to flush the accumulated +// characters to the output. The handler should write @a size bytes of the +// @a buffer to the output. +// +// @param[in,out] data A pointer to an application data specified by +// +// yaml_emitter_set_output(). +// +// @param[in] buffer The buffer with bytes to be written. +// @param[in] size The size of the buffer. +// +// @returns On success, the handler should return @c 1. If the handler failed, +// the returned value should be @c 0. +type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error + +type yaml_emitter_state_t int + +// The emitter states. +const ( + // Expect STREAM-START. + yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota + + yaml_EMIT_FIRST_DOCUMENT_START_STATE // Expect the first DOCUMENT-START or STREAM-END. + yaml_EMIT_DOCUMENT_START_STATE // Expect DOCUMENT-START or STREAM-END. + yaml_EMIT_DOCUMENT_CONTENT_STATE // Expect the content of a document. + yaml_EMIT_DOCUMENT_END_STATE // Expect DOCUMENT-END. + yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a flow sequence. + yaml_EMIT_FLOW_SEQUENCE_TRAIL_ITEM_STATE // Expect the next item of a flow sequence, with the comma already written out + yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE // Expect an item of a flow sequence. + yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE // Expect the first key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_TRAIL_KEY_STATE // Expect the next key of a flow mapping, with the comma already written out + yaml_EMIT_FLOW_MAPPING_KEY_STATE // Expect a key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a flow mapping. + yaml_EMIT_FLOW_MAPPING_VALUE_STATE // Expect a value of a flow mapping. + yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE // Expect the first item of a block sequence. + yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE // Expect an item of a block sequence. + yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE // Expect the first key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_KEY_STATE // Expect the key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE // Expect a value for a simple key of a block mapping. + yaml_EMIT_BLOCK_MAPPING_VALUE_STATE // Expect a value of a block mapping. + yaml_EMIT_END_STATE // Expect nothing. +) + +// The emitter structure. +// +// All members are internal. Manage the structure using the @c yaml_emitter_ +// family of functions. +type yaml_emitter_t struct { + + // Error handling + + error yaml_error_type_t // Error type. + problem string // Error description. + + // Writer stuff + + write_handler yaml_write_handler_t // Write handler. + + output_buffer *[]byte // String output data. + output_writer io.Writer // File output data. + + buffer []byte // The working buffer. + buffer_pos int // The current position of the buffer. + + raw_buffer []byte // The raw buffer. + raw_buffer_pos int // The current position of the buffer. + + encoding yaml_encoding_t // The stream encoding. + + // Emitter stuff + + canonical bool // If the output is in the canonical style? + best_indent int // The number of indentation spaces. + best_width int // The preferred width of the output lines. + unicode bool // Allow unescaped non-ASCII characters? + line_break yaml_break_t // The preferred line break. + + state yaml_emitter_state_t // The current emitter state. + states []yaml_emitter_state_t // The stack of states. + + events []yaml_event_t // The event queue. + events_head int // The head of the event queue. + + indents []int // The stack of indentation levels. + + tag_directives []yaml_tag_directive_t // The list of tag directives. + + indent int // The current indentation level. + + compact_sequence_indent bool // Is '- ' is considered part of the indentation for sequence elements? + + flow_level int // The current flow level. + + root_context bool // Is it the document root context? + sequence_context bool // Is it a sequence context? + mapping_context bool // Is it a mapping context? + simple_key_context bool // Is it a simple mapping key context? + + line int // The current line. + column int // The current column. + whitespace bool // If the last character was a whitespace? + indention bool // If the last character was an indentation character (' ', '-', '?', ':')? + open_ended bool // If an explicit document end is required? + + space_above bool // Is there's an empty line above? + foot_indent int // The indent used to write the foot comment above, or -1 if none. + + // Anchor analysis. + anchor_data struct { + anchor []byte // The anchor value. + alias bool // Is it an alias? + } + + // Tag analysis. + tag_data struct { + handle []byte // The tag handle. + suffix []byte // The tag suffix. + } + + // Scalar analysis. + scalar_data struct { + value []byte // The scalar value. + multiline bool // Does the scalar contain line breaks? + flow_plain_allowed bool // Can the scalar be expessed in the flow plain style? + block_plain_allowed bool // Can the scalar be expressed in the block plain style? + single_quoted_allowed bool // Can the scalar be expressed in the single quoted style? + block_allowed bool // Can the scalar be expressed in the literal or folded styles? + style yaml_scalar_style_t // The output style. + } + + // Comments + head_comment []byte + line_comment []byte + foot_comment []byte + tail_comment []byte + + key_line_comment []byte + + // Dumper stuff + + opened bool // If the stream was already opened? + closed bool // If the stream was already closed? + + // The information associated with the document nodes. + anchors *struct { + references int // The number of references. + anchor int // The anchor id. + serialized bool // If the node has been emitted? + } + + last_anchor_id int // The last assigned anchor id. + + document *yaml_document_t // The currently emitted document. +} diff --git a/vendor/go.yaml.in/yaml/v3/yamlprivateh.go b/vendor/go.yaml.in/yaml/v3/yamlprivateh.go new file mode 100644 index 0000000000..dea1ba9610 --- /dev/null +++ b/vendor/go.yaml.in/yaml/v3/yamlprivateh.go @@ -0,0 +1,198 @@ +// +// Copyright (c) 2011-2019 Canonical Ltd +// Copyright (c) 2006-2010 Kirill Simonov +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +package yaml + +const ( + // The size of the input raw buffer. + input_raw_buffer_size = 512 + + // The size of the input buffer. + // It should be possible to decode the whole raw buffer. + input_buffer_size = input_raw_buffer_size * 3 + + // The size of the output buffer. + output_buffer_size = 128 + + // The size of the output raw buffer. + // It should be possible to encode the whole output buffer. + output_raw_buffer_size = (output_buffer_size*2 + 2) + + // The size of other stacks and queues. + initial_stack_size = 16 + initial_queue_size = 16 + initial_string_size = 16 +) + +// Check if the character at the specified position is an alphabetical +// character, a digit, '_', or '-'. +func is_alpha(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'Z' || b[i] >= 'a' && b[i] <= 'z' || b[i] == '_' || b[i] == '-' +} + +// Check if the character at the specified position is a digit. +func is_digit(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' +} + +// Get the value of a digit. +func as_digit(b []byte, i int) int { + return int(b[i]) - '0' +} + +// Check if the character at the specified position is a hex-digit. +func is_hex(b []byte, i int) bool { + return b[i] >= '0' && b[i] <= '9' || b[i] >= 'A' && b[i] <= 'F' || b[i] >= 'a' && b[i] <= 'f' +} + +// Get the value of a hex-digit. +func as_hex(b []byte, i int) int { + bi := b[i] + if bi >= 'A' && bi <= 'F' { + return int(bi) - 'A' + 10 + } + if bi >= 'a' && bi <= 'f' { + return int(bi) - 'a' + 10 + } + return int(bi) - '0' +} + +// Check if the character is ASCII. +func is_ascii(b []byte, i int) bool { + return b[i] <= 0x7F +} + +// Check if the character at the start of the buffer can be printed unescaped. +func is_printable(b []byte, i int) bool { + return ((b[i] == 0x0A) || // . == #x0A + (b[i] >= 0x20 && b[i] <= 0x7E) || // #x20 <= . <= #x7E + (b[i] == 0xC2 && b[i+1] >= 0xA0) || // #0xA0 <= . <= #xD7FF + (b[i] > 0xC2 && b[i] < 0xED) || + (b[i] == 0xED && b[i+1] < 0xA0) || + (b[i] == 0xEE) || + (b[i] == 0xEF && // #xE000 <= . <= #xFFFD + !(b[i+1] == 0xBB && b[i+2] == 0xBF) && // && . != #xFEFF + !(b[i+1] == 0xBF && (b[i+2] == 0xBE || b[i+2] == 0xBF)))) +} + +// Check if the character at the specified position is NUL. +func is_z(b []byte, i int) bool { + return b[i] == 0x00 +} + +// Check if the beginning of the buffer is a BOM. +func is_bom(b []byte, i int) bool { + return b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF +} + +// Check if the character at the specified position is space. +func is_space(b []byte, i int) bool { + return b[i] == ' ' +} + +// Check if the character at the specified position is tab. +func is_tab(b []byte, i int) bool { + return b[i] == '\t' +} + +// Check if the character at the specified position is blank (space or tab). +func is_blank(b []byte, i int) bool { + //return is_space(b, i) || is_tab(b, i) + return b[i] == ' ' || b[i] == '\t' +} + +// Check if the character at the specified position is a line break. +func is_break(b []byte, i int) bool { + return (b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9) // PS (#x2029) +} + +func is_crlf(b []byte, i int) bool { + return b[i] == '\r' && b[i+1] == '\n' +} + +// Check if the character is a line break or NUL. +func is_breakz(b []byte, i int) bool { + //return is_break(b, i) || is_z(b, i) + return ( + // is_break: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + // is_z: + b[i] == 0) +} + +// Check if the character is a line break, space, or NUL. +func is_spacez(b []byte, i int) bool { + //return is_space(b, i) || is_breakz(b, i) + return ( + // is_space: + b[i] == ' ' || + // is_breakz: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + b[i] == 0) +} + +// Check if the character is a line break, space, tab, or NUL. +func is_blankz(b []byte, i int) bool { + //return is_blank(b, i) || is_breakz(b, i) + return ( + // is_blank: + b[i] == ' ' || b[i] == '\t' || + // is_breakz: + b[i] == '\r' || // CR (#xD) + b[i] == '\n' || // LF (#xA) + b[i] == 0xC2 && b[i+1] == 0x85 || // NEL (#x85) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA8 || // LS (#x2028) + b[i] == 0xE2 && b[i+1] == 0x80 && b[i+2] == 0xA9 || // PS (#x2029) + b[i] == 0) +} + +// Determine the width of the character. +func width(b byte) int { + // Don't replace these by a switch without first + // confirming that it is being inlined. + if b&0x80 == 0x00 { + return 1 + } + if b&0xE0 == 0xC0 { + return 2 + } + if b&0xF0 == 0xE0 { + return 3 + } + if b&0xF8 == 0xF0 { + return 4 + } + return 0 + +} diff --git a/vendor/golang.org/x/crypto/curve25519/curve25519.go b/vendor/golang.org/x/crypto/curve25519/curve25519.go index 21ca3b2ee4..8ff087df4c 100644 --- a/vendor/golang.org/x/crypto/curve25519/curve25519.go +++ b/vendor/golang.org/x/crypto/curve25519/curve25519.go @@ -36,7 +36,7 @@ func ScalarBaseMult(dst, scalar *[32]byte) { curve := ecdh.X25519() priv, err := curve.NewPrivateKey(scalar[:]) if err != nil { - panic("curve25519: internal error: scalarBaseMult was not 32 bytes") + panic("curve25519: " + err.Error()) } copy(dst[:], priv.PublicKey().Bytes()) } diff --git a/vendor/golang.org/x/crypto/ssh/common.go b/vendor/golang.org/x/crypto/ssh/common.go index f2ec0896c2..8bfad16c41 100644 --- a/vendor/golang.org/x/crypto/ssh/common.go +++ b/vendor/golang.org/x/crypto/ssh/common.go @@ -83,6 +83,7 @@ var ( // supportedKexAlgos specifies key-exchange algorithms implemented by this // package in preference order, excluding those with security issues. supportedKexAlgos = []string{ + KeyExchangeMLKEM768X25519, KeyExchangeCurve25519, KeyExchangeECDHP256, KeyExchangeECDHP384, @@ -94,6 +95,7 @@ var ( // defaultKexAlgos specifies the default preference for key-exchange // algorithms in preference order. defaultKexAlgos = []string{ + KeyExchangeMLKEM768X25519, KeyExchangeCurve25519, KeyExchangeECDHP256, KeyExchangeECDHP384, diff --git a/vendor/golang.org/x/crypto/ssh/kex.go b/vendor/golang.org/x/crypto/ssh/kex.go index cf388a92aa..78aaf03103 100644 --- a/vendor/golang.org/x/crypto/ssh/kex.go +++ b/vendor/golang.org/x/crypto/ssh/kex.go @@ -9,7 +9,6 @@ import ( "crypto/ecdsa" "crypto/elliptic" "crypto/rand" - "crypto/subtle" "encoding/binary" "errors" "fmt" @@ -439,6 +438,7 @@ func init() { kexAlgoMap[keyExchangeCurve25519LibSSH] = &curve25519sha256{} kexAlgoMap[InsecureKeyExchangeDHGEXSHA1] = &dhGEXSHA{hashFunc: crypto.SHA1} kexAlgoMap[KeyExchangeDHGEXSHA256] = &dhGEXSHA{hashFunc: crypto.SHA256} + kexAlgoMap[KeyExchangeMLKEM768X25519] = &mlkem768WithCurve25519sha256{} } // curve25519sha256 implements the curve25519-sha256 (formerly known as @@ -454,15 +454,17 @@ func (kp *curve25519KeyPair) generate(rand io.Reader) error { if _, err := io.ReadFull(rand, kp.priv[:]); err != nil { return err } - curve25519.ScalarBaseMult(&kp.pub, &kp.priv) + p, err := curve25519.X25519(kp.priv[:], curve25519.Basepoint) + if err != nil { + return fmt.Errorf("curve25519: %w", err) + } + if len(p) != 32 { + return fmt.Errorf("curve25519: internal error: X25519 returned %d bytes, expected 32", len(p)) + } + copy(kp.pub[:], p) return nil } -// curve25519Zeros is just an array of 32 zero bytes so that we have something -// convenient to compare against in order to reject curve25519 points with the -// wrong order. -var curve25519Zeros [32]byte - func (kex *curve25519sha256) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) { var kp curve25519KeyPair if err := kp.generate(rand); err != nil { @@ -485,11 +487,9 @@ func (kex *curve25519sha256) Client(c packetConn, rand io.Reader, magics *handsh return nil, errors.New("ssh: peer's curve25519 public value has wrong length") } - var servPub, secret [32]byte - copy(servPub[:], reply.EphemeralPubKey) - curve25519.ScalarMult(&secret, &kp.priv, &servPub) - if subtle.ConstantTimeCompare(secret[:], curve25519Zeros[:]) == 1 { - return nil, errors.New("ssh: peer's curve25519 public value has wrong order") + secret, err := curve25519.X25519(kp.priv[:], reply.EphemeralPubKey) + if err != nil { + return nil, fmt.Errorf("ssh: peer's curve25519 public value is not valid: %w", err) } h := crypto.SHA256.New() @@ -531,11 +531,9 @@ func (kex *curve25519sha256) Server(c packetConn, rand io.Reader, magics *handsh return nil, err } - var clientPub, secret [32]byte - copy(clientPub[:], kexInit.ClientPubKey) - curve25519.ScalarMult(&secret, &kp.priv, &clientPub) - if subtle.ConstantTimeCompare(secret[:], curve25519Zeros[:]) == 1 { - return nil, errors.New("ssh: peer's curve25519 public value has wrong order") + secret, err := curve25519.X25519(kp.priv[:], kexInit.ClientPubKey) + if err != nil { + return nil, fmt.Errorf("ssh: peer's curve25519 public value is not valid: %w", err) } hostKeyBytes := priv.PublicKey().Marshal() diff --git a/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go b/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go index c022e411f0..1ebd7e6da2 100644 --- a/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go +++ b/vendor/golang.org/x/crypto/ssh/knownhosts/knownhosts.go @@ -421,20 +421,26 @@ func New(files ...string) (ssh.HostKeyCallback, error) { return certChecker.CheckHostKey, nil } -// Normalize normalizes an address into the form used in known_hosts +// Normalize normalizes an address into the form used in known_hosts. Supports +// IPv4, hostnames, bracketed IPv6. Any other non-standard formats are returned +// with minimal transformation. func Normalize(address string) string { + const defaultSSHPort = "22" + host, port, err := net.SplitHostPort(address) if err != nil { host = address - port = "22" + port = defaultSSHPort + } + + if strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]") { + host = host[1 : len(host)-1] } - entry := host - if port != "22" { - entry = "[" + entry + "]:" + port - } else if strings.Contains(host, ":") && !strings.HasPrefix(host, "[") { - entry = "[" + entry + "]" + + if port == defaultSSHPort { + return host } - return entry + return "[" + host + "]:" + port } // Line returns a line to add append to the known_hosts files. diff --git a/vendor/golang.org/x/crypto/ssh/mlkem.go b/vendor/golang.org/x/crypto/ssh/mlkem.go index 657e1079d4..ddc0ed1fc0 100644 --- a/vendor/golang.org/x/crypto/ssh/mlkem.go +++ b/vendor/golang.org/x/crypto/ssh/mlkem.go @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build go1.24 - package ssh import ( @@ -13,23 +11,10 @@ import ( "errors" "fmt" "io" - "runtime" - "slices" "golang.org/x/crypto/curve25519" ) -func init() { - // After Go 1.24rc1 mlkem swapped the order of return values of Encapsulate. - // See #70950. - if runtime.Version() == "go1.24rc1" { - return - } - supportedKexAlgos = slices.Insert(supportedKexAlgos, 0, KeyExchangeMLKEM768X25519) - defaultKexAlgos = slices.Insert(defaultKexAlgos, 0, KeyExchangeMLKEM768X25519) - kexAlgoMap[KeyExchangeMLKEM768X25519] = &mlkem768WithCurve25519sha256{} -} - // mlkem768WithCurve25519sha256 implements the hybrid ML-KEM768 with // curve25519-sha256 key exchange method, as described by // draft-kampanakis-curdle-ssh-pq-ke-05 section 2.3.3. diff --git a/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go b/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go deleted file mode 100644 index 73687de748..0000000000 --- a/vendor/golang.org/x/sys/plan9/pwd_go15_plan9.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build go1.5 - -package plan9 - -import "syscall" - -func fixwd() { - syscall.Fixwd() -} - -func Getwd() (wd string, err error) { - return syscall.Getwd() -} - -func Chdir(path string) error { - return syscall.Chdir(path) -} diff --git a/vendor/golang.org/x/sys/plan9/pwd_plan9.go b/vendor/golang.org/x/sys/plan9/pwd_plan9.go index fb94582184..7a76489db1 100644 --- a/vendor/golang.org/x/sys/plan9/pwd_plan9.go +++ b/vendor/golang.org/x/sys/plan9/pwd_plan9.go @@ -2,22 +2,18 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !go1.5 - package plan9 +import "syscall" + func fixwd() { + syscall.Fixwd() } func Getwd() (wd string, err error) { - fd, err := open(".", O_RDONLY) - if err != nil { - return "", err - } - defer Close(fd) - return Fd2path(fd) + return syscall.Getwd() } func Chdir(path string) error { - return chdir(path) + return syscall.Chdir(path) } diff --git a/vendor/golang.org/x/sys/unix/affinity_linux.go b/vendor/golang.org/x/sys/unix/affinity_linux.go index 6e5c81acd0..3c7a6d6e2f 100644 --- a/vendor/golang.org/x/sys/unix/affinity_linux.go +++ b/vendor/golang.org/x/sys/unix/affinity_linux.go @@ -38,9 +38,7 @@ func SchedSetaffinity(pid int, set *CPUSet) error { // Zero clears the set s, so that it contains no CPUs. func (s *CPUSet) Zero() { - for i := range s { - s[i] = 0 - } + clear(s[:]) } func cpuBitsIndex(cpu int) int { diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index abc3955477..18a3d9bdab 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -629,7 +629,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Kill(pid int, signum syscall.Signal) (err error) //sys Lchown(path string, uid int, gid int) (err error) //sys Link(path string, link string) (err error) -//sys Listen(s int, backlog int) (err error) = libsocket.__xnet_llisten +//sys Listen(s int, backlog int) (err error) = libsocket.__xnet_listen //sys Lstat(path string, stat *Stat_t) (err error) //sys Madvise(b []byte, advice int) (err error) //sys Mkdir(path string, mode uint32) (err error) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index c6545413c4..b4609c20c2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -72,7 +72,7 @@ import ( //go:cgo_import_dynamic libc_kill kill "libc.so" //go:cgo_import_dynamic libc_lchown lchown "libc.so" //go:cgo_import_dynamic libc_link link "libc.so" -//go:cgo_import_dynamic libc___xnet_llisten __xnet_llisten "libsocket.so" +//go:cgo_import_dynamic libc___xnet_listen __xnet_listen "libsocket.so" //go:cgo_import_dynamic libc_lstat lstat "libc.so" //go:cgo_import_dynamic libc_madvise madvise "libc.so" //go:cgo_import_dynamic libc_mkdir mkdir "libc.so" @@ -221,7 +221,7 @@ import ( //go:linkname procKill libc_kill //go:linkname procLchown libc_lchown //go:linkname procLink libc_link -//go:linkname proc__xnet_llisten libc___xnet_llisten +//go:linkname proc__xnet_listen libc___xnet_listen //go:linkname procLstat libc_lstat //go:linkname procMadvise libc_madvise //go:linkname procMkdir libc_mkdir @@ -371,7 +371,7 @@ var ( procKill, procLchown, procLink, - proc__xnet_llisten, + proc__xnet_listen, procLstat, procMadvise, procMkdir, @@ -1178,7 +1178,7 @@ func Link(path string, link string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Listen(s int, backlog int) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0) + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_listen)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index cd236443f6..944e75a11c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -632,6 +632,8 @@ const ( IFA_FLAGS = 0x8 IFA_RT_PRIORITY = 0x9 IFA_TARGET_NETNSID = 0xa + IFAL_LABEL = 0x2 + IFAL_ADDRESS = 0x1 RT_SCOPE_UNIVERSE = 0x0 RT_SCOPE_SITE = 0xc8 RT_SCOPE_LINK = 0xfd @@ -689,6 +691,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfAddrlblmsg = 0xc SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 @@ -740,6 +743,15 @@ type IfAddrmsg struct { Index uint32 } +type IfAddrlblmsg struct { + Family uint8 + _ uint8 + Prefixlen uint8 + Flags uint8 + Index uint32 + Seq uint32 +} + type IfaCacheinfo struct { Prefered uint32 Valid uint32 @@ -3052,6 +3064,23 @@ const ( ) const ( + TCA_UNSPEC = 0x0 + TCA_KIND = 0x1 + TCA_OPTIONS = 0x2 + TCA_STATS = 0x3 + TCA_XSTATS = 0x4 + TCA_RATE = 0x5 + TCA_FCNT = 0x6 + TCA_STATS2 = 0x7 + TCA_STAB = 0x8 + TCA_PAD = 0x9 + TCA_DUMP_INVISIBLE = 0xa + TCA_CHAIN = 0xb + TCA_HW_OFFLOAD = 0xc + TCA_INGRESS_BLOCK = 0xd + TCA_EGRESS_BLOCK = 0xe + TCA_DUMP_FLAGS = 0xf + TCA_EXT_WARN_MSG = 0x10 RTNLGRP_NONE = 0x0 RTNLGRP_LINK = 0x1 RTNLGRP_NOTIFY = 0x2 @@ -3086,6 +3115,18 @@ const ( RTNLGRP_IPV6_MROUTE_R = 0x1f RTNLGRP_NEXTHOP = 0x20 RTNLGRP_BRVLAN = 0x21 + RTNLGRP_MCTP_IFADDR = 0x22 + RTNLGRP_TUNNEL = 0x23 + RTNLGRP_STATS = 0x24 + RTNLGRP_IPV4_MCADDR = 0x25 + RTNLGRP_IPV6_MCADDR = 0x26 + RTNLGRP_IPV6_ACADDR = 0x27 + TCA_ROOT_UNSPEC = 0x0 + TCA_ROOT_TAB = 0x1 + TCA_ROOT_FLAGS = 0x2 + TCA_ROOT_COUNT = 0x3 + TCA_ROOT_TIME_DELTA = 0x4 + TCA_ROOT_EXT_WARN_MSG = 0x5 ) type CapUserHeader struct { diff --git a/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go index fc1835d8a2..bc1ce4360b 100644 --- a/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/registry/zsyscall_windows.go @@ -52,7 +52,7 @@ var ( ) func regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) { - r0, _, _ := syscall.Syscall(procRegConnectRegistryW.Addr(), 3, uintptr(unsafe.Pointer(machinename)), uintptr(key), uintptr(unsafe.Pointer(result))) + r0, _, _ := syscall.SyscallN(procRegConnectRegistryW.Addr(), uintptr(unsafe.Pointer(machinename)), uintptr(key), uintptr(unsafe.Pointer(result))) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -60,7 +60,7 @@ func regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall } func regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) { - r0, _, _ := syscall.Syscall9(procRegCreateKeyExW.Addr(), 9, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(reserved), uintptr(unsafe.Pointer(class)), uintptr(options), uintptr(desired), uintptr(unsafe.Pointer(sa)), uintptr(unsafe.Pointer(result)), uintptr(unsafe.Pointer(disposition))) + r0, _, _ := syscall.SyscallN(procRegCreateKeyExW.Addr(), uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(reserved), uintptr(unsafe.Pointer(class)), uintptr(options), uintptr(desired), uintptr(unsafe.Pointer(sa)), uintptr(unsafe.Pointer(result)), uintptr(unsafe.Pointer(disposition))) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -68,7 +68,7 @@ func regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class * } func regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) { - r0, _, _ := syscall.Syscall(procRegDeleteKeyW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(subkey)), 0) + r0, _, _ := syscall.SyscallN(procRegDeleteKeyW.Addr(), uintptr(key), uintptr(unsafe.Pointer(subkey))) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -76,7 +76,7 @@ func regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) { } func regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) { - r0, _, _ := syscall.Syscall(procRegDeleteValueW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(name)), 0) + r0, _, _ := syscall.SyscallN(procRegDeleteValueW.Addr(), uintptr(key), uintptr(unsafe.Pointer(name))) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -84,7 +84,7 @@ func regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) { } func regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) { - r0, _, _ := syscall.Syscall9(procRegEnumValueW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)), 0) + r0, _, _ := syscall.SyscallN(procRegEnumValueW.Addr(), uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen))) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -92,7 +92,7 @@ func regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint3 } func regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) { - r0, _, _ := syscall.Syscall9(procRegLoadMUIStringW.Addr(), 7, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(unsafe.Pointer(buflenCopied)), uintptr(flags), uintptr(unsafe.Pointer(dir)), 0, 0) + r0, _, _ := syscall.SyscallN(procRegLoadMUIStringW.Addr(), uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(unsafe.Pointer(buflenCopied)), uintptr(flags), uintptr(unsafe.Pointer(dir))) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -100,7 +100,7 @@ func regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint } func regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) { - r0, _, _ := syscall.Syscall6(procRegSetValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(valueName)), uintptr(reserved), uintptr(vtype), uintptr(unsafe.Pointer(buf)), uintptr(bufsize)) + r0, _, _ := syscall.SyscallN(procRegSetValueExW.Addr(), uintptr(key), uintptr(unsafe.Pointer(valueName)), uintptr(reserved), uintptr(vtype), uintptr(unsafe.Pointer(buf)), uintptr(bufsize)) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -108,7 +108,7 @@ func regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype } func expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size)) + r0, _, e1 := syscall.SyscallN(procExpandEnvironmentStringsW.Addr(), uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size)) n = uint32(r0) if n == 0 { err = errnoErr(e1) diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index 958bcf47a3..993a2297db 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -1976,6 +1976,12 @@ const ( SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1 ) +// FILE_ZERO_DATA_INFORMATION from winioctl.h +type FileZeroDataInformation struct { + FileOffset int64 + BeyondFinalZero int64 +} + const ( ComputerNameNetBIOS = 0 ComputerNameDnsHostname = 1 diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index a58bc48b8e..641a5f4b77 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -546,25 +546,25 @@ var ( ) func cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) { - r0, _, _ := syscall.Syscall6(procCM_Get_DevNode_Status.Addr(), 4, uintptr(unsafe.Pointer(status)), uintptr(unsafe.Pointer(problemNumber)), uintptr(devInst), uintptr(flags), 0, 0) + r0, _, _ := syscall.SyscallN(procCM_Get_DevNode_Status.Addr(), uintptr(unsafe.Pointer(status)), uintptr(unsafe.Pointer(problemNumber)), uintptr(devInst), uintptr(flags)) ret = CONFIGRET(r0) return } func cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) { - r0, _, _ := syscall.Syscall6(procCM_Get_Device_Interface_ListW.Addr(), 5, uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(unsafe.Pointer(buffer)), uintptr(bufferLen), uintptr(flags), 0) + r0, _, _ := syscall.SyscallN(procCM_Get_Device_Interface_ListW.Addr(), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(unsafe.Pointer(buffer)), uintptr(bufferLen), uintptr(flags)) ret = CONFIGRET(r0) return } func cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) { - r0, _, _ := syscall.Syscall6(procCM_Get_Device_Interface_List_SizeW.Addr(), 4, uintptr(unsafe.Pointer(len)), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(flags), 0, 0) + r0, _, _ := syscall.SyscallN(procCM_Get_Device_Interface_List_SizeW.Addr(), uintptr(unsafe.Pointer(len)), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(flags)) ret = CONFIGRET(r0) return } func cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) { - r0, _, _ := syscall.Syscall(procCM_MapCrToWin32Err.Addr(), 2, uintptr(configRet), uintptr(defaultWin32Error), 0) + r0, _, _ := syscall.SyscallN(procCM_MapCrToWin32Err.Addr(), uintptr(configRet), uintptr(defaultWin32Error)) ret = Errno(r0) return } @@ -574,7 +574,7 @@ func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, if resetToDefault { _p0 = 1 } - r1, _, e1 := syscall.Syscall6(procAdjustTokenGroups.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) + r1, _, e1 := syscall.SyscallN(procAdjustTokenGroups.Addr(), uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) if r1 == 0 { err = errnoErr(e1) } @@ -586,7 +586,7 @@ func AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tok if disableAllPrivileges { _p0 = 1 } - r1, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) + r1, _, e1 := syscall.SyscallN(procAdjustTokenPrivileges.Addr(), uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) if r1 == 0 { err = errnoErr(e1) } @@ -594,7 +594,7 @@ func AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tok } func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) { - r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0) + r1, _, e1 := syscall.SyscallN(procAllocateAndInitializeSid.Addr(), uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid))) if r1 == 0 { err = errnoErr(e1) } @@ -602,7 +602,7 @@ func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, s } func buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) { - r0, _, _ := syscall.Syscall9(procBuildSecurityDescriptorW.Addr(), 9, uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor))) + r0, _, _ := syscall.SyscallN(procBuildSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -610,7 +610,7 @@ func buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries } func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) { - r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info))) + r1, _, e1 := syscall.SyscallN(procChangeServiceConfig2W.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info))) if r1 == 0 { err = errnoErr(e1) } @@ -618,7 +618,7 @@ func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err err } func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) { - r1, _, e1 := syscall.Syscall12(procChangeServiceConfigW.Addr(), 11, uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)), 0) + r1, _, e1 := syscall.SyscallN(procChangeServiceConfigW.Addr(), uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName))) if r1 == 0 { err = errnoErr(e1) } @@ -626,7 +626,7 @@ func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, e } func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) { - r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember))) + r1, _, e1 := syscall.SyscallN(procCheckTokenMembership.Addr(), uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember))) if r1 == 0 { err = errnoErr(e1) } @@ -634,7 +634,7 @@ func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) ( } func CloseServiceHandle(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0) + r1, _, e1 := syscall.SyscallN(procCloseServiceHandle.Addr(), uintptr(handle)) if r1 == 0 { err = errnoErr(e1) } @@ -642,7 +642,7 @@ func CloseServiceHandle(handle Handle) (err error) { } func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) { - r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status))) + r1, _, e1 := syscall.SyscallN(procControlService.Addr(), uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status))) if r1 == 0 { err = errnoErr(e1) } @@ -650,7 +650,7 @@ func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err } func convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)), 0) + r1, _, e1 := syscall.SyscallN(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen))) if r1 == 0 { err = errnoErr(e1) } @@ -658,7 +658,7 @@ func convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR } func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) { - r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0) + r1, _, e1 := syscall.SyscallN(procConvertSidToStringSidW.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid))) if r1 == 0 { err = errnoErr(e1) } @@ -675,7 +675,7 @@ func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision ui } func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0) + r1, _, e1 := syscall.SyscallN(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size))) if r1 == 0 { err = errnoErr(e1) } @@ -683,7 +683,7 @@ func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision } func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) { - r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0) + r1, _, e1 := syscall.SyscallN(procConvertStringSidToSidW.Addr(), uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid))) if r1 == 0 { err = errnoErr(e1) } @@ -691,7 +691,7 @@ func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) { } func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) { - r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid))) + r1, _, e1 := syscall.SyscallN(procCopySid.Addr(), uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid))) if r1 == 0 { err = errnoErr(e1) } @@ -703,7 +703,7 @@ func CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, proc if inheritHandles { _p0 = 1 } - r1, _, e1 := syscall.Syscall12(procCreateProcessAsUserW.Addr(), 11, uintptr(token), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0) + r1, _, e1 := syscall.SyscallN(procCreateProcessAsUserW.Addr(), uintptr(token), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo))) if r1 == 0 { err = errnoErr(e1) } @@ -711,7 +711,7 @@ func CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, proc } func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0) + r0, _, e1 := syscall.SyscallN(procCreateServiceW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password))) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -720,7 +720,7 @@ func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access } func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0) + r1, _, e1 := syscall.SyscallN(procCreateWellKnownSid.Addr(), uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid))) if r1 == 0 { err = errnoErr(e1) } @@ -728,7 +728,7 @@ func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, s } func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0) + r1, _, e1 := syscall.SyscallN(procCryptAcquireContextW.Addr(), uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags)) if r1 == 0 { err = errnoErr(e1) } @@ -736,7 +736,7 @@ func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16 } func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) { - r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf))) + r1, _, e1 := syscall.SyscallN(procCryptGenRandom.Addr(), uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf))) if r1 == 0 { err = errnoErr(e1) } @@ -744,7 +744,7 @@ func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) { } func CryptReleaseContext(provhandle Handle, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0) + r1, _, e1 := syscall.SyscallN(procCryptReleaseContext.Addr(), uintptr(provhandle), uintptr(flags)) if r1 == 0 { err = errnoErr(e1) } @@ -752,7 +752,7 @@ func CryptReleaseContext(provhandle Handle, flags uint32) (err error) { } func DeleteService(service Handle) (err error) { - r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0) + r1, _, e1 := syscall.SyscallN(procDeleteService.Addr(), uintptr(service)) if r1 == 0 { err = errnoErr(e1) } @@ -760,7 +760,7 @@ func DeleteService(service Handle) (err error) { } func DeregisterEventSource(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0) + r1, _, e1 := syscall.SyscallN(procDeregisterEventSource.Addr(), uintptr(handle)) if r1 == 0 { err = errnoErr(e1) } @@ -768,7 +768,7 @@ func DeregisterEventSource(handle Handle) (err error) { } func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) { - r1, _, e1 := syscall.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken))) + r1, _, e1 := syscall.SyscallN(procDuplicateTokenEx.Addr(), uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken))) if r1 == 0 { err = errnoErr(e1) } @@ -776,7 +776,7 @@ func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes } func EnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procEnumDependentServicesW.Addr(), 6, uintptr(service), uintptr(activityState), uintptr(unsafe.Pointer(services)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned))) + r1, _, e1 := syscall.SyscallN(procEnumDependentServicesW.Addr(), uintptr(service), uintptr(activityState), uintptr(unsafe.Pointer(services)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned))) if r1 == 0 { err = errnoErr(e1) } @@ -784,7 +784,7 @@ func EnumDependentServices(service Handle, activityState uint32, services *ENUM_ } func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) { - r1, _, e1 := syscall.Syscall12(procEnumServicesStatusExW.Addr(), 10, uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)), 0, 0) + r1, _, e1 := syscall.SyscallN(procEnumServicesStatusExW.Addr(), uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName))) if r1 == 0 { err = errnoErr(e1) } @@ -792,13 +792,13 @@ func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serv } func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) { - r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0) + r0, _, _ := syscall.SyscallN(procEqualSid.Addr(), uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2))) isEqual = r0 != 0 return } func FreeSid(sid *SID) (err error) { - r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + r1, _, e1 := syscall.SyscallN(procFreeSid.Addr(), uintptr(unsafe.Pointer(sid))) if r1 != 0 { err = errnoErr(e1) } @@ -806,7 +806,7 @@ func FreeSid(sid *SID) (err error) { } func GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) { - r1, _, e1 := syscall.Syscall(procGetAce.Addr(), 3, uintptr(unsafe.Pointer(acl)), uintptr(aceIndex), uintptr(unsafe.Pointer(pAce))) + r1, _, e1 := syscall.SyscallN(procGetAce.Addr(), uintptr(unsafe.Pointer(acl)), uintptr(aceIndex), uintptr(unsafe.Pointer(pAce))) if r1 == 0 { err = errnoErr(e1) } @@ -814,7 +814,7 @@ func GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) { } func GetLengthSid(sid *SID) (len uint32) { - r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + r0, _, _ := syscall.SyscallN(procGetLengthSid.Addr(), uintptr(unsafe.Pointer(sid))) len = uint32(r0) return } @@ -829,7 +829,7 @@ func getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, security } func _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { - r0, _, _ := syscall.Syscall9(procGetNamedSecurityInfoW.Addr(), 8, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0) + r0, _, _ := syscall.SyscallN(procGetNamedSecurityInfoW.Addr(), uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -837,7 +837,7 @@ func _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securi } func getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision))) + r1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision))) if r1 == 0 { err = errnoErr(e1) } @@ -853,7 +853,7 @@ func getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl if *daclDefaulted { _p1 = 1 } - r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorDacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1))) *daclPresent = _p0 != 0 *daclDefaulted = _p1 != 0 if r1 == 0 { @@ -867,7 +867,7 @@ func getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefau if *groupDefaulted { _p0 = 1 } - r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0))) + r1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorGroup.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0))) *groupDefaulted = _p0 != 0 if r1 == 0 { err = errnoErr(e1) @@ -876,7 +876,7 @@ func getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefau } func getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) { - r0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0) + r0, _, _ := syscall.SyscallN(procGetSecurityDescriptorLength.Addr(), uintptr(unsafe.Pointer(sd))) len = uint32(r0) return } @@ -886,7 +886,7 @@ func getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefau if *ownerDefaulted { _p0 = 1 } - r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0))) + r1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorOwner.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0))) *ownerDefaulted = _p0 != 0 if r1 == 0 { err = errnoErr(e1) @@ -895,7 +895,7 @@ func getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefau } func getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) { - r0, _, _ := syscall.Syscall(procGetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0) + r0, _, _ := syscall.SyscallN(procGetSecurityDescriptorRMControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -911,7 +911,7 @@ func getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl if *saclDefaulted { _p1 = 1 } - r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorSacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1))) *saclPresent = _p0 != 0 *saclDefaulted = _p1 != 0 if r1 == 0 { @@ -921,7 +921,7 @@ func getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl } func getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { - r0, _, _ := syscall.Syscall9(procGetSecurityInfo.Addr(), 8, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0) + r0, _, _ := syscall.SyscallN(procGetSecurityInfo.Addr(), uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -929,25 +929,25 @@ func getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformati } func getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) { - r0, _, _ := syscall.Syscall(procGetSidIdentifierAuthority.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + r0, _, _ := syscall.SyscallN(procGetSidIdentifierAuthority.Addr(), uintptr(unsafe.Pointer(sid))) authority = (*SidIdentifierAuthority)(unsafe.Pointer(r0)) return } func getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) { - r0, _, _ := syscall.Syscall(procGetSidSubAuthority.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(index), 0) + r0, _, _ := syscall.SyscallN(procGetSidSubAuthority.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(index)) subAuthority = (*uint32)(unsafe.Pointer(r0)) return } func getSidSubAuthorityCount(sid *SID) (count *uint8) { - r0, _, _ := syscall.Syscall(procGetSidSubAuthorityCount.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + r0, _, _ := syscall.SyscallN(procGetSidSubAuthorityCount.Addr(), uintptr(unsafe.Pointer(sid))) count = (*uint8)(unsafe.Pointer(r0)) return } func GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0) + r1, _, e1 := syscall.SyscallN(procGetTokenInformation.Addr(), uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen))) if r1 == 0 { err = errnoErr(e1) } @@ -955,7 +955,7 @@ func GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint } func ImpersonateSelf(impersonationlevel uint32) (err error) { - r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0) + r1, _, e1 := syscall.SyscallN(procImpersonateSelf.Addr(), uintptr(impersonationlevel)) if r1 == 0 { err = errnoErr(e1) } @@ -963,7 +963,7 @@ func ImpersonateSelf(impersonationlevel uint32) (err error) { } func initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) { - r1, _, e1 := syscall.Syscall(procInitializeSecurityDescriptor.Addr(), 2, uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision), 0) + r1, _, e1 := syscall.SyscallN(procInitializeSecurityDescriptor.Addr(), uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision)) if r1 == 0 { err = errnoErr(e1) } @@ -979,7 +979,7 @@ func InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint if rebootAfterShutdown { _p1 = 1 } - r1, _, e1 := syscall.Syscall6(procInitiateSystemShutdownExW.Addr(), 6, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason)) + r1, _, e1 := syscall.SyscallN(procInitiateSystemShutdownExW.Addr(), uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason)) if r1 == 0 { err = errnoErr(e1) } @@ -987,7 +987,7 @@ func InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint } func isTokenRestricted(tokenHandle Token) (ret bool, err error) { - r0, _, e1 := syscall.Syscall(procIsTokenRestricted.Addr(), 1, uintptr(tokenHandle), 0, 0) + r0, _, e1 := syscall.SyscallN(procIsTokenRestricted.Addr(), uintptr(tokenHandle)) ret = r0 != 0 if !ret { err = errnoErr(e1) @@ -996,25 +996,25 @@ func isTokenRestricted(tokenHandle Token) (ret bool, err error) { } func isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) { - r0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0) + r0, _, _ := syscall.SyscallN(procIsValidSecurityDescriptor.Addr(), uintptr(unsafe.Pointer(sd))) isValid = r0 != 0 return } func isValidSid(sid *SID) (isValid bool) { - r0, _, _ := syscall.Syscall(procIsValidSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + r0, _, _ := syscall.SyscallN(procIsValidSid.Addr(), uintptr(unsafe.Pointer(sid))) isValid = r0 != 0 return } func isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) { - r0, _, _ := syscall.Syscall(procIsWellKnownSid.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(sidType), 0) + r0, _, _ := syscall.SyscallN(procIsWellKnownSid.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(sidType)) isWellKnown = r0 != 0 return } func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) + r1, _, e1 := syscall.SyscallN(procLookupAccountNameW.Addr(), uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use))) if r1 == 0 { err = errnoErr(e1) } @@ -1022,7 +1022,7 @@ func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen } func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) + r1, _, e1 := syscall.SyscallN(procLookupAccountSidW.Addr(), uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use))) if r1 == 0 { err = errnoErr(e1) } @@ -1030,7 +1030,7 @@ func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint3 } func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) { - r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid))) + r1, _, e1 := syscall.SyscallN(procLookupPrivilegeValueW.Addr(), uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid))) if r1 == 0 { err = errnoErr(e1) } @@ -1038,7 +1038,7 @@ func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err err } func makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall12(procMakeAbsoluteSD.Addr(), 11, uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize)), 0) + r1, _, e1 := syscall.SyscallN(procMakeAbsoluteSD.Addr(), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize))) if r1 == 0 { err = errnoErr(e1) } @@ -1046,7 +1046,7 @@ func makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DE } func makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procMakeSelfRelativeSD.Addr(), 3, uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize))) + r1, _, e1 := syscall.SyscallN(procMakeSelfRelativeSD.Addr(), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize))) if r1 == 0 { err = errnoErr(e1) } @@ -1054,7 +1054,7 @@ func makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURIT } func NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) { - r0, _, _ := syscall.Syscall(procNotifyServiceStatusChangeW.Addr(), 3, uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier))) + r0, _, _ := syscall.SyscallN(procNotifyServiceStatusChangeW.Addr(), uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -1062,7 +1062,7 @@ func NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERV } func OpenProcessToken(process Handle, access uint32, token *Token) (err error) { - r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token))) + r1, _, e1 := syscall.SyscallN(procOpenProcessToken.Addr(), uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token))) if r1 == 0 { err = errnoErr(e1) } @@ -1070,7 +1070,7 @@ func OpenProcessToken(process Handle, access uint32, token *Token) (err error) { } func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access)) + r0, _, e1 := syscall.SyscallN(procOpenSCManagerW.Addr(), uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access)) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -1079,7 +1079,7 @@ func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (ha } func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access)) + r0, _, e1 := syscall.SyscallN(procOpenServiceW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access)) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -1092,7 +1092,7 @@ func OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token if openAsSelf { _p0 = 1 } - r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0) + r1, _, e1 := syscall.SyscallN(procOpenThreadToken.Addr(), uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token))) if r1 == 0 { err = errnoErr(e1) } @@ -1100,7 +1100,7 @@ func OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token } func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0) + r1, _, e1 := syscall.SyscallN(procQueryServiceConfig2W.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded))) if r1 == 0 { err = errnoErr(e1) } @@ -1108,7 +1108,7 @@ func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize } func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0) + r1, _, e1 := syscall.SyscallN(procQueryServiceConfigW.Addr(), uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded))) if r1 == 0 { err = errnoErr(e1) } @@ -1120,7 +1120,7 @@ func QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInf if err != nil { return } - r1, _, e1 := syscall.Syscall(procQueryServiceDynamicInformation.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(dynamicInfo)) + r1, _, e1 := syscall.SyscallN(procQueryServiceDynamicInformation.Addr(), uintptr(service), uintptr(infoLevel), uintptr(dynamicInfo)) if r1 == 0 { err = errnoErr(e1) } @@ -1128,7 +1128,7 @@ func QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInf } func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0) + r1, _, e1 := syscall.SyscallN(procQueryServiceLockStatusW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded))) if r1 == 0 { err = errnoErr(e1) } @@ -1136,7 +1136,7 @@ func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, b } func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) { - r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0) + r1, _, e1 := syscall.SyscallN(procQueryServiceStatus.Addr(), uintptr(service), uintptr(unsafe.Pointer(status))) if r1 == 0 { err = errnoErr(e1) } @@ -1144,7 +1144,7 @@ func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) { } func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procQueryServiceStatusEx.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0) + r1, _, e1 := syscall.SyscallN(procQueryServiceStatusEx.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded))) if r1 == 0 { err = errnoErr(e1) } @@ -1152,7 +1152,7 @@ func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize } func RegCloseKey(key Handle) (regerrno error) { - r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0) + r0, _, _ := syscall.SyscallN(procRegCloseKey.Addr(), uintptr(key)) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -1160,7 +1160,7 @@ func RegCloseKey(key Handle) (regerrno error) { } func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) { - r0, _, _ := syscall.Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0) + r0, _, _ := syscall.SyscallN(procRegEnumKeyExW.Addr(), uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime))) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -1176,7 +1176,7 @@ func RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, if asynchronous { _p1 = 1 } - r0, _, _ := syscall.Syscall6(procRegNotifyChangeKeyValue.Addr(), 5, uintptr(key), uintptr(_p0), uintptr(notifyFilter), uintptr(event), uintptr(_p1), 0) + r0, _, _ := syscall.SyscallN(procRegNotifyChangeKeyValue.Addr(), uintptr(key), uintptr(_p0), uintptr(notifyFilter), uintptr(event), uintptr(_p1)) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -1184,7 +1184,7 @@ func RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, } func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) { - r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0) + r0, _, _ := syscall.SyscallN(procRegOpenKeyExW.Addr(), uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result))) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -1192,7 +1192,7 @@ func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint } func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) { - r0, _, _ := syscall.Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime))) + r0, _, _ := syscall.SyscallN(procRegQueryInfoKeyW.Addr(), uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime))) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -1200,7 +1200,7 @@ func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint } func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) { - r0, _, _ := syscall.Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen))) + r0, _, _ := syscall.SyscallN(procRegQueryValueExW.Addr(), uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen))) if r0 != 0 { regerrno = syscall.Errno(r0) } @@ -1208,7 +1208,7 @@ func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32 } func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0) + r0, _, e1 := syscall.SyscallN(procRegisterEventSourceW.Addr(), uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName))) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -1217,7 +1217,7 @@ func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Hand } func RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procRegisterServiceCtrlHandlerExW.Addr(), 3, uintptr(unsafe.Pointer(serviceName)), uintptr(handlerProc), uintptr(context)) + r0, _, e1 := syscall.SyscallN(procRegisterServiceCtrlHandlerExW.Addr(), uintptr(unsafe.Pointer(serviceName)), uintptr(handlerProc), uintptr(context)) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -1226,7 +1226,7 @@ func RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, cont } func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData))) + r1, _, e1 := syscall.SyscallN(procReportEventW.Addr(), uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData))) if r1 == 0 { err = errnoErr(e1) } @@ -1234,7 +1234,7 @@ func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrS } func RevertToSelf() (err error) { - r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0) + r1, _, e1 := syscall.SyscallN(procRevertToSelf.Addr()) if r1 == 0 { err = errnoErr(e1) } @@ -1242,7 +1242,7 @@ func RevertToSelf() (err error) { } func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) { - r0, _, _ := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)), 0, 0) + r0, _, _ := syscall.SyscallN(procSetEntriesInAclW.Addr(), uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -1250,7 +1250,7 @@ func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCE } func SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) { - r1, _, e1 := syscall.Syscall(procSetKernelObjectSecurity.Addr(), 3, uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor))) + r1, _, e1 := syscall.SyscallN(procSetKernelObjectSecurity.Addr(), uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor))) if r1 == 0 { err = errnoErr(e1) } @@ -1267,7 +1267,7 @@ func SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, security } func _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { - r0, _, _ := syscall.Syscall9(procSetNamedSecurityInfoW.Addr(), 7, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0) + r0, _, _ := syscall.SyscallN(procSetNamedSecurityInfoW.Addr(), uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -1275,7 +1275,7 @@ func _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securi } func setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) { - r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet)) + r1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet)) if r1 == 0 { err = errnoErr(e1) } @@ -1291,7 +1291,7 @@ func setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl * if daclDefaulted { _p1 = 1 } - r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorDacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1)) if r1 == 0 { err = errnoErr(e1) } @@ -1303,7 +1303,7 @@ func setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaul if groupDefaulted { _p0 = 1 } - r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0)) + r1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorGroup.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0)) if r1 == 0 { err = errnoErr(e1) } @@ -1315,7 +1315,7 @@ func setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaul if ownerDefaulted { _p0 = 1 } - r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0)) + r1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorOwner.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0)) if r1 == 0 { err = errnoErr(e1) } @@ -1323,7 +1323,7 @@ func setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaul } func setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) { - syscall.Syscall(procSetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0) + syscall.SyscallN(procSetSecurityDescriptorRMControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl))) return } @@ -1336,7 +1336,7 @@ func setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl * if saclDefaulted { _p1 = 1 } - r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorSacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1)) if r1 == 0 { err = errnoErr(e1) } @@ -1344,7 +1344,7 @@ func setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl * } func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { - r0, _, _ := syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0) + r0, _, _ := syscall.SyscallN(procSetSecurityInfo.Addr(), uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -1352,7 +1352,7 @@ func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformati } func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) { - r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0) + r1, _, e1 := syscall.SyscallN(procSetServiceStatus.Addr(), uintptr(service), uintptr(unsafe.Pointer(serviceStatus))) if r1 == 0 { err = errnoErr(e1) } @@ -1360,7 +1360,7 @@ func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) } func SetThreadToken(thread *Handle, token Token) (err error) { - r1, _, e1 := syscall.Syscall(procSetThreadToken.Addr(), 2, uintptr(unsafe.Pointer(thread)), uintptr(token), 0) + r1, _, e1 := syscall.SyscallN(procSetThreadToken.Addr(), uintptr(unsafe.Pointer(thread)), uintptr(token)) if r1 == 0 { err = errnoErr(e1) } @@ -1368,7 +1368,7 @@ func SetThreadToken(thread *Handle, token Token) (err error) { } func SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetTokenInformation.Addr(), uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen)) if r1 == 0 { err = errnoErr(e1) } @@ -1376,7 +1376,7 @@ func SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint } func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) { - r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0) + r1, _, e1 := syscall.SyscallN(procStartServiceCtrlDispatcherW.Addr(), uintptr(unsafe.Pointer(serviceTable))) if r1 == 0 { err = errnoErr(e1) } @@ -1384,7 +1384,7 @@ func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) { } func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) { - r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors))) + r1, _, e1 := syscall.SyscallN(procStartServiceW.Addr(), uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors))) if r1 == 0 { err = errnoErr(e1) } @@ -1392,7 +1392,7 @@ func StartService(service Handle, numArgs uint32, argVectors **uint16) (err erro } func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) { - r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0) + r1, _, e1 := syscall.SyscallN(procCertAddCertificateContextToStore.Addr(), uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext))) if r1 == 0 { err = errnoErr(e1) } @@ -1400,7 +1400,7 @@ func CertAddCertificateContextToStore(store Handle, certContext *CertContext, ad } func CertCloseStore(store Handle, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0) + r1, _, e1 := syscall.SyscallN(procCertCloseStore.Addr(), uintptr(store), uintptr(flags)) if r1 == 0 { err = errnoErr(e1) } @@ -1408,7 +1408,7 @@ func CertCloseStore(store Handle, flags uint32) (err error) { } func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) { - r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen)) + r0, _, e1 := syscall.SyscallN(procCertCreateCertificateContext.Addr(), uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen)) context = (*CertContext)(unsafe.Pointer(r0)) if context == nil { err = errnoErr(e1) @@ -1417,7 +1417,7 @@ func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, en } func CertDeleteCertificateFromStore(certContext *CertContext) (err error) { - r1, _, e1 := syscall.Syscall(procCertDeleteCertificateFromStore.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0) + r1, _, e1 := syscall.SyscallN(procCertDeleteCertificateFromStore.Addr(), uintptr(unsafe.Pointer(certContext))) if r1 == 0 { err = errnoErr(e1) } @@ -1425,13 +1425,13 @@ func CertDeleteCertificateFromStore(certContext *CertContext) (err error) { } func CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) { - r0, _, _ := syscall.Syscall(procCertDuplicateCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0) + r0, _, _ := syscall.SyscallN(procCertDuplicateCertificateContext.Addr(), uintptr(unsafe.Pointer(certContext))) dupContext = (*CertContext)(unsafe.Pointer(r0)) return } func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) { - r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0) + r0, _, e1 := syscall.SyscallN(procCertEnumCertificatesInStore.Addr(), uintptr(store), uintptr(unsafe.Pointer(prevContext))) context = (*CertContext)(unsafe.Pointer(r0)) if context == nil { err = errnoErr(e1) @@ -1440,7 +1440,7 @@ func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (contex } func CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) { - r0, _, e1 := syscall.Syscall6(procCertFindCertificateInStore.Addr(), 6, uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevCertContext))) + r0, _, e1 := syscall.SyscallN(procCertFindCertificateInStore.Addr(), uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevCertContext))) cert = (*CertContext)(unsafe.Pointer(r0)) if cert == nil { err = errnoErr(e1) @@ -1449,7 +1449,7 @@ func CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags } func CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) { - r0, _, e1 := syscall.Syscall6(procCertFindChainInStore.Addr(), 6, uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevChainContext))) + r0, _, e1 := syscall.SyscallN(procCertFindChainInStore.Addr(), uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevChainContext))) certchain = (*CertChainContext)(unsafe.Pointer(r0)) if certchain == nil { err = errnoErr(e1) @@ -1458,18 +1458,18 @@ func CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint3 } func CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) { - r0, _, _ := syscall.Syscall(procCertFindExtension.Addr(), 3, uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions))) + r0, _, _ := syscall.SyscallN(procCertFindExtension.Addr(), uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions))) ret = (*CertExtension)(unsafe.Pointer(r0)) return } func CertFreeCertificateChain(ctx *CertChainContext) { - syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) + syscall.SyscallN(procCertFreeCertificateChain.Addr(), uintptr(unsafe.Pointer(ctx))) return } func CertFreeCertificateContext(ctx *CertContext) (err error) { - r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) + r1, _, e1 := syscall.SyscallN(procCertFreeCertificateContext.Addr(), uintptr(unsafe.Pointer(ctx))) if r1 == 0 { err = errnoErr(e1) } @@ -1477,7 +1477,7 @@ func CertFreeCertificateContext(ctx *CertContext) (err error) { } func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) { - r1, _, e1 := syscall.Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0) + r1, _, e1 := syscall.SyscallN(procCertGetCertificateChain.Addr(), uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx))) if r1 == 0 { err = errnoErr(e1) } @@ -1485,13 +1485,13 @@ func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, a } func CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) { - r0, _, _ := syscall.Syscall6(procCertGetNameStringW.Addr(), 6, uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size)) + r0, _, _ := syscall.SyscallN(procCertGetNameStringW.Addr(), uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size)) chars = uint32(r0) return } func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0) + r0, _, e1 := syscall.SyscallN(procCertOpenStore.Addr(), uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para)) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -1500,7 +1500,7 @@ func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptPr } func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) { - r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0) + r0, _, e1 := syscall.SyscallN(procCertOpenSystemStoreW.Addr(), uintptr(hprov), uintptr(unsafe.Pointer(name))) store = Handle(r0) if store == 0 { err = errnoErr(e1) @@ -1509,7 +1509,7 @@ func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) { } func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) { - r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0) + r1, _, e1 := syscall.SyscallN(procCertVerifyCertificateChainPolicy.Addr(), uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status))) if r1 == 0 { err = errnoErr(e1) } @@ -1521,7 +1521,7 @@ func CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, paramete if *callerFreeProvOrNCryptKey { _p0 = 1 } - r1, _, e1 := syscall.Syscall6(procCryptAcquireCertificatePrivateKey.Addr(), 6, uintptr(unsafe.Pointer(cert)), uintptr(flags), uintptr(parameters), uintptr(unsafe.Pointer(cryptProvOrNCryptKey)), uintptr(unsafe.Pointer(keySpec)), uintptr(unsafe.Pointer(&_p0))) + r1, _, e1 := syscall.SyscallN(procCryptAcquireCertificatePrivateKey.Addr(), uintptr(unsafe.Pointer(cert)), uintptr(flags), uintptr(parameters), uintptr(unsafe.Pointer(cryptProvOrNCryptKey)), uintptr(unsafe.Pointer(keySpec)), uintptr(unsafe.Pointer(&_p0))) *callerFreeProvOrNCryptKey = _p0 != 0 if r1 == 0 { err = errnoErr(e1) @@ -1530,7 +1530,7 @@ func CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, paramete } func CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procCryptDecodeObject.Addr(), 7, uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen)), 0, 0) + r1, _, e1 := syscall.SyscallN(procCryptDecodeObject.Addr(), uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen))) if r1 == 0 { err = errnoErr(e1) } @@ -1538,7 +1538,7 @@ func CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte } func CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) { - r1, _, e1 := syscall.Syscall9(procCryptProtectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0) + r1, _, e1 := syscall.SyscallN(procCryptProtectData.Addr(), uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut))) if r1 == 0 { err = errnoErr(e1) } @@ -1546,7 +1546,7 @@ func CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, } func CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) { - r1, _, e1 := syscall.Syscall12(procCryptQueryObject.Addr(), 11, uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context)), 0) + r1, _, e1 := syscall.SyscallN(procCryptQueryObject.Addr(), uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context))) if r1 == 0 { err = errnoErr(e1) } @@ -1554,7 +1554,7 @@ func CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentT } func CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) { - r1, _, e1 := syscall.Syscall9(procCryptUnprotectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0) + r1, _, e1 := syscall.SyscallN(procCryptUnprotectData.Addr(), uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut))) if r1 == 0 { err = errnoErr(e1) } @@ -1562,7 +1562,7 @@ func CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBl } func PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) { - r0, _, e1 := syscall.Syscall(procPFXImportCertStore.Addr(), 3, uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags)) + r0, _, e1 := syscall.SyscallN(procPFXImportCertStore.Addr(), uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags)) store = Handle(r0) if store == 0 { err = errnoErr(e1) @@ -1571,7 +1571,7 @@ func PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (sto } func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) { - r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0) + r0, _, _ := syscall.SyscallN(procDnsNameCompare_W.Addr(), uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2))) same = r0 != 0 return } @@ -1586,7 +1586,7 @@ func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSR } func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { - r0, _, _ := syscall.Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr))) + r0, _, _ := syscall.SyscallN(procDnsQuery_W.Addr(), uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr))) if r0 != 0 { status = syscall.Errno(r0) } @@ -1594,12 +1594,12 @@ func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DN } func DnsRecordListFree(rl *DNSRecord, freetype uint32) { - syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0) + syscall.SyscallN(procDnsRecordListFree.Addr(), uintptr(unsafe.Pointer(rl)), uintptr(freetype)) return } func DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) { - r0, _, _ := syscall.Syscall6(procDwmGetWindowAttribute.Addr(), 4, uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size), 0, 0) + r0, _, _ := syscall.SyscallN(procDwmGetWindowAttribute.Addr(), uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size)) if r0 != 0 { ret = syscall.Errno(r0) } @@ -1607,7 +1607,7 @@ func DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, si } func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) { - r0, _, _ := syscall.Syscall6(procDwmSetWindowAttribute.Addr(), 4, uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size), 0, 0) + r0, _, _ := syscall.SyscallN(procDwmSetWindowAttribute.Addr(), uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size)) if r0 != 0 { ret = syscall.Errno(r0) } @@ -1615,7 +1615,7 @@ func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, si } func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) { - r0, _, _ := syscall.Syscall(procCancelMibChangeNotify2.Addr(), 1, uintptr(notificationHandle), 0, 0) + r0, _, _ := syscall.SyscallN(procCancelMibChangeNotify2.Addr(), uintptr(notificationHandle)) if r0 != 0 { errcode = syscall.Errno(r0) } @@ -1623,7 +1623,7 @@ func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) { } func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) { - r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0) + r0, _, _ := syscall.SyscallN(procGetAdaptersAddresses.Addr(), uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer))) if r0 != 0 { errcode = syscall.Errno(r0) } @@ -1631,7 +1631,7 @@ func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapter } func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) { - r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0) + r0, _, _ := syscall.SyscallN(procGetAdaptersInfo.Addr(), uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol))) if r0 != 0 { errcode = syscall.Errno(r0) } @@ -1639,7 +1639,7 @@ func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) { } func getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) { - r0, _, _ := syscall.Syscall(procGetBestInterfaceEx.Addr(), 2, uintptr(sockaddr), uintptr(unsafe.Pointer(pdwBestIfIndex)), 0) + r0, _, _ := syscall.SyscallN(procGetBestInterfaceEx.Addr(), uintptr(sockaddr), uintptr(unsafe.Pointer(pdwBestIfIndex))) if r0 != 0 { errcode = syscall.Errno(r0) } @@ -1647,7 +1647,7 @@ func getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcod } func GetIfEntry(pIfRow *MibIfRow) (errcode error) { - r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0) + r0, _, _ := syscall.SyscallN(procGetIfEntry.Addr(), uintptr(unsafe.Pointer(pIfRow))) if r0 != 0 { errcode = syscall.Errno(r0) } @@ -1655,7 +1655,7 @@ func GetIfEntry(pIfRow *MibIfRow) (errcode error) { } func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { - r0, _, _ := syscall.Syscall(procGetIfEntry2Ex.Addr(), 2, uintptr(level), uintptr(unsafe.Pointer(row)), 0) + r0, _, _ := syscall.SyscallN(procGetIfEntry2Ex.Addr(), uintptr(level), uintptr(unsafe.Pointer(row))) if r0 != 0 { errcode = syscall.Errno(r0) } @@ -1663,7 +1663,7 @@ func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { } func GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) { - r0, _, _ := syscall.Syscall(procGetUnicastIpAddressEntry.Addr(), 1, uintptr(unsafe.Pointer(row)), 0, 0) + r0, _, _ := syscall.SyscallN(procGetUnicastIpAddressEntry.Addr(), uintptr(unsafe.Pointer(row))) if r0 != 0 { errcode = syscall.Errno(r0) } @@ -1675,7 +1675,7 @@ func NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsa if initialNotification { _p0 = 1 } - r0, _, _ := syscall.Syscall6(procNotifyIpInterfaceChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + r0, _, _ := syscall.SyscallN(procNotifyIpInterfaceChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) if r0 != 0 { errcode = syscall.Errno(r0) } @@ -1687,7 +1687,7 @@ func NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext if initialNotification { _p0 = 1 } - r0, _, _ := syscall.Syscall6(procNotifyUnicastIpAddressChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + r0, _, _ := syscall.SyscallN(procNotifyUnicastIpAddressChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) if r0 != 0 { errcode = syscall.Errno(r0) } @@ -1695,7 +1695,7 @@ func NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext } func AddDllDirectory(path *uint16) (cookie uintptr, err error) { - r0, _, e1 := syscall.Syscall(procAddDllDirectory.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + r0, _, e1 := syscall.SyscallN(procAddDllDirectory.Addr(), uintptr(unsafe.Pointer(path))) cookie = uintptr(r0) if cookie == 0 { err = errnoErr(e1) @@ -1704,7 +1704,7 @@ func AddDllDirectory(path *uint16) (cookie uintptr, err error) { } func AssignProcessToJobObject(job Handle, process Handle) (err error) { - r1, _, e1 := syscall.Syscall(procAssignProcessToJobObject.Addr(), 2, uintptr(job), uintptr(process), 0) + r1, _, e1 := syscall.SyscallN(procAssignProcessToJobObject.Addr(), uintptr(job), uintptr(process)) if r1 == 0 { err = errnoErr(e1) } @@ -1712,7 +1712,7 @@ func AssignProcessToJobObject(job Handle, process Handle) (err error) { } func CancelIo(s Handle) (err error) { - r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0) + r1, _, e1 := syscall.SyscallN(procCancelIo.Addr(), uintptr(s)) if r1 == 0 { err = errnoErr(e1) } @@ -1720,7 +1720,7 @@ func CancelIo(s Handle) (err error) { } func CancelIoEx(s Handle, o *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0) + r1, _, e1 := syscall.SyscallN(procCancelIoEx.Addr(), uintptr(s), uintptr(unsafe.Pointer(o))) if r1 == 0 { err = errnoErr(e1) } @@ -1728,7 +1728,7 @@ func CancelIoEx(s Handle, o *Overlapped) (err error) { } func ClearCommBreak(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procClearCommBreak.Addr(), 1, uintptr(handle), 0, 0) + r1, _, e1 := syscall.SyscallN(procClearCommBreak.Addr(), uintptr(handle)) if r1 == 0 { err = errnoErr(e1) } @@ -1736,7 +1736,7 @@ func ClearCommBreak(handle Handle) (err error) { } func ClearCommError(handle Handle, lpErrors *uint32, lpStat *ComStat) (err error) { - r1, _, e1 := syscall.Syscall(procClearCommError.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(lpErrors)), uintptr(unsafe.Pointer(lpStat))) + r1, _, e1 := syscall.SyscallN(procClearCommError.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpErrors)), uintptr(unsafe.Pointer(lpStat))) if r1 == 0 { err = errnoErr(e1) } @@ -1744,7 +1744,7 @@ func ClearCommError(handle Handle, lpErrors *uint32, lpStat *ComStat) (err error } func CloseHandle(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0) + r1, _, e1 := syscall.SyscallN(procCloseHandle.Addr(), uintptr(handle)) if r1 == 0 { err = errnoErr(e1) } @@ -1752,12 +1752,12 @@ func CloseHandle(handle Handle) (err error) { } func ClosePseudoConsole(console Handle) { - syscall.Syscall(procClosePseudoConsole.Addr(), 1, uintptr(console), 0, 0) + syscall.SyscallN(procClosePseudoConsole.Addr(), uintptr(console)) return } func ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(overlapped)), 0) + r1, _, e1 := syscall.SyscallN(procConnectNamedPipe.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(overlapped))) if r1 == 0 { err = errnoErr(e1) } @@ -1765,7 +1765,7 @@ func ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) { } func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) { - r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0) + r1, _, e1 := syscall.SyscallN(procCreateDirectoryW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa))) if r1 == 0 { err = errnoErr(e1) } @@ -1773,7 +1773,7 @@ func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) { } func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0) + r0, _, e1 := syscall.SyscallN(procCreateEventExW.Addr(), uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess)) handle = Handle(r0) if handle == 0 || e1 == ERROR_ALREADY_EXISTS { err = errnoErr(e1) @@ -1782,7 +1782,7 @@ func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, d } func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0) + r0, _, e1 := syscall.SyscallN(procCreateEventW.Addr(), uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name))) handle = Handle(r0) if handle == 0 || e1 == ERROR_ALREADY_EXISTS { err = errnoErr(e1) @@ -1791,7 +1791,7 @@ func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialStat } func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name))) + r0, _, e1 := syscall.SyscallN(procCreateFileMappingW.Addr(), uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name))) handle = Handle(r0) if handle == 0 || e1 == ERROR_ALREADY_EXISTS { err = errnoErr(e1) @@ -1800,7 +1800,7 @@ func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxS } func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0) + r0, _, e1 := syscall.SyscallN(procCreateFileW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile)) handle = Handle(r0) if handle == InvalidHandle { err = errnoErr(e1) @@ -1809,7 +1809,7 @@ func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes } func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved)) + r1, _, e1 := syscall.SyscallN(procCreateHardLinkW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved)) if r1&0xff == 0 { err = errnoErr(e1) } @@ -1817,7 +1817,7 @@ func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr } func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0) + r0, _, e1 := syscall.SyscallN(procCreateIoCompletionPort.Addr(), uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt)) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -1826,7 +1826,7 @@ func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, thr } func CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procCreateJobObjectW.Addr(), 2, uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)), 0) + r0, _, e1 := syscall.SyscallN(procCreateJobObjectW.Addr(), uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name))) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -1835,7 +1835,7 @@ func CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, } func CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCreateMutexExW.Addr(), 4, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0) + r0, _, e1 := syscall.SyscallN(procCreateMutexExW.Addr(), uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess)) handle = Handle(r0) if handle == 0 || e1 == ERROR_ALREADY_EXISTS { err = errnoErr(e1) @@ -1848,7 +1848,7 @@ func CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16 if initialOwner { _p0 = 1 } - r0, _, e1 := syscall.Syscall(procCreateMutexW.Addr(), 3, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name))) + r0, _, e1 := syscall.SyscallN(procCreateMutexW.Addr(), uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name))) handle = Handle(r0) if handle == 0 || e1 == ERROR_ALREADY_EXISTS { err = errnoErr(e1) @@ -1857,7 +1857,7 @@ func CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16 } func CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall9(procCreateNamedPipeW.Addr(), 8, uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)), 0) + r0, _, e1 := syscall.SyscallN(procCreateNamedPipeW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa))) handle = Handle(r0) if handle == InvalidHandle { err = errnoErr(e1) @@ -1866,7 +1866,7 @@ func CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances u } func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0) + r1, _, e1 := syscall.SyscallN(procCreatePipe.Addr(), uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size)) if r1 == 0 { err = errnoErr(e1) } @@ -1878,7 +1878,7 @@ func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityA if inheritHandles { _p0 = 1 } - r1, _, e1 := syscall.Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0) + r1, _, e1 := syscall.SyscallN(procCreateProcessW.Addr(), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo))) if r1 == 0 { err = errnoErr(e1) } @@ -1886,7 +1886,7 @@ func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityA } func createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) { - r0, _, _ := syscall.Syscall6(procCreatePseudoConsole.Addr(), 5, uintptr(size), uintptr(in), uintptr(out), uintptr(flags), uintptr(unsafe.Pointer(pconsole)), 0) + r0, _, _ := syscall.SyscallN(procCreatePseudoConsole.Addr(), uintptr(size), uintptr(in), uintptr(out), uintptr(flags), uintptr(unsafe.Pointer(pconsole))) if r0 != 0 { hr = syscall.Errno(r0) } @@ -1894,7 +1894,7 @@ func createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pcons } func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags)) + r1, _, e1 := syscall.SyscallN(procCreateSymbolicLinkW.Addr(), uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags)) if r1&0xff == 0 { err = errnoErr(e1) } @@ -1902,7 +1902,7 @@ func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags u } func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0) + r0, _, e1 := syscall.SyscallN(procCreateToolhelp32Snapshot.Addr(), uintptr(flags), uintptr(processId)) handle = Handle(r0) if handle == InvalidHandle { err = errnoErr(e1) @@ -1911,7 +1911,7 @@ func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, er } func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath))) + r1, _, e1 := syscall.SyscallN(procDefineDosDeviceW.Addr(), uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath))) if r1 == 0 { err = errnoErr(e1) } @@ -1919,7 +1919,7 @@ func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err } func DeleteFile(path *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + r1, _, e1 := syscall.SyscallN(procDeleteFileW.Addr(), uintptr(unsafe.Pointer(path))) if r1 == 0 { err = errnoErr(e1) } @@ -1927,12 +1927,12 @@ func DeleteFile(path *uint16) (err error) { } func deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) { - syscall.Syscall(procDeleteProcThreadAttributeList.Addr(), 1, uintptr(unsafe.Pointer(attrlist)), 0, 0) + syscall.SyscallN(procDeleteProcThreadAttributeList.Addr(), uintptr(unsafe.Pointer(attrlist))) return } func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0) + r1, _, e1 := syscall.SyscallN(procDeleteVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint))) if r1 == 0 { err = errnoErr(e1) } @@ -1940,7 +1940,7 @@ func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) { } func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0) + r1, _, e1 := syscall.SyscallN(procDeviceIoControl.Addr(), uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped))) if r1 == 0 { err = errnoErr(e1) } @@ -1948,7 +1948,7 @@ func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBuff } func DisconnectNamedPipe(pipe Handle) (err error) { - r1, _, e1 := syscall.Syscall(procDisconnectNamedPipe.Addr(), 1, uintptr(pipe), 0, 0) + r1, _, e1 := syscall.SyscallN(procDisconnectNamedPipe.Addr(), uintptr(pipe)) if r1 == 0 { err = errnoErr(e1) } @@ -1960,7 +1960,7 @@ func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetP if bInheritHandle { _p0 = 1 } - r1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0) + r1, _, e1 := syscall.SyscallN(procDuplicateHandle.Addr(), uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions)) if r1 == 0 { err = errnoErr(e1) } @@ -1968,7 +1968,7 @@ func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetP } func EscapeCommFunction(handle Handle, dwFunc uint32) (err error) { - r1, _, e1 := syscall.Syscall(procEscapeCommFunction.Addr(), 2, uintptr(handle), uintptr(dwFunc), 0) + r1, _, e1 := syscall.SyscallN(procEscapeCommFunction.Addr(), uintptr(handle), uintptr(dwFunc)) if r1 == 0 { err = errnoErr(e1) } @@ -1976,12 +1976,12 @@ func EscapeCommFunction(handle Handle, dwFunc uint32) (err error) { } func ExitProcess(exitcode uint32) { - syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0) + syscall.SyscallN(procExitProcess.Addr(), uintptr(exitcode)) return } func ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size)) + r0, _, e1 := syscall.SyscallN(procExpandEnvironmentStringsW.Addr(), uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size)) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -1990,7 +1990,7 @@ func ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, } func FindClose(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0) + r1, _, e1 := syscall.SyscallN(procFindClose.Addr(), uintptr(handle)) if r1 == 0 { err = errnoErr(e1) } @@ -1998,7 +1998,7 @@ func FindClose(handle Handle) (err error) { } func FindCloseChangeNotification(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFindCloseChangeNotification.Addr(), 1, uintptr(handle), 0, 0) + r1, _, e1 := syscall.SyscallN(procFindCloseChangeNotification.Addr(), uintptr(handle)) if r1 == 0 { err = errnoErr(e1) } @@ -2019,7 +2019,7 @@ func _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter if watchSubtree { _p1 = 1 } - r0, _, e1 := syscall.Syscall(procFindFirstChangeNotificationW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter)) + r0, _, e1 := syscall.SyscallN(procFindFirstChangeNotificationW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter)) handle = Handle(r0) if handle == InvalidHandle { err = errnoErr(e1) @@ -2028,7 +2028,7 @@ func _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter } func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0) + r0, _, e1 := syscall.SyscallN(procFindFirstFileW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data))) handle = Handle(r0) if handle == InvalidHandle { err = errnoErr(e1) @@ -2037,7 +2037,7 @@ func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err erro } func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + r0, _, e1 := syscall.SyscallN(procFindFirstVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) handle = Handle(r0) if handle == InvalidHandle { err = errnoErr(e1) @@ -2046,7 +2046,7 @@ func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, b } func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0) + r0, _, e1 := syscall.SyscallN(procFindFirstVolumeW.Addr(), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength)) handle = Handle(r0) if handle == InvalidHandle { err = errnoErr(e1) @@ -2055,7 +2055,7 @@ func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, er } func FindNextChangeNotification(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFindNextChangeNotification.Addr(), 1, uintptr(handle), 0, 0) + r1, _, e1 := syscall.SyscallN(procFindNextChangeNotification.Addr(), uintptr(handle)) if r1 == 0 { err = errnoErr(e1) } @@ -2063,7 +2063,7 @@ func FindNextChangeNotification(handle Handle) (err error) { } func findNextFile1(handle Handle, data *win32finddata1) (err error) { - r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) + r1, _, e1 := syscall.SyscallN(procFindNextFileW.Addr(), uintptr(handle), uintptr(unsafe.Pointer(data))) if r1 == 0 { err = errnoErr(e1) } @@ -2071,7 +2071,7 @@ func findNextFile1(handle Handle, data *win32finddata1) (err error) { } func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) { - r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + r1, _, e1 := syscall.SyscallN(procFindNextVolumeMountPointW.Addr(), uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) if r1 == 0 { err = errnoErr(e1) } @@ -2079,7 +2079,7 @@ func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uin } func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) { - r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength)) + r1, _, e1 := syscall.SyscallN(procFindNextVolumeW.Addr(), uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength)) if r1 == 0 { err = errnoErr(e1) } @@ -2087,7 +2087,7 @@ func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) } func findResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) { - r0, _, e1 := syscall.Syscall(procFindResourceW.Addr(), 3, uintptr(module), uintptr(name), uintptr(resType)) + r0, _, e1 := syscall.SyscallN(procFindResourceW.Addr(), uintptr(module), uintptr(name), uintptr(resType)) resInfo = Handle(r0) if resInfo == 0 { err = errnoErr(e1) @@ -2096,7 +2096,7 @@ func findResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, } func FindVolumeClose(findVolume Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0) + r1, _, e1 := syscall.SyscallN(procFindVolumeClose.Addr(), uintptr(findVolume)) if r1 == 0 { err = errnoErr(e1) } @@ -2104,7 +2104,7 @@ func FindVolumeClose(findVolume Handle) (err error) { } func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0) + r1, _, e1 := syscall.SyscallN(procFindVolumeMountPointClose.Addr(), uintptr(findVolumeMountPoint)) if r1 == 0 { err = errnoErr(e1) } @@ -2112,7 +2112,7 @@ func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) { } func FlushFileBuffers(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0) + r1, _, e1 := syscall.SyscallN(procFlushFileBuffers.Addr(), uintptr(handle)) if r1 == 0 { err = errnoErr(e1) } @@ -2120,7 +2120,7 @@ func FlushFileBuffers(handle Handle) (err error) { } func FlushViewOfFile(addr uintptr, length uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0) + r1, _, e1 := syscall.SyscallN(procFlushViewOfFile.Addr(), uintptr(addr), uintptr(length)) if r1 == 0 { err = errnoErr(e1) } @@ -2132,7 +2132,7 @@ func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, bu if len(buf) > 0 { _p0 = &buf[0] } - r0, _, e1 := syscall.Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0) + r0, _, e1 := syscall.SyscallN(procFormatMessageW.Addr(), uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args))) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -2141,7 +2141,7 @@ func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, bu } func FreeEnvironmentStrings(envs *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0) + r1, _, e1 := syscall.SyscallN(procFreeEnvironmentStringsW.Addr(), uintptr(unsafe.Pointer(envs))) if r1 == 0 { err = errnoErr(e1) } @@ -2149,7 +2149,7 @@ func FreeEnvironmentStrings(envs *uint16) (err error) { } func FreeLibrary(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0) + r1, _, e1 := syscall.SyscallN(procFreeLibrary.Addr(), uintptr(handle)) if r1 == 0 { err = errnoErr(e1) } @@ -2157,7 +2157,7 @@ func FreeLibrary(handle Handle) (err error) { } func GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGenerateConsoleCtrlEvent.Addr(), 2, uintptr(ctrlEvent), uintptr(processGroupID), 0) + r1, _, e1 := syscall.SyscallN(procGenerateConsoleCtrlEvent.Addr(), uintptr(ctrlEvent), uintptr(processGroupID)) if r1 == 0 { err = errnoErr(e1) } @@ -2165,19 +2165,19 @@ func GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err erro } func GetACP() (acp uint32) { - r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0) + r0, _, _ := syscall.SyscallN(procGetACP.Addr()) acp = uint32(r0) return } func GetActiveProcessorCount(groupNumber uint16) (ret uint32) { - r0, _, _ := syscall.Syscall(procGetActiveProcessorCount.Addr(), 1, uintptr(groupNumber), 0, 0) + r0, _, _ := syscall.SyscallN(procGetActiveProcessorCount.Addr(), uintptr(groupNumber)) ret = uint32(r0) return } func GetCommModemStatus(handle Handle, lpModemStat *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetCommModemStatus.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(lpModemStat)), 0) + r1, _, e1 := syscall.SyscallN(procGetCommModemStatus.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpModemStat))) if r1 == 0 { err = errnoErr(e1) } @@ -2185,7 +2185,7 @@ func GetCommModemStatus(handle Handle, lpModemStat *uint32) (err error) { } func GetCommState(handle Handle, lpDCB *DCB) (err error) { - r1, _, e1 := syscall.Syscall(procGetCommState.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(lpDCB)), 0) + r1, _, e1 := syscall.SyscallN(procGetCommState.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpDCB))) if r1 == 0 { err = errnoErr(e1) } @@ -2193,7 +2193,7 @@ func GetCommState(handle Handle, lpDCB *DCB) (err error) { } func GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) { - r1, _, e1 := syscall.Syscall(procGetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0) + r1, _, e1 := syscall.SyscallN(procGetCommTimeouts.Addr(), uintptr(handle), uintptr(unsafe.Pointer(timeouts))) if r1 == 0 { err = errnoErr(e1) } @@ -2201,13 +2201,13 @@ func GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) { } func GetCommandLine() (cmd *uint16) { - r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0) + r0, _, _ := syscall.SyscallN(procGetCommandLineW.Addr()) cmd = (*uint16)(unsafe.Pointer(r0)) return } func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n))) + r1, _, e1 := syscall.SyscallN(procGetComputerNameExW.Addr(), uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n))) if r1 == 0 { err = errnoErr(e1) } @@ -2215,7 +2215,7 @@ func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) { } func GetComputerName(buf *uint16, n *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0) + r1, _, e1 := syscall.SyscallN(procGetComputerNameW.Addr(), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n))) if r1 == 0 { err = errnoErr(e1) } @@ -2223,7 +2223,7 @@ func GetComputerName(buf *uint16, n *uint32) (err error) { } func GetConsoleCP() (cp uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetConsoleCP.Addr(), 0, 0, 0, 0) + r0, _, e1 := syscall.SyscallN(procGetConsoleCP.Addr()) cp = uint32(r0) if cp == 0 { err = errnoErr(e1) @@ -2232,7 +2232,7 @@ func GetConsoleCP() (cp uint32, err error) { } func GetConsoleMode(console Handle, mode *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0) + r1, _, e1 := syscall.SyscallN(procGetConsoleMode.Addr(), uintptr(console), uintptr(unsafe.Pointer(mode))) if r1 == 0 { err = errnoErr(e1) } @@ -2240,7 +2240,7 @@ func GetConsoleMode(console Handle, mode *uint32) (err error) { } func GetConsoleOutputCP() (cp uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetConsoleOutputCP.Addr(), 0, 0, 0, 0) + r0, _, e1 := syscall.SyscallN(procGetConsoleOutputCP.Addr()) cp = uint32(r0) if cp == 0 { err = errnoErr(e1) @@ -2249,7 +2249,7 @@ func GetConsoleOutputCP() (cp uint32, err error) { } func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) { - r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0) + r1, _, e1 := syscall.SyscallN(procGetConsoleScreenBufferInfo.Addr(), uintptr(console), uintptr(unsafe.Pointer(info))) if r1 == 0 { err = errnoErr(e1) } @@ -2257,7 +2257,7 @@ func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) ( } func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0) + r0, _, e1 := syscall.SyscallN(procGetCurrentDirectoryW.Addr(), uintptr(buflen), uintptr(unsafe.Pointer(buf))) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -2266,19 +2266,19 @@ func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) { } func GetCurrentProcessId() (pid uint32) { - r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0) + r0, _, _ := syscall.SyscallN(procGetCurrentProcessId.Addr()) pid = uint32(r0) return } func GetCurrentThreadId() (id uint32) { - r0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0) + r0, _, _ := syscall.SyscallN(procGetCurrentThreadId.Addr()) id = uint32(r0) return } func GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) { - r1, _, e1 := syscall.Syscall6(procGetDiskFreeSpaceExW.Addr(), 4, uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetDiskFreeSpaceExW.Addr(), uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes))) if r1 == 0 { err = errnoErr(e1) } @@ -2286,13 +2286,13 @@ func GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint6 } func GetDriveType(rootPathName *uint16) (driveType uint32) { - r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0) + r0, _, _ := syscall.SyscallN(procGetDriveTypeW.Addr(), uintptr(unsafe.Pointer(rootPathName))) driveType = uint32(r0) return } func GetEnvironmentStrings() (envs *uint16, err error) { - r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0) + r0, _, e1 := syscall.SyscallN(procGetEnvironmentStringsW.Addr()) envs = (*uint16)(unsafe.Pointer(r0)) if envs == nil { err = errnoErr(e1) @@ -2301,7 +2301,7 @@ func GetEnvironmentStrings() (envs *uint16, err error) { } func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size)) + r0, _, e1 := syscall.SyscallN(procGetEnvironmentVariableW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size)) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -2310,7 +2310,7 @@ func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32 } func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0) + r1, _, e1 := syscall.SyscallN(procGetExitCodeProcess.Addr(), uintptr(handle), uintptr(unsafe.Pointer(exitcode))) if r1 == 0 { err = errnoErr(e1) } @@ -2318,7 +2318,7 @@ func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) { } func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) { - r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info))) + r1, _, e1 := syscall.SyscallN(procGetFileAttributesExW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info))) if r1 == 0 { err = errnoErr(e1) } @@ -2326,7 +2326,7 @@ func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) { } func GetFileAttributes(name *uint16) (attrs uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + r0, _, e1 := syscall.SyscallN(procGetFileAttributesW.Addr(), uintptr(unsafe.Pointer(name))) attrs = uint32(r0) if attrs == INVALID_FILE_ATTRIBUTES { err = errnoErr(e1) @@ -2335,7 +2335,7 @@ func GetFileAttributes(name *uint16) (attrs uint32, err error) { } func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) { - r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) + r1, _, e1 := syscall.SyscallN(procGetFileInformationByHandle.Addr(), uintptr(handle), uintptr(unsafe.Pointer(data))) if r1 == 0 { err = errnoErr(e1) } @@ -2343,7 +2343,7 @@ func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (e } func GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetFileInformationByHandleEx.Addr(), uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen)) if r1 == 0 { err = errnoErr(e1) } @@ -2351,7 +2351,7 @@ func GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, } func GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) { - r1, _, e1 := syscall.Syscall6(procGetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetFileTime.Addr(), uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime))) if r1 == 0 { err = errnoErr(e1) } @@ -2359,7 +2359,7 @@ func GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetim } func GetFileType(filehandle Handle) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0) + r0, _, e1 := syscall.SyscallN(procGetFileType.Addr(), uintptr(filehandle)) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -2368,7 +2368,7 @@ func GetFileType(filehandle Handle) (n uint32, err error) { } func GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall6(procGetFinalPathNameByHandleW.Addr(), 4, uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags), 0, 0) + r0, _, e1 := syscall.SyscallN(procGetFinalPathNameByHandleW.Addr(), uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags)) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -2377,7 +2377,7 @@ func GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32 } func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) { - r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0) + r0, _, e1 := syscall.SyscallN(procGetFullPathNameW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname))) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -2386,13 +2386,13 @@ func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) ( } func GetLargePageMinimum() (size uintptr) { - r0, _, _ := syscall.Syscall(procGetLargePageMinimum.Addr(), 0, 0, 0, 0) + r0, _, _ := syscall.SyscallN(procGetLargePageMinimum.Addr()) size = uintptr(r0) return } func GetLastError() (lasterr error) { - r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0) + r0, _, _ := syscall.SyscallN(procGetLastError.Addr()) if r0 != 0 { lasterr = syscall.Errno(r0) } @@ -2400,7 +2400,7 @@ func GetLastError() (lasterr error) { } func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0) + r0, _, e1 := syscall.SyscallN(procGetLogicalDriveStringsW.Addr(), uintptr(bufferLength), uintptr(unsafe.Pointer(buffer))) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -2409,7 +2409,7 @@ func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err } func GetLogicalDrives() (drivesBitMask uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0) + r0, _, e1 := syscall.SyscallN(procGetLogicalDrives.Addr()) drivesBitMask = uint32(r0) if drivesBitMask == 0 { err = errnoErr(e1) @@ -2418,7 +2418,7 @@ func GetLogicalDrives() (drivesBitMask uint32, err error) { } func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen)) + r0, _, e1 := syscall.SyscallN(procGetLongPathNameW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen)) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -2427,13 +2427,13 @@ func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err er } func GetMaximumProcessorCount(groupNumber uint16) (ret uint32) { - r0, _, _ := syscall.Syscall(procGetMaximumProcessorCount.Addr(), 1, uintptr(groupNumber), 0, 0) + r0, _, _ := syscall.SyscallN(procGetMaximumProcessorCount.Addr(), uintptr(groupNumber)) ret = uint32(r0) return } func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size)) + r0, _, e1 := syscall.SyscallN(procGetModuleFileNameW.Addr(), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size)) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -2442,7 +2442,7 @@ func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, } func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) { - r1, _, e1 := syscall.Syscall(procGetModuleHandleExW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module))) + r1, _, e1 := syscall.SyscallN(procGetModuleHandleExW.Addr(), uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module))) if r1 == 0 { err = errnoErr(e1) } @@ -2450,7 +2450,7 @@ func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err er } func GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetNamedPipeClientProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID)), 0) + r1, _, e1 := syscall.SyscallN(procGetNamedPipeClientProcessId.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID))) if r1 == 0 { err = errnoErr(e1) } @@ -2458,7 +2458,7 @@ func GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err erro } func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetNamedPipeHandleStateW.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize)) if r1 == 0 { err = errnoErr(e1) } @@ -2466,7 +2466,7 @@ func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, m } func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetNamedPipeInfo.Addr(), 5, uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)), 0) + r1, _, e1 := syscall.SyscallN(procGetNamedPipeInfo.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances))) if r1 == 0 { err = errnoErr(e1) } @@ -2474,7 +2474,7 @@ func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint3 } func GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetNamedPipeServerProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID)), 0) + r1, _, e1 := syscall.SyscallN(procGetNamedPipeServerProcessId.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID))) if r1 == 0 { err = errnoErr(e1) } @@ -2486,7 +2486,7 @@ func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wa if wait { _p0 = 1 } - r1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetOverlappedResult.Addr(), uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0)) if r1 == 0 { err = errnoErr(e1) } @@ -2494,7 +2494,7 @@ func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wa } func GetPriorityClass(process Handle) (ret uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetPriorityClass.Addr(), 1, uintptr(process), 0, 0) + r0, _, e1 := syscall.SyscallN(procGetPriorityClass.Addr(), uintptr(process)) ret = uint32(r0) if ret == 0 { err = errnoErr(e1) @@ -2512,7 +2512,7 @@ func GetProcAddress(module Handle, procname string) (proc uintptr, err error) { } func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) { - r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0) + r0, _, e1 := syscall.SyscallN(procGetProcAddress.Addr(), uintptr(module), uintptr(unsafe.Pointer(procname))) proc = uintptr(r0) if proc == 0 { err = errnoErr(e1) @@ -2521,7 +2521,7 @@ func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) { } func GetProcessId(process Handle) (id uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetProcessId.Addr(), 1, uintptr(process), 0, 0) + r0, _, e1 := syscall.SyscallN(procGetProcessId.Addr(), uintptr(process)) id = uint32(r0) if id == 0 { err = errnoErr(e1) @@ -2530,7 +2530,7 @@ func GetProcessId(process Handle) (id uint32, err error) { } func getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetProcessPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetProcessPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize))) if r1 == 0 { err = errnoErr(e1) } @@ -2538,7 +2538,7 @@ func getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uin } func GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetProcessShutdownParameters.Addr(), 2, uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags)), 0) + r1, _, e1 := syscall.SyscallN(procGetProcessShutdownParameters.Addr(), uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags))) if r1 == 0 { err = errnoErr(e1) } @@ -2546,7 +2546,7 @@ func GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) { } func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) { - r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0) + r1, _, e1 := syscall.SyscallN(procGetProcessTimes.Addr(), uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime))) if r1 == 0 { err = errnoErr(e1) } @@ -2554,12 +2554,12 @@ func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, } func GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) { - syscall.Syscall6(procGetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(unsafe.Pointer(lpMinimumWorkingSetSize)), uintptr(unsafe.Pointer(lpMaximumWorkingSetSize)), uintptr(unsafe.Pointer(flags)), 0, 0) + syscall.SyscallN(procGetProcessWorkingSetSizeEx.Addr(), uintptr(hProcess), uintptr(unsafe.Pointer(lpMinimumWorkingSetSize)), uintptr(unsafe.Pointer(lpMaximumWorkingSetSize)), uintptr(unsafe.Pointer(flags))) return } func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0) + r1, _, e1 := syscall.SyscallN(procGetQueuedCompletionStatus.Addr(), uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout)) if r1 == 0 { err = errnoErr(e1) } @@ -2567,7 +2567,7 @@ func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overl } func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen)) + r0, _, e1 := syscall.SyscallN(procGetShortPathNameW.Addr(), uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen)) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -2576,12 +2576,12 @@ func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uin } func getStartupInfo(startupInfo *StartupInfo) { - syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0) + syscall.SyscallN(procGetStartupInfoW.Addr(), uintptr(unsafe.Pointer(startupInfo))) return } func GetStdHandle(stdhandle uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0) + r0, _, e1 := syscall.SyscallN(procGetStdHandle.Addr(), uintptr(stdhandle)) handle = Handle(r0) if handle == InvalidHandle { err = errnoErr(e1) @@ -2590,7 +2590,7 @@ func GetStdHandle(stdhandle uint32) (handle Handle, err error) { } func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + r0, _, e1 := syscall.SyscallN(procGetSystemDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen)) len = uint32(r0) if len == 0 { err = errnoErr(e1) @@ -2599,7 +2599,7 @@ func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { } func getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetSystemPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetSystemPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize))) if r1 == 0 { err = errnoErr(e1) } @@ -2607,17 +2607,17 @@ func getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint } func GetSystemTimeAsFileTime(time *Filetime) { - syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0) + syscall.SyscallN(procGetSystemTimeAsFileTime.Addr(), uintptr(unsafe.Pointer(time))) return } func GetSystemTimePreciseAsFileTime(time *Filetime) { - syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0) + syscall.SyscallN(procGetSystemTimePreciseAsFileTime.Addr(), uintptr(unsafe.Pointer(time))) return } func getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetSystemWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + r0, _, e1 := syscall.SyscallN(procGetSystemWindowsDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen)) len = uint32(r0) if len == 0 { err = errnoErr(e1) @@ -2626,7 +2626,7 @@ func getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err erro } func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0) + r0, _, e1 := syscall.SyscallN(procGetTempPathW.Addr(), uintptr(buflen), uintptr(unsafe.Pointer(buf))) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -2635,7 +2635,7 @@ func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) { } func getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetThreadPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetThreadPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize))) if r1 == 0 { err = errnoErr(e1) } @@ -2643,13 +2643,13 @@ func getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint } func getTickCount64() (ms uint64) { - r0, _, _ := syscall.Syscall(procGetTickCount64.Addr(), 0, 0, 0, 0) + r0, _, _ := syscall.SyscallN(procGetTickCount64.Addr()) ms = uint64(r0) return } func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0) + r0, _, e1 := syscall.SyscallN(procGetTimeZoneInformation.Addr(), uintptr(unsafe.Pointer(tzi))) rc = uint32(r0) if rc == 0xffffffff { err = errnoErr(e1) @@ -2658,7 +2658,7 @@ func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) { } func getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetUserPreferredUILanguages.Addr(), 4, uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize)), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetUserPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize))) if r1 == 0 { err = errnoErr(e1) } @@ -2666,7 +2666,7 @@ func getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16 } func GetVersion() (ver uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0) + r0, _, e1 := syscall.SyscallN(procGetVersion.Addr()) ver = uint32(r0) if ver == 0 { err = errnoErr(e1) @@ -2675,7 +2675,7 @@ func GetVersion() (ver uint32, err error) { } func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) + r1, _, e1 := syscall.SyscallN(procGetVolumeInformationByHandleW.Addr(), uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize)) if r1 == 0 { err = errnoErr(e1) } @@ -2683,7 +2683,7 @@ func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeN } func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procGetVolumeInformationW.Addr(), 8, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) + r1, _, e1 := syscall.SyscallN(procGetVolumeInformationW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize)) if r1 == 0 { err = errnoErr(e1) } @@ -2691,7 +2691,7 @@ func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volume } func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength)) + r1, _, e1 := syscall.SyscallN(procGetVolumeNameForVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength)) if r1 == 0 { err = errnoErr(e1) } @@ -2699,7 +2699,7 @@ func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint } func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength)) + r1, _, e1 := syscall.SyscallN(procGetVolumePathNameW.Addr(), uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength)) if r1 == 0 { err = errnoErr(e1) } @@ -2707,7 +2707,7 @@ func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength ui } func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetVolumePathNamesForVolumeNameW.Addr(), uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength))) if r1 == 0 { err = errnoErr(e1) } @@ -2715,7 +2715,7 @@ func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16 } func getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + r0, _, e1 := syscall.SyscallN(procGetWindowsDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen)) len = uint32(r0) if len == 0 { err = errnoErr(e1) @@ -2724,7 +2724,7 @@ func getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { } func initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) { - r1, _, e1 := syscall.Syscall6(procInitializeProcThreadAttributeList.Addr(), 4, uintptr(unsafe.Pointer(attrlist)), uintptr(attrcount), uintptr(flags), uintptr(unsafe.Pointer(size)), 0, 0) + r1, _, e1 := syscall.SyscallN(procInitializeProcThreadAttributeList.Addr(), uintptr(unsafe.Pointer(attrlist)), uintptr(attrcount), uintptr(flags), uintptr(unsafe.Pointer(size))) if r1 == 0 { err = errnoErr(e1) } @@ -2736,7 +2736,7 @@ func IsWow64Process(handle Handle, isWow64 *bool) (err error) { if *isWow64 { _p0 = 1 } - r1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(&_p0)), 0) + r1, _, e1 := syscall.SyscallN(procIsWow64Process.Addr(), uintptr(handle), uintptr(unsafe.Pointer(&_p0))) *isWow64 = _p0 != 0 if r1 == 0 { err = errnoErr(e1) @@ -2749,7 +2749,7 @@ func IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint1 if err != nil { return } - r1, _, e1 := syscall.Syscall(procIsWow64Process2.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine))) + r1, _, e1 := syscall.SyscallN(procIsWow64Process2.Addr(), uintptr(handle), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine))) if r1 == 0 { err = errnoErr(e1) } @@ -2766,7 +2766,7 @@ func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, e } func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags)) + r0, _, e1 := syscall.SyscallN(procLoadLibraryExW.Addr(), uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags)) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -2784,7 +2784,7 @@ func LoadLibrary(libname string) (handle Handle, err error) { } func _LoadLibrary(libname *uint16) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0) + r0, _, e1 := syscall.SyscallN(procLoadLibraryW.Addr(), uintptr(unsafe.Pointer(libname))) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -2793,7 +2793,7 @@ func _LoadLibrary(libname *uint16) (handle Handle, err error) { } func LoadResource(module Handle, resInfo Handle) (resData Handle, err error) { - r0, _, e1 := syscall.Syscall(procLoadResource.Addr(), 2, uintptr(module), uintptr(resInfo), 0) + r0, _, e1 := syscall.SyscallN(procLoadResource.Addr(), uintptr(module), uintptr(resInfo)) resData = Handle(r0) if resData == 0 { err = errnoErr(e1) @@ -2802,7 +2802,7 @@ func LoadResource(module Handle, resInfo Handle) (resData Handle, err error) { } func LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) { - r0, _, e1 := syscall.Syscall(procLocalAlloc.Addr(), 2, uintptr(flags), uintptr(length), 0) + r0, _, e1 := syscall.SyscallN(procLocalAlloc.Addr(), uintptr(flags), uintptr(length)) ptr = uintptr(r0) if ptr == 0 { err = errnoErr(e1) @@ -2811,7 +2811,7 @@ func LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) { } func LocalFree(hmem Handle) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0) + r0, _, e1 := syscall.SyscallN(procLocalFree.Addr(), uintptr(hmem)) handle = Handle(r0) if handle != 0 { err = errnoErr(e1) @@ -2820,7 +2820,7 @@ func LocalFree(hmem Handle) (handle Handle, err error) { } func LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall6(procLockFileEx.Addr(), 6, uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped))) + r1, _, e1 := syscall.SyscallN(procLockFileEx.Addr(), uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped))) if r1 == 0 { err = errnoErr(e1) } @@ -2828,7 +2828,7 @@ func LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, byt } func LockResource(resData Handle) (addr uintptr, err error) { - r0, _, e1 := syscall.Syscall(procLockResource.Addr(), 1, uintptr(resData), 0, 0) + r0, _, e1 := syscall.SyscallN(procLockResource.Addr(), uintptr(resData)) addr = uintptr(r0) if addr == 0 { err = errnoErr(e1) @@ -2837,7 +2837,7 @@ func LockResource(resData Handle) (addr uintptr, err error) { } func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) { - r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0) + r0, _, e1 := syscall.SyscallN(procMapViewOfFile.Addr(), uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length)) addr = uintptr(r0) if addr == 0 { err = errnoErr(e1) @@ -2846,7 +2846,7 @@ func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow ui } func Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) { - r1, _, e1 := syscall.Syscall(procModule32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)), 0) + r1, _, e1 := syscall.SyscallN(procModule32FirstW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry))) if r1 == 0 { err = errnoErr(e1) } @@ -2854,7 +2854,7 @@ func Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) { } func Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) { - r1, _, e1 := syscall.Syscall(procModule32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)), 0) + r1, _, e1 := syscall.SyscallN(procModule32NextW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry))) if r1 == 0 { err = errnoErr(e1) } @@ -2862,7 +2862,7 @@ func Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) { } func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags)) + r1, _, e1 := syscall.SyscallN(procMoveFileExW.Addr(), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags)) if r1 == 0 { err = errnoErr(e1) } @@ -2870,7 +2870,7 @@ func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) { } func MoveFile(from *uint16, to *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0) + r1, _, e1 := syscall.SyscallN(procMoveFileW.Addr(), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to))) if r1 == 0 { err = errnoErr(e1) } @@ -2878,7 +2878,7 @@ func MoveFile(from *uint16, to *uint16) (err error) { } func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) { - r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar)) + r0, _, e1 := syscall.SyscallN(procMultiByteToWideChar.Addr(), uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar)) nwrite = int32(r0) if nwrite == 0 { err = errnoErr(e1) @@ -2891,7 +2891,7 @@ func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle H if inheritHandle { _p0 = 1 } - r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) + r0, _, e1 := syscall.SyscallN(procOpenEventW.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -2904,7 +2904,7 @@ func OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle H if inheritHandle { _p0 = 1 } - r0, _, e1 := syscall.Syscall(procOpenMutexW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) + r0, _, e1 := syscall.SyscallN(procOpenMutexW.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -2917,7 +2917,7 @@ func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (ha if inheritHandle { _p0 = 1 } - r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(processId)) + r0, _, e1 := syscall.SyscallN(procOpenProcess.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(processId)) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -2930,7 +2930,7 @@ func OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (hand if inheritHandle { _p0 = 1 } - r0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(threadId)) + r0, _, e1 := syscall.SyscallN(procOpenThread.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(threadId)) handle = Handle(r0) if handle == 0 { err = errnoErr(e1) @@ -2939,7 +2939,7 @@ func OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (hand } func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0) + r1, _, e1 := syscall.SyscallN(procPostQueuedCompletionStatus.Addr(), uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped))) if r1 == 0 { err = errnoErr(e1) } @@ -2947,7 +2947,7 @@ func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overla } func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) { - r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0) + r1, _, e1 := syscall.SyscallN(procProcess32FirstW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(procEntry))) if r1 == 0 { err = errnoErr(e1) } @@ -2955,7 +2955,7 @@ func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) { } func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) { - r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0) + r1, _, e1 := syscall.SyscallN(procProcess32NextW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(procEntry))) if r1 == 0 { err = errnoErr(e1) } @@ -2963,7 +2963,7 @@ func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) { } func ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procProcessIdToSessionId.Addr(), 2, uintptr(pid), uintptr(unsafe.Pointer(sessionid)), 0) + r1, _, e1 := syscall.SyscallN(procProcessIdToSessionId.Addr(), uintptr(pid), uintptr(unsafe.Pointer(sessionid))) if r1 == 0 { err = errnoErr(e1) } @@ -2971,7 +2971,7 @@ func ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) { } func PulseEvent(event Handle) (err error) { - r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0) + r1, _, e1 := syscall.SyscallN(procPulseEvent.Addr(), uintptr(event)) if r1 == 0 { err = errnoErr(e1) } @@ -2979,7 +2979,7 @@ func PulseEvent(event Handle) (err error) { } func PurgeComm(handle Handle, dwFlags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procPurgeComm.Addr(), 2, uintptr(handle), uintptr(dwFlags), 0) + r1, _, e1 := syscall.SyscallN(procPurgeComm.Addr(), uintptr(handle), uintptr(dwFlags)) if r1 == 0 { err = errnoErr(e1) } @@ -2987,7 +2987,7 @@ func PurgeComm(handle Handle, dwFlags uint32) (err error) { } func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max)) + r0, _, e1 := syscall.SyscallN(procQueryDosDeviceW.Addr(), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max)) n = uint32(r0) if n == 0 { err = errnoErr(e1) @@ -2996,7 +2996,7 @@ func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint3 } func QueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procQueryFullProcessImageNameW.Addr(), 4, uintptr(proc), uintptr(flags), uintptr(unsafe.Pointer(exeName)), uintptr(unsafe.Pointer(size)), 0, 0) + r1, _, e1 := syscall.SyscallN(procQueryFullProcessImageNameW.Addr(), uintptr(proc), uintptr(flags), uintptr(unsafe.Pointer(exeName)), uintptr(unsafe.Pointer(size))) if r1 == 0 { err = errnoErr(e1) } @@ -3004,7 +3004,7 @@ func QueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size } func QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procQueryInformationJobObject.Addr(), 5, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), uintptr(unsafe.Pointer(retlen)), 0) + r1, _, e1 := syscall.SyscallN(procQueryInformationJobObject.Addr(), uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), uintptr(unsafe.Pointer(retlen))) if r1 == 0 { err = errnoErr(e1) } @@ -3012,7 +3012,7 @@ func QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobO } func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) { - r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0) + r1, _, e1 := syscall.SyscallN(procReadConsoleW.Addr(), uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl))) if r1 == 0 { err = errnoErr(e1) } @@ -3024,7 +3024,7 @@ func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree if watchSubTree { _p0 = 1 } - r1, _, e1 := syscall.Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0) + r1, _, e1 := syscall.SyscallN(procReadDirectoryChangesW.Addr(), uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine)) if r1 == 0 { err = errnoErr(e1) } @@ -3036,7 +3036,7 @@ func readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) ( if len(buf) > 0 { _p0 = &buf[0] } - r1, _, e1 := syscall.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0) + r1, _, e1 := syscall.SyscallN(procReadFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped))) if r1 == 0 { err = errnoErr(e1) } @@ -3044,7 +3044,7 @@ func readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) ( } func ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) { - r1, _, e1 := syscall.Syscall6(procReadProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead)), 0) + r1, _, e1 := syscall.SyscallN(procReadProcessMemory.Addr(), uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead))) if r1 == 0 { err = errnoErr(e1) } @@ -3052,7 +3052,7 @@ func ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size u } func ReleaseMutex(mutex Handle) (err error) { - r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0) + r1, _, e1 := syscall.SyscallN(procReleaseMutex.Addr(), uintptr(mutex)) if r1 == 0 { err = errnoErr(e1) } @@ -3060,7 +3060,7 @@ func ReleaseMutex(mutex Handle) (err error) { } func RemoveDirectory(path *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + r1, _, e1 := syscall.SyscallN(procRemoveDirectoryW.Addr(), uintptr(unsafe.Pointer(path))) if r1 == 0 { err = errnoErr(e1) } @@ -3068,7 +3068,7 @@ func RemoveDirectory(path *uint16) (err error) { } func RemoveDllDirectory(cookie uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procRemoveDllDirectory.Addr(), 1, uintptr(cookie), 0, 0) + r1, _, e1 := syscall.SyscallN(procRemoveDllDirectory.Addr(), uintptr(cookie)) if r1 == 0 { err = errnoErr(e1) } @@ -3076,7 +3076,7 @@ func RemoveDllDirectory(cookie uintptr) (err error) { } func ResetEvent(event Handle) (err error) { - r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0) + r1, _, e1 := syscall.SyscallN(procResetEvent.Addr(), uintptr(event)) if r1 == 0 { err = errnoErr(e1) } @@ -3084,7 +3084,7 @@ func ResetEvent(event Handle) (err error) { } func resizePseudoConsole(pconsole Handle, size uint32) (hr error) { - r0, _, _ := syscall.Syscall(procResizePseudoConsole.Addr(), 2, uintptr(pconsole), uintptr(size), 0) + r0, _, _ := syscall.SyscallN(procResizePseudoConsole.Addr(), uintptr(pconsole), uintptr(size)) if r0 != 0 { hr = syscall.Errno(r0) } @@ -3092,7 +3092,7 @@ func resizePseudoConsole(pconsole Handle, size uint32) (hr error) { } func ResumeThread(thread Handle) (ret uint32, err error) { - r0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0) + r0, _, e1 := syscall.SyscallN(procResumeThread.Addr(), uintptr(thread)) ret = uint32(r0) if ret == 0xffffffff { err = errnoErr(e1) @@ -3101,7 +3101,7 @@ func ResumeThread(thread Handle) (ret uint32, err error) { } func SetCommBreak(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procSetCommBreak.Addr(), 1, uintptr(handle), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetCommBreak.Addr(), uintptr(handle)) if r1 == 0 { err = errnoErr(e1) } @@ -3109,7 +3109,7 @@ func SetCommBreak(handle Handle) (err error) { } func SetCommMask(handle Handle, dwEvtMask uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetCommMask.Addr(), 2, uintptr(handle), uintptr(dwEvtMask), 0) + r1, _, e1 := syscall.SyscallN(procSetCommMask.Addr(), uintptr(handle), uintptr(dwEvtMask)) if r1 == 0 { err = errnoErr(e1) } @@ -3117,7 +3117,7 @@ func SetCommMask(handle Handle, dwEvtMask uint32) (err error) { } func SetCommState(handle Handle, lpDCB *DCB) (err error) { - r1, _, e1 := syscall.Syscall(procSetCommState.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(lpDCB)), 0) + r1, _, e1 := syscall.SyscallN(procSetCommState.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpDCB))) if r1 == 0 { err = errnoErr(e1) } @@ -3125,7 +3125,7 @@ func SetCommState(handle Handle, lpDCB *DCB) (err error) { } func SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) { - r1, _, e1 := syscall.Syscall(procSetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0) + r1, _, e1 := syscall.SyscallN(procSetCommTimeouts.Addr(), uintptr(handle), uintptr(unsafe.Pointer(timeouts))) if r1 == 0 { err = errnoErr(e1) } @@ -3133,7 +3133,7 @@ func SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) { } func SetConsoleCP(cp uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetConsoleCP.Addr(), 1, uintptr(cp), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetConsoleCP.Addr(), uintptr(cp)) if r1 == 0 { err = errnoErr(e1) } @@ -3141,7 +3141,7 @@ func SetConsoleCP(cp uint32) (err error) { } func setConsoleCursorPosition(console Handle, position uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(position), 0) + r1, _, e1 := syscall.SyscallN(procSetConsoleCursorPosition.Addr(), uintptr(console), uintptr(position)) if r1 == 0 { err = errnoErr(e1) } @@ -3149,7 +3149,7 @@ func setConsoleCursorPosition(console Handle, position uint32) (err error) { } func SetConsoleMode(console Handle, mode uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0) + r1, _, e1 := syscall.SyscallN(procSetConsoleMode.Addr(), uintptr(console), uintptr(mode)) if r1 == 0 { err = errnoErr(e1) } @@ -3157,7 +3157,7 @@ func SetConsoleMode(console Handle, mode uint32) (err error) { } func SetConsoleOutputCP(cp uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetConsoleOutputCP.Addr(), 1, uintptr(cp), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetConsoleOutputCP.Addr(), uintptr(cp)) if r1 == 0 { err = errnoErr(e1) } @@ -3165,7 +3165,7 @@ func SetConsoleOutputCP(cp uint32) (err error) { } func SetCurrentDirectory(path *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetCurrentDirectoryW.Addr(), uintptr(unsafe.Pointer(path))) if r1 == 0 { err = errnoErr(e1) } @@ -3173,7 +3173,7 @@ func SetCurrentDirectory(path *uint16) (err error) { } func SetDefaultDllDirectories(directoryFlags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetDefaultDllDirectories.Addr(), 1, uintptr(directoryFlags), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetDefaultDllDirectories.Addr(), uintptr(directoryFlags)) if r1 == 0 { err = errnoErr(e1) } @@ -3190,7 +3190,7 @@ func SetDllDirectory(path string) (err error) { } func _SetDllDirectory(path *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procSetDllDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetDllDirectoryW.Addr(), uintptr(unsafe.Pointer(path))) if r1 == 0 { err = errnoErr(e1) } @@ -3198,7 +3198,7 @@ func _SetDllDirectory(path *uint16) (err error) { } func SetEndOfFile(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetEndOfFile.Addr(), uintptr(handle)) if r1 == 0 { err = errnoErr(e1) } @@ -3206,7 +3206,7 @@ func SetEndOfFile(handle Handle) (err error) { } func SetEnvironmentVariable(name *uint16, value *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0) + r1, _, e1 := syscall.SyscallN(procSetEnvironmentVariableW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value))) if r1 == 0 { err = errnoErr(e1) } @@ -3214,13 +3214,13 @@ func SetEnvironmentVariable(name *uint16, value *uint16) (err error) { } func SetErrorMode(mode uint32) (ret uint32) { - r0, _, _ := syscall.Syscall(procSetErrorMode.Addr(), 1, uintptr(mode), 0, 0) + r0, _, _ := syscall.SyscallN(procSetErrorMode.Addr(), uintptr(mode)) ret = uint32(r0) return } func SetEvent(event Handle) (err error) { - r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetEvent.Addr(), uintptr(event)) if r1 == 0 { err = errnoErr(e1) } @@ -3228,7 +3228,7 @@ func SetEvent(event Handle) (err error) { } func SetFileAttributes(name *uint16, attrs uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0) + r1, _, e1 := syscall.SyscallN(procSetFileAttributesW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(attrs)) if r1 == 0 { err = errnoErr(e1) } @@ -3236,7 +3236,7 @@ func SetFileAttributes(name *uint16, attrs uint32) (err error) { } func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) { - r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0) + r1, _, e1 := syscall.SyscallN(procSetFileCompletionNotificationModes.Addr(), uintptr(handle), uintptr(flags)) if r1 == 0 { err = errnoErr(e1) } @@ -3244,7 +3244,7 @@ func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) } func SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetFileInformationByHandle.Addr(), uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen)) if r1 == 0 { err = errnoErr(e1) } @@ -3252,7 +3252,7 @@ func SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inB } func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) { - r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0) + r0, _, e1 := syscall.SyscallN(procSetFilePointer.Addr(), uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence)) newlowoffset = uint32(r0) if newlowoffset == 0xffffffff { err = errnoErr(e1) @@ -3261,7 +3261,7 @@ func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence } func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) { - r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetFileTime.Addr(), uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime))) if r1 == 0 { err = errnoErr(e1) } @@ -3269,7 +3269,7 @@ func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetim } func SetFileValidData(handle Handle, validDataLength int64) (err error) { - r1, _, e1 := syscall.Syscall(procSetFileValidData.Addr(), 2, uintptr(handle), uintptr(validDataLength), 0) + r1, _, e1 := syscall.SyscallN(procSetFileValidData.Addr(), uintptr(handle), uintptr(validDataLength)) if r1 == 0 { err = errnoErr(e1) } @@ -3277,7 +3277,7 @@ func SetFileValidData(handle Handle, validDataLength int64) (err error) { } func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags)) + r1, _, e1 := syscall.SyscallN(procSetHandleInformation.Addr(), uintptr(handle), uintptr(mask), uintptr(flags)) if r1 == 0 { err = errnoErr(e1) } @@ -3285,7 +3285,7 @@ func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) } func SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) { - r0, _, e1 := syscall.Syscall6(procSetInformationJobObject.Addr(), 4, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), 0, 0) + r0, _, e1 := syscall.SyscallN(procSetInformationJobObject.Addr(), uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength)) ret = int(r0) if ret == 0 { err = errnoErr(e1) @@ -3294,7 +3294,7 @@ func SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobOb } func SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procSetNamedPipeHandleState.Addr(), 4, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetNamedPipeHandleState.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout))) if r1 == 0 { err = errnoErr(e1) } @@ -3302,7 +3302,7 @@ func SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uin } func SetPriorityClass(process Handle, priorityClass uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetPriorityClass.Addr(), 2, uintptr(process), uintptr(priorityClass), 0) + r1, _, e1 := syscall.SyscallN(procSetPriorityClass.Addr(), uintptr(process), uintptr(priorityClass)) if r1 == 0 { err = errnoErr(e1) } @@ -3314,7 +3314,7 @@ func SetProcessPriorityBoost(process Handle, disable bool) (err error) { if disable { _p0 = 1 } - r1, _, e1 := syscall.Syscall(procSetProcessPriorityBoost.Addr(), 2, uintptr(process), uintptr(_p0), 0) + r1, _, e1 := syscall.SyscallN(procSetProcessPriorityBoost.Addr(), uintptr(process), uintptr(_p0)) if r1 == 0 { err = errnoErr(e1) } @@ -3322,7 +3322,7 @@ func SetProcessPriorityBoost(process Handle, disable bool) (err error) { } func SetProcessShutdownParameters(level uint32, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetProcessShutdownParameters.Addr(), 2, uintptr(level), uintptr(flags), 0) + r1, _, e1 := syscall.SyscallN(procSetProcessShutdownParameters.Addr(), uintptr(level), uintptr(flags)) if r1 == 0 { err = errnoErr(e1) } @@ -3330,7 +3330,7 @@ func SetProcessShutdownParameters(level uint32, flags uint32) (err error) { } func SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procSetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(dwMinimumWorkingSetSize), uintptr(dwMaximumWorkingSetSize), uintptr(flags), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetProcessWorkingSetSizeEx.Addr(), uintptr(hProcess), uintptr(dwMinimumWorkingSetSize), uintptr(dwMaximumWorkingSetSize), uintptr(flags)) if r1 == 0 { err = errnoErr(e1) } @@ -3338,7 +3338,7 @@ func SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr } func SetStdHandle(stdhandle uint32, handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0) + r1, _, e1 := syscall.SyscallN(procSetStdHandle.Addr(), uintptr(stdhandle), uintptr(handle)) if r1 == 0 { err = errnoErr(e1) } @@ -3346,7 +3346,7 @@ func SetStdHandle(stdhandle uint32, handle Handle) (err error) { } func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0) + r1, _, e1 := syscall.SyscallN(procSetVolumeLabelW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName))) if r1 == 0 { err = errnoErr(e1) } @@ -3354,7 +3354,7 @@ func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) { } func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0) + r1, _, e1 := syscall.SyscallN(procSetVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName))) if r1 == 0 { err = errnoErr(e1) } @@ -3362,7 +3362,7 @@ func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err erro } func SetupComm(handle Handle, dwInQueue uint32, dwOutQueue uint32) (err error) { - r1, _, e1 := syscall.Syscall(procSetupComm.Addr(), 3, uintptr(handle), uintptr(dwInQueue), uintptr(dwOutQueue)) + r1, _, e1 := syscall.SyscallN(procSetupComm.Addr(), uintptr(handle), uintptr(dwInQueue), uintptr(dwOutQueue)) if r1 == 0 { err = errnoErr(e1) } @@ -3370,7 +3370,7 @@ func SetupComm(handle Handle, dwInQueue uint32, dwOutQueue uint32) (err error) { } func SizeofResource(module Handle, resInfo Handle) (size uint32, err error) { - r0, _, e1 := syscall.Syscall(procSizeofResource.Addr(), 2, uintptr(module), uintptr(resInfo), 0) + r0, _, e1 := syscall.SyscallN(procSizeofResource.Addr(), uintptr(module), uintptr(resInfo)) size = uint32(r0) if size == 0 { err = errnoErr(e1) @@ -3383,13 +3383,13 @@ func SleepEx(milliseconds uint32, alertable bool) (ret uint32) { if alertable { _p0 = 1 } - r0, _, _ := syscall.Syscall(procSleepEx.Addr(), 2, uintptr(milliseconds), uintptr(_p0), 0) + r0, _, _ := syscall.SyscallN(procSleepEx.Addr(), uintptr(milliseconds), uintptr(_p0)) ret = uint32(r0) return } func TerminateJobObject(job Handle, exitCode uint32) (err error) { - r1, _, e1 := syscall.Syscall(procTerminateJobObject.Addr(), 2, uintptr(job), uintptr(exitCode), 0) + r1, _, e1 := syscall.SyscallN(procTerminateJobObject.Addr(), uintptr(job), uintptr(exitCode)) if r1 == 0 { err = errnoErr(e1) } @@ -3397,7 +3397,7 @@ func TerminateJobObject(job Handle, exitCode uint32) (err error) { } func TerminateProcess(handle Handle, exitcode uint32) (err error) { - r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0) + r1, _, e1 := syscall.SyscallN(procTerminateProcess.Addr(), uintptr(handle), uintptr(exitcode)) if r1 == 0 { err = errnoErr(e1) } @@ -3405,7 +3405,7 @@ func TerminateProcess(handle Handle, exitcode uint32) (err error) { } func Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) { - r1, _, e1 := syscall.Syscall(procThread32First.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0) + r1, _, e1 := syscall.SyscallN(procThread32First.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry))) if r1 == 0 { err = errnoErr(e1) } @@ -3413,7 +3413,7 @@ func Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) { } func Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) { - r1, _, e1 := syscall.Syscall(procThread32Next.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0) + r1, _, e1 := syscall.SyscallN(procThread32Next.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry))) if r1 == 0 { err = errnoErr(e1) } @@ -3421,7 +3421,7 @@ func Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) { } func UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall6(procUnlockFileEx.Addr(), 5, uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)), 0) + r1, _, e1 := syscall.SyscallN(procUnlockFileEx.Addr(), uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped))) if r1 == 0 { err = errnoErr(e1) } @@ -3429,7 +3429,7 @@ func UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint3 } func UnmapViewOfFile(addr uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0) + r1, _, e1 := syscall.SyscallN(procUnmapViewOfFile.Addr(), uintptr(addr)) if r1 == 0 { err = errnoErr(e1) } @@ -3437,7 +3437,7 @@ func UnmapViewOfFile(addr uintptr) (err error) { } func updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) { - r1, _, e1 := syscall.Syscall9(procUpdateProcThreadAttribute.Addr(), 7, uintptr(unsafe.Pointer(attrlist)), uintptr(flags), uintptr(attr), uintptr(value), uintptr(size), uintptr(prevvalue), uintptr(unsafe.Pointer(returnedsize)), 0, 0) + r1, _, e1 := syscall.SyscallN(procUpdateProcThreadAttribute.Addr(), uintptr(unsafe.Pointer(attrlist)), uintptr(flags), uintptr(attr), uintptr(value), uintptr(size), uintptr(prevvalue), uintptr(unsafe.Pointer(returnedsize))) if r1 == 0 { err = errnoErr(e1) } @@ -3445,7 +3445,7 @@ func updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, } func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) { - r0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0) + r0, _, e1 := syscall.SyscallN(procVirtualAlloc.Addr(), uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect)) value = uintptr(r0) if value == 0 { err = errnoErr(e1) @@ -3454,7 +3454,7 @@ func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint3 } func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) { - r1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype)) + r1, _, e1 := syscall.SyscallN(procVirtualFree.Addr(), uintptr(address), uintptr(size), uintptr(freetype)) if r1 == 0 { err = errnoErr(e1) } @@ -3462,7 +3462,7 @@ func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) { } func VirtualLock(addr uintptr, length uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0) + r1, _, e1 := syscall.SyscallN(procVirtualLock.Addr(), uintptr(addr), uintptr(length)) if r1 == 0 { err = errnoErr(e1) } @@ -3470,7 +3470,7 @@ func VirtualLock(addr uintptr, length uintptr) (err error) { } func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0) + r1, _, e1 := syscall.SyscallN(procVirtualProtect.Addr(), uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect))) if r1 == 0 { err = errnoErr(e1) } @@ -3478,7 +3478,7 @@ func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect } func VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procVirtualProtectEx.Addr(), 5, uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect)), 0) + r1, _, e1 := syscall.SyscallN(procVirtualProtectEx.Addr(), uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect))) if r1 == 0 { err = errnoErr(e1) } @@ -3486,7 +3486,7 @@ func VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect } func VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procVirtualQuery.Addr(), 3, uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length)) + r1, _, e1 := syscall.SyscallN(procVirtualQuery.Addr(), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length)) if r1 == 0 { err = errnoErr(e1) } @@ -3494,7 +3494,7 @@ func VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintpt } func VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) { - r1, _, e1 := syscall.Syscall6(procVirtualQueryEx.Addr(), 4, uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length), 0, 0) + r1, _, e1 := syscall.SyscallN(procVirtualQueryEx.Addr(), uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length)) if r1 == 0 { err = errnoErr(e1) } @@ -3502,7 +3502,7 @@ func VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformat } func VirtualUnlock(addr uintptr, length uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0) + r1, _, e1 := syscall.SyscallN(procVirtualUnlock.Addr(), uintptr(addr), uintptr(length)) if r1 == 0 { err = errnoErr(e1) } @@ -3510,13 +3510,13 @@ func VirtualUnlock(addr uintptr, length uintptr) (err error) { } func WTSGetActiveConsoleSessionId() (sessionID uint32) { - r0, _, _ := syscall.Syscall(procWTSGetActiveConsoleSessionId.Addr(), 0, 0, 0, 0) + r0, _, _ := syscall.SyscallN(procWTSGetActiveConsoleSessionId.Addr()) sessionID = uint32(r0) return } func WaitCommEvent(handle Handle, lpEvtMask *uint32, lpOverlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall(procWaitCommEvent.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(lpEvtMask)), uintptr(unsafe.Pointer(lpOverlapped))) + r1, _, e1 := syscall.SyscallN(procWaitCommEvent.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpEvtMask)), uintptr(unsafe.Pointer(lpOverlapped))) if r1 == 0 { err = errnoErr(e1) } @@ -3528,7 +3528,7 @@ func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMil if waitAll { _p0 = 1 } - r0, _, e1 := syscall.Syscall6(procWaitForMultipleObjects.Addr(), 4, uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds), 0, 0) + r0, _, e1 := syscall.SyscallN(procWaitForMultipleObjects.Addr(), uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds)) event = uint32(r0) if event == 0xffffffff { err = errnoErr(e1) @@ -3537,7 +3537,7 @@ func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMil } func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) { - r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0) + r0, _, e1 := syscall.SyscallN(procWaitForSingleObject.Addr(), uintptr(handle), uintptr(waitMilliseconds)) event = uint32(r0) if event == 0xffffffff { err = errnoErr(e1) @@ -3546,7 +3546,7 @@ func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, } func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) { - r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0) + r1, _, e1 := syscall.SyscallN(procWriteConsoleW.Addr(), uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved))) if r1 == 0 { err = errnoErr(e1) } @@ -3558,7 +3558,7 @@ func writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) if len(buf) > 0 { _p0 = &buf[0] } - r1, _, e1 := syscall.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0) + r1, _, e1 := syscall.SyscallN(procWriteFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped))) if r1 == 0 { err = errnoErr(e1) } @@ -3566,7 +3566,7 @@ func writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) } func WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) { - r1, _, e1 := syscall.Syscall6(procWriteProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten)), 0) + r1, _, e1 := syscall.SyscallN(procWriteProcessMemory.Addr(), uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten))) if r1 == 0 { err = errnoErr(e1) } @@ -3574,7 +3574,7 @@ func WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size } func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0) + r1, _, e1 := syscall.SyscallN(procAcceptEx.Addr(), uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped))) if r1 == 0 { err = errnoErr(e1) } @@ -3582,12 +3582,12 @@ func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32 } func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) { - syscall.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0) + syscall.SyscallN(procGetAcceptExSockaddrs.Addr(), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen))) return } func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0) + r1, _, e1 := syscall.SyscallN(procTransmitFile.Addr(), uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags)) if r1 == 0 { err = errnoErr(e1) } @@ -3595,7 +3595,7 @@ func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint } func NetApiBufferFree(buf *byte) (neterr error) { - r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0) + r0, _, _ := syscall.SyscallN(procNetApiBufferFree.Addr(), uintptr(unsafe.Pointer(buf))) if r0 != 0 { neterr = syscall.Errno(r0) } @@ -3603,7 +3603,7 @@ func NetApiBufferFree(buf *byte) (neterr error) { } func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) { - r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType))) + r0, _, _ := syscall.SyscallN(procNetGetJoinInformation.Addr(), uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType))) if r0 != 0 { neterr = syscall.Errno(r0) } @@ -3611,7 +3611,7 @@ func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (nete } func NetUserEnum(serverName *uint16, level uint32, filter uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32, resumeHandle *uint32) (neterr error) { - r0, _, _ := syscall.Syscall9(procNetUserEnum.Addr(), 8, uintptr(unsafe.Pointer(serverName)), uintptr(level), uintptr(filter), uintptr(unsafe.Pointer(buf)), uintptr(prefMaxLen), uintptr(unsafe.Pointer(entriesRead)), uintptr(unsafe.Pointer(totalEntries)), uintptr(unsafe.Pointer(resumeHandle)), 0) + r0, _, _ := syscall.SyscallN(procNetUserEnum.Addr(), uintptr(unsafe.Pointer(serverName)), uintptr(level), uintptr(filter), uintptr(unsafe.Pointer(buf)), uintptr(prefMaxLen), uintptr(unsafe.Pointer(entriesRead)), uintptr(unsafe.Pointer(totalEntries)), uintptr(unsafe.Pointer(resumeHandle))) if r0 != 0 { neterr = syscall.Errno(r0) } @@ -3619,7 +3619,7 @@ func NetUserEnum(serverName *uint16, level uint32, filter uint32, buf **byte, pr } func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) { - r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0) + r0, _, _ := syscall.SyscallN(procNetUserGetInfo.Addr(), uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf))) if r0 != 0 { neterr = syscall.Errno(r0) } @@ -3627,7 +3627,7 @@ func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **by } func NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) { - r0, _, _ := syscall.Syscall12(procNtCreateFile.Addr(), 11, uintptr(unsafe.Pointer(handle)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(allocationSize)), uintptr(attributes), uintptr(share), uintptr(disposition), uintptr(options), uintptr(eabuffer), uintptr(ealength), 0) + r0, _, _ := syscall.SyscallN(procNtCreateFile.Addr(), uintptr(unsafe.Pointer(handle)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(allocationSize)), uintptr(attributes), uintptr(share), uintptr(disposition), uintptr(options), uintptr(eabuffer), uintptr(ealength)) if r0 != 0 { ntstatus = NTStatus(r0) } @@ -3635,7 +3635,7 @@ func NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO } func NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) { - r0, _, _ := syscall.Syscall15(procNtCreateNamedPipeFile.Addr(), 14, uintptr(unsafe.Pointer(pipe)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(share), uintptr(disposition), uintptr(options), uintptr(typ), uintptr(readMode), uintptr(completionMode), uintptr(maxInstances), uintptr(inboundQuota), uintptr(outputQuota), uintptr(unsafe.Pointer(timeout)), 0) + r0, _, _ := syscall.SyscallN(procNtCreateNamedPipeFile.Addr(), uintptr(unsafe.Pointer(pipe)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(share), uintptr(disposition), uintptr(options), uintptr(typ), uintptr(readMode), uintptr(completionMode), uintptr(maxInstances), uintptr(inboundQuota), uintptr(outputQuota), uintptr(unsafe.Pointer(timeout))) if r0 != 0 { ntstatus = NTStatus(r0) } @@ -3643,7 +3643,7 @@ func NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, i } func NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) { - r0, _, _ := syscall.Syscall6(procNtQueryInformationProcess.Addr(), 5, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), uintptr(unsafe.Pointer(retLen)), 0) + r0, _, _ := syscall.SyscallN(procNtQueryInformationProcess.Addr(), uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), uintptr(unsafe.Pointer(retLen))) if r0 != 0 { ntstatus = NTStatus(r0) } @@ -3651,7 +3651,7 @@ func NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe } func NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) { - r0, _, _ := syscall.Syscall6(procNtQuerySystemInformation.Addr(), 4, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen), uintptr(unsafe.Pointer(retLen)), 0, 0) + r0, _, _ := syscall.SyscallN(procNtQuerySystemInformation.Addr(), uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen), uintptr(unsafe.Pointer(retLen))) if r0 != 0 { ntstatus = NTStatus(r0) } @@ -3659,7 +3659,7 @@ func NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInf } func NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) { - r0, _, _ := syscall.Syscall6(procNtSetInformationFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), uintptr(class), 0) + r0, _, _ := syscall.SyscallN(procNtSetInformationFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), uintptr(class)) if r0 != 0 { ntstatus = NTStatus(r0) } @@ -3667,7 +3667,7 @@ func NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, } func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) { - r0, _, _ := syscall.Syscall6(procNtSetInformationProcess.Addr(), 4, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), 0, 0) + r0, _, _ := syscall.SyscallN(procNtSetInformationProcess.Addr(), uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen)) if r0 != 0 { ntstatus = NTStatus(r0) } @@ -3675,7 +3675,7 @@ func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.P } func NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) { - r0, _, _ := syscall.Syscall(procNtSetSystemInformation.Addr(), 3, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen)) + r0, _, _ := syscall.SyscallN(procNtSetSystemInformation.Addr(), uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen)) if r0 != 0 { ntstatus = NTStatus(r0) } @@ -3683,13 +3683,13 @@ func NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoL } func RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) { - r0, _, _ := syscall.Syscall(procRtlAddFunctionTable.Addr(), 3, uintptr(unsafe.Pointer(functionTable)), uintptr(entryCount), uintptr(baseAddress)) + r0, _, _ := syscall.SyscallN(procRtlAddFunctionTable.Addr(), uintptr(unsafe.Pointer(functionTable)), uintptr(entryCount), uintptr(baseAddress)) ret = r0 != 0 return } func RtlDefaultNpAcl(acl **ACL) (ntstatus error) { - r0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(acl)), 0, 0) + r0, _, _ := syscall.SyscallN(procRtlDefaultNpAcl.Addr(), uintptr(unsafe.Pointer(acl))) if r0 != 0 { ntstatus = NTStatus(r0) } @@ -3697,13 +3697,13 @@ func RtlDefaultNpAcl(acl **ACL) (ntstatus error) { } func RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) { - r0, _, _ := syscall.Syscall(procRtlDeleteFunctionTable.Addr(), 1, uintptr(unsafe.Pointer(functionTable)), 0, 0) + r0, _, _ := syscall.SyscallN(procRtlDeleteFunctionTable.Addr(), uintptr(unsafe.Pointer(functionTable))) ret = r0 != 0 return } func RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) { - r0, _, _ := syscall.Syscall6(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), 4, uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)), 0, 0) + r0, _, _ := syscall.SyscallN(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName))) if r0 != 0 { ntstatus = NTStatus(r0) } @@ -3711,7 +3711,7 @@ func RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFile } func RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) { - r0, _, _ := syscall.Syscall6(procRtlDosPathNameToRelativeNtPathName_U_WithStatus.Addr(), 4, uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)), 0, 0) + r0, _, _ := syscall.SyscallN(procRtlDosPathNameToRelativeNtPathName_U_WithStatus.Addr(), uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName))) if r0 != 0 { ntstatus = NTStatus(r0) } @@ -3719,18 +3719,18 @@ func RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString } func RtlGetCurrentPeb() (peb *PEB) { - r0, _, _ := syscall.Syscall(procRtlGetCurrentPeb.Addr(), 0, 0, 0, 0) + r0, _, _ := syscall.SyscallN(procRtlGetCurrentPeb.Addr()) peb = (*PEB)(unsafe.Pointer(r0)) return } func rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) { - syscall.Syscall(procRtlGetNtVersionNumbers.Addr(), 3, uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber))) + syscall.SyscallN(procRtlGetNtVersionNumbers.Addr(), uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber))) return } func rtlGetVersion(info *OsVersionInfoEx) (ntstatus error) { - r0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0) + r0, _, _ := syscall.SyscallN(procRtlGetVersion.Addr(), uintptr(unsafe.Pointer(info))) if r0 != 0 { ntstatus = NTStatus(r0) } @@ -3738,23 +3738,23 @@ func rtlGetVersion(info *OsVersionInfoEx) (ntstatus error) { } func RtlInitString(destinationString *NTString, sourceString *byte) { - syscall.Syscall(procRtlInitString.Addr(), 2, uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)), 0) + syscall.SyscallN(procRtlInitString.Addr(), uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString))) return } func RtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) { - syscall.Syscall(procRtlInitUnicodeString.Addr(), 2, uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)), 0) + syscall.SyscallN(procRtlInitUnicodeString.Addr(), uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString))) return } func rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) { - r0, _, _ := syscall.Syscall(procRtlNtStatusToDosErrorNoTeb.Addr(), 1, uintptr(ntstatus), 0, 0) + r0, _, _ := syscall.SyscallN(procRtlNtStatusToDosErrorNoTeb.Addr(), uintptr(ntstatus)) ret = syscall.Errno(r0) return } func clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) { - r0, _, _ := syscall.Syscall(procCLSIDFromString.Addr(), 2, uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)), 0) + r0, _, _ := syscall.SyscallN(procCLSIDFromString.Addr(), uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -3762,7 +3762,7 @@ func clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) { } func coCreateGuid(pguid *GUID) (ret error) { - r0, _, _ := syscall.Syscall(procCoCreateGuid.Addr(), 1, uintptr(unsafe.Pointer(pguid)), 0, 0) + r0, _, _ := syscall.SyscallN(procCoCreateGuid.Addr(), uintptr(unsafe.Pointer(pguid))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -3770,7 +3770,7 @@ func coCreateGuid(pguid *GUID) (ret error) { } func CoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) { - r0, _, _ := syscall.Syscall6(procCoGetObject.Addr(), 4, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bindOpts)), uintptr(unsafe.Pointer(guid)), uintptr(unsafe.Pointer(functionTable)), 0, 0) + r0, _, _ := syscall.SyscallN(procCoGetObject.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bindOpts)), uintptr(unsafe.Pointer(guid)), uintptr(unsafe.Pointer(functionTable))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -3778,7 +3778,7 @@ func CoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable * } func CoInitializeEx(reserved uintptr, coInit uint32) (ret error) { - r0, _, _ := syscall.Syscall(procCoInitializeEx.Addr(), 2, uintptr(reserved), uintptr(coInit), 0) + r0, _, _ := syscall.SyscallN(procCoInitializeEx.Addr(), uintptr(reserved), uintptr(coInit)) if r0 != 0 { ret = syscall.Errno(r0) } @@ -3786,23 +3786,23 @@ func CoInitializeEx(reserved uintptr, coInit uint32) (ret error) { } func CoTaskMemFree(address unsafe.Pointer) { - syscall.Syscall(procCoTaskMemFree.Addr(), 1, uintptr(address), 0, 0) + syscall.SyscallN(procCoTaskMemFree.Addr(), uintptr(address)) return } func CoUninitialize() { - syscall.Syscall(procCoUninitialize.Addr(), 0, 0, 0, 0) + syscall.SyscallN(procCoUninitialize.Addr()) return } func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) { - r0, _, _ := syscall.Syscall(procStringFromGUID2.Addr(), 3, uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax)) + r0, _, _ := syscall.SyscallN(procStringFromGUID2.Addr(), uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax)) chars = int32(r0) return } func EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procEnumProcessModules.Addr(), 4, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), 0, 0) + r1, _, e1 := syscall.SyscallN(procEnumProcessModules.Addr(), uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded))) if r1 == 0 { err = errnoErr(e1) } @@ -3810,7 +3810,7 @@ func EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uin } func EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procEnumProcessModulesEx.Addr(), 5, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), uintptr(filterFlag), 0) + r1, _, e1 := syscall.SyscallN(procEnumProcessModulesEx.Addr(), uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), uintptr(filterFlag)) if r1 == 0 { err = errnoErr(e1) } @@ -3818,7 +3818,7 @@ func EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *u } func enumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procEnumProcesses.Addr(), 3, uintptr(unsafe.Pointer(processIds)), uintptr(nSize), uintptr(unsafe.Pointer(bytesReturned))) + r1, _, e1 := syscall.SyscallN(procEnumProcesses.Addr(), uintptr(unsafe.Pointer(processIds)), uintptr(nSize), uintptr(unsafe.Pointer(bytesReturned))) if r1 == 0 { err = errnoErr(e1) } @@ -3826,7 +3826,7 @@ func enumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err } func GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetModuleBaseNameW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(baseName)), uintptr(size), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetModuleBaseNameW.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(baseName)), uintptr(size)) if r1 == 0 { err = errnoErr(e1) } @@ -3834,7 +3834,7 @@ func GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uin } func GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetModuleFileNameExW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetModuleFileNameExW.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size)) if r1 == 0 { err = errnoErr(e1) } @@ -3842,7 +3842,7 @@ func GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size u } func GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetModuleInformation.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(modinfo)), uintptr(cb), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetModuleInformation.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(modinfo)), uintptr(cb)) if r1 == 0 { err = errnoErr(e1) } @@ -3850,7 +3850,7 @@ func GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb } func QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) { - r1, _, e1 := syscall.Syscall(procQueryWorkingSetEx.Addr(), 3, uintptr(process), uintptr(pv), uintptr(cb)) + r1, _, e1 := syscall.SyscallN(procQueryWorkingSetEx.Addr(), uintptr(process), uintptr(pv), uintptr(cb)) if r1 == 0 { err = errnoErr(e1) } @@ -3862,7 +3862,7 @@ func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callb if ret != nil { return } - r0, _, _ := syscall.Syscall6(procSubscribeServiceChangeNotifications.Addr(), 5, uintptr(service), uintptr(eventType), uintptr(callback), uintptr(callbackCtx), uintptr(unsafe.Pointer(subscription)), 0) + r0, _, _ := syscall.SyscallN(procSubscribeServiceChangeNotifications.Addr(), uintptr(service), uintptr(eventType), uintptr(callback), uintptr(callbackCtx), uintptr(unsafe.Pointer(subscription))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -3874,12 +3874,12 @@ func UnsubscribeServiceChangeNotifications(subscription uintptr) (err error) { if err != nil { return } - syscall.Syscall(procUnsubscribeServiceChangeNotifications.Addr(), 1, uintptr(subscription), 0, 0) + syscall.SyscallN(procUnsubscribeServiceChangeNotifications.Addr(), uintptr(subscription)) return } func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize))) + r1, _, e1 := syscall.SyscallN(procGetUserNameExW.Addr(), uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize))) if r1&0xff == 0 { err = errnoErr(e1) } @@ -3887,7 +3887,7 @@ func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err er } func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0) + r1, _, e1 := syscall.SyscallN(procTranslateNameW.Addr(), uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize))) if r1&0xff == 0 { err = errnoErr(e1) } @@ -3895,7 +3895,7 @@ func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint } func SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiBuildDriverInfoList.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType)) + r1, _, e1 := syscall.SyscallN(procSetupDiBuildDriverInfoList.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType)) if r1 == 0 { err = errnoErr(e1) } @@ -3903,7 +3903,7 @@ func SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoDa } func SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiCallClassInstaller.Addr(), 3, uintptr(installFunction), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData))) + r1, _, e1 := syscall.SyscallN(procSetupDiCallClassInstaller.Addr(), uintptr(installFunction), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData))) if r1 == 0 { err = errnoErr(e1) } @@ -3911,7 +3911,7 @@ func SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInf } func SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiCancelDriverInfoSearch.Addr(), 1, uintptr(deviceInfoSet), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetupDiCancelDriverInfoSearch.Addr(), uintptr(deviceInfoSet)) if r1 == 0 { err = errnoErr(e1) } @@ -3919,7 +3919,7 @@ func SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) { } func setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) { - r1, _, e1 := syscall.Syscall6(procSetupDiClassGuidsFromNameExW.Addr(), 6, uintptr(unsafe.Pointer(className)), uintptr(unsafe.Pointer(classGuidList)), uintptr(classGuidListSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved)) + r1, _, e1 := syscall.SyscallN(procSetupDiClassGuidsFromNameExW.Addr(), uintptr(unsafe.Pointer(className)), uintptr(unsafe.Pointer(classGuidList)), uintptr(classGuidListSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved)) if r1 == 0 { err = errnoErr(e1) } @@ -3927,7 +3927,7 @@ func setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGu } func setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) { - r1, _, e1 := syscall.Syscall6(procSetupDiClassNameFromGuidExW.Addr(), 6, uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(className)), uintptr(classNameSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved)) + r1, _, e1 := syscall.SyscallN(procSetupDiClassNameFromGuidExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(className)), uintptr(classNameSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved)) if r1 == 0 { err = errnoErr(e1) } @@ -3935,7 +3935,7 @@ func setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSiz } func setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) { - r0, _, e1 := syscall.Syscall6(procSetupDiCreateDeviceInfoListExW.Addr(), 4, uintptr(unsafe.Pointer(classGUID)), uintptr(hwndParent), uintptr(unsafe.Pointer(machineName)), uintptr(reserved), 0, 0) + r0, _, e1 := syscall.SyscallN(procSetupDiCreateDeviceInfoListExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(hwndParent), uintptr(unsafe.Pointer(machineName)), uintptr(reserved)) handle = DevInfo(r0) if handle == DevInfo(InvalidHandle) { err = errnoErr(e1) @@ -3944,7 +3944,7 @@ func setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineN } func setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) { - r1, _, e1 := syscall.Syscall9(procSetupDiCreateDeviceInfoW.Addr(), 7, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(DeviceName)), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(DeviceDescription)), uintptr(hwndParent), uintptr(CreationFlags), uintptr(unsafe.Pointer(deviceInfoData)), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetupDiCreateDeviceInfoW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(DeviceName)), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(DeviceDescription)), uintptr(hwndParent), uintptr(CreationFlags), uintptr(unsafe.Pointer(deviceInfoData))) if r1 == 0 { err = errnoErr(e1) } @@ -3952,7 +3952,7 @@ func setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUI } func SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiDestroyDeviceInfoList.Addr(), 1, uintptr(deviceInfoSet), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetupDiDestroyDeviceInfoList.Addr(), uintptr(deviceInfoSet)) if r1 == 0 { err = errnoErr(e1) } @@ -3960,7 +3960,7 @@ func SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) { } func SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiDestroyDriverInfoList.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType)) + r1, _, e1 := syscall.SyscallN(procSetupDiDestroyDriverInfoList.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType)) if r1 == 0 { err = errnoErr(e1) } @@ -3968,7 +3968,7 @@ func SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfo } func setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiEnumDeviceInfo.Addr(), 3, uintptr(deviceInfoSet), uintptr(memberIndex), uintptr(unsafe.Pointer(deviceInfoData))) + r1, _, e1 := syscall.SyscallN(procSetupDiEnumDeviceInfo.Addr(), uintptr(deviceInfoSet), uintptr(memberIndex), uintptr(unsafe.Pointer(deviceInfoData))) if r1 == 0 { err = errnoErr(e1) } @@ -3976,7 +3976,7 @@ func setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfo } func setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) { - r1, _, e1 := syscall.Syscall6(procSetupDiEnumDriverInfoW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType), uintptr(memberIndex), uintptr(unsafe.Pointer(driverInfoData)), 0) + r1, _, e1 := syscall.SyscallN(procSetupDiEnumDriverInfoW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType), uintptr(memberIndex), uintptr(unsafe.Pointer(driverInfoData))) if r1 == 0 { err = errnoErr(e1) } @@ -3984,7 +3984,7 @@ func setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, d } func setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) { - r0, _, e1 := syscall.Syscall9(procSetupDiGetClassDevsExW.Addr(), 7, uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(Enumerator)), uintptr(hwndParent), uintptr(Flags), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(machineName)), uintptr(reserved), 0, 0) + r0, _, e1 := syscall.SyscallN(procSetupDiGetClassDevsExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(Enumerator)), uintptr(hwndParent), uintptr(Flags), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(machineName)), uintptr(reserved)) handle = DevInfo(r0) if handle == DevInfo(InvalidHandle) { err = errnoErr(e1) @@ -3993,7 +3993,7 @@ func setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintp } func SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procSetupDiGetClassInstallParamsW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), uintptr(unsafe.Pointer(requiredSize)), 0) + r1, _, e1 := syscall.SyscallN(procSetupDiGetClassInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), uintptr(unsafe.Pointer(requiredSize))) if r1 == 0 { err = errnoErr(e1) } @@ -4001,7 +4001,7 @@ func SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfo } func setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInfoListDetailW.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoSetDetailData)), 0) + r1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInfoListDetailW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoSetDetailData))) if r1 == 0 { err = errnoErr(e1) } @@ -4009,7 +4009,7 @@ func setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailDa } func setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams))) + r1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams))) if r1 == 0 { err = errnoErr(e1) } @@ -4017,7 +4017,7 @@ func setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInf } func setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procSetupDiGetDeviceInstanceIdW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(instanceId)), uintptr(instanceIdSize), uintptr(unsafe.Pointer(instanceIdRequiredSize)), 0) + r1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInstanceIdW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(instanceId)), uintptr(instanceIdSize), uintptr(unsafe.Pointer(instanceIdRequiredSize))) if r1 == 0 { err = errnoErr(e1) } @@ -4025,7 +4025,7 @@ func setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoDa } func setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procSetupDiGetDevicePropertyW.Addr(), 8, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(propertyKey)), uintptr(unsafe.Pointer(propertyType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(flags), 0) + r1, _, e1 := syscall.SyscallN(procSetupDiGetDevicePropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(propertyKey)), uintptr(unsafe.Pointer(propertyType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(flags)) if r1 == 0 { err = errnoErr(e1) } @@ -4033,7 +4033,7 @@ func setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData } func setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procSetupDiGetDeviceRegistryPropertyW.Addr(), 7, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyRegDataType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceRegistryPropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyRegDataType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize))) if r1 == 0 { err = errnoErr(e1) } @@ -4041,7 +4041,7 @@ func setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *Dev } func setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procSetupDiGetDriverInfoDetailW.Addr(), 6, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)), uintptr(unsafe.Pointer(driverInfoDetailData)), uintptr(driverInfoDetailDataSize), uintptr(unsafe.Pointer(requiredSize))) + r1, _, e1 := syscall.SyscallN(procSetupDiGetDriverInfoDetailW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)), uintptr(unsafe.Pointer(driverInfoDetailData)), uintptr(driverInfoDetailDataSize), uintptr(unsafe.Pointer(requiredSize))) if r1 == 0 { err = errnoErr(e1) } @@ -4049,7 +4049,7 @@ func setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoDa } func setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiGetSelectedDevice.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), 0) + r1, _, e1 := syscall.SyscallN(procSetupDiGetSelectedDevice.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData))) if r1 == 0 { err = errnoErr(e1) } @@ -4057,7 +4057,7 @@ func setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData } func setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiGetSelectedDriverW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData))) + r1, _, e1 := syscall.SyscallN(procSetupDiGetSelectedDriverW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData))) if r1 == 0 { err = errnoErr(e1) } @@ -4065,7 +4065,7 @@ func setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData } func SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) { - r0, _, e1 := syscall.Syscall6(procSetupDiOpenDevRegKey.Addr(), 6, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(Scope), uintptr(HwProfile), uintptr(KeyType), uintptr(samDesired)) + r0, _, e1 := syscall.SyscallN(procSetupDiOpenDevRegKey.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(Scope), uintptr(HwProfile), uintptr(KeyType), uintptr(samDesired)) key = Handle(r0) if key == InvalidHandle { err = errnoErr(e1) @@ -4074,7 +4074,7 @@ func SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Sc } func SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procSetupDiSetClassInstallParamsW.Addr(), 4, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), 0, 0) + r1, _, e1 := syscall.SyscallN(procSetupDiSetClassInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize)) if r1 == 0 { err = errnoErr(e1) } @@ -4082,7 +4082,7 @@ func SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfo } func SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiSetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams))) + r1, _, e1 := syscall.SyscallN(procSetupDiSetDeviceInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams))) if r1 == 0 { err = errnoErr(e1) } @@ -4090,7 +4090,7 @@ func SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInf } func setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procSetupDiSetDeviceRegistryPropertyW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), 0) + r1, _, e1 := syscall.SyscallN(procSetupDiSetDeviceRegistryPropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize)) if r1 == 0 { err = errnoErr(e1) } @@ -4098,7 +4098,7 @@ func setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *Dev } func SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiSetSelectedDevice.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), 0) + r1, _, e1 := syscall.SyscallN(procSetupDiSetSelectedDevice.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData))) if r1 == 0 { err = errnoErr(e1) } @@ -4106,7 +4106,7 @@ func SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData } func SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) { - r1, _, e1 := syscall.Syscall(procSetupDiSetSelectedDriverW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData))) + r1, _, e1 := syscall.SyscallN(procSetupDiSetSelectedDriverW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData))) if r1 == 0 { err = errnoErr(e1) } @@ -4114,7 +4114,7 @@ func SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData } func setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) { - r1, _, e1 := syscall.Syscall(procSetupUninstallOEMInfW.Addr(), 3, uintptr(unsafe.Pointer(infFileName)), uintptr(flags), uintptr(reserved)) + r1, _, e1 := syscall.SyscallN(procSetupUninstallOEMInfW.Addr(), uintptr(unsafe.Pointer(infFileName)), uintptr(flags), uintptr(reserved)) if r1 == 0 { err = errnoErr(e1) } @@ -4122,7 +4122,7 @@ func setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (er } func commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) { - r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0) + r0, _, e1 := syscall.SyscallN(procCommandLineToArgvW.Addr(), uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc))) argv = (**uint16)(unsafe.Pointer(r0)) if argv == nil { err = errnoErr(e1) @@ -4131,7 +4131,7 @@ func commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) { } func shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) { - r0, _, _ := syscall.Syscall6(procSHGetKnownFolderPath.Addr(), 4, uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)), 0, 0) + r0, _, _ := syscall.SyscallN(procSHGetKnownFolderPath.Addr(), uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -4139,7 +4139,7 @@ func shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **u } func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) { - r1, _, e1 := syscall.Syscall6(procShellExecuteW.Addr(), 6, uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd)) + r1, _, e1 := syscall.SyscallN(procShellExecuteW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd)) if r1 <= 32 { err = errnoErr(e1) } @@ -4147,12 +4147,12 @@ func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *ui } func EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) { - syscall.Syscall(procEnumChildWindows.Addr(), 3, uintptr(hwnd), uintptr(enumFunc), uintptr(param)) + syscall.SyscallN(procEnumChildWindows.Addr(), uintptr(hwnd), uintptr(enumFunc), uintptr(param)) return } func EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) { - r1, _, e1 := syscall.Syscall(procEnumWindows.Addr(), 2, uintptr(enumFunc), uintptr(param), 0) + r1, _, e1 := syscall.SyscallN(procEnumWindows.Addr(), uintptr(enumFunc), uintptr(param)) if r1 == 0 { err = errnoErr(e1) } @@ -4160,7 +4160,7 @@ func EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) { } func ExitWindowsEx(flags uint32, reason uint32) (err error) { - r1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0) + r1, _, e1 := syscall.SyscallN(procExitWindowsEx.Addr(), uintptr(flags), uintptr(reason)) if r1 == 0 { err = errnoErr(e1) } @@ -4168,7 +4168,7 @@ func ExitWindowsEx(flags uint32, reason uint32) (err error) { } func GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) { - r0, _, e1 := syscall.Syscall(procGetClassNameW.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(className)), uintptr(maxCount)) + r0, _, e1 := syscall.SyscallN(procGetClassNameW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(className)), uintptr(maxCount)) copied = int32(r0) if copied == 0 { err = errnoErr(e1) @@ -4177,19 +4177,19 @@ func GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, e } func GetDesktopWindow() (hwnd HWND) { - r0, _, _ := syscall.Syscall(procGetDesktopWindow.Addr(), 0, 0, 0, 0) + r0, _, _ := syscall.SyscallN(procGetDesktopWindow.Addr()) hwnd = HWND(r0) return } func GetForegroundWindow() (hwnd HWND) { - r0, _, _ := syscall.Syscall(procGetForegroundWindow.Addr(), 0, 0, 0, 0) + r0, _, _ := syscall.SyscallN(procGetForegroundWindow.Addr()) hwnd = HWND(r0) return } func GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) { - r1, _, e1 := syscall.Syscall(procGetGUIThreadInfo.Addr(), 2, uintptr(thread), uintptr(unsafe.Pointer(info)), 0) + r1, _, e1 := syscall.SyscallN(procGetGUIThreadInfo.Addr(), uintptr(thread), uintptr(unsafe.Pointer(info))) if r1 == 0 { err = errnoErr(e1) } @@ -4197,19 +4197,19 @@ func GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) { } func GetKeyboardLayout(tid uint32) (hkl Handle) { - r0, _, _ := syscall.Syscall(procGetKeyboardLayout.Addr(), 1, uintptr(tid), 0, 0) + r0, _, _ := syscall.SyscallN(procGetKeyboardLayout.Addr(), uintptr(tid)) hkl = Handle(r0) return } func GetShellWindow() (shellWindow HWND) { - r0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0) + r0, _, _ := syscall.SyscallN(procGetShellWindow.Addr()) shellWindow = HWND(r0) return } func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetWindowThreadProcessId.Addr(), 2, uintptr(hwnd), uintptr(unsafe.Pointer(pid)), 0) + r0, _, e1 := syscall.SyscallN(procGetWindowThreadProcessId.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(pid))) tid = uint32(r0) if tid == 0 { err = errnoErr(e1) @@ -4218,25 +4218,25 @@ func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) { } func IsWindow(hwnd HWND) (isWindow bool) { - r0, _, _ := syscall.Syscall(procIsWindow.Addr(), 1, uintptr(hwnd), 0, 0) + r0, _, _ := syscall.SyscallN(procIsWindow.Addr(), uintptr(hwnd)) isWindow = r0 != 0 return } func IsWindowUnicode(hwnd HWND) (isUnicode bool) { - r0, _, _ := syscall.Syscall(procIsWindowUnicode.Addr(), 1, uintptr(hwnd), 0, 0) + r0, _, _ := syscall.SyscallN(procIsWindowUnicode.Addr(), uintptr(hwnd)) isUnicode = r0 != 0 return } func IsWindowVisible(hwnd HWND) (isVisible bool) { - r0, _, _ := syscall.Syscall(procIsWindowVisible.Addr(), 1, uintptr(hwnd), 0, 0) + r0, _, _ := syscall.SyscallN(procIsWindowVisible.Addr(), uintptr(hwnd)) isVisible = r0 != 0 return } func LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) { - r0, _, e1 := syscall.Syscall(procLoadKeyboardLayoutW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(flags), 0) + r0, _, e1 := syscall.SyscallN(procLoadKeyboardLayoutW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(flags)) hkl = Handle(r0) if hkl == 0 { err = errnoErr(e1) @@ -4245,7 +4245,7 @@ func LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) { } func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { - r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0) + r0, _, e1 := syscall.SyscallN(procMessageBoxW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype)) ret = int32(r0) if ret == 0 { err = errnoErr(e1) @@ -4254,13 +4254,13 @@ func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret i } func ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) { - r0, _, _ := syscall.Syscall9(procToUnicodeEx.Addr(), 7, uintptr(vkey), uintptr(scancode), uintptr(unsafe.Pointer(keystate)), uintptr(unsafe.Pointer(pwszBuff)), uintptr(cchBuff), uintptr(flags), uintptr(hkl), 0, 0) + r0, _, _ := syscall.SyscallN(procToUnicodeEx.Addr(), uintptr(vkey), uintptr(scancode), uintptr(unsafe.Pointer(keystate)), uintptr(unsafe.Pointer(pwszBuff)), uintptr(cchBuff), uintptr(flags), uintptr(hkl)) ret = int32(r0) return } func UnloadKeyboardLayout(hkl Handle) (err error) { - r1, _, e1 := syscall.Syscall(procUnloadKeyboardLayout.Addr(), 1, uintptr(hkl), 0, 0) + r1, _, e1 := syscall.SyscallN(procUnloadKeyboardLayout.Addr(), uintptr(hkl)) if r1 == 0 { err = errnoErr(e1) } @@ -4272,7 +4272,7 @@ func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) ( if inheritExisting { _p0 = 1 } - r1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0)) + r1, _, e1 := syscall.SyscallN(procCreateEnvironmentBlock.Addr(), uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0)) if r1 == 0 { err = errnoErr(e1) } @@ -4280,7 +4280,7 @@ func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) ( } func DestroyEnvironmentBlock(block *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0) + r1, _, e1 := syscall.SyscallN(procDestroyEnvironmentBlock.Addr(), uintptr(unsafe.Pointer(block))) if r1 == 0 { err = errnoErr(e1) } @@ -4288,7 +4288,7 @@ func DestroyEnvironmentBlock(block *uint16) (err error) { } func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen))) + r1, _, e1 := syscall.SyscallN(procGetUserProfileDirectoryW.Addr(), uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen))) if r1 == 0 { err = errnoErr(e1) } @@ -4305,7 +4305,7 @@ func GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32 } func _GetFileVersionInfoSize(filename *uint16, zeroHandle *Handle) (bufSize uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetFileVersionInfoSizeW.Addr(), 2, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(zeroHandle)), 0) + r0, _, e1 := syscall.SyscallN(procGetFileVersionInfoSizeW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(zeroHandle))) bufSize = uint32(r0) if bufSize == 0 { err = errnoErr(e1) @@ -4323,7 +4323,7 @@ func GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer u } func _GetFileVersionInfo(filename *uint16, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) { - r1, _, e1 := syscall.Syscall6(procGetFileVersionInfoW.Addr(), 4, uintptr(unsafe.Pointer(filename)), uintptr(handle), uintptr(bufSize), uintptr(buffer), 0, 0) + r1, _, e1 := syscall.SyscallN(procGetFileVersionInfoW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(handle), uintptr(bufSize), uintptr(buffer)) if r1 == 0 { err = errnoErr(e1) } @@ -4340,7 +4340,7 @@ func VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer } func _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procVerQueryValueW.Addr(), 4, uintptr(block), uintptr(unsafe.Pointer(subBlock)), uintptr(pointerToBufferPointer), uintptr(unsafe.Pointer(bufSize)), 0, 0) + r1, _, e1 := syscall.SyscallN(procVerQueryValueW.Addr(), uintptr(block), uintptr(unsafe.Pointer(subBlock)), uintptr(pointerToBufferPointer), uintptr(unsafe.Pointer(bufSize))) if r1 == 0 { err = errnoErr(e1) } @@ -4348,7 +4348,7 @@ func _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPoint } func TimeBeginPeriod(period uint32) (err error) { - r1, _, e1 := syscall.Syscall(proctimeBeginPeriod.Addr(), 1, uintptr(period), 0, 0) + r1, _, e1 := syscall.SyscallN(proctimeBeginPeriod.Addr(), uintptr(period)) if r1 != 0 { err = errnoErr(e1) } @@ -4356,7 +4356,7 @@ func TimeBeginPeriod(period uint32) (err error) { } func TimeEndPeriod(period uint32) (err error) { - r1, _, e1 := syscall.Syscall(proctimeEndPeriod.Addr(), 1, uintptr(period), 0, 0) + r1, _, e1 := syscall.SyscallN(proctimeEndPeriod.Addr(), uintptr(period)) if r1 != 0 { err = errnoErr(e1) } @@ -4364,7 +4364,7 @@ func TimeEndPeriod(period uint32) (err error) { } func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) { - r0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data))) + r0, _, _ := syscall.SyscallN(procWinVerifyTrustEx.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data))) if r0 != 0 { ret = syscall.Errno(r0) } @@ -4372,12 +4372,12 @@ func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) } func FreeAddrInfoW(addrinfo *AddrinfoW) { - syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0) + syscall.SyscallN(procFreeAddrInfoW.Addr(), uintptr(unsafe.Pointer(addrinfo))) return } func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) { - r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0) + r0, _, _ := syscall.SyscallN(procGetAddrInfoW.Addr(), uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result))) if r0 != 0 { sockerr = syscall.Errno(r0) } @@ -4385,7 +4385,7 @@ func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, resul } func WSACleanup() (err error) { - r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0) + r1, _, e1 := syscall.SyscallN(procWSACleanup.Addr()) if r1 == socket_error { err = errnoErr(e1) } @@ -4393,7 +4393,7 @@ func WSACleanup() (err error) { } func WSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) { - r1, _, e1 := syscall.Syscall(procWSADuplicateSocketW.Addr(), 3, uintptr(s), uintptr(processID), uintptr(unsafe.Pointer(info))) + r1, _, e1 := syscall.SyscallN(procWSADuplicateSocketW.Addr(), uintptr(s), uintptr(processID), uintptr(unsafe.Pointer(info))) if r1 != 0 { err = errnoErr(e1) } @@ -4401,7 +4401,7 @@ func WSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err } func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) { - r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength))) + r0, _, e1 := syscall.SyscallN(procWSAEnumProtocolsW.Addr(), uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength))) n = int32(r0) if n == -1 { err = errnoErr(e1) @@ -4414,7 +4414,7 @@ func WSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, f if wait { _p0 = 1 } - r1, _, e1 := syscall.Syscall6(procWSAGetOverlappedResult.Addr(), 5, uintptr(h), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(bytes)), uintptr(_p0), uintptr(unsafe.Pointer(flags)), 0) + r1, _, e1 := syscall.SyscallN(procWSAGetOverlappedResult.Addr(), uintptr(h), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(bytes)), uintptr(_p0), uintptr(unsafe.Pointer(flags))) if r1 == 0 { err = errnoErr(e1) } @@ -4422,7 +4422,7 @@ func WSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, f } func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { - r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine)) + r1, _, e1 := syscall.SyscallN(procWSAIoctl.Addr(), uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine)) if r1 == socket_error { err = errnoErr(e1) } @@ -4430,7 +4430,7 @@ func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbo } func WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) { - r1, _, e1 := syscall.Syscall(procWSALookupServiceBeginW.Addr(), 3, uintptr(unsafe.Pointer(querySet)), uintptr(flags), uintptr(unsafe.Pointer(handle))) + r1, _, e1 := syscall.SyscallN(procWSALookupServiceBeginW.Addr(), uintptr(unsafe.Pointer(querySet)), uintptr(flags), uintptr(unsafe.Pointer(handle))) if r1 == socket_error { err = errnoErr(e1) } @@ -4438,7 +4438,7 @@ func WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) } func WSALookupServiceEnd(handle Handle) (err error) { - r1, _, e1 := syscall.Syscall(procWSALookupServiceEnd.Addr(), 1, uintptr(handle), 0, 0) + r1, _, e1 := syscall.SyscallN(procWSALookupServiceEnd.Addr(), uintptr(handle)) if r1 == socket_error { err = errnoErr(e1) } @@ -4446,7 +4446,7 @@ func WSALookupServiceEnd(handle Handle) (err error) { } func WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) { - r1, _, e1 := syscall.Syscall6(procWSALookupServiceNextW.Addr(), 4, uintptr(handle), uintptr(flags), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(querySet)), 0, 0) + r1, _, e1 := syscall.SyscallN(procWSALookupServiceNextW.Addr(), uintptr(handle), uintptr(flags), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(querySet))) if r1 == socket_error { err = errnoErr(e1) } @@ -4454,7 +4454,7 @@ func WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WS } func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) + r1, _, e1 := syscall.SyscallN(procWSARecv.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) if r1 == socket_error { err = errnoErr(e1) } @@ -4462,7 +4462,7 @@ func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32 } func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + r1, _, e1 := syscall.SyscallN(procWSARecvFrom.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) if r1 == socket_error { err = errnoErr(e1) } @@ -4470,7 +4470,7 @@ func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *ui } func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) + r1, _, e1 := syscall.SyscallN(procWSASend.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) if r1 == socket_error { err = errnoErr(e1) } @@ -4478,7 +4478,7 @@ func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, } func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + r1, _, e1 := syscall.SyscallN(procWSASendTo.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) if r1 == socket_error { err = errnoErr(e1) } @@ -4486,7 +4486,7 @@ func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32 } func WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall6(procWSASocketW.Addr(), 6, uintptr(af), uintptr(typ), uintptr(protocol), uintptr(unsafe.Pointer(protoInfo)), uintptr(group), uintptr(flags)) + r0, _, e1 := syscall.SyscallN(procWSASocketW.Addr(), uintptr(af), uintptr(typ), uintptr(protocol), uintptr(unsafe.Pointer(protoInfo)), uintptr(group), uintptr(flags)) handle = Handle(r0) if handle == InvalidHandle { err = errnoErr(e1) @@ -4495,7 +4495,7 @@ func WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, } func WSAStartup(verreq uint32, data *WSAData) (sockerr error) { - r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0) + r0, _, _ := syscall.SyscallN(procWSAStartup.Addr(), uintptr(verreq), uintptr(unsafe.Pointer(data))) if r0 != 0 { sockerr = syscall.Errno(r0) } @@ -4503,7 +4503,7 @@ func WSAStartup(verreq uint32, data *WSAData) (sockerr error) { } func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { - r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) + r1, _, e1 := syscall.SyscallN(procbind.Addr(), uintptr(s), uintptr(name), uintptr(namelen)) if r1 == socket_error { err = errnoErr(e1) } @@ -4511,7 +4511,7 @@ func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { } func Closesocket(s Handle) (err error) { - r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0) + r1, _, e1 := syscall.SyscallN(procclosesocket.Addr(), uintptr(s)) if r1 == socket_error { err = errnoErr(e1) } @@ -4519,7 +4519,7 @@ func Closesocket(s Handle) (err error) { } func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) { - r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) + r1, _, e1 := syscall.SyscallN(procconnect.Addr(), uintptr(s), uintptr(name), uintptr(namelen)) if r1 == socket_error { err = errnoErr(e1) } @@ -4536,7 +4536,7 @@ func GetHostByName(name string) (h *Hostent, err error) { } func _GetHostByName(name *byte) (h *Hostent, err error) { - r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + r0, _, e1 := syscall.SyscallN(procgethostbyname.Addr(), uintptr(unsafe.Pointer(name))) h = (*Hostent)(unsafe.Pointer(r0)) if h == nil { err = errnoErr(e1) @@ -4545,7 +4545,7 @@ func _GetHostByName(name *byte) (h *Hostent, err error) { } func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { - r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + r1, _, e1 := syscall.SyscallN(procgetpeername.Addr(), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if r1 == socket_error { err = errnoErr(e1) } @@ -4562,7 +4562,7 @@ func GetProtoByName(name string) (p *Protoent, err error) { } func _GetProtoByName(name *byte) (p *Protoent, err error) { - r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + r0, _, e1 := syscall.SyscallN(procgetprotobyname.Addr(), uintptr(unsafe.Pointer(name))) p = (*Protoent)(unsafe.Pointer(r0)) if p == nil { err = errnoErr(e1) @@ -4585,7 +4585,7 @@ func GetServByName(name string, proto string) (s *Servent, err error) { } func _GetServByName(name *byte, proto *byte) (s *Servent, err error) { - r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0) + r0, _, e1 := syscall.SyscallN(procgetservbyname.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto))) s = (*Servent)(unsafe.Pointer(r0)) if s == nil { err = errnoErr(e1) @@ -4594,7 +4594,7 @@ func _GetServByName(name *byte, proto *byte) (s *Servent, err error) { } func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { - r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + r1, _, e1 := syscall.SyscallN(procgetsockname.Addr(), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if r1 == socket_error { err = errnoErr(e1) } @@ -4602,7 +4602,7 @@ func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { } func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) { - r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0) + r1, _, e1 := syscall.SyscallN(procgetsockopt.Addr(), uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen))) if r1 == socket_error { err = errnoErr(e1) } @@ -4610,7 +4610,7 @@ func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int3 } func listen(s Handle, backlog int32) (err error) { - r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0) + r1, _, e1 := syscall.SyscallN(proclisten.Addr(), uintptr(s), uintptr(backlog)) if r1 == socket_error { err = errnoErr(e1) } @@ -4618,7 +4618,7 @@ func listen(s Handle, backlog int32) (err error) { } func Ntohs(netshort uint16) (u uint16) { - r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0) + r0, _, _ := syscall.SyscallN(procntohs.Addr(), uintptr(netshort)) u = uint16(r0) return } @@ -4628,7 +4628,7 @@ func recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen * if len(buf) > 0 { _p0 = &buf[0] } - r0, _, e1 := syscall.Syscall6(procrecvfrom.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + r0, _, e1 := syscall.SyscallN(procrecvfrom.Addr(), uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) n = int32(r0) if n == -1 { err = errnoErr(e1) @@ -4641,7 +4641,7 @@ func sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) ( if len(buf) > 0 { _p0 = &buf[0] } - r1, _, e1 := syscall.Syscall6(procsendto.Addr(), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(tolen)) + r1, _, e1 := syscall.SyscallN(procsendto.Addr(), uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(tolen)) if r1 == socket_error { err = errnoErr(e1) } @@ -4649,7 +4649,7 @@ func sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) ( } func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) { - r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0) + r1, _, e1 := syscall.SyscallN(procsetsockopt.Addr(), uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen)) if r1 == socket_error { err = errnoErr(e1) } @@ -4657,7 +4657,7 @@ func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32 } func shutdown(s Handle, how int32) (err error) { - r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0) + r1, _, e1 := syscall.SyscallN(procshutdown.Addr(), uintptr(s), uintptr(how)) if r1 == socket_error { err = errnoErr(e1) } @@ -4665,7 +4665,7 @@ func shutdown(s Handle, how int32) (err error) { } func socket(af int32, typ int32, protocol int32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol)) + r0, _, e1 := syscall.SyscallN(procsocket.Addr(), uintptr(af), uintptr(typ), uintptr(protocol)) handle = Handle(r0) if handle == InvalidHandle { err = errnoErr(e1) @@ -4674,7 +4674,7 @@ func socket(af int32, typ int32, protocol int32) (handle Handle, err error) { } func WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procWTSEnumerateSessionsW.Addr(), 5, uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)), 0) + r1, _, e1 := syscall.SyscallN(procWTSEnumerateSessionsW.Addr(), uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count))) if r1 == 0 { err = errnoErr(e1) } @@ -4682,12 +4682,12 @@ func WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessio } func WTSFreeMemory(ptr uintptr) { - syscall.Syscall(procWTSFreeMemory.Addr(), 1, uintptr(ptr), 0, 0) + syscall.SyscallN(procWTSFreeMemory.Addr(), uintptr(ptr)) return } func WTSQueryUserToken(session uint32, token *Token) (err error) { - r1, _, e1 := syscall.Syscall(procWTSQueryUserToken.Addr(), 2, uintptr(session), uintptr(unsafe.Pointer(token)), 0) + r1, _, e1 := syscall.SyscallN(procWTSQueryUserToken.Addr(), uintptr(session), uintptr(unsafe.Pointer(token))) if r1 == 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go b/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go index 89f5097be0..0fb4e7eea8 100644 --- a/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go +++ b/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go @@ -113,7 +113,7 @@ func PathEnclosingInterval(root *ast.File, start, end token.Pos) (path []ast.Nod // childrenOf elides the FuncType node beneath FuncDecl. // Add it back here for TypeParams, Params, Results, // all FieldLists). But we don't add it back for the "func" token - // even though it is is the tree at FuncDecl.Type.Func. + // even though it is the tree at FuncDecl.Type.Func. if decl, ok := node.(*ast.FuncDecl); ok { if fields, ok := child.(*ast.FieldList); ok && fields != decl.Recv { path = append(path, decl.Type) diff --git a/vendor/golang.org/x/tools/go/ast/inspector/inspector.go b/vendor/golang.org/x/tools/go/ast/inspector/inspector.go index bc44b2c8e7..a703cdfcf9 100644 --- a/vendor/golang.org/x/tools/go/ast/inspector/inspector.go +++ b/vendor/golang.org/x/tools/go/ast/inspector/inspector.go @@ -85,6 +85,7 @@ type event struct { // TODO: Experiment with storing only the second word of event.node (unsafe.Pointer). // Type can be recovered from the sole bit in typ. +// [Tried this, wasn't faster. --adonovan] // Preorder visits all the nodes of the files supplied to New in // depth-first order. It calls f(n) for each node n before it visits diff --git a/vendor/golang.org/x/tools/go/ast/inspector/typeof.go b/vendor/golang.org/x/tools/go/ast/inspector/typeof.go index be0f990a29..9852331a3d 100644 --- a/vendor/golang.org/x/tools/go/ast/inspector/typeof.go +++ b/vendor/golang.org/x/tools/go/ast/inspector/typeof.go @@ -12,8 +12,6 @@ package inspector import ( "go/ast" "math" - - _ "unsafe" ) const ( diff --git a/vendor/golang.org/x/tools/go/packages/doc.go b/vendor/golang.org/x/tools/go/packages/doc.go index f1931d10ee..366aab6b2c 100644 --- a/vendor/golang.org/x/tools/go/packages/doc.go +++ b/vendor/golang.org/x/tools/go/packages/doc.go @@ -76,6 +76,8 @@ uninterpreted to Load, so that it can interpret them according to the conventions of the underlying build system. See the Example function for typical usage. +See also [golang.org/x/tools/go/packages/internal/linecount] +for an example application. # The driver protocol diff --git a/vendor/golang.org/x/tools/go/ssa/builder.go b/vendor/golang.org/x/tools/go/ssa/builder.go index fe713a77b6..a5ef8fb40d 100644 --- a/vendor/golang.org/x/tools/go/ssa/builder.go +++ b/vendor/golang.org/x/tools/go/ssa/builder.go @@ -138,7 +138,7 @@ type builder struct { finished int // finished is the length of the prefix of fns containing built functions. // The task of building shared functions within the builder. - // Shared functions are ones the the builder may either create or lookup. + // Shared functions are ones the builder may either create or lookup. // These may be built by other builders in parallel. // The task is done when the builder has finished iterating, and it // waits for all shared functions to finish building. diff --git a/vendor/golang.org/x/tools/internal/imports/source_modindex.go b/vendor/golang.org/x/tools/internal/imports/source_modindex.go index 05229f06ce..ca745d4a1b 100644 --- a/vendor/golang.org/x/tools/internal/imports/source_modindex.go +++ b/vendor/golang.org/x/tools/internal/imports/source_modindex.go @@ -15,6 +15,10 @@ import ( // This code is here rather than in the modindex package // to avoid import loops +// TODO(adonovan): this code is only used by a test in this package. +// Can we delete it? Or is there a plan to call NewIndexSource from +// cmd/goimports? + // implements Source using modindex, so only for module cache. // // this is perhaps over-engineered. A new Index is read at first use. @@ -22,8 +26,8 @@ import ( // is read if the index changed. It is not clear the Mutex is needed. type IndexSource struct { modcachedir string - mutex sync.Mutex - ix *modindex.Index + mu sync.Mutex + index *modindex.Index // (access via getIndex) expires time.Time } @@ -39,13 +43,14 @@ func (s *IndexSource) LoadPackageNames(ctx context.Context, srcDir string, paths } func (s *IndexSource) ResolveReferences(ctx context.Context, filename string, missing References) ([]*Result, error) { - if err := s.maybeReadIndex(); err != nil { + index, err := s.getIndex() + if err != nil { return nil, err } var cs []modindex.Candidate for pkg, nms := range missing { for nm := range nms { - x := s.ix.Lookup(pkg, nm, false) + x := index.Lookup(pkg, nm, false) cs = append(cs, x...) } } @@ -74,30 +79,22 @@ func (s *IndexSource) ResolveReferences(ctx context.Context, filename string, mi return ans, nil } -func (s *IndexSource) maybeReadIndex() error { - s.mutex.Lock() - defer s.mutex.Unlock() - - var readIndex bool - if time.Now().After(s.expires) { - ok, err := modindex.Update(s.modcachedir) - if err != nil { - return err - } - if ok { - readIndex = true - } - } +func (s *IndexSource) getIndex() (*modindex.Index, error) { + s.mu.Lock() + defer s.mu.Unlock() - if readIndex || s.ix == nil { - ix, err := modindex.ReadIndex(s.modcachedir) + // (s.index = nil => s.expires is zero, + // so the first condition is strictly redundant. + // But it makes the postcondition very clear.) + if s.index == nil || time.Now().After(s.expires) { + index, err := modindex.Update(s.modcachedir) if err != nil { - return err + return nil, err } - s.ix = ix - // for now refresh every 15 minutes - s.expires = time.Now().Add(time.Minute * 15) + s.index = index + s.expires = index.ValidAt.Add(15 * time.Minute) // (refresh period) } + // Inv: s.index != nil - return nil + return s.index, nil } diff --git a/vendor/golang.org/x/tools/internal/modindex/directories.go b/vendor/golang.org/x/tools/internal/modindex/directories.go index 2faa6ce0b8..9a963744b5 100644 --- a/vendor/golang.org/x/tools/internal/modindex/directories.go +++ b/vendor/golang.org/x/tools/internal/modindex/directories.go @@ -10,7 +10,6 @@ import ( "os" "path/filepath" "regexp" - "slices" "strings" "sync" "time" @@ -20,50 +19,48 @@ import ( ) type directory struct { - path Relpath + path string // relative to GOMODCACHE importPath string version string // semantic version - syms []symbol } -// byImportPath groups the directories by import path, -// sorting the ones with the same import path by semantic version, -// most recent first. -func byImportPath(dirs []Relpath) (map[string][]*directory, error) { - ans := make(map[string][]*directory) // key is import path - for _, d := range dirs { - ip, sv, err := DirToImportPathVersion(d) +// bestDirByImportPath returns the best directory for each import +// path, where "best" means most recent semantic version. These import +// paths are inferred from the GOMODCACHE-relative dir names in dirs. +func bestDirByImportPath(dirs []string) (map[string]directory, error) { + dirsByPath := make(map[string]directory) + for _, dir := range dirs { + importPath, version, err := dirToImportPathVersion(dir) if err != nil { return nil, err } - ans[ip] = append(ans[ip], &directory{ - path: d, - importPath: ip, - version: sv, - }) - } - for k, v := range ans { - semanticSort(v) - ans[k] = v + new := directory{ + path: dir, + importPath: importPath, + version: version, + } + if old, ok := dirsByPath[importPath]; !ok || compareDirectory(new, old) < 0 { + dirsByPath[importPath] = new + } } - return ans, nil + return dirsByPath, nil } -// sort the directories by semantic version, latest first -func semanticSort(v []*directory) { - slices.SortFunc(v, func(l, r *directory) int { - if n := semver.Compare(l.version, r.version); n != 0 { - return -n // latest first - } - return strings.Compare(string(l.path), string(r.path)) - }) +// compareDirectory defines an ordering of path@version directories, +// by descending version, then by ascending path. +func compareDirectory(x, y directory) int { + if sign := -semver.Compare(x.version, y.version); sign != 0 { + return sign // latest first + } + return strings.Compare(string(x.path), string(y.path)) } // modCacheRegexp splits a relpathpath into module, module version, and package. var modCacheRegexp = regexp.MustCompile(`(.*)@([^/\\]*)(.*)`) -// DirToImportPathVersion computes import path and semantic version -func DirToImportPathVersion(dir Relpath) (string, string, error) { +// dirToImportPathVersion computes import path and semantic version +// from a GOMODCACHE-relative directory name. +func dirToImportPathVersion(dir string) (string, string, error) { m := modCacheRegexp.FindStringSubmatch(string(dir)) // m[1] is the module path // m[2] is the version major.minor.patch(-

     that contains the name
    +// Package modindex contains code for building and searching an
    +// [Index] of the Go module cache.
    +package modindex
    +
    +// The directory containing the index, returned by
    +// [IndexDir], contains a file index-name- that contains the name
     // of the current index. We believe writing that short file is atomic.
    -// ReadIndex reads that file to get the file name of the index.
    +// [Read] reads that file to get the file name of the index.
     // WriteIndex writes an index with a unique name and then
     // writes that name into a new version of index-name-.
     // ( stands for the CurrentVersion of the index format.)
    -package modindex
     
     import (
    +	"maps"
    +	"os"
     	"path/filepath"
     	"slices"
     	"strings"
    @@ -21,144 +25,95 @@ import (
     	"golang.org/x/mod/semver"
     )
     
    -// Create always creates a new index for the go module cache that is in cachedir.
    -func Create(cachedir string) error {
    -	_, err := indexModCache(cachedir, true)
    -	return err
    -}
    -
    -// Update the index for the go module cache that is in cachedir,
    -// If there is no existing index it will build one.
    -// If there are changed directories since the last index, it will
    -// write a new one and return true. Otherwise it returns false.
    -func Update(cachedir string) (bool, error) {
    -	return indexModCache(cachedir, false)
    +// Update updates the index for the specified Go
    +// module cache directory, creating it as needed.
    +// On success it returns the current index.
    +func Update(gomodcache string) (*Index, error) {
    +	prev, err := Read(gomodcache)
    +	if err != nil {
    +		if !os.IsNotExist(err) {
    +			return nil, err
    +		}
    +		prev = nil
    +	}
    +	return update(gomodcache, prev)
     }
     
    -// indexModCache writes an index current as of when it is called.
    -// If clear is true the index is constructed from all of GOMODCACHE
    -// otherwise the index is constructed from the last previous index
    -// and the updates to the cache. It returns true if it wrote an index,
    -// false otherwise.
    -func indexModCache(cachedir string, clear bool) (bool, error) {
    -	cachedir, err := filepath.Abs(cachedir)
    +// update builds, writes, and returns the current index.
    +//
    +// If old is nil, the new index is built from all of GOMODCACHE;
    +// otherwise it is built from the old index plus cache updates
    +// since the previous index's time.
    +func update(gomodcache string, old *Index) (*Index, error) {
    +	gomodcache, err := filepath.Abs(gomodcache)
     	if err != nil {
    -		return false, err
    +		return nil, err
     	}
    -	cd := Abspath(cachedir)
    -	future := time.Now().Add(24 * time.Hour) // safely in the future
    -	ok, err := modindexTimed(future, cd, clear)
    +	new, changed, err := build(gomodcache, old)
     	if err != nil {
    -		return false, err
    +		return nil, err
     	}
    -	return ok, nil
    -}
    -
    -// modindexTimed writes an index current as of onlyBefore.
    -// If clear is true the index is constructed from all of GOMODCACHE
    -// otherwise the index is constructed from the last previous index
    -// and all the updates to the cache before onlyBefore.
    -// It returns true if it wrote a new index, false if it wrote nothing.
    -func modindexTimed(onlyBefore time.Time, cachedir Abspath, clear bool) (bool, error) {
    -	var curIndex *Index
    -	if !clear {
    -		var err error
    -		curIndex, err = ReadIndex(string(cachedir))
    -		if clear && err != nil {
    -			return false, err
    +	if old == nil || changed {
    +		if err := write(gomodcache, new); err != nil {
    +			return nil, err
     		}
    -		// TODO(pjw): check that most of those directories still exist
    -	}
    -	cfg := &work{
    -		onlyBefore: onlyBefore,
    -		oldIndex:   curIndex,
    -		cacheDir:   cachedir,
    -	}
    -	if curIndex != nil {
    -		cfg.onlyAfter = curIndex.Changed
    -	}
    -	if err := cfg.buildIndex(); err != nil {
    -		return false, err
     	}
    -	if len(cfg.newIndex.Entries) == 0 && curIndex != nil {
    -		// no changes from existing curIndex, don't write a new index
    -		return false, nil
    -	}
    -	if err := cfg.writeIndex(); err != nil {
    -		return false, err
    -	}
    -	return true, nil
    -}
    -
    -type work struct {
    -	onlyBefore time.Time // do not use directories later than this
    -	onlyAfter  time.Time // only interested in directories after this
    -	// directories from before onlyAfter come from oldIndex
    -	oldIndex *Index
    -	newIndex *Index
    -	cacheDir Abspath
    +	return new, nil
     }
     
    -func (w *work) buildIndex() error {
    -	// The effective date of the new index should be at least
    -	// slightly earlier than when the directories are scanned
    -	// so set it now.
    -	w.newIndex = &Index{Changed: time.Now(), Cachedir: w.cacheDir}
    -	dirs := findDirs(string(w.cacheDir), w.onlyAfter, w.onlyBefore)
    -	if len(dirs) == 0 {
    -		return nil
    +// build returns a new index for the specified Go module cache (an
    +// absolute path).
    +//
    +// If an old index is provided, only directories more recent than it
    +// that it are scanned; older directories are provided by the old
    +// Index.
    +//
    +// The boolean result indicates whether new entries were found.
    +func build(gomodcache string, old *Index) (*Index, bool, error) {
    +	// Set the time window.
    +	var start time.Time // = dawn of time
    +	if old != nil {
    +		start = old.ValidAt
     	}
    -	newdirs, err := byImportPath(dirs)
    +	now := time.Now()
    +	end := now.Add(24 * time.Hour) // safely in the future
    +
    +	// Enumerate GOMODCACHE package directories.
    +	// Choose the best (latest) package for each import path.
    +	pkgDirs := findDirs(gomodcache, start, end)
    +	dirByPath, err := bestDirByImportPath(pkgDirs)
     	if err != nil {
    -		return err
    +		return nil, false, err
     	}
    -	// for each import path it might occur only in newdirs,
    -	// only in w.oldIndex, or in both.
    -	// If it occurs in both, use the semantically later one
    -	if w.oldIndex != nil {
    -		for _, e := range w.oldIndex.Entries {
    -			found, ok := newdirs[e.ImportPath]
    -			if !ok {
    -				w.newIndex.Entries = append(w.newIndex.Entries, e)
    -				continue // use this one, there is no new one
    -			}
    -			if semver.Compare(found[0].version, e.Version) > 0 {
    -				// use the new one
    -			} else {
    -				// use the old one, forget the new one
    -				w.newIndex.Entries = append(w.newIndex.Entries, e)
    -				delete(newdirs, e.ImportPath)
    +
    +	// For each import path it might occur only in
    +	// dirByPath, only in old, or in both.
    +	// If both, use the semantically later one.
    +	var entries []Entry
    +	if old != nil {
    +		for _, entry := range old.Entries {
    +			dir, ok := dirByPath[entry.ImportPath]
    +			if !ok || semver.Compare(dir.version, entry.Version) <= 0 {
    +				// New dir is missing or not more recent; use old entry.
    +				entries = append(entries, entry)
    +				delete(dirByPath, entry.ImportPath)
     			}
     		}
     	}
    -	// get symbol information for all the new diredtories
    -	getSymbols(w.cacheDir, newdirs)
    -	// assemble the new index entries
    -	for k, v := range newdirs {
    -		d := v[0]
    -		pkg, names := processSyms(d.syms)
    -		if pkg == "" {
    -			continue // PJW: does this ever happen?
    -		}
    -		entry := Entry{
    -			PkgName:    pkg,
    -			Dir:        d.path,
    -			ImportPath: k,
    -			Version:    d.version,
    -			Names:      names,
    -		}
    -		w.newIndex.Entries = append(w.newIndex.Entries, entry)
    -	}
    -	// sort the entries in the new index
    -	slices.SortFunc(w.newIndex.Entries, func(l, r Entry) int {
    -		if n := strings.Compare(l.PkgName, r.PkgName); n != 0 {
    +
    +	// Extract symbol information for all the new directories.
    +	newEntries := extractSymbols(gomodcache, maps.Values(dirByPath))
    +	entries = append(entries, newEntries...)
    +	slices.SortFunc(entries, func(x, y Entry) int {
    +		if n := strings.Compare(x.PkgName, y.PkgName); n != 0 {
     			return n
     		}
    -		return strings.Compare(l.ImportPath, r.ImportPath)
    +		return strings.Compare(x.ImportPath, y.ImportPath)
     	})
    -	return nil
    -}
     
    -func (w *work) writeIndex() error {
    -	return writeIndex(w.cacheDir, w.newIndex)
    +	return &Index{
    +		GOMODCACHE: gomodcache,
    +		ValidAt:    now, // time before the directories were scanned
    +		Entries:    entries,
    +	}, len(newEntries) > 0, nil
     }
    diff --git a/vendor/golang.org/x/tools/internal/modindex/symbols.go b/vendor/golang.org/x/tools/internal/modindex/symbols.go
    index 31a502c589..fe24db9b13 100644
    --- a/vendor/golang.org/x/tools/internal/modindex/symbols.go
    +++ b/vendor/golang.org/x/tools/internal/modindex/symbols.go
    @@ -10,11 +10,13 @@ import (
     	"go/parser"
     	"go/token"
     	"go/types"
    +	"iter"
     	"os"
     	"path/filepath"
     	"runtime"
     	"slices"
     	"strings"
    +	"sync"
     
     	"golang.org/x/sync/errgroup"
     )
    @@ -34,41 +36,65 @@ type symbol struct {
     	sig  string // signature information, for F
     }
     
    -// find the symbols for the best directories
    -func getSymbols(cd Abspath, dirs map[string][]*directory) {
    +// extractSymbols returns a (new, unordered) array of Entries, one for
    +// each provided package directory, describing its exported symbols.
    +func extractSymbols(cwd string, dirs iter.Seq[directory]) []Entry {
    +	var (
    +		mu      sync.Mutex
    +		entries []Entry
    +	)
    +
     	var g errgroup.Group
     	g.SetLimit(max(2, runtime.GOMAXPROCS(0)/2))
    -	for _, vv := range dirs {
    -		// throttling some day?
    -		d := vv[0]
    +	for dir := range dirs {
     		g.Go(func() error {
    -			thedir := filepath.Join(string(cd), string(d.path))
    +			thedir := filepath.Join(cwd, string(dir.path))
     			mode := parser.SkipObjectResolution | parser.ParseComments
     
    -			fi, err := os.ReadDir(thedir)
    +			// Parse all Go files in dir and extract symbols.
    +			dirents, err := os.ReadDir(thedir)
     			if err != nil {
     				return nil // log this someday?
     			}
    -			for _, fx := range fi {
    -				if !strings.HasSuffix(fx.Name(), ".go") || strings.HasSuffix(fx.Name(), "_test.go") {
    +			var syms []symbol
    +			for _, dirent := range dirents {
    +				if !strings.HasSuffix(dirent.Name(), ".go") ||
    +					strings.HasSuffix(dirent.Name(), "_test.go") {
     					continue
     				}
    -				fname := filepath.Join(thedir, fx.Name())
    +				fname := filepath.Join(thedir, dirent.Name())
     				tr, err := parser.ParseFile(token.NewFileSet(), fname, nil, mode)
     				if err != nil {
     					continue // ignore errors, someday log them?
     				}
    -				d.syms = append(d.syms, getFileExports(tr)...)
    +				syms = append(syms, getFileExports(tr)...)
    +			}
    +
    +			// Create an entry for the package.
    +			pkg, names := processSyms(syms)
    +			if pkg != "" {
    +				mu.Lock()
    +				defer mu.Unlock()
    +				entries = append(entries, Entry{
    +					PkgName:    pkg,
    +					Dir:        dir.path,
    +					ImportPath: dir.importPath,
    +					Version:    dir.version,
    +					Names:      names,
    +				})
     			}
    +
     			return nil
     		})
     	}
    -	g.Wait()
    +	g.Wait() // ignore error
    +
    +	return entries
     }
     
     func getFileExports(f *ast.File) []symbol {
     	pkg := f.Name.Name
    -	if pkg == "main" {
    +	if pkg == "main" || pkg == "" {
     		return nil
     	}
     	var ans []symbol
    @@ -202,17 +228,18 @@ func processSyms(syms []symbol) (string, []string) {
     	pkg := syms[0].pkg
     	var names []string
     	for _, s := range syms {
    +		if s.pkg != pkg {
    +			// Symbols came from two files in same dir
    +			// with different package declarations.
    +			continue
    +		}
     		var nx string
    -		if s.pkg == pkg {
    -			if s.sig != "" {
    -				nx = fmt.Sprintf("%s %s %s", s.name, s.kind, s.sig)
    -			} else {
    -				nx = fmt.Sprintf("%s %s", s.name, s.kind)
    -			}
    -			names = append(names, nx)
    +		if s.sig != "" {
    +			nx = fmt.Sprintf("%s %s %s", s.name, s.kind, s.sig)
     		} else {
    -			continue // PJW: do we want to keep track of these?
    +			nx = fmt.Sprintf("%s %s", s.name, s.kind)
     		}
    +		names = append(names, nx)
     	}
     	return pkg, names
     }
    diff --git a/vendor/golang.org/x/tools/internal/modindex/types.go b/vendor/golang.org/x/tools/internal/modindex/types.go
    deleted file mode 100644
    index ece4488630..0000000000
    --- a/vendor/golang.org/x/tools/internal/modindex/types.go
    +++ /dev/null
    @@ -1,25 +0,0 @@
    -// Copyright 2024 The Go Authors. All rights reserved.
    -// Use of this source code is governed by a BSD-style
    -// license that can be found in the LICENSE file.
    -
    -package modindex
    -
    -import (
    -	"strings"
    -)
    -
    -// some special types to avoid confusions
    -
    -// distinguish various types of directory names. It's easy to get confused.
    -type Abspath string // absolute paths
    -type Relpath string // paths with GOMODCACHE prefix removed
    -
    -func toRelpath(cachedir Abspath, s string) Relpath {
    -	if strings.HasPrefix(s, string(cachedir)) {
    -		if s == string(cachedir) {
    -			return Relpath("")
    -		}
    -		return Relpath(s[len(cachedir)+1:])
    -	}
    -	return Relpath(s)
    -}
    diff --git a/vendor/google.golang.org/api/internal/version.go b/vendor/google.golang.org/api/internal/version.go
    index ddb7994911..5953c107a1 100644
    --- a/vendor/google.golang.org/api/internal/version.go
    +++ b/vendor/google.golang.org/api/internal/version.go
    @@ -5,4 +5,4 @@
     package internal
     
     // Version is the current tagged release of the library.
    -const Version = "0.247.0"
    +const Version = "0.248.0"
    diff --git a/vendor/google.golang.org/api/storage/v1/storage-api.json b/vendor/google.golang.org/api/storage/v1/storage-api.json
    index 251396d495..a6c556d7be 100644
    --- a/vendor/google.golang.org/api/storage/v1/storage-api.json
    +++ b/vendor/google.golang.org/api/storage/v1/storage-api.json
    @@ -253,7 +253,7 @@
           "location": "northamerica-south1"
         }
       ],
    -  "etag": "\"31383438373536343936353833383831333836\"",
    +  "etag": "\"3136333632333439343533383832363638313632\"",
       "icons": {
         "x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
         "x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
    @@ -4544,7 +4544,7 @@
           }
         }
       },
    -  "revision": "20250718",
    +  "revision": "20250814",
       "rootUrl": "https://storage.googleapis.com/",
       "schemas": {
         "AdvanceRelocateBucketOperationRequest": {
    @@ -5401,6 +5401,16 @@
               "description": "If true, copies the source object's ACL; otherwise, uses the bucket's default object ACL. The default is false.",
               "type": "boolean"
             },
    +        "createdAfterTime": {
    +          "description": "Restores only the objects that were created after this time.",
    +          "format": "date-time",
    +          "type": "string"
    +        },
    +        "createdBeforeTime": {
    +          "description": "Restores only the objects that were created before this time.",
    +          "format": "date-time",
    +          "type": "string"
    +        },
             "matchGlobs": {
               "description": "Restores only the objects matching any of the specified glob(s). If this parameter is not specified, all objects will be restored within the specified time range.",
               "items": {
    diff --git a/vendor/google.golang.org/api/storage/v1/storage-gen.go b/vendor/google.golang.org/api/storage/v1/storage-gen.go
    index 0714b7e089..ebed37019c 100644
    --- a/vendor/google.golang.org/api/storage/v1/storage-gen.go
    +++ b/vendor/google.golang.org/api/storage/v1/storage-gen.go
    @@ -1645,6 +1645,12 @@ type BulkRestoreObjectsRequest struct {
     	// CopySourceAcl: If true, copies the source object's ACL; otherwise, uses the
     	// bucket's default object ACL. The default is false.
     	CopySourceAcl bool `json:"copySourceAcl,omitempty"`
    +	// CreatedAfterTime: Restores only the objects that were created after this
    +	// time.
    +	CreatedAfterTime string `json:"createdAfterTime,omitempty"`
    +	// CreatedBeforeTime: Restores only the objects that were created before this
    +	// time.
    +	CreatedBeforeTime string `json:"createdBeforeTime,omitempty"`
     	// MatchGlobs: Restores only the objects matching any of the specified glob(s).
     	// If this parameter is not specified, all objects will be restored within the
     	// specified time range.
    diff --git a/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go b/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go
    index bf1aba0e85..7b9f01afb0 100644
    --- a/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go
    +++ b/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go
    @@ -9,7 +9,7 @@ import "google.golang.org/protobuf/types/descriptorpb"
     
     const (
     	Minimum = descriptorpb.Edition_EDITION_PROTO2
    -	Maximum = descriptorpb.Edition_EDITION_2023
    +	Maximum = descriptorpb.Edition_EDITION_2024
     
     	// MaximumKnown is the maximum edition that is known to Go Protobuf, but not
     	// declared as supported. In other words: end users cannot use it, but
    diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/editions.go b/vendor/google.golang.org/protobuf/internal/filedesc/editions.go
    index a0aad2777f..66ba906806 100644
    --- a/vendor/google.golang.org/protobuf/internal/filedesc/editions.go
    +++ b/vendor/google.golang.org/protobuf/internal/filedesc/editions.go
    @@ -13,8 +13,10 @@ import (
     	"google.golang.org/protobuf/reflect/protoreflect"
     )
     
    -var defaultsCache = make(map[Edition]EditionFeatures)
    -var defaultsKeys = []Edition{}
    +var (
    +	defaultsCache = make(map[Edition]EditionFeatures)
    +	defaultsKeys  = []Edition{}
    +)
     
     func init() {
     	unmarshalEditionDefaults(editiondefaults.Defaults)
    @@ -41,7 +43,7 @@ func unmarshalGoFeature(b []byte, parent EditionFeatures) EditionFeatures {
     			b = b[m:]
     			parent.StripEnumPrefix = int(v)
     		default:
    -			panic(fmt.Sprintf("unkown field number %d while unmarshalling GoFeatures", num))
    +			panic(fmt.Sprintf("unknown field number %d while unmarshalling GoFeatures", num))
     		}
     	}
     	return parent
    @@ -76,7 +78,7 @@ func unmarshalFeatureSet(b []byte, parent EditionFeatures) EditionFeatures {
     				// DefaultSymbolVisibility is enforced in protoc, runtimes should not
     				// inspect this value.
     			default:
    -				panic(fmt.Sprintf("unkown field number %d while unmarshalling FeatureSet", num))
    +				panic(fmt.Sprintf("unknown field number %d while unmarshalling FeatureSet", num))
     			}
     		case protowire.BytesType:
     			v, m := protowire.ConsumeBytes(b)
    @@ -150,7 +152,7 @@ func unmarshalEditionDefaults(b []byte) {
     			_, m := protowire.ConsumeVarint(b)
     			b = b[m:]
     		default:
    -			panic(fmt.Sprintf("unkown field number %d while unmarshalling EditionDefault", num))
    +			panic(fmt.Sprintf("unknown field number %d while unmarshalling EditionDefault", num))
     		}
     	}
     }
    diff --git a/vendor/google.golang.org/protobuf/internal/genid/api_gen.go b/vendor/google.golang.org/protobuf/internal/genid/api_gen.go
    index df8f918501..3ceb6fa7f5 100644
    --- a/vendor/google.golang.org/protobuf/internal/genid/api_gen.go
    +++ b/vendor/google.golang.org/protobuf/internal/genid/api_gen.go
    @@ -27,6 +27,7 @@ const (
     	Api_SourceContext_field_name protoreflect.Name = "source_context"
     	Api_Mixins_field_name        protoreflect.Name = "mixins"
     	Api_Syntax_field_name        protoreflect.Name = "syntax"
    +	Api_Edition_field_name       protoreflect.Name = "edition"
     
     	Api_Name_field_fullname          protoreflect.FullName = "google.protobuf.Api.name"
     	Api_Methods_field_fullname       protoreflect.FullName = "google.protobuf.Api.methods"
    @@ -35,6 +36,7 @@ const (
     	Api_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Api.source_context"
     	Api_Mixins_field_fullname        protoreflect.FullName = "google.protobuf.Api.mixins"
     	Api_Syntax_field_fullname        protoreflect.FullName = "google.protobuf.Api.syntax"
    +	Api_Edition_field_fullname       protoreflect.FullName = "google.protobuf.Api.edition"
     )
     
     // Field numbers for google.protobuf.Api.
    @@ -46,6 +48,7 @@ const (
     	Api_SourceContext_field_number protoreflect.FieldNumber = 5
     	Api_Mixins_field_number        protoreflect.FieldNumber = 6
     	Api_Syntax_field_number        protoreflect.FieldNumber = 7
    +	Api_Edition_field_number       protoreflect.FieldNumber = 8
     )
     
     // Names for google.protobuf.Method.
    @@ -63,6 +66,7 @@ const (
     	Method_ResponseStreaming_field_name protoreflect.Name = "response_streaming"
     	Method_Options_field_name           protoreflect.Name = "options"
     	Method_Syntax_field_name            protoreflect.Name = "syntax"
    +	Method_Edition_field_name           protoreflect.Name = "edition"
     
     	Method_Name_field_fullname              protoreflect.FullName = "google.protobuf.Method.name"
     	Method_RequestTypeUrl_field_fullname    protoreflect.FullName = "google.protobuf.Method.request_type_url"
    @@ -71,6 +75,7 @@ const (
     	Method_ResponseStreaming_field_fullname protoreflect.FullName = "google.protobuf.Method.response_streaming"
     	Method_Options_field_fullname           protoreflect.FullName = "google.protobuf.Method.options"
     	Method_Syntax_field_fullname            protoreflect.FullName = "google.protobuf.Method.syntax"
    +	Method_Edition_field_fullname           protoreflect.FullName = "google.protobuf.Method.edition"
     )
     
     // Field numbers for google.protobuf.Method.
    @@ -82,6 +87,7 @@ const (
     	Method_ResponseStreaming_field_number protoreflect.FieldNumber = 5
     	Method_Options_field_number           protoreflect.FieldNumber = 6
     	Method_Syntax_field_number            protoreflect.FieldNumber = 7
    +	Method_Edition_field_number           protoreflect.FieldNumber = 8
     )
     
     // Names for google.protobuf.Mixin.
    diff --git a/vendor/google.golang.org/protobuf/internal/version/version.go b/vendor/google.golang.org/protobuf/internal/version/version.go
    index a53364c599..31e79a6535 100644
    --- a/vendor/google.golang.org/protobuf/internal/version/version.go
    +++ b/vendor/google.golang.org/protobuf/internal/version/version.go
    @@ -52,7 +52,7 @@ import (
     const (
     	Major      = 1
     	Minor      = 36
    -	Patch      = 7
    +	Patch      = 9
     	PreRelease = ""
     )
     
    diff --git a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
    index 6843b0beaf..4eacb523c3 100644
    --- a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
    +++ b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go
    @@ -2873,7 +2873,10 @@ type FieldOptions struct {
     	// for accessors, or it will be completely ignored; in the very least, this
     	// is a formalization for deprecating fields.
     	Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
    +	// DEPRECATED. DO NOT USE!
     	// For Google-internal migration only. Do not use.
    +	//
    +	// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.
     	Weak *bool `protobuf:"varint,10,opt,name=weak,def=0" json:"weak,omitempty"`
     	// Indicate that the field value should not be printed out when using debug
     	// formats, e.g. when the field contains sensitive credentials.
    @@ -2977,6 +2980,7 @@ func (x *FieldOptions) GetDeprecated() bool {
     	return Default_FieldOptions_Deprecated
     }
     
    +// Deprecated: Marked as deprecated in google/protobuf/descriptor.proto.
     func (x *FieldOptions) GetWeak() bool {
     	if x != nil && x.Weak != nil {
     		return *x.Weak
    @@ -4843,7 +4847,7 @@ const file_google_protobuf_descriptor_proto_rawDesc = "" +
     	"&deprecated_legacy_json_field_conflicts\x18\v \x01(\bB\x02\x18\x01R\"deprecatedLegacyJsonFieldConflicts\x127\n" +
     	"\bfeatures\x18\f \x01(\v2\x1b.google.protobuf.FeatureSetR\bfeatures\x12X\n" +
     	"\x14uninterpreted_option\x18\xe7\a \x03(\v2$.google.protobuf.UninterpretedOptionR\x13uninterpretedOption*\t\b\xe8\a\x10\x80\x80\x80\x80\x02J\x04\b\x04\x10\x05J\x04\b\x05\x10\x06J\x04\b\x06\x10\aJ\x04\b\b\x10\tJ\x04\b\t\x10\n" +
    -	"\"\x9d\r\n" +
    +	"\"\xa1\r\n" +
     	"\fFieldOptions\x12A\n" +
     	"\x05ctype\x18\x01 \x01(\x0e2#.google.protobuf.FieldOptions.CType:\x06STRINGR\x05ctype\x12\x16\n" +
     	"\x06packed\x18\x02 \x01(\bR\x06packed\x12G\n" +
    @@ -4852,9 +4856,9 @@ const file_google_protobuf_descriptor_proto_rawDesc = "" +
     	"\x0funverified_lazy\x18\x0f \x01(\b:\x05falseR\x0eunverifiedLazy\x12%\n" +
     	"\n" +
     	"deprecated\x18\x03 \x01(\b:\x05falseR\n" +
    -	"deprecated\x12\x19\n" +
    +	"deprecated\x12\x1d\n" +
     	"\x04weak\x18\n" +
    -	" \x01(\b:\x05falseR\x04weak\x12(\n" +
    +	" \x01(\b:\x05falseB\x02\x18\x01R\x04weak\x12(\n" +
     	"\fdebug_redact\x18\x10 \x01(\b:\x05falseR\vdebugRedact\x12K\n" +
     	"\tretention\x18\x11 \x01(\x0e2-.google.protobuf.FieldOptions.OptionRetentionR\tretention\x12H\n" +
     	"\atargets\x18\x13 \x03(\x0e2..google.protobuf.FieldOptions.OptionTargetTypeR\atargets\x12W\n" +
    diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go
    index 261ae41bd0..bf1ae59488 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go
    @@ -25,6 +25,7 @@ import (
     	io "io"
     
     	proto "github.com/gogo/protobuf/proto"
    +	k8s_io_api_admissionregistration_v1 "k8s.io/api/admissionregistration/v1"
     	v11 "k8s.io/api/admissionregistration/v1"
     	k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    @@ -46,10 +47,38 @@ var _ = math.Inf
     // proto package needs to be updated.
     const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
     
    +func (m *ApplyConfiguration) Reset()      { *m = ApplyConfiguration{} }
    +func (*ApplyConfiguration) ProtoMessage() {}
    +func (*ApplyConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7f7c65a4f012fb19, []int{0}
    +}
    +func (m *ApplyConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ApplyConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ApplyConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ApplyConfiguration.Merge(m, src)
    +}
    +func (m *ApplyConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ApplyConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ApplyConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ApplyConfiguration proto.InternalMessageInfo
    +
     func (m *AuditAnnotation) Reset()      { *m = AuditAnnotation{} }
     func (*AuditAnnotation) ProtoMessage() {}
     func (*AuditAnnotation) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{0}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{1}
     }
     func (m *AuditAnnotation) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -77,7 +106,7 @@ var xxx_messageInfo_AuditAnnotation proto.InternalMessageInfo
     func (m *ExpressionWarning) Reset()      { *m = ExpressionWarning{} }
     func (*ExpressionWarning) ProtoMessage() {}
     func (*ExpressionWarning) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{1}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{2}
     }
     func (m *ExpressionWarning) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -102,10 +131,38 @@ func (m *ExpressionWarning) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_ExpressionWarning proto.InternalMessageInfo
     
    +func (m *JSONPatch) Reset()      { *m = JSONPatch{} }
    +func (*JSONPatch) ProtoMessage() {}
    +func (*JSONPatch) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7f7c65a4f012fb19, []int{3}
    +}
    +func (m *JSONPatch) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *JSONPatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *JSONPatch) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_JSONPatch.Merge(m, src)
    +}
    +func (m *JSONPatch) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *JSONPatch) XXX_DiscardUnknown() {
    +	xxx_messageInfo_JSONPatch.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_JSONPatch proto.InternalMessageInfo
    +
     func (m *MatchCondition) Reset()      { *m = MatchCondition{} }
     func (*MatchCondition) ProtoMessage() {}
     func (*MatchCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{2}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{4}
     }
     func (m *MatchCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -133,7 +190,7 @@ var xxx_messageInfo_MatchCondition proto.InternalMessageInfo
     func (m *MatchResources) Reset()      { *m = MatchResources{} }
     func (*MatchResources) ProtoMessage() {}
     func (*MatchResources) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{3}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{5}
     }
     func (m *MatchResources) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -158,10 +215,178 @@ func (m *MatchResources) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_MatchResources proto.InternalMessageInfo
     
    +func (m *MutatingAdmissionPolicy) Reset()      { *m = MutatingAdmissionPolicy{} }
    +func (*MutatingAdmissionPolicy) ProtoMessage() {}
    +func (*MutatingAdmissionPolicy) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7f7c65a4f012fb19, []int{6}
    +}
    +func (m *MutatingAdmissionPolicy) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MutatingAdmissionPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MutatingAdmissionPolicy) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MutatingAdmissionPolicy.Merge(m, src)
    +}
    +func (m *MutatingAdmissionPolicy) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MutatingAdmissionPolicy) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MutatingAdmissionPolicy.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MutatingAdmissionPolicy proto.InternalMessageInfo
    +
    +func (m *MutatingAdmissionPolicyBinding) Reset()      { *m = MutatingAdmissionPolicyBinding{} }
    +func (*MutatingAdmissionPolicyBinding) ProtoMessage() {}
    +func (*MutatingAdmissionPolicyBinding) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7f7c65a4f012fb19, []int{7}
    +}
    +func (m *MutatingAdmissionPolicyBinding) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MutatingAdmissionPolicyBinding) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MutatingAdmissionPolicyBinding) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MutatingAdmissionPolicyBinding.Merge(m, src)
    +}
    +func (m *MutatingAdmissionPolicyBinding) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MutatingAdmissionPolicyBinding) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MutatingAdmissionPolicyBinding.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MutatingAdmissionPolicyBinding proto.InternalMessageInfo
    +
    +func (m *MutatingAdmissionPolicyBindingList) Reset()      { *m = MutatingAdmissionPolicyBindingList{} }
    +func (*MutatingAdmissionPolicyBindingList) ProtoMessage() {}
    +func (*MutatingAdmissionPolicyBindingList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7f7c65a4f012fb19, []int{8}
    +}
    +func (m *MutatingAdmissionPolicyBindingList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MutatingAdmissionPolicyBindingList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MutatingAdmissionPolicyBindingList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MutatingAdmissionPolicyBindingList.Merge(m, src)
    +}
    +func (m *MutatingAdmissionPolicyBindingList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MutatingAdmissionPolicyBindingList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MutatingAdmissionPolicyBindingList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MutatingAdmissionPolicyBindingList proto.InternalMessageInfo
    +
    +func (m *MutatingAdmissionPolicyBindingSpec) Reset()      { *m = MutatingAdmissionPolicyBindingSpec{} }
    +func (*MutatingAdmissionPolicyBindingSpec) ProtoMessage() {}
    +func (*MutatingAdmissionPolicyBindingSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7f7c65a4f012fb19, []int{9}
    +}
    +func (m *MutatingAdmissionPolicyBindingSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MutatingAdmissionPolicyBindingSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MutatingAdmissionPolicyBindingSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MutatingAdmissionPolicyBindingSpec.Merge(m, src)
    +}
    +func (m *MutatingAdmissionPolicyBindingSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MutatingAdmissionPolicyBindingSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MutatingAdmissionPolicyBindingSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MutatingAdmissionPolicyBindingSpec proto.InternalMessageInfo
    +
    +func (m *MutatingAdmissionPolicyList) Reset()      { *m = MutatingAdmissionPolicyList{} }
    +func (*MutatingAdmissionPolicyList) ProtoMessage() {}
    +func (*MutatingAdmissionPolicyList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7f7c65a4f012fb19, []int{10}
    +}
    +func (m *MutatingAdmissionPolicyList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MutatingAdmissionPolicyList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MutatingAdmissionPolicyList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MutatingAdmissionPolicyList.Merge(m, src)
    +}
    +func (m *MutatingAdmissionPolicyList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MutatingAdmissionPolicyList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MutatingAdmissionPolicyList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MutatingAdmissionPolicyList proto.InternalMessageInfo
    +
    +func (m *MutatingAdmissionPolicySpec) Reset()      { *m = MutatingAdmissionPolicySpec{} }
    +func (*MutatingAdmissionPolicySpec) ProtoMessage() {}
    +func (*MutatingAdmissionPolicySpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7f7c65a4f012fb19, []int{11}
    +}
    +func (m *MutatingAdmissionPolicySpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *MutatingAdmissionPolicySpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *MutatingAdmissionPolicySpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_MutatingAdmissionPolicySpec.Merge(m, src)
    +}
    +func (m *MutatingAdmissionPolicySpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *MutatingAdmissionPolicySpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_MutatingAdmissionPolicySpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_MutatingAdmissionPolicySpec proto.InternalMessageInfo
    +
     func (m *MutatingWebhook) Reset()      { *m = MutatingWebhook{} }
     func (*MutatingWebhook) ProtoMessage() {}
     func (*MutatingWebhook) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{4}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{12}
     }
     func (m *MutatingWebhook) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -189,7 +414,7 @@ var xxx_messageInfo_MutatingWebhook proto.InternalMessageInfo
     func (m *MutatingWebhookConfiguration) Reset()      { *m = MutatingWebhookConfiguration{} }
     func (*MutatingWebhookConfiguration) ProtoMessage() {}
     func (*MutatingWebhookConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{5}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{13}
     }
     func (m *MutatingWebhookConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -217,7 +442,7 @@ var xxx_messageInfo_MutatingWebhookConfiguration proto.InternalMessageInfo
     func (m *MutatingWebhookConfigurationList) Reset()      { *m = MutatingWebhookConfigurationList{} }
     func (*MutatingWebhookConfigurationList) ProtoMessage() {}
     func (*MutatingWebhookConfigurationList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{6}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{14}
     }
     func (m *MutatingWebhookConfigurationList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -242,10 +467,38 @@ func (m *MutatingWebhookConfigurationList) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_MutatingWebhookConfigurationList proto.InternalMessageInfo
     
    +func (m *Mutation) Reset()      { *m = Mutation{} }
    +func (*Mutation) ProtoMessage() {}
    +func (*Mutation) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_7f7c65a4f012fb19, []int{15}
    +}
    +func (m *Mutation) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *Mutation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *Mutation) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_Mutation.Merge(m, src)
    +}
    +func (m *Mutation) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *Mutation) XXX_DiscardUnknown() {
    +	xxx_messageInfo_Mutation.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_Mutation proto.InternalMessageInfo
    +
     func (m *NamedRuleWithOperations) Reset()      { *m = NamedRuleWithOperations{} }
     func (*NamedRuleWithOperations) ProtoMessage() {}
     func (*NamedRuleWithOperations) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{7}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{16}
     }
     func (m *NamedRuleWithOperations) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -273,7 +526,7 @@ var xxx_messageInfo_NamedRuleWithOperations proto.InternalMessageInfo
     func (m *ParamKind) Reset()      { *m = ParamKind{} }
     func (*ParamKind) ProtoMessage() {}
     func (*ParamKind) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{8}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{17}
     }
     func (m *ParamKind) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -301,7 +554,7 @@ var xxx_messageInfo_ParamKind proto.InternalMessageInfo
     func (m *ParamRef) Reset()      { *m = ParamRef{} }
     func (*ParamRef) ProtoMessage() {}
     func (*ParamRef) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{9}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{18}
     }
     func (m *ParamRef) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -329,7 +582,7 @@ var xxx_messageInfo_ParamRef proto.InternalMessageInfo
     func (m *ServiceReference) Reset()      { *m = ServiceReference{} }
     func (*ServiceReference) ProtoMessage() {}
     func (*ServiceReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{10}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{19}
     }
     func (m *ServiceReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -357,7 +610,7 @@ var xxx_messageInfo_ServiceReference proto.InternalMessageInfo
     func (m *TypeChecking) Reset()      { *m = TypeChecking{} }
     func (*TypeChecking) ProtoMessage() {}
     func (*TypeChecking) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{11}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{20}
     }
     func (m *TypeChecking) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -385,7 +638,7 @@ var xxx_messageInfo_TypeChecking proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicy) Reset()      { *m = ValidatingAdmissionPolicy{} }
     func (*ValidatingAdmissionPolicy) ProtoMessage() {}
     func (*ValidatingAdmissionPolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{12}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{21}
     }
     func (m *ValidatingAdmissionPolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -413,7 +666,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicy proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicyBinding) Reset()      { *m = ValidatingAdmissionPolicyBinding{} }
     func (*ValidatingAdmissionPolicyBinding) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyBinding) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{13}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{22}
     }
     func (m *ValidatingAdmissionPolicyBinding) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -441,7 +694,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyBinding proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicyBindingList) Reset()      { *m = ValidatingAdmissionPolicyBindingList{} }
     func (*ValidatingAdmissionPolicyBindingList) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyBindingList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{14}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{23}
     }
     func (m *ValidatingAdmissionPolicyBindingList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -469,7 +722,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyBindingList proto.InternalMessageIn
     func (m *ValidatingAdmissionPolicyBindingSpec) Reset()      { *m = ValidatingAdmissionPolicyBindingSpec{} }
     func (*ValidatingAdmissionPolicyBindingSpec) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyBindingSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{15}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{24}
     }
     func (m *ValidatingAdmissionPolicyBindingSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -497,7 +750,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyBindingSpec proto.InternalMessageIn
     func (m *ValidatingAdmissionPolicyList) Reset()      { *m = ValidatingAdmissionPolicyList{} }
     func (*ValidatingAdmissionPolicyList) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{16}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{25}
     }
     func (m *ValidatingAdmissionPolicyList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -525,7 +778,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyList proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicySpec) Reset()      { *m = ValidatingAdmissionPolicySpec{} }
     func (*ValidatingAdmissionPolicySpec) ProtoMessage() {}
     func (*ValidatingAdmissionPolicySpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{17}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{26}
     }
     func (m *ValidatingAdmissionPolicySpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -553,7 +806,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicySpec proto.InternalMessageInfo
     func (m *ValidatingAdmissionPolicyStatus) Reset()      { *m = ValidatingAdmissionPolicyStatus{} }
     func (*ValidatingAdmissionPolicyStatus) ProtoMessage() {}
     func (*ValidatingAdmissionPolicyStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{18}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{27}
     }
     func (m *ValidatingAdmissionPolicyStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -581,7 +834,7 @@ var xxx_messageInfo_ValidatingAdmissionPolicyStatus proto.InternalMessageInfo
     func (m *ValidatingWebhook) Reset()      { *m = ValidatingWebhook{} }
     func (*ValidatingWebhook) ProtoMessage() {}
     func (*ValidatingWebhook) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{19}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{28}
     }
     func (m *ValidatingWebhook) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -609,7 +862,7 @@ var xxx_messageInfo_ValidatingWebhook proto.InternalMessageInfo
     func (m *ValidatingWebhookConfiguration) Reset()      { *m = ValidatingWebhookConfiguration{} }
     func (*ValidatingWebhookConfiguration) ProtoMessage() {}
     func (*ValidatingWebhookConfiguration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{20}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{29}
     }
     func (m *ValidatingWebhookConfiguration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -637,7 +890,7 @@ var xxx_messageInfo_ValidatingWebhookConfiguration proto.InternalMessageInfo
     func (m *ValidatingWebhookConfigurationList) Reset()      { *m = ValidatingWebhookConfigurationList{} }
     func (*ValidatingWebhookConfigurationList) ProtoMessage() {}
     func (*ValidatingWebhookConfigurationList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{21}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{30}
     }
     func (m *ValidatingWebhookConfigurationList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -665,7 +918,7 @@ var xxx_messageInfo_ValidatingWebhookConfigurationList proto.InternalMessageInfo
     func (m *Validation) Reset()      { *m = Validation{} }
     func (*Validation) ProtoMessage() {}
     func (*Validation) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{22}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{31}
     }
     func (m *Validation) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -693,7 +946,7 @@ var xxx_messageInfo_Validation proto.InternalMessageInfo
     func (m *Variable) Reset()      { *m = Variable{} }
     func (*Variable) ProtoMessage() {}
     func (*Variable) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{23}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{32}
     }
     func (m *Variable) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -721,7 +974,7 @@ var xxx_messageInfo_Variable proto.InternalMessageInfo
     func (m *WebhookClientConfig) Reset()      { *m = WebhookClientConfig{} }
     func (*WebhookClientConfig) ProtoMessage() {}
     func (*WebhookClientConfig) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_7f7c65a4f012fb19, []int{24}
    +	return fileDescriptor_7f7c65a4f012fb19, []int{33}
     }
     func (m *WebhookClientConfig) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -747,13 +1000,22 @@ func (m *WebhookClientConfig) XXX_DiscardUnknown() {
     var xxx_messageInfo_WebhookClientConfig proto.InternalMessageInfo
     
     func init() {
    +	proto.RegisterType((*ApplyConfiguration)(nil), "k8s.io.api.admissionregistration.v1beta1.ApplyConfiguration")
     	proto.RegisterType((*AuditAnnotation)(nil), "k8s.io.api.admissionregistration.v1beta1.AuditAnnotation")
     	proto.RegisterType((*ExpressionWarning)(nil), "k8s.io.api.admissionregistration.v1beta1.ExpressionWarning")
    +	proto.RegisterType((*JSONPatch)(nil), "k8s.io.api.admissionregistration.v1beta1.JSONPatch")
     	proto.RegisterType((*MatchCondition)(nil), "k8s.io.api.admissionregistration.v1beta1.MatchCondition")
     	proto.RegisterType((*MatchResources)(nil), "k8s.io.api.admissionregistration.v1beta1.MatchResources")
    +	proto.RegisterType((*MutatingAdmissionPolicy)(nil), "k8s.io.api.admissionregistration.v1beta1.MutatingAdmissionPolicy")
    +	proto.RegisterType((*MutatingAdmissionPolicyBinding)(nil), "k8s.io.api.admissionregistration.v1beta1.MutatingAdmissionPolicyBinding")
    +	proto.RegisterType((*MutatingAdmissionPolicyBindingList)(nil), "k8s.io.api.admissionregistration.v1beta1.MutatingAdmissionPolicyBindingList")
    +	proto.RegisterType((*MutatingAdmissionPolicyBindingSpec)(nil), "k8s.io.api.admissionregistration.v1beta1.MutatingAdmissionPolicyBindingSpec")
    +	proto.RegisterType((*MutatingAdmissionPolicyList)(nil), "k8s.io.api.admissionregistration.v1beta1.MutatingAdmissionPolicyList")
    +	proto.RegisterType((*MutatingAdmissionPolicySpec)(nil), "k8s.io.api.admissionregistration.v1beta1.MutatingAdmissionPolicySpec")
     	proto.RegisterType((*MutatingWebhook)(nil), "k8s.io.api.admissionregistration.v1beta1.MutatingWebhook")
     	proto.RegisterType((*MutatingWebhookConfiguration)(nil), "k8s.io.api.admissionregistration.v1beta1.MutatingWebhookConfiguration")
     	proto.RegisterType((*MutatingWebhookConfigurationList)(nil), "k8s.io.api.admissionregistration.v1beta1.MutatingWebhookConfigurationList")
    +	proto.RegisterType((*Mutation)(nil), "k8s.io.api.admissionregistration.v1beta1.Mutation")
     	proto.RegisterType((*NamedRuleWithOperations)(nil), "k8s.io.api.admissionregistration.v1beta1.NamedRuleWithOperations")
     	proto.RegisterType((*ParamKind)(nil), "k8s.io.api.admissionregistration.v1beta1.ParamKind")
     	proto.RegisterType((*ParamRef)(nil), "k8s.io.api.admissionregistration.v1beta1.ParamRef")
    @@ -779,130 +1041,174 @@ func init() {
     }
     
     var fileDescriptor_7f7c65a4f012fb19 = []byte{
    -	// 1957 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x1a, 0x4d, 0x6f, 0x1b, 0xc7,
    -	0xd5, 0x2b, 0x52, 0x12, 0xf9, 0xa8, 0x2f, 0x4e, 0x9c, 0x8a, 0x76, 0x1c, 0x52, 0x58, 0x04, 0x85,
    -	0x0c, 0xb4, 0x64, 0xac, 0x04, 0x89, 0xeb, 0xa0, 0x28, 0x44, 0xc5, 0x76, 0xed, 0x58, 0xb2, 0x30,
    -	0x4a, 0x24, 0xa0, 0x4d, 0x00, 0x8f, 0x76, 0x87, 0xe4, 0x96, 0xe4, 0xee, 0x76, 0x67, 0x49, 0x5b,
    -	0x2d, 0xd0, 0x16, 0xe8, 0x21, 0xd7, 0x02, 0xbd, 0x14, 0xe8, 0xa9, 0x7f, 0xa1, 0xf7, 0x02, 0xed,
    -	0xcd, 0xc7, 0xdc, 0x6a, 0xa0, 0x28, 0x51, 0xb1, 0x87, 0x9e, 0x7a, 0xe8, 0xa1, 0x3d, 0xe8, 0xd2,
    -	0x62, 0x66, 0x67, 0x3f, 0xb9, 0xb4, 0x56, 0xaa, 0xac, 0x5c, 0x7c, 0xd3, 0xbe, 0xcf, 0x79, 0x6f,
    -	0xde, 0xd7, 0x3c, 0x0a, 0x6e, 0x77, 0x6f, 0xb3, 0xba, 0x61, 0x35, 0x88, 0x6d, 0x34, 0x88, 0xde,
    -	0x37, 0x18, 0x33, 0x2c, 0xd3, 0xa1, 0x6d, 0x83, 0xb9, 0x0e, 0x71, 0x0d, 0xcb, 0x6c, 0x0c, 0x6f,
    -	0x1d, 0x52, 0x97, 0xdc, 0x6a, 0xb4, 0xa9, 0x49, 0x1d, 0xe2, 0x52, 0xbd, 0x6e, 0x3b, 0x96, 0x6b,
    -	0xa1, 0x75, 0x8f, 0xb3, 0x4e, 0x6c, 0xa3, 0x9e, 0xca, 0x59, 0x97, 0x9c, 0xd7, 0xbf, 0xdd, 0x36,
    -	0xdc, 0xce, 0xe0, 0xb0, 0xae, 0x59, 0xfd, 0x46, 0xdb, 0x6a, 0x5b, 0x0d, 0x21, 0xe0, 0x70, 0xd0,
    -	0x12, 0x5f, 0xe2, 0x43, 0xfc, 0xe5, 0x09, 0xbe, 0xfe, 0x5e, 0x86, 0x23, 0x25, 0x4f, 0x73, 0xfd,
    -	0xfd, 0x90, 0xa9, 0x4f, 0xb4, 0x8e, 0x61, 0x52, 0xe7, 0xa8, 0x61, 0x77, 0xdb, 0x1c, 0xc0, 0x1a,
    -	0x7d, 0xea, 0x92, 0x34, 0xae, 0xc6, 0x34, 0x2e, 0x67, 0x60, 0xba, 0x46, 0x9f, 0x4e, 0x30, 0x7c,
    -	0x70, 0x1a, 0x03, 0xd3, 0x3a, 0xb4, 0x4f, 0x92, 0x7c, 0x2a, 0x83, 0xe5, 0xcd, 0x81, 0x6e, 0xb8,
    -	0x9b, 0xa6, 0x69, 0xb9, 0xc2, 0x08, 0xf4, 0x36, 0xe4, 0xba, 0xf4, 0xa8, 0xa2, 0xac, 0x29, 0xeb,
    -	0xc5, 0x66, 0xe9, 0xf9, 0xa8, 0x76, 0x65, 0x3c, 0xaa, 0xe5, 0x3e, 0xa1, 0x47, 0x98, 0xc3, 0xd1,
    -	0x26, 0x2c, 0x0f, 0x49, 0x6f, 0x40, 0xef, 0x3e, 0xb3, 0x1d, 0x2a, 0x5c, 0x50, 0x99, 0x11, 0xa4,
    -	0xab, 0x92, 0x74, 0x79, 0x3f, 0x8e, 0xc6, 0x49, 0x7a, 0xb5, 0x07, 0xe5, 0xf0, 0xeb, 0x80, 0x38,
    -	0xa6, 0x61, 0xb6, 0xd1, 0xb7, 0xa0, 0xd0, 0x32, 0x68, 0x4f, 0xc7, 0xb4, 0x25, 0x05, 0xae, 0x48,
    -	0x81, 0x85, 0x7b, 0x12, 0x8e, 0x03, 0x0a, 0x74, 0x13, 0xe6, 0x9f, 0x7a, 0x8c, 0x95, 0x9c, 0x20,
    -	0x5e, 0x96, 0xc4, 0xf3, 0x52, 0x1e, 0xf6, 0xf1, 0x6a, 0x0b, 0x96, 0xb6, 0x89, 0xab, 0x75, 0xb6,
    -	0x2c, 0x53, 0x37, 0x84, 0x85, 0x6b, 0x90, 0x37, 0x49, 0x9f, 0x4a, 0x13, 0x17, 0x24, 0x67, 0x7e,
    -	0x87, 0xf4, 0x29, 0x16, 0x18, 0xb4, 0x01, 0x40, 0x93, 0xf6, 0x21, 0x49, 0x07, 0x11, 0xd3, 0x22,
    -	0x54, 0xea, 0x9f, 0xf3, 0x52, 0x11, 0xa6, 0xcc, 0x1a, 0x38, 0x1a, 0x65, 0xe8, 0x19, 0x94, 0xb9,
    -	0x38, 0x66, 0x13, 0x8d, 0xee, 0xd1, 0x1e, 0xd5, 0x5c, 0xcb, 0x11, 0x5a, 0x4b, 0x1b, 0xef, 0xd5,
    -	0xc3, 0x30, 0x0d, 0x6e, 0xac, 0x6e, 0x77, 0xdb, 0x1c, 0xc0, 0xea, 0x3c, 0x30, 0xea, 0xc3, 0x5b,
    -	0xf5, 0x47, 0xe4, 0x90, 0xf6, 0x7c, 0xd6, 0xe6, 0x9b, 0xe3, 0x51, 0xad, 0xbc, 0x93, 0x94, 0x88,
    -	0x27, 0x95, 0x20, 0x0b, 0x96, 0xac, 0xc3, 0x1f, 0x51, 0xcd, 0x0d, 0xd4, 0xce, 0x9c, 0x5f, 0x2d,
    -	0x1a, 0x8f, 0x6a, 0x4b, 0x8f, 0x63, 0xe2, 0x70, 0x42, 0x3c, 0xfa, 0x19, 0x2c, 0x3a, 0xd2, 0x6e,
    -	0x3c, 0xe8, 0x51, 0x56, 0xc9, 0xad, 0xe5, 0xd6, 0x4b, 0x1b, 0x9b, 0xf5, 0xac, 0xd9, 0x58, 0xe7,
    -	0x76, 0xe9, 0x9c, 0xf7, 0xc0, 0x70, 0x3b, 0x8f, 0x6d, 0xea, 0xa1, 0x59, 0xf3, 0x4d, 0xe9, 0xf7,
    -	0x45, 0x1c, 0x95, 0x8f, 0xe3, 0xea, 0xd0, 0xaf, 0x15, 0xb8, 0x4a, 0x9f, 0x69, 0xbd, 0x81, 0x4e,
    -	0x63, 0x74, 0x95, 0xfc, 0x45, 0x9d, 0xe3, 0x86, 0x3c, 0xc7, 0xd5, 0xbb, 0x29, 0x6a, 0x70, 0xaa,
    -	0x72, 0xf4, 0x31, 0x94, 0xfa, 0x3c, 0x24, 0x76, 0xad, 0x9e, 0xa1, 0x1d, 0x55, 0xe6, 0x45, 0x20,
    -	0xa9, 0xe3, 0x51, 0xad, 0xb4, 0x1d, 0x82, 0x4f, 0x46, 0xb5, 0xe5, 0xc8, 0xe7, 0xa7, 0x47, 0x36,
    -	0xc5, 0x51, 0x36, 0xf5, 0x4f, 0x05, 0x58, 0xde, 0x1e, 0xf0, 0xf4, 0x34, 0xdb, 0x07, 0xf4, 0xb0,
    -	0x63, 0x59, 0xdd, 0x0c, 0x31, 0xfc, 0x14, 0x16, 0xb4, 0x9e, 0x41, 0x4d, 0x77, 0xcb, 0x32, 0x5b,
    -	0x46, 0x5b, 0x06, 0xc0, 0x77, 0xb3, 0x3b, 0x42, 0xaa, 0xda, 0x8a, 0x08, 0x69, 0x5e, 0x95, 0x8a,
    -	0x16, 0xa2, 0x50, 0x1c, 0x53, 0x84, 0x3e, 0x87, 0x59, 0x27, 0x12, 0x02, 0x1f, 0x66, 0xd1, 0x58,
    -	0x4f, 0x71, 0xf8, 0xa2, 0xd4, 0x35, 0xeb, 0x79, 0xd8, 0x13, 0x8a, 0x1e, 0xc1, 0x62, 0x8b, 0x18,
    -	0xbd, 0x81, 0x43, 0xa5, 0x53, 0xf3, 0xc2, 0x03, 0xdf, 0xe4, 0x11, 0x72, 0x2f, 0x8a, 0x38, 0x19,
    -	0xd5, 0xca, 0x31, 0x80, 0x70, 0x6c, 0x9c, 0x39, 0x79, 0x41, 0xc5, 0x73, 0x5d, 0x50, 0x7a, 0x9e,
    -	0xcf, 0x7e, 0x3d, 0x79, 0x5e, 0x7a, 0xb5, 0x79, 0xfe, 0x31, 0x94, 0x98, 0xa1, 0xd3, 0xbb, 0xad,
    -	0x16, 0xd5, 0x5c, 0x56, 0x99, 0x0b, 0x1d, 0xb6, 0x17, 0x82, 0xb9, 0xc3, 0xc2, 0xcf, 0xad, 0x1e,
    -	0x61, 0x0c, 0x47, 0xd9, 0xd0, 0x1d, 0x58, 0xe2, 0x5d, 0xc9, 0x1a, 0xb8, 0x7b, 0x54, 0xb3, 0x4c,
    -	0x9d, 0x89, 0xd4, 0x98, 0xf5, 0x4e, 0xf0, 0x69, 0x0c, 0x83, 0x13, 0x94, 0xe8, 0x33, 0x58, 0x0d,
    -	0xa2, 0x08, 0xd3, 0xa1, 0x41, 0x9f, 0xee, 0x53, 0x87, 0x7f, 0xb0, 0x4a, 0x61, 0x2d, 0xb7, 0x5e,
    -	0x6c, 0xbe, 0x35, 0x1e, 0xd5, 0x56, 0x37, 0xd3, 0x49, 0xf0, 0x34, 0x5e, 0xf4, 0x04, 0x90, 0x43,
    -	0x0d, 0x73, 0x68, 0x69, 0x22, 0xfc, 0x64, 0x40, 0x80, 0xb0, 0xef, 0xdd, 0xf1, 0xa8, 0x86, 0xf0,
    -	0x04, 0xf6, 0x64, 0x54, 0xfb, 0xc6, 0x24, 0x54, 0x84, 0x47, 0x8a, 0x2c, 0xf4, 0x53, 0x58, 0xee,
    -	0xc7, 0x1a, 0x11, 0xab, 0x2c, 0x88, 0x0c, 0xb9, 0x9d, 0x3d, 0x27, 0xe3, 0x9d, 0x2c, 0xec, 0xb9,
    -	0x71, 0x38, 0xc3, 0x49, 0x4d, 0xea, 0x5f, 0x15, 0xb8, 0x91, 0xa8, 0x21, 0x5e, 0xba, 0x0e, 0x3c,
    -	0x0d, 0xe8, 0x09, 0x14, 0x78, 0x54, 0xe8, 0xc4, 0x25, 0xb2, 0x45, 0xbd, 0x9b, 0x2d, 0x86, 0xbc,
    -	0x80, 0xd9, 0xa6, 0x2e, 0x09, 0x5b, 0x64, 0x08, 0xc3, 0x81, 0x54, 0xf4, 0x43, 0x28, 0x48, 0xcd,
    -	0xac, 0x32, 0x23, 0x0c, 0xff, 0xce, 0x19, 0x0c, 0x8f, 0x9f, 0xbd, 0x99, 0xe7, 0xaa, 0x70, 0x20,
    -	0x50, 0xfd, 0xa7, 0x02, 0x6b, 0x2f, 0xb3, 0xef, 0x91, 0xc1, 0x5c, 0xf4, 0xf9, 0x84, 0x8d, 0xf5,
    -	0x8c, 0x79, 0x62, 0x30, 0xcf, 0xc2, 0x60, 0x26, 0xf1, 0x21, 0x11, 0xfb, 0xba, 0x30, 0x6b, 0xb8,
    -	0xb4, 0xef, 0x1b, 0x77, 0xef, 0xdc, 0xc6, 0xc5, 0x0e, 0x1e, 0x96, 0xc1, 0x07, 0x5c, 0x38, 0xf6,
    -	0x74, 0xa8, 0x2f, 0x14, 0x58, 0x9d, 0xd2, 0xa9, 0xd0, 0x87, 0x61, 0x2f, 0x16, 0x45, 0xa4, 0xa2,
    -	0x88, 0xbc, 0x28, 0x47, 0x9b, 0xa8, 0x40, 0xe0, 0x38, 0x1d, 0xfa, 0xa5, 0x02, 0xc8, 0x99, 0x90,
    -	0x27, 0x3b, 0xc7, 0xb9, 0xeb, 0xf8, 0x75, 0x69, 0x00, 0x9a, 0xc4, 0xe1, 0x14, 0x75, 0x2a, 0x81,
    -	0xe2, 0x2e, 0x71, 0x48, 0xff, 0x13, 0xc3, 0xd4, 0xf9, 0x24, 0x46, 0x6c, 0x43, 0x66, 0xa9, 0xec,
    -	0x76, 0x41, 0x98, 0x6d, 0xee, 0x3e, 0x90, 0x18, 0x1c, 0xa1, 0xe2, 0xbd, 0xb1, 0x6b, 0x98, 0xba,
    -	0x9c, 0xdb, 0x82, 0xde, 0xc8, 0xe5, 0x61, 0x81, 0x51, 0x7f, 0x3f, 0x03, 0x05, 0xa1, 0x83, 0xcf,
    -	0x92, 0xa7, 0xb7, 0xd2, 0x06, 0x14, 0x83, 0xd2, 0x2b, 0xa5, 0x96, 0x25, 0x59, 0x31, 0x28, 0xd3,
    -	0x38, 0xa4, 0x41, 0x5f, 0x40, 0x81, 0xf9, 0x05, 0x39, 0x77, 0xfe, 0x82, 0xbc, 0xc0, 0x23, 0x2d,
    -	0x28, 0xc5, 0x81, 0x48, 0xe4, 0xc2, 0xaa, 0xcd, 0x4f, 0x4f, 0x5d, 0xea, 0xec, 0x58, 0xee, 0x3d,
    -	0x6b, 0x60, 0xea, 0x9b, 0x1a, 0xf7, 0x9e, 0xec, 0x86, 0x77, 0x78, 0x09, 0xdc, 0x4d, 0x27, 0x39,
    -	0x19, 0xd5, 0xde, 0x9a, 0x82, 0x12, 0xa5, 0x6b, 0x9a, 0x68, 0xf5, 0x77, 0x0a, 0xac, 0xec, 0x51,
    -	0x67, 0x68, 0x68, 0x14, 0xd3, 0x16, 0x75, 0xa8, 0xa9, 0x25, 0x5c, 0xa3, 0x64, 0x70, 0x8d, 0xef,
    -	0xed, 0x99, 0xa9, 0xde, 0xbe, 0x01, 0x79, 0x9b, 0xb8, 0x1d, 0x39, 0xd8, 0x17, 0x38, 0x76, 0x97,
    -	0xb8, 0x1d, 0x2c, 0xa0, 0x02, 0x6b, 0x39, 0xae, 0x30, 0x74, 0x56, 0x62, 0x2d, 0xc7, 0xc5, 0x02,
    -	0xaa, 0xfe, 0x46, 0x81, 0x05, 0x6e, 0xc5, 0x56, 0x87, 0x6a, 0x5d, 0xfe, 0xac, 0xf8, 0x52, 0x01,
    -	0x44, 0x93, 0x8f, 0x0d, 0x2f, 0x23, 0x4a, 0x1b, 0x1f, 0x65, 0x4f, 0xd1, 0x89, 0x07, 0x4b, 0x18,
    -	0xd6, 0x13, 0x28, 0x86, 0x53, 0x54, 0xaa, 0x7f, 0x99, 0x81, 0x6b, 0xfb, 0xa4, 0x67, 0xe8, 0x22,
    -	0xd5, 0x83, 0xfe, 0x24, 0x9b, 0xc3, 0xab, 0x2f, 0xbf, 0x06, 0xe4, 0x99, 0x4d, 0x35, 0x99, 0xcd,
    -	0xf7, 0xb3, 0x9b, 0x3e, 0xf5, 0xd0, 0x7b, 0x36, 0xd5, 0xc2, 0x1b, 0xe4, 0x5f, 0x58, 0xa8, 0x40,
    -	0x3f, 0x86, 0x39, 0xe6, 0x12, 0x77, 0xc0, 0x64, 0xf0, 0x3f, 0xb8, 0x08, 0x65, 0x42, 0x60, 0x73,
    -	0x49, 0xaa, 0x9b, 0xf3, 0xbe, 0xb1, 0x54, 0xa4, 0xfe, 0x47, 0x81, 0xb5, 0xa9, 0xbc, 0x4d, 0xc3,
    -	0xd4, 0x79, 0x30, 0xbc, 0x7a, 0x27, 0xdb, 0x31, 0x27, 0xef, 0x5c, 0x80, 0xdd, 0xf2, 0xec, 0xd3,
    -	0x7c, 0xad, 0xfe, 0x5b, 0x81, 0x77, 0x4e, 0x63, 0xbe, 0x84, 0xe6, 0x67, 0xc5, 0x9b, 0xdf, 0xc3,
    -	0x8b, 0xb3, 0x7c, 0x4a, 0x03, 0xfc, 0x32, 0x77, 0xba, 0xdd, 0xdc, 0x4d, 0xbc, 0x83, 0xd8, 0x02,
    -	0xb8, 0x13, 0x16, 0xf9, 0xe0, 0x12, 0x77, 0x03, 0x0c, 0x8e, 0x50, 0x71, 0x5f, 0xd9, 0xb2, 0x3d,
    -	0xc8, 0xab, 0xdc, 0xc8, 0x6e, 0x90, 0xdf, 0x58, 0xbc, 0xf2, 0xed, 0x7f, 0xe1, 0x40, 0x22, 0x72,
    -	0x61, 0xa9, 0x1f, 0x5b, 0x14, 0xc8, 0x34, 0x39, 0xeb, 0x1c, 0x18, 0xf0, 0x7b, 0x73, 0x73, 0x1c,
    -	0x86, 0x13, 0x3a, 0xd0, 0x01, 0x94, 0x87, 0xd2, 0x5f, 0x96, 0xe9, 0x95, 0x74, 0xef, 0x75, 0x5c,
    -	0x6c, 0xde, 0xe4, 0xef, 0x8d, 0xfd, 0x24, 0xf2, 0x64, 0x54, 0x5b, 0x49, 0x02, 0xf1, 0xa4, 0x0c,
    -	0xf5, 0x1f, 0x0a, 0xbc, 0x3d, 0xf5, 0x26, 0x2e, 0x21, 0xf4, 0x3a, 0xf1, 0xd0, 0xdb, 0xba, 0x88,
    -	0xd0, 0x4b, 0x8f, 0xb9, 0xdf, 0xce, 0xbd, 0xc4, 0x52, 0x11, 0x6c, 0x4f, 0xa0, 0x68, 0xfb, 0xb3,
    -	0x4b, 0xca, 0xa6, 0x27, 0x4b, 0xe4, 0x70, 0xd6, 0xe6, 0x22, 0xef, 0x9f, 0xc1, 0x27, 0x0e, 0x85,
    -	0xa2, 0x9f, 0xc0, 0x8a, 0x3f, 0xdb, 0x73, 0x7e, 0xc3, 0x74, 0xfd, 0x01, 0xed, 0xfc, 0xe1, 0x73,
    -	0x75, 0x3c, 0xaa, 0xad, 0x6c, 0x27, 0xa4, 0xe2, 0x09, 0x3d, 0xa8, 0x0b, 0xa5, 0xf0, 0xfa, 0xfd,
    -	0xf7, 0xfd, 0xfb, 0x67, 0xf7, 0xb7, 0x65, 0x36, 0xdf, 0x90, 0x0e, 0x2e, 0x85, 0x30, 0x86, 0xa3,
    -	0xd2, 0x2f, 0xf8, 0xa1, 0xff, 0x73, 0x58, 0x21, 0xf1, 0x45, 0x27, 0xab, 0xcc, 0x9e, 0xf5, 0x11,
    -	0x92, 0x58, 0x95, 0x36, 0x2b, 0xd2, 0x88, 0x95, 0x04, 0x82, 0xe1, 0x09, 0x65, 0x69, 0xaf, 0xbf,
    -	0xb9, 0xcb, 0x7a, 0xfd, 0x21, 0x0d, 0x8a, 0x43, 0xe2, 0x18, 0xe4, 0xb0, 0x47, 0xf9, 0x53, 0x3b,
    -	0x77, 0xb6, 0x82, 0xb6, 0x2f, 0x59, 0xc3, 0xc9, 0xce, 0x87, 0x30, 0x1c, 0xca, 0x55, 0xff, 0x38,
    -	0x03, 0xb5, 0x53, 0xda, 0x37, 0x7a, 0x08, 0xc8, 0x3a, 0x64, 0xd4, 0x19, 0x52, 0xfd, 0xbe, 0xb7,
    -	0x8a, 0xf6, 0xc7, 0xfa, 0x5c, 0x38, 0x50, 0x3d, 0x9e, 0xa0, 0xc0, 0x29, 0x5c, 0xa8, 0x07, 0x0b,
    -	0x6e, 0x64, 0xd4, 0x93, 0x59, 0xf0, 0x41, 0x76, 0xbb, 0xa2, 0x83, 0x62, 0x73, 0x65, 0x3c, 0xaa,
    -	0xc5, 0x46, 0x47, 0x1c, 0x93, 0x8e, 0x34, 0x00, 0x2d, 0xbc, 0x3a, 0x2f, 0xf4, 0x1b, 0xd9, 0xaa,
    -	0x58, 0x78, 0x63, 0x41, 0xdf, 0x89, 0x5c, 0x56, 0x44, 0xac, 0x7a, 0x3c, 0x0f, 0xe5, 0xd0, 0x85,
    -	0xaf, 0x77, 0x7d, 0xaf, 0x77, 0x7d, 0x2f, 0xdd, 0xf5, 0xc1, 0xeb, 0x5d, 0xdf, 0xb9, 0x76, 0x7d,
    -	0x29, 0xb5, 0xb8, 0x74, 0x69, 0x9b, 0xb8, 0x63, 0x05, 0xaa, 0x13, 0x39, 0x7e, 0xd9, 0xbb, 0xb8,
    -	0x2f, 0x26, 0x76, 0x71, 0x1f, 0x9d, 0x67, 0x6c, 0x9a, 0xb6, 0x8d, 0xfb, 0x97, 0x02, 0xea, 0xcb,
    -	0x6d, 0xbc, 0x84, 0xb9, 0xb0, 0x1f, 0x9f, 0x0b, 0xbf, 0xff, 0x7f, 0x18, 0x98, 0x65, 0x23, 0xf7,
    -	0x5f, 0x05, 0x20, 0x1c, 0x66, 0xd0, 0x3b, 0x10, 0xf9, 0xa1, 0x50, 0x96, 0x6e, 0xcf, 0x4d, 0x11,
    -	0x38, 0xba, 0x09, 0xf3, 0x7d, 0xca, 0x18, 0x69, 0xfb, 0x0b, 0x91, 0xe0, 0x77, 0xcc, 0x6d, 0x0f,
    -	0x8c, 0x7d, 0x3c, 0x3a, 0x80, 0x39, 0x87, 0x12, 0x66, 0x99, 0x72, 0x31, 0xf2, 0x3d, 0xfe, 0x0a,
    -	0xc6, 0x02, 0x72, 0x32, 0xaa, 0xdd, 0xca, 0xf2, 0x3b, 0x73, 0x5d, 0x3e, 0x9a, 0x05, 0x13, 0x96,
    -	0xe2, 0xd0, 0x7d, 0x28, 0x4b, 0x1d, 0x91, 0x03, 0x7b, 0x95, 0xf6, 0x9a, 0x3c, 0x4d, 0x79, 0x3b,
    -	0x49, 0x80, 0x27, 0x79, 0xd4, 0x87, 0x50, 0xf0, 0x07, 0x03, 0x54, 0x81, 0x7c, 0xe4, 0xbd, 0xe5,
    -	0x19, 0x2e, 0x20, 0x09, 0xc7, 0xcc, 0xa4, 0x3b, 0x46, 0xfd, 0x83, 0x02, 0x6f, 0xa4, 0x34, 0x25,
    -	0x74, 0x0d, 0x72, 0x03, 0xa7, 0x27, 0x5d, 0x30, 0x3f, 0x1e, 0xd5, 0x72, 0x9f, 0xe1, 0x47, 0x98,
    -	0xc3, 0x10, 0x81, 0x79, 0xe6, 0xad, 0xa7, 0x64, 0x30, 0xdd, 0xc9, 0x7e, 0xe3, 0xc9, 0xbd, 0x56,
    -	0xb3, 0xc4, 0xef, 0xc0, 0x87, 0xfa, 0x72, 0xd1, 0x3a, 0x14, 0x34, 0xd2, 0x1c, 0x98, 0x7a, 0xcf,
    -	0xbb, 0xaf, 0x05, 0xef, 0x8d, 0xb7, 0xb5, 0xe9, 0xc1, 0x70, 0x80, 0x6d, 0xee, 0x3c, 0x3f, 0xae,
    -	0x5e, 0xf9, 0xea, 0xb8, 0x7a, 0xe5, 0xc5, 0x71, 0xf5, 0xca, 0x2f, 0xc6, 0x55, 0xe5, 0xf9, 0xb8,
    -	0xaa, 0x7c, 0x35, 0xae, 0x2a, 0x2f, 0xc6, 0x55, 0xe5, 0x6f, 0xe3, 0xaa, 0xf2, 0xab, 0xbf, 0x57,
    -	0xaf, 0xfc, 0x60, 0x3d, 0xeb, 0x7f, 0x39, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x6f, 0xf2, 0xe8,
    -	0x4a, 0x10, 0x21, 0x00, 0x00,
    +	// 2215 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0x4d, 0x6c, 0x1b, 0xc7,
    +	0x15, 0xf6, 0x92, 0x92, 0x45, 0x3e, 0xca, 0x92, 0x38, 0x71, 0x2a, 0xfa, 0x8f, 0x14, 0x16, 0x41,
    +	0x21, 0x03, 0x2d, 0x59, 0x2b, 0x41, 0xe2, 0x3a, 0x29, 0x02, 0xae, 0x62, 0x3b, 0x76, 0x24, 0x59,
    +	0x18, 0x39, 0x52, 0xd1, 0x26, 0x40, 0x56, 0xcb, 0x21, 0xb9, 0x11, 0xb9, 0xcb, 0xee, 0x2c, 0x65,
    +	0xab, 0x05, 0xda, 0x02, 0x2d, 0x90, 0x1e, 0x0b, 0xf4, 0x52, 0xa0, 0xa7, 0xde, 0x7b, 0x69, 0xef,
    +	0x05, 0x7a, 0xf4, 0x31, 0xb7, 0x1a, 0x28, 0x4a, 0x54, 0x4c, 0xd1, 0x9e, 0x7a, 0x48, 0x81, 0xf6,
    +	0xa0, 0x4b, 0x8b, 0x99, 0x9d, 0xfd, 0xdf, 0x95, 0x56, 0xb2, 0x2c, 0x17, 0x85, 0x6f, 0xda, 0xf7,
    +	0xe6, 0xbd, 0x37, 0xef, 0xcd, 0x9b, 0xf7, 0xbe, 0x79, 0x22, 0xdc, 0xdc, 0xb9, 0x49, 0xeb, 0xba,
    +	0xd9, 0x50, 0x07, 0x7a, 0x43, 0x6d, 0xf5, 0x75, 0x4a, 0x75, 0xd3, 0xb0, 0x48, 0x47, 0xa7, 0xb6,
    +	0xa5, 0xda, 0xba, 0x69, 0x34, 0x76, 0x6f, 0x6c, 0x13, 0x5b, 0xbd, 0xd1, 0xe8, 0x10, 0x83, 0x58,
    +	0xaa, 0x4d, 0x5a, 0xf5, 0x81, 0x65, 0xda, 0x26, 0x5a, 0x74, 0x24, 0xeb, 0xea, 0x40, 0xaf, 0x27,
    +	0x4a, 0xd6, 0x85, 0xe4, 0xe5, 0xaf, 0x77, 0x74, 0xbb, 0x3b, 0xdc, 0xae, 0x6b, 0x66, 0xbf, 0xd1,
    +	0x31, 0x3b, 0x66, 0x83, 0x2b, 0xd8, 0x1e, 0xb6, 0xf9, 0x17, 0xff, 0xe0, 0x7f, 0x39, 0x8a, 0x2f,
    +	0xbf, 0x9e, 0x61, 0x4b, 0xd1, 0xdd, 0x5c, 0x7e, 0xc3, 0x17, 0xea, 0xab, 0x5a, 0x57, 0x37, 0x88,
    +	0xb5, 0xd7, 0x18, 0xec, 0x74, 0x18, 0x81, 0x36, 0xfa, 0xc4, 0x56, 0x93, 0xa4, 0x1a, 0x69, 0x52,
    +	0xd6, 0xd0, 0xb0, 0xf5, 0x3e, 0x89, 0x09, 0xbc, 0x79, 0x94, 0x00, 0xd5, 0xba, 0xa4, 0xaf, 0x46,
    +	0xe5, 0xe4, 0xf7, 0x01, 0x35, 0x07, 0x83, 0xde, 0xde, 0xb2, 0x69, 0xb4, 0xf5, 0xce, 0xd0, 0xf1,
    +	0x03, 0x2d, 0x01, 0x90, 0xc7, 0x03, 0x8b, 0x70, 0x0f, 0x2b, 0xd2, 0x82, 0xb4, 0x58, 0x54, 0xd0,
    +	0x93, 0x51, 0xed, 0xdc, 0x78, 0x54, 0x83, 0xdb, 0x1e, 0x07, 0x07, 0x56, 0xc9, 0x14, 0x66, 0x9b,
    +	0xc3, 0x96, 0x6e, 0x37, 0x0d, 0xc3, 0xb4, 0x1d, 0x35, 0xd7, 0x20, 0xbf, 0x43, 0xf6, 0x84, 0x7c,
    +	0x49, 0xc8, 0xe7, 0x3f, 0x20, 0x7b, 0x98, 0xd1, 0x51, 0x13, 0x66, 0x77, 0xd5, 0xde, 0x90, 0xf8,
    +	0x0a, 0x2b, 0x39, 0xbe, 0x74, 0x5e, 0x2c, 0x9d, 0xdd, 0x0c, 0xb3, 0x71, 0x74, 0xbd, 0xdc, 0x83,
    +	0xb2, 0xff, 0xb5, 0xa5, 0x5a, 0x86, 0x6e, 0x74, 0xd0, 0xd7, 0xa0, 0xd0, 0xd6, 0x49, 0xaf, 0x85,
    +	0x49, 0x5b, 0x28, 0x9c, 0x13, 0x0a, 0x0b, 0x77, 0x04, 0x1d, 0x7b, 0x2b, 0xd0, 0x75, 0x98, 0x7a,
    +	0xe4, 0x08, 0x56, 0xf2, 0x7c, 0xf1, 0xac, 0x58, 0x3c, 0x25, 0xf4, 0x61, 0x97, 0x2f, 0xbf, 0x0b,
    +	0xc5, 0xfb, 0x1b, 0x0f, 0xd6, 0xd6, 0x55, 0x5b, 0xeb, 0x9e, 0x28, 0x46, 0x6d, 0x98, 0x59, 0x65,
    +	0xc2, 0xcb, 0xa6, 0xd1, 0xd2, 0x79, 0x88, 0x16, 0x60, 0xc2, 0x50, 0xfb, 0x44, 0xc8, 0x4f, 0x0b,
    +	0xf9, 0x89, 0x35, 0xb5, 0x4f, 0x30, 0xe7, 0x44, 0xec, 0xe4, 0x32, 0xd9, 0xf9, 0xe3, 0x84, 0x30,
    +	0x84, 0x09, 0x35, 0x87, 0x96, 0x46, 0x28, 0x7a, 0x0c, 0x65, 0xa6, 0x8e, 0x0e, 0x54, 0x8d, 0x6c,
    +	0x90, 0x1e, 0xd1, 0x6c, 0xd3, 0xe2, 0x56, 0x4b, 0x4b, 0xaf, 0xd7, 0xfd, 0x1b, 0xe3, 0x25, 0x4f,
    +	0x7d, 0xb0, 0xd3, 0x61, 0x04, 0x5a, 0x67, 0x39, 0x5a, 0xdf, 0xbd, 0x51, 0x5f, 0x51, 0xb7, 0x49,
    +	0xcf, 0x15, 0x55, 0x5e, 0x1d, 0x8f, 0x6a, 0xe5, 0xb5, 0xa8, 0x46, 0x1c, 0x37, 0x82, 0x4c, 0x98,
    +	0x31, 0xb7, 0x3f, 0x25, 0x9a, 0xed, 0x99, 0xcd, 0x9d, 0xdc, 0x2c, 0x1a, 0x8f, 0x6a, 0x33, 0x0f,
    +	0x42, 0xea, 0x70, 0x44, 0x3d, 0xfa, 0x21, 0x5c, 0xb0, 0x84, 0xdf, 0x78, 0xd8, 0x23, 0xb4, 0x92,
    +	0x5f, 0xc8, 0x2f, 0x96, 0x96, 0x9a, 0xf5, 0xac, 0x85, 0xa1, 0xce, 0xfc, 0x6a, 0x31, 0xd9, 0x2d,
    +	0xdd, 0xee, 0x3e, 0x18, 0x10, 0x87, 0x4d, 0x95, 0x57, 0x45, 0xdc, 0x2f, 0xe0, 0xa0, 0x7e, 0x1c,
    +	0x36, 0x87, 0x7e, 0x21, 0xc1, 0x45, 0xf2, 0x58, 0xeb, 0x0d, 0x5b, 0x24, 0xb4, 0xae, 0x32, 0x71,
    +	0x5a, 0xfb, 0xb8, 0x2a, 0xf6, 0x71, 0xf1, 0x76, 0x82, 0x19, 0x9c, 0x68, 0x1c, 0xbd, 0x07, 0xa5,
    +	0x3e, 0x4b, 0x89, 0x75, 0xb3, 0xa7, 0x6b, 0x7b, 0x95, 0x29, 0x9e, 0x48, 0xf2, 0x78, 0x54, 0x2b,
    +	0xad, 0xfa, 0xe4, 0x83, 0x51, 0x6d, 0x36, 0xf0, 0xf9, 0x70, 0x6f, 0x40, 0x70, 0x50, 0x4c, 0xfe,
    +	0xab, 0x04, 0xf3, 0xab, 0x43, 0x76, 0xbf, 0x8d, 0x4e, 0xd3, 0xdd, 0xbb, 0xc3, 0x43, 0x9f, 0x40,
    +	0x81, 0x1d, 0x5a, 0x4b, 0xb5, 0x55, 0x91, 0x59, 0xdf, 0xc8, 0x76, 0xc4, 0xce, 0x79, 0xae, 0x12,
    +	0x5b, 0xf5, 0x33, 0xdb, 0xa7, 0x61, 0x4f, 0x2b, 0xea, 0xc0, 0x04, 0x1d, 0x10, 0x4d, 0x24, 0xd0,
    +	0xed, 0xec, 0x81, 0x4c, 0xd9, 0xf2, 0xc6, 0x80, 0x68, 0xfe, 0xa5, 0x63, 0x5f, 0x98, 0x1b, 0x90,
    +	0xff, 0x29, 0x41, 0x35, 0x45, 0x46, 0xd1, 0x8d, 0x16, 0xab, 0x32, 0xcf, 0xdf, 0x5b, 0x23, 0xe4,
    +	0xed, 0xca, 0x33, 0x7b, 0x2b, 0x76, 0x9e, 0xea, 0xf4, 0x97, 0x12, 0xc8, 0x87, 0x8b, 0xae, 0xe8,
    +	0xd4, 0x46, 0x1f, 0xc5, 0x1c, 0xaf, 0x67, 0xbc, 0xc9, 0x3a, 0x75, 0xdc, 0xf6, 0xca, 0xb1, 0x4b,
    +	0x09, 0x38, 0xdd, 0x87, 0x49, 0xdd, 0x26, 0x7d, 0x5a, 0xc9, 0xf1, 0xcb, 0xf2, 0xfe, 0x69, 0x79,
    +	0xad, 0x5c, 0x10, 0x46, 0x27, 0xef, 0x31, 0xf5, 0xd8, 0xb1, 0x22, 0xff, 0x26, 0x77, 0x94, 0xcf,
    +	0x2c, 0x40, 0xac, 0x08, 0x0f, 0x38, 0x71, 0xcd, 0x2f, 0xd6, 0xde, 0xe1, 0xad, 0x7b, 0x1c, 0x1c,
    +	0x58, 0xc5, 0xe2, 0x34, 0x50, 0x2d, 0xb5, 0xef, 0xb6, 0xa1, 0xd2, 0xd2, 0x52, 0x76, 0x67, 0xd6,
    +	0x85, 0xa4, 0x32, 0xcd, 0xe2, 0xe4, 0x7e, 0x61, 0x4f, 0x23, 0xb2, 0x61, 0xa6, 0x1f, 0xaa, 0xf0,
    +	0xbc, 0x7b, 0x95, 0x96, 0x6e, 0x1e, 0x23, 0x60, 0x21, 0x79, 0xa7, 0xb4, 0x86, 0x69, 0x38, 0x62,
    +	0x43, 0xfe, 0x42, 0x82, 0x2b, 0x29, 0xe1, 0x3a, 0x83, 0xdc, 0x68, 0x87, 0x73, 0xa3, 0xf9, 0xec,
    +	0xb9, 0x91, 0x9c, 0x14, 0xbf, 0x3a, 0x9f, 0xea, 0x25, 0xcf, 0x86, 0x4f, 0xa0, 0xc8, 0xcf, 0xe1,
    +	0x03, 0xdd, 0x68, 0x25, 0xf4, 0xd0, 0x2c, 0x47, 0xcb, 0x44, 0x95, 0x0b, 0xe3, 0x51, 0xad, 0xe8,
    +	0x7d, 0x62, 0x5f, 0x29, 0xfa, 0x3e, 0xcc, 0xf5, 0x05, 0x50, 0x60, 0xf2, 0xba, 0x61, 0x53, 0x91,
    +	0x43, 0x27, 0x3f, 0xdf, 0x8b, 0xe3, 0x51, 0x6d, 0x6e, 0x35, 0xa2, 0x15, 0xc7, 0xec, 0x20, 0x0d,
    +	0x8a, 0xbb, 0xaa, 0xa5, 0xab, 0xdb, 0x7e, 0xeb, 0x3c, 0x46, 0xe2, 0x6e, 0x0a, 0x51, 0xa5, 0x2c,
    +	0x42, 0x5b, 0x74, 0x29, 0x14, 0xfb, 0x7a, 0x99, 0x91, 0xfe, 0xd0, 0x81, 0x89, 0x6e, 0x5f, 0x5c,
    +	0x3a, 0xee, 0x71, 0x9a, 0x86, 0x6f, 0xc4, 0xa5, 0x50, 0xec, 0xeb, 0x45, 0x2b, 0x70, 0xa1, 0xad,
    +	0xea, 0xbd, 0xa1, 0x45, 0x44, 0xd3, 0x9b, 0xe4, 0x17, 0xf7, 0xab, 0xac, 0x83, 0xdf, 0x09, 0x32,
    +	0x0e, 0x46, 0xb5, 0x72, 0x88, 0xc0, 0x1b, 0x5f, 0x58, 0x18, 0xfd, 0x00, 0x66, 0xfb, 0x21, 0xf0,
    +	0x46, 0x2b, 0xe7, 0xf9, 0xc6, 0x8f, 0x7b, 0x24, 0x9e, 0x02, 0x1f, 0xe8, 0x86, 0xe9, 0x14, 0x47,
    +	0x2d, 0xa1, 0x9f, 0x49, 0x80, 0x2c, 0xa2, 0x1b, 0xbb, 0xa6, 0xc6, 0x35, 0x86, 0xba, 0xf8, 0xb7,
    +	0x85, 0x1a, 0x84, 0x63, 0x2b, 0x0e, 0x46, 0xb5, 0x5b, 0x19, 0x9e, 0x2d, 0xf5, 0xb8, 0x24, 0x0f,
    +	0x41, 0x82, 0x4d, 0xf9, 0x6f, 0x05, 0x98, 0x75, 0x6f, 0xc7, 0x16, 0xd9, 0xee, 0x9a, 0xe6, 0x4e,
    +	0x06, 0x18, 0xfb, 0x08, 0xa6, 0xb5, 0x9e, 0x4e, 0x0c, 0xdb, 0x79, 0x69, 0x88, 0x6c, 0xfe, 0x56,
    +	0xf6, 0xd0, 0x09, 0x53, 0xcb, 0x01, 0x25, 0xca, 0x45, 0x61, 0x68, 0x3a, 0x48, 0xc5, 0x21, 0x43,
    +	0xe8, 0x23, 0x98, 0xb4, 0x02, 0x28, 0xf0, 0xad, 0x2c, 0x16, 0xeb, 0x09, 0x98, 0xcb, 0x2b, 0x15,
    +	0x0e, 0xc8, 0x72, 0x94, 0xc6, 0x53, 0x6c, 0xe2, 0x59, 0x52, 0x2c, 0x82, 0xd1, 0x8a, 0x27, 0xc2,
    +	0x68, 0xc9, 0x50, 0x7f, 0xf2, 0xc5, 0x40, 0xfd, 0xd2, 0xf3, 0x85, 0xfa, 0xef, 0x41, 0x89, 0xea,
    +	0x2d, 0x72, 0xbb, 0xdd, 0x26, 0x9a, 0xcd, 0xee, 0xa3, 0x17, 0xb0, 0x0d, 0x9f, 0xcc, 0x02, 0xe6,
    +	0x7f, 0x2e, 0xf7, 0x54, 0x4a, 0x71, 0x50, 0x0c, 0xdd, 0x82, 0x19, 0xf6, 0x46, 0x36, 0x87, 0xf6,
    +	0x06, 0xd1, 0x4c, 0xa3, 0x45, 0xf9, 0xbd, 0x9a, 0x74, 0x76, 0xf0, 0x30, 0xc4, 0xc1, 0x91, 0x95,
    +	0xe8, 0x43, 0x98, 0xf7, 0xb2, 0x08, 0x93, 0x5d, 0x9d, 0x3c, 0xda, 0x24, 0x16, 0xe5, 0xd5, 0xa1,
    +	0xb0, 0x90, 0x5f, 0x2c, 0x2a, 0x57, 0xc6, 0xa3, 0xda, 0x7c, 0x33, 0x79, 0x09, 0x4e, 0x93, 0x45,
    +	0x3f, 0x4d, 0xbe, 0xef, 0xc0, 0x1d, 0x7c, 0x78, 0x56, 0x77, 0x3d, 0xa9, 0xe6, 0x4d, 0x9f, 0x55,
    +	0xcd, 0x93, 0xff, 0x2c, 0xc1, 0xd5, 0x48, 0xa1, 0x09, 0x8f, 0x29, 0x9e, 0x3f, 0x04, 0xff, 0x2e,
    +	0x14, 0x84, 0x65, 0x17, 0x74, 0x7c, 0xf3, 0xf8, 0xa0, 0x43, 0x68, 0x50, 0x26, 0x98, 0x29, 0xec,
    +	0x29, 0x94, 0xff, 0x21, 0xc1, 0xc2, 0x61, 0xfe, 0x9d, 0x01, 0xa2, 0xda, 0x09, 0x23, 0xaa, 0x3b,
    +	0x27, 0x76, 0x2e, 0xb4, 0xf1, 0x14, 0x58, 0xf5, 0xdb, 0x1c, 0x14, 0xdc, 0x3e, 0x8d, 0xde, 0x61,
    +	0x18, 0xca, 0xd6, 0xba, 0x2c, 0xf5, 0xc4, 0x54, 0xa3, 0xea, 0x36, 0xf3, 0x75, 0x97, 0x71, 0x10,
    +	0xfc, 0xc0, 0xbe, 0x00, 0xbf, 0x1e, 0x6a, 0x6c, 0x6e, 0x25, 0x20, 0xf0, 0x3b, 0xd9, 0xbd, 0x88,
    +	0xcf, 0xbe, 0x94, 0xaf, 0xb0, 0xcb, 0x15, 0xa7, 0xe3, 0x04, 0x7b, 0x0c, 0x08, 0x7e, 0x4a, 0x4d,
    +	0x83, 0x6f, 0x91, 0x57, 0xfe, 0x63, 0x01, 0x41, 0x6f, 0x96, 0xe4, 0x00, 0x41, 0xef, 0x13, 0xfb,
    +	0x4a, 0xe5, 0xa7, 0x12, 0xcc, 0xa7, 0x4c, 0x01, 0xd0, 0x5b, 0xfe, 0x9c, 0x83, 0x57, 0xe7, 0x8a,
    +	0xc4, 0x0b, 0x4e, 0x39, 0x38, 0xa0, 0xe0, 0x0c, 0x1c, 0x5e, 0x87, 0x7e, 0xc2, 0x8a, 0x4b, 0x4c,
    +	0x9f, 0x68, 0xc9, 0x27, 0x6e, 0x90, 0x97, 0x3d, 0x14, 0x12, 0xe3, 0xe1, 0x04, 0x73, 0xb2, 0x0a,
    +	0x3e, 0xf6, 0x65, 0x0f, 0x2c, 0x75, 0xa0, 0x8b, 0xf2, 0x17, 0x7d, 0x60, 0x35, 0xd7, 0xef, 0x09,
    +	0x0e, 0x0e, 0xac, 0x62, 0xa0, 0x63, 0x87, 0x21, 0xf0, 0x5c, 0x18, 0x74, 0x70, 0x2c, 0xcd, 0x39,
    +	0xf2, 0xef, 0x72, 0xe0, 0xbd, 0x9d, 0x32, 0x60, 0x94, 0x06, 0x14, 0xbd, 0x9e, 0x26, 0xb4, 0x7a,
    +	0x00, 0xd3, 0xeb, 0x7f, 0xd8, 0x5f, 0x83, 0x3e, 0x86, 0x02, 0x75, 0x3b, 0x5d, 0xfe, 0xe4, 0x9d,
    +	0x8e, 0xbf, 0xf1, 0xbc, 0x1e, 0xe7, 0xa9, 0x44, 0x36, 0xcc, 0xf3, 0x27, 0x01, 0xb1, 0x89, 0xb5,
    +	0x66, 0xda, 0x77, 0xcc, 0xa1, 0xd1, 0x6a, 0x6a, 0x3c, 0xd3, 0x1d, 0x98, 0x71, 0x8b, 0xf5, 0x96,
    +	0xf5, 0xe4, 0x25, 0x07, 0xa3, 0xda, 0x95, 0x14, 0x16, 0xbf, 0x4d, 0x69, 0xaa, 0xe5, 0x5f, 0x4b,
    +	0x30, 0xb7, 0x41, 0xac, 0x5d, 0x5d, 0x23, 0x98, 0xb4, 0x89, 0x45, 0x0c, 0x2d, 0x12, 0x1a, 0x29,
    +	0x43, 0x68, 0xdc, 0x68, 0xe7, 0x52, 0xa3, 0x7d, 0x15, 0x26, 0x06, 0xaa, 0xdd, 0x15, 0x53, 0xd7,
    +	0x02, 0xe3, 0xae, 0xab, 0x76, 0x17, 0x73, 0x2a, 0xe7, 0x9a, 0x96, 0xcd, 0x1d, 0x9d, 0x14, 0x5c,
    +	0xd3, 0xb2, 0x31, 0xa7, 0xca, 0xbf, 0x94, 0x60, 0x9a, 0x79, 0xb1, 0xdc, 0x25, 0xda, 0x8e, 0x6e,
    +	0x74, 0xd0, 0x67, 0x12, 0x20, 0x12, 0x9d, 0x04, 0x3b, 0x37, 0xa2, 0xb4, 0xf4, 0x76, 0xf6, 0x3b,
    +	0x19, 0x9b, 0x26, 0xfb, 0x69, 0x1d, 0x63, 0x51, 0x9c, 0x60, 0x52, 0xfe, 0x53, 0x0e, 0x2e, 0x6d,
    +	0xaa, 0x3d, 0xbd, 0xf5, 0x82, 0x66, 0x64, 0x7a, 0x68, 0x6a, 0x74, 0xf7, 0x38, 0x2f, 0xb7, 0x94,
    +	0x4d, 0xa7, 0x0d, 0x8c, 0xd0, 0xf7, 0xe0, 0x3c, 0xb5, 0x55, 0x7b, 0xe8, 0xce, 0x1e, 0xee, 0x9d,
    +	0x86, 0x31, 0xae, 0x50, 0x99, 0x11, 0xe6, 0xce, 0x3b, 0xdf, 0x58, 0x18, 0x92, 0xff, 0x2d, 0xc1,
    +	0x42, 0xaa, 0xec, 0xd9, 0x8d, 0xe6, 0x06, 0xa1, 0x20, 0xaf, 0x9d, 0x82, 0xdf, 0x47, 0x0d, 0xe7,
    +	0xfe, 0x25, 0xc1, 0x6b, 0x47, 0x09, 0x9f, 0x01, 0x60, 0x30, 0xc3, 0x80, 0xe1, 0xfe, 0xe9, 0x79,
    +	0x9e, 0x02, 0x1a, 0x3e, 0xcb, 0x1f, 0xed, 0xf7, 0xcb, 0x11, 0x5d, 0xe0, 0x1f, 0x3d, 0x5b, 0x50,
    +	0xde, 0x15, 0xf1, 0x32, 0x0d, 0xa7, 0xa4, 0x3b, 0x13, 0x96, 0xa2, 0x72, 0x9d, 0x3d, 0xe4, 0x36,
    +	0xa3, 0xcc, 0x83, 0x51, 0x6d, 0x2e, 0x4a, 0xc4, 0x71, 0x1d, 0xf2, 0xdf, 0x25, 0xb8, 0x96, 0x7a,
    +	0x12, 0x67, 0x90, 0x7a, 0xdd, 0x70, 0xea, 0x2d, 0x9f, 0x46, 0xea, 0xa5, 0xce, 0xff, 0xae, 0x1d,
    +	0x5a, 0x0d, 0xff, 0xcf, 0x27, 0x80, 0x3b, 0x50, 0xf2, 0x8f, 0xdf, 0x1d, 0x9c, 0xbc, 0x71, 0xfc,
    +	0x78, 0x9b, 0x86, 0xf2, 0x8a, 0x08, 0x70, 0xc9, 0xa7, 0x51, 0x1c, 0xd4, 0x7e, 0xca, 0x13, 0x94,
    +	0x1f, 0xc1, 0x9c, 0x1a, 0xfe, 0x2f, 0x34, 0xad, 0x4c, 0x1e, 0xf7, 0xe1, 0x16, 0xf9, 0x3f, 0xb6,
    +	0x52, 0x11, 0x4e, 0xcc, 0x45, 0x18, 0x14, 0xc7, 0x8c, 0xbd, 0xd8, 0x29, 0x61, 0x68, 0x74, 0x3b,
    +	0xf5, 0x7c, 0x46, 0xb7, 0xf2, 0x1f, 0x72, 0x50, 0x3b, 0xa2, 0x7d, 0xa3, 0xfb, 0x80, 0xcc, 0x6d,
    +	0x4a, 0xac, 0x5d, 0xd2, 0xba, 0xeb, 0xfc, 0xe2, 0xc0, 0x85, 0xf5, 0x79, 0x1f, 0x50, 0x3d, 0x88,
    +	0xad, 0xc0, 0x09, 0x52, 0xa8, 0x07, 0xd3, 0x76, 0x00, 0xea, 0x89, 0x5b, 0xf0, 0x66, 0x76, 0xbf,
    +	0x82, 0x40, 0x51, 0x99, 0x1b, 0x8f, 0x6a, 0x21, 0xe8, 0x88, 0x43, 0xda, 0x91, 0x06, 0xa0, 0xf9,
    +	0x47, 0xe7, 0xa4, 0x7e, 0x23, 0x5b, 0x15, 0xf3, 0x4f, 0xcc, 0xeb, 0x3b, 0x81, 0xc3, 0x0a, 0xa8,
    +	0x95, 0xf7, 0xa7, 0xa0, 0xec, 0x87, 0xf0, 0xe5, 0x10, 0xf5, 0xe5, 0x10, 0xf5, 0xd0, 0x21, 0x2a,
    +	0xbc, 0x1c, 0xa2, 0x9e, 0x68, 0x88, 0x9a, 0x50, 0x8b, 0x4b, 0x67, 0x36, 0xbd, 0xdc, 0x97, 0xa0,
    +	0x1a, 0xbb, 0xe3, 0x67, 0x3d, 0xbf, 0xfc, 0x38, 0x36, 0xbf, 0x7c, 0xfb, 0x24, 0xb0, 0x29, 0x6d,
    +	0x82, 0xf9, 0xa5, 0x04, 0xf2, 0xe1, 0x3e, 0xfe, 0x4f, 0xff, 0x62, 0xe0, 0xf0, 0xad, 0xa7, 0x80,
    +	0xc3, 0xff, 0x48, 0x00, 0x3e, 0x98, 0x41, 0xaf, 0x41, 0xe0, 0x47, 0x58, 0xa2, 0x74, 0x3b, 0x61,
    +	0x0a, 0xd0, 0xd1, 0x75, 0x98, 0xea, 0x13, 0x4a, 0xd5, 0x8e, 0x3b, 0x10, 0xf1, 0x7e, 0x64, 0xb6,
    +	0xea, 0x90, 0xb1, 0xcb, 0x47, 0x5b, 0x70, 0xde, 0x22, 0x2a, 0x15, 0xd3, 0xcc, 0xa2, 0xf2, 0x2e,
    +	0x7b, 0x05, 0x63, 0x4e, 0x39, 0x18, 0xd5, 0x6e, 0x64, 0xf9, 0x39, 0x61, 0x5d, 0x3c, 0x9a, 0xb9,
    +	0x10, 0x16, 0xea, 0xd0, 0x5d, 0x28, 0x0b, 0x1b, 0x81, 0x0d, 0x3b, 0x95, 0xf6, 0x92, 0xd8, 0x4d,
    +	0x79, 0x35, 0xba, 0x00, 0xc7, 0x65, 0xe4, 0xfb, 0x50, 0x70, 0x81, 0x01, 0xaa, 0xc0, 0x44, 0xe0,
    +	0xbd, 0xe5, 0x38, 0xce, 0x29, 0x91, 0xc0, 0xe4, 0x92, 0x03, 0x23, 0xff, 0x5e, 0x82, 0x57, 0x12,
    +	0x9a, 0x12, 0xba, 0x04, 0xf9, 0xa1, 0xd5, 0x13, 0x21, 0x98, 0x1a, 0x8f, 0x6a, 0xf9, 0x0f, 0xf1,
    +	0x0a, 0x66, 0x34, 0xa4, 0xc2, 0x14, 0x75, 0xc6, 0x53, 0x22, 0x99, 0x6e, 0x65, 0x3f, 0xf1, 0xe8,
    +	0x5c, 0x4b, 0x29, 0xb1, 0x33, 0x70, 0xa9, 0xae, 0x5e, 0xb4, 0x08, 0x05, 0x4d, 0x55, 0x86, 0x46,
    +	0xab, 0xe7, 0x9c, 0xd7, 0xb4, 0xf3, 0xc6, 0x5b, 0x6e, 0x3a, 0x34, 0xec, 0x71, 0x95, 0xb5, 0x27,
    +	0xfb, 0xd5, 0x73, 0x9f, 0xef, 0x57, 0xcf, 0x3d, 0xdd, 0xaf, 0x9e, 0xfb, 0xf1, 0xb8, 0x2a, 0x3d,
    +	0x19, 0x57, 0xa5, 0xcf, 0xc7, 0x55, 0xe9, 0xe9, 0xb8, 0x2a, 0xfd, 0x65, 0x5c, 0x95, 0x7e, 0xfe,
    +	0x45, 0xf5, 0xdc, 0x77, 0x16, 0xb3, 0xfe, 0x98, 0xf5, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x13,
    +	0x7c, 0x49, 0xa4, 0xf7, 0x2a, 0x00, 0x00,
    +}
    +
    +func (m *ApplyConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ApplyConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ApplyConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
     func (m *AuditAnnotation) Marshal() (dAtA []byte, err error) {
    @@ -971,6 +1277,34 @@ func (m *ExpressionWarning) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *JSONPatch) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *JSONPatch) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *JSONPatch) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *MatchCondition) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -1086,7 +1420,7 @@ func (m *MatchResources) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    -func (m *MutatingWebhook) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingAdmissionPolicy) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1096,112 +1430,18 @@ func (m *MutatingWebhook) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *MutatingWebhook) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicy) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *MutatingWebhook) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.MatchConditions) > 0 {
    -		for iNdEx := len(m.MatchConditions) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.MatchConditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x62
    -		}
    -	}
    -	if m.ObjectSelector != nil {
    -		{
    -			size, err := m.ObjectSelector.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    -		}
    -		i--
    -		dAtA[i] = 0x5a
    -	}
    -	if m.ReinvocationPolicy != nil {
    -		i -= len(*m.ReinvocationPolicy)
    -		copy(dAtA[i:], *m.ReinvocationPolicy)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ReinvocationPolicy)))
    -		i--
    -		dAtA[i] = 0x52
    -	}
    -	if m.MatchPolicy != nil {
    -		i -= len(*m.MatchPolicy)
    -		copy(dAtA[i:], *m.MatchPolicy)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.MatchPolicy)))
    -		i--
    -		dAtA[i] = 0x4a
    -	}
    -	if len(m.AdmissionReviewVersions) > 0 {
    -		for iNdEx := len(m.AdmissionReviewVersions) - 1; iNdEx >= 0; iNdEx-- {
    -			i -= len(m.AdmissionReviewVersions[iNdEx])
    -			copy(dAtA[i:], m.AdmissionReviewVersions[iNdEx])
    -			i = encodeVarintGenerated(dAtA, i, uint64(len(m.AdmissionReviewVersions[iNdEx])))
    -			i--
    -			dAtA[i] = 0x42
    -		}
    -	}
    -	if m.TimeoutSeconds != nil {
    -		i = encodeVarintGenerated(dAtA, i, uint64(*m.TimeoutSeconds))
    -		i--
    -		dAtA[i] = 0x38
    -	}
    -	if m.SideEffects != nil {
    -		i -= len(*m.SideEffects)
    -		copy(dAtA[i:], *m.SideEffects)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SideEffects)))
    -		i--
    -		dAtA[i] = 0x32
    -	}
    -	if m.NamespaceSelector != nil {
    -		{
    -			size, err := m.NamespaceSelector.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    -		}
    -		i--
    -		dAtA[i] = 0x2a
    -	}
    -	if m.FailurePolicy != nil {
    -		i -= len(*m.FailurePolicy)
    -		copy(dAtA[i:], *m.FailurePolicy)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
    -		i--
    -		dAtA[i] = 0x22
    -	}
    -	if len(m.Rules) > 0 {
    -		for iNdEx := len(m.Rules) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Rules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x1a
    -		}
    -	}
     	{
    -		size, err := m.ClientConfig.MarshalToSizedBuffer(dAtA[:i])
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
     		if err != nil {
     			return 0, err
     		}
    @@ -1210,15 +1450,20 @@ func (m *MutatingWebhook) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	}
     	i--
     	dAtA[i] = 0x12
    -	i -= len(m.Name)
    -	copy(dAtA[i:], m.Name)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
     	i--
     	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *MutatingWebhookConfiguration) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingAdmissionPolicyBinding) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1228,30 +1473,26 @@ func (m *MutatingWebhookConfiguration) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *MutatingWebhookConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyBinding) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *MutatingWebhookConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyBinding) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.Webhooks) > 0 {
    -		for iNdEx := len(m.Webhooks) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Webhooks[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x12
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
     		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    +	i--
    +	dAtA[i] = 0x12
     	{
     		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
     		if err != nil {
    @@ -1265,7 +1506,7 @@ func (m *MutatingWebhookConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, e
     	return len(dAtA) - i, nil
     }
     
    -func (m *MutatingWebhookConfigurationList) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingAdmissionPolicyBindingList) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1275,12 +1516,12 @@ func (m *MutatingWebhookConfigurationList) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *MutatingWebhookConfigurationList) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyBindingList) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *MutatingWebhookConfigurationList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyBindingList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
    @@ -1312,7 +1553,7 @@ func (m *MutatingWebhookConfigurationList) MarshalToSizedBuffer(dAtA []byte) (in
     	return len(dAtA) - i, nil
     }
     
    -func (m *NamedRuleWithOperations) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingAdmissionPolicyBindingSpec) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1322,39 +1563,49 @@ func (m *NamedRuleWithOperations) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *NamedRuleWithOperations) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyBindingSpec) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *NamedRuleWithOperations) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyBindingSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	{
    -		size, err := m.RuleWithOperations.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    +	if m.MatchResources != nil {
    +		{
    +			size, err := m.MatchResources.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		i--
    +		dAtA[i] = 0x1a
     	}
    -	i--
    -	dAtA[i] = 0x12
    -	if len(m.ResourceNames) > 0 {
    -		for iNdEx := len(m.ResourceNames) - 1; iNdEx >= 0; iNdEx-- {
    -			i -= len(m.ResourceNames[iNdEx])
    -			copy(dAtA[i:], m.ResourceNames[iNdEx])
    -			i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceNames[iNdEx])))
    -			i--
    -			dAtA[i] = 0xa
    +	if m.ParamRef != nil {
    +		{
    +			size, err := m.ParamRef.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
    +		i--
    +		dAtA[i] = 0x12
     	}
    +	i -= len(m.PolicyName)
    +	copy(dAtA[i:], m.PolicyName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.PolicyName)))
    +	i--
    +	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *ParamKind) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingAdmissionPolicyList) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1364,30 +1615,44 @@ func (m *ParamKind) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ParamKind) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyList) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ParamKind) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicyList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	i -= len(m.Kind)
    -	copy(dAtA[i:], m.Kind)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind)))
    -	i--
    -	dAtA[i] = 0x12
    -	i -= len(m.APIVersion)
    -	copy(dAtA[i:], m.APIVersion)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion)))
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
     	i--
     	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *ParamRef) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingAdmissionPolicySpec) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1397,26 +1662,73 @@ func (m *ParamRef) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ParamRef) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicySpec) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ParamRef) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingAdmissionPolicySpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if m.ParameterNotFoundAction != nil {
    -		i -= len(*m.ParameterNotFoundAction)
    -		copy(dAtA[i:], *m.ParameterNotFoundAction)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ParameterNotFoundAction)))
    +	i -= len(m.ReinvocationPolicy)
    +	copy(dAtA[i:], m.ReinvocationPolicy)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ReinvocationPolicy)))
    +	i--
    +	dAtA[i] = 0x3a
    +	if len(m.MatchConditions) > 0 {
    +		for iNdEx := len(m.MatchConditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.MatchConditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x32
    +		}
    +	}
    +	if m.FailurePolicy != nil {
    +		i -= len(*m.FailurePolicy)
    +		copy(dAtA[i:], *m.FailurePolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
     		i--
    -		dAtA[i] = 0x22
    +		dAtA[i] = 0x2a
     	}
    -	if m.Selector != nil {
    +	if len(m.Mutations) > 0 {
    +		for iNdEx := len(m.Mutations) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Mutations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x22
    +		}
    +	}
    +	if len(m.Variables) > 0 {
    +		for iNdEx := len(m.Variables) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Variables[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	if m.MatchConstraints != nil {
     		{
    -			size, err := m.Selector.MarshalToSizedBuffer(dAtA[:i])
    +			size, err := m.MatchConstraints.MarshalToSizedBuffer(dAtA[:i])
     			if err != nil {
     				return 0, err
     			}
    @@ -1424,67 +1736,24 @@ func (m *ParamRef) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
     		i--
    -		dAtA[i] = 0x1a
    -	}
    -	i -= len(m.Namespace)
    -	copy(dAtA[i:], m.Namespace)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
    -	i--
    -	dAtA[i] = 0x12
    -	i -= len(m.Name)
    -	copy(dAtA[i:], m.Name)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ServiceReference) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ServiceReference) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ServiceReference) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if m.Port != nil {
    -		i = encodeVarintGenerated(dAtA, i, uint64(*m.Port))
    -		i--
    -		dAtA[i] = 0x20
    +		dAtA[i] = 0x12
     	}
    -	if m.Path != nil {
    -		i -= len(*m.Path)
    -		copy(dAtA[i:], *m.Path)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Path)))
    +	if m.ParamKind != nil {
    +		{
    +			size, err := m.ParamKind.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
     		i--
    -		dAtA[i] = 0x1a
    +		dAtA[i] = 0xa
     	}
    -	i -= len(m.Name)
    -	copy(dAtA[i:], m.Name)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    -	i--
    -	dAtA[i] = 0x12
    -	i -= len(m.Namespace)
    -	copy(dAtA[i:], m.Namespace)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
    -	i--
    -	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *TypeChecking) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingWebhook) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1494,20 +1763,20 @@ func (m *TypeChecking) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *TypeChecking) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingWebhook) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *TypeChecking) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingWebhook) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.ExpressionWarnings) > 0 {
    -		for iNdEx := len(m.ExpressionWarnings) - 1; iNdEx >= 0; iNdEx-- {
    +	if len(m.MatchConditions) > 0 {
    +		for iNdEx := len(m.MatchConditions) - 1; iNdEx >= 0; iNdEx-- {
     			{
    -				size, err := m.ExpressionWarnings[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				size, err := m.MatchConditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
     				if err != nil {
     					return 0, err
     				}
    @@ -1515,54 +1784,91 @@ func (m *TypeChecking) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     				i = encodeVarintGenerated(dAtA, i, uint64(size))
     			}
     			i--
    -			dAtA[i] = 0xa
    +			dAtA[i] = 0x62
     		}
     	}
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ValidatingAdmissionPolicy) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    +	if m.ObjectSelector != nil {
    +		{
    +			size, err := m.ObjectSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x5a
     	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ValidatingAdmissionPolicy) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ValidatingAdmissionPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	{
    -		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    +	if m.ReinvocationPolicy != nil {
    +		i -= len(*m.ReinvocationPolicy)
    +		copy(dAtA[i:], *m.ReinvocationPolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ReinvocationPolicy)))
    +		i--
    +		dAtA[i] = 0x52
    +	}
    +	if m.MatchPolicy != nil {
    +		i -= len(*m.MatchPolicy)
    +		copy(dAtA[i:], *m.MatchPolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.MatchPolicy)))
    +		i--
    +		dAtA[i] = 0x4a
    +	}
    +	if len(m.AdmissionReviewVersions) > 0 {
    +		for iNdEx := len(m.AdmissionReviewVersions) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.AdmissionReviewVersions[iNdEx])
    +			copy(dAtA[i:], m.AdmissionReviewVersions[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.AdmissionReviewVersions[iNdEx])))
    +			i--
    +			dAtA[i] = 0x42
     		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	i--
    -	dAtA[i] = 0x1a
    -	{
    -		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    +	if m.TimeoutSeconds != nil {
    +		i = encodeVarintGenerated(dAtA, i, uint64(*m.TimeoutSeconds))
    +		i--
    +		dAtA[i] = 0x38
    +	}
    +	if m.SideEffects != nil {
    +		i -= len(*m.SideEffects)
    +		copy(dAtA[i:], *m.SideEffects)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SideEffects)))
    +		i--
    +		dAtA[i] = 0x32
    +	}
    +	if m.NamespaceSelector != nil {
    +		{
    +			size, err := m.NamespaceSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x2a
    +	}
    +	if m.FailurePolicy != nil {
    +		i -= len(*m.FailurePolicy)
    +		copy(dAtA[i:], *m.FailurePolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	if len(m.Rules) > 0 {
    +		for iNdEx := len(m.Rules) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Rules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
     		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	i--
    -	dAtA[i] = 0x12
     	{
    -		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		size, err := m.ClientConfig.MarshalToSizedBuffer(dAtA[:i])
     		if err != nil {
     			return 0, err
     		}
    @@ -1570,11 +1876,16 @@ func (m *ValidatingAdmissionPolicy) MarshalToSizedBuffer(dAtA []byte) (int, erro
     		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
     	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
     	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicyBinding) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingWebhookConfiguration) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1584,26 +1895,30 @@ func (m *ValidatingAdmissionPolicyBinding) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingAdmissionPolicyBinding) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingWebhookConfiguration) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingAdmissionPolicyBinding) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingWebhookConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	{
    -		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    +	if len(m.Webhooks) > 0 {
    +		for iNdEx := len(m.Webhooks) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Webhooks[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
     		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	i--
    -	dAtA[i] = 0x12
     	{
     		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
     		if err != nil {
    @@ -1617,7 +1932,7 @@ func (m *ValidatingAdmissionPolicyBinding) MarshalToSizedBuffer(dAtA []byte) (in
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicyBindingList) Marshal() (dAtA []byte, err error) {
    +func (m *MutatingWebhookConfigurationList) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1627,12 +1942,12 @@ func (m *ValidatingAdmissionPolicyBindingList) Marshal() (dAtA []byte, err error
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingAdmissionPolicyBindingList) MarshalTo(dAtA []byte) (int, error) {
    +func (m *MutatingWebhookConfigurationList) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingAdmissionPolicyBindingList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *MutatingWebhookConfigurationList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
    @@ -1664,7 +1979,7 @@ func (m *ValidatingAdmissionPolicyBindingList) MarshalToSizedBuffer(dAtA []byte)
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicyBindingSpec) Marshal() (dAtA []byte, err error) {
    +func (m *Mutation) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1674,28 +1989,19 @@ func (m *ValidatingAdmissionPolicyBindingSpec) Marshal() (dAtA []byte, err error
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingAdmissionPolicyBindingSpec) MarshalTo(dAtA []byte) (int, error) {
    +func (m *Mutation) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingAdmissionPolicyBindingSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *Mutation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.ValidationActions) > 0 {
    -		for iNdEx := len(m.ValidationActions) - 1; iNdEx >= 0; iNdEx-- {
    -			i -= len(m.ValidationActions[iNdEx])
    -			copy(dAtA[i:], m.ValidationActions[iNdEx])
    -			i = encodeVarintGenerated(dAtA, i, uint64(len(m.ValidationActions[iNdEx])))
    -			i--
    -			dAtA[i] = 0x22
    -		}
    -	}
    -	if m.MatchResources != nil {
    +	if m.JSONPatch != nil {
     		{
    -			size, err := m.MatchResources.MarshalToSizedBuffer(dAtA[:i])
    +			size, err := m.JSONPatch.MarshalToSizedBuffer(dAtA[:i])
     			if err != nil {
     				return 0, err
     			}
    @@ -1703,11 +2009,11 @@ func (m *ValidatingAdmissionPolicyBindingSpec) MarshalToSizedBuffer(dAtA []byte)
     			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
     		i--
    -		dAtA[i] = 0x1a
    +		dAtA[i] = 0x22
     	}
    -	if m.ParamRef != nil {
    +	if m.ApplyConfiguration != nil {
     		{
    -			size, err := m.ParamRef.MarshalToSizedBuffer(dAtA[:i])
    +			size, err := m.ApplyConfiguration.MarshalToSizedBuffer(dAtA[:i])
     			if err != nil {
     				return 0, err
     			}
    @@ -1715,17 +2021,17 @@ func (m *ValidatingAdmissionPolicyBindingSpec) MarshalToSizedBuffer(dAtA []byte)
     			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
     		i--
    -		dAtA[i] = 0x12
    +		dAtA[i] = 0x1a
     	}
    -	i -= len(m.PolicyName)
    -	copy(dAtA[i:], m.PolicyName)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.PolicyName)))
    +	i -= len(m.PatchType)
    +	copy(dAtA[i:], m.PatchType)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.PatchType)))
     	i--
    -	dAtA[i] = 0xa
    +	dAtA[i] = 0x12
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicyList) Marshal() (dAtA []byte, err error) {
    +func (m *NamedRuleWithOperations) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1735,32 +2041,18 @@ func (m *ValidatingAdmissionPolicyList) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingAdmissionPolicyList) MarshalTo(dAtA []byte) (int, error) {
    +func (m *NamedRuleWithOperations) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingAdmissionPolicyList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *NamedRuleWithOperations) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.Items) > 0 {
    -		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x12
    -		}
    -	}
     	{
    -		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		size, err := m.RuleWithOperations.MarshalToSizedBuffer(dAtA[:i])
     		if err != nil {
     			return 0, err
     		}
    @@ -1768,11 +2060,20 @@ func (m *ValidatingAdmissionPolicyList) MarshalToSizedBuffer(dAtA []byte) (int,
     		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
     	i--
    -	dAtA[i] = 0xa
    +	dAtA[i] = 0x12
    +	if len(m.ResourceNames) > 0 {
    +		for iNdEx := len(m.ResourceNames) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.ResourceNames[iNdEx])
    +			copy(dAtA[i:], m.ResourceNames[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceNames[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicySpec) Marshal() (dAtA []byte, err error) {
    +func (m *ParamKind) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1782,94 +2083,59 @@ func (m *ValidatingAdmissionPolicySpec) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingAdmissionPolicySpec) MarshalTo(dAtA []byte) (int, error) {
    +func (m *ParamKind) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingAdmissionPolicySpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *ParamKind) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.Variables) > 0 {
    -		for iNdEx := len(m.Variables) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Variables[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x3a
    -		}
    -	}
    -	if len(m.MatchConditions) > 0 {
    -		for iNdEx := len(m.MatchConditions) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.MatchConditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x32
    -		}
    -	}
    -	if len(m.AuditAnnotations) > 0 {
    -		for iNdEx := len(m.AuditAnnotations) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.AuditAnnotations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x2a
    -		}
    +	i -= len(m.Kind)
    +	copy(dAtA[i:], m.Kind)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Kind)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.APIVersion)
    +	copy(dAtA[i:], m.APIVersion)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIVersion)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ParamRef) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	if m.FailurePolicy != nil {
    -		i -= len(*m.FailurePolicy)
    -		copy(dAtA[i:], *m.FailurePolicy)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ParamRef) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ParamRef) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.ParameterNotFoundAction != nil {
    +		i -= len(*m.ParameterNotFoundAction)
    +		copy(dAtA[i:], *m.ParameterNotFoundAction)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ParameterNotFoundAction)))
     		i--
     		dAtA[i] = 0x22
     	}
    -	if len(m.Validations) > 0 {
    -		for iNdEx := len(m.Validations) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Validations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x1a
    -		}
    -	}
    -	if m.MatchConstraints != nil {
    -		{
    -			size, err := m.MatchConstraints.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    -		}
    -		i--
    -		dAtA[i] = 0x12
    -	}
    -	if m.ParamKind != nil {
    +	if m.Selector != nil {
     		{
    -			size, err := m.ParamKind.MarshalToSizedBuffer(dAtA[:i])
    +			size, err := m.Selector.MarshalToSizedBuffer(dAtA[:i])
     			if err != nil {
     				return 0, err
     			}
    @@ -1877,12 +2143,22 @@ func (m *ValidatingAdmissionPolicySpec) MarshalToSizedBuffer(dAtA []byte) (int,
     			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
     		i--
    -		dAtA[i] = 0xa
    +		dAtA[i] = 0x1a
     	}
    +	i -= len(m.Namespace)
    +	copy(dAtA[i:], m.Namespace)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicyStatus) Marshal() (dAtA []byte, err error) {
    +func (m *ServiceReference) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1892,49 +2168,42 @@ func (m *ValidatingAdmissionPolicyStatus) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingAdmissionPolicyStatus) MarshalTo(dAtA []byte) (int, error) {
    +func (m *ServiceReference) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingAdmissionPolicyStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *ServiceReference) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.Conditions) > 0 {
    -		for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x1a
    -		}
    +	if m.Port != nil {
    +		i = encodeVarintGenerated(dAtA, i, uint64(*m.Port))
    +		i--
    +		dAtA[i] = 0x20
     	}
    -	if m.TypeChecking != nil {
    -		{
    -			size, err := m.TypeChecking.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    -		}
    +	if m.Path != nil {
    +		i -= len(*m.Path)
    +		copy(dAtA[i:], *m.Path)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Path)))
     		i--
    -		dAtA[i] = 0x12
    +		dAtA[i] = 0x1a
     	}
    -	i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration))
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
     	i--
    -	dAtA[i] = 0x8
    +	dAtA[i] = 0x12
    +	i -= len(m.Namespace)
    +	copy(dAtA[i:], m.Namespace)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
    +	i--
    +	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingWebhook) Marshal() (dAtA []byte, err error) {
    +func (m *TypeChecking) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -1944,20 +2213,20 @@ func (m *ValidatingWebhook) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingWebhook) MarshalTo(dAtA []byte) (int, error) {
    +func (m *TypeChecking) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingWebhook) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *TypeChecking) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.MatchConditions) > 0 {
    -		for iNdEx := len(m.MatchConditions) - 1; iNdEx >= 0; iNdEx-- {
    +	if len(m.ExpressionWarnings) > 0 {
    +		for iNdEx := len(m.ExpressionWarnings) - 1; iNdEx >= 0; iNdEx-- {
     			{
    -				size, err := m.MatchConditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				size, err := m.ExpressionWarnings[iNdEx].MarshalToSizedBuffer(dAtA[:i])
     				if err != nil {
     					return 0, err
     				}
    @@ -1965,84 +2234,44 @@ func (m *ValidatingWebhook) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     				i = encodeVarintGenerated(dAtA, i, uint64(size))
     			}
     			i--
    -			dAtA[i] = 0x5a
    -		}
    -	}
    -	if m.ObjectSelector != nil {
    -		{
    -			size, err := m.ObjectSelector.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			dAtA[i] = 0xa
     		}
    -		i--
    -		dAtA[i] = 0x52
     	}
    -	if m.MatchPolicy != nil {
    -		i -= len(*m.MatchPolicy)
    -		copy(dAtA[i:], *m.MatchPolicy)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.MatchPolicy)))
    -		i--
    -		dAtA[i] = 0x4a
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ValidatingAdmissionPolicy) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	if len(m.AdmissionReviewVersions) > 0 {
    -		for iNdEx := len(m.AdmissionReviewVersions) - 1; iNdEx >= 0; iNdEx-- {
    -			i -= len(m.AdmissionReviewVersions[iNdEx])
    -			copy(dAtA[i:], m.AdmissionReviewVersions[iNdEx])
    -			i = encodeVarintGenerated(dAtA, i, uint64(len(m.AdmissionReviewVersions[iNdEx])))
    -			i--
    -			dAtA[i] = 0x42
    -		}
    -	}
    -	if m.TimeoutSeconds != nil {
    -		i = encodeVarintGenerated(dAtA, i, uint64(*m.TimeoutSeconds))
    -		i--
    -		dAtA[i] = 0x38
    -	}
    -	if m.SideEffects != nil {
    -		i -= len(*m.SideEffects)
    -		copy(dAtA[i:], *m.SideEffects)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SideEffects)))
    -		i--
    -		dAtA[i] = 0x32
    -	}
    -	if m.NamespaceSelector != nil {
    -		{
    -			size, err := m.NamespaceSelector.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    -		}
    -		i--
    -		dAtA[i] = 0x2a
    -	}
    -	if m.FailurePolicy != nil {
    -		i -= len(*m.FailurePolicy)
    -		copy(dAtA[i:], *m.FailurePolicy)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
    -		i--
    -		dAtA[i] = 0x22
    -	}
    -	if len(m.Rules) > 0 {
    -		for iNdEx := len(m.Rules) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Rules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x1a
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ValidatingAdmissionPolicy) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingAdmissionPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
     		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    +	i--
    +	dAtA[i] = 0x1a
     	{
    -		size, err := m.ClientConfig.MarshalToSizedBuffer(dAtA[:i])
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
     		if err != nil {
     			return 0, err
     		}
    @@ -2051,15 +2280,20 @@ func (m *ValidatingWebhook) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	}
     	i--
     	dAtA[i] = 0x12
    -	i -= len(m.Name)
    -	copy(dAtA[i:], m.Name)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
     	i--
     	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingWebhookConfiguration) Marshal() (dAtA []byte, err error) {
    +func (m *ValidatingAdmissionPolicyBinding) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -2069,30 +2303,26 @@ func (m *ValidatingWebhookConfiguration) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingWebhookConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicyBinding) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingWebhookConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicyBinding) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if len(m.Webhooks) > 0 {
    -		for iNdEx := len(m.Webhooks) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Webhooks[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x12
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
     		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    +	i--
    +	dAtA[i] = 0x12
     	{
     		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
     		if err != nil {
    @@ -2106,7 +2336,7 @@ func (m *ValidatingWebhookConfiguration) MarshalToSizedBuffer(dAtA []byte) (int,
     	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingWebhookConfigurationList) Marshal() (dAtA []byte, err error) {
    +func (m *ValidatingAdmissionPolicyBindingList) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -2116,12 +2346,12 @@ func (m *ValidatingWebhookConfigurationList) Marshal() (dAtA []byte, err error)
     	return dAtA[:n], nil
     }
     
    -func (m *ValidatingWebhookConfigurationList) MarshalTo(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicyBindingList) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ValidatingWebhookConfigurationList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicyBindingList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
    @@ -2153,7 +2383,7 @@ func (m *ValidatingWebhookConfigurationList) MarshalToSizedBuffer(dAtA []byte) (
     	return len(dAtA) - i, nil
     }
     
    -func (m *Validation) Marshal() (dAtA []byte, err error) {
    +func (m *ValidatingAdmissionPolicyBindingSpec) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -2163,42 +2393,58 @@ func (m *Validation) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *Validation) MarshalTo(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicyBindingSpec) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *Validation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicyBindingSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	i -= len(m.MessageExpression)
    -	copy(dAtA[i:], m.MessageExpression)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.MessageExpression)))
    -	i--
    -	dAtA[i] = 0x22
    -	if m.Reason != nil {
    -		i -= len(*m.Reason)
    -		copy(dAtA[i:], *m.Reason)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Reason)))
    +	if len(m.ValidationActions) > 0 {
    +		for iNdEx := len(m.ValidationActions) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.ValidationActions[iNdEx])
    +			copy(dAtA[i:], m.ValidationActions[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.ValidationActions[iNdEx])))
    +			i--
    +			dAtA[i] = 0x22
    +		}
    +	}
    +	if m.MatchResources != nil {
    +		{
    +			size, err := m.MatchResources.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
     		i--
     		dAtA[i] = 0x1a
     	}
    -	i -= len(m.Message)
    -	copy(dAtA[i:], m.Message)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message)))
    -	i--
    -	dAtA[i] = 0x12
    -	i -= len(m.Expression)
    -	copy(dAtA[i:], m.Expression)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	if m.ParamRef != nil {
    +		{
    +			size, err := m.ParamRef.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i -= len(m.PolicyName)
    +	copy(dAtA[i:], m.PolicyName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.PolicyName)))
     	i--
     	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *Variable) Marshal() (dAtA []byte, err error) {
    +func (m *ValidatingAdmissionPolicyList) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -2208,30 +2454,44 @@ func (m *Variable) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *Variable) MarshalTo(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicyList) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *Variable) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicyList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	i -= len(m.Expression)
    -	copy(dAtA[i:], m.Expression)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    -	i--
    -	dAtA[i] = 0x12
    -	i -= len(m.Name)
    -	copy(dAtA[i:], m.Name)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
     	i--
     	dAtA[i] = 0xa
     	return len(dAtA) - i, nil
     }
     
    -func (m *WebhookClientConfig) Marshal() (dAtA []byte, err error) {
    +func (m *ValidatingAdmissionPolicySpec) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
     	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    @@ -2241,335 +2501,636 @@ func (m *WebhookClientConfig) Marshal() (dAtA []byte, err error) {
     	return dAtA[:n], nil
     }
     
    -func (m *WebhookClientConfig) MarshalTo(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicySpec) MarshalTo(dAtA []byte) (int, error) {
     	size := m.Size()
     	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *WebhookClientConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +func (m *ValidatingAdmissionPolicySpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	i := len(dAtA)
     	_ = i
     	var l int
     	_ = l
    -	if m.URL != nil {
    -		i -= len(*m.URL)
    -		copy(dAtA[i:], *m.URL)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.URL)))
    -		i--
    -		dAtA[i] = 0x1a
    -	}
    -	if m.CABundle != nil {
    -		i -= len(m.CABundle)
    -		copy(dAtA[i:], m.CABundle)
    -		i = encodeVarintGenerated(dAtA, i, uint64(len(m.CABundle)))
    -		i--
    -		dAtA[i] = 0x12
    -	}
    -	if m.Service != nil {
    -		{
    -			size, err := m.Service.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    +	if len(m.Variables) > 0 {
    +		for iNdEx := len(m.Variables) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Variables[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
     			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			i--
    +			dAtA[i] = 0x3a
     		}
    -		i--
    -		dAtA[i] = 0xa
    -	}
    -	return len(dAtA) - i, nil
    -}
    -
    -func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    -	offset -= sovGenerated(v)
    -	base := offset
    -	for v >= 1<<7 {
    -		dAtA[offset] = uint8(v&0x7f | 0x80)
    -		v >>= 7
    -		offset++
     	}
    -	dAtA[offset] = uint8(v)
    -	return base
    -}
    -func (m *AuditAnnotation) Size() (n int) {
    -	if m == nil {
    -		return 0
    +	if len(m.MatchConditions) > 0 {
    +		for iNdEx := len(m.MatchConditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.MatchConditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x32
    +		}
     	}
    -	var l int
    -	_ = l
    -	l = len(m.Key)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.ValueExpression)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +	if len(m.AuditAnnotations) > 0 {
    +		for iNdEx := len(m.AuditAnnotations) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.AuditAnnotations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x2a
    +		}
    +	}
    +	if m.FailurePolicy != nil {
    +		i -= len(*m.FailurePolicy)
    +		copy(dAtA[i:], *m.FailurePolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	if len(m.Validations) > 0 {
    +		for iNdEx := len(m.Validations) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Validations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	if m.MatchConstraints != nil {
    +		{
    +			size, err := m.MatchConstraints.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	if m.ParamKind != nil {
    +		{
    +			size, err := m.ParamKind.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
     }
     
    -func (m *ExpressionWarning) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *ValidatingAdmissionPolicyStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	var l int
    -	_ = l
    -	l = len(m.FieldRef)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Warning)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +	return dAtA[:n], nil
     }
     
    -func (m *MatchCondition) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Expression)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +func (m *ValidatingAdmissionPolicyStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *MatchResources) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    +func (m *ValidatingAdmissionPolicyStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	if m.NamespaceSelector != nil {
    -		l = m.NamespaceSelector.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if m.ObjectSelector != nil {
    -		l = m.ObjectSelector.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if len(m.ResourceRules) > 0 {
    -		for _, e := range m.ResourceRules {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Conditions) > 0 {
    +		for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
     		}
     	}
    -	if len(m.ExcludeResourceRules) > 0 {
    -		for _, e := range m.ExcludeResourceRules {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	if m.TypeChecking != nil {
    +		{
    +			size, err := m.TypeChecking.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
    +		i--
    +		dAtA[i] = 0x12
     	}
    -	if m.MatchPolicy != nil {
    -		l = len(*m.MatchPolicy)
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	return n
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration))
    +	i--
    +	dAtA[i] = 0x8
    +	return len(dAtA) - i, nil
     }
     
    -func (m *MutatingWebhook) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *ValidatingWebhook) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ValidatingWebhook) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingWebhook) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.ClientConfig.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if len(m.Rules) > 0 {
    -		for _, e := range m.Rules {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.MatchConditions) > 0 {
    +		for iNdEx := len(m.MatchConditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.MatchConditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x5a
     		}
     	}
    -	if m.FailurePolicy != nil {
    -		l = len(*m.FailurePolicy)
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if m.NamespaceSelector != nil {
    -		l = m.NamespaceSelector.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if m.SideEffects != nil {
    -		l = len(*m.SideEffects)
    -		n += 1 + l + sovGenerated(uint64(l))
    +	if m.ObjectSelector != nil {
    +		{
    +			size, err := m.ObjectSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x52
     	}
    -	if m.TimeoutSeconds != nil {
    -		n += 1 + sovGenerated(uint64(*m.TimeoutSeconds))
    +	if m.MatchPolicy != nil {
    +		i -= len(*m.MatchPolicy)
    +		copy(dAtA[i:], *m.MatchPolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.MatchPolicy)))
    +		i--
    +		dAtA[i] = 0x4a
     	}
     	if len(m.AdmissionReviewVersions) > 0 {
    -		for _, s := range m.AdmissionReviewVersions {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    +		for iNdEx := len(m.AdmissionReviewVersions) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.AdmissionReviewVersions[iNdEx])
    +			copy(dAtA[i:], m.AdmissionReviewVersions[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.AdmissionReviewVersions[iNdEx])))
    +			i--
    +			dAtA[i] = 0x42
     		}
     	}
    -	if m.MatchPolicy != nil {
    -		l = len(*m.MatchPolicy)
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if m.ReinvocationPolicy != nil {
    -		l = len(*m.ReinvocationPolicy)
    -		n += 1 + l + sovGenerated(uint64(l))
    +	if m.TimeoutSeconds != nil {
    +		i = encodeVarintGenerated(dAtA, i, uint64(*m.TimeoutSeconds))
    +		i--
    +		dAtA[i] = 0x38
     	}
    -	if m.ObjectSelector != nil {
    -		l = m.ObjectSelector.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    +	if m.SideEffects != nil {
    +		i -= len(*m.SideEffects)
    +		copy(dAtA[i:], *m.SideEffects)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SideEffects)))
    +		i--
    +		dAtA[i] = 0x32
     	}
    -	if len(m.MatchConditions) > 0 {
    -		for _, e := range m.MatchConditions {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	if m.NamespaceSelector != nil {
    +		{
    +			size, err := m.NamespaceSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
     		}
    +		i--
    +		dAtA[i] = 0x2a
     	}
    -	return n
    -}
    -
    -func (m *MutatingWebhookConfiguration) Size() (n int) {
    -	if m == nil {
    -		return 0
    +	if m.FailurePolicy != nil {
    +		i -= len(*m.FailurePolicy)
    +		copy(dAtA[i:], *m.FailurePolicy)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.FailurePolicy)))
    +		i--
    +		dAtA[i] = 0x22
     	}
    -	var l int
    -	_ = l
    -	l = m.ObjectMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if len(m.Webhooks) > 0 {
    -		for _, e := range m.Webhooks {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Rules) > 0 {
    +		for iNdEx := len(m.Rules) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Rules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
     		}
     	}
    -	return n
    -}
    -
    -func (m *MutatingWebhookConfigurationList) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ListMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if len(m.Items) > 0 {
    -		for _, e := range m.Items {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	{
    +		size, err := m.ClientConfig.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
     		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	return n
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func (m *NamedRuleWithOperations) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	if len(m.ResourceNames) > 0 {
    -		for _, s := range m.ResourceNames {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    +func (m *ValidatingWebhookConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	l = m.RuleWithOperations.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +	return dAtA[:n], nil
     }
     
    -func (m *ParamKind) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.APIVersion)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Kind)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +func (m *ValidatingWebhookConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
     }
     
    -func (m *ParamRef) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    +func (m *ValidatingWebhookConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Namespace)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if m.Selector != nil {
    -		l = m.Selector.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Webhooks) > 0 {
    +		for iNdEx := len(m.Webhooks) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Webhooks[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
     	}
    -	if m.ParameterNotFoundAction != nil {
    -		l = len(*m.ParameterNotFoundAction)
    -		n += 1 + l + sovGenerated(uint64(l))
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
     	}
    -	return n
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func (m *ServiceReference) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.Namespace)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if m.Path != nil {
    -		l = len(*m.Path)
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if m.Port != nil {
    -		n += 1 + sovGenerated(uint64(*m.Port))
    +func (m *ValidatingWebhookConfigurationList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	return n
    +	return dAtA[:n], nil
     }
     
    -func (m *TypeChecking) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    +func (m *ValidatingWebhookConfigurationList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ValidatingWebhookConfigurationList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
     	var l int
     	_ = l
    -	if len(m.ExpressionWarnings) > 0 {
    -		for _, e := range m.ExpressionWarnings {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
     		}
     	}
    -	return n
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
     }
     
    -func (m *ValidatingAdmissionPolicy) Size() (n int) {
    -	if m == nil {
    -		return 0
    +func (m *Validation) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
     	}
    -	var l int
    -	_ = l
    -	l = m.ObjectMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Spec.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Status.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    +	return dAtA[:n], nil
     }
     
    -func (m *ValidatingAdmissionPolicyBinding) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ObjectMeta.Size()
    +func (m *Validation) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *Validation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.MessageExpression)
    +	copy(dAtA[i:], m.MessageExpression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.MessageExpression)))
    +	i--
    +	dAtA[i] = 0x22
    +	if m.Reason != nil {
    +		i -= len(*m.Reason)
    +		copy(dAtA[i:], *m.Reason)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Reason)))
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	i -= len(m.Message)
    +	copy(dAtA[i:], m.Message)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Message)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *Variable) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *Variable) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *Variable) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *WebhookClientConfig) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *WebhookClientConfig) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *WebhookClientConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.URL != nil {
    +		i -= len(*m.URL)
    +		copy(dAtA[i:], *m.URL)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.URL)))
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	if m.CABundle != nil {
    +		i -= len(m.CABundle)
    +		copy(dAtA[i:], m.CABundle)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(m.CABundle)))
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	if m.Service != nil {
    +		{
    +			size, err := m.Service.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    +	offset -= sovGenerated(v)
    +	base := offset
    +	for v >= 1<<7 {
    +		dAtA[offset] = uint8(v&0x7f | 0x80)
    +		v >>= 7
    +		offset++
    +	}
    +	dAtA[offset] = uint8(v)
    +	return base
    +}
    +func (m *ApplyConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *AuditAnnotation) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Key)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.ValueExpression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ExpressionWarning) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.FieldRef)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Warning)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *JSONPatch) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *MatchCondition) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *MatchResources) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.NamespaceSelector != nil {
    +		l = m.NamespaceSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.ObjectSelector != nil {
    +		l = m.ObjectSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.ResourceRules) > 0 {
    +		for _, e := range m.ResourceRules {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.ExcludeResourceRules) > 0 {
    +		for _, e := range m.ExcludeResourceRules {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.MatchPolicy != nil {
    +		l = len(*m.MatchPolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *MutatingAdmissionPolicy) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
     	n += 1 + l + sovGenerated(uint64(l))
     	l = m.Spec.Size()
     	n += 1 + l + sovGenerated(uint64(l))
     	return n
     }
     
    -func (m *ValidatingAdmissionPolicyBindingList) Size() (n int) {
    +func (m *MutatingAdmissionPolicyBinding) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *MutatingAdmissionPolicyBindingList) Size() (n int) {
     	if m == nil {
     		return 0
     	}
    @@ -2586,7 +3147,7 @@ func (m *ValidatingAdmissionPolicyBindingList) Size() (n int) {
     	return n
     }
     
    -func (m *ValidatingAdmissionPolicyBindingSpec) Size() (n int) {
    +func (m *MutatingAdmissionPolicyBindingSpec) Size() (n int) {
     	if m == nil {
     		return 0
     	}
    @@ -2602,16 +3163,10 @@ func (m *ValidatingAdmissionPolicyBindingSpec) Size() (n int) {
     		l = m.MatchResources.Size()
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	if len(m.ValidationActions) > 0 {
    -		for _, s := range m.ValidationActions {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
     	return n
     }
     
    -func (m *ValidatingAdmissionPolicyList) Size() (n int) {
    +func (m *MutatingAdmissionPolicyList) Size() (n int) {
     	if m == nil {
     		return 0
     	}
    @@ -2628,7 +3183,7 @@ func (m *ValidatingAdmissionPolicyList) Size() (n int) {
     	return n
     }
     
    -func (m *ValidatingAdmissionPolicySpec) Size() (n int) {
    +func (m *MutatingAdmissionPolicySpec) Size() (n int) {
     	if m == nil {
     		return 0
     	}
    @@ -2642,8 +3197,14 @@ func (m *ValidatingAdmissionPolicySpec) Size() (n int) {
     		l = m.MatchConstraints.Size()
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	if len(m.Validations) > 0 {
    -		for _, e := range m.Validations {
    +	if len(m.Variables) > 0 {
    +		for _, e := range m.Variables {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Mutations) > 0 {
    +		for _, e := range m.Mutations {
     			l = e.Size()
     			n += 1 + l + sovGenerated(uint64(l))
     		}
    @@ -2652,48 +3213,18 @@ func (m *ValidatingAdmissionPolicySpec) Size() (n int) {
     		l = len(*m.FailurePolicy)
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	if len(m.AuditAnnotations) > 0 {
    -		for _, e := range m.AuditAnnotations {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
     	if len(m.MatchConditions) > 0 {
     		for _, e := range m.MatchConditions {
     			l = e.Size()
     			n += 1 + l + sovGenerated(uint64(l))
     		}
     	}
    -	if len(m.Variables) > 0 {
    -		for _, e := range m.Variables {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	return n
    -}
    -
    -func (m *ValidatingAdmissionPolicyStatus) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	n += 1 + sovGenerated(uint64(m.ObservedGeneration))
    -	if m.TypeChecking != nil {
    -		l = m.TypeChecking.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	if len(m.Conditions) > 0 {
    -		for _, e := range m.Conditions {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    +	l = len(m.ReinvocationPolicy)
    +	n += 1 + l + sovGenerated(uint64(l))
     	return n
     }
     
    -func (m *ValidatingWebhook) Size() (n int) {
    +func (m *MutatingWebhook) Size() (n int) {
     	if m == nil {
     		return 0
     	}
    @@ -2734,6 +3265,10 @@ func (m *ValidatingWebhook) Size() (n int) {
     		l = len(*m.MatchPolicy)
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    +	if m.ReinvocationPolicy != nil {
    +		l = len(*m.ReinvocationPolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	if m.ObjectSelector != nil {
     		l = m.ObjectSelector.Size()
     		n += 1 + l + sovGenerated(uint64(l))
    @@ -2747,7 +3282,7 @@ func (m *ValidatingWebhook) Size() (n int) {
     	return n
     }
     
    -func (m *ValidatingWebhookConfiguration) Size() (n int) {
    +func (m *MutatingWebhookConfiguration) Size() (n int) {
     	if m == nil {
     		return 0
     	}
    @@ -2764,7 +3299,7 @@ func (m *ValidatingWebhookConfiguration) Size() (n int) {
     	return n
     }
     
    -func (m *ValidatingWebhookConfigurationList) Size() (n int) {
    +func (m *MutatingWebhookConfigurationList) Size() (n int) {
     	if m == nil {
     		return 0
     	}
    @@ -2781,476 +3316,1911 @@ func (m *ValidatingWebhookConfigurationList) Size() (n int) {
     	return n
     }
     
    -func (m *Validation) Size() (n int) {
    +func (m *Mutation) Size() (n int) {
     	if m == nil {
     		return 0
     	}
     	var l int
     	_ = l
    -	l = len(m.Expression)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Message)
    +	l = len(m.PatchType)
     	n += 1 + l + sovGenerated(uint64(l))
    -	if m.Reason != nil {
    -		l = len(*m.Reason)
    +	if m.ApplyConfiguration != nil {
    +		l = m.ApplyConfiguration.Size()
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	l = len(m.MessageExpression)
    +	if m.JSONPatch != nil {
    +		l = m.JSONPatch.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *NamedRuleWithOperations) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.ResourceNames) > 0 {
    +		for _, s := range m.ResourceNames {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = m.RuleWithOperations.Size()
     	n += 1 + l + sovGenerated(uint64(l))
     	return n
     }
     
    -func (m *Variable) Size() (n int) {
    +func (m *ParamKind) Size() (n int) {
     	if m == nil {
     		return 0
     	}
     	var l int
     	_ = l
    -	l = len(m.Name)
    +	l = len(m.APIVersion)
     	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Expression)
    +	l = len(m.Kind)
     	n += 1 + l + sovGenerated(uint64(l))
     	return n
     }
     
    -func (m *WebhookClientConfig) Size() (n int) {
    +func (m *ParamRef) Size() (n int) {
     	if m == nil {
     		return 0
     	}
     	var l int
     	_ = l
    -	if m.Service != nil {
    -		l = m.Service.Size()
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Namespace)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Selector != nil {
    +		l = m.Selector.Size()
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	if m.CABundle != nil {
    -		l = len(m.CABundle)
    +	if m.ParameterNotFoundAction != nil {
    +		l = len(*m.ParameterNotFoundAction)
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	if m.URL != nil {
    -		l = len(*m.URL)
    +	return n
    +}
    +
    +func (m *ServiceReference) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Namespace)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Path != nil {
    +		l = len(*m.Path)
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    +	if m.Port != nil {
    +		n += 1 + sovGenerated(uint64(*m.Port))
    +	}
     	return n
     }
     
    -func sovGenerated(x uint64) (n int) {
    -	return (math_bits.Len64(x|1) + 6) / 7
    -}
    -func sozGenerated(x uint64) (n int) {
    -	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +func (m *TypeChecking) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.ExpressionWarnings) > 0 {
    +		for _, e := range m.ExpressionWarnings {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
     }
    -func (this *AuditAnnotation) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ValidatingAdmissionPolicy) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&AuditAnnotation{`,
    -		`Key:` + fmt.Sprintf("%v", this.Key) + `,`,
    -		`ValueExpression:` + fmt.Sprintf("%v", this.ValueExpression) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Status.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *ExpressionWarning) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ValidatingAdmissionPolicyBinding) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&ExpressionWarning{`,
    -		`FieldRef:` + fmt.Sprintf("%v", this.FieldRef) + `,`,
    -		`Warning:` + fmt.Sprintf("%v", this.Warning) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
     }
    -func (this *MatchCondition) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ValidatingAdmissionPolicyBindingList) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&MatchCondition{`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
     }
    -func (this *MatchResources) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ValidatingAdmissionPolicyBindingSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForResourceRules := "[]NamedRuleWithOperations{"
    -	for _, f := range this.ResourceRules {
    -		repeatedStringForResourceRules += strings.Replace(strings.Replace(f.String(), "NamedRuleWithOperations", "NamedRuleWithOperations", 1), `&`, ``, 1) + ","
    +	var l int
    +	_ = l
    +	l = len(m.PolicyName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.ParamRef != nil {
    +		l = m.ParamRef.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForResourceRules += "}"
    -	repeatedStringForExcludeResourceRules := "[]NamedRuleWithOperations{"
    -	for _, f := range this.ExcludeResourceRules {
    -		repeatedStringForExcludeResourceRules += strings.Replace(strings.Replace(f.String(), "NamedRuleWithOperations", "NamedRuleWithOperations", 1), `&`, ``, 1) + ","
    +	if m.MatchResources != nil {
    +		l = m.MatchResources.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForExcludeResourceRules += "}"
    -	s := strings.Join([]string{`&MatchResources{`,
    -		`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`ObjectSelector:` + strings.Replace(fmt.Sprintf("%v", this.ObjectSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`ResourceRules:` + repeatedStringForResourceRules + `,`,
    -		`ExcludeResourceRules:` + repeatedStringForExcludeResourceRules + `,`,
    -		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	if len(m.ValidationActions) > 0 {
    +		for _, s := range m.ValidationActions {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
     }
    -func (this *MutatingWebhook) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ValidatingAdmissionPolicyList) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForRules := "[]RuleWithOperations{"
    -	for _, f := range this.Rules {
    -		repeatedStringForRules += fmt.Sprintf("%v", f) + ","
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForRules += "}"
    -	repeatedStringForMatchConditions := "[]MatchCondition{"
    -	for _, f := range this.MatchConditions {
    -		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    -	}
    -	repeatedStringForMatchConditions += "}"
    -	s := strings.Join([]string{`&MutatingWebhook{`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`ClientConfig:` + strings.Replace(strings.Replace(this.ClientConfig.String(), "WebhookClientConfig", "WebhookClientConfig", 1), `&`, ``, 1) + `,`,
    -		`Rules:` + repeatedStringForRules + `,`,
    -		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    -		`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`SideEffects:` + valueToStringGenerated(this.SideEffects) + `,`,
    -		`TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`,
    -		`AdmissionReviewVersions:` + fmt.Sprintf("%v", this.AdmissionReviewVersions) + `,`,
    -		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
    -		`ReinvocationPolicy:` + valueToStringGenerated(this.ReinvocationPolicy) + `,`,
    -		`ObjectSelector:` + strings.Replace(fmt.Sprintf("%v", this.ObjectSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	return n
     }
    -func (this *MutatingWebhookConfiguration) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ValidatingAdmissionPolicySpec) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForWebhooks := "[]MutatingWebhook{"
    -	for _, f := range this.Webhooks {
    -		repeatedStringForWebhooks += strings.Replace(strings.Replace(f.String(), "MutatingWebhook", "MutatingWebhook", 1), `&`, ``, 1) + ","
    +	var l int
    +	_ = l
    +	if m.ParamKind != nil {
    +		l = m.ParamKind.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForWebhooks += "}"
    -	s := strings.Join([]string{`&MutatingWebhookConfiguration{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Webhooks:` + repeatedStringForWebhooks + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *MutatingWebhookConfigurationList) String() string {
    -	if this == nil {
    -		return "nil"
    +	if m.MatchConstraints != nil {
    +		l = m.MatchConstraints.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForItems := "[]MutatingWebhookConfiguration{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "MutatingWebhookConfiguration", "MutatingWebhookConfiguration", 1), `&`, ``, 1) + ","
    +	if len(m.Validations) > 0 {
    +		for _, e := range m.Validations {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&MutatingWebhookConfigurationList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *NamedRuleWithOperations) String() string {
    -	if this == nil {
    -		return "nil"
    +	if m.FailurePolicy != nil {
    +		l = len(*m.FailurePolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	s := strings.Join([]string{`&NamedRuleWithOperations{`,
    -		`ResourceNames:` + fmt.Sprintf("%v", this.ResourceNames) + `,`,
    -		`RuleWithOperations:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.RuleWithOperations), "RuleWithOperations", "v11.RuleWithOperations", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ParamKind) String() string {
    -	if this == nil {
    -		return "nil"
    +	if len(m.AuditAnnotations) > 0 {
    +		for _, e := range m.AuditAnnotations {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	s := strings.Join([]string{`&ParamKind{`,
    -		`APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`,
    -		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ParamRef) String() string {
    -	if this == nil {
    -		return "nil"
    +	if len(m.MatchConditions) > 0 {
    +		for _, e := range m.MatchConditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	s := strings.Join([]string{`&ParamRef{`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    -		`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`ParameterNotFoundAction:` + valueToStringGenerated(this.ParameterNotFoundAction) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ServiceReference) String() string {
    -	if this == nil {
    -		return "nil"
    +	if len(m.Variables) > 0 {
    +		for _, e := range m.Variables {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	s := strings.Join([]string{`&ServiceReference{`,
    -		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`Path:` + valueToStringGenerated(this.Path) + `,`,
    -		`Port:` + valueToStringGenerated(this.Port) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	return n
     }
    -func (this *TypeChecking) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ValidatingAdmissionPolicyStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForExpressionWarnings := "[]ExpressionWarning{"
    -	for _, f := range this.ExpressionWarnings {
    -		repeatedStringForExpressionWarnings += strings.Replace(strings.Replace(f.String(), "ExpressionWarning", "ExpressionWarning", 1), `&`, ``, 1) + ","
    +	var l int
    +	_ = l
    +	n += 1 + sovGenerated(uint64(m.ObservedGeneration))
    +	if m.TypeChecking != nil {
    +		l = m.TypeChecking.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForExpressionWarnings += "}"
    -	s := strings.Join([]string{`&TypeChecking{`,
    -		`ExpressionWarnings:` + repeatedStringForExpressionWarnings + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ValidatingAdmissionPolicy) String() string {
    -	if this == nil {
    -		return "nil"
    +	if len(m.Conditions) > 0 {
    +		for _, e := range m.Conditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicy{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ValidatingAdmissionPolicySpec", "ValidatingAdmissionPolicySpec", 1), `&`, ``, 1) + `,`,
    -		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "ValidatingAdmissionPolicyStatus", "ValidatingAdmissionPolicyStatus", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	return n
     }
    -func (this *ValidatingAdmissionPolicyBinding) String() string {
    -	if this == nil {
    -		return "nil"
    +
    +func (m *ValidatingWebhook) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicyBinding{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ValidatingAdmissionPolicyBindingSpec", "ValidatingAdmissionPolicyBindingSpec", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ValidatingAdmissionPolicyBindingList) String() string {
    -	if this == nil {
    -		return "nil"
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.ClientConfig.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Rules) > 0 {
    +		for _, e := range m.Rules {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForItems := "[]ValidatingAdmissionPolicyBinding{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingAdmissionPolicyBinding", "ValidatingAdmissionPolicyBinding", 1), `&`, ``, 1) + ","
    +	if m.FailurePolicy != nil {
    +		l = len(*m.FailurePolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicyBindingList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ValidatingAdmissionPolicyBindingSpec) String() string {
    -	if this == nil {
    -		return "nil"
    +	if m.NamespaceSelector != nil {
    +		l = m.NamespaceSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicyBindingSpec{`,
    -		`PolicyName:` + fmt.Sprintf("%v", this.PolicyName) + `,`,
    -		`ParamRef:` + strings.Replace(this.ParamRef.String(), "ParamRef", "ParamRef", 1) + `,`,
    -		`MatchResources:` + strings.Replace(this.MatchResources.String(), "MatchResources", "MatchResources", 1) + `,`,
    -		`ValidationActions:` + fmt.Sprintf("%v", this.ValidationActions) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ValidatingAdmissionPolicyList) String() string {
    -	if this == nil {
    -		return "nil"
    +	if m.SideEffects != nil {
    +		l = len(*m.SideEffects)
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForItems := "[]ValidatingAdmissionPolicy{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingAdmissionPolicy", "ValidatingAdmissionPolicy", 1), `&`, ``, 1) + ","
    +	if m.TimeoutSeconds != nil {
    +		n += 1 + sovGenerated(uint64(*m.TimeoutSeconds))
     	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicyList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ValidatingAdmissionPolicySpec) String() string {
    -	if this == nil {
    -		return "nil"
    +	if len(m.AdmissionReviewVersions) > 0 {
    +		for _, s := range m.AdmissionReviewVersions {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForValidations := "[]Validation{"
    -	for _, f := range this.Validations {
    -		repeatedStringForValidations += strings.Replace(strings.Replace(f.String(), "Validation", "Validation", 1), `&`, ``, 1) + ","
    +	if m.MatchPolicy != nil {
    +		l = len(*m.MatchPolicy)
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForValidations += "}"
    -	repeatedStringForAuditAnnotations := "[]AuditAnnotation{"
    -	for _, f := range this.AuditAnnotations {
    -		repeatedStringForAuditAnnotations += strings.Replace(strings.Replace(f.String(), "AuditAnnotation", "AuditAnnotation", 1), `&`, ``, 1) + ","
    +	if m.ObjectSelector != nil {
    +		l = m.ObjectSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
     	}
    -	repeatedStringForAuditAnnotations += "}"
    -	repeatedStringForMatchConditions := "[]MatchCondition{"
    -	for _, f := range this.MatchConditions {
    -		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	if len(m.MatchConditions) > 0 {
    +		for _, e := range m.MatchConditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
     	}
    -	repeatedStringForMatchConditions += "}"
    -	repeatedStringForVariables := "[]Variable{"
    -	for _, f := range this.Variables {
    -		repeatedStringForVariables += strings.Replace(strings.Replace(f.String(), "Variable", "Variable", 1), `&`, ``, 1) + ","
    +	return n
    +}
    +
    +func (m *ValidatingWebhookConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	repeatedStringForVariables += "}"
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicySpec{`,
    -		`ParamKind:` + strings.Replace(this.ParamKind.String(), "ParamKind", "ParamKind", 1) + `,`,
    -		`MatchConstraints:` + strings.Replace(this.MatchConstraints.String(), "MatchResources", "MatchResources", 1) + `,`,
    -		`Validations:` + repeatedStringForValidations + `,`,
    -		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    -		`AuditAnnotations:` + repeatedStringForAuditAnnotations + `,`,
    -		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    -		`Variables:` + repeatedStringForVariables + `,`,
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Webhooks) > 0 {
    +		for _, e := range m.Webhooks {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ValidatingWebhookConfigurationList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *Validation) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Message)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Reason != nil {
    +		l = len(*m.Reason)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	l = len(m.MessageExpression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *Variable) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *WebhookClientConfig) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.Service != nil {
    +		l = m.Service.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.CABundle != nil {
    +		l = len(m.CABundle)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.URL != nil {
    +		l = len(*m.URL)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func sovGenerated(x uint64) (n int) {
    +	return (math_bits.Len64(x|1) + 6) / 7
    +}
    +func sozGenerated(x uint64) (n int) {
    +	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +}
    +func (this *ApplyConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ApplyConfiguration{`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
     		`}`,
     	}, "")
     	return s
     }
    -func (this *ValidatingAdmissionPolicyStatus) String() string {
    +func (this *AuditAnnotation) String() string {
     	if this == nil {
     		return "nil"
     	}
    -	repeatedStringForConditions := "[]Condition{"
    -	for _, f := range this.Conditions {
    -		repeatedStringForConditions += fmt.Sprintf("%v", f) + ","
    -	}
    -	repeatedStringForConditions += "}"
    -	s := strings.Join([]string{`&ValidatingAdmissionPolicyStatus{`,
    -		`ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`,
    -		`TypeChecking:` + strings.Replace(this.TypeChecking.String(), "TypeChecking", "TypeChecking", 1) + `,`,
    -		`Conditions:` + repeatedStringForConditions + `,`,
    +	s := strings.Join([]string{`&AuditAnnotation{`,
    +		`Key:` + fmt.Sprintf("%v", this.Key) + `,`,
    +		`ValueExpression:` + fmt.Sprintf("%v", this.ValueExpression) + `,`,
     		`}`,
     	}, "")
     	return s
     }
    -func (this *ValidatingWebhook) String() string {
    +func (this *ExpressionWarning) String() string {
     	if this == nil {
     		return "nil"
     	}
    -	repeatedStringForRules := "[]RuleWithOperations{"
    -	for _, f := range this.Rules {
    -		repeatedStringForRules += fmt.Sprintf("%v", f) + ","
    +	s := strings.Join([]string{`&ExpressionWarning{`,
    +		`FieldRef:` + fmt.Sprintf("%v", this.FieldRef) + `,`,
    +		`Warning:` + fmt.Sprintf("%v", this.Warning) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *JSONPatch) String() string {
    +	if this == nil {
    +		return "nil"
     	}
    -	repeatedStringForRules += "}"
    -	repeatedStringForMatchConditions := "[]MatchCondition{"
    -	for _, f := range this.MatchConditions {
    -		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	s := strings.Join([]string{`&JSONPatch{`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MatchCondition) String() string {
    +	if this == nil {
    +		return "nil"
     	}
    -	repeatedStringForMatchConditions += "}"
    -	s := strings.Join([]string{`&ValidatingWebhook{`,
    +	s := strings.Join([]string{`&MatchCondition{`,
     		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`ClientConfig:` + strings.Replace(strings.Replace(this.ClientConfig.String(), "WebhookClientConfig", "WebhookClientConfig", 1), `&`, ``, 1) + `,`,
    -		`Rules:` + repeatedStringForRules + `,`,
    -		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MatchResources) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForResourceRules := "[]NamedRuleWithOperations{"
    +	for _, f := range this.ResourceRules {
    +		repeatedStringForResourceRules += strings.Replace(strings.Replace(f.String(), "NamedRuleWithOperations", "NamedRuleWithOperations", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForResourceRules += "}"
    +	repeatedStringForExcludeResourceRules := "[]NamedRuleWithOperations{"
    +	for _, f := range this.ExcludeResourceRules {
    +		repeatedStringForExcludeResourceRules += strings.Replace(strings.Replace(f.String(), "NamedRuleWithOperations", "NamedRuleWithOperations", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForExcludeResourceRules += "}"
    +	s := strings.Join([]string{`&MatchResources{`,
     		`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`SideEffects:` + valueToStringGenerated(this.SideEffects) + `,`,
    -		`TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`,
    -		`AdmissionReviewVersions:` + fmt.Sprintf("%v", this.AdmissionReviewVersions) + `,`,
    -		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
     		`ObjectSelector:` + strings.Replace(fmt.Sprintf("%v", this.ObjectSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    -		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    +		`ResourceRules:` + repeatedStringForResourceRules + `,`,
    +		`ExcludeResourceRules:` + repeatedStringForExcludeResourceRules + `,`,
    +		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
     		`}`,
     	}, "")
     	return s
     }
    -func (this *ValidatingWebhookConfiguration) String() string {
    +func (this *MutatingAdmissionPolicy) String() string {
     	if this == nil {
     		return "nil"
     	}
    -	repeatedStringForWebhooks := "[]ValidatingWebhook{"
    -	for _, f := range this.Webhooks {
    -		repeatedStringForWebhooks += strings.Replace(strings.Replace(f.String(), "ValidatingWebhook", "ValidatingWebhook", 1), `&`, ``, 1) + ","
    +	s := strings.Join([]string{`&MutatingAdmissionPolicy{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "MutatingAdmissionPolicySpec", "MutatingAdmissionPolicySpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingAdmissionPolicyBinding) String() string {
    +	if this == nil {
    +		return "nil"
     	}
    -	repeatedStringForWebhooks += "}"
    -	s := strings.Join([]string{`&ValidatingWebhookConfiguration{`,
    +	s := strings.Join([]string{`&MutatingAdmissionPolicyBinding{`,
     		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Webhooks:` + repeatedStringForWebhooks + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "MutatingAdmissionPolicyBindingSpec", "MutatingAdmissionPolicyBindingSpec", 1), `&`, ``, 1) + `,`,
     		`}`,
     	}, "")
     	return s
     }
    -func (this *ValidatingWebhookConfigurationList) String() string {
    +func (this *MutatingAdmissionPolicyBindingList) String() string {
     	if this == nil {
     		return "nil"
     	}
    -	repeatedStringForItems := "[]ValidatingWebhookConfiguration{"
    +	repeatedStringForItems := "[]MutatingAdmissionPolicyBinding{"
     	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingWebhookConfiguration", "ValidatingWebhookConfiguration", 1), `&`, ``, 1) + ","
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "MutatingAdmissionPolicyBinding", "MutatingAdmissionPolicyBinding", 1), `&`, ``, 1) + ","
     	}
     	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&ValidatingWebhookConfigurationList{`,
    +	s := strings.Join([]string{`&MutatingAdmissionPolicyBindingList{`,
     		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
     		`Items:` + repeatedStringForItems + `,`,
     		`}`,
     	}, "")
     	return s
     }
    -func (this *Validation) String() string {
    +func (this *MutatingAdmissionPolicyBindingSpec) String() string {
     	if this == nil {
     		return "nil"
     	}
    -	s := strings.Join([]string{`&Validation{`,
    -		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    -		`Message:` + fmt.Sprintf("%v", this.Message) + `,`,
    -		`Reason:` + valueToStringGenerated(this.Reason) + `,`,
    -		`MessageExpression:` + fmt.Sprintf("%v", this.MessageExpression) + `,`,
    +	s := strings.Join([]string{`&MutatingAdmissionPolicyBindingSpec{`,
    +		`PolicyName:` + fmt.Sprintf("%v", this.PolicyName) + `,`,
    +		`ParamRef:` + strings.Replace(this.ParamRef.String(), "ParamRef", "ParamRef", 1) + `,`,
    +		`MatchResources:` + strings.Replace(this.MatchResources.String(), "MatchResources", "MatchResources", 1) + `,`,
     		`}`,
     	}, "")
     	return s
     }
    -func (this *Variable) String() string {
    +func (this *MutatingAdmissionPolicyList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]MutatingAdmissionPolicy{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "MutatingAdmissionPolicy", "MutatingAdmissionPolicy", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&MutatingAdmissionPolicyList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingAdmissionPolicySpec) String() string {
     	if this == nil {
     		return "nil"
     	}
    -	s := strings.Join([]string{`&Variable{`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *WebhookClientConfig) String() string {
    -	if this == nil {
    -		return "nil"
    +	repeatedStringForVariables := "[]Variable{"
    +	for _, f := range this.Variables {
    +		repeatedStringForVariables += strings.Replace(strings.Replace(f.String(), "Variable", "Variable", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForVariables += "}"
    +	repeatedStringForMutations := "[]Mutation{"
    +	for _, f := range this.Mutations {
    +		repeatedStringForMutations += strings.Replace(strings.Replace(f.String(), "Mutation", "Mutation", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForMutations += "}"
    +	repeatedStringForMatchConditions := "[]MatchCondition{"
    +	for _, f := range this.MatchConditions {
    +		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForMatchConditions += "}"
    +	s := strings.Join([]string{`&MutatingAdmissionPolicySpec{`,
    +		`ParamKind:` + strings.Replace(this.ParamKind.String(), "ParamKind", "ParamKind", 1) + `,`,
    +		`MatchConstraints:` + strings.Replace(this.MatchConstraints.String(), "MatchResources", "MatchResources", 1) + `,`,
    +		`Variables:` + repeatedStringForVariables + `,`,
    +		`Mutations:` + repeatedStringForMutations + `,`,
    +		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    +		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    +		`ReinvocationPolicy:` + fmt.Sprintf("%v", this.ReinvocationPolicy) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingWebhook) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForRules := "[]RuleWithOperations{"
    +	for _, f := range this.Rules {
    +		repeatedStringForRules += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForRules += "}"
    +	repeatedStringForMatchConditions := "[]MatchCondition{"
    +	for _, f := range this.MatchConditions {
    +		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForMatchConditions += "}"
    +	s := strings.Join([]string{`&MutatingWebhook{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`ClientConfig:` + strings.Replace(strings.Replace(this.ClientConfig.String(), "WebhookClientConfig", "WebhookClientConfig", 1), `&`, ``, 1) + `,`,
    +		`Rules:` + repeatedStringForRules + `,`,
    +		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    +		`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`SideEffects:` + valueToStringGenerated(this.SideEffects) + `,`,
    +		`TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`,
    +		`AdmissionReviewVersions:` + fmt.Sprintf("%v", this.AdmissionReviewVersions) + `,`,
    +		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
    +		`ReinvocationPolicy:` + valueToStringGenerated(this.ReinvocationPolicy) + `,`,
    +		`ObjectSelector:` + strings.Replace(fmt.Sprintf("%v", this.ObjectSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingWebhookConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForWebhooks := "[]MutatingWebhook{"
    +	for _, f := range this.Webhooks {
    +		repeatedStringForWebhooks += strings.Replace(strings.Replace(f.String(), "MutatingWebhook", "MutatingWebhook", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForWebhooks += "}"
    +	s := strings.Join([]string{`&MutatingWebhookConfiguration{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Webhooks:` + repeatedStringForWebhooks + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *MutatingWebhookConfigurationList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]MutatingWebhookConfiguration{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "MutatingWebhookConfiguration", "MutatingWebhookConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&MutatingWebhookConfigurationList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Mutation) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&Mutation{`,
    +		`PatchType:` + fmt.Sprintf("%v", this.PatchType) + `,`,
    +		`ApplyConfiguration:` + strings.Replace(this.ApplyConfiguration.String(), "ApplyConfiguration", "ApplyConfiguration", 1) + `,`,
    +		`JSONPatch:` + strings.Replace(this.JSONPatch.String(), "JSONPatch", "JSONPatch", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *NamedRuleWithOperations) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&NamedRuleWithOperations{`,
    +		`ResourceNames:` + fmt.Sprintf("%v", this.ResourceNames) + `,`,
    +		`RuleWithOperations:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.RuleWithOperations), "RuleWithOperations", "v11.RuleWithOperations", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ParamKind) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ParamKind{`,
    +		`APIVersion:` + fmt.Sprintf("%v", this.APIVersion) + `,`,
    +		`Kind:` + fmt.Sprintf("%v", this.Kind) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ParamRef) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ParamRef{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    +		`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`ParameterNotFoundAction:` + valueToStringGenerated(this.ParameterNotFoundAction) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ServiceReference) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ServiceReference{`,
    +		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Path:` + valueToStringGenerated(this.Path) + `,`,
    +		`Port:` + valueToStringGenerated(this.Port) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *TypeChecking) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForExpressionWarnings := "[]ExpressionWarning{"
    +	for _, f := range this.ExpressionWarnings {
    +		repeatedStringForExpressionWarnings += strings.Replace(strings.Replace(f.String(), "ExpressionWarning", "ExpressionWarning", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForExpressionWarnings += "}"
    +	s := strings.Join([]string{`&TypeChecking{`,
    +		`ExpressionWarnings:` + repeatedStringForExpressionWarnings + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicy) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicy{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ValidatingAdmissionPolicySpec", "ValidatingAdmissionPolicySpec", 1), `&`, ``, 1) + `,`,
    +		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "ValidatingAdmissionPolicyStatus", "ValidatingAdmissionPolicyStatus", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyBinding) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyBinding{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ValidatingAdmissionPolicyBindingSpec", "ValidatingAdmissionPolicyBindingSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyBindingList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ValidatingAdmissionPolicyBinding{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingAdmissionPolicyBinding", "ValidatingAdmissionPolicyBinding", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyBindingList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyBindingSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyBindingSpec{`,
    +		`PolicyName:` + fmt.Sprintf("%v", this.PolicyName) + `,`,
    +		`ParamRef:` + strings.Replace(this.ParamRef.String(), "ParamRef", "ParamRef", 1) + `,`,
    +		`MatchResources:` + strings.Replace(this.MatchResources.String(), "MatchResources", "MatchResources", 1) + `,`,
    +		`ValidationActions:` + fmt.Sprintf("%v", this.ValidationActions) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ValidatingAdmissionPolicy{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingAdmissionPolicy", "ValidatingAdmissionPolicy", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicySpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForValidations := "[]Validation{"
    +	for _, f := range this.Validations {
    +		repeatedStringForValidations += strings.Replace(strings.Replace(f.String(), "Validation", "Validation", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForValidations += "}"
    +	repeatedStringForAuditAnnotations := "[]AuditAnnotation{"
    +	for _, f := range this.AuditAnnotations {
    +		repeatedStringForAuditAnnotations += strings.Replace(strings.Replace(f.String(), "AuditAnnotation", "AuditAnnotation", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForAuditAnnotations += "}"
    +	repeatedStringForMatchConditions := "[]MatchCondition{"
    +	for _, f := range this.MatchConditions {
    +		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForMatchConditions += "}"
    +	repeatedStringForVariables := "[]Variable{"
    +	for _, f := range this.Variables {
    +		repeatedStringForVariables += strings.Replace(strings.Replace(f.String(), "Variable", "Variable", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForVariables += "}"
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicySpec{`,
    +		`ParamKind:` + strings.Replace(this.ParamKind.String(), "ParamKind", "ParamKind", 1) + `,`,
    +		`MatchConstraints:` + strings.Replace(this.MatchConstraints.String(), "MatchResources", "MatchResources", 1) + `,`,
    +		`Validations:` + repeatedStringForValidations + `,`,
    +		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    +		`AuditAnnotations:` + repeatedStringForAuditAnnotations + `,`,
    +		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    +		`Variables:` + repeatedStringForVariables + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingAdmissionPolicyStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForConditions := "[]Condition{"
    +	for _, f := range this.Conditions {
    +		repeatedStringForConditions += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForConditions += "}"
    +	s := strings.Join([]string{`&ValidatingAdmissionPolicyStatus{`,
    +		`ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`,
    +		`TypeChecking:` + strings.Replace(this.TypeChecking.String(), "TypeChecking", "TypeChecking", 1) + `,`,
    +		`Conditions:` + repeatedStringForConditions + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingWebhook) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForRules := "[]RuleWithOperations{"
    +	for _, f := range this.Rules {
    +		repeatedStringForRules += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForRules += "}"
    +	repeatedStringForMatchConditions := "[]MatchCondition{"
    +	for _, f := range this.MatchConditions {
    +		repeatedStringForMatchConditions += strings.Replace(strings.Replace(f.String(), "MatchCondition", "MatchCondition", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForMatchConditions += "}"
    +	s := strings.Join([]string{`&ValidatingWebhook{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`ClientConfig:` + strings.Replace(strings.Replace(this.ClientConfig.String(), "WebhookClientConfig", "WebhookClientConfig", 1), `&`, ``, 1) + `,`,
    +		`Rules:` + repeatedStringForRules + `,`,
    +		`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
    +		`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`SideEffects:` + valueToStringGenerated(this.SideEffects) + `,`,
    +		`TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`,
    +		`AdmissionReviewVersions:` + fmt.Sprintf("%v", this.AdmissionReviewVersions) + `,`,
    +		`MatchPolicy:` + valueToStringGenerated(this.MatchPolicy) + `,`,
    +		`ObjectSelector:` + strings.Replace(fmt.Sprintf("%v", this.ObjectSelector), "LabelSelector", "v1.LabelSelector", 1) + `,`,
    +		`MatchConditions:` + repeatedStringForMatchConditions + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingWebhookConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForWebhooks := "[]ValidatingWebhook{"
    +	for _, f := range this.Webhooks {
    +		repeatedStringForWebhooks += strings.Replace(strings.Replace(f.String(), "ValidatingWebhook", "ValidatingWebhook", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForWebhooks += "}"
    +	s := strings.Join([]string{`&ValidatingWebhookConfiguration{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Webhooks:` + repeatedStringForWebhooks + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ValidatingWebhookConfigurationList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ValidatingWebhookConfiguration{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ValidatingWebhookConfiguration", "ValidatingWebhookConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ValidatingWebhookConfigurationList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Validation) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&Validation{`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`Message:` + fmt.Sprintf("%v", this.Message) + `,`,
    +		`Reason:` + valueToStringGenerated(this.Reason) + `,`,
    +		`MessageExpression:` + fmt.Sprintf("%v", this.MessageExpression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Variable) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&Variable{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *WebhookClientConfig) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&WebhookClientConfig{`,
    +		`Service:` + strings.Replace(this.Service.String(), "ServiceReference", "ServiceReference", 1) + `,`,
    +		`CABundle:` + valueToStringGenerated(this.CABundle) + `,`,
    +		`URL:` + valueToStringGenerated(this.URL) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func valueToStringGenerated(v interface{}) string {
    +	rv := reflect.ValueOf(v)
    +	if rv.IsNil() {
    +		return "nil"
    +	}
    +	pv := reflect.Indirect(rv).Interface()
    +	return fmt.Sprintf("*%v", pv)
    +}
    +func (m *ApplyConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ApplyConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ApplyConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Expression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *AuditAnnotation) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: AuditAnnotation: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: AuditAnnotation: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Key = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ValueExpression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ValueExpression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ExpressionWarning) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ExpressionWarning: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ExpressionWarning: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.FieldRef = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Warning", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Warning = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *JSONPatch) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: JSONPatch: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: JSONPatch: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Expression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MatchCondition) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MatchCondition: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MatchCondition: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Expression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MatchResources) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MatchResources: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MatchResources: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NamespaceSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NamespaceSelector == nil {
    +				m.NamespaceSelector = &v1.LabelSelector{}
    +			}
    +			if err := m.NamespaceSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ObjectSelector == nil {
    +				m.ObjectSelector = &v1.LabelSelector{}
    +			}
    +			if err := m.ObjectSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceRules", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ResourceRules = append(m.ResourceRules, NamedRuleWithOperations{})
    +			if err := m.ResourceRules[len(m.ResourceRules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ExcludeResourceRules", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ExcludeResourceRules = append(m.ExcludeResourceRules, NamedRuleWithOperations{})
    +			if err := m.ExcludeResourceRules[len(m.ExcludeResourceRules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchPolicy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := MatchPolicyType(dAtA[iNdEx:postIndex])
    +			m.MatchPolicy = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *MutatingAdmissionPolicy) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicy: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicy: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
     	}
    -	s := strings.Join([]string{`&WebhookClientConfig{`,
    -		`Service:` + strings.Replace(this.Service.String(), "ServiceReference", "ServiceReference", 1) + `,`,
    -		`CABundle:` + valueToStringGenerated(this.CABundle) + `,`,
    -		`URL:` + valueToStringGenerated(this.URL) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    +	return nil
     }
    -func valueToStringGenerated(v interface{}) string {
    -	rv := reflect.ValueOf(v)
    -	if rv.IsNil() {
    -		return "nil"
    +func (m *MutatingAdmissionPolicyBinding) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyBinding: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyBinding: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
     	}
    -	pv := reflect.Indirect(rv).Interface()
    -	return fmt.Sprintf("*%v", pv)
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
     }
    -func (m *AuditAnnotation) Unmarshal(dAtA []byte) error {
    +func (m *MutatingAdmissionPolicyBindingList) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3273,17 +5243,17 @@ func (m *AuditAnnotation) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: AuditAnnotation: wiretype end group for non-group")
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyBindingList: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: AuditAnnotation: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyBindingList: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3293,29 +5263,30 @@ func (m *AuditAnnotation) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Key = string(dAtA[iNdEx:postIndex])
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ValueExpression", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3325,23 +5296,25 @@ func (m *AuditAnnotation) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.ValueExpression = string(dAtA[iNdEx:postIndex])
    +			m.Items = append(m.Items, MutatingAdmissionPolicyBinding{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -3364,7 +5337,7 @@ func (m *AuditAnnotation) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *ExpressionWarning) Unmarshal(dAtA []byte) error {
    +func (m *MutatingAdmissionPolicyBindingSpec) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3387,15 +5360,15 @@ func (m *ExpressionWarning) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: ExpressionWarning: wiretype end group for non-group")
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyBindingSpec: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ExpressionWarning: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyBindingSpec: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
    -		case 2:
    +		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field PolicyName", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -3423,13 +5396,49 @@ func (m *ExpressionWarning) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.FieldRef = string(dAtA[iNdEx:postIndex])
    +			m.PolicyName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ParamRef", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ParamRef == nil {
    +				m.ParamRef = &ParamRef{}
    +			}
    +			if err := m.ParamRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Warning", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchResources", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3439,23 +5448,27 @@ func (m *ExpressionWarning) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Warning = string(dAtA[iNdEx:postIndex])
    +			if m.MatchResources == nil {
    +				m.MatchResources = &MatchResources{}
    +			}
    +			if err := m.MatchResources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -3478,7 +5491,7 @@ func (m *ExpressionWarning) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *MatchCondition) Unmarshal(dAtA []byte) error {
    +func (m *MutatingAdmissionPolicyList) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3501,17 +5514,17 @@ func (m *MatchCondition) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: MatchCondition: wiretype end group for non-group")
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyList: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: MatchCondition: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: MutatingAdmissionPolicyList: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3521,29 +5534,30 @@ func (m *MatchCondition) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -3553,23 +5567,25 @@ func (m *MatchCondition) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Expression = string(dAtA[iNdEx:postIndex])
    +			m.Items = append(m.Items, MutatingAdmissionPolicy{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -3592,7 +5608,7 @@ func (m *MatchCondition) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *MatchResources) Unmarshal(dAtA []byte) error {
    +func (m *MutatingAdmissionPolicySpec) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -3615,15 +5631,15 @@ func (m *MatchResources) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: MatchResources: wiretype end group for non-group")
    +			return fmt.Errorf("proto: MutatingAdmissionPolicySpec: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: MatchResources: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: MutatingAdmissionPolicySpec: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field NamespaceSelector", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ParamKind", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3650,16 +5666,16 @@ func (m *MatchResources) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.NamespaceSelector == nil {
    -				m.NamespaceSelector = &v1.LabelSelector{}
    +			if m.ParamKind == nil {
    +				m.ParamKind = &ParamKind{}
     			}
    -			if err := m.NamespaceSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.ParamKind.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectSelector", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchConstraints", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3686,16 +5702,16 @@ func (m *MatchResources) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.ObjectSelector == nil {
    -				m.ObjectSelector = &v1.LabelSelector{}
    +			if m.MatchConstraints == nil {
    +				m.MatchConstraints = &MatchResources{}
     			}
    -			if err := m.ObjectSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.MatchConstraints.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
     		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ResourceRules", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Variables", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3722,14 +5738,14 @@ func (m *MatchResources) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.ResourceRules = append(m.ResourceRules, NamedRuleWithOperations{})
    -			if err := m.ResourceRules[len(m.ResourceRules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.Variables = append(m.Variables, Variable{})
    +			if err := m.Variables[len(m.Variables)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
     		case 4:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ExcludeResourceRules", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Mutations", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -3756,14 +5772,81 @@ func (m *MatchResources) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.ExcludeResourceRules = append(m.ExcludeResourceRules, NamedRuleWithOperations{})
    -			if err := m.ExcludeResourceRules[len(m.ExcludeResourceRules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.Mutations = append(m.Mutations, Mutation{})
    +			if err := m.Mutations[len(m.Mutations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field FailurePolicy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := FailurePolicyType(dAtA[iNdEx:postIndex])
    +			m.FailurePolicy = &s
    +			iNdEx = postIndex
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchConditions", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.MatchConditions = append(m.MatchConditions, MatchCondition{})
    +			if err := m.MatchConditions[len(m.MatchConditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
     		case 7:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field MatchPolicy", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ReinvocationPolicy", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -3791,8 +5874,7 @@ func (m *MatchResources) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := MatchPolicyType(dAtA[iNdEx:postIndex])
    -			m.MatchPolicy = &s
    +			m.ReinvocationPolicy = k8s_io_api_admissionregistration_v1.ReinvocationPolicyType(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -4160,7 +6242,7 @@ func (m *MutatingWebhook) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := ReinvocationPolicyType(dAtA[iNdEx:postIndex])
    +			s := k8s_io_api_admissionregistration_v1.ReinvocationPolicyType(dAtA[iNdEx:postIndex])
     			m.ReinvocationPolicy = &s
     			iNdEx = postIndex
     		case 11:
    @@ -4488,6 +6570,160 @@ func (m *MutatingWebhookConfigurationList) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    +func (m *Mutation) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: Mutation: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: Mutation: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PatchType", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.PatchType = PatchType(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ApplyConfiguration", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ApplyConfiguration == nil {
    +				m.ApplyConfiguration = &ApplyConfiguration{}
    +			}
    +			if err := m.ApplyConfiguration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field JSONPatch", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.JSONPatch == nil {
    +				m.JSONPatch = &JSONPatch{}
    +			}
    +			if err := m.JSONPatch.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
     func (m *NamedRuleWithOperations) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
    diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto
    index 30f99f64d0..fb47a20056 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto
    @@ -29,6 +29,51 @@ import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
     // Package-wide variables from generator "generated".
     option go_package = "k8s.io/api/admissionregistration/v1beta1";
     
    +// ApplyConfiguration defines the desired configuration values of an object.
    +message ApplyConfiguration {
    +  // expression will be evaluated by CEL to create an apply configuration.
    +  // ref: https://github.com/google/cel-spec
    +  //
    +  // Apply configurations are declared in CEL using object initialization. For example, this CEL expression
    +  // returns an apply configuration to set a single field:
    +  //
    +  // 	Object{
    +  // 	  spec: Object.spec{
    +  // 	    serviceAccountName: "example"
    +  // 	  }
    +  // 	}
    +  //
    +  // Apply configurations may not modify atomic structs, maps or arrays due to the risk of accidental deletion of
    +  // values not included in the apply configuration.
    +  //
    +  // CEL expressions have access to the object types needed to create apply configurations:
    +  //
    +  // - 'Object' - CEL type of the resource object.
    +  // - 'Object.' - CEL type of object field (such as 'Object.spec')
    +  // - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers')
    +  //
    +  // CEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables:
    +  //
    +  // - 'object' - The object from the incoming request. The value is null for DELETE requests.
    +  // - 'oldObject' - The existing object. The value is null for CREATE requests.
    +  // - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)).
    +  // - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind.
    +  // - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources.
    +  // - 'variables' - Map of composited variables, from its name to its lazily evaluated value.
    +  //   For example, a variable named 'foo' can be accessed as 'variables.foo'.
    +  // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.
    +  //   See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
    +  // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the
    +  //   request resource.
    +  //
    +  // The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
    +  // object. No other metadata properties are accessible.
    +  //
    +  // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
    +  // Required.
    +  optional string expression = 1;
    +}
    +
     // AuditAnnotation describes how to produce an audit annotation for an API request.
     message AuditAnnotation {
       // key specifies the audit annotation key. The audit annotation keys of
    @@ -79,6 +124,75 @@ message ExpressionWarning {
       optional string warning = 3;
     }
     
    +// JSONPatch defines a JSON Patch.
    +message JSONPatch {
    +  // expression will be evaluated by CEL to create a [JSON patch](https://jsonpatch.com/).
    +  // ref: https://github.com/google/cel-spec
    +  //
    +  // expression must return an array of JSONPatch values.
    +  //
    +  // For example, this CEL expression returns a JSON patch to conditionally modify a value:
    +  //
    +  // 	  [
    +  // 	    JSONPatch{op: "test", path: "/spec/example", value: "Red"},
    +  // 	    JSONPatch{op: "replace", path: "/spec/example", value: "Green"}
    +  // 	  ]
    +  //
    +  // To define an object for the patch value, use Object types. For example:
    +  //
    +  // 	  [
    +  // 	    JSONPatch{
    +  // 	      op: "add",
    +  // 	      path: "/spec/selector",
    +  // 	      value: Object.spec.selector{matchLabels: {"environment": "test"}}
    +  // 	    }
    +  // 	  ]
    +  //
    +  // To use strings containing '/' and '~' as JSONPatch path keys, use "jsonpatch.escapeKey". For example:
    +  //
    +  // 	  [
    +  // 	    JSONPatch{
    +  // 	      op: "add",
    +  // 	      path: "/metadata/labels/" + jsonpatch.escapeKey("example.com/environment"),
    +  // 	      value: "test"
    +  // 	    },
    +  // 	  ]
    +  //
    +  // CEL expressions have access to the types needed to create JSON patches and objects:
    +  //
    +  // - 'JSONPatch' - CEL type of JSON Patch operations. JSONPatch has the fields 'op', 'from', 'path' and 'value'.
    +  //   See [JSON patch](https://jsonpatch.com/) for more details. The 'value' field may be set to any of: string,
    +  //   integer, array, map or object.  If set, the 'path' and 'from' fields must be set to a
    +  //   [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901/) string, where the 'jsonpatch.escapeKey()' CEL
    +  //   function may be used to escape path keys containing '/' and '~'.
    +  // - 'Object' - CEL type of the resource object.
    +  // - 'Object.' - CEL type of object field (such as 'Object.spec')
    +  // - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers')
    +  //
    +  // CEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables:
    +  //
    +  // - 'object' - The object from the incoming request. The value is null for DELETE requests.
    +  // - 'oldObject' - The existing object. The value is null for CREATE requests.
    +  // - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)).
    +  // - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind.
    +  // - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources.
    +  // - 'variables' - Map of composited variables, from its name to its lazily evaluated value.
    +  //   For example, a variable named 'foo' can be accessed as 'variables.foo'.
    +  // - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.
    +  //   See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
    +  // - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the
    +  //   request resource.
    +  //
    +  // CEL expressions have access to [Kubernetes CEL function libraries](https://kubernetes.io/docs/reference/using-api/cel/#cel-options-language-features-and-libraries)
    +  // as well as:
    +  //
    +  // - 'jsonpatch.escapeKey' - Performs JSONPatch key escaping. '~' and  '/' are escaped as '~0' and `~1' respectively).
    +  //
    +  // Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
    +  // Required.
    +  optional string expression = 1;
    +}
    +
     // MatchCondition represents a condition which must be fulfilled for a request to be sent to a webhook.
     message MatchCondition {
       // Name is an identifier for this match condition, used for strategic merging of MatchConditions,
    @@ -203,6 +317,173 @@ message MatchResources {
       optional string matchPolicy = 7;
     }
     
    +// MutatingAdmissionPolicy describes the definition of an admission mutation policy that mutates the object coming into admission chain.
    +message MutatingAdmissionPolicy {
    +  // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Specification of the desired behavior of the MutatingAdmissionPolicy.
    +  optional MutatingAdmissionPolicySpec spec = 2;
    +}
    +
    +// MutatingAdmissionPolicyBinding binds the MutatingAdmissionPolicy with parametrized resources.
    +// MutatingAdmissionPolicyBinding and the optional parameter resource together define how cluster administrators
    +// configure policies for clusters.
    +//
    +// For a given admission request, each binding will cause its policy to be
    +// evaluated N times, where N is 1 for policies/bindings that don't use
    +// params, otherwise N is the number of parameters selected by the binding.
    +// Each evaluation is constrained by a [runtime cost budget](https://kubernetes.io/docs/reference/using-api/cel/#runtime-cost-budget).
    +//
    +// Adding/removing policies, bindings, or params can not affect whether a
    +// given (policy, binding, param) combination is within its own CEL budget.
    +message MutatingAdmissionPolicyBinding {
    +  // Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // Specification of the desired behavior of the MutatingAdmissionPolicyBinding.
    +  optional MutatingAdmissionPolicyBindingSpec spec = 2;
    +}
    +
    +// MutatingAdmissionPolicyBindingList is a list of MutatingAdmissionPolicyBinding.
    +message MutatingAdmissionPolicyBindingList {
    +  // Standard list metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // List of PolicyBinding.
    +  repeated MutatingAdmissionPolicyBinding items = 2;
    +}
    +
    +// MutatingAdmissionPolicyBindingSpec is the specification of the MutatingAdmissionPolicyBinding.
    +message MutatingAdmissionPolicyBindingSpec {
    +  // policyName references a MutatingAdmissionPolicy name which the MutatingAdmissionPolicyBinding binds to.
    +  // If the referenced resource does not exist, this binding is considered invalid and will be ignored
    +  // Required.
    +  optional string policyName = 1;
    +
    +  // paramRef specifies the parameter resource used to configure the admission control policy.
    +  // It should point to a resource of the type specified in spec.ParamKind of the bound MutatingAdmissionPolicy.
    +  // If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the MutatingAdmissionPolicy applied.
    +  // If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.
    +  // +optional
    +  optional ParamRef paramRef = 2;
    +
    +  // matchResources limits what resources match this binding and may be mutated by it.
    +  // Note that if matchResources matches a resource, the resource must also match a policy's matchConstraints and
    +  // matchConditions before the resource may be mutated.
    +  // When matchResources is unset, it does not constrain resource matching, and only the policy's matchConstraints
    +  // and matchConditions must match for the resource to be mutated.
    +  // Additionally, matchResources.resourceRules are optional and do not constraint matching when unset.
    +  // Note that this is differs from MutatingAdmissionPolicy matchConstraints, where resourceRules are required.
    +  // The CREATE, UPDATE and CONNECT operations are allowed.  The DELETE operation may not be matched.
    +  // '*' matches CREATE, UPDATE and CONNECT.
    +  // +optional
    +  optional MatchResources matchResources = 3;
    +}
    +
    +// MutatingAdmissionPolicyList is a list of MutatingAdmissionPolicy.
    +message MutatingAdmissionPolicyList {
    +  // Standard list metadata.
    +  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // List of ValidatingAdmissionPolicy.
    +  repeated MutatingAdmissionPolicy items = 2;
    +}
    +
    +// MutatingAdmissionPolicySpec is the specification of the desired behavior of the admission policy.
    +message MutatingAdmissionPolicySpec {
    +  // paramKind specifies the kind of resources used to parameterize this policy.
    +  // If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions.
    +  // If paramKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied.
    +  // If paramKind is specified but paramRef is unset in MutatingAdmissionPolicyBinding, the params variable will be null.
    +  // +optional
    +  optional ParamKind paramKind = 1;
    +
    +  // matchConstraints specifies what resources this policy is designed to validate.
    +  // The MutatingAdmissionPolicy cares about a request if it matches _all_ Constraints.
    +  // However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API
    +  // MutatingAdmissionPolicy cannot match MutatingAdmissionPolicy and MutatingAdmissionPolicyBinding.
    +  // The CREATE, UPDATE and CONNECT operations are allowed.  The DELETE operation may not be matched.
    +  // '*' matches CREATE, UPDATE and CONNECT.
    +  // Required.
    +  optional MatchResources matchConstraints = 2;
    +
    +  // variables contain definitions of variables that can be used in composition of other expressions.
    +  // Each variable is defined as a named CEL expression.
    +  // The variables defined here will be available under `variables` in other expressions of the policy
    +  // except matchConditions because matchConditions are evaluated before the rest of the policy.
    +  //
    +  // The expression of a variable can refer to other variables defined earlier in the list but not those after.
    +  // Thus, variables must be sorted by the order of first appearance and acyclic.
    +  // +listType=atomic
    +  // +optional
    +  repeated Variable variables = 3;
    +
    +  // mutations contain operations to perform on matching objects.
    +  // mutations may not be empty; a minimum of one mutation is required.
    +  // mutations are evaluated in order, and are reinvoked according to
    +  // the reinvocationPolicy.
    +  // The mutations of a policy are invoked for each binding of this policy
    +  // and reinvocation of mutations occurs on a per binding basis.
    +  //
    +  // +listType=atomic
    +  // +optional
    +  repeated Mutation mutations = 4;
    +
    +  // failurePolicy defines how to handle failures for the admission policy. Failures can
    +  // occur from CEL expression parse errors, type check errors, runtime errors and invalid
    +  // or mis-configured policy definitions or bindings.
    +  //
    +  // A policy is invalid if paramKind refers to a non-existent Kind.
    +  // A binding is invalid if paramRef.name refers to a non-existent resource.
    +  //
    +  // failurePolicy does not define how validations that evaluate to false are handled.
    +  //
    +  // Allowed values are Ignore or Fail. Defaults to Fail.
    +  // +optional
    +  optional string failurePolicy = 5;
    +
    +  // matchConditions is a list of conditions that must be met for a request to be validated.
    +  // Match conditions filter requests that have already been matched by the matchConstraints.
    +  // An empty list of matchConditions matches all requests.
    +  // There are a maximum of 64 match conditions allowed.
    +  //
    +  // If a parameter object is provided, it can be accessed via the `params` handle in the same
    +  // manner as validation expressions.
    +  //
    +  // The exact matching logic is (in order):
    +  //   1. If ANY matchCondition evaluates to FALSE, the policy is skipped.
    +  //   2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.
    +  //   3. If any matchCondition evaluates to an error (but none are FALSE):
    +  //      - If failurePolicy=Fail, reject the request
    +  //      - If failurePolicy=Ignore, the policy is skipped
    +  //
    +  // +patchMergeKey=name
    +  // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=name
    +  // +optional
    +  repeated MatchCondition matchConditions = 6;
    +
    +  // reinvocationPolicy indicates whether mutations may be called multiple times per MutatingAdmissionPolicyBinding
    +  // as part of a single admission evaluation.
    +  // Allowed values are "Never" and "IfNeeded".
    +  //
    +  // Never: These mutations will not be called more than once per binding in a single admission evaluation.
    +  //
    +  // IfNeeded: These mutations may be invoked more than once per binding for a single admission request and there is no guarantee of
    +  // order with respect to other admission plugins, admission webhooks, bindings of this policy and admission policies.  Mutations are only
    +  // reinvoked when mutations change the object after this mutation is invoked.
    +  // Required.
    +  optional string reinvocationPolicy = 7;
    +}
    +
     // MutatingWebhook describes an admission webhook and the resources and operations it applies to.
     message MutatingWebhook {
       // The name of the admission webhook.
    @@ -401,6 +682,26 @@ message MutatingWebhookConfigurationList {
       repeated MutatingWebhookConfiguration items = 2;
     }
     
    +// Mutation specifies the CEL expression which is used to apply the Mutation.
    +message Mutation {
    +  // patchType indicates the patch strategy used.
    +  // Allowed values are "ApplyConfiguration" and "JSONPatch".
    +  // Required.
    +  //
    +  // +unionDiscriminator
    +  optional string patchType = 2;
    +
    +  // applyConfiguration defines the desired configuration values of an object.
    +  // The configuration is applied to the admission object using
    +  // [structured merge diff](https://github.com/kubernetes-sigs/structured-merge-diff).
    +  // A CEL expression is used to create apply configuration.
    +  optional ApplyConfiguration applyConfiguration = 3;
    +
    +  // jsonPatch defines a [JSON patch](https://jsonpatch.com/) operation to perform a mutation to the object.
    +  // A CEL expression is used to create the JSON patch.
    +  optional JSONPatch jsonPatch = 4;
    +}
    +
     // NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.
     // +structType=atomic
     message NamedRuleWithOperations {
    diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/register.go b/vendor/k8s.io/api/admissionregistration/v1beta1/register.go
    index 363233a2f9..be64c4a5fa 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1beta1/register.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/register.go
    @@ -54,6 +54,10 @@ func addKnownTypes(scheme *runtime.Scheme) error {
     		&ValidatingAdmissionPolicyList{},
     		&ValidatingAdmissionPolicyBinding{},
     		&ValidatingAdmissionPolicyBindingList{},
    +		&MutatingAdmissionPolicy{},
    +		&MutatingAdmissionPolicyList{},
    +		&MutatingAdmissionPolicyBinding{},
    +		&MutatingAdmissionPolicyBindingList{},
     	)
     	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
     	return nil
    diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/types.go b/vendor/k8s.io/api/admissionregistration/v1beta1/types.go
    index 0f59031239..cffdda82c9 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1beta1/types.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/types.go
    @@ -1073,7 +1073,7 @@ type MutatingWebhook struct {
     }
     
     // ReinvocationPolicyType specifies what type of policy the admission hook uses.
    -type ReinvocationPolicyType string
    +type ReinvocationPolicyType = v1.ReinvocationPolicyType
     
     const (
     	// NeverReinvocationPolicy indicates that the webhook must not be called more than once in a
    @@ -1197,3 +1197,332 @@ type MatchCondition struct {
     	// Required.
     	Expression string `json:"expression" protobuf:"bytes,2,opt,name=expression"`
     }
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.34
    +
    +// MutatingAdmissionPolicy describes the definition of an admission mutation policy that mutates the object coming into admission chain.
    +type MutatingAdmissionPolicy struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// Specification of the desired behavior of the MutatingAdmissionPolicy.
    +	Spec MutatingAdmissionPolicySpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.34
    +
    +// MutatingAdmissionPolicyList is a list of MutatingAdmissionPolicy.
    +type MutatingAdmissionPolicyList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// List of ValidatingAdmissionPolicy.
    +	Items []MutatingAdmissionPolicy `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// MutatingAdmissionPolicySpec is the specification of the desired behavior of the admission policy.
    +type MutatingAdmissionPolicySpec struct {
    +	// paramKind specifies the kind of resources used to parameterize this policy.
    +	// If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions.
    +	// If paramKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied.
    +	// If paramKind is specified but paramRef is unset in MutatingAdmissionPolicyBinding, the params variable will be null.
    +	// +optional
    +	ParamKind *ParamKind `json:"paramKind,omitempty" protobuf:"bytes,1,rep,name=paramKind"`
    +
    +	// matchConstraints specifies what resources this policy is designed to validate.
    +	// The MutatingAdmissionPolicy cares about a request if it matches _all_ Constraints.
    +	// However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API
    +	// MutatingAdmissionPolicy cannot match MutatingAdmissionPolicy and MutatingAdmissionPolicyBinding.
    +	// The CREATE, UPDATE and CONNECT operations are allowed.  The DELETE operation may not be matched.
    +	// '*' matches CREATE, UPDATE and CONNECT.
    +	// Required.
    +	MatchConstraints *MatchResources `json:"matchConstraints,omitempty" protobuf:"bytes,2,rep,name=matchConstraints"`
    +
    +	// variables contain definitions of variables that can be used in composition of other expressions.
    +	// Each variable is defined as a named CEL expression.
    +	// The variables defined here will be available under `variables` in other expressions of the policy
    +	// except matchConditions because matchConditions are evaluated before the rest of the policy.
    +	//
    +	// The expression of a variable can refer to other variables defined earlier in the list but not those after.
    +	// Thus, variables must be sorted by the order of first appearance and acyclic.
    +	// +listType=atomic
    +	// +optional
    +	Variables []Variable `json:"variables,omitempty" protobuf:"bytes,3,rep,name=variables"`
    +
    +	// mutations contain operations to perform on matching objects.
    +	// mutations may not be empty; a minimum of one mutation is required.
    +	// mutations are evaluated in order, and are reinvoked according to
    +	// the reinvocationPolicy.
    +	// The mutations of a policy are invoked for each binding of this policy
    +	// and reinvocation of mutations occurs on a per binding basis.
    +	//
    +	// +listType=atomic
    +	// +optional
    +	Mutations []Mutation `json:"mutations,omitempty" protobuf:"bytes,4,rep,name=mutations"`
    +
    +	// failurePolicy defines how to handle failures for the admission policy. Failures can
    +	// occur from CEL expression parse errors, type check errors, runtime errors and invalid
    +	// or mis-configured policy definitions or bindings.
    +	//
    +	// A policy is invalid if paramKind refers to a non-existent Kind.
    +	// A binding is invalid if paramRef.name refers to a non-existent resource.
    +	//
    +	// failurePolicy does not define how validations that evaluate to false are handled.
    +	//
    +	// Allowed values are Ignore or Fail. Defaults to Fail.
    +	// +optional
    +	FailurePolicy *FailurePolicyType `json:"failurePolicy,omitempty" protobuf:"bytes,5,opt,name=failurePolicy,casttype=FailurePolicyType"`
    +
    +	// matchConditions is a list of conditions that must be met for a request to be validated.
    +	// Match conditions filter requests that have already been matched by the matchConstraints.
    +	// An empty list of matchConditions matches all requests.
    +	// There are a maximum of 64 match conditions allowed.
    +	//
    +	// If a parameter object is provided, it can be accessed via the `params` handle in the same
    +	// manner as validation expressions.
    +	//
    +	// The exact matching logic is (in order):
    +	//   1. If ANY matchCondition evaluates to FALSE, the policy is skipped.
    +	//   2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.
    +	//   3. If any matchCondition evaluates to an error (but none are FALSE):
    +	//      - If failurePolicy=Fail, reject the request
    +	//      - If failurePolicy=Ignore, the policy is skipped
    +	//
    +	// +patchMergeKey=name
    +	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=name
    +	// +optional
    +	MatchConditions []MatchCondition `json:"matchConditions,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,6,rep,name=matchConditions"`
    +
    +	// reinvocationPolicy indicates whether mutations may be called multiple times per MutatingAdmissionPolicyBinding
    +	// as part of a single admission evaluation.
    +	// Allowed values are "Never" and "IfNeeded".
    +	//
    +	// Never: These mutations will not be called more than once per binding in a single admission evaluation.
    +	//
    +	// IfNeeded: These mutations may be invoked more than once per binding for a single admission request and there is no guarantee of
    +	// order with respect to other admission plugins, admission webhooks, bindings of this policy and admission policies.  Mutations are only
    +	// reinvoked when mutations change the object after this mutation is invoked.
    +	// Required.
    +	ReinvocationPolicy ReinvocationPolicyType `json:"reinvocationPolicy,omitempty" protobuf:"bytes,7,opt,name=reinvocationPolicy,casttype=ReinvocationPolicyType"`
    +}
    +
    +// Mutation specifies the CEL expression which is used to apply the Mutation.
    +type Mutation struct {
    +	// patchType indicates the patch strategy used.
    +	// Allowed values are "ApplyConfiguration" and "JSONPatch".
    +	// Required.
    +	//
    +	// +unionDiscriminator
    +	PatchType PatchType `json:"patchType" protobuf:"bytes,2,opt,name=patchType,casttype=PatchType"`
    +
    +	// applyConfiguration defines the desired configuration values of an object.
    +	// The configuration is applied to the admission object using
    +	// [structured merge diff](https://github.com/kubernetes-sigs/structured-merge-diff).
    +	// A CEL expression is used to create apply configuration.
    +	ApplyConfiguration *ApplyConfiguration `json:"applyConfiguration,omitempty" protobuf:"bytes,3,opt,name=applyConfiguration"`
    +
    +	// jsonPatch defines a [JSON patch](https://jsonpatch.com/) operation to perform a mutation to the object.
    +	// A CEL expression is used to create the JSON patch.
    +	JSONPatch *JSONPatch `json:"jsonPatch,omitempty" protobuf:"bytes,4,opt,name=jsonPatch"`
    +}
    +
    +// PatchType specifies the type of patch operation for a mutation.
    +// +enum
    +type PatchType string
    +
    +const (
    +	// ApplyConfiguration indicates that the mutation is using apply configuration to mutate the object.
    +	PatchTypeApplyConfiguration PatchType = "ApplyConfiguration"
    +	// JSONPatch indicates that the object is mutated through JSON Patch.
    +	PatchTypeJSONPatch PatchType = "JSONPatch"
    +)
    +
    +// ApplyConfiguration defines the desired configuration values of an object.
    +type ApplyConfiguration struct {
    +	// expression will be evaluated by CEL to create an apply configuration.
    +	// ref: https://github.com/google/cel-spec
    +	//
    +	// Apply configurations are declared in CEL using object initialization. For example, this CEL expression
    +	// returns an apply configuration to set a single field:
    +	//
    +	//	Object{
    +	//	  spec: Object.spec{
    +	//	    serviceAccountName: "example"
    +	//	  }
    +	//	}
    +	//
    +	// Apply configurations may not modify atomic structs, maps or arrays due to the risk of accidental deletion of
    +	// values not included in the apply configuration.
    +	//
    +	// CEL expressions have access to the object types needed to create apply configurations:
    +	//
    +	// - 'Object' - CEL type of the resource object.
    +	// - 'Object.' - CEL type of object field (such as 'Object.spec')
    +	// - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers')
    +	//
    +	// CEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables:
    +	//
    +	// - 'object' - The object from the incoming request. The value is null for DELETE requests.
    +	// - 'oldObject' - The existing object. The value is null for CREATE requests.
    +	// - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)).
    +	// - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind.
    +	// - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources.
    +	// - 'variables' - Map of composited variables, from its name to its lazily evaluated value.
    +	//   For example, a variable named 'foo' can be accessed as 'variables.foo'.
    +	// - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.
    +	//   See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
    +	// - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the
    +	//   request resource.
    +	//
    +	// The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the
    +	// object. No other metadata properties are accessible.
    +	//
    +	// Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
    +	// Required.
    +	Expression string `json:"expression,omitempty" protobuf:"bytes,1,opt,name=expression"`
    +}
    +
    +// JSONPatch defines a JSON Patch.
    +type JSONPatch struct {
    +	// expression will be evaluated by CEL to create a [JSON patch](https://jsonpatch.com/).
    +	// ref: https://github.com/google/cel-spec
    +	//
    +	// expression must return an array of JSONPatch values.
    +	//
    +	// For example, this CEL expression returns a JSON patch to conditionally modify a value:
    +	//
    +	//	  [
    +	//	    JSONPatch{op: "test", path: "/spec/example", value: "Red"},
    +	//	    JSONPatch{op: "replace", path: "/spec/example", value: "Green"}
    +	//	  ]
    +	//
    +	// To define an object for the patch value, use Object types. For example:
    +	//
    +	//	  [
    +	//	    JSONPatch{
    +	//	      op: "add",
    +	//	      path: "/spec/selector",
    +	//	      value: Object.spec.selector{matchLabels: {"environment": "test"}}
    +	//	    }
    +	//	  ]
    +	//
    +	// To use strings containing '/' and '~' as JSONPatch path keys, use "jsonpatch.escapeKey". For example:
    +	//
    +	//	  [
    +	//	    JSONPatch{
    +	//	      op: "add",
    +	//	      path: "/metadata/labels/" + jsonpatch.escapeKey("example.com/environment"),
    +	//	      value: "test"
    +	//	    },
    +	//	  ]
    +	//
    +	// CEL expressions have access to the types needed to create JSON patches and objects:
    +	//
    +	// - 'JSONPatch' - CEL type of JSON Patch operations. JSONPatch has the fields 'op', 'from', 'path' and 'value'.
    +	//   See [JSON patch](https://jsonpatch.com/) for more details. The 'value' field may be set to any of: string,
    +	//   integer, array, map or object.  If set, the 'path' and 'from' fields must be set to a
    +	//   [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901/) string, where the 'jsonpatch.escapeKey()' CEL
    +	//   function may be used to escape path keys containing '/' and '~'.
    +	// - 'Object' - CEL type of the resource object.
    +	// - 'Object.' - CEL type of object field (such as 'Object.spec')
    +	// - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers')
    +	//
    +	// CEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables:
    +	//
    +	// - 'object' - The object from the incoming request. The value is null for DELETE requests.
    +	// - 'oldObject' - The existing object. The value is null for CREATE requests.
    +	// - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)).
    +	// - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind.
    +	// - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources.
    +	// - 'variables' - Map of composited variables, from its name to its lazily evaluated value.
    +	//   For example, a variable named 'foo' can be accessed as 'variables.foo'.
    +	// - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.
    +	//   See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz
    +	// - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the
    +	//   request resource.
    +	//
    +	// CEL expressions have access to [Kubernetes CEL function libraries](https://kubernetes.io/docs/reference/using-api/cel/#cel-options-language-features-and-libraries)
    +	// as well as:
    +	//
    +	// - 'jsonpatch.escapeKey' - Performs JSONPatch key escaping. '~' and  '/' are escaped as '~0' and `~1' respectively).
    +	//
    +	//
    +	// Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.
    +	// Required.
    +	Expression string `json:"expression,omitempty" protobuf:"bytes,1,opt,name=expression"`
    +}
    +
    +// +genclient
    +// +genclient:nonNamespaced
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.34
    +
    +// MutatingAdmissionPolicyBinding binds the MutatingAdmissionPolicy with parametrized resources.
    +// MutatingAdmissionPolicyBinding and the optional parameter resource together define how cluster administrators
    +// configure policies for clusters.
    +//
    +// For a given admission request, each binding will cause its policy to be
    +// evaluated N times, where N is 1 for policies/bindings that don't use
    +// params, otherwise N is the number of parameters selected by the binding.
    +// Each evaluation is constrained by a [runtime cost budget](https://kubernetes.io/docs/reference/using-api/cel/#runtime-cost-budget).
    +//
    +// Adding/removing policies, bindings, or params can not affect whether a
    +// given (policy, binding, param) combination is within its own CEL budget.
    +type MutatingAdmissionPolicyBinding struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// Specification of the desired behavior of the MutatingAdmissionPolicyBinding.
    +	Spec MutatingAdmissionPolicyBindingSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
    +}
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.34
    +
    +// MutatingAdmissionPolicyBindingList is a list of MutatingAdmissionPolicyBinding.
    +type MutatingAdmissionPolicyBindingList struct {
    +	metav1.TypeMeta `json:",inline"`
    +	// Standard list metadata.
    +	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +	// List of PolicyBinding.
    +	Items []MutatingAdmissionPolicyBinding `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    +
    +// MutatingAdmissionPolicyBindingSpec is the specification of the MutatingAdmissionPolicyBinding.
    +type MutatingAdmissionPolicyBindingSpec struct {
    +	// policyName references a MutatingAdmissionPolicy name which the MutatingAdmissionPolicyBinding binds to.
    +	// If the referenced resource does not exist, this binding is considered invalid and will be ignored
    +	// Required.
    +	PolicyName string `json:"policyName,omitempty" protobuf:"bytes,1,rep,name=policyName"`
    +
    +	// paramRef specifies the parameter resource used to configure the admission control policy.
    +	// It should point to a resource of the type specified in spec.ParamKind of the bound MutatingAdmissionPolicy.
    +	// If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the MutatingAdmissionPolicy applied.
    +	// If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.
    +	// +optional
    +	ParamRef *ParamRef `json:"paramRef,omitempty" protobuf:"bytes,2,rep,name=paramRef"`
    +
    +	// matchResources limits what resources match this binding and may be mutated by it.
    +	// Note that if matchResources matches a resource, the resource must also match a policy's matchConstraints and
    +	// matchConditions before the resource may be mutated.
    +	// When matchResources is unset, it does not constrain resource matching, and only the policy's matchConstraints
    +	// and matchConditions must match for the resource to be mutated.
    +	// Additionally, matchResources.resourceRules are optional and do not constraint matching when unset.
    +	// Note that this is differs from MutatingAdmissionPolicy matchConstraints, where resourceRules are required.
    +	// The CREATE, UPDATE and CONNECT operations are allowed.  The DELETE operation may not be matched.
    +	// '*' matches CREATE, UPDATE and CONNECT.
    +	// +optional
    +	MatchResources *MatchResources `json:"matchResources,omitempty" protobuf:"bytes,3,rep,name=matchResources"`
    +}
    diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go
    index cc1509b539..1a97c94729 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go
    @@ -27,6 +27,15 @@ package v1beta1
     // Those methods can be generated by using hack/update-codegen.sh
     
     // AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
    +var map_ApplyConfiguration = map[string]string{
    +	"":           "ApplyConfiguration defines the desired configuration values of an object.",
    +	"expression": "expression will be evaluated by CEL to create an apply configuration. ref: https://github.com/google/cel-spec\n\nApply configurations are declared in CEL using object initialization. For example, this CEL expression returns an apply configuration to set a single field:\n\n\tObject{\n\t  spec: Object.spec{\n\t    serviceAccountName: \"example\"\n\t  }\n\t}\n\nApply configurations may not modify atomic structs, maps or arrays due to the risk of accidental deletion of values not included in the apply configuration.\n\nCEL expressions have access to the object types needed to create apply configurations:\n\n- 'Object' - CEL type of the resource object. - 'Object.' - CEL type of object field (such as 'Object.spec') - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers')\n\nCEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables:\n\n- 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value.\n  For example, a variable named 'foo' can be accessed as 'variables.foo'.\n- 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\n  See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\n- 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\n  request resource.\n\nThe `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible.\n\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Required.",
    +}
    +
    +func (ApplyConfiguration) SwaggerDoc() map[string]string {
    +	return map_ApplyConfiguration
    +}
    +
     var map_AuditAnnotation = map[string]string{
     	"":                "AuditAnnotation describes how to produce an audit annotation for an API request.",
     	"key":             "key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length.\n\nThe key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: \"{ValidatingAdmissionPolicy name}/{key}\".\n\nIf an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded.\n\nRequired.",
    @@ -47,6 +56,15 @@ func (ExpressionWarning) SwaggerDoc() map[string]string {
     	return map_ExpressionWarning
     }
     
    +var map_JSONPatch = map[string]string{
    +	"":           "JSONPatch defines a JSON Patch.",
    +	"expression": "expression will be evaluated by CEL to create a [JSON patch](https://jsonpatch.com/). ref: https://github.com/google/cel-spec\n\nexpression must return an array of JSONPatch values.\n\nFor example, this CEL expression returns a JSON patch to conditionally modify a value:\n\n\t  [\n\t    JSONPatch{op: \"test\", path: \"/spec/example\", value: \"Red\"},\n\t    JSONPatch{op: \"replace\", path: \"/spec/example\", value: \"Green\"}\n\t  ]\n\nTo define an object for the patch value, use Object types. For example:\n\n\t  [\n\t    JSONPatch{\n\t      op: \"add\",\n\t      path: \"/spec/selector\",\n\t      value: Object.spec.selector{matchLabels: {\"environment\": \"test\"}}\n\t    }\n\t  ]\n\nTo use strings containing '/' and '~' as JSONPatch path keys, use \"jsonpatch.escapeKey\". For example:\n\n\t  [\n\t    JSONPatch{\n\t      op: \"add\",\n\t      path: \"/metadata/labels/\" + jsonpatch.escapeKey(\"example.com/environment\"),\n\t      value: \"test\"\n\t    },\n\t  ]\n\nCEL expressions have access to the types needed to create JSON patches and objects:\n\n- 'JSONPatch' - CEL type of JSON Patch operations. JSONPatch has the fields 'op', 'from', 'path' and 'value'.\n  See [JSON patch](https://jsonpatch.com/) for more details. The 'value' field may be set to any of: string,\n  integer, array, map or object.  If set, the 'path' and 'from' fields must be set to a\n  [JSON pointer](https://datatracker.ietf.org/doc/html/rfc6901/) string, where the 'jsonpatch.escapeKey()' CEL\n  function may be used to escape path keys containing '/' and '~'.\n- 'Object' - CEL type of the resource object. - 'Object.' - CEL type of object field (such as 'Object.spec') - 'Object.....` - CEL type of nested field (such as 'Object.spec.containers')\n\nCEL expressions have access to the contents of the API request, organized into CEL variables as well as some other useful variables:\n\n- 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value.\n  For example, a variable named 'foo' can be accessed as 'variables.foo'.\n- 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request.\n  See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz\n- 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the\n  request resource.\n\nCEL expressions have access to [Kubernetes CEL function libraries](https://kubernetes.io/docs/reference/using-api/cel/#cel-options-language-features-and-libraries) as well as:\n\n- 'jsonpatch.escapeKey' - Performs JSONPatch key escaping. '~' and  '/' are escaped as '~0' and `~1' respectively).\n\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Required.",
    +}
    +
    +func (JSONPatch) SwaggerDoc() map[string]string {
    +	return map_JSONPatch
    +}
    +
     var map_MatchCondition = map[string]string{
     	"":           "MatchCondition represents a condition which must be fulfilled for a request to be sent to a webhook.",
     	"name":       "Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName',  or 'my.name',  or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName')\n\nRequired.",
    @@ -70,6 +88,72 @@ func (MatchResources) SwaggerDoc() map[string]string {
     	return map_MatchResources
     }
     
    +var map_MutatingAdmissionPolicy = map[string]string{
    +	"":         "MutatingAdmissionPolicy describes the definition of an admission mutation policy that mutates the object coming into admission chain.",
    +	"metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.",
    +	"spec":     "Specification of the desired behavior of the MutatingAdmissionPolicy.",
    +}
    +
    +func (MutatingAdmissionPolicy) SwaggerDoc() map[string]string {
    +	return map_MutatingAdmissionPolicy
    +}
    +
    +var map_MutatingAdmissionPolicyBinding = map[string]string{
    +	"":         "MutatingAdmissionPolicyBinding binds the MutatingAdmissionPolicy with parametrized resources. MutatingAdmissionPolicyBinding and the optional parameter resource together define how cluster administrators configure policies for clusters.\n\nFor a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. Each evaluation is constrained by a [runtime cost budget](https://kubernetes.io/docs/reference/using-api/cel/#runtime-cost-budget).\n\nAdding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget.",
    +	"metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.",
    +	"spec":     "Specification of the desired behavior of the MutatingAdmissionPolicyBinding.",
    +}
    +
    +func (MutatingAdmissionPolicyBinding) SwaggerDoc() map[string]string {
    +	return map_MutatingAdmissionPolicyBinding
    +}
    +
    +var map_MutatingAdmissionPolicyBindingList = map[string]string{
    +	"":         "MutatingAdmissionPolicyBindingList is a list of MutatingAdmissionPolicyBinding.",
    +	"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
    +	"items":    "List of PolicyBinding.",
    +}
    +
    +func (MutatingAdmissionPolicyBindingList) SwaggerDoc() map[string]string {
    +	return map_MutatingAdmissionPolicyBindingList
    +}
    +
    +var map_MutatingAdmissionPolicyBindingSpec = map[string]string{
    +	"":               "MutatingAdmissionPolicyBindingSpec is the specification of the MutatingAdmissionPolicyBinding.",
    +	"policyName":     "policyName references a MutatingAdmissionPolicy name which the MutatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required.",
    +	"paramRef":       "paramRef specifies the parameter resource used to configure the admission control policy. It should point to a resource of the type specified in spec.ParamKind of the bound MutatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the MutatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param.",
    +	"matchResources": "matchResources limits what resources match this binding and may be mutated by it. Note that if matchResources matches a resource, the resource must also match a policy's matchConstraints and matchConditions before the resource may be mutated. When matchResources is unset, it does not constrain resource matching, and only the policy's matchConstraints and matchConditions must match for the resource to be mutated. Additionally, matchResources.resourceRules are optional and do not constraint matching when unset. Note that this is differs from MutatingAdmissionPolicy matchConstraints, where resourceRules are required. The CREATE, UPDATE and CONNECT operations are allowed.  The DELETE operation may not be matched. '*' matches CREATE, UPDATE and CONNECT.",
    +}
    +
    +func (MutatingAdmissionPolicyBindingSpec) SwaggerDoc() map[string]string {
    +	return map_MutatingAdmissionPolicyBindingSpec
    +}
    +
    +var map_MutatingAdmissionPolicyList = map[string]string{
    +	"":         "MutatingAdmissionPolicyList is a list of MutatingAdmissionPolicy.",
    +	"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
    +	"items":    "List of ValidatingAdmissionPolicy.",
    +}
    +
    +func (MutatingAdmissionPolicyList) SwaggerDoc() map[string]string {
    +	return map_MutatingAdmissionPolicyList
    +}
    +
    +var map_MutatingAdmissionPolicySpec = map[string]string{
    +	"":                   "MutatingAdmissionPolicySpec is the specification of the desired behavior of the admission policy.",
    +	"paramKind":          "paramKind specifies the kind of resources used to parameterize this policy. If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If paramKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in MutatingAdmissionPolicyBinding, the params variable will be null.",
    +	"matchConstraints":   "matchConstraints specifies what resources this policy is designed to validate. The MutatingAdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API MutatingAdmissionPolicy cannot match MutatingAdmissionPolicy and MutatingAdmissionPolicyBinding. The CREATE, UPDATE and CONNECT operations are allowed.  The DELETE operation may not be matched. '*' matches CREATE, UPDATE and CONNECT. Required.",
    +	"variables":          "variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except matchConditions because matchConditions are evaluated before the rest of the policy.\n\nThe expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, variables must be sorted by the order of first appearance and acyclic.",
    +	"mutations":          "mutations contain operations to perform on matching objects. mutations may not be empty; a minimum of one mutation is required. mutations are evaluated in order, and are reinvoked according to the reinvocationPolicy. The mutations of a policy are invoked for each binding of this policy and reinvocation of mutations occurs on a per binding basis.",
    +	"failurePolicy":      "failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings.\n\nA policy is invalid if paramKind refers to a non-existent Kind. A binding is invalid if paramRef.name refers to a non-existent resource.\n\nfailurePolicy does not define how validations that evaluate to false are handled.\n\nAllowed values are Ignore or Fail. Defaults to Fail.",
    +	"matchConditions":    "matchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the matchConstraints. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.\n\nIf a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions.\n\nThe exact matching logic is (in order):\n  1. If ANY matchCondition evaluates to FALSE, the policy is skipped.\n  2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.\n  3. If any matchCondition evaluates to an error (but none are FALSE):\n     - If failurePolicy=Fail, reject the request\n     - If failurePolicy=Ignore, the policy is skipped",
    +	"reinvocationPolicy": "reinvocationPolicy indicates whether mutations may be called multiple times per MutatingAdmissionPolicyBinding as part of a single admission evaluation. Allowed values are \"Never\" and \"IfNeeded\".\n\nNever: These mutations will not be called more than once per binding in a single admission evaluation.\n\nIfNeeded: These mutations may be invoked more than once per binding for a single admission request and there is no guarantee of order with respect to other admission plugins, admission webhooks, bindings of this policy and admission policies.  Mutations are only reinvoked when mutations change the object after this mutation is invoked. Required.",
    +}
    +
    +func (MutatingAdmissionPolicySpec) SwaggerDoc() map[string]string {
    +	return map_MutatingAdmissionPolicySpec
    +}
    +
     var map_MutatingWebhook = map[string]string{
     	"":                        "MutatingWebhook describes an admission webhook and the resources and operations it applies to.",
     	"name":                    "The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.",
    @@ -110,6 +194,17 @@ func (MutatingWebhookConfigurationList) SwaggerDoc() map[string]string {
     	return map_MutatingWebhookConfigurationList
     }
     
    +var map_Mutation = map[string]string{
    +	"":                   "Mutation specifies the CEL expression which is used to apply the Mutation.",
    +	"patchType":          "patchType indicates the patch strategy used. Allowed values are \"ApplyConfiguration\" and \"JSONPatch\". Required.",
    +	"applyConfiguration": "applyConfiguration defines the desired configuration values of an object. The configuration is applied to the admission object using [structured merge diff](https://github.com/kubernetes-sigs/structured-merge-diff). A CEL expression is used to create apply configuration.",
    +	"jsonPatch":          "jsonPatch defines a [JSON patch](https://jsonpatch.com/) operation to perform a mutation to the object. A CEL expression is used to create the JSON patch.",
    +}
    +
    +func (Mutation) SwaggerDoc() map[string]string {
    +	return map_Mutation
    +}
    +
     var map_NamedRuleWithOperations = map[string]string{
     	"":              "NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames.",
     	"resourceNames": "ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.",
    diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go
    index 4c10b1d113..3749a3d141 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go
    @@ -27,6 +27,22 @@ import (
     	runtime "k8s.io/apimachinery/pkg/runtime"
     )
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ApplyConfiguration) DeepCopyInto(out *ApplyConfiguration) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ApplyConfiguration.
    +func (in *ApplyConfiguration) DeepCopy() *ApplyConfiguration {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ApplyConfiguration)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *AuditAnnotation) DeepCopyInto(out *AuditAnnotation) {
     	*out = *in
    @@ -59,6 +75,22 @@ func (in *ExpressionWarning) DeepCopy() *ExpressionWarning {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *JSONPatch) DeepCopyInto(out *JSONPatch) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JSONPatch.
    +func (in *JSONPatch) DeepCopy() *JSONPatch {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(JSONPatch)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *MatchCondition) DeepCopyInto(out *MatchCondition) {
     	*out = *in
    @@ -120,6 +152,200 @@ func (in *MatchResources) DeepCopy() *MatchResources {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *MutatingAdmissionPolicy) DeepCopyInto(out *MutatingAdmissionPolicy) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingAdmissionPolicy.
    +func (in *MutatingAdmissionPolicy) DeepCopy() *MutatingAdmissionPolicy {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MutatingAdmissionPolicy)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *MutatingAdmissionPolicy) DeepCopyObject() runtime.Object {
    +	if c := in.DeepCopy(); c != nil {
    +		return c
    +	}
    +	return nil
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *MutatingAdmissionPolicyBinding) DeepCopyInto(out *MutatingAdmissionPolicyBinding) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingAdmissionPolicyBinding.
    +func (in *MutatingAdmissionPolicyBinding) DeepCopy() *MutatingAdmissionPolicyBinding {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MutatingAdmissionPolicyBinding)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *MutatingAdmissionPolicyBinding) DeepCopyObject() runtime.Object {
    +	if c := in.DeepCopy(); c != nil {
    +		return c
    +	}
    +	return nil
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *MutatingAdmissionPolicyBindingList) DeepCopyInto(out *MutatingAdmissionPolicyBindingList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]MutatingAdmissionPolicyBinding, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingAdmissionPolicyBindingList.
    +func (in *MutatingAdmissionPolicyBindingList) DeepCopy() *MutatingAdmissionPolicyBindingList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MutatingAdmissionPolicyBindingList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *MutatingAdmissionPolicyBindingList) DeepCopyObject() runtime.Object {
    +	if c := in.DeepCopy(); c != nil {
    +		return c
    +	}
    +	return nil
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *MutatingAdmissionPolicyBindingSpec) DeepCopyInto(out *MutatingAdmissionPolicyBindingSpec) {
    +	*out = *in
    +	if in.ParamRef != nil {
    +		in, out := &in.ParamRef, &out.ParamRef
    +		*out = new(ParamRef)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.MatchResources != nil {
    +		in, out := &in.MatchResources, &out.MatchResources
    +		*out = new(MatchResources)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingAdmissionPolicyBindingSpec.
    +func (in *MutatingAdmissionPolicyBindingSpec) DeepCopy() *MutatingAdmissionPolicyBindingSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MutatingAdmissionPolicyBindingSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *MutatingAdmissionPolicyList) DeepCopyInto(out *MutatingAdmissionPolicyList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]MutatingAdmissionPolicy, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingAdmissionPolicyList.
    +func (in *MutatingAdmissionPolicyList) DeepCopy() *MutatingAdmissionPolicyList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MutatingAdmissionPolicyList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *MutatingAdmissionPolicyList) DeepCopyObject() runtime.Object {
    +	if c := in.DeepCopy(); c != nil {
    +		return c
    +	}
    +	return nil
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *MutatingAdmissionPolicySpec) DeepCopyInto(out *MutatingAdmissionPolicySpec) {
    +	*out = *in
    +	if in.ParamKind != nil {
    +		in, out := &in.ParamKind, &out.ParamKind
    +		*out = new(ParamKind)
    +		**out = **in
    +	}
    +	if in.MatchConstraints != nil {
    +		in, out := &in.MatchConstraints, &out.MatchConstraints
    +		*out = new(MatchResources)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	if in.Variables != nil {
    +		in, out := &in.Variables, &out.Variables
    +		*out = make([]Variable, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.Mutations != nil {
    +		in, out := &in.Mutations, &out.Mutations
    +		*out = make([]Mutation, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.FailurePolicy != nil {
    +		in, out := &in.FailurePolicy, &out.FailurePolicy
    +		*out = new(FailurePolicyType)
    +		**out = **in
    +	}
    +	if in.MatchConditions != nil {
    +		in, out := &in.MatchConditions, &out.MatchConditions
    +		*out = make([]MatchCondition, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MutatingAdmissionPolicySpec.
    +func (in *MutatingAdmissionPolicySpec) DeepCopy() *MutatingAdmissionPolicySpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(MutatingAdmissionPolicySpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *MutatingWebhook) DeepCopyInto(out *MutatingWebhook) {
     	*out = *in
    @@ -168,7 +394,7 @@ func (in *MutatingWebhook) DeepCopyInto(out *MutatingWebhook) {
     	}
     	if in.ReinvocationPolicy != nil {
     		in, out := &in.ReinvocationPolicy, &out.ReinvocationPolicy
    -		*out = new(ReinvocationPolicyType)
    +		*out = new(admissionregistrationv1.ReinvocationPolicyType)
     		**out = **in
     	}
     	if in.MatchConditions != nil {
    @@ -255,6 +481,32 @@ func (in *MutatingWebhookConfigurationList) DeepCopyObject() runtime.Object {
     	return nil
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *Mutation) DeepCopyInto(out *Mutation) {
    +	*out = *in
    +	if in.ApplyConfiguration != nil {
    +		in, out := &in.ApplyConfiguration, &out.ApplyConfiguration
    +		*out = new(ApplyConfiguration)
    +		**out = **in
    +	}
    +	if in.JSONPatch != nil {
    +		in, out := &in.JSONPatch, &out.JSONPatch
    +		*out = new(JSONPatch)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Mutation.
    +func (in *Mutation) DeepCopy() *Mutation {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(Mutation)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *NamedRuleWithOperations) DeepCopyInto(out *NamedRuleWithOperations) {
     	*out = *in
    diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.prerelease-lifecycle.go
    index c1be5122a8..4fc0596b34 100644
    --- a/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.prerelease-lifecycle.go
    +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.prerelease-lifecycle.go
    @@ -25,6 +25,78 @@ import (
     	schema "k8s.io/apimachinery/pkg/runtime/schema"
     )
     
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *MutatingAdmissionPolicy) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *MutatingAdmissionPolicy) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *MutatingAdmissionPolicy) APILifecycleRemoved() (major, minor int) {
    +	return 1, 40
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *MutatingAdmissionPolicyBinding) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *MutatingAdmissionPolicyBinding) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *MutatingAdmissionPolicyBinding) APILifecycleRemoved() (major, minor int) {
    +	return 1, 40
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *MutatingAdmissionPolicyBindingList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *MutatingAdmissionPolicyBindingList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *MutatingAdmissionPolicyBindingList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 40
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *MutatingAdmissionPolicyList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *MutatingAdmissionPolicyList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *MutatingAdmissionPolicyList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 40
    +}
    +
     // APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
     // It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
     func (in *MutatingWebhookConfiguration) APILifecycleIntroduced() (major, minor int) {
    diff --git a/vendor/k8s.io/api/apps/v1/generated.proto b/vendor/k8s.io/api/apps/v1/generated.proto
    index 38c8997e99..5885a62225 100644
    --- a/vendor/k8s.io/api/apps/v1/generated.proto
    +++ b/vendor/k8s.io/api/apps/v1/generated.proto
    @@ -530,7 +530,7 @@ message RollingUpdateDaemonSet {
       // pod is available (Ready for at least minReadySeconds) the old DaemonSet pod
       // on that node is marked deleted. If the old pod becomes unavailable for any
       // reason (Ready transitions to false, is evicted, or is drained) an updated
    -  // pod is immediatedly created on that node without considering surge limits.
    +  // pod is immediately created on that node without considering surge limits.
       // Allowing surge implies the possibility that the resources consumed by the
       // daemonset on any given node can double if the readiness check fails, and
       // so resource intensive daemonsets should take into account that they may
    diff --git a/vendor/k8s.io/api/apps/v1/types.go b/vendor/k8s.io/api/apps/v1/types.go
    index 1362d875d8..4cf54cc99b 100644
    --- a/vendor/k8s.io/api/apps/v1/types.go
    +++ b/vendor/k8s.io/api/apps/v1/types.go
    @@ -635,7 +635,7 @@ type RollingUpdateDaemonSet struct {
     	// pod is available (Ready for at least minReadySeconds) the old DaemonSet pod
     	// on that node is marked deleted. If the old pod becomes unavailable for any
     	// reason (Ready transitions to false, is evicted, or is drained) an updated
    -	// pod is immediatedly created on that node without considering surge limits.
    +	// pod is immediately created on that node without considering surge limits.
     	// Allowing surge implies the possibility that the resources consumed by the
     	// daemonset on any given node can double if the readiness check fails, and
     	// so resource intensive daemonsets should take into account that they may
    diff --git a/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go
    index f44ba7bc33..ac54033fd6 100644
    --- a/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go
    @@ -265,7 +265,7 @@ func (ReplicaSetStatus) SwaggerDoc() map[string]string {
     var map_RollingUpdateDaemonSet = map[string]string{
     	"":               "Spec to control the desired behavior of daemon set rolling update.",
     	"maxUnavailable": "The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0 if MaxSurge is 0 Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update.",
    -	"maxSurge":       "The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption.",
    +	"maxSurge":       "The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediately created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption.",
     }
     
     func (RollingUpdateDaemonSet) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/apps/v1beta1/generated.proto b/vendor/k8s.io/api/apps/v1beta1/generated.proto
    index 0601efc3c4..b61dc490db 100644
    --- a/vendor/k8s.io/api/apps/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/apps/v1beta1/generated.proto
    @@ -316,6 +316,9 @@ message Scale {
     message ScaleSpec {
       // replicas is the number of observed instances of the scaled object.
       // +optional
    +  // +k8s:optional
    +  // +default=0
    +  // +k8s:minimum=0
       optional int32 replicas = 1;
     }
     
    diff --git a/vendor/k8s.io/api/apps/v1beta1/types.go b/vendor/k8s.io/api/apps/v1beta1/types.go
    index 5530c990da..cd140be12f 100644
    --- a/vendor/k8s.io/api/apps/v1beta1/types.go
    +++ b/vendor/k8s.io/api/apps/v1beta1/types.go
    @@ -33,6 +33,9 @@ const (
     type ScaleSpec struct {
     	// replicas is the number of observed instances of the scaled object.
     	// +optional
    +	// +k8s:optional
    +	// +default=0
    +	// +k8s:minimum=0
     	Replicas int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"`
     }
     
    @@ -60,6 +63,7 @@ type ScaleStatus struct {
     // +k8s:prerelease-lifecycle-gen:deprecated=1.8
     // +k8s:prerelease-lifecycle-gen:removed=1.16
     // +k8s:prerelease-lifecycle-gen:replacement=autoscaling,v1,Scale
    +// +k8s:isSubresource=/scale
     
     // Scale represents a scaling request for a resource.
     type Scale struct {
    diff --git a/vendor/k8s.io/api/apps/v1beta2/generated.proto b/vendor/k8s.io/api/apps/v1beta2/generated.proto
    index 68c463e257..37c6d5ae1b 100644
    --- a/vendor/k8s.io/api/apps/v1beta2/generated.proto
    +++ b/vendor/k8s.io/api/apps/v1beta2/generated.proto
    @@ -536,7 +536,7 @@ message RollingUpdateDaemonSet {
       // pod is available (Ready for at least minReadySeconds) the old DaemonSet pod
       // on that node is marked deleted. If the old pod becomes unavailable for any
       // reason (Ready transitions to false, is evicted, or is drained) an updated
    -  // pod is immediatedly created on that node without considering surge limits.
    +  // pod is immediately created on that node without considering surge limits.
       // Allowing surge implies the possibility that the resources consumed by the
       // daemonset on any given node can double if the readiness check fails, and
       // so resource intensive daemonsets should take into account that they may
    @@ -614,6 +614,9 @@ message Scale {
     message ScaleSpec {
       // desired number of instances for the scaled object.
       // +optional
    +  // +k8s:optional
    +  // +default=0
    +  // +k8s:minimum=0
       optional int32 replicas = 1;
     }
     
    diff --git a/vendor/k8s.io/api/apps/v1beta2/types.go b/vendor/k8s.io/api/apps/v1beta2/types.go
    index 491afc59f5..e9dc85df05 100644
    --- a/vendor/k8s.io/api/apps/v1beta2/types.go
    +++ b/vendor/k8s.io/api/apps/v1beta2/types.go
    @@ -35,6 +35,9 @@ const (
     type ScaleSpec struct {
     	// desired number of instances for the scaled object.
     	// +optional
    +	// +k8s:optional
    +	// +default=0
    +	// +k8s:minimum=0
     	Replicas int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"`
     }
     
    @@ -63,6 +66,7 @@ type ScaleStatus struct {
     // +k8s:prerelease-lifecycle-gen:deprecated=1.9
     // +k8s:prerelease-lifecycle-gen:removed=1.16
     // +k8s:prerelease-lifecycle-gen:replacement=autoscaling,v1,Scale
    +// +k8s:isSubresource=/scale
     
     // Scale represents a scaling request for a resource.
     type Scale struct {
    @@ -681,7 +685,7 @@ type RollingUpdateDaemonSet struct {
     	// pod is available (Ready for at least minReadySeconds) the old DaemonSet pod
     	// on that node is marked deleted. If the old pod becomes unavailable for any
     	// reason (Ready transitions to false, is evicted, or is drained) an updated
    -	// pod is immediatedly created on that node without considering surge limits.
    +	// pod is immediately created on that node without considering surge limits.
     	// Allowing surge implies the possibility that the resources consumed by the
     	// daemonset on any given node can double if the readiness check fails, and
     	// so resource intensive daemonsets should take into account that they may
    diff --git a/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go b/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go
    index 4089434151..34d80af58d 100644
    --- a/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go
    @@ -265,7 +265,7 @@ func (ReplicaSetStatus) SwaggerDoc() map[string]string {
     var map_RollingUpdateDaemonSet = map[string]string{
     	"":               "Spec to control the desired behavior of daemon set rolling update.",
     	"maxUnavailable": "The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0 if MaxSurge is 0 Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update.",
    -	"maxSurge":       "The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption.",
    +	"maxSurge":       "The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediately created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption.",
     }
     
     func (RollingUpdateDaemonSet) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/authorization/v1/generated.proto b/vendor/k8s.io/api/authorization/v1/generated.proto
    index 37b05b8552..ff529c969e 100644
    --- a/vendor/k8s.io/api/authorization/v1/generated.proto
    +++ b/vendor/k8s.io/api/authorization/v1/generated.proto
    @@ -167,16 +167,10 @@ message ResourceAttributes {
       optional string name = 7;
     
       // fieldSelector describes the limitation on access based on field.  It can only limit access, not broaden it.
    -  //
    -  // This field  is alpha-level. To use this field, you must enable the
    -  // `AuthorizeWithSelectors` feature gate (disabled by default).
       // +optional
       optional FieldSelectorAttributes fieldSelector = 8;
     
       // labelSelector describes the limitation on access based on labels.  It can only limit access, not broaden it.
    -  //
    -  // This field  is alpha-level. To use this field, you must enable the
    -  // `AuthorizeWithSelectors` feature gate (disabled by default).
       // +optional
       optional LabelSelectorAttributes labelSelector = 9;
     }
    diff --git a/vendor/k8s.io/api/authorization/v1/types.go b/vendor/k8s.io/api/authorization/v1/types.go
    index 36f5fa4107..251e776b02 100644
    --- a/vendor/k8s.io/api/authorization/v1/types.go
    +++ b/vendor/k8s.io/api/authorization/v1/types.go
    @@ -119,15 +119,9 @@ type ResourceAttributes struct {
     	// +optional
     	Name string `json:"name,omitempty" protobuf:"bytes,7,opt,name=name"`
     	// fieldSelector describes the limitation on access based on field.  It can only limit access, not broaden it.
    -	//
    -	// This field  is alpha-level. To use this field, you must enable the
    -	// `AuthorizeWithSelectors` feature gate (disabled by default).
     	// +optional
     	FieldSelector *FieldSelectorAttributes `json:"fieldSelector,omitempty" protobuf:"bytes,8,opt,name=fieldSelector"`
     	// labelSelector describes the limitation on access based on labels.  It can only limit access, not broaden it.
    -	//
    -	// This field  is alpha-level. To use this field, you must enable the
    -	// `AuthorizeWithSelectors` feature gate (disabled by default).
     	// +optional
     	LabelSelector *LabelSelectorAttributes `json:"labelSelector,omitempty" protobuf:"bytes,9,opt,name=labelSelector"`
     }
    diff --git a/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go
    index dc6b8a89ec..29d0aa8463 100644
    --- a/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/authorization/v1/types_swagger_doc_generated.go
    @@ -87,8 +87,8 @@ var map_ResourceAttributes = map[string]string{
     	"resource":      "Resource is one of the existing resource types.  \"*\" means all.",
     	"subresource":   "Subresource is one of the existing resource types.  \"\" means none.",
     	"name":          "Name is the name of the resource being requested for a \"get\" or deleted for a \"delete\". \"\" (empty) means all.",
    -	"fieldSelector": "fieldSelector describes the limitation on access based on field.  It can only limit access, not broaden it.\n\nThis field  is alpha-level. To use this field, you must enable the `AuthorizeWithSelectors` feature gate (disabled by default).",
    -	"labelSelector": "labelSelector describes the limitation on access based on labels.  It can only limit access, not broaden it.\n\nThis field  is alpha-level. To use this field, you must enable the `AuthorizeWithSelectors` feature gate (disabled by default).",
    +	"fieldSelector": "fieldSelector describes the limitation on access based on field.  It can only limit access, not broaden it.",
    +	"labelSelector": "labelSelector describes the limitation on access based on labels.  It can only limit access, not broaden it.",
     }
     
     func (ResourceAttributes) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/autoscaling/v1/generated.proto b/vendor/k8s.io/api/autoscaling/v1/generated.proto
    index 68c35b6b22..a17d7989db 100644
    --- a/vendor/k8s.io/api/autoscaling/v1/generated.proto
    +++ b/vendor/k8s.io/api/autoscaling/v1/generated.proto
    @@ -472,6 +472,9 @@ message Scale {
     message ScaleSpec {
       // replicas is the desired number of instances for the scaled object.
       // +optional
    +  // +k8s:optional
    +  // +default=0
    +  // +k8s:minimum=0
       optional int32 replicas = 1;
     }
     
    diff --git a/vendor/k8s.io/api/autoscaling/v1/types.go b/vendor/k8s.io/api/autoscaling/v1/types.go
    index 85c609e5c7..e1e8809fe9 100644
    --- a/vendor/k8s.io/api/autoscaling/v1/types.go
    +++ b/vendor/k8s.io/api/autoscaling/v1/types.go
    @@ -117,6 +117,7 @@ type HorizontalPodAutoscalerList struct {
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
     // +k8s:prerelease-lifecycle-gen:introduced=1.2
    +// +k8s:isSubresource=/scale
     
     // Scale represents a scaling request for a resource.
     type Scale struct {
    @@ -138,6 +139,9 @@ type Scale struct {
     type ScaleSpec struct {
     	// replicas is the desired number of instances for the scaled object.
     	// +optional
    +	// +k8s:optional
    +	// +default=0
    +	// +k8s:minimum=0
     	Replicas int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"`
     }
     
    diff --git a/vendor/k8s.io/api/batch/v1/generated.proto b/vendor/k8s.io/api/batch/v1/generated.proto
    index d3aeae0adb..c0ce8cef26 100644
    --- a/vendor/k8s.io/api/batch/v1/generated.proto
    +++ b/vendor/k8s.io/api/batch/v1/generated.proto
    @@ -226,7 +226,8 @@ message JobSpec {
       optional SuccessPolicy successPolicy = 16;
     
       // Specifies the number of retries before marking this job failed.
    -  // Defaults to 6
    +  // Defaults to 6, unless backoffLimitPerIndex (only Indexed Job) is specified.
    +  // When backoffLimitPerIndex is specified, backoffLimit defaults to 2147483647.
       // +optional
       optional int32 backoffLimit = 7;
     
    @@ -329,8 +330,6 @@ message JobSpec {
       //
       // When using podFailurePolicy, Failed is the the only allowed value.
       // TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use.
    -  // This is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle.
    -  // This is on by default.
       // +optional
       optional string podReplacementPolicy = 14;
     
    @@ -570,7 +569,7 @@ message PodFailurePolicyRule {
     message SuccessPolicy {
       // rules represents the list of alternative rules for the declaring the Jobs
       // as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met,
    -  // the "SucceededCriteriaMet" condition is added, and the lingering pods are removed.
    +  // the "SuccessCriteriaMet" condition is added, and the lingering pods are removed.
       // The terminal state for such a Job has the "Complete" condition.
       // Additionally, these rules are evaluated in order; Once the Job meets one of the rules,
       // other rules are ignored. At most 20 elements are allowed.
    diff --git a/vendor/k8s.io/api/batch/v1/types.go b/vendor/k8s.io/api/batch/v1/types.go
    index 6c0007c21e..9183c073d2 100644
    --- a/vendor/k8s.io/api/batch/v1/types.go
    +++ b/vendor/k8s.io/api/batch/v1/types.go
    @@ -257,7 +257,7 @@ type PodFailurePolicy struct {
     type SuccessPolicy struct {
     	// rules represents the list of alternative rules for the declaring the Jobs
     	// as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met,
    -	// the "SucceededCriteriaMet" condition is added, and the lingering pods are removed.
    +	// the "SuccessCriteriaMet" condition is added, and the lingering pods are removed.
     	// The terminal state for such a Job has the "Complete" condition.
     	// Additionally, these rules are evaluated in order; Once the Job meets one of the rules,
     	// other rules are ignored. At most 20 elements are allowed.
    @@ -347,7 +347,8 @@ type JobSpec struct {
     	SuccessPolicy *SuccessPolicy `json:"successPolicy,omitempty" protobuf:"bytes,16,opt,name=successPolicy"`
     
     	// Specifies the number of retries before marking this job failed.
    -	// Defaults to 6
    +	// Defaults to 6, unless backoffLimitPerIndex (only Indexed Job) is specified.
    +	// When backoffLimitPerIndex is specified, backoffLimit defaults to 2147483647.
     	// +optional
     	BackoffLimit *int32 `json:"backoffLimit,omitempty" protobuf:"varint,7,opt,name=backoffLimit"`
     
    @@ -455,8 +456,6 @@ type JobSpec struct {
     	//
     	// When using podFailurePolicy, Failed is the the only allowed value.
     	// TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use.
    -	// This is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle.
    -	// This is on by default.
     	// +optional
     	PodReplacementPolicy *PodReplacementPolicy `json:"podReplacementPolicy,omitempty" protobuf:"bytes,14,opt,name=podReplacementPolicy,casttype=podReplacementPolicy"`
     
    diff --git a/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go
    index ffd4e4f5fe..451f4609f2 100644
    --- a/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go
    @@ -117,7 +117,7 @@ var map_JobSpec = map[string]string{
     	"activeDeadlineSeconds":   "Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.",
     	"podFailurePolicy":        "Specifies the policy of handling failed pods. In particular, it allows to specify the set of actions and conditions which need to be satisfied to take the associated action. If empty, the default behaviour applies - the counter of failed pods, represented by the jobs's .status.failed field, is incremented and it is checked against the backoffLimit. This field cannot be used in combination with restartPolicy=OnFailure.",
     	"successPolicy":           "successPolicy specifies the policy when the Job can be declared as succeeded. If empty, the default behavior applies - the Job is declared as succeeded only when the number of succeeded pods equals to the completions. When the field is specified, it must be immutable and works only for the Indexed Jobs. Once the Job meets the SuccessPolicy, the lingering pods are terminated.",
    -	"backoffLimit":            "Specifies the number of retries before marking this job failed. Defaults to 6",
    +	"backoffLimit":            "Specifies the number of retries before marking this job failed. Defaults to 6, unless backoffLimitPerIndex (only Indexed Job) is specified. When backoffLimitPerIndex is specified, backoffLimit defaults to 2147483647.",
     	"backoffLimitPerIndex":    "Specifies the limit for the number of retries within an index before marking this index as failed. When enabled the number of failures per index is kept in the pod's batch.kubernetes.io/job-index-failure-count annotation. It can only be set when Job's completionMode=Indexed, and the Pod's restart policy is Never. The field is immutable.",
     	"maxFailedIndexes":        "Specifies the maximal number of failed indexes before marking the Job as failed, when backoffLimitPerIndex is set. Once the number of failed indexes exceeds this number the entire Job is marked as Failed and its execution is terminated. When left as null the job continues execution of all of its indexes and is marked with the `Complete` Job condition. It can only be specified when backoffLimitPerIndex is set. It can be null or up to completions. It is required and must be less than or equal to 10^4 when is completions greater than 10^5.",
     	"selector":                "A label query over pods that should match the pod count. Normally, the system sets this field for you. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors",
    @@ -126,7 +126,7 @@ var map_JobSpec = map[string]string{
     	"ttlSecondsAfterFinished": "ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is unset, the Job won't be automatically deleted. If this field is set to zero, the Job becomes eligible to be deleted immediately after it finishes.",
     	"completionMode":          "completionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`.\n\n`NonIndexed` means that the Job is considered complete when there have been .spec.completions successfully completed Pods. Each Pod completion is homologous to each other.\n\n`Indexed` means that the Pods of a Job get an associated completion index from 0 to (.spec.completions - 1), available in the annotation batch.kubernetes.io/job-completion-index. The Job is considered complete when there is one successfully completed Pod for each index. When value is `Indexed`, .spec.completions must be specified and `.spec.parallelism` must be less than or equal to 10^5. In addition, The Pod name takes the form `$(job-name)-$(index)-$(random-string)`, the Pod hostname takes the form `$(job-name)-$(index)`.\n\nMore completion modes can be added in the future. If the Job controller observes a mode that it doesn't recognize, which is possible during upgrades due to version skew, the controller skips updates for the Job.",
     	"suspend":                 "suspend specifies whether the Job controller should create Pods or not. If a Job is created with suspend set to true, no Pods are created by the Job controller. If a Job is suspended after creation (i.e. the flag goes from false to true), the Job controller will delete all active Pods associated with this Job. Users must design their workload to gracefully handle this. Suspending a Job will reset the StartTime field of the Job, effectively resetting the ActiveDeadlineSeconds timer too. Defaults to false.",
    -	"podReplacementPolicy":    "podReplacementPolicy specifies when to create replacement Pods. Possible values are: - TerminatingOrFailed means that we recreate pods\n  when they are terminating (has a metadata.deletionTimestamp) or failed.\n- Failed means to wait until a previously created Pod is fully terminated (has phase\n  Failed or Succeeded) before creating a replacement Pod.\n\nWhen using podFailurePolicy, Failed is the the only allowed value. TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use. This is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle. This is on by default.",
    +	"podReplacementPolicy":    "podReplacementPolicy specifies when to create replacement Pods. Possible values are: - TerminatingOrFailed means that we recreate pods\n  when they are terminating (has a metadata.deletionTimestamp) or failed.\n- Failed means to wait until a previously created Pod is fully terminated (has phase\n  Failed or Succeeded) before creating a replacement Pod.\n\nWhen using podFailurePolicy, Failed is the the only allowed value. TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use.",
     	"managedBy":               "ManagedBy field indicates the controller that manages a Job. The k8s Job controller reconciles jobs which don't have this field at all or the field value is the reserved string `kubernetes.io/job-controller`, but skips reconciling Jobs with a custom value for this field. The value must be a valid domain-prefixed path (e.g. acme.io/foo) - all characters before the first \"/\" must be a valid subdomain as defined by RFC 1123. All characters trailing the first \"/\" must be valid HTTP Path characters as defined by RFC 3986. The value cannot exceed 63 characters. This field is immutable.\n\nThis field is beta-level. The job controller accepts setting the field when the feature gate JobManagedBy is enabled (enabled by default).",
     }
     
    @@ -206,7 +206,7 @@ func (PodFailurePolicyRule) SwaggerDoc() map[string]string {
     
     var map_SuccessPolicy = map[string]string{
     	"":      "SuccessPolicy describes when a Job can be declared as succeeded based on the success of some indexes.",
    -	"rules": "rules represents the list of alternative rules for the declaring the Jobs as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met, the \"SucceededCriteriaMet\" condition is added, and the lingering pods are removed. The terminal state for such a Job has the \"Complete\" condition. Additionally, these rules are evaluated in order; Once the Job meets one of the rules, other rules are ignored. At most 20 elements are allowed.",
    +	"rules": "rules represents the list of alternative rules for the declaring the Jobs as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met, the \"SuccessCriteriaMet\" condition is added, and the lingering pods are removed. The terminal state for such a Job has the \"Complete\" condition. Additionally, these rules are evaluated in order; Once the Job meets one of the rules, other rules are ignored. At most 20 elements are allowed.",
     }
     
     func (SuccessPolicy) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/certificates/v1/generated.proto b/vendor/k8s.io/api/certificates/v1/generated.proto
    index dac7c7f5f2..24528fc8bc 100644
    --- a/vendor/k8s.io/api/certificates/v1/generated.proto
    +++ b/vendor/k8s.io/api/certificates/v1/generated.proto
    @@ -39,6 +39,8 @@ option go_package = "k8s.io/api/certificates/v1";
     // This API can be used to request client certificates to authenticate to kube-apiserver
     // (with the "kubernetes.io/kube-apiserver-client" signerName),
     // or to obtain certificates from custom non-Kubernetes signers.
    +// +k8s:supportsSubresource=/status
    +// +k8s:supportsSubresource=/approval
     message CertificateSigningRequest {
       // +optional
       optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    @@ -203,6 +205,11 @@ message CertificateSigningRequestStatus {
       // +listType=map
       // +listMapKey=type
       // +optional
    +  // +k8s:listType=map
    +  // +k8s:listMapKey=type
    +  // +k8s:optional
    +  // +k8s:item(type: "Approved")=+k8s:zeroOrOneOfMember
    +  // +k8s:item(type: "Denied")=+k8s:zeroOrOneOfMember
       repeated CertificateSigningRequestCondition conditions = 1;
     
       // certificate is populated with an issued certificate by the signer after an Approved condition is present.
    diff --git a/vendor/k8s.io/api/certificates/v1/types.go b/vendor/k8s.io/api/certificates/v1/types.go
    index ba8009840d..71203e80d5 100644
    --- a/vendor/k8s.io/api/certificates/v1/types.go
    +++ b/vendor/k8s.io/api/certificates/v1/types.go
    @@ -39,6 +39,8 @@ import (
     // This API can be used to request client certificates to authenticate to kube-apiserver
     // (with the "kubernetes.io/kube-apiserver-client" signerName),
     // or to obtain certificates from custom non-Kubernetes signers.
    +// +k8s:supportsSubresource=/status
    +// +k8s:supportsSubresource=/approval
     type CertificateSigningRequest struct {
     	metav1.TypeMeta `json:",inline"`
     	// +optional
    @@ -178,6 +180,11 @@ type CertificateSigningRequestStatus struct {
     	// +listType=map
     	// +listMapKey=type
     	// +optional
    +	// +k8s:listType=map
    +	// +k8s:listMapKey=type
    +	// +k8s:optional
    +	// +k8s:item(type: "Approved")=+k8s:zeroOrOneOfMember
    +	// +k8s:item(type: "Denied")=+k8s:zeroOrOneOfMember
     	Conditions []CertificateSigningRequestCondition `json:"conditions,omitempty" protobuf:"bytes,1,rep,name=conditions"`
     
     	// certificate is populated with an issued certificate by the signer after an Approved condition is present.
    diff --git a/vendor/k8s.io/api/certificates/v1alpha1/generated.pb.go b/vendor/k8s.io/api/certificates/v1alpha1/generated.pb.go
    index a62a400596..c260f0436d 100644
    --- a/vendor/k8s.io/api/certificates/v1alpha1/generated.pb.go
    +++ b/vendor/k8s.io/api/certificates/v1alpha1/generated.pb.go
    @@ -25,11 +25,14 @@ import (
     	io "io"
     
     	proto "github.com/gogo/protobuf/proto"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     
     	math "math"
     	math_bits "math/bits"
     	reflect "reflect"
     	strings "strings"
    +
    +	k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
     )
     
     // Reference imports to suppress errors if they are not otherwise used.
    @@ -127,10 +130,126 @@ func (m *ClusterTrustBundleSpec) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_ClusterTrustBundleSpec proto.InternalMessageInfo
     
    +func (m *PodCertificateRequest) Reset()      { *m = PodCertificateRequest{} }
    +func (*PodCertificateRequest) ProtoMessage() {}
    +func (*PodCertificateRequest) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f73d5fe56c015bb8, []int{3}
    +}
    +func (m *PodCertificateRequest) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *PodCertificateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *PodCertificateRequest) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_PodCertificateRequest.Merge(m, src)
    +}
    +func (m *PodCertificateRequest) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *PodCertificateRequest) XXX_DiscardUnknown() {
    +	xxx_messageInfo_PodCertificateRequest.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_PodCertificateRequest proto.InternalMessageInfo
    +
    +func (m *PodCertificateRequestList) Reset()      { *m = PodCertificateRequestList{} }
    +func (*PodCertificateRequestList) ProtoMessage() {}
    +func (*PodCertificateRequestList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f73d5fe56c015bb8, []int{4}
    +}
    +func (m *PodCertificateRequestList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *PodCertificateRequestList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *PodCertificateRequestList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_PodCertificateRequestList.Merge(m, src)
    +}
    +func (m *PodCertificateRequestList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *PodCertificateRequestList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_PodCertificateRequestList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_PodCertificateRequestList proto.InternalMessageInfo
    +
    +func (m *PodCertificateRequestSpec) Reset()      { *m = PodCertificateRequestSpec{} }
    +func (*PodCertificateRequestSpec) ProtoMessage() {}
    +func (*PodCertificateRequestSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f73d5fe56c015bb8, []int{5}
    +}
    +func (m *PodCertificateRequestSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *PodCertificateRequestSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *PodCertificateRequestSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_PodCertificateRequestSpec.Merge(m, src)
    +}
    +func (m *PodCertificateRequestSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *PodCertificateRequestSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_PodCertificateRequestSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_PodCertificateRequestSpec proto.InternalMessageInfo
    +
    +func (m *PodCertificateRequestStatus) Reset()      { *m = PodCertificateRequestStatus{} }
    +func (*PodCertificateRequestStatus) ProtoMessage() {}
    +func (*PodCertificateRequestStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f73d5fe56c015bb8, []int{6}
    +}
    +func (m *PodCertificateRequestStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *PodCertificateRequestStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *PodCertificateRequestStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_PodCertificateRequestStatus.Merge(m, src)
    +}
    +func (m *PodCertificateRequestStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *PodCertificateRequestStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_PodCertificateRequestStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_PodCertificateRequestStatus proto.InternalMessageInfo
    +
     func init() {
     	proto.RegisterType((*ClusterTrustBundle)(nil), "k8s.io.api.certificates.v1alpha1.ClusterTrustBundle")
     	proto.RegisterType((*ClusterTrustBundleList)(nil), "k8s.io.api.certificates.v1alpha1.ClusterTrustBundleList")
     	proto.RegisterType((*ClusterTrustBundleSpec)(nil), "k8s.io.api.certificates.v1alpha1.ClusterTrustBundleSpec")
    +	proto.RegisterType((*PodCertificateRequest)(nil), "k8s.io.api.certificates.v1alpha1.PodCertificateRequest")
    +	proto.RegisterType((*PodCertificateRequestList)(nil), "k8s.io.api.certificates.v1alpha1.PodCertificateRequestList")
    +	proto.RegisterType((*PodCertificateRequestSpec)(nil), "k8s.io.api.certificates.v1alpha1.PodCertificateRequestSpec")
    +	proto.RegisterType((*PodCertificateRequestStatus)(nil), "k8s.io.api.certificates.v1alpha1.PodCertificateRequestStatus")
     }
     
     func init() {
    @@ -138,35 +257,65 @@ func init() {
     }
     
     var fileDescriptor_f73d5fe56c015bb8 = []byte{
    -	// 437 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xcf, 0x6a, 0xdb, 0x40,
    -	0x10, 0xc6, 0xb5, 0x69, 0x02, 0xc9, 0xba, 0x85, 0xa2, 0x42, 0x31, 0x3e, 0x6c, 0x8c, 0x4f, 0xb9,
    -	0x74, 0x37, 0x36, 0x69, 0xc9, 0x59, 0x85, 0x42, 0xa1, 0x7f, 0x40, 0xe9, 0xa5, 0xa1, 0x87, 0xae,
    -	0xd7, 0x13, 0x79, 0x6b, 0x4b, 0x5a, 0x76, 0x57, 0x86, 0xde, 0x0a, 0x7d, 0x81, 0x3e, 0x96, 0x8f,
    -	0x69, 0x4f, 0x39, 0x85, 0x5a, 0x7d, 0x91, 0xb2, 0x6b, 0xd9, 0x12, 0x55, 0x8b, 0x4b, 0x6e, 0x9a,
    -	0xd1, 0xfc, 0xbe, 0x6f, 0xbe, 0x11, 0xc2, 0xa7, 0xb3, 0x73, 0x43, 0x65, 0xce, 0xb8, 0x92, 0x4c,
    -	0x80, 0xb6, 0xf2, 0x4a, 0x0a, 0x6e, 0xc1, 0xb0, 0xc5, 0x90, 0xcf, 0xd5, 0x94, 0x0f, 0x59, 0x02,
    -	0x19, 0x68, 0x6e, 0x61, 0x42, 0x95, 0xce, 0x6d, 0x1e, 0xf6, 0xd7, 0x04, 0xe5, 0x4a, 0xd2, 0x26,
    -	0x41, 0x37, 0x44, 0xef, 0x49, 0x22, 0xed, 0xb4, 0x18, 0x53, 0x91, 0xa7, 0x2c, 0xc9, 0x93, 0x9c,
    -	0x79, 0x70, 0x5c, 0x5c, 0xf9, 0xca, 0x17, 0xfe, 0x69, 0x2d, 0xd8, 0x3b, 0xab, 0x57, 0x48, 0xb9,
    -	0x98, 0xca, 0x0c, 0xf4, 0x67, 0xa6, 0x66, 0x89, 0x6b, 0x18, 0x96, 0x82, 0xe5, 0x6c, 0xd1, 0x5a,
    -	0xa3, 0xc7, 0xfe, 0x45, 0xe9, 0x22, 0xb3, 0x32, 0x85, 0x16, 0xf0, 0x6c, 0x17, 0x60, 0xc4, 0x14,
    -	0x52, 0xfe, 0x27, 0x37, 0xf8, 0x81, 0x70, 0xf8, 0x7c, 0x5e, 0x18, 0x0b, 0xfa, 0x9d, 0x2e, 0x8c,
    -	0x8d, 0x8a, 0x6c, 0x32, 0x87, 0xf0, 0x23, 0x3e, 0x74, 0xab, 0x4d, 0xb8, 0xe5, 0x5d, 0xd4, 0x47,
    -	0x27, 0x9d, 0xd1, 0x29, 0xad, 0x2f, 0xb3, 0x75, 0xa0, 0x6a, 0x96, 0xb8, 0x86, 0xa1, 0x6e, 0x9a,
    -	0x2e, 0x86, 0xf4, 0xed, 0xf8, 0x13, 0x08, 0xfb, 0x1a, 0x2c, 0x8f, 0xc2, 0xe5, 0xed, 0x71, 0x50,
    -	0xde, 0x1e, 0xe3, 0xba, 0x17, 0x6f, 0x55, 0xc3, 0x4b, 0xbc, 0x6f, 0x14, 0x88, 0xee, 0x9e, 0x57,
    -	0x3f, 0xa7, 0xbb, 0xee, 0x4e, 0xdb, 0x5b, 0x5e, 0x28, 0x10, 0xd1, 0xfd, 0xca, 0x65, 0xdf, 0x55,
    -	0xb1, 0xd7, 0x1c, 0x7c, 0x47, 0xf8, 0x71, 0x7b, 0xfc, 0x95, 0x34, 0x36, 0xfc, 0xd0, 0x0a, 0x46,
    -	0xff, 0x2f, 0x98, 0xa3, 0x7d, 0xac, 0x87, 0x95, 0xe1, 0xe1, 0xa6, 0xd3, 0x08, 0xf5, 0x1e, 0x1f,
    -	0x48, 0x0b, 0xa9, 0xe9, 0xee, 0xf5, 0xef, 0x9d, 0x74, 0x46, 0x67, 0x77, 0x49, 0x15, 0x3d, 0xa8,
    -	0x0c, 0x0e, 0x5e, 0x3a, 0xa9, 0x78, 0xad, 0x38, 0xf8, 0xfa, 0xd7, 0x4c, 0x2e, 0x74, 0x38, 0xc2,
    -	0xd8, 0xc8, 0x24, 0x03, 0xfd, 0x86, 0xa7, 0xe0, 0x53, 0x1d, 0xd5, 0xc7, 0xbf, 0xd8, 0xbe, 0x89,
    -	0x1b, 0x53, 0xe1, 0x53, 0xdc, 0xb1, 0xb5, 0x8c, 0xff, 0x0a, 0x47, 0xd1, 0xa3, 0x0a, 0xea, 0x34,
    -	0x1c, 0xe2, 0xe6, 0x5c, 0xf4, 0x62, 0xb9, 0x22, 0xc1, 0xf5, 0x8a, 0x04, 0x37, 0x2b, 0x12, 0x7c,
    -	0x29, 0x09, 0x5a, 0x96, 0x04, 0x5d, 0x97, 0x04, 0xdd, 0x94, 0x04, 0xfd, 0x2c, 0x09, 0xfa, 0xf6,
    -	0x8b, 0x04, 0x97, 0xfd, 0x5d, 0xbf, 0xdd, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd4, 0x1c, 0xcb,
    -	0xdd, 0x99, 0x03, 0x00, 0x00,
    +	// 918 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x96, 0xcf, 0x6f, 0xe3, 0x44,
    +	0x14, 0xc7, 0xe3, 0xb6, 0x69, 0x9b, 0x49, 0x5b, 0xda, 0x61, 0x17, 0x99, 0x22, 0x39, 0x21, 0x07,
    +	0x54, 0x90, 0xb0, 0xb7, 0xa5, 0xb0, 0x2b, 0x10, 0x48, 0x75, 0x0a, 0x52, 0xe9, 0x6e, 0x36, 0x9a,
    +	0x74, 0xf9, 0xb1, 0x5a, 0x24, 0x1c, 0xe7, 0x25, 0x19, 0x1a, 0x7b, 0x8c, 0x67, 0x5c, 0xb5, 0x37,
    +	0x24, 0xfe, 0x01, 0xfe, 0x23, 0xae, 0x3d, 0x2e, 0x5c, 0xd8, 0x53, 0xa0, 0xe6, 0x6f, 0xe0, 0xb2,
    +	0x27, 0xe4, 0xb1, 0x9d, 0x5f, 0x4e, 0xb6, 0xd9, 0x1e, 0x7a, 0xcb, 0xbc, 0x79, 0xdf, 0xcf, 0xfb,
    +	0xbe, 0x99, 0x37, 0x56, 0xd0, 0xbd, 0xd3, 0x07, 0x5c, 0xa7, 0xcc, 0xb0, 0x3c, 0x6a, 0xd8, 0xe0,
    +	0x0b, 0xda, 0xa6, 0xb6, 0x25, 0x80, 0x1b, 0x67, 0xbb, 0x56, 0xcf, 0xeb, 0x5a, 0xbb, 0x46, 0x07,
    +	0x5c, 0xf0, 0x2d, 0x01, 0x2d, 0xdd, 0xf3, 0x99, 0x60, 0xb8, 0x1c, 0x2b, 0x74, 0xcb, 0xa3, 0xfa,
    +	0xa8, 0x42, 0x4f, 0x15, 0xdb, 0x1f, 0x76, 0xa8, 0xe8, 0x06, 0x4d, 0xdd, 0x66, 0x8e, 0xd1, 0x61,
    +	0x1d, 0x66, 0x48, 0x61, 0x33, 0x68, 0xcb, 0x95, 0x5c, 0xc8, 0x5f, 0x31, 0x70, 0x7b, 0x7f, 0x68,
    +	0xc1, 0xb1, 0xec, 0x2e, 0x75, 0xc1, 0xbf, 0x30, 0xbc, 0xd3, 0x4e, 0x14, 0xe0, 0x86, 0x03, 0xc2,
    +	0x32, 0xce, 0x32, 0x36, 0xb6, 0x8d, 0x59, 0x2a, 0x3f, 0x70, 0x05, 0x75, 0x20, 0x23, 0xf8, 0xe4,
    +	0x3a, 0x01, 0xb7, 0xbb, 0xe0, 0x58, 0x93, 0xba, 0xca, 0x9f, 0x0a, 0xc2, 0xd5, 0x5e, 0xc0, 0x05,
    +	0xf8, 0x27, 0x7e, 0xc0, 0x85, 0x19, 0xb8, 0xad, 0x1e, 0xe0, 0x1f, 0xd1, 0x6a, 0x64, 0xad, 0x65,
    +	0x09, 0x4b, 0x55, 0xca, 0xca, 0x4e, 0x71, 0xef, 0x9e, 0x3e, 0x3c, 0x99, 0x41, 0x05, 0xdd, 0x3b,
    +	0xed, 0x44, 0x01, 0xae, 0x47, 0xd9, 0xfa, 0xd9, 0xae, 0xfe, 0xb8, 0xf9, 0x13, 0xd8, 0xe2, 0x11,
    +	0x08, 0xcb, 0xc4, 0x97, 0xfd, 0x52, 0x2e, 0xec, 0x97, 0xd0, 0x30, 0x46, 0x06, 0x54, 0xfc, 0x14,
    +	0x2d, 0x71, 0x0f, 0x6c, 0x75, 0x41, 0xd2, 0x1f, 0xe8, 0xd7, 0x9d, 0xbb, 0x9e, 0x75, 0xd9, 0xf0,
    +	0xc0, 0x36, 0xd7, 0x92, 0x2a, 0x4b, 0xd1, 0x8a, 0x48, 0x66, 0xe5, 0x0f, 0x05, 0xbd, 0x95, 0x4d,
    +	0x7f, 0x48, 0xb9, 0xc0, 0xcf, 0x32, 0x8d, 0xe9, 0xf3, 0x35, 0x16, 0xa9, 0x65, 0x5b, 0x9b, 0x49,
    +	0xc1, 0xd5, 0x34, 0x32, 0xd2, 0xd4, 0xf7, 0x28, 0x4f, 0x05, 0x38, 0x5c, 0x5d, 0x28, 0x2f, 0xee,
    +	0x14, 0xf7, 0xf6, 0x6f, 0xd2, 0x95, 0xb9, 0x9e, 0x14, 0xc8, 0x1f, 0x45, 0x28, 0x12, 0x13, 0x2b,
    +	0xbf, 0x4e, 0xed, 0x29, 0x6a, 0x1a, 0xef, 0x21, 0xc4, 0x69, 0xc7, 0x05, 0xbf, 0x66, 0x39, 0x20,
    +	0xbb, 0x2a, 0x0c, 0x0f, 0xbf, 0x31, 0xd8, 0x21, 0x23, 0x59, 0xf8, 0x63, 0x54, 0x14, 0x43, 0x8c,
    +	0xbc, 0x85, 0x82, 0xf9, 0x66, 0x22, 0x2a, 0x8e, 0x54, 0x20, 0xa3, 0x79, 0x95, 0xdf, 0x17, 0xd0,
    +	0xdd, 0x3a, 0x6b, 0x55, 0x87, 0xbd, 0x10, 0xf8, 0x39, 0x00, 0x2e, 0x6e, 0x61, 0x62, 0x7e, 0x18,
    +	0x9b, 0x98, 0xcf, 0xae, 0x3f, 0xdb, 0xa9, 0x46, 0x67, 0x0d, 0x0d, 0x06, 0xb4, 0xcc, 0x85, 0x25,
    +	0x02, 0xae, 0x2e, 0xca, 0x02, 0x9f, 0xdf, 0xb4, 0x80, 0x84, 0x98, 0x1b, 0x49, 0x89, 0xe5, 0x78,
    +	0x4d, 0x12, 0x78, 0xe5, 0x2f, 0x05, 0xbd, 0x3d, 0x55, 0x77, 0x0b, 0xe3, 0xf9, 0x6c, 0x7c, 0x3c,
    +	0xef, 0xdf, 0xb0, 0xc3, 0x19, 0x13, 0xfa, 0x5f, 0x7e, 0x46, 0x67, 0x37, 0x1e, 0xd2, 0xf7, 0xd1,
    +	0x8a, 0xc7, 0x5a, 0x52, 0x10, 0x0f, 0xe8, 0x1b, 0x89, 0x60, 0xa5, 0x1e, 0x87, 0x49, 0xba, 0x8f,
    +	0x8f, 0xd1, 0xb2, 0xc7, 0x5a, 0x4f, 0x8e, 0x0e, 0xe5, 0xed, 0x15, 0xcc, 0x8f, 0xd2, 0xe3, 0xaf,
    +	0xcb, 0xe8, 0xcb, 0x7e, 0xe9, 0xdd, 0x59, 0x5f, 0x48, 0x71, 0xe1, 0x01, 0xd7, 0x9f, 0x1c, 0x1d,
    +	0x92, 0x04, 0x81, 0xbf, 0x46, 0x98, 0x83, 0x7f, 0x46, 0x6d, 0x38, 0xb0, 0x6d, 0x16, 0xb8, 0x42,
    +	0x5a, 0x58, 0x92, 0xe0, 0xed, 0x04, 0x8c, 0x1b, 0x99, 0x0c, 0x32, 0x45, 0x85, 0x7b, 0x68, 0x6b,
    +	0x3c, 0x1a, 0x79, 0xcc, 0x4b, 0xd4, 0x17, 0x09, 0x6a, 0xab, 0x31, 0x99, 0x30, 0x9f, 0xdd, 0x2c,
    +	0x18, 0x7f, 0x83, 0x56, 0x5d, 0xd6, 0x02, 0xe9, 0x77, 0x59, 0x16, 0xf9, 0x34, 0x9d, 0x87, 0x5a,
    +	0x12, 0x7f, 0xd9, 0x2f, 0xbd, 0xf7, 0x6a, 0x76, 0x9a, 0x49, 0x06, 0x2c, 0x5c, 0x43, 0x2b, 0xd1,
    +	0xef, 0xc8, 0xfb, 0x8a, 0xc4, 0xee, 0xa7, 0x37, 0x51, 0x8b, 0xc3, 0xf3, 0x39, 0x4e, 0x21, 0xf8,
    +	0x21, 0xba, 0xe3, 0x58, 0xe7, 0x5f, 0x9e, 0x7b, 0xd4, 0xb7, 0x04, 0x65, 0x6e, 0x03, 0x6c, 0xe6,
    +	0xb6, 0xb8, 0xba, 0x5a, 0x56, 0x76, 0xf2, 0xa6, 0x1a, 0xf6, 0x4b, 0x77, 0x1e, 0x4d, 0xd9, 0x27,
    +	0x53, 0x55, 0xf8, 0x3e, 0x5a, 0xf7, 0x4e, 0xe9, 0x79, 0x3d, 0x68, 0xf6, 0xa8, 0x7d, 0x0c, 0x17,
    +	0x6a, 0xa1, 0xac, 0xec, 0xac, 0x99, 0x5b, 0x61, 0xbf, 0xb4, 0x5e, 0x3f, 0x3e, 0xfa, 0x6e, 0xb0,
    +	0x41, 0xc6, 0xf3, 0x70, 0x15, 0x6d, 0x79, 0x3e, 0x63, 0xed, 0xc7, 0xed, 0x3a, 0xe3, 0x1c, 0x38,
    +	0xa7, 0xcc, 0x55, 0x91, 0x14, 0xdf, 0x8d, 0x2e, 0xa6, 0x3e, 0xb9, 0x49, 0xb2, 0xf9, 0x95, 0xbf,
    +	0x17, 0xd1, 0x3b, 0xaf, 0xf8, 0x12, 0x60, 0x1b, 0xa1, 0xc8, 0x26, 0x8d, 0x1c, 0x73, 0x55, 0x91,
    +	0x4f, 0xcf, 0x98, 0xef, 0x55, 0x57, 0x53, 0xdd, 0xf0, 0xa9, 0x0c, 0x42, 0x9c, 0x8c, 0x60, 0xf1,
    +	0x21, 0xda, 0x1c, 0x79, 0xc1, 0xd5, 0xae, 0x45, 0xdd, 0xe4, 0xcd, 0xa8, 0x89, 0x72, 0xb3, 0x3a,
    +	0xb1, 0x4f, 0x32, 0x0a, 0xfc, 0x2d, 0x2a, 0xb8, 0x4c, 0x98, 0xd0, 0x66, 0x7e, 0x3c, 0xef, 0xc5,
    +	0xbd, 0x0f, 0xe6, 0x73, 0x7a, 0x42, 0x1d, 0x30, 0xd7, 0xc3, 0x7e, 0xa9, 0x50, 0x4b, 0x01, 0x64,
    +	0xc8, 0xc2, 0x6d, 0xb4, 0xd1, 0x84, 0x0e, 0x75, 0x09, 0xb4, 0x7d, 0xe0, 0xdd, 0x03, 0x21, 0x9f,
    +	0xc0, 0xeb, 0xd1, 0x71, 0xd8, 0x2f, 0x6d, 0x98, 0x63, 0x14, 0x32, 0x41, 0xc5, 0x27, 0xd1, 0xfc,
    +	0x8b, 0x83, 0xb6, 0x00, 0x5f, 0xce, 0xff, 0xeb, 0x55, 0x58, 0x8b, 0xdf, 0x49, 0xac, 0x27, 0x03,
    +	0x92, 0xf9, 0xd5, 0xe5, 0x95, 0x96, 0x7b, 0x7e, 0xa5, 0xe5, 0x5e, 0x5c, 0x69, 0xb9, 0x5f, 0x42,
    +	0x4d, 0xb9, 0x0c, 0x35, 0xe5, 0x79, 0xa8, 0x29, 0x2f, 0x42, 0x4d, 0xf9, 0x27, 0xd4, 0x94, 0xdf,
    +	0xfe, 0xd5, 0x72, 0x4f, 0xcb, 0xd7, 0xfd, 0xd9, 0xfc, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x6c,
    +	0x5a, 0xc4, 0x8f, 0x0a, 0x00, 0x00,
     }
     
     func (m *ClusterTrustBundle) Marshal() (dAtA []byte, err error) {
    @@ -292,6 +441,261 @@ func (m *ClusterTrustBundleSpec) MarshalToSizedBuffer(dAtA []byte) (int, error)
     	return len(dAtA) - i, nil
     }
     
    +func (m *PodCertificateRequest) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *PodCertificateRequest) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *PodCertificateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x1a
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *PodCertificateRequestList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *PodCertificateRequestList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *PodCertificateRequestList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *PodCertificateRequestSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *PodCertificateRequestSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *PodCertificateRequestSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.ProofOfPossession != nil {
    +		i -= len(m.ProofOfPossession)
    +		copy(dAtA[i:], m.ProofOfPossession)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(m.ProofOfPossession)))
    +		i--
    +		dAtA[i] = 0x52
    +	}
    +	if m.PKIXPublicKey != nil {
    +		i -= len(m.PKIXPublicKey)
    +		copy(dAtA[i:], m.PKIXPublicKey)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(m.PKIXPublicKey)))
    +		i--
    +		dAtA[i] = 0x4a
    +	}
    +	if m.MaxExpirationSeconds != nil {
    +		i = encodeVarintGenerated(dAtA, i, uint64(*m.MaxExpirationSeconds))
    +		i--
    +		dAtA[i] = 0x40
    +	}
    +	i -= len(m.NodeUID)
    +	copy(dAtA[i:], m.NodeUID)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.NodeUID)))
    +	i--
    +	dAtA[i] = 0x3a
    +	i -= len(m.NodeName)
    +	copy(dAtA[i:], m.NodeName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.NodeName)))
    +	i--
    +	dAtA[i] = 0x32
    +	i -= len(m.ServiceAccountUID)
    +	copy(dAtA[i:], m.ServiceAccountUID)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ServiceAccountUID)))
    +	i--
    +	dAtA[i] = 0x2a
    +	i -= len(m.ServiceAccountName)
    +	copy(dAtA[i:], m.ServiceAccountName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ServiceAccountName)))
    +	i--
    +	dAtA[i] = 0x22
    +	i -= len(m.PodUID)
    +	copy(dAtA[i:], m.PodUID)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.PodUID)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.PodName)
    +	copy(dAtA[i:], m.PodName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.PodName)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.SignerName)
    +	copy(dAtA[i:], m.SignerName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.SignerName)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *PodCertificateRequestStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *PodCertificateRequestStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *PodCertificateRequestStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.NotAfter != nil {
    +		{
    +			size, err := m.NotAfter.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x32
    +	}
    +	if m.BeginRefreshAt != nil {
    +		{
    +			size, err := m.BeginRefreshAt.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x2a
    +	}
    +	if m.NotBefore != nil {
    +		{
    +			size, err := m.NotBefore.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	i -= len(m.CertificateChain)
    +	copy(dAtA[i:], m.CertificateChain)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.CertificateChain)))
    +	i--
    +	dAtA[i] = 0x12
    +	if len(m.Conditions) > 0 {
    +		for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
     func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
     	offset -= sovGenerated(v)
     	base := offset
    @@ -346,25 +750,120 @@ func (m *ClusterTrustBundleSpec) Size() (n int) {
     	return n
     }
     
    -func sovGenerated(x uint64) (n int) {
    -	return (math_bits.Len64(x|1) + 6) / 7
    -}
    -func sozGenerated(x uint64) (n int) {
    -	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    -}
    -func (this *ClusterTrustBundle) String() string {
    -	if this == nil {
    -		return "nil"
    +func (m *PodCertificateRequest) Size() (n int) {
    +	if m == nil {
    +		return 0
     	}
    -	s := strings.Join([]string{`&ClusterTrustBundle{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ClusterTrustBundleSpec", "ClusterTrustBundleSpec", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ClusterTrustBundleList) String() string {
    -	if this == nil {
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Status.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *PodCertificateRequestList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *PodCertificateRequestSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.SignerName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.PodName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.PodUID)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.ServiceAccountName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.ServiceAccountUID)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.NodeName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.NodeUID)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.MaxExpirationSeconds != nil {
    +		n += 1 + sovGenerated(uint64(*m.MaxExpirationSeconds))
    +	}
    +	if m.PKIXPublicKey != nil {
    +		l = len(m.PKIXPublicKey)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.ProofOfPossession != nil {
    +		l = len(m.ProofOfPossession)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *PodCertificateRequestStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Conditions) > 0 {
    +		for _, e := range m.Conditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = len(m.CertificateChain)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.NotBefore != nil {
    +		l = m.NotBefore.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.BeginRefreshAt != nil {
    +		l = m.BeginRefreshAt.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.NotAfter != nil {
    +		l = m.NotAfter.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func sovGenerated(x uint64) (n int) {
    +	return (math_bits.Len64(x|1) + 6) / 7
    +}
    +func sozGenerated(x uint64) (n int) {
    +	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +}
    +func (this *ClusterTrustBundle) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ClusterTrustBundle{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ClusterTrustBundleSpec", "ClusterTrustBundleSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ClusterTrustBundleList) String() string {
    +	if this == nil {
     		return "nil"
     	}
     	repeatedStringForItems := "[]ClusterTrustBundle{"
    @@ -390,6 +889,72 @@ func (this *ClusterTrustBundleSpec) String() string {
     	}, "")
     	return s
     }
    +func (this *PodCertificateRequest) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&PodCertificateRequest{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PodCertificateRequestSpec", "PodCertificateRequestSpec", 1), `&`, ``, 1) + `,`,
    +		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "PodCertificateRequestStatus", "PodCertificateRequestStatus", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *PodCertificateRequestList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]PodCertificateRequest{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "PodCertificateRequest", "PodCertificateRequest", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&PodCertificateRequestList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *PodCertificateRequestSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&PodCertificateRequestSpec{`,
    +		`SignerName:` + fmt.Sprintf("%v", this.SignerName) + `,`,
    +		`PodName:` + fmt.Sprintf("%v", this.PodName) + `,`,
    +		`PodUID:` + fmt.Sprintf("%v", this.PodUID) + `,`,
    +		`ServiceAccountName:` + fmt.Sprintf("%v", this.ServiceAccountName) + `,`,
    +		`ServiceAccountUID:` + fmt.Sprintf("%v", this.ServiceAccountUID) + `,`,
    +		`NodeName:` + fmt.Sprintf("%v", this.NodeName) + `,`,
    +		`NodeUID:` + fmt.Sprintf("%v", this.NodeUID) + `,`,
    +		`MaxExpirationSeconds:` + valueToStringGenerated(this.MaxExpirationSeconds) + `,`,
    +		`PKIXPublicKey:` + valueToStringGenerated(this.PKIXPublicKey) + `,`,
    +		`ProofOfPossession:` + valueToStringGenerated(this.ProofOfPossession) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *PodCertificateRequestStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForConditions := "[]Condition{"
    +	for _, f := range this.Conditions {
    +		repeatedStringForConditions += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForConditions += "}"
    +	s := strings.Join([]string{`&PodCertificateRequestStatus{`,
    +		`Conditions:` + repeatedStringForConditions + `,`,
    +		`CertificateChain:` + fmt.Sprintf("%v", this.CertificateChain) + `,`,
    +		`NotBefore:` + strings.Replace(fmt.Sprintf("%v", this.NotBefore), "Time", "v1.Time", 1) + `,`,
    +		`BeginRefreshAt:` + strings.Replace(fmt.Sprintf("%v", this.BeginRefreshAt), "Time", "v1.Time", 1) + `,`,
    +		`NotAfter:` + strings.Replace(fmt.Sprintf("%v", this.NotAfter), "Time", "v1.Time", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func valueToStringGenerated(v interface{}) string {
     	rv := reflect.ValueOf(v)
     	if rv.IsNil() {
    @@ -745,6 +1310,858 @@ func (m *ClusterTrustBundleSpec) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    +func (m *PodCertificateRequest) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: PodCertificateRequest: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: PodCertificateRequest: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *PodCertificateRequestList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: PodCertificateRequestList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: PodCertificateRequestList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, PodCertificateRequest{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *PodCertificateRequestSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: PodCertificateRequestSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: PodCertificateRequestSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SignerName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.SignerName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PodName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.PodName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PodUID", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.PodUID = k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ServiceAccountName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountUID", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ServiceAccountUID = k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.NodeName = k8s_io_apimachinery_pkg_types.NodeName(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeUID", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.NodeUID = k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 8:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MaxExpirationSeconds", wireType)
    +			}
    +			var v int32
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int32(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.MaxExpirationSeconds = &v
    +		case 9:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PKIXPublicKey", wireType)
    +			}
    +			var byteLen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				byteLen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if byteLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + byteLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.PKIXPublicKey = append(m.PKIXPublicKey[:0], dAtA[iNdEx:postIndex]...)
    +			if m.PKIXPublicKey == nil {
    +				m.PKIXPublicKey = []byte{}
    +			}
    +			iNdEx = postIndex
    +		case 10:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ProofOfPossession", wireType)
    +			}
    +			var byteLen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				byteLen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if byteLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + byteLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ProofOfPossession = append(m.ProofOfPossession[:0], dAtA[iNdEx:postIndex]...)
    +			if m.ProofOfPossession == nil {
    +				m.ProofOfPossession = []byte{}
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *PodCertificateRequestStatus) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: PodCertificateRequestStatus: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: PodCertificateRequestStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Conditions = append(m.Conditions, v1.Condition{})
    +			if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field CertificateChain", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.CertificateChain = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NotBefore", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NotBefore == nil {
    +				m.NotBefore = &v1.Time{}
    +			}
    +			if err := m.NotBefore.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field BeginRefreshAt", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.BeginRefreshAt == nil {
    +				m.BeginRefreshAt = &v1.Time{}
    +			}
    +			if err := m.BeginRefreshAt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NotAfter", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NotAfter == nil {
    +				m.NotAfter = &v1.Time{}
    +			}
    +			if err := m.NotAfter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
     func skipGenerated(dAtA []byte) (n int, err error) {
     	l := len(dAtA)
     	iNdEx := 0
    diff --git a/vendor/k8s.io/api/certificates/v1alpha1/generated.proto b/vendor/k8s.io/api/certificates/v1alpha1/generated.proto
    index 7155f778cf..194bdbc14f 100644
    --- a/vendor/k8s.io/api/certificates/v1alpha1/generated.proto
    +++ b/vendor/k8s.io/api/certificates/v1alpha1/generated.proto
    @@ -101,3 +101,208 @@ message ClusterTrustBundleSpec {
       optional string trustBundle = 2;
     }
     
    +// PodCertificateRequest encodes a pod requesting a certificate from a given
    +// signer.
    +//
    +// Kubelets use this API to implement podCertificate projected volumes
    +message PodCertificateRequest {
    +  // metadata contains the object metadata.
    +  //
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    +
    +  // spec contains the details about the certificate being requested.
    +  optional PodCertificateRequestSpec spec = 2;
    +
    +  // status contains the issued certificate, and a standard set of conditions.
    +  // +optional
    +  optional PodCertificateRequestStatus status = 3;
    +}
    +
    +// PodCertificateRequestList is a collection of PodCertificateRequest objects
    +message PodCertificateRequestList {
    +  // metadata contains the list metadata.
    +  //
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    +
    +  // items is a collection of PodCertificateRequest objects
    +  repeated PodCertificateRequest items = 2;
    +}
    +
    +// PodCertificateRequestSpec describes the certificate request.  All fields are
    +// immutable after creation.
    +message PodCertificateRequestSpec {
    +  // signerName indicates the requested signer.
    +  //
    +  // All signer names beginning with `kubernetes.io` are reserved for use by
    +  // the Kubernetes project.  There is currently one well-known signer
    +  // documented by the Kubernetes project,
    +  // `kubernetes.io/kube-apiserver-client-pod`, which will issue client
    +  // certificates understood by kube-apiserver.  It is currently
    +  // unimplemented.
    +  //
    +  // +required
    +  optional string signerName = 1;
    +
    +  // podName is the name of the pod into which the certificate will be mounted.
    +  //
    +  // +required
    +  optional string podName = 2;
    +
    +  // podUID is the UID of the pod into which the certificate will be mounted.
    +  //
    +  // +required
    +  optional string podUID = 3;
    +
    +  // serviceAccountName is the name of the service account the pod is running as.
    +  //
    +  // +required
    +  optional string serviceAccountName = 4;
    +
    +  // serviceAccountUID is the UID of the service account the pod is running as.
    +  //
    +  // +required
    +  optional string serviceAccountUID = 5;
    +
    +  // nodeName is the name of the node the pod is assigned to.
    +  //
    +  // +required
    +  optional string nodeName = 6;
    +
    +  // nodeUID is the UID of the node the pod is assigned to.
    +  //
    +  // +required
    +  optional string nodeUID = 7;
    +
    +  // maxExpirationSeconds is the maximum lifetime permitted for the
    +  // certificate.
    +  //
    +  // If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver
    +  // will reject values shorter than 3600 (1 hour).  The maximum allowable
    +  // value is 7862400 (91 days).
    +  //
    +  // The signer implementation is then free to issue a certificate with any
    +  // lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600
    +  // seconds (1 hour).  This constraint is enforced by kube-apiserver.
    +  // `kubernetes.io` signers will never issue certificates with a lifetime
    +  // longer than 24 hours.
    +  //
    +  // +optional
    +  // +default=86400
    +  optional int32 maxExpirationSeconds = 8;
    +
    +  // pkixPublicKey is the PKIX-serialized public key the signer will issue the
    +  // certificate to.
    +  //
    +  // The key must be one of RSA3072, RSA4096, ECDSAP256, ECDSAP384, ECDSAP521,
    +  // or ED25519. Note that this list may be expanded in the future.
    +  //
    +  // Signer implementations do not need to support all key types supported by
    +  // kube-apiserver and kubelet.  If a signer does not support the key type
    +  // used for a given PodCertificateRequest, it must deny the request by
    +  // setting a status.conditions entry with a type of "Denied" and a reason of
    +  // "UnsupportedKeyType". It may also suggest a key type that it does support
    +  // in the message field.
    +  //
    +  // +required
    +  optional bytes pkixPublicKey = 9;
    +
    +  // proofOfPossession proves that the requesting kubelet holds the private
    +  // key corresponding to pkixPublicKey.
    +  //
    +  // It is contructed by signing the ASCII bytes of the pod's UID using
    +  // `pkixPublicKey`.
    +  //
    +  // kube-apiserver validates the proof of possession during creation of the
    +  // PodCertificateRequest.
    +  //
    +  // If the key is an RSA key, then the signature is over the ASCII bytes of
    +  // the pod UID, using RSASSA-PSS from RFC 8017 (as implemented by the golang
    +  // function crypto/rsa.SignPSS with nil options).
    +  //
    +  // If the key is an ECDSA key, then the signature is as described by [SEC 1,
    +  // Version 2.0](https://www.secg.org/sec1-v2.pdf) (as implemented by the
    +  // golang library function crypto/ecdsa.SignASN1)
    +  //
    +  // If the key is an ED25519 key, the the signature is as described by the
    +  // [ED25519 Specification](https://ed25519.cr.yp.to/) (as implemented by
    +  // the golang library crypto/ed25519.Sign).
    +  //
    +  // +required
    +  optional bytes proofOfPossession = 10;
    +}
    +
    +// PodCertificateRequestStatus describes the status of the request, and holds
    +// the certificate data if the request is issued.
    +message PodCertificateRequestStatus {
    +  // conditions applied to the request.
    +  //
    +  // The types "Issued", "Denied", and "Failed" have special handling.  At
    +  // most one of these conditions may be present, and they must have status
    +  // "True".
    +  //
    +  // If the request is denied with `Reason=UnsupportedKeyType`, the signer may
    +  // suggest a key type that will work in the message field.
    +  //
    +  // +patchMergeKey=type
    +  // +patchStrategy=merge
    +  // +listType=map
    +  // +listMapKey=type
    +  // +optional
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 1;
    +
    +  // certificateChain is populated with an issued certificate by the signer.
    +  // This field is set via the /status subresource. Once populated, this field
    +  // is immutable.
    +  //
    +  // If the certificate signing request is denied, a condition of type
    +  // "Denied" is added and this field remains empty. If the signer cannot
    +  // issue the certificate, a condition of type "Failed" is added and this
    +  // field remains empty.
    +  //
    +  // Validation requirements:
    +  //  1. certificateChain must consist of one or more PEM-formatted certificates.
    +  //  2. Each entry must be a valid PEM-wrapped, DER-encoded ASN.1 Certificate as
    +  //     described in section 4 of RFC5280.
    +  //
    +  // If more than one block is present, and the definition of the requested
    +  // spec.signerName does not indicate otherwise, the first block is the
    +  // issued certificate, and subsequent blocks should be treated as
    +  // intermediate certificates and presented in TLS handshakes.  When
    +  // projecting the chain into a pod volume, kubelet will drop any data
    +  // in-between the PEM blocks, as well as any PEM block headers.
    +  //
    +  // +optional
    +  optional string certificateChain = 2;
    +
    +  // notBefore is the time at which the certificate becomes valid.  The value
    +  // must be the same as the notBefore value in the leaf certificate in
    +  // certificateChain.  This field is set via the /status subresource.  Once
    +  // populated, it is immutable. The signer must set this field at the same
    +  // time it sets certificateChain.
    +  //
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time notBefore = 4;
    +
    +  // beginRefreshAt is the time at which the kubelet should begin trying to
    +  // refresh the certificate.  This field is set via the /status subresource,
    +  // and must be set at the same time as certificateChain.  Once populated,
    +  // this field is immutable.
    +  //
    +  // This field is only a hint.  Kubelet may start refreshing before or after
    +  // this time if necessary.
    +  //
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time beginRefreshAt = 5;
    +
    +  // notAfter is the time at which the certificate expires.  The value must be
    +  // the same as the notAfter value in the leaf certificate in
    +  // certificateChain.  This field is set via the /status subresource.  Once
    +  // populated, it is immutable.  The signer must set this field at the same
    +  // time it sets certificateChain.
    +  //
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time notAfter = 6;
    +}
    +
    diff --git a/vendor/k8s.io/api/certificates/v1alpha1/register.go b/vendor/k8s.io/api/certificates/v1alpha1/register.go
    index 7288ed9a3e..ae541e15c1 100644
    --- a/vendor/k8s.io/api/certificates/v1alpha1/register.go
    +++ b/vendor/k8s.io/api/certificates/v1alpha1/register.go
    @@ -53,6 +53,8 @@ func addKnownTypes(scheme *runtime.Scheme) error {
     	scheme.AddKnownTypes(SchemeGroupVersion,
     		&ClusterTrustBundle{},
     		&ClusterTrustBundleList{},
    +		&PodCertificateRequest{},
    +		&PodCertificateRequestList{},
     	)
     
     	// Add the watch version that applies
    diff --git a/vendor/k8s.io/api/certificates/v1alpha1/types.go b/vendor/k8s.io/api/certificates/v1alpha1/types.go
    index beef02599d..a5cb3809e7 100644
    --- a/vendor/k8s.io/api/certificates/v1alpha1/types.go
    +++ b/vendor/k8s.io/api/certificates/v1alpha1/types.go
    @@ -18,6 +18,7 @@ package v1alpha1
     
     import (
     	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	"k8s.io/apimachinery/pkg/types"
     )
     
     // +genclient
    @@ -106,3 +107,233 @@ type ClusterTrustBundleList struct {
     	// items is a collection of ClusterTrustBundle objects
     	Items []ClusterTrustBundle `json:"items" protobuf:"bytes,2,rep,name=items"`
     }
    +
    +// +genclient
    +// +k8s:prerelease-lifecycle-gen:introduced=1.34
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +
    +// PodCertificateRequest encodes a pod requesting a certificate from a given
    +// signer.
    +//
    +// Kubelets use this API to implement podCertificate projected volumes
    +type PodCertificateRequest struct {
    +	metav1.TypeMeta `json:",inline"`
    +
    +	// metadata contains the object metadata.
    +	//
    +	// +optional
    +	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// spec contains the details about the certificate being requested.
    +	Spec PodCertificateRequestSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"`
    +
    +	// status contains the issued certificate, and a standard set of conditions.
    +	// +optional
    +	Status PodCertificateRequestStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
    +}
    +
    +// PodCertificateRequestSpec describes the certificate request.  All fields are
    +// immutable after creation.
    +type PodCertificateRequestSpec struct {
    +	// signerName indicates the requested signer.
    +	//
    +	// All signer names beginning with `kubernetes.io` are reserved for use by
    +	// the Kubernetes project.  There is currently one well-known signer
    +	// documented by the Kubernetes project,
    +	// `kubernetes.io/kube-apiserver-client-pod`, which will issue client
    +	// certificates understood by kube-apiserver.  It is currently
    +	// unimplemented.
    +	//
    +	// +required
    +	SignerName string `json:"signerName" protobuf:"bytes,1,opt,name=signerName"`
    +
    +	// podName is the name of the pod into which the certificate will be mounted.
    +	//
    +	// +required
    +	PodName string `json:"podName" protobuf:"bytes,2,opt,name=podName"`
    +	// podUID is the UID of the pod into which the certificate will be mounted.
    +	//
    +	// +required
    +	PodUID types.UID `json:"podUID" protobuf:"bytes,3,opt,name=podUID"`
    +
    +	// serviceAccountName is the name of the service account the pod is running as.
    +	//
    +	// +required
    +	ServiceAccountName string `json:"serviceAccountName" protobuf:"bytes,4,opt,name=serviceAccountName"`
    +	// serviceAccountUID is the UID of the service account the pod is running as.
    +	//
    +	// +required
    +	ServiceAccountUID types.UID `json:"serviceAccountUID" protobuf:"bytes,5,opt,name=serviceAccountUID"`
    +
    +	// nodeName is the name of the node the pod is assigned to.
    +	//
    +	// +required
    +	NodeName types.NodeName `json:"nodeName" protobuf:"bytes,6,opt,name=nodeName"`
    +	// nodeUID is the UID of the node the pod is assigned to.
    +	//
    +	// +required
    +	NodeUID types.UID `json:"nodeUID" protobuf:"bytes,7,opt,name=nodeUID"`
    +
    +	// maxExpirationSeconds is the maximum lifetime permitted for the
    +	// certificate.
    +	//
    +	// If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver
    +	// will reject values shorter than 3600 (1 hour).  The maximum allowable
    +	// value is 7862400 (91 days).
    +	//
    +	// The signer implementation is then free to issue a certificate with any
    +	// lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600
    +	// seconds (1 hour).  This constraint is enforced by kube-apiserver.
    +	// `kubernetes.io` signers will never issue certificates with a lifetime
    +	// longer than 24 hours.
    +	//
    +	// +optional
    +	// +default=86400
    +	MaxExpirationSeconds *int32 `json:"maxExpirationSeconds,omitempty" protobuf:"varint,8,opt,name=maxExpirationSeconds"`
    +
    +	// pkixPublicKey is the PKIX-serialized public key the signer will issue the
    +	// certificate to.
    +	//
    +	// The key must be one of RSA3072, RSA4096, ECDSAP256, ECDSAP384, ECDSAP521,
    +	// or ED25519. Note that this list may be expanded in the future.
    +	//
    +	// Signer implementations do not need to support all key types supported by
    +	// kube-apiserver and kubelet.  If a signer does not support the key type
    +	// used for a given PodCertificateRequest, it must deny the request by
    +	// setting a status.conditions entry with a type of "Denied" and a reason of
    +	// "UnsupportedKeyType". It may also suggest a key type that it does support
    +	// in the message field.
    +	//
    +	// +required
    +	PKIXPublicKey []byte `json:"pkixPublicKey" protobuf:"bytes,9,opt,name=pkixPublicKey"`
    +
    +	// proofOfPossession proves that the requesting kubelet holds the private
    +	// key corresponding to pkixPublicKey.
    +	//
    +	// It is contructed by signing the ASCII bytes of the pod's UID using
    +	// `pkixPublicKey`.
    +	//
    +	// kube-apiserver validates the proof of possession during creation of the
    +	// PodCertificateRequest.
    +	//
    +	// If the key is an RSA key, then the signature is over the ASCII bytes of
    +	// the pod UID, using RSASSA-PSS from RFC 8017 (as implemented by the golang
    +	// function crypto/rsa.SignPSS with nil options).
    +	//
    +	// If the key is an ECDSA key, then the signature is as described by [SEC 1,
    +	// Version 2.0](https://www.secg.org/sec1-v2.pdf) (as implemented by the
    +	// golang library function crypto/ecdsa.SignASN1)
    +	//
    +	// If the key is an ED25519 key, the the signature is as described by the
    +	// [ED25519 Specification](https://ed25519.cr.yp.to/) (as implemented by
    +	// the golang library crypto/ed25519.Sign).
    +	//
    +	// +required
    +	ProofOfPossession []byte `json:"proofOfPossession" protobuf:"bytes,10,opt,name=proofOfPossession"`
    +}
    +
    +// PodCertificateRequestStatus describes the status of the request, and holds
    +// the certificate data if the request is issued.
    +type PodCertificateRequestStatus struct {
    +	// conditions applied to the request.
    +	//
    +	// The types "Issued", "Denied", and "Failed" have special handling.  At
    +	// most one of these conditions may be present, and they must have status
    +	// "True".
    +	//
    +	// If the request is denied with `Reason=UnsupportedKeyType`, the signer may
    +	// suggest a key type that will work in the message field.
    +	//
    +	// +patchMergeKey=type
    +	// +patchStrategy=merge
    +	// +listType=map
    +	// +listMapKey=type
    +	// +optional
    +	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
    +
    +	// certificateChain is populated with an issued certificate by the signer.
    +	// This field is set via the /status subresource. Once populated, this field
    +	// is immutable.
    +	//
    +	// If the certificate signing request is denied, a condition of type
    +	// "Denied" is added and this field remains empty. If the signer cannot
    +	// issue the certificate, a condition of type "Failed" is added and this
    +	// field remains empty.
    +	//
    +	// Validation requirements:
    +	//  1. certificateChain must consist of one or more PEM-formatted certificates.
    +	//  2. Each entry must be a valid PEM-wrapped, DER-encoded ASN.1 Certificate as
    +	//     described in section 4 of RFC5280.
    +	//
    +	// If more than one block is present, and the definition of the requested
    +	// spec.signerName does not indicate otherwise, the first block is the
    +	// issued certificate, and subsequent blocks should be treated as
    +	// intermediate certificates and presented in TLS handshakes.  When
    +	// projecting the chain into a pod volume, kubelet will drop any data
    +	// in-between the PEM blocks, as well as any PEM block headers.
    +	//
    +	// +optional
    +	CertificateChain string `json:"certificateChain,omitempty" protobuf:"bytes,2,opt,name=certificateChain"`
    +
    +	// notBefore is the time at which the certificate becomes valid.  The value
    +	// must be the same as the notBefore value in the leaf certificate in
    +	// certificateChain.  This field is set via the /status subresource.  Once
    +	// populated, it is immutable. The signer must set this field at the same
    +	// time it sets certificateChain.
    +	//
    +	// +optional
    +	NotBefore *metav1.Time `json:"notBefore,omitempty" protobuf:"bytes,4,opt,name=notBefore"`
    +
    +	// beginRefreshAt is the time at which the kubelet should begin trying to
    +	// refresh the certificate.  This field is set via the /status subresource,
    +	// and must be set at the same time as certificateChain.  Once populated,
    +	// this field is immutable.
    +	//
    +	// This field is only a hint.  Kubelet may start refreshing before or after
    +	// this time if necessary.
    +	//
    +	// +optional
    +	BeginRefreshAt *metav1.Time `json:"beginRefreshAt,omitempty" protobuf:"bytes,5,opt,name=beginRefreshAt"`
    +
    +	// notAfter is the time at which the certificate expires.  The value must be
    +	// the same as the notAfter value in the leaf certificate in
    +	// certificateChain.  This field is set via the /status subresource.  Once
    +	// populated, it is immutable.  The signer must set this field at the same
    +	// time it sets certificateChain.
    +	//
    +	// +optional
    +	NotAfter *metav1.Time `json:"notAfter,omitempty" protobuf:"bytes,6,opt,name=notAfter"`
    +}
    +
    +// Well-known condition types for PodCertificateRequests
    +const (
    +	// Denied indicates the request was denied by the signer.
    +	PodCertificateRequestConditionTypeDenied string = "Denied"
    +	// Failed indicates the signer failed to issue the certificate.
    +	PodCertificateRequestConditionTypeFailed string = "Failed"
    +	// Issued indicates the certificate has been issued.
    +	PodCertificateRequestConditionTypeIssued string = "Issued"
    +)
    +
    +// Well-known condition reasons for PodCertificateRequests
    +const (
    +	// UnsupportedKeyType should be set on "Denied" conditions when the signer
    +	// doesn't support the key type of publicKey.
    +	PodCertificateRequestConditionUnsupportedKeyType string = "UnsupportedKeyType"
    +)
    +
    +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    +// +k8s:prerelease-lifecycle-gen:introduced=1.34
    +
    +// PodCertificateRequestList is a collection of PodCertificateRequest objects
    +type PodCertificateRequestList struct {
    +	metav1.TypeMeta `json:",inline"`
    +
    +	// metadata contains the list metadata.
    +	//
    +	// +optional
    +	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    +
    +	// items is a collection of PodCertificateRequest objects
    +	Items []PodCertificateRequest `json:"items" protobuf:"bytes,2,rep,name=items"`
    +}
    diff --git a/vendor/k8s.io/api/certificates/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/certificates/v1alpha1/types_swagger_doc_generated.go
    index bff649e3cb..d29f2d8505 100644
    --- a/vendor/k8s.io/api/certificates/v1alpha1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/certificates/v1alpha1/types_swagger_doc_generated.go
    @@ -57,4 +57,56 @@ func (ClusterTrustBundleSpec) SwaggerDoc() map[string]string {
     	return map_ClusterTrustBundleSpec
     }
     
    +var map_PodCertificateRequest = map[string]string{
    +	"":         "PodCertificateRequest encodes a pod requesting a certificate from a given signer.\n\nKubelets use this API to implement podCertificate projected volumes",
    +	"metadata": "metadata contains the object metadata.",
    +	"spec":     "spec contains the details about the certificate being requested.",
    +	"status":   "status contains the issued certificate, and a standard set of conditions.",
    +}
    +
    +func (PodCertificateRequest) SwaggerDoc() map[string]string {
    +	return map_PodCertificateRequest
    +}
    +
    +var map_PodCertificateRequestList = map[string]string{
    +	"":         "PodCertificateRequestList is a collection of PodCertificateRequest objects",
    +	"metadata": "metadata contains the list metadata.",
    +	"items":    "items is a collection of PodCertificateRequest objects",
    +}
    +
    +func (PodCertificateRequestList) SwaggerDoc() map[string]string {
    +	return map_PodCertificateRequestList
    +}
    +
    +var map_PodCertificateRequestSpec = map[string]string{
    +	"":                     "PodCertificateRequestSpec describes the certificate request.  All fields are immutable after creation.",
    +	"signerName":           "signerName indicates the requested signer.\n\nAll signer names beginning with `kubernetes.io` are reserved for use by the Kubernetes project.  There is currently one well-known signer documented by the Kubernetes project, `kubernetes.io/kube-apiserver-client-pod`, which will issue client certificates understood by kube-apiserver.  It is currently unimplemented.",
    +	"podName":              "podName is the name of the pod into which the certificate will be mounted.",
    +	"podUID":               "podUID is the UID of the pod into which the certificate will be mounted.",
    +	"serviceAccountName":   "serviceAccountName is the name of the service account the pod is running as.",
    +	"serviceAccountUID":    "serviceAccountUID is the UID of the service account the pod is running as.",
    +	"nodeName":             "nodeName is the name of the node the pod is assigned to.",
    +	"nodeUID":              "nodeUID is the UID of the node the pod is assigned to.",
    +	"maxExpirationSeconds": "maxExpirationSeconds is the maximum lifetime permitted for the certificate.\n\nIf omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver will reject values shorter than 3600 (1 hour).  The maximum allowable value is 7862400 (91 days).\n\nThe signer implementation is then free to issue a certificate with any lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600 seconds (1 hour).  This constraint is enforced by kube-apiserver. `kubernetes.io` signers will never issue certificates with a lifetime longer than 24 hours.",
    +	"pkixPublicKey":        "pkixPublicKey is the PKIX-serialized public key the signer will issue the certificate to.\n\nThe key must be one of RSA3072, RSA4096, ECDSAP256, ECDSAP384, ECDSAP521, or ED25519. Note that this list may be expanded in the future.\n\nSigner implementations do not need to support all key types supported by kube-apiserver and kubelet.  If a signer does not support the key type used for a given PodCertificateRequest, it must deny the request by setting a status.conditions entry with a type of \"Denied\" and a reason of \"UnsupportedKeyType\". It may also suggest a key type that it does support in the message field.",
    +	"proofOfPossession":    "proofOfPossession proves that the requesting kubelet holds the private key corresponding to pkixPublicKey.\n\nIt is contructed by signing the ASCII bytes of the pod's UID using `pkixPublicKey`.\n\nkube-apiserver validates the proof of possession during creation of the PodCertificateRequest.\n\nIf the key is an RSA key, then the signature is over the ASCII bytes of the pod UID, using RSASSA-PSS from RFC 8017 (as implemented by the golang function crypto/rsa.SignPSS with nil options).\n\nIf the key is an ECDSA key, then the signature is as described by [SEC 1, Version 2.0](https://www.secg.org/sec1-v2.pdf) (as implemented by the golang library function crypto/ecdsa.SignASN1)\n\nIf the key is an ED25519 key, the the signature is as described by the [ED25519 Specification](https://ed25519.cr.yp.to/) (as implemented by the golang library crypto/ed25519.Sign).",
    +}
    +
    +func (PodCertificateRequestSpec) SwaggerDoc() map[string]string {
    +	return map_PodCertificateRequestSpec
    +}
    +
    +var map_PodCertificateRequestStatus = map[string]string{
    +	"":                 "PodCertificateRequestStatus describes the status of the request, and holds the certificate data if the request is issued.",
    +	"conditions":       "conditions applied to the request.\n\nThe types \"Issued\", \"Denied\", and \"Failed\" have special handling.  At most one of these conditions may be present, and they must have status \"True\".\n\nIf the request is denied with `Reason=UnsupportedKeyType`, the signer may suggest a key type that will work in the message field.",
    +	"certificateChain": "certificateChain is populated with an issued certificate by the signer. This field is set via the /status subresource. Once populated, this field is immutable.\n\nIf the certificate signing request is denied, a condition of type \"Denied\" is added and this field remains empty. If the signer cannot issue the certificate, a condition of type \"Failed\" is added and this field remains empty.\n\nValidation requirements:\n 1. certificateChain must consist of one or more PEM-formatted certificates.\n 2. Each entry must be a valid PEM-wrapped, DER-encoded ASN.1 Certificate as\n    described in section 4 of RFC5280.\n\nIf more than one block is present, and the definition of the requested spec.signerName does not indicate otherwise, the first block is the issued certificate, and subsequent blocks should be treated as intermediate certificates and presented in TLS handshakes.  When projecting the chain into a pod volume, kubelet will drop any data in-between the PEM blocks, as well as any PEM block headers.",
    +	"notBefore":        "notBefore is the time at which the certificate becomes valid.  The value must be the same as the notBefore value in the leaf certificate in certificateChain.  This field is set via the /status subresource.  Once populated, it is immutable. The signer must set this field at the same time it sets certificateChain.",
    +	"beginRefreshAt":   "beginRefreshAt is the time at which the kubelet should begin trying to refresh the certificate.  This field is set via the /status subresource, and must be set at the same time as certificateChain.  Once populated, this field is immutable.\n\nThis field is only a hint.  Kubelet may start refreshing before or after this time if necessary.",
    +	"notAfter":         "notAfter is the time at which the certificate expires.  The value must be the same as the notAfter value in the leaf certificate in certificateChain.  This field is set via the /status subresource.  Once populated, it is immutable.  The signer must set this field at the same time it sets certificateChain.",
    +}
    +
    +func (PodCertificateRequestStatus) SwaggerDoc() map[string]string {
    +	return map_PodCertificateRequestStatus
    +}
    +
     // AUTO-GENERATED FUNCTIONS END HERE
    diff --git a/vendor/k8s.io/api/certificates/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/certificates/v1alpha1/zz_generated.deepcopy.go
    index 30a4dc1e80..25bc0ed6cb 100644
    --- a/vendor/k8s.io/api/certificates/v1alpha1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/certificates/v1alpha1/zz_generated.deepcopy.go
    @@ -22,6 +22,7 @@ limitations under the License.
     package v1alpha1
     
     import (
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     	runtime "k8s.io/apimachinery/pkg/runtime"
     )
     
    @@ -100,3 +101,130 @@ func (in *ClusterTrustBundleSpec) DeepCopy() *ClusterTrustBundleSpec {
     	in.DeepCopyInto(out)
     	return out
     }
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *PodCertificateRequest) DeepCopyInto(out *PodCertificateRequest) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    +	in.Spec.DeepCopyInto(&out.Spec)
    +	in.Status.DeepCopyInto(&out.Status)
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCertificateRequest.
    +func (in *PodCertificateRequest) DeepCopy() *PodCertificateRequest {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(PodCertificateRequest)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *PodCertificateRequest) DeepCopyObject() runtime.Object {
    +	if c := in.DeepCopy(); c != nil {
    +		return c
    +	}
    +	return nil
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *PodCertificateRequestList) DeepCopyInto(out *PodCertificateRequestList) {
    +	*out = *in
    +	out.TypeMeta = in.TypeMeta
    +	in.ListMeta.DeepCopyInto(&out.ListMeta)
    +	if in.Items != nil {
    +		in, out := &in.Items, &out.Items
    +		*out = make([]PodCertificateRequest, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCertificateRequestList.
    +func (in *PodCertificateRequestList) DeepCopy() *PodCertificateRequestList {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(PodCertificateRequestList)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    +func (in *PodCertificateRequestList) DeepCopyObject() runtime.Object {
    +	if c := in.DeepCopy(); c != nil {
    +		return c
    +	}
    +	return nil
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *PodCertificateRequestSpec) DeepCopyInto(out *PodCertificateRequestSpec) {
    +	*out = *in
    +	if in.MaxExpirationSeconds != nil {
    +		in, out := &in.MaxExpirationSeconds, &out.MaxExpirationSeconds
    +		*out = new(int32)
    +		**out = **in
    +	}
    +	if in.PKIXPublicKey != nil {
    +		in, out := &in.PKIXPublicKey, &out.PKIXPublicKey
    +		*out = make([]byte, len(*in))
    +		copy(*out, *in)
    +	}
    +	if in.ProofOfPossession != nil {
    +		in, out := &in.ProofOfPossession, &out.ProofOfPossession
    +		*out = make([]byte, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCertificateRequestSpec.
    +func (in *PodCertificateRequestSpec) DeepCopy() *PodCertificateRequestSpec {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(PodCertificateRequestSpec)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *PodCertificateRequestStatus) DeepCopyInto(out *PodCertificateRequestStatus) {
    +	*out = *in
    +	if in.Conditions != nil {
    +		in, out := &in.Conditions, &out.Conditions
    +		*out = make([]v1.Condition, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
    +	if in.NotBefore != nil {
    +		in, out := &in.NotBefore, &out.NotBefore
    +		*out = (*in).DeepCopy()
    +	}
    +	if in.BeginRefreshAt != nil {
    +		in, out := &in.BeginRefreshAt, &out.BeginRefreshAt
    +		*out = (*in).DeepCopy()
    +	}
    +	if in.NotAfter != nil {
    +		in, out := &in.NotAfter, &out.NotAfter
    +		*out = (*in).DeepCopy()
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCertificateRequestStatus.
    +func (in *PodCertificateRequestStatus) DeepCopy() *PodCertificateRequestStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(PodCertificateRequestStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    diff --git a/vendor/k8s.io/api/certificates/v1alpha1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/certificates/v1alpha1/zz_generated.prerelease-lifecycle.go
    index 3121a87d08..edbfce79bc 100644
    --- a/vendor/k8s.io/api/certificates/v1alpha1/zz_generated.prerelease-lifecycle.go
    +++ b/vendor/k8s.io/api/certificates/v1alpha1/zz_generated.prerelease-lifecycle.go
    @@ -56,3 +56,39 @@ func (in *ClusterTrustBundleList) APILifecycleDeprecated() (major, minor int) {
     func (in *ClusterTrustBundleList) APILifecycleRemoved() (major, minor int) {
     	return 1, 37
     }
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodCertificateRequest) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *PodCertificateRequest) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *PodCertificateRequest) APILifecycleRemoved() (major, minor int) {
    +	return 1, 40
    +}
    +
    +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    +func (in *PodCertificateRequestList) APILifecycleIntroduced() (major, minor int) {
    +	return 1, 34
    +}
    +
    +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    +func (in *PodCertificateRequestList) APILifecycleDeprecated() (major, minor int) {
    +	return 1, 37
    +}
    +
    +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    +func (in *PodCertificateRequestList) APILifecycleRemoved() (major, minor int) {
    +	return 1, 40
    +}
    diff --git a/vendor/k8s.io/api/certificates/v1beta1/generated.proto b/vendor/k8s.io/api/certificates/v1beta1/generated.proto
    index 7c48270f65..4c9385c196 100644
    --- a/vendor/k8s.io/api/certificates/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/certificates/v1beta1/generated.proto
    @@ -30,6 +30,8 @@ import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
     option go_package = "k8s.io/api/certificates/v1beta1";
     
     // Describes a certificate signing request
    +// +k8s:supportsSubresource=/status
    +// +k8s:supportsSubresource=/approval
     message CertificateSigningRequest {
       // +optional
       optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    @@ -182,6 +184,11 @@ message CertificateSigningRequestStatus {
       // +listType=map
       // +listMapKey=type
       // +optional
    +  // +k8s:listType=map
    +  // +k8s:listMapKey=type
    +  // +k8s:optional
    +  // +k8s:item(type: "Approved")=+k8s:zeroOrOneOfMember
    +  // +k8s:item(type: "Denied")=+k8s:zeroOrOneOfMember
       repeated CertificateSigningRequestCondition conditions = 1;
     
       // If request was approved, the controller will place the issued certificate here.
    diff --git a/vendor/k8s.io/api/certificates/v1beta1/types.go b/vendor/k8s.io/api/certificates/v1beta1/types.go
    index 1ce104807d..fadb7e082e 100644
    --- a/vendor/k8s.io/api/certificates/v1beta1/types.go
    +++ b/vendor/k8s.io/api/certificates/v1beta1/types.go
    @@ -31,6 +31,8 @@ import (
     // +k8s:prerelease-lifecycle-gen:replacement=certificates.k8s.io,v1,CertificateSigningRequest
     
     // Describes a certificate signing request
    +// +k8s:supportsSubresource=/status
    +// +k8s:supportsSubresource=/approval
     type CertificateSigningRequest struct {
     	metav1.TypeMeta `json:",inline"`
     	// +optional
    @@ -175,6 +177,11 @@ type CertificateSigningRequestStatus struct {
     	// +listType=map
     	// +listMapKey=type
     	// +optional
    +	// +k8s:listType=map
    +	// +k8s:listMapKey=type
    +	// +k8s:optional
    +	// +k8s:item(type: "Approved")=+k8s:zeroOrOneOfMember
    +	// +k8s:item(type: "Denied")=+k8s:zeroOrOneOfMember
     	Conditions []CertificateSigningRequestCondition `json:"conditions,omitempty" protobuf:"bytes,1,rep,name=conditions"`
     
     	// If request was approved, the controller will place the issued certificate here.
    diff --git a/vendor/k8s.io/api/core/v1/generated.pb.go b/vendor/k8s.io/api/core/v1/generated.pb.go
    index a4b8f58429..e1a297b985 100644
    --- a/vendor/k8s.io/api/core/v1/generated.pb.go
    +++ b/vendor/k8s.io/api/core/v1/generated.pb.go
    @@ -861,10 +861,38 @@ func (m *Container) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_Container proto.InternalMessageInfo
     
    +func (m *ContainerExtendedResourceRequest) Reset()      { *m = ContainerExtendedResourceRequest{} }
    +func (*ContainerExtendedResourceRequest) ProtoMessage() {}
    +func (*ContainerExtendedResourceRequest) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{29}
    +}
    +func (m *ContainerExtendedResourceRequest) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ContainerExtendedResourceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ContainerExtendedResourceRequest) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ContainerExtendedResourceRequest.Merge(m, src)
    +}
    +func (m *ContainerExtendedResourceRequest) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ContainerExtendedResourceRequest) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ContainerExtendedResourceRequest.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ContainerExtendedResourceRequest proto.InternalMessageInfo
    +
     func (m *ContainerImage) Reset()      { *m = ContainerImage{} }
     func (*ContainerImage) ProtoMessage() {}
     func (*ContainerImage) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{29}
    +	return fileDescriptor_6c07b07c062484ab, []int{30}
     }
     func (m *ContainerImage) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -892,7 +920,7 @@ var xxx_messageInfo_ContainerImage proto.InternalMessageInfo
     func (m *ContainerPort) Reset()      { *m = ContainerPort{} }
     func (*ContainerPort) ProtoMessage() {}
     func (*ContainerPort) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{30}
    +	return fileDescriptor_6c07b07c062484ab, []int{31}
     }
     func (m *ContainerPort) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -920,7 +948,7 @@ var xxx_messageInfo_ContainerPort proto.InternalMessageInfo
     func (m *ContainerResizePolicy) Reset()      { *m = ContainerResizePolicy{} }
     func (*ContainerResizePolicy) ProtoMessage() {}
     func (*ContainerResizePolicy) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{31}
    +	return fileDescriptor_6c07b07c062484ab, []int{32}
     }
     func (m *ContainerResizePolicy) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -945,10 +973,66 @@ func (m *ContainerResizePolicy) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_ContainerResizePolicy proto.InternalMessageInfo
     
    +func (m *ContainerRestartRule) Reset()      { *m = ContainerRestartRule{} }
    +func (*ContainerRestartRule) ProtoMessage() {}
    +func (*ContainerRestartRule) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{33}
    +}
    +func (m *ContainerRestartRule) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ContainerRestartRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ContainerRestartRule) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ContainerRestartRule.Merge(m, src)
    +}
    +func (m *ContainerRestartRule) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ContainerRestartRule) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ContainerRestartRule.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ContainerRestartRule proto.InternalMessageInfo
    +
    +func (m *ContainerRestartRuleOnExitCodes) Reset()      { *m = ContainerRestartRuleOnExitCodes{} }
    +func (*ContainerRestartRuleOnExitCodes) ProtoMessage() {}
    +func (*ContainerRestartRuleOnExitCodes) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{34}
    +}
    +func (m *ContainerRestartRuleOnExitCodes) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ContainerRestartRuleOnExitCodes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ContainerRestartRuleOnExitCodes) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ContainerRestartRuleOnExitCodes.Merge(m, src)
    +}
    +func (m *ContainerRestartRuleOnExitCodes) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ContainerRestartRuleOnExitCodes) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ContainerRestartRuleOnExitCodes.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ContainerRestartRuleOnExitCodes proto.InternalMessageInfo
    +
     func (m *ContainerState) Reset()      { *m = ContainerState{} }
     func (*ContainerState) ProtoMessage() {}
     func (*ContainerState) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{32}
    +	return fileDescriptor_6c07b07c062484ab, []int{35}
     }
     func (m *ContainerState) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -976,7 +1060,7 @@ var xxx_messageInfo_ContainerState proto.InternalMessageInfo
     func (m *ContainerStateRunning) Reset()      { *m = ContainerStateRunning{} }
     func (*ContainerStateRunning) ProtoMessage() {}
     func (*ContainerStateRunning) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{33}
    +	return fileDescriptor_6c07b07c062484ab, []int{36}
     }
     func (m *ContainerStateRunning) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1004,7 +1088,7 @@ var xxx_messageInfo_ContainerStateRunning proto.InternalMessageInfo
     func (m *ContainerStateTerminated) Reset()      { *m = ContainerStateTerminated{} }
     func (*ContainerStateTerminated) ProtoMessage() {}
     func (*ContainerStateTerminated) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{34}
    +	return fileDescriptor_6c07b07c062484ab, []int{37}
     }
     func (m *ContainerStateTerminated) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1032,7 +1116,7 @@ var xxx_messageInfo_ContainerStateTerminated proto.InternalMessageInfo
     func (m *ContainerStateWaiting) Reset()      { *m = ContainerStateWaiting{} }
     func (*ContainerStateWaiting) ProtoMessage() {}
     func (*ContainerStateWaiting) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{35}
    +	return fileDescriptor_6c07b07c062484ab, []int{38}
     }
     func (m *ContainerStateWaiting) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1060,7 +1144,7 @@ var xxx_messageInfo_ContainerStateWaiting proto.InternalMessageInfo
     func (m *ContainerStatus) Reset()      { *m = ContainerStatus{} }
     func (*ContainerStatus) ProtoMessage() {}
     func (*ContainerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{36}
    +	return fileDescriptor_6c07b07c062484ab, []int{39}
     }
     func (m *ContainerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1088,7 +1172,7 @@ var xxx_messageInfo_ContainerStatus proto.InternalMessageInfo
     func (m *ContainerUser) Reset()      { *m = ContainerUser{} }
     func (*ContainerUser) ProtoMessage() {}
     func (*ContainerUser) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{37}
    +	return fileDescriptor_6c07b07c062484ab, []int{40}
     }
     func (m *ContainerUser) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1116,7 +1200,7 @@ var xxx_messageInfo_ContainerUser proto.InternalMessageInfo
     func (m *DaemonEndpoint) Reset()      { *m = DaemonEndpoint{} }
     func (*DaemonEndpoint) ProtoMessage() {}
     func (*DaemonEndpoint) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{38}
    +	return fileDescriptor_6c07b07c062484ab, []int{41}
     }
     func (m *DaemonEndpoint) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1144,7 +1228,7 @@ var xxx_messageInfo_DaemonEndpoint proto.InternalMessageInfo
     func (m *DownwardAPIProjection) Reset()      { *m = DownwardAPIProjection{} }
     func (*DownwardAPIProjection) ProtoMessage() {}
     func (*DownwardAPIProjection) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{39}
    +	return fileDescriptor_6c07b07c062484ab, []int{42}
     }
     func (m *DownwardAPIProjection) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1172,7 +1256,7 @@ var xxx_messageInfo_DownwardAPIProjection proto.InternalMessageInfo
     func (m *DownwardAPIVolumeFile) Reset()      { *m = DownwardAPIVolumeFile{} }
     func (*DownwardAPIVolumeFile) ProtoMessage() {}
     func (*DownwardAPIVolumeFile) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{40}
    +	return fileDescriptor_6c07b07c062484ab, []int{43}
     }
     func (m *DownwardAPIVolumeFile) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1200,7 +1284,7 @@ var xxx_messageInfo_DownwardAPIVolumeFile proto.InternalMessageInfo
     func (m *DownwardAPIVolumeSource) Reset()      { *m = DownwardAPIVolumeSource{} }
     func (*DownwardAPIVolumeSource) ProtoMessage() {}
     func (*DownwardAPIVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{41}
    +	return fileDescriptor_6c07b07c062484ab, []int{44}
     }
     func (m *DownwardAPIVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1228,7 +1312,7 @@ var xxx_messageInfo_DownwardAPIVolumeSource proto.InternalMessageInfo
     func (m *EmptyDirVolumeSource) Reset()      { *m = EmptyDirVolumeSource{} }
     func (*EmptyDirVolumeSource) ProtoMessage() {}
     func (*EmptyDirVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{42}
    +	return fileDescriptor_6c07b07c062484ab, []int{45}
     }
     func (m *EmptyDirVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1256,7 +1340,7 @@ var xxx_messageInfo_EmptyDirVolumeSource proto.InternalMessageInfo
     func (m *EndpointAddress) Reset()      { *m = EndpointAddress{} }
     func (*EndpointAddress) ProtoMessage() {}
     func (*EndpointAddress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{43}
    +	return fileDescriptor_6c07b07c062484ab, []int{46}
     }
     func (m *EndpointAddress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1284,7 +1368,7 @@ var xxx_messageInfo_EndpointAddress proto.InternalMessageInfo
     func (m *EndpointPort) Reset()      { *m = EndpointPort{} }
     func (*EndpointPort) ProtoMessage() {}
     func (*EndpointPort) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{44}
    +	return fileDescriptor_6c07b07c062484ab, []int{47}
     }
     func (m *EndpointPort) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1312,7 +1396,7 @@ var xxx_messageInfo_EndpointPort proto.InternalMessageInfo
     func (m *EndpointSubset) Reset()      { *m = EndpointSubset{} }
     func (*EndpointSubset) ProtoMessage() {}
     func (*EndpointSubset) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{45}
    +	return fileDescriptor_6c07b07c062484ab, []int{48}
     }
     func (m *EndpointSubset) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1340,7 +1424,7 @@ var xxx_messageInfo_EndpointSubset proto.InternalMessageInfo
     func (m *Endpoints) Reset()      { *m = Endpoints{} }
     func (*Endpoints) ProtoMessage() {}
     func (*Endpoints) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{46}
    +	return fileDescriptor_6c07b07c062484ab, []int{49}
     }
     func (m *Endpoints) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1368,7 +1452,7 @@ var xxx_messageInfo_Endpoints proto.InternalMessageInfo
     func (m *EndpointsList) Reset()      { *m = EndpointsList{} }
     func (*EndpointsList) ProtoMessage() {}
     func (*EndpointsList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{47}
    +	return fileDescriptor_6c07b07c062484ab, []int{50}
     }
     func (m *EndpointsList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1396,7 +1480,7 @@ var xxx_messageInfo_EndpointsList proto.InternalMessageInfo
     func (m *EnvFromSource) Reset()      { *m = EnvFromSource{} }
     func (*EnvFromSource) ProtoMessage() {}
     func (*EnvFromSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{48}
    +	return fileDescriptor_6c07b07c062484ab, []int{51}
     }
     func (m *EnvFromSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1424,7 +1508,7 @@ var xxx_messageInfo_EnvFromSource proto.InternalMessageInfo
     func (m *EnvVar) Reset()      { *m = EnvVar{} }
     func (*EnvVar) ProtoMessage() {}
     func (*EnvVar) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{49}
    +	return fileDescriptor_6c07b07c062484ab, []int{52}
     }
     func (m *EnvVar) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1452,7 +1536,7 @@ var xxx_messageInfo_EnvVar proto.InternalMessageInfo
     func (m *EnvVarSource) Reset()      { *m = EnvVarSource{} }
     func (*EnvVarSource) ProtoMessage() {}
     func (*EnvVarSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{50}
    +	return fileDescriptor_6c07b07c062484ab, []int{53}
     }
     func (m *EnvVarSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1480,7 +1564,7 @@ var xxx_messageInfo_EnvVarSource proto.InternalMessageInfo
     func (m *EphemeralContainer) Reset()      { *m = EphemeralContainer{} }
     func (*EphemeralContainer) ProtoMessage() {}
     func (*EphemeralContainer) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{51}
    +	return fileDescriptor_6c07b07c062484ab, []int{54}
     }
     func (m *EphemeralContainer) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1508,7 +1592,7 @@ var xxx_messageInfo_EphemeralContainer proto.InternalMessageInfo
     func (m *EphemeralContainerCommon) Reset()      { *m = EphemeralContainerCommon{} }
     func (*EphemeralContainerCommon) ProtoMessage() {}
     func (*EphemeralContainerCommon) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{52}
    +	return fileDescriptor_6c07b07c062484ab, []int{55}
     }
     func (m *EphemeralContainerCommon) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1536,7 +1620,7 @@ var xxx_messageInfo_EphemeralContainerCommon proto.InternalMessageInfo
     func (m *EphemeralVolumeSource) Reset()      { *m = EphemeralVolumeSource{} }
     func (*EphemeralVolumeSource) ProtoMessage() {}
     func (*EphemeralVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{53}
    +	return fileDescriptor_6c07b07c062484ab, []int{56}
     }
     func (m *EphemeralVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1564,7 +1648,7 @@ var xxx_messageInfo_EphemeralVolumeSource proto.InternalMessageInfo
     func (m *Event) Reset()      { *m = Event{} }
     func (*Event) ProtoMessage() {}
     func (*Event) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{54}
    +	return fileDescriptor_6c07b07c062484ab, []int{57}
     }
     func (m *Event) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1592,7 +1676,7 @@ var xxx_messageInfo_Event proto.InternalMessageInfo
     func (m *EventList) Reset()      { *m = EventList{} }
     func (*EventList) ProtoMessage() {}
     func (*EventList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{55}
    +	return fileDescriptor_6c07b07c062484ab, []int{58}
     }
     func (m *EventList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1620,7 +1704,7 @@ var xxx_messageInfo_EventList proto.InternalMessageInfo
     func (m *EventSeries) Reset()      { *m = EventSeries{} }
     func (*EventSeries) ProtoMessage() {}
     func (*EventSeries) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{56}
    +	return fileDescriptor_6c07b07c062484ab, []int{59}
     }
     func (m *EventSeries) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1648,7 +1732,7 @@ var xxx_messageInfo_EventSeries proto.InternalMessageInfo
     func (m *EventSource) Reset()      { *m = EventSource{} }
     func (*EventSource) ProtoMessage() {}
     func (*EventSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{57}
    +	return fileDescriptor_6c07b07c062484ab, []int{60}
     }
     func (m *EventSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1676,7 +1760,7 @@ var xxx_messageInfo_EventSource proto.InternalMessageInfo
     func (m *ExecAction) Reset()      { *m = ExecAction{} }
     func (*ExecAction) ProtoMessage() {}
     func (*ExecAction) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{58}
    +	return fileDescriptor_6c07b07c062484ab, []int{61}
     }
     func (m *ExecAction) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1704,7 +1788,7 @@ var xxx_messageInfo_ExecAction proto.InternalMessageInfo
     func (m *FCVolumeSource) Reset()      { *m = FCVolumeSource{} }
     func (*FCVolumeSource) ProtoMessage() {}
     func (*FCVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{59}
    +	return fileDescriptor_6c07b07c062484ab, []int{62}
     }
     func (m *FCVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1729,10 +1813,38 @@ func (m *FCVolumeSource) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_FCVolumeSource proto.InternalMessageInfo
     
    +func (m *FileKeySelector) Reset()      { *m = FileKeySelector{} }
    +func (*FileKeySelector) ProtoMessage() {}
    +func (*FileKeySelector) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{63}
    +}
    +func (m *FileKeySelector) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *FileKeySelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *FileKeySelector) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_FileKeySelector.Merge(m, src)
    +}
    +func (m *FileKeySelector) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *FileKeySelector) XXX_DiscardUnknown() {
    +	xxx_messageInfo_FileKeySelector.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_FileKeySelector proto.InternalMessageInfo
    +
     func (m *FlexPersistentVolumeSource) Reset()      { *m = FlexPersistentVolumeSource{} }
     func (*FlexPersistentVolumeSource) ProtoMessage() {}
     func (*FlexPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{60}
    +	return fileDescriptor_6c07b07c062484ab, []int{64}
     }
     func (m *FlexPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1760,7 +1872,7 @@ var xxx_messageInfo_FlexPersistentVolumeSource proto.InternalMessageInfo
     func (m *FlexVolumeSource) Reset()      { *m = FlexVolumeSource{} }
     func (*FlexVolumeSource) ProtoMessage() {}
     func (*FlexVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{61}
    +	return fileDescriptor_6c07b07c062484ab, []int{65}
     }
     func (m *FlexVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1788,7 +1900,7 @@ var xxx_messageInfo_FlexVolumeSource proto.InternalMessageInfo
     func (m *FlockerVolumeSource) Reset()      { *m = FlockerVolumeSource{} }
     func (*FlockerVolumeSource) ProtoMessage() {}
     func (*FlockerVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{62}
    +	return fileDescriptor_6c07b07c062484ab, []int{66}
     }
     func (m *FlockerVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1816,7 +1928,7 @@ var xxx_messageInfo_FlockerVolumeSource proto.InternalMessageInfo
     func (m *GCEPersistentDiskVolumeSource) Reset()      { *m = GCEPersistentDiskVolumeSource{} }
     func (*GCEPersistentDiskVolumeSource) ProtoMessage() {}
     func (*GCEPersistentDiskVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{63}
    +	return fileDescriptor_6c07b07c062484ab, []int{67}
     }
     func (m *GCEPersistentDiskVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1844,7 +1956,7 @@ var xxx_messageInfo_GCEPersistentDiskVolumeSource proto.InternalMessageInfo
     func (m *GRPCAction) Reset()      { *m = GRPCAction{} }
     func (*GRPCAction) ProtoMessage() {}
     func (*GRPCAction) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{64}
    +	return fileDescriptor_6c07b07c062484ab, []int{68}
     }
     func (m *GRPCAction) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1872,7 +1984,7 @@ var xxx_messageInfo_GRPCAction proto.InternalMessageInfo
     func (m *GitRepoVolumeSource) Reset()      { *m = GitRepoVolumeSource{} }
     func (*GitRepoVolumeSource) ProtoMessage() {}
     func (*GitRepoVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{65}
    +	return fileDescriptor_6c07b07c062484ab, []int{69}
     }
     func (m *GitRepoVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1900,7 +2012,7 @@ var xxx_messageInfo_GitRepoVolumeSource proto.InternalMessageInfo
     func (m *GlusterfsPersistentVolumeSource) Reset()      { *m = GlusterfsPersistentVolumeSource{} }
     func (*GlusterfsPersistentVolumeSource) ProtoMessage() {}
     func (*GlusterfsPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{66}
    +	return fileDescriptor_6c07b07c062484ab, []int{70}
     }
     func (m *GlusterfsPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1928,7 +2040,7 @@ var xxx_messageInfo_GlusterfsPersistentVolumeSource proto.InternalMessageInfo
     func (m *GlusterfsVolumeSource) Reset()      { *m = GlusterfsVolumeSource{} }
     func (*GlusterfsVolumeSource) ProtoMessage() {}
     func (*GlusterfsVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{67}
    +	return fileDescriptor_6c07b07c062484ab, []int{71}
     }
     func (m *GlusterfsVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1956,7 +2068,7 @@ var xxx_messageInfo_GlusterfsVolumeSource proto.InternalMessageInfo
     func (m *HTTPGetAction) Reset()      { *m = HTTPGetAction{} }
     func (*HTTPGetAction) ProtoMessage() {}
     func (*HTTPGetAction) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{68}
    +	return fileDescriptor_6c07b07c062484ab, []int{72}
     }
     func (m *HTTPGetAction) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -1984,7 +2096,7 @@ var xxx_messageInfo_HTTPGetAction proto.InternalMessageInfo
     func (m *HTTPHeader) Reset()      { *m = HTTPHeader{} }
     func (*HTTPHeader) ProtoMessage() {}
     func (*HTTPHeader) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{69}
    +	return fileDescriptor_6c07b07c062484ab, []int{73}
     }
     func (m *HTTPHeader) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2012,7 +2124,7 @@ var xxx_messageInfo_HTTPHeader proto.InternalMessageInfo
     func (m *HostAlias) Reset()      { *m = HostAlias{} }
     func (*HostAlias) ProtoMessage() {}
     func (*HostAlias) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{70}
    +	return fileDescriptor_6c07b07c062484ab, []int{74}
     }
     func (m *HostAlias) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2040,7 +2152,7 @@ var xxx_messageInfo_HostAlias proto.InternalMessageInfo
     func (m *HostIP) Reset()      { *m = HostIP{} }
     func (*HostIP) ProtoMessage() {}
     func (*HostIP) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{71}
    +	return fileDescriptor_6c07b07c062484ab, []int{75}
     }
     func (m *HostIP) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2068,7 +2180,7 @@ var xxx_messageInfo_HostIP proto.InternalMessageInfo
     func (m *HostPathVolumeSource) Reset()      { *m = HostPathVolumeSource{} }
     func (*HostPathVolumeSource) ProtoMessage() {}
     func (*HostPathVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{72}
    +	return fileDescriptor_6c07b07c062484ab, []int{76}
     }
     func (m *HostPathVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2096,7 +2208,7 @@ var xxx_messageInfo_HostPathVolumeSource proto.InternalMessageInfo
     func (m *ISCSIPersistentVolumeSource) Reset()      { *m = ISCSIPersistentVolumeSource{} }
     func (*ISCSIPersistentVolumeSource) ProtoMessage() {}
     func (*ISCSIPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{73}
    +	return fileDescriptor_6c07b07c062484ab, []int{77}
     }
     func (m *ISCSIPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2124,7 +2236,7 @@ var xxx_messageInfo_ISCSIPersistentVolumeSource proto.InternalMessageInfo
     func (m *ISCSIVolumeSource) Reset()      { *m = ISCSIVolumeSource{} }
     func (*ISCSIVolumeSource) ProtoMessage() {}
     func (*ISCSIVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{74}
    +	return fileDescriptor_6c07b07c062484ab, []int{78}
     }
     func (m *ISCSIVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2152,7 +2264,7 @@ var xxx_messageInfo_ISCSIVolumeSource proto.InternalMessageInfo
     func (m *ImageVolumeSource) Reset()      { *m = ImageVolumeSource{} }
     func (*ImageVolumeSource) ProtoMessage() {}
     func (*ImageVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{75}
    +	return fileDescriptor_6c07b07c062484ab, []int{79}
     }
     func (m *ImageVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2180,7 +2292,7 @@ var xxx_messageInfo_ImageVolumeSource proto.InternalMessageInfo
     func (m *KeyToPath) Reset()      { *m = KeyToPath{} }
     func (*KeyToPath) ProtoMessage() {}
     func (*KeyToPath) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{76}
    +	return fileDescriptor_6c07b07c062484ab, []int{80}
     }
     func (m *KeyToPath) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2208,7 +2320,7 @@ var xxx_messageInfo_KeyToPath proto.InternalMessageInfo
     func (m *Lifecycle) Reset()      { *m = Lifecycle{} }
     func (*Lifecycle) ProtoMessage() {}
     func (*Lifecycle) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{77}
    +	return fileDescriptor_6c07b07c062484ab, []int{81}
     }
     func (m *Lifecycle) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2236,7 +2348,7 @@ var xxx_messageInfo_Lifecycle proto.InternalMessageInfo
     func (m *LifecycleHandler) Reset()      { *m = LifecycleHandler{} }
     func (*LifecycleHandler) ProtoMessage() {}
     func (*LifecycleHandler) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{78}
    +	return fileDescriptor_6c07b07c062484ab, []int{82}
     }
     func (m *LifecycleHandler) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2264,7 +2376,7 @@ var xxx_messageInfo_LifecycleHandler proto.InternalMessageInfo
     func (m *LimitRange) Reset()      { *m = LimitRange{} }
     func (*LimitRange) ProtoMessage() {}
     func (*LimitRange) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{79}
    +	return fileDescriptor_6c07b07c062484ab, []int{83}
     }
     func (m *LimitRange) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2292,7 +2404,7 @@ var xxx_messageInfo_LimitRange proto.InternalMessageInfo
     func (m *LimitRangeItem) Reset()      { *m = LimitRangeItem{} }
     func (*LimitRangeItem) ProtoMessage() {}
     func (*LimitRangeItem) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{80}
    +	return fileDescriptor_6c07b07c062484ab, []int{84}
     }
     func (m *LimitRangeItem) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2320,7 +2432,7 @@ var xxx_messageInfo_LimitRangeItem proto.InternalMessageInfo
     func (m *LimitRangeList) Reset()      { *m = LimitRangeList{} }
     func (*LimitRangeList) ProtoMessage() {}
     func (*LimitRangeList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{81}
    +	return fileDescriptor_6c07b07c062484ab, []int{85}
     }
     func (m *LimitRangeList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2348,7 +2460,7 @@ var xxx_messageInfo_LimitRangeList proto.InternalMessageInfo
     func (m *LimitRangeSpec) Reset()      { *m = LimitRangeSpec{} }
     func (*LimitRangeSpec) ProtoMessage() {}
     func (*LimitRangeSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{82}
    +	return fileDescriptor_6c07b07c062484ab, []int{86}
     }
     func (m *LimitRangeSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2376,7 +2488,7 @@ var xxx_messageInfo_LimitRangeSpec proto.InternalMessageInfo
     func (m *LinuxContainerUser) Reset()      { *m = LinuxContainerUser{} }
     func (*LinuxContainerUser) ProtoMessage() {}
     func (*LinuxContainerUser) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{83}
    +	return fileDescriptor_6c07b07c062484ab, []int{87}
     }
     func (m *LinuxContainerUser) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2404,7 +2516,7 @@ var xxx_messageInfo_LinuxContainerUser proto.InternalMessageInfo
     func (m *List) Reset()      { *m = List{} }
     func (*List) ProtoMessage() {}
     func (*List) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{84}
    +	return fileDescriptor_6c07b07c062484ab, []int{88}
     }
     func (m *List) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2432,7 +2544,7 @@ var xxx_messageInfo_List proto.InternalMessageInfo
     func (m *LoadBalancerIngress) Reset()      { *m = LoadBalancerIngress{} }
     func (*LoadBalancerIngress) ProtoMessage() {}
     func (*LoadBalancerIngress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{85}
    +	return fileDescriptor_6c07b07c062484ab, []int{89}
     }
     func (m *LoadBalancerIngress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2460,7 +2572,7 @@ var xxx_messageInfo_LoadBalancerIngress proto.InternalMessageInfo
     func (m *LoadBalancerStatus) Reset()      { *m = LoadBalancerStatus{} }
     func (*LoadBalancerStatus) ProtoMessage() {}
     func (*LoadBalancerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{86}
    +	return fileDescriptor_6c07b07c062484ab, []int{90}
     }
     func (m *LoadBalancerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2488,7 +2600,7 @@ var xxx_messageInfo_LoadBalancerStatus proto.InternalMessageInfo
     func (m *LocalObjectReference) Reset()      { *m = LocalObjectReference{} }
     func (*LocalObjectReference) ProtoMessage() {}
     func (*LocalObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{87}
    +	return fileDescriptor_6c07b07c062484ab, []int{91}
     }
     func (m *LocalObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2516,7 +2628,7 @@ var xxx_messageInfo_LocalObjectReference proto.InternalMessageInfo
     func (m *LocalVolumeSource) Reset()      { *m = LocalVolumeSource{} }
     func (*LocalVolumeSource) ProtoMessage() {}
     func (*LocalVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{88}
    +	return fileDescriptor_6c07b07c062484ab, []int{92}
     }
     func (m *LocalVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2544,7 +2656,7 @@ var xxx_messageInfo_LocalVolumeSource proto.InternalMessageInfo
     func (m *ModifyVolumeStatus) Reset()      { *m = ModifyVolumeStatus{} }
     func (*ModifyVolumeStatus) ProtoMessage() {}
     func (*ModifyVolumeStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{89}
    +	return fileDescriptor_6c07b07c062484ab, []int{93}
     }
     func (m *ModifyVolumeStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2572,7 +2684,7 @@ var xxx_messageInfo_ModifyVolumeStatus proto.InternalMessageInfo
     func (m *NFSVolumeSource) Reset()      { *m = NFSVolumeSource{} }
     func (*NFSVolumeSource) ProtoMessage() {}
     func (*NFSVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{90}
    +	return fileDescriptor_6c07b07c062484ab, []int{94}
     }
     func (m *NFSVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2600,7 +2712,7 @@ var xxx_messageInfo_NFSVolumeSource proto.InternalMessageInfo
     func (m *Namespace) Reset()      { *m = Namespace{} }
     func (*Namespace) ProtoMessage() {}
     func (*Namespace) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{91}
    +	return fileDescriptor_6c07b07c062484ab, []int{95}
     }
     func (m *Namespace) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2628,7 +2740,7 @@ var xxx_messageInfo_Namespace proto.InternalMessageInfo
     func (m *NamespaceCondition) Reset()      { *m = NamespaceCondition{} }
     func (*NamespaceCondition) ProtoMessage() {}
     func (*NamespaceCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{92}
    +	return fileDescriptor_6c07b07c062484ab, []int{96}
     }
     func (m *NamespaceCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2656,7 +2768,7 @@ var xxx_messageInfo_NamespaceCondition proto.InternalMessageInfo
     func (m *NamespaceList) Reset()      { *m = NamespaceList{} }
     func (*NamespaceList) ProtoMessage() {}
     func (*NamespaceList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{93}
    +	return fileDescriptor_6c07b07c062484ab, []int{97}
     }
     func (m *NamespaceList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2684,7 +2796,7 @@ var xxx_messageInfo_NamespaceList proto.InternalMessageInfo
     func (m *NamespaceSpec) Reset()      { *m = NamespaceSpec{} }
     func (*NamespaceSpec) ProtoMessage() {}
     func (*NamespaceSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{94}
    +	return fileDescriptor_6c07b07c062484ab, []int{98}
     }
     func (m *NamespaceSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2712,7 +2824,7 @@ var xxx_messageInfo_NamespaceSpec proto.InternalMessageInfo
     func (m *NamespaceStatus) Reset()      { *m = NamespaceStatus{} }
     func (*NamespaceStatus) ProtoMessage() {}
     func (*NamespaceStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{95}
    +	return fileDescriptor_6c07b07c062484ab, []int{99}
     }
     func (m *NamespaceStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2740,7 +2852,7 @@ var xxx_messageInfo_NamespaceStatus proto.InternalMessageInfo
     func (m *Node) Reset()      { *m = Node{} }
     func (*Node) ProtoMessage() {}
     func (*Node) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{96}
    +	return fileDescriptor_6c07b07c062484ab, []int{100}
     }
     func (m *Node) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2768,7 +2880,7 @@ var xxx_messageInfo_Node proto.InternalMessageInfo
     func (m *NodeAddress) Reset()      { *m = NodeAddress{} }
     func (*NodeAddress) ProtoMessage() {}
     func (*NodeAddress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{97}
    +	return fileDescriptor_6c07b07c062484ab, []int{101}
     }
     func (m *NodeAddress) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2796,7 +2908,7 @@ var xxx_messageInfo_NodeAddress proto.InternalMessageInfo
     func (m *NodeAffinity) Reset()      { *m = NodeAffinity{} }
     func (*NodeAffinity) ProtoMessage() {}
     func (*NodeAffinity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{98}
    +	return fileDescriptor_6c07b07c062484ab, []int{102}
     }
     func (m *NodeAffinity) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2824,7 +2936,7 @@ var xxx_messageInfo_NodeAffinity proto.InternalMessageInfo
     func (m *NodeCondition) Reset()      { *m = NodeCondition{} }
     func (*NodeCondition) ProtoMessage() {}
     func (*NodeCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{99}
    +	return fileDescriptor_6c07b07c062484ab, []int{103}
     }
     func (m *NodeCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2852,7 +2964,7 @@ var xxx_messageInfo_NodeCondition proto.InternalMessageInfo
     func (m *NodeConfigSource) Reset()      { *m = NodeConfigSource{} }
     func (*NodeConfigSource) ProtoMessage() {}
     func (*NodeConfigSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{100}
    +	return fileDescriptor_6c07b07c062484ab, []int{104}
     }
     func (m *NodeConfigSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2880,7 +2992,7 @@ var xxx_messageInfo_NodeConfigSource proto.InternalMessageInfo
     func (m *NodeConfigStatus) Reset()      { *m = NodeConfigStatus{} }
     func (*NodeConfigStatus) ProtoMessage() {}
     func (*NodeConfigStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{101}
    +	return fileDescriptor_6c07b07c062484ab, []int{105}
     }
     func (m *NodeConfigStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2908,7 +3020,7 @@ var xxx_messageInfo_NodeConfigStatus proto.InternalMessageInfo
     func (m *NodeDaemonEndpoints) Reset()      { *m = NodeDaemonEndpoints{} }
     func (*NodeDaemonEndpoints) ProtoMessage() {}
     func (*NodeDaemonEndpoints) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{102}
    +	return fileDescriptor_6c07b07c062484ab, []int{106}
     }
     func (m *NodeDaemonEndpoints) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2936,7 +3048,7 @@ var xxx_messageInfo_NodeDaemonEndpoints proto.InternalMessageInfo
     func (m *NodeFeatures) Reset()      { *m = NodeFeatures{} }
     func (*NodeFeatures) ProtoMessage() {}
     func (*NodeFeatures) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{103}
    +	return fileDescriptor_6c07b07c062484ab, []int{107}
     }
     func (m *NodeFeatures) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2964,7 +3076,7 @@ var xxx_messageInfo_NodeFeatures proto.InternalMessageInfo
     func (m *NodeList) Reset()      { *m = NodeList{} }
     func (*NodeList) ProtoMessage() {}
     func (*NodeList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{104}
    +	return fileDescriptor_6c07b07c062484ab, []int{108}
     }
     func (m *NodeList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -2992,7 +3104,7 @@ var xxx_messageInfo_NodeList proto.InternalMessageInfo
     func (m *NodeProxyOptions) Reset()      { *m = NodeProxyOptions{} }
     func (*NodeProxyOptions) ProtoMessage() {}
     func (*NodeProxyOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{105}
    +	return fileDescriptor_6c07b07c062484ab, []int{109}
     }
     func (m *NodeProxyOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3020,7 +3132,7 @@ var xxx_messageInfo_NodeProxyOptions proto.InternalMessageInfo
     func (m *NodeRuntimeHandler) Reset()      { *m = NodeRuntimeHandler{} }
     func (*NodeRuntimeHandler) ProtoMessage() {}
     func (*NodeRuntimeHandler) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{106}
    +	return fileDescriptor_6c07b07c062484ab, []int{110}
     }
     func (m *NodeRuntimeHandler) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3048,7 +3160,7 @@ var xxx_messageInfo_NodeRuntimeHandler proto.InternalMessageInfo
     func (m *NodeRuntimeHandlerFeatures) Reset()      { *m = NodeRuntimeHandlerFeatures{} }
     func (*NodeRuntimeHandlerFeatures) ProtoMessage() {}
     func (*NodeRuntimeHandlerFeatures) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{107}
    +	return fileDescriptor_6c07b07c062484ab, []int{111}
     }
     func (m *NodeRuntimeHandlerFeatures) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3076,7 +3188,7 @@ var xxx_messageInfo_NodeRuntimeHandlerFeatures proto.InternalMessageInfo
     func (m *NodeSelector) Reset()      { *m = NodeSelector{} }
     func (*NodeSelector) ProtoMessage() {}
     func (*NodeSelector) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{108}
    +	return fileDescriptor_6c07b07c062484ab, []int{112}
     }
     func (m *NodeSelector) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3104,7 +3216,7 @@ var xxx_messageInfo_NodeSelector proto.InternalMessageInfo
     func (m *NodeSelectorRequirement) Reset()      { *m = NodeSelectorRequirement{} }
     func (*NodeSelectorRequirement) ProtoMessage() {}
     func (*NodeSelectorRequirement) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{109}
    +	return fileDescriptor_6c07b07c062484ab, []int{113}
     }
     func (m *NodeSelectorRequirement) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3132,7 +3244,7 @@ var xxx_messageInfo_NodeSelectorRequirement proto.InternalMessageInfo
     func (m *NodeSelectorTerm) Reset()      { *m = NodeSelectorTerm{} }
     func (*NodeSelectorTerm) ProtoMessage() {}
     func (*NodeSelectorTerm) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{110}
    +	return fileDescriptor_6c07b07c062484ab, []int{114}
     }
     func (m *NodeSelectorTerm) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3160,7 +3272,7 @@ var xxx_messageInfo_NodeSelectorTerm proto.InternalMessageInfo
     func (m *NodeSpec) Reset()      { *m = NodeSpec{} }
     func (*NodeSpec) ProtoMessage() {}
     func (*NodeSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{111}
    +	return fileDescriptor_6c07b07c062484ab, []int{115}
     }
     func (m *NodeSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3188,7 +3300,7 @@ var xxx_messageInfo_NodeSpec proto.InternalMessageInfo
     func (m *NodeStatus) Reset()      { *m = NodeStatus{} }
     func (*NodeStatus) ProtoMessage() {}
     func (*NodeStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{112}
    +	return fileDescriptor_6c07b07c062484ab, []int{116}
     }
     func (m *NodeStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3216,7 +3328,7 @@ var xxx_messageInfo_NodeStatus proto.InternalMessageInfo
     func (m *NodeSwapStatus) Reset()      { *m = NodeSwapStatus{} }
     func (*NodeSwapStatus) ProtoMessage() {}
     func (*NodeSwapStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{113}
    +	return fileDescriptor_6c07b07c062484ab, []int{117}
     }
     func (m *NodeSwapStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3244,7 +3356,7 @@ var xxx_messageInfo_NodeSwapStatus proto.InternalMessageInfo
     func (m *NodeSystemInfo) Reset()      { *m = NodeSystemInfo{} }
     func (*NodeSystemInfo) ProtoMessage() {}
     func (*NodeSystemInfo) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{114}
    +	return fileDescriptor_6c07b07c062484ab, []int{118}
     }
     func (m *NodeSystemInfo) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3272,7 +3384,7 @@ var xxx_messageInfo_NodeSystemInfo proto.InternalMessageInfo
     func (m *ObjectFieldSelector) Reset()      { *m = ObjectFieldSelector{} }
     func (*ObjectFieldSelector) ProtoMessage() {}
     func (*ObjectFieldSelector) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{115}
    +	return fileDescriptor_6c07b07c062484ab, []int{119}
     }
     func (m *ObjectFieldSelector) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3300,7 +3412,7 @@ var xxx_messageInfo_ObjectFieldSelector proto.InternalMessageInfo
     func (m *ObjectReference) Reset()      { *m = ObjectReference{} }
     func (*ObjectReference) ProtoMessage() {}
     func (*ObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{116}
    +	return fileDescriptor_6c07b07c062484ab, []int{120}
     }
     func (m *ObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3328,7 +3440,7 @@ var xxx_messageInfo_ObjectReference proto.InternalMessageInfo
     func (m *PersistentVolume) Reset()      { *m = PersistentVolume{} }
     func (*PersistentVolume) ProtoMessage() {}
     func (*PersistentVolume) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{117}
    +	return fileDescriptor_6c07b07c062484ab, []int{121}
     }
     func (m *PersistentVolume) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3356,7 +3468,7 @@ var xxx_messageInfo_PersistentVolume proto.InternalMessageInfo
     func (m *PersistentVolumeClaim) Reset()      { *m = PersistentVolumeClaim{} }
     func (*PersistentVolumeClaim) ProtoMessage() {}
     func (*PersistentVolumeClaim) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{118}
    +	return fileDescriptor_6c07b07c062484ab, []int{122}
     }
     func (m *PersistentVolumeClaim) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3384,7 +3496,7 @@ var xxx_messageInfo_PersistentVolumeClaim proto.InternalMessageInfo
     func (m *PersistentVolumeClaimCondition) Reset()      { *m = PersistentVolumeClaimCondition{} }
     func (*PersistentVolumeClaimCondition) ProtoMessage() {}
     func (*PersistentVolumeClaimCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{119}
    +	return fileDescriptor_6c07b07c062484ab, []int{123}
     }
     func (m *PersistentVolumeClaimCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3412,7 +3524,7 @@ var xxx_messageInfo_PersistentVolumeClaimCondition proto.InternalMessageInfo
     func (m *PersistentVolumeClaimList) Reset()      { *m = PersistentVolumeClaimList{} }
     func (*PersistentVolumeClaimList) ProtoMessage() {}
     func (*PersistentVolumeClaimList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{120}
    +	return fileDescriptor_6c07b07c062484ab, []int{124}
     }
     func (m *PersistentVolumeClaimList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3440,7 +3552,7 @@ var xxx_messageInfo_PersistentVolumeClaimList proto.InternalMessageInfo
     func (m *PersistentVolumeClaimSpec) Reset()      { *m = PersistentVolumeClaimSpec{} }
     func (*PersistentVolumeClaimSpec) ProtoMessage() {}
     func (*PersistentVolumeClaimSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{121}
    +	return fileDescriptor_6c07b07c062484ab, []int{125}
     }
     func (m *PersistentVolumeClaimSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3468,7 +3580,7 @@ var xxx_messageInfo_PersistentVolumeClaimSpec proto.InternalMessageInfo
     func (m *PersistentVolumeClaimStatus) Reset()      { *m = PersistentVolumeClaimStatus{} }
     func (*PersistentVolumeClaimStatus) ProtoMessage() {}
     func (*PersistentVolumeClaimStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{122}
    +	return fileDescriptor_6c07b07c062484ab, []int{126}
     }
     func (m *PersistentVolumeClaimStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3496,7 +3608,7 @@ var xxx_messageInfo_PersistentVolumeClaimStatus proto.InternalMessageInfo
     func (m *PersistentVolumeClaimTemplate) Reset()      { *m = PersistentVolumeClaimTemplate{} }
     func (*PersistentVolumeClaimTemplate) ProtoMessage() {}
     func (*PersistentVolumeClaimTemplate) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{123}
    +	return fileDescriptor_6c07b07c062484ab, []int{127}
     }
     func (m *PersistentVolumeClaimTemplate) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3524,7 +3636,7 @@ var xxx_messageInfo_PersistentVolumeClaimTemplate proto.InternalMessageInfo
     func (m *PersistentVolumeClaimVolumeSource) Reset()      { *m = PersistentVolumeClaimVolumeSource{} }
     func (*PersistentVolumeClaimVolumeSource) ProtoMessage() {}
     func (*PersistentVolumeClaimVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{124}
    +	return fileDescriptor_6c07b07c062484ab, []int{128}
     }
     func (m *PersistentVolumeClaimVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3552,7 +3664,7 @@ var xxx_messageInfo_PersistentVolumeClaimVolumeSource proto.InternalMessageInfo
     func (m *PersistentVolumeList) Reset()      { *m = PersistentVolumeList{} }
     func (*PersistentVolumeList) ProtoMessage() {}
     func (*PersistentVolumeList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{125}
    +	return fileDescriptor_6c07b07c062484ab, []int{129}
     }
     func (m *PersistentVolumeList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3580,7 +3692,7 @@ var xxx_messageInfo_PersistentVolumeList proto.InternalMessageInfo
     func (m *PersistentVolumeSource) Reset()      { *m = PersistentVolumeSource{} }
     func (*PersistentVolumeSource) ProtoMessage() {}
     func (*PersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{126}
    +	return fileDescriptor_6c07b07c062484ab, []int{130}
     }
     func (m *PersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3608,7 +3720,7 @@ var xxx_messageInfo_PersistentVolumeSource proto.InternalMessageInfo
     func (m *PersistentVolumeSpec) Reset()      { *m = PersistentVolumeSpec{} }
     func (*PersistentVolumeSpec) ProtoMessage() {}
     func (*PersistentVolumeSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{127}
    +	return fileDescriptor_6c07b07c062484ab, []int{131}
     }
     func (m *PersistentVolumeSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3636,7 +3748,7 @@ var xxx_messageInfo_PersistentVolumeSpec proto.InternalMessageInfo
     func (m *PersistentVolumeStatus) Reset()      { *m = PersistentVolumeStatus{} }
     func (*PersistentVolumeStatus) ProtoMessage() {}
     func (*PersistentVolumeStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{128}
    +	return fileDescriptor_6c07b07c062484ab, []int{132}
     }
     func (m *PersistentVolumeStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3664,7 +3776,7 @@ var xxx_messageInfo_PersistentVolumeStatus proto.InternalMessageInfo
     func (m *PhotonPersistentDiskVolumeSource) Reset()      { *m = PhotonPersistentDiskVolumeSource{} }
     func (*PhotonPersistentDiskVolumeSource) ProtoMessage() {}
     func (*PhotonPersistentDiskVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{129}
    +	return fileDescriptor_6c07b07c062484ab, []int{133}
     }
     func (m *PhotonPersistentDiskVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3692,7 +3804,7 @@ var xxx_messageInfo_PhotonPersistentDiskVolumeSource proto.InternalMessageInfo
     func (m *Pod) Reset()      { *m = Pod{} }
     func (*Pod) ProtoMessage() {}
     func (*Pod) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{130}
    +	return fileDescriptor_6c07b07c062484ab, []int{134}
     }
     func (m *Pod) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3720,7 +3832,7 @@ var xxx_messageInfo_Pod proto.InternalMessageInfo
     func (m *PodAffinity) Reset()      { *m = PodAffinity{} }
     func (*PodAffinity) ProtoMessage() {}
     func (*PodAffinity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{131}
    +	return fileDescriptor_6c07b07c062484ab, []int{135}
     }
     func (m *PodAffinity) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3748,7 +3860,7 @@ var xxx_messageInfo_PodAffinity proto.InternalMessageInfo
     func (m *PodAffinityTerm) Reset()      { *m = PodAffinityTerm{} }
     func (*PodAffinityTerm) ProtoMessage() {}
     func (*PodAffinityTerm) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{132}
    +	return fileDescriptor_6c07b07c062484ab, []int{136}
     }
     func (m *PodAffinityTerm) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3776,7 +3888,7 @@ var xxx_messageInfo_PodAffinityTerm proto.InternalMessageInfo
     func (m *PodAntiAffinity) Reset()      { *m = PodAntiAffinity{} }
     func (*PodAntiAffinity) ProtoMessage() {}
     func (*PodAntiAffinity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{133}
    +	return fileDescriptor_6c07b07c062484ab, []int{137}
     }
     func (m *PodAntiAffinity) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3804,7 +3916,7 @@ var xxx_messageInfo_PodAntiAffinity proto.InternalMessageInfo
     func (m *PodAttachOptions) Reset()      { *m = PodAttachOptions{} }
     func (*PodAttachOptions) ProtoMessage() {}
     func (*PodAttachOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{134}
    +	return fileDescriptor_6c07b07c062484ab, []int{138}
     }
     func (m *PodAttachOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3829,10 +3941,38 @@ func (m *PodAttachOptions) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_PodAttachOptions proto.InternalMessageInfo
     
    +func (m *PodCertificateProjection) Reset()      { *m = PodCertificateProjection{} }
    +func (*PodCertificateProjection) ProtoMessage() {}
    +func (*PodCertificateProjection) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{139}
    +}
    +func (m *PodCertificateProjection) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *PodCertificateProjection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *PodCertificateProjection) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_PodCertificateProjection.Merge(m, src)
    +}
    +func (m *PodCertificateProjection) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *PodCertificateProjection) XXX_DiscardUnknown() {
    +	xxx_messageInfo_PodCertificateProjection.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_PodCertificateProjection proto.InternalMessageInfo
    +
     func (m *PodCondition) Reset()      { *m = PodCondition{} }
     func (*PodCondition) ProtoMessage() {}
     func (*PodCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{135}
    +	return fileDescriptor_6c07b07c062484ab, []int{140}
     }
     func (m *PodCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3860,7 +4000,7 @@ var xxx_messageInfo_PodCondition proto.InternalMessageInfo
     func (m *PodDNSConfig) Reset()      { *m = PodDNSConfig{} }
     func (*PodDNSConfig) ProtoMessage() {}
     func (*PodDNSConfig) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{136}
    +	return fileDescriptor_6c07b07c062484ab, []int{141}
     }
     func (m *PodDNSConfig) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3888,7 +4028,7 @@ var xxx_messageInfo_PodDNSConfig proto.InternalMessageInfo
     func (m *PodDNSConfigOption) Reset()      { *m = PodDNSConfigOption{} }
     func (*PodDNSConfigOption) ProtoMessage() {}
     func (*PodDNSConfigOption) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{137}
    +	return fileDescriptor_6c07b07c062484ab, []int{142}
     }
     func (m *PodDNSConfigOption) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3916,7 +4056,7 @@ var xxx_messageInfo_PodDNSConfigOption proto.InternalMessageInfo
     func (m *PodExecOptions) Reset()      { *m = PodExecOptions{} }
     func (*PodExecOptions) ProtoMessage() {}
     func (*PodExecOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{138}
    +	return fileDescriptor_6c07b07c062484ab, []int{143}
     }
     func (m *PodExecOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3941,10 +4081,38 @@ func (m *PodExecOptions) XXX_DiscardUnknown() {
     
     var xxx_messageInfo_PodExecOptions proto.InternalMessageInfo
     
    +func (m *PodExtendedResourceClaimStatus) Reset()      { *m = PodExtendedResourceClaimStatus{} }
    +func (*PodExtendedResourceClaimStatus) ProtoMessage() {}
    +func (*PodExtendedResourceClaimStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_6c07b07c062484ab, []int{144}
    +}
    +func (m *PodExtendedResourceClaimStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *PodExtendedResourceClaimStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *PodExtendedResourceClaimStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_PodExtendedResourceClaimStatus.Merge(m, src)
    +}
    +func (m *PodExtendedResourceClaimStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *PodExtendedResourceClaimStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_PodExtendedResourceClaimStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_PodExtendedResourceClaimStatus proto.InternalMessageInfo
    +
     func (m *PodIP) Reset()      { *m = PodIP{} }
     func (*PodIP) ProtoMessage() {}
     func (*PodIP) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{139}
    +	return fileDescriptor_6c07b07c062484ab, []int{145}
     }
     func (m *PodIP) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -3972,7 +4140,7 @@ var xxx_messageInfo_PodIP proto.InternalMessageInfo
     func (m *PodList) Reset()      { *m = PodList{} }
     func (*PodList) ProtoMessage() {}
     func (*PodList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{140}
    +	return fileDescriptor_6c07b07c062484ab, []int{146}
     }
     func (m *PodList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4000,7 +4168,7 @@ var xxx_messageInfo_PodList proto.InternalMessageInfo
     func (m *PodLogOptions) Reset()      { *m = PodLogOptions{} }
     func (*PodLogOptions) ProtoMessage() {}
     func (*PodLogOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{141}
    +	return fileDescriptor_6c07b07c062484ab, []int{147}
     }
     func (m *PodLogOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4028,7 +4196,7 @@ var xxx_messageInfo_PodLogOptions proto.InternalMessageInfo
     func (m *PodOS) Reset()      { *m = PodOS{} }
     func (*PodOS) ProtoMessage() {}
     func (*PodOS) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{142}
    +	return fileDescriptor_6c07b07c062484ab, []int{148}
     }
     func (m *PodOS) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4056,7 +4224,7 @@ var xxx_messageInfo_PodOS proto.InternalMessageInfo
     func (m *PodPortForwardOptions) Reset()      { *m = PodPortForwardOptions{} }
     func (*PodPortForwardOptions) ProtoMessage() {}
     func (*PodPortForwardOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{143}
    +	return fileDescriptor_6c07b07c062484ab, []int{149}
     }
     func (m *PodPortForwardOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4084,7 +4252,7 @@ var xxx_messageInfo_PodPortForwardOptions proto.InternalMessageInfo
     func (m *PodProxyOptions) Reset()      { *m = PodProxyOptions{} }
     func (*PodProxyOptions) ProtoMessage() {}
     func (*PodProxyOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{144}
    +	return fileDescriptor_6c07b07c062484ab, []int{150}
     }
     func (m *PodProxyOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4112,7 +4280,7 @@ var xxx_messageInfo_PodProxyOptions proto.InternalMessageInfo
     func (m *PodReadinessGate) Reset()      { *m = PodReadinessGate{} }
     func (*PodReadinessGate) ProtoMessage() {}
     func (*PodReadinessGate) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{145}
    +	return fileDescriptor_6c07b07c062484ab, []int{151}
     }
     func (m *PodReadinessGate) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4140,7 +4308,7 @@ var xxx_messageInfo_PodReadinessGate proto.InternalMessageInfo
     func (m *PodResourceClaim) Reset()      { *m = PodResourceClaim{} }
     func (*PodResourceClaim) ProtoMessage() {}
     func (*PodResourceClaim) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{146}
    +	return fileDescriptor_6c07b07c062484ab, []int{152}
     }
     func (m *PodResourceClaim) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4168,7 +4336,7 @@ var xxx_messageInfo_PodResourceClaim proto.InternalMessageInfo
     func (m *PodResourceClaimStatus) Reset()      { *m = PodResourceClaimStatus{} }
     func (*PodResourceClaimStatus) ProtoMessage() {}
     func (*PodResourceClaimStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{147}
    +	return fileDescriptor_6c07b07c062484ab, []int{153}
     }
     func (m *PodResourceClaimStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4196,7 +4364,7 @@ var xxx_messageInfo_PodResourceClaimStatus proto.InternalMessageInfo
     func (m *PodSchedulingGate) Reset()      { *m = PodSchedulingGate{} }
     func (*PodSchedulingGate) ProtoMessage() {}
     func (*PodSchedulingGate) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{148}
    +	return fileDescriptor_6c07b07c062484ab, []int{154}
     }
     func (m *PodSchedulingGate) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4224,7 +4392,7 @@ var xxx_messageInfo_PodSchedulingGate proto.InternalMessageInfo
     func (m *PodSecurityContext) Reset()      { *m = PodSecurityContext{} }
     func (*PodSecurityContext) ProtoMessage() {}
     func (*PodSecurityContext) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{149}
    +	return fileDescriptor_6c07b07c062484ab, []int{155}
     }
     func (m *PodSecurityContext) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4252,7 +4420,7 @@ var xxx_messageInfo_PodSecurityContext proto.InternalMessageInfo
     func (m *PodSignature) Reset()      { *m = PodSignature{} }
     func (*PodSignature) ProtoMessage() {}
     func (*PodSignature) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{150}
    +	return fileDescriptor_6c07b07c062484ab, []int{156}
     }
     func (m *PodSignature) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4280,7 +4448,7 @@ var xxx_messageInfo_PodSignature proto.InternalMessageInfo
     func (m *PodSpec) Reset()      { *m = PodSpec{} }
     func (*PodSpec) ProtoMessage() {}
     func (*PodSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{151}
    +	return fileDescriptor_6c07b07c062484ab, []int{157}
     }
     func (m *PodSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4308,7 +4476,7 @@ var xxx_messageInfo_PodSpec proto.InternalMessageInfo
     func (m *PodStatus) Reset()      { *m = PodStatus{} }
     func (*PodStatus) ProtoMessage() {}
     func (*PodStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{152}
    +	return fileDescriptor_6c07b07c062484ab, []int{158}
     }
     func (m *PodStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4336,7 +4504,7 @@ var xxx_messageInfo_PodStatus proto.InternalMessageInfo
     func (m *PodStatusResult) Reset()      { *m = PodStatusResult{} }
     func (*PodStatusResult) ProtoMessage() {}
     func (*PodStatusResult) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{153}
    +	return fileDescriptor_6c07b07c062484ab, []int{159}
     }
     func (m *PodStatusResult) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4364,7 +4532,7 @@ var xxx_messageInfo_PodStatusResult proto.InternalMessageInfo
     func (m *PodTemplate) Reset()      { *m = PodTemplate{} }
     func (*PodTemplate) ProtoMessage() {}
     func (*PodTemplate) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{154}
    +	return fileDescriptor_6c07b07c062484ab, []int{160}
     }
     func (m *PodTemplate) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4392,7 +4560,7 @@ var xxx_messageInfo_PodTemplate proto.InternalMessageInfo
     func (m *PodTemplateList) Reset()      { *m = PodTemplateList{} }
     func (*PodTemplateList) ProtoMessage() {}
     func (*PodTemplateList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{155}
    +	return fileDescriptor_6c07b07c062484ab, []int{161}
     }
     func (m *PodTemplateList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4420,7 +4588,7 @@ var xxx_messageInfo_PodTemplateList proto.InternalMessageInfo
     func (m *PodTemplateSpec) Reset()      { *m = PodTemplateSpec{} }
     func (*PodTemplateSpec) ProtoMessage() {}
     func (*PodTemplateSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{156}
    +	return fileDescriptor_6c07b07c062484ab, []int{162}
     }
     func (m *PodTemplateSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4448,7 +4616,7 @@ var xxx_messageInfo_PodTemplateSpec proto.InternalMessageInfo
     func (m *PortStatus) Reset()      { *m = PortStatus{} }
     func (*PortStatus) ProtoMessage() {}
     func (*PortStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{157}
    +	return fileDescriptor_6c07b07c062484ab, []int{163}
     }
     func (m *PortStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4476,7 +4644,7 @@ var xxx_messageInfo_PortStatus proto.InternalMessageInfo
     func (m *PortworxVolumeSource) Reset()      { *m = PortworxVolumeSource{} }
     func (*PortworxVolumeSource) ProtoMessage() {}
     func (*PortworxVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{158}
    +	return fileDescriptor_6c07b07c062484ab, []int{164}
     }
     func (m *PortworxVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4504,7 +4672,7 @@ var xxx_messageInfo_PortworxVolumeSource proto.InternalMessageInfo
     func (m *Preconditions) Reset()      { *m = Preconditions{} }
     func (*Preconditions) ProtoMessage() {}
     func (*Preconditions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{159}
    +	return fileDescriptor_6c07b07c062484ab, []int{165}
     }
     func (m *Preconditions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4532,7 +4700,7 @@ var xxx_messageInfo_Preconditions proto.InternalMessageInfo
     func (m *PreferAvoidPodsEntry) Reset()      { *m = PreferAvoidPodsEntry{} }
     func (*PreferAvoidPodsEntry) ProtoMessage() {}
     func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{160}
    +	return fileDescriptor_6c07b07c062484ab, []int{166}
     }
     func (m *PreferAvoidPodsEntry) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4560,7 +4728,7 @@ var xxx_messageInfo_PreferAvoidPodsEntry proto.InternalMessageInfo
     func (m *PreferredSchedulingTerm) Reset()      { *m = PreferredSchedulingTerm{} }
     func (*PreferredSchedulingTerm) ProtoMessage() {}
     func (*PreferredSchedulingTerm) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{161}
    +	return fileDescriptor_6c07b07c062484ab, []int{167}
     }
     func (m *PreferredSchedulingTerm) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4588,7 +4756,7 @@ var xxx_messageInfo_PreferredSchedulingTerm proto.InternalMessageInfo
     func (m *Probe) Reset()      { *m = Probe{} }
     func (*Probe) ProtoMessage() {}
     func (*Probe) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{162}
    +	return fileDescriptor_6c07b07c062484ab, []int{168}
     }
     func (m *Probe) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4616,7 +4784,7 @@ var xxx_messageInfo_Probe proto.InternalMessageInfo
     func (m *ProbeHandler) Reset()      { *m = ProbeHandler{} }
     func (*ProbeHandler) ProtoMessage() {}
     func (*ProbeHandler) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{163}
    +	return fileDescriptor_6c07b07c062484ab, []int{169}
     }
     func (m *ProbeHandler) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4644,7 +4812,7 @@ var xxx_messageInfo_ProbeHandler proto.InternalMessageInfo
     func (m *ProjectedVolumeSource) Reset()      { *m = ProjectedVolumeSource{} }
     func (*ProjectedVolumeSource) ProtoMessage() {}
     func (*ProjectedVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{164}
    +	return fileDescriptor_6c07b07c062484ab, []int{170}
     }
     func (m *ProjectedVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4672,7 +4840,7 @@ var xxx_messageInfo_ProjectedVolumeSource proto.InternalMessageInfo
     func (m *QuobyteVolumeSource) Reset()      { *m = QuobyteVolumeSource{} }
     func (*QuobyteVolumeSource) ProtoMessage() {}
     func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{165}
    +	return fileDescriptor_6c07b07c062484ab, []int{171}
     }
     func (m *QuobyteVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4700,7 +4868,7 @@ var xxx_messageInfo_QuobyteVolumeSource proto.InternalMessageInfo
     func (m *RBDPersistentVolumeSource) Reset()      { *m = RBDPersistentVolumeSource{} }
     func (*RBDPersistentVolumeSource) ProtoMessage() {}
     func (*RBDPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{166}
    +	return fileDescriptor_6c07b07c062484ab, []int{172}
     }
     func (m *RBDPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4728,7 +4896,7 @@ var xxx_messageInfo_RBDPersistentVolumeSource proto.InternalMessageInfo
     func (m *RBDVolumeSource) Reset()      { *m = RBDVolumeSource{} }
     func (*RBDVolumeSource) ProtoMessage() {}
     func (*RBDVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{167}
    +	return fileDescriptor_6c07b07c062484ab, []int{173}
     }
     func (m *RBDVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4756,7 +4924,7 @@ var xxx_messageInfo_RBDVolumeSource proto.InternalMessageInfo
     func (m *RangeAllocation) Reset()      { *m = RangeAllocation{} }
     func (*RangeAllocation) ProtoMessage() {}
     func (*RangeAllocation) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{168}
    +	return fileDescriptor_6c07b07c062484ab, []int{174}
     }
     func (m *RangeAllocation) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4784,7 +4952,7 @@ var xxx_messageInfo_RangeAllocation proto.InternalMessageInfo
     func (m *ReplicationController) Reset()      { *m = ReplicationController{} }
     func (*ReplicationController) ProtoMessage() {}
     func (*ReplicationController) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{169}
    +	return fileDescriptor_6c07b07c062484ab, []int{175}
     }
     func (m *ReplicationController) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4812,7 +4980,7 @@ var xxx_messageInfo_ReplicationController proto.InternalMessageInfo
     func (m *ReplicationControllerCondition) Reset()      { *m = ReplicationControllerCondition{} }
     func (*ReplicationControllerCondition) ProtoMessage() {}
     func (*ReplicationControllerCondition) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{170}
    +	return fileDescriptor_6c07b07c062484ab, []int{176}
     }
     func (m *ReplicationControllerCondition) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4840,7 +5008,7 @@ var xxx_messageInfo_ReplicationControllerCondition proto.InternalMessageInfo
     func (m *ReplicationControllerList) Reset()      { *m = ReplicationControllerList{} }
     func (*ReplicationControllerList) ProtoMessage() {}
     func (*ReplicationControllerList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{171}
    +	return fileDescriptor_6c07b07c062484ab, []int{177}
     }
     func (m *ReplicationControllerList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4868,7 +5036,7 @@ var xxx_messageInfo_ReplicationControllerList proto.InternalMessageInfo
     func (m *ReplicationControllerSpec) Reset()      { *m = ReplicationControllerSpec{} }
     func (*ReplicationControllerSpec) ProtoMessage() {}
     func (*ReplicationControllerSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{172}
    +	return fileDescriptor_6c07b07c062484ab, []int{178}
     }
     func (m *ReplicationControllerSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4896,7 +5064,7 @@ var xxx_messageInfo_ReplicationControllerSpec proto.InternalMessageInfo
     func (m *ReplicationControllerStatus) Reset()      { *m = ReplicationControllerStatus{} }
     func (*ReplicationControllerStatus) ProtoMessage() {}
     func (*ReplicationControllerStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{173}
    +	return fileDescriptor_6c07b07c062484ab, []int{179}
     }
     func (m *ReplicationControllerStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4924,7 +5092,7 @@ var xxx_messageInfo_ReplicationControllerStatus proto.InternalMessageInfo
     func (m *ResourceClaim) Reset()      { *m = ResourceClaim{} }
     func (*ResourceClaim) ProtoMessage() {}
     func (*ResourceClaim) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{174}
    +	return fileDescriptor_6c07b07c062484ab, []int{180}
     }
     func (m *ResourceClaim) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4952,7 +5120,7 @@ var xxx_messageInfo_ResourceClaim proto.InternalMessageInfo
     func (m *ResourceFieldSelector) Reset()      { *m = ResourceFieldSelector{} }
     func (*ResourceFieldSelector) ProtoMessage() {}
     func (*ResourceFieldSelector) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{175}
    +	return fileDescriptor_6c07b07c062484ab, []int{181}
     }
     func (m *ResourceFieldSelector) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -4980,7 +5148,7 @@ var xxx_messageInfo_ResourceFieldSelector proto.InternalMessageInfo
     func (m *ResourceHealth) Reset()      { *m = ResourceHealth{} }
     func (*ResourceHealth) ProtoMessage() {}
     func (*ResourceHealth) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{176}
    +	return fileDescriptor_6c07b07c062484ab, []int{182}
     }
     func (m *ResourceHealth) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5008,7 +5176,7 @@ var xxx_messageInfo_ResourceHealth proto.InternalMessageInfo
     func (m *ResourceQuota) Reset()      { *m = ResourceQuota{} }
     func (*ResourceQuota) ProtoMessage() {}
     func (*ResourceQuota) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{177}
    +	return fileDescriptor_6c07b07c062484ab, []int{183}
     }
     func (m *ResourceQuota) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5036,7 +5204,7 @@ var xxx_messageInfo_ResourceQuota proto.InternalMessageInfo
     func (m *ResourceQuotaList) Reset()      { *m = ResourceQuotaList{} }
     func (*ResourceQuotaList) ProtoMessage() {}
     func (*ResourceQuotaList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{178}
    +	return fileDescriptor_6c07b07c062484ab, []int{184}
     }
     func (m *ResourceQuotaList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5064,7 +5232,7 @@ var xxx_messageInfo_ResourceQuotaList proto.InternalMessageInfo
     func (m *ResourceQuotaSpec) Reset()      { *m = ResourceQuotaSpec{} }
     func (*ResourceQuotaSpec) ProtoMessage() {}
     func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{179}
    +	return fileDescriptor_6c07b07c062484ab, []int{185}
     }
     func (m *ResourceQuotaSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5092,7 +5260,7 @@ var xxx_messageInfo_ResourceQuotaSpec proto.InternalMessageInfo
     func (m *ResourceQuotaStatus) Reset()      { *m = ResourceQuotaStatus{} }
     func (*ResourceQuotaStatus) ProtoMessage() {}
     func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{180}
    +	return fileDescriptor_6c07b07c062484ab, []int{186}
     }
     func (m *ResourceQuotaStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5120,7 +5288,7 @@ var xxx_messageInfo_ResourceQuotaStatus proto.InternalMessageInfo
     func (m *ResourceRequirements) Reset()      { *m = ResourceRequirements{} }
     func (*ResourceRequirements) ProtoMessage() {}
     func (*ResourceRequirements) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{181}
    +	return fileDescriptor_6c07b07c062484ab, []int{187}
     }
     func (m *ResourceRequirements) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5148,7 +5316,7 @@ var xxx_messageInfo_ResourceRequirements proto.InternalMessageInfo
     func (m *ResourceStatus) Reset()      { *m = ResourceStatus{} }
     func (*ResourceStatus) ProtoMessage() {}
     func (*ResourceStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{182}
    +	return fileDescriptor_6c07b07c062484ab, []int{188}
     }
     func (m *ResourceStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5176,7 +5344,7 @@ var xxx_messageInfo_ResourceStatus proto.InternalMessageInfo
     func (m *SELinuxOptions) Reset()      { *m = SELinuxOptions{} }
     func (*SELinuxOptions) ProtoMessage() {}
     func (*SELinuxOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{183}
    +	return fileDescriptor_6c07b07c062484ab, []int{189}
     }
     func (m *SELinuxOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5204,7 +5372,7 @@ var xxx_messageInfo_SELinuxOptions proto.InternalMessageInfo
     func (m *ScaleIOPersistentVolumeSource) Reset()      { *m = ScaleIOPersistentVolumeSource{} }
     func (*ScaleIOPersistentVolumeSource) ProtoMessage() {}
     func (*ScaleIOPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{184}
    +	return fileDescriptor_6c07b07c062484ab, []int{190}
     }
     func (m *ScaleIOPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5232,7 +5400,7 @@ var xxx_messageInfo_ScaleIOPersistentVolumeSource proto.InternalMessageInfo
     func (m *ScaleIOVolumeSource) Reset()      { *m = ScaleIOVolumeSource{} }
     func (*ScaleIOVolumeSource) ProtoMessage() {}
     func (*ScaleIOVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{185}
    +	return fileDescriptor_6c07b07c062484ab, []int{191}
     }
     func (m *ScaleIOVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5260,7 +5428,7 @@ var xxx_messageInfo_ScaleIOVolumeSource proto.InternalMessageInfo
     func (m *ScopeSelector) Reset()      { *m = ScopeSelector{} }
     func (*ScopeSelector) ProtoMessage() {}
     func (*ScopeSelector) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{186}
    +	return fileDescriptor_6c07b07c062484ab, []int{192}
     }
     func (m *ScopeSelector) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5288,7 +5456,7 @@ var xxx_messageInfo_ScopeSelector proto.InternalMessageInfo
     func (m *ScopedResourceSelectorRequirement) Reset()      { *m = ScopedResourceSelectorRequirement{} }
     func (*ScopedResourceSelectorRequirement) ProtoMessage() {}
     func (*ScopedResourceSelectorRequirement) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{187}
    +	return fileDescriptor_6c07b07c062484ab, []int{193}
     }
     func (m *ScopedResourceSelectorRequirement) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5316,7 +5484,7 @@ var xxx_messageInfo_ScopedResourceSelectorRequirement proto.InternalMessageInfo
     func (m *SeccompProfile) Reset()      { *m = SeccompProfile{} }
     func (*SeccompProfile) ProtoMessage() {}
     func (*SeccompProfile) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{188}
    +	return fileDescriptor_6c07b07c062484ab, []int{194}
     }
     func (m *SeccompProfile) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5344,7 +5512,7 @@ var xxx_messageInfo_SeccompProfile proto.InternalMessageInfo
     func (m *Secret) Reset()      { *m = Secret{} }
     func (*Secret) ProtoMessage() {}
     func (*Secret) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{189}
    +	return fileDescriptor_6c07b07c062484ab, []int{195}
     }
     func (m *Secret) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5372,7 +5540,7 @@ var xxx_messageInfo_Secret proto.InternalMessageInfo
     func (m *SecretEnvSource) Reset()      { *m = SecretEnvSource{} }
     func (*SecretEnvSource) ProtoMessage() {}
     func (*SecretEnvSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{190}
    +	return fileDescriptor_6c07b07c062484ab, []int{196}
     }
     func (m *SecretEnvSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5400,7 +5568,7 @@ var xxx_messageInfo_SecretEnvSource proto.InternalMessageInfo
     func (m *SecretKeySelector) Reset()      { *m = SecretKeySelector{} }
     func (*SecretKeySelector) ProtoMessage() {}
     func (*SecretKeySelector) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{191}
    +	return fileDescriptor_6c07b07c062484ab, []int{197}
     }
     func (m *SecretKeySelector) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5428,7 +5596,7 @@ var xxx_messageInfo_SecretKeySelector proto.InternalMessageInfo
     func (m *SecretList) Reset()      { *m = SecretList{} }
     func (*SecretList) ProtoMessage() {}
     func (*SecretList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{192}
    +	return fileDescriptor_6c07b07c062484ab, []int{198}
     }
     func (m *SecretList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5456,7 +5624,7 @@ var xxx_messageInfo_SecretList proto.InternalMessageInfo
     func (m *SecretProjection) Reset()      { *m = SecretProjection{} }
     func (*SecretProjection) ProtoMessage() {}
     func (*SecretProjection) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{193}
    +	return fileDescriptor_6c07b07c062484ab, []int{199}
     }
     func (m *SecretProjection) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5484,7 +5652,7 @@ var xxx_messageInfo_SecretProjection proto.InternalMessageInfo
     func (m *SecretReference) Reset()      { *m = SecretReference{} }
     func (*SecretReference) ProtoMessage() {}
     func (*SecretReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{194}
    +	return fileDescriptor_6c07b07c062484ab, []int{200}
     }
     func (m *SecretReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5512,7 +5680,7 @@ var xxx_messageInfo_SecretReference proto.InternalMessageInfo
     func (m *SecretVolumeSource) Reset()      { *m = SecretVolumeSource{} }
     func (*SecretVolumeSource) ProtoMessage() {}
     func (*SecretVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{195}
    +	return fileDescriptor_6c07b07c062484ab, []int{201}
     }
     func (m *SecretVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5540,7 +5708,7 @@ var xxx_messageInfo_SecretVolumeSource proto.InternalMessageInfo
     func (m *SecurityContext) Reset()      { *m = SecurityContext{} }
     func (*SecurityContext) ProtoMessage() {}
     func (*SecurityContext) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{196}
    +	return fileDescriptor_6c07b07c062484ab, []int{202}
     }
     func (m *SecurityContext) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5568,7 +5736,7 @@ var xxx_messageInfo_SecurityContext proto.InternalMessageInfo
     func (m *SerializedReference) Reset()      { *m = SerializedReference{} }
     func (*SerializedReference) ProtoMessage() {}
     func (*SerializedReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{197}
    +	return fileDescriptor_6c07b07c062484ab, []int{203}
     }
     func (m *SerializedReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5596,7 +5764,7 @@ var xxx_messageInfo_SerializedReference proto.InternalMessageInfo
     func (m *Service) Reset()      { *m = Service{} }
     func (*Service) ProtoMessage() {}
     func (*Service) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{198}
    +	return fileDescriptor_6c07b07c062484ab, []int{204}
     }
     func (m *Service) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5624,7 +5792,7 @@ var xxx_messageInfo_Service proto.InternalMessageInfo
     func (m *ServiceAccount) Reset()      { *m = ServiceAccount{} }
     func (*ServiceAccount) ProtoMessage() {}
     func (*ServiceAccount) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{199}
    +	return fileDescriptor_6c07b07c062484ab, []int{205}
     }
     func (m *ServiceAccount) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5652,7 +5820,7 @@ var xxx_messageInfo_ServiceAccount proto.InternalMessageInfo
     func (m *ServiceAccountList) Reset()      { *m = ServiceAccountList{} }
     func (*ServiceAccountList) ProtoMessage() {}
     func (*ServiceAccountList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{200}
    +	return fileDescriptor_6c07b07c062484ab, []int{206}
     }
     func (m *ServiceAccountList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5680,7 +5848,7 @@ var xxx_messageInfo_ServiceAccountList proto.InternalMessageInfo
     func (m *ServiceAccountTokenProjection) Reset()      { *m = ServiceAccountTokenProjection{} }
     func (*ServiceAccountTokenProjection) ProtoMessage() {}
     func (*ServiceAccountTokenProjection) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{201}
    +	return fileDescriptor_6c07b07c062484ab, []int{207}
     }
     func (m *ServiceAccountTokenProjection) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5708,7 +5876,7 @@ var xxx_messageInfo_ServiceAccountTokenProjection proto.InternalMessageInfo
     func (m *ServiceList) Reset()      { *m = ServiceList{} }
     func (*ServiceList) ProtoMessage() {}
     func (*ServiceList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{202}
    +	return fileDescriptor_6c07b07c062484ab, []int{208}
     }
     func (m *ServiceList) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5736,7 +5904,7 @@ var xxx_messageInfo_ServiceList proto.InternalMessageInfo
     func (m *ServicePort) Reset()      { *m = ServicePort{} }
     func (*ServicePort) ProtoMessage() {}
     func (*ServicePort) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{203}
    +	return fileDescriptor_6c07b07c062484ab, []int{209}
     }
     func (m *ServicePort) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5764,7 +5932,7 @@ var xxx_messageInfo_ServicePort proto.InternalMessageInfo
     func (m *ServiceProxyOptions) Reset()      { *m = ServiceProxyOptions{} }
     func (*ServiceProxyOptions) ProtoMessage() {}
     func (*ServiceProxyOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{204}
    +	return fileDescriptor_6c07b07c062484ab, []int{210}
     }
     func (m *ServiceProxyOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5792,7 +5960,7 @@ var xxx_messageInfo_ServiceProxyOptions proto.InternalMessageInfo
     func (m *ServiceSpec) Reset()      { *m = ServiceSpec{} }
     func (*ServiceSpec) ProtoMessage() {}
     func (*ServiceSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{205}
    +	return fileDescriptor_6c07b07c062484ab, []int{211}
     }
     func (m *ServiceSpec) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5820,7 +5988,7 @@ var xxx_messageInfo_ServiceSpec proto.InternalMessageInfo
     func (m *ServiceStatus) Reset()      { *m = ServiceStatus{} }
     func (*ServiceStatus) ProtoMessage() {}
     func (*ServiceStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{206}
    +	return fileDescriptor_6c07b07c062484ab, []int{212}
     }
     func (m *ServiceStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5848,7 +6016,7 @@ var xxx_messageInfo_ServiceStatus proto.InternalMessageInfo
     func (m *SessionAffinityConfig) Reset()      { *m = SessionAffinityConfig{} }
     func (*SessionAffinityConfig) ProtoMessage() {}
     func (*SessionAffinityConfig) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{207}
    +	return fileDescriptor_6c07b07c062484ab, []int{213}
     }
     func (m *SessionAffinityConfig) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5876,7 +6044,7 @@ var xxx_messageInfo_SessionAffinityConfig proto.InternalMessageInfo
     func (m *SleepAction) Reset()      { *m = SleepAction{} }
     func (*SleepAction) ProtoMessage() {}
     func (*SleepAction) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{208}
    +	return fileDescriptor_6c07b07c062484ab, []int{214}
     }
     func (m *SleepAction) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5904,7 +6072,7 @@ var xxx_messageInfo_SleepAction proto.InternalMessageInfo
     func (m *StorageOSPersistentVolumeSource) Reset()      { *m = StorageOSPersistentVolumeSource{} }
     func (*StorageOSPersistentVolumeSource) ProtoMessage() {}
     func (*StorageOSPersistentVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{209}
    +	return fileDescriptor_6c07b07c062484ab, []int{215}
     }
     func (m *StorageOSPersistentVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5932,7 +6100,7 @@ var xxx_messageInfo_StorageOSPersistentVolumeSource proto.InternalMessageInfo
     func (m *StorageOSVolumeSource) Reset()      { *m = StorageOSVolumeSource{} }
     func (*StorageOSVolumeSource) ProtoMessage() {}
     func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{210}
    +	return fileDescriptor_6c07b07c062484ab, []int{216}
     }
     func (m *StorageOSVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5960,7 +6128,7 @@ var xxx_messageInfo_StorageOSVolumeSource proto.InternalMessageInfo
     func (m *Sysctl) Reset()      { *m = Sysctl{} }
     func (*Sysctl) ProtoMessage() {}
     func (*Sysctl) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{211}
    +	return fileDescriptor_6c07b07c062484ab, []int{217}
     }
     func (m *Sysctl) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -5988,7 +6156,7 @@ var xxx_messageInfo_Sysctl proto.InternalMessageInfo
     func (m *TCPSocketAction) Reset()      { *m = TCPSocketAction{} }
     func (*TCPSocketAction) ProtoMessage() {}
     func (*TCPSocketAction) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{212}
    +	return fileDescriptor_6c07b07c062484ab, []int{218}
     }
     func (m *TCPSocketAction) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6016,7 +6184,7 @@ var xxx_messageInfo_TCPSocketAction proto.InternalMessageInfo
     func (m *Taint) Reset()      { *m = Taint{} }
     func (*Taint) ProtoMessage() {}
     func (*Taint) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{213}
    +	return fileDescriptor_6c07b07c062484ab, []int{219}
     }
     func (m *Taint) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6044,7 +6212,7 @@ var xxx_messageInfo_Taint proto.InternalMessageInfo
     func (m *Toleration) Reset()      { *m = Toleration{} }
     func (*Toleration) ProtoMessage() {}
     func (*Toleration) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{214}
    +	return fileDescriptor_6c07b07c062484ab, []int{220}
     }
     func (m *Toleration) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6072,7 +6240,7 @@ var xxx_messageInfo_Toleration proto.InternalMessageInfo
     func (m *TopologySelectorLabelRequirement) Reset()      { *m = TopologySelectorLabelRequirement{} }
     func (*TopologySelectorLabelRequirement) ProtoMessage() {}
     func (*TopologySelectorLabelRequirement) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{215}
    +	return fileDescriptor_6c07b07c062484ab, []int{221}
     }
     func (m *TopologySelectorLabelRequirement) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6100,7 +6268,7 @@ var xxx_messageInfo_TopologySelectorLabelRequirement proto.InternalMessageInfo
     func (m *TopologySelectorTerm) Reset()      { *m = TopologySelectorTerm{} }
     func (*TopologySelectorTerm) ProtoMessage() {}
     func (*TopologySelectorTerm) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{216}
    +	return fileDescriptor_6c07b07c062484ab, []int{222}
     }
     func (m *TopologySelectorTerm) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6128,7 +6296,7 @@ var xxx_messageInfo_TopologySelectorTerm proto.InternalMessageInfo
     func (m *TopologySpreadConstraint) Reset()      { *m = TopologySpreadConstraint{} }
     func (*TopologySpreadConstraint) ProtoMessage() {}
     func (*TopologySpreadConstraint) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{217}
    +	return fileDescriptor_6c07b07c062484ab, []int{223}
     }
     func (m *TopologySpreadConstraint) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6156,7 +6324,7 @@ var xxx_messageInfo_TopologySpreadConstraint proto.InternalMessageInfo
     func (m *TypedLocalObjectReference) Reset()      { *m = TypedLocalObjectReference{} }
     func (*TypedLocalObjectReference) ProtoMessage() {}
     func (*TypedLocalObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{218}
    +	return fileDescriptor_6c07b07c062484ab, []int{224}
     }
     func (m *TypedLocalObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6184,7 +6352,7 @@ var xxx_messageInfo_TypedLocalObjectReference proto.InternalMessageInfo
     func (m *TypedObjectReference) Reset()      { *m = TypedObjectReference{} }
     func (*TypedObjectReference) ProtoMessage() {}
     func (*TypedObjectReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{219}
    +	return fileDescriptor_6c07b07c062484ab, []int{225}
     }
     func (m *TypedObjectReference) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6212,7 +6380,7 @@ var xxx_messageInfo_TypedObjectReference proto.InternalMessageInfo
     func (m *Volume) Reset()      { *m = Volume{} }
     func (*Volume) ProtoMessage() {}
     func (*Volume) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{220}
    +	return fileDescriptor_6c07b07c062484ab, []int{226}
     }
     func (m *Volume) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6240,7 +6408,7 @@ var xxx_messageInfo_Volume proto.InternalMessageInfo
     func (m *VolumeDevice) Reset()      { *m = VolumeDevice{} }
     func (*VolumeDevice) ProtoMessage() {}
     func (*VolumeDevice) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{221}
    +	return fileDescriptor_6c07b07c062484ab, []int{227}
     }
     func (m *VolumeDevice) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6268,7 +6436,7 @@ var xxx_messageInfo_VolumeDevice proto.InternalMessageInfo
     func (m *VolumeMount) Reset()      { *m = VolumeMount{} }
     func (*VolumeMount) ProtoMessage() {}
     func (*VolumeMount) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{222}
    +	return fileDescriptor_6c07b07c062484ab, []int{228}
     }
     func (m *VolumeMount) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6296,7 +6464,7 @@ var xxx_messageInfo_VolumeMount proto.InternalMessageInfo
     func (m *VolumeMountStatus) Reset()      { *m = VolumeMountStatus{} }
     func (*VolumeMountStatus) ProtoMessage() {}
     func (*VolumeMountStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{223}
    +	return fileDescriptor_6c07b07c062484ab, []int{229}
     }
     func (m *VolumeMountStatus) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6324,7 +6492,7 @@ var xxx_messageInfo_VolumeMountStatus proto.InternalMessageInfo
     func (m *VolumeNodeAffinity) Reset()      { *m = VolumeNodeAffinity{} }
     func (*VolumeNodeAffinity) ProtoMessage() {}
     func (*VolumeNodeAffinity) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{224}
    +	return fileDescriptor_6c07b07c062484ab, []int{230}
     }
     func (m *VolumeNodeAffinity) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6352,7 +6520,7 @@ var xxx_messageInfo_VolumeNodeAffinity proto.InternalMessageInfo
     func (m *VolumeProjection) Reset()      { *m = VolumeProjection{} }
     func (*VolumeProjection) ProtoMessage() {}
     func (*VolumeProjection) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{225}
    +	return fileDescriptor_6c07b07c062484ab, []int{231}
     }
     func (m *VolumeProjection) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6380,7 +6548,7 @@ var xxx_messageInfo_VolumeProjection proto.InternalMessageInfo
     func (m *VolumeResourceRequirements) Reset()      { *m = VolumeResourceRequirements{} }
     func (*VolumeResourceRequirements) ProtoMessage() {}
     func (*VolumeResourceRequirements) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{226}
    +	return fileDescriptor_6c07b07c062484ab, []int{232}
     }
     func (m *VolumeResourceRequirements) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6408,7 +6576,7 @@ var xxx_messageInfo_VolumeResourceRequirements proto.InternalMessageInfo
     func (m *VolumeSource) Reset()      { *m = VolumeSource{} }
     func (*VolumeSource) ProtoMessage() {}
     func (*VolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{227}
    +	return fileDescriptor_6c07b07c062484ab, []int{233}
     }
     func (m *VolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6436,7 +6604,7 @@ var xxx_messageInfo_VolumeSource proto.InternalMessageInfo
     func (m *VsphereVirtualDiskVolumeSource) Reset()      { *m = VsphereVirtualDiskVolumeSource{} }
     func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {}
     func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{228}
    +	return fileDescriptor_6c07b07c062484ab, []int{234}
     }
     func (m *VsphereVirtualDiskVolumeSource) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6464,7 +6632,7 @@ var xxx_messageInfo_VsphereVirtualDiskVolumeSource proto.InternalMessageInfo
     func (m *WeightedPodAffinityTerm) Reset()      { *m = WeightedPodAffinityTerm{} }
     func (*WeightedPodAffinityTerm) ProtoMessage() {}
     func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{229}
    +	return fileDescriptor_6c07b07c062484ab, []int{235}
     }
     func (m *WeightedPodAffinityTerm) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6492,7 +6660,7 @@ var xxx_messageInfo_WeightedPodAffinityTerm proto.InternalMessageInfo
     func (m *WindowsSecurityContextOptions) Reset()      { *m = WindowsSecurityContextOptions{} }
     func (*WindowsSecurityContextOptions) ProtoMessage() {}
     func (*WindowsSecurityContextOptions) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_6c07b07c062484ab, []int{230}
    +	return fileDescriptor_6c07b07c062484ab, []int{236}
     }
     func (m *WindowsSecurityContextOptions) XXX_Unmarshal(b []byte) error {
     	return m.Unmarshal(b)
    @@ -6551,9 +6719,12 @@ func init() {
     	proto.RegisterType((*ConfigMapProjection)(nil), "k8s.io.api.core.v1.ConfigMapProjection")
     	proto.RegisterType((*ConfigMapVolumeSource)(nil), "k8s.io.api.core.v1.ConfigMapVolumeSource")
     	proto.RegisterType((*Container)(nil), "k8s.io.api.core.v1.Container")
    +	proto.RegisterType((*ContainerExtendedResourceRequest)(nil), "k8s.io.api.core.v1.ContainerExtendedResourceRequest")
     	proto.RegisterType((*ContainerImage)(nil), "k8s.io.api.core.v1.ContainerImage")
     	proto.RegisterType((*ContainerPort)(nil), "k8s.io.api.core.v1.ContainerPort")
     	proto.RegisterType((*ContainerResizePolicy)(nil), "k8s.io.api.core.v1.ContainerResizePolicy")
    +	proto.RegisterType((*ContainerRestartRule)(nil), "k8s.io.api.core.v1.ContainerRestartRule")
    +	proto.RegisterType((*ContainerRestartRuleOnExitCodes)(nil), "k8s.io.api.core.v1.ContainerRestartRuleOnExitCodes")
     	proto.RegisterType((*ContainerState)(nil), "k8s.io.api.core.v1.ContainerState")
     	proto.RegisterType((*ContainerStateRunning)(nil), "k8s.io.api.core.v1.ContainerStateRunning")
     	proto.RegisterType((*ContainerStateTerminated)(nil), "k8s.io.api.core.v1.ContainerStateTerminated")
    @@ -6583,6 +6754,7 @@ func init() {
     	proto.RegisterType((*EventSource)(nil), "k8s.io.api.core.v1.EventSource")
     	proto.RegisterType((*ExecAction)(nil), "k8s.io.api.core.v1.ExecAction")
     	proto.RegisterType((*FCVolumeSource)(nil), "k8s.io.api.core.v1.FCVolumeSource")
    +	proto.RegisterType((*FileKeySelector)(nil), "k8s.io.api.core.v1.FileKeySelector")
     	proto.RegisterType((*FlexPersistentVolumeSource)(nil), "k8s.io.api.core.v1.FlexPersistentVolumeSource")
     	proto.RegisterMapType((map[string]string)(nil), "k8s.io.api.core.v1.FlexPersistentVolumeSource.OptionsEntry")
     	proto.RegisterType((*FlexVolumeSource)(nil), "k8s.io.api.core.v1.FlexVolumeSource")
    @@ -6671,10 +6843,12 @@ func init() {
     	proto.RegisterType((*PodAffinityTerm)(nil), "k8s.io.api.core.v1.PodAffinityTerm")
     	proto.RegisterType((*PodAntiAffinity)(nil), "k8s.io.api.core.v1.PodAntiAffinity")
     	proto.RegisterType((*PodAttachOptions)(nil), "k8s.io.api.core.v1.PodAttachOptions")
    +	proto.RegisterType((*PodCertificateProjection)(nil), "k8s.io.api.core.v1.PodCertificateProjection")
     	proto.RegisterType((*PodCondition)(nil), "k8s.io.api.core.v1.PodCondition")
     	proto.RegisterType((*PodDNSConfig)(nil), "k8s.io.api.core.v1.PodDNSConfig")
     	proto.RegisterType((*PodDNSConfigOption)(nil), "k8s.io.api.core.v1.PodDNSConfigOption")
     	proto.RegisterType((*PodExecOptions)(nil), "k8s.io.api.core.v1.PodExecOptions")
    +	proto.RegisterType((*PodExtendedResourceClaimStatus)(nil), "k8s.io.api.core.v1.PodExtendedResourceClaimStatus")
     	proto.RegisterType((*PodIP)(nil), "k8s.io.api.core.v1.PodIP")
     	proto.RegisterType((*PodList)(nil), "k8s.io.api.core.v1.PodList")
     	proto.RegisterType((*PodLogOptions)(nil), "k8s.io.api.core.v1.PodLogOptions")
    @@ -6787,1020 +6961,1049 @@ func init() {
     }
     
     var fileDescriptor_6c07b07c062484ab = []byte{
    -	// 16206 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x69, 0x90, 0x1c, 0xc9,
    -	0x75, 0x30, 0xc6, 0xea, 0x9e, 0xf3, 0xcd, 0x9d, 0xb8, 0x06, 0xb3, 0x00, 0x1a, 0x5b, 0xbb, 0x8b,
    -	0xc5, 0x5e, 0x03, 0x62, 0x0f, 0x2e, 0xb8, 0xbb, 0x5c, 0xed, 0x9c, 0x40, 0x2f, 0x30, 0x83, 0xde,
    -	0xec, 0x01, 0x40, 0x2e, 0x97, 0x14, 0x0b, 0xdd, 0x39, 0x33, 0xc5, 0xe9, 0xae, 0xea, 0xad, 0xaa,
    -	0x1e, 0x60, 0x60, 0x2a, 0x24, 0x51, 0x16, 0x25, 0x52, 0x72, 0x04, 0x43, 0x21, 0x59, 0x0e, 0x4a,
    -	0xa1, 0x1f, 0xba, 0x65, 0x5a, 0xb2, 0x68, 0xc9, 0x92, 0x2c, 0xea, 0xb2, 0x2d, 0x47, 0xc8, 0xfe,
    -	0x21, 0x4b, 0x8a, 0x30, 0xa9, 0xb0, 0xc2, 0x23, 0x73, 0x6c, 0x87, 0x42, 0x3f, 0x2c, 0x29, 0x64,
    -	0xff, 0xb0, 0x27, 0xf4, 0x7d, 0xfc, 0x22, 0xcf, 0xca, 0xac, 0xa3, 0xbb, 0x07, 0x0b, 0x0c, 0x97,
    -	0x8c, 0xfd, 0xd7, 0x9d, 0xef, 0xe5, 0xcb, 0xac, 0x3c, 0x5f, 0xbe, 0x13, 0xec, 0xad, 0x4b, 0xe1,
    -	0xac, 0xeb, 0x5f, 0x70, 0x5a, 0xee, 0x85, 0x9a, 0x1f, 0x90, 0x0b, 0xdb, 0x17, 0x2f, 0x6c, 0x10,
    -	0x8f, 0x04, 0x4e, 0x44, 0xea, 0xb3, 0xad, 0xc0, 0x8f, 0x7c, 0x84, 0x38, 0xce, 0xac, 0xd3, 0x72,
    -	0x67, 0x29, 0xce, 0xec, 0xf6, 0xc5, 0x99, 0xe7, 0x36, 0xdc, 0x68, 0xb3, 0x7d, 0x7b, 0xb6, 0xe6,
    -	0x37, 0x2f, 0x6c, 0xf8, 0x1b, 0xfe, 0x05, 0x86, 0x7a, 0xbb, 0xbd, 0xce, 0xfe, 0xb1, 0x3f, 0xec,
    -	0x17, 0x27, 0x31, 0xf3, 0x62, 0xdc, 0x4c, 0xd3, 0xa9, 0x6d, 0xba, 0x1e, 0x09, 0x76, 0x2e, 0xb4,
    -	0xb6, 0x36, 0x58, 0xbb, 0x01, 0x09, 0xfd, 0x76, 0x50, 0x23, 0xc9, 0x86, 0x3b, 0xd6, 0x0a, 0x2f,
    -	0x34, 0x49, 0xe4, 0x64, 0x74, 0x77, 0xe6, 0x42, 0x5e, 0xad, 0xa0, 0xed, 0x45, 0x6e, 0x33, 0xdd,
    -	0xcc, 0x47, 0xba, 0x55, 0x08, 0x6b, 0x9b, 0xa4, 0xe9, 0xa4, 0xea, 0xbd, 0x90, 0x57, 0xaf, 0x1d,
    -	0xb9, 0x8d, 0x0b, 0xae, 0x17, 0x85, 0x51, 0x90, 0xac, 0x64, 0x7f, 0xd3, 0x82, 0xb3, 0x73, 0xb7,
    -	0xaa, 0x4b, 0x0d, 0x27, 0x8c, 0xdc, 0xda, 0x7c, 0xc3, 0xaf, 0x6d, 0x55, 0x23, 0x3f, 0x20, 0x37,
    -	0xfd, 0x46, 0xbb, 0x49, 0xaa, 0x6c, 0x20, 0xd0, 0xb3, 0x30, 0xb4, 0xcd, 0xfe, 0x97, 0x17, 0xa7,
    -	0xad, 0xb3, 0xd6, 0xf9, 0xe1, 0xf9, 0xc9, 0xbf, 0xd8, 0x2d, 0x7d, 0x68, 0x6f, 0xb7, 0x34, 0x74,
    -	0x53, 0x94, 0x63, 0x85, 0x81, 0xce, 0xc1, 0xc0, 0x7a, 0xb8, 0xb6, 0xd3, 0x22, 0xd3, 0x05, 0x86,
    -	0x3b, 0x2e, 0x70, 0x07, 0x96, 0xab, 0xb4, 0x14, 0x0b, 0x28, 0xba, 0x00, 0xc3, 0x2d, 0x27, 0x88,
    -	0xdc, 0xc8, 0xf5, 0xbd, 0xe9, 0xe2, 0x59, 0xeb, 0x7c, 0xff, 0xfc, 0x94, 0x40, 0x1d, 0xae, 0x48,
    -	0x00, 0x8e, 0x71, 0x68, 0x37, 0x02, 0xe2, 0xd4, 0xaf, 0x7b, 0x8d, 0x9d, 0xe9, 0xbe, 0xb3, 0xd6,
    -	0xf9, 0xa1, 0xb8, 0x1b, 0x58, 0x94, 0x63, 0x85, 0x61, 0x7f, 0xa5, 0x00, 0x43, 0x73, 0xeb, 0xeb,
    -	0xae, 0xe7, 0x46, 0x3b, 0xe8, 0x26, 0x8c, 0x7a, 0x7e, 0x9d, 0xc8, 0xff, 0xec, 0x2b, 0x46, 0x9e,
    -	0x3f, 0x3b, 0x9b, 0x5e, 0x4a, 0xb3, 0xab, 0x1a, 0xde, 0xfc, 0xe4, 0xde, 0x6e, 0x69, 0x54, 0x2f,
    -	0xc1, 0x06, 0x1d, 0x84, 0x61, 0xa4, 0xe5, 0xd7, 0x15, 0xd9, 0x02, 0x23, 0x5b, 0xca, 0x22, 0x5b,
    -	0x89, 0xd1, 0xe6, 0x27, 0xf6, 0x76, 0x4b, 0x23, 0x5a, 0x01, 0xd6, 0x89, 0xa0, 0xdb, 0x30, 0x41,
    -	0xff, 0x7a, 0x91, 0xab, 0xe8, 0x16, 0x19, 0xdd, 0xc7, 0xf2, 0xe8, 0x6a, 0xa8, 0xf3, 0x47, 0xf6,
    -	0x76, 0x4b, 0x13, 0x89, 0x42, 0x9c, 0x24, 0x68, 0xff, 0xa4, 0x05, 0x13, 0x73, 0xad, 0xd6, 0x5c,
    -	0xd0, 0xf4, 0x83, 0x4a, 0xe0, 0xaf, 0xbb, 0x0d, 0x82, 0x5e, 0x86, 0xbe, 0x88, 0xce, 0x1a, 0x9f,
    -	0xe1, 0xc7, 0xc4, 0xd0, 0xf6, 0xd1, 0xb9, 0xda, 0xdf, 0x2d, 0x1d, 0x49, 0xa0, 0xb3, 0xa9, 0x64,
    -	0x15, 0xd0, 0x1b, 0x30, 0xd9, 0xf0, 0x6b, 0x4e, 0x63, 0xd3, 0x0f, 0x23, 0x01, 0x15, 0x53, 0x7f,
    -	0x74, 0x6f, 0xb7, 0x34, 0x79, 0x2d, 0x01, 0xc3, 0x29, 0x6c, 0xfb, 0x1e, 0x8c, 0xcf, 0x45, 0x91,
    -	0x53, 0xdb, 0x24, 0x75, 0xbe, 0xa0, 0xd0, 0x8b, 0xd0, 0xe7, 0x39, 0x4d, 0xd9, 0x99, 0xb3, 0xb2,
    -	0x33, 0xab, 0x4e, 0x93, 0x76, 0x66, 0xf2, 0x86, 0xe7, 0xbe, 0xdb, 0x16, 0x8b, 0x94, 0x96, 0x61,
    -	0x86, 0x8d, 0x9e, 0x07, 0xa8, 0x93, 0x6d, 0xb7, 0x46, 0x2a, 0x4e, 0xb4, 0x29, 0xfa, 0x80, 0x44,
    -	0x5d, 0x58, 0x54, 0x10, 0xac, 0x61, 0xd9, 0x77, 0x61, 0x78, 0x6e, 0xdb, 0x77, 0xeb, 0x15, 0xbf,
    -	0x1e, 0xa2, 0x2d, 0x98, 0x68, 0x05, 0x64, 0x9d, 0x04, 0xaa, 0x68, 0xda, 0x3a, 0x5b, 0x3c, 0x3f,
    -	0xf2, 0xfc, 0xf9, 0xcc, 0xb1, 0x37, 0x51, 0x97, 0xbc, 0x28, 0xd8, 0x99, 0x3f, 0x21, 0xda, 0x9b,
    -	0x48, 0x40, 0x71, 0x92, 0xb2, 0xfd, 0xe7, 0x05, 0x38, 0x36, 0x77, 0xaf, 0x1d, 0x90, 0x45, 0x37,
    -	0xdc, 0x4a, 0x6e, 0xb8, 0xba, 0x1b, 0x6e, 0xad, 0xc6, 0x23, 0xa0, 0x56, 0xfa, 0xa2, 0x28, 0xc7,
    -	0x0a, 0x03, 0x3d, 0x07, 0x83, 0xf4, 0xf7, 0x0d, 0x5c, 0x16, 0x9f, 0x7c, 0x44, 0x20, 0x8f, 0x2c,
    -	0x3a, 0x91, 0xb3, 0xc8, 0x41, 0x58, 0xe2, 0xa0, 0x15, 0x18, 0xa9, 0xb1, 0xf3, 0x61, 0x63, 0xc5,
    -	0xaf, 0x13, 0xb6, 0xb6, 0x86, 0xe7, 0x9f, 0xa1, 0xe8, 0x0b, 0x71, 0xf1, 0xfe, 0x6e, 0x69, 0x9a,
    -	0xf7, 0x4d, 0x90, 0xd0, 0x60, 0x58, 0xaf, 0x8f, 0x6c, 0xb5, 0xdd, 0xfb, 0x18, 0x25, 0xc8, 0xd8,
    -	0xea, 0xe7, 0xb5, 0x9d, 0xdb, 0xcf, 0x76, 0xee, 0x68, 0xf6, 0xae, 0x45, 0x17, 0xa1, 0x6f, 0xcb,
    -	0xf5, 0xea, 0xd3, 0x03, 0x8c, 0xd6, 0x69, 0x3a, 0xe7, 0x57, 0x5d, 0xaf, 0xbe, 0xbf, 0x5b, 0x9a,
    -	0x32, 0xba, 0x43, 0x0b, 0x31, 0x43, 0xb5, 0xff, 0x1f, 0x0b, 0x4a, 0x0c, 0xb6, 0xec, 0x36, 0x48,
    -	0x85, 0x04, 0xa1, 0x1b, 0x46, 0xc4, 0x8b, 0x8c, 0x01, 0x7d, 0x1e, 0x20, 0x24, 0xb5, 0x80, 0x44,
    -	0xda, 0x90, 0xaa, 0x85, 0x51, 0x55, 0x10, 0xac, 0x61, 0xd1, 0xf3, 0x29, 0xdc, 0x74, 0x02, 0xb6,
    -	0xbe, 0xc4, 0xc0, 0xaa, 0xf3, 0xa9, 0x2a, 0x01, 0x38, 0xc6, 0x31, 0xce, 0xa7, 0x62, 0xb7, 0xf3,
    -	0x09, 0x7d, 0x0c, 0x26, 0xe2, 0xc6, 0xc2, 0x96, 0x53, 0x93, 0x03, 0xc8, 0x76, 0x70, 0xd5, 0x04,
    -	0xe1, 0x24, 0xae, 0xfd, 0x9f, 0x5b, 0x62, 0xf1, 0xd0, 0xaf, 0x7e, 0x9f, 0x7f, 0xab, 0xfd, 0x07,
    -	0x16, 0x0c, 0xce, 0xbb, 0x5e, 0xdd, 0xf5, 0x36, 0xd0, 0x67, 0x60, 0x88, 0x5e, 0x95, 0x75, 0x27,
    -	0x72, 0xc4, 0x31, 0xfc, 0x61, 0x6d, 0x6f, 0xa9, 0x9b, 0x6b, 0xb6, 0xb5, 0xb5, 0x41, 0x0b, 0xc2,
    -	0x59, 0x8a, 0x4d, 0x77, 0xdb, 0xf5, 0xdb, 0x9f, 0x25, 0xb5, 0x68, 0x85, 0x44, 0x4e, 0xfc, 0x39,
    -	0x71, 0x19, 0x56, 0x54, 0xd1, 0x55, 0x18, 0x88, 0x9c, 0x60, 0x83, 0x44, 0xe2, 0x3c, 0xce, 0x3c,
    -	0x37, 0x79, 0x4d, 0x4c, 0x77, 0x24, 0xf1, 0x6a, 0x24, 0xbe, 0xa5, 0xd6, 0x58, 0x55, 0x2c, 0x48,
    -	0xd8, 0xff, 0x6e, 0x10, 0x4e, 0x2e, 0x54, 0xcb, 0x39, 0xeb, 0xea, 0x1c, 0x0c, 0xd4, 0x03, 0x77,
    -	0x9b, 0x04, 0x62, 0x9c, 0x15, 0x95, 0x45, 0x56, 0x8a, 0x05, 0x14, 0x5d, 0x82, 0x51, 0x7e, 0x3f,
    -	0x5e, 0x71, 0xbc, 0x7a, 0x7c, 0x3c, 0x0a, 0xec, 0xd1, 0x9b, 0x1a, 0x0c, 0x1b, 0x98, 0x07, 0x5c,
    -	0x54, 0xe7, 0x12, 0x9b, 0x31, 0xef, 0xee, 0xfd, 0xa2, 0x05, 0x93, 0xbc, 0x99, 0xb9, 0x28, 0x0a,
    -	0xdc, 0xdb, 0xed, 0x88, 0x84, 0xd3, 0xfd, 0xec, 0xa4, 0x5b, 0xc8, 0x1a, 0xad, 0xdc, 0x11, 0x98,
    -	0xbd, 0x99, 0xa0, 0xc2, 0x0f, 0xc1, 0x69, 0xd1, 0xee, 0x64, 0x12, 0x8c, 0x53, 0xcd, 0xa2, 0x1f,
    -	0xb1, 0x60, 0xa6, 0xe6, 0x7b, 0x51, 0xe0, 0x37, 0x1a, 0x24, 0xa8, 0xb4, 0x6f, 0x37, 0xdc, 0x70,
    -	0x93, 0xaf, 0x53, 0x4c, 0xd6, 0xd9, 0x49, 0x90, 0x33, 0x87, 0x0a, 0x49, 0xcc, 0xe1, 0x99, 0xbd,
    -	0xdd, 0xd2, 0xcc, 0x42, 0x2e, 0x29, 0xdc, 0xa1, 0x19, 0xb4, 0x05, 0x88, 0xde, 0xec, 0xd5, 0xc8,
    -	0xd9, 0x20, 0x71, 0xe3, 0x83, 0xbd, 0x37, 0x7e, 0x7c, 0x6f, 0xb7, 0x84, 0x56, 0x53, 0x24, 0x70,
    -	0x06, 0x59, 0xf4, 0x2e, 0x1c, 0xa5, 0xa5, 0xa9, 0x6f, 0x1d, 0xea, 0xbd, 0xb9, 0xe9, 0xbd, 0xdd,
    -	0xd2, 0xd1, 0xd5, 0x0c, 0x22, 0x38, 0x93, 0x34, 0xfa, 0x21, 0x0b, 0x4e, 0xc6, 0x9f, 0xbf, 0x74,
    -	0xb7, 0xe5, 0x78, 0xf5, 0xb8, 0xe1, 0xe1, 0xde, 0x1b, 0xa6, 0x67, 0xf2, 0xc9, 0x85, 0x3c, 0x4a,
    -	0x38, 0xbf, 0x11, 0xe4, 0xc1, 0x11, 0xda, 0xb5, 0x64, 0xdb, 0xd0, 0x7b, 0xdb, 0x27, 0xf6, 0x76,
    -	0x4b, 0x47, 0x56, 0xd3, 0x34, 0x70, 0x16, 0xe1, 0x99, 0x05, 0x38, 0x96, 0xb9, 0x3a, 0xd1, 0x24,
    -	0x14, 0xb7, 0x08, 0x67, 0x02, 0x87, 0x31, 0xfd, 0x89, 0x8e, 0x42, 0xff, 0xb6, 0xd3, 0x68, 0x8b,
    -	0x8d, 0x89, 0xf9, 0x9f, 0x57, 0x0a, 0x97, 0x2c, 0xfb, 0x7f, 0x28, 0xc2, 0xc4, 0x42, 0xb5, 0x7c,
    -	0x5f, 0xbb, 0x5e, 0xbf, 0xf6, 0x0a, 0x1d, 0xaf, 0xbd, 0xf8, 0x12, 0x2d, 0xe6, 0x5e, 0xa2, 0x3f,
    -	0x98, 0xb1, 0x65, 0xfb, 0xd8, 0x96, 0xfd, 0x68, 0xce, 0x96, 0x7d, 0xc0, 0x1b, 0x75, 0x3b, 0x67,
    -	0xd5, 0xf6, 0xb3, 0x09, 0xcc, 0xe4, 0x90, 0x18, 0xef, 0x97, 0x3c, 0x6a, 0x0f, 0xb8, 0x74, 0x1f,
    -	0xcc, 0x3c, 0xd6, 0x60, 0x74, 0xc1, 0x69, 0x39, 0xb7, 0xdd, 0x86, 0x1b, 0xb9, 0x24, 0x44, 0x4f,
    -	0x42, 0xd1, 0xa9, 0xd7, 0x19, 0x77, 0x37, 0x3c, 0x7f, 0x6c, 0x6f, 0xb7, 0x54, 0x9c, 0xab, 0x53,
    -	0x36, 0x03, 0x14, 0xd6, 0x0e, 0xa6, 0x18, 0xe8, 0x69, 0xe8, 0xab, 0x07, 0x7e, 0x6b, 0xba, 0xc0,
    -	0x30, 0xe9, 0x2e, 0xef, 0x5b, 0x0c, 0xfc, 0x56, 0x02, 0x95, 0xe1, 0xd8, 0x7f, 0x56, 0x80, 0x53,
    -	0x0b, 0xa4, 0xb5, 0xb9, 0x5c, 0xcd, 0xb9, 0x2f, 0xce, 0xc3, 0x50, 0xd3, 0xf7, 0xdc, 0xc8, 0x0f,
    -	0x42, 0xd1, 0x34, 0x5b, 0x11, 0x2b, 0xa2, 0x0c, 0x2b, 0x28, 0x3a, 0x0b, 0x7d, 0xad, 0x98, 0x89,
    -	0x1d, 0x95, 0x0c, 0x30, 0x63, 0x5f, 0x19, 0x84, 0x62, 0xb4, 0x43, 0x12, 0x88, 0x15, 0xa3, 0x30,
    -	0x6e, 0x84, 0x24, 0xc0, 0x0c, 0x12, 0x73, 0x02, 0x94, 0x47, 0x10, 0x37, 0x42, 0x82, 0x13, 0xa0,
    -	0x10, 0xac, 0x61, 0xa1, 0x0a, 0x0c, 0x87, 0x89, 0x99, 0xed, 0x69, 0x6b, 0x8e, 0x31, 0x56, 0x41,
    -	0xcd, 0x64, 0x4c, 0xc4, 0xb8, 0xc1, 0x06, 0xba, 0xb2, 0x0a, 0x5f, 0x2f, 0x00, 0xe2, 0x43, 0xf8,
    -	0x5d, 0x36, 0x70, 0x37, 0xd2, 0x03, 0xd7, 0xfb, 0x96, 0x78, 0x50, 0xa3, 0xf7, 0xff, 0x5a, 0x70,
    -	0x6a, 0xc1, 0xf5, 0xea, 0x24, 0xc8, 0x59, 0x80, 0x0f, 0xe7, 0x29, 0x7f, 0x30, 0x26, 0xc5, 0x58,
    -	0x62, 0x7d, 0x0f, 0x60, 0x89, 0xd9, 0xff, 0x6c, 0x01, 0xe2, 0x9f, 0xfd, 0xbe, 0xfb, 0xd8, 0x1b,
    -	0xe9, 0x8f, 0x7d, 0x00, 0xcb, 0xc2, 0xbe, 0x06, 0xe3, 0x0b, 0x0d, 0x97, 0x78, 0x51, 0xb9, 0xb2,
    -	0xe0, 0x7b, 0xeb, 0xee, 0x06, 0x7a, 0x05, 0xc6, 0x23, 0xb7, 0x49, 0xfc, 0x76, 0x54, 0x25, 0x35,
    -	0xdf, 0x63, 0x2f, 0x57, 0xeb, 0x7c, 0xff, 0x3c, 0xda, 0xdb, 0x2d, 0x8d, 0xaf, 0x19, 0x10, 0x9c,
    -	0xc0, 0xb4, 0x7f, 0x95, 0x9e, 0x5b, 0x8d, 0x76, 0x18, 0x91, 0x60, 0x2d, 0x68, 0x87, 0xd1, 0x7c,
    -	0x9b, 0xf2, 0x9e, 0x95, 0xc0, 0xa7, 0xdd, 0x71, 0x7d, 0x0f, 0x9d, 0x32, 0x9e, 0xe3, 0x43, 0xf2,
    -	0x29, 0x2e, 0x9e, 0xdd, 0xb3, 0x00, 0xa1, 0xbb, 0xe1, 0x91, 0x40, 0x7b, 0x3e, 0x8c, 0xb3, 0xad,
    -	0xa2, 0x4a, 0xb1, 0x86, 0x81, 0x1a, 0x30, 0xd6, 0x70, 0x6e, 0x93, 0x46, 0x95, 0x34, 0x48, 0x2d,
    -	0xf2, 0x03, 0x21, 0xdf, 0x78, 0xa1, 0xb7, 0x77, 0xc0, 0x35, 0xbd, 0xea, 0xfc, 0xd4, 0xde, 0x6e,
    -	0x69, 0xcc, 0x28, 0xc2, 0x26, 0x71, 0x7a, 0x74, 0xf8, 0x2d, 0xfa, 0x15, 0x4e, 0x43, 0x7f, 0x7c,
    -	0x5e, 0x17, 0x65, 0x58, 0x41, 0xd5, 0xd1, 0xd1, 0x97, 0x77, 0x74, 0xd8, 0x7f, 0x47, 0x17, 0x9a,
    -	0xdf, 0x6c, 0xf9, 0x1e, 0xf1, 0xa2, 0x05, 0xdf, 0xab, 0x73, 0xc9, 0xd4, 0x2b, 0x86, 0xe8, 0xe4,
    -	0x5c, 0x42, 0x74, 0x72, 0x3c, 0x5d, 0x43, 0x93, 0x9e, 0x7c, 0x14, 0x06, 0xc2, 0xc8, 0x89, 0xda,
    -	0xa1, 0x18, 0xb8, 0x47, 0xe5, 0xb2, 0xab, 0xb2, 0xd2, 0xfd, 0xdd, 0xd2, 0x84, 0xaa, 0xc6, 0x8b,
    -	0xb0, 0xa8, 0x80, 0x9e, 0x82, 0xc1, 0x26, 0x09, 0x43, 0x67, 0x43, 0xb2, 0x0d, 0x13, 0xa2, 0xee,
    -	0xe0, 0x0a, 0x2f, 0xc6, 0x12, 0x8e, 0x1e, 0x83, 0x7e, 0x12, 0x04, 0x7e, 0x20, 0xbe, 0x6d, 0x4c,
    -	0x20, 0xf6, 0x2f, 0xd1, 0x42, 0xcc, 0x61, 0xf6, 0xff, 0x6c, 0xc1, 0x84, 0xea, 0x2b, 0x6f, 0xeb,
    -	0x10, 0x9e, 0x6b, 0x6f, 0x03, 0xd4, 0xe4, 0x07, 0x86, 0xec, 0x9a, 0x1d, 0x79, 0xfe, 0x5c, 0x26,
    -	0x47, 0x93, 0x1a, 0xc6, 0x98, 0xb2, 0x2a, 0x0a, 0xb1, 0x46, 0xcd, 0xfe, 0x63, 0x0b, 0x8e, 0x24,
    -	0xbe, 0xe8, 0x9a, 0x1b, 0x46, 0xe8, 0x9d, 0xd4, 0x57, 0xcd, 0xf6, 0xb8, 0xf8, 0xdc, 0x90, 0x7f,
    -	0x93, 0xda, 0xf3, 0xb2, 0x44, 0xfb, 0xa2, 0x2b, 0xd0, 0xef, 0x46, 0xa4, 0x29, 0x3f, 0xe6, 0xb1,
    -	0x8e, 0x1f, 0xc3, 0x7b, 0x15, 0xcf, 0x48, 0x99, 0xd6, 0xc4, 0x9c, 0x80, 0xfd, 0x67, 0x45, 0x18,
    -	0xe6, 0xfb, 0x7b, 0xc5, 0x69, 0x1d, 0xc2, 0x5c, 0x3c, 0x03, 0xc3, 0x6e, 0xb3, 0xd9, 0x8e, 0x9c,
    -	0xdb, 0xe2, 0xde, 0x1b, 0xe2, 0x67, 0x50, 0x59, 0x16, 0xe2, 0x18, 0x8e, 0xca, 0xd0, 0xc7, 0xba,
    -	0xc2, 0xbf, 0xf2, 0xc9, 0xec, 0xaf, 0x14, 0x7d, 0x9f, 0x5d, 0x74, 0x22, 0x87, 0xb3, 0x9c, 0x6a,
    -	0x5f, 0xd1, 0x22, 0xcc, 0x48, 0x20, 0x07, 0xe0, 0xb6, 0xeb, 0x39, 0xc1, 0x0e, 0x2d, 0x9b, 0x2e,
    -	0x32, 0x82, 0xcf, 0x75, 0x26, 0x38, 0xaf, 0xf0, 0x39, 0x59, 0xf5, 0x61, 0x31, 0x00, 0x6b, 0x44,
    -	0x67, 0x5e, 0x86, 0x61, 0x85, 0x7c, 0x10, 0xce, 0x71, 0xe6, 0x63, 0x30, 0x91, 0x68, 0xab, 0x5b,
    -	0xf5, 0x51, 0x9d, 0xf1, 0xfc, 0x43, 0x76, 0x64, 0x88, 0x5e, 0x2f, 0x79, 0xdb, 0xe2, 0x6e, 0xba,
    -	0x07, 0x47, 0x1b, 0x19, 0x47, 0xbe, 0x98, 0xd7, 0xde, 0xaf, 0x88, 0x53, 0xe2, 0xb3, 0x8f, 0x66,
    -	0x41, 0x71, 0x66, 0x1b, 0xc6, 0x89, 0x58, 0xe8, 0x74, 0x22, 0xd2, 0xf3, 0xee, 0xa8, 0xea, 0xfc,
    -	0x55, 0xb2, 0xa3, 0x0e, 0xd5, 0xef, 0x64, 0xf7, 0x4f, 0xf3, 0xd1, 0xe7, 0xc7, 0xe5, 0x88, 0x20,
    -	0x50, 0xbc, 0x4a, 0x76, 0xf8, 0x54, 0xe8, 0x5f, 0x57, 0xec, 0xf8, 0x75, 0x5f, 0xb3, 0x60, 0x4c,
    -	0x7d, 0xdd, 0x21, 0x9c, 0x0b, 0xf3, 0xe6, 0xb9, 0x70, 0xba, 0xe3, 0x02, 0xcf, 0x39, 0x11, 0xbe,
    -	0x5e, 0x80, 0x93, 0x0a, 0x87, 0x3e, 0xa2, 0xf8, 0x1f, 0xb1, 0xaa, 0x2e, 0xc0, 0xb0, 0xa7, 0xc4,
    -	0x89, 0x96, 0x29, 0xc7, 0x8b, 0x85, 0x89, 0x31, 0x0e, 0xbd, 0xf2, 0xbc, 0xf8, 0xd2, 0x1e, 0xd5,
    -	0xe5, 0xec, 0xe2, 0x72, 0x9f, 0x87, 0x62, 0xdb, 0xad, 0x8b, 0x0b, 0xe6, 0xc3, 0x72, 0xb4, 0x6f,
    -	0x94, 0x17, 0xf7, 0x77, 0x4b, 0x8f, 0xe6, 0xa9, 0x9c, 0xe8, 0xcd, 0x16, 0xce, 0xde, 0x28, 0x2f,
    -	0x62, 0x5a, 0x19, 0xcd, 0xc1, 0x84, 0xd4, 0xaa, 0xdd, 0xa4, 0x7c, 0xa9, 0xef, 0x89, 0x7b, 0x48,
    -	0x09, 0xcb, 0xb1, 0x09, 0xc6, 0x49, 0x7c, 0xb4, 0x08, 0x93, 0x5b, 0xed, 0xdb, 0xa4, 0x41, 0x22,
    -	0xfe, 0xc1, 0x57, 0x09, 0x17, 0x25, 0x0f, 0xc7, 0x4f, 0xd8, 0xab, 0x09, 0x38, 0x4e, 0xd5, 0xb0,
    -	0xbf, 0xcd, 0xee, 0x03, 0x31, 0x7a, 0x1a, 0x7f, 0xf3, 0x9d, 0x5c, 0xce, 0xbd, 0xac, 0x8a, 0xab,
    -	0x64, 0x67, 0xcd, 0xa7, 0x7c, 0x48, 0xf6, 0xaa, 0x30, 0xd6, 0x7c, 0x5f, 0xc7, 0x35, 0xff, 0xbb,
    -	0x05, 0x38, 0xa6, 0x46, 0xc0, 0xe0, 0x96, 0xbf, 0xdb, 0xc7, 0xe0, 0x22, 0x8c, 0xd4, 0xc9, 0xba,
    -	0xd3, 0x6e, 0x44, 0x4a, 0xaf, 0xd1, 0xcf, 0x55, 0x6d, 0x8b, 0x71, 0x31, 0xd6, 0x71, 0x0e, 0x30,
    -	0x6c, 0xbf, 0x39, 0xc6, 0x2e, 0xe2, 0xc8, 0xa1, 0x6b, 0x5c, 0xed, 0x1a, 0x2b, 0x77, 0xd7, 0x3c,
    -	0x06, 0xfd, 0x6e, 0x93, 0x32, 0x66, 0x05, 0x93, 0xdf, 0x2a, 0xd3, 0x42, 0xcc, 0x61, 0xe8, 0x09,
    -	0x18, 0xac, 0xf9, 0xcd, 0xa6, 0xe3, 0xd5, 0xd9, 0x95, 0x37, 0x3c, 0x3f, 0x42, 0x79, 0xb7, 0x05,
    -	0x5e, 0x84, 0x25, 0x8c, 0x32, 0xdf, 0x4e, 0xb0, 0xc1, 0x85, 0x3d, 0x82, 0xf9, 0x9e, 0x0b, 0x36,
    -	0x42, 0xcc, 0x4a, 0xe9, 0x5b, 0xf5, 0x8e, 0x1f, 0x6c, 0xb9, 0xde, 0xc6, 0xa2, 0x1b, 0x88, 0x2d,
    -	0xa1, 0xee, 0xc2, 0x5b, 0x0a, 0x82, 0x35, 0x2c, 0xb4, 0x0c, 0xfd, 0x2d, 0x3f, 0x88, 0xc2, 0xe9,
    -	0x01, 0x36, 0xdc, 0x8f, 0xe6, 0x1c, 0x44, 0xfc, 0x6b, 0x2b, 0x7e, 0x10, 0xc5, 0x1f, 0x40, 0xff,
    -	0x85, 0x98, 0x57, 0x47, 0xd7, 0x60, 0x90, 0x78, 0xdb, 0xcb, 0x81, 0xdf, 0x9c, 0x3e, 0x92, 0x4f,
    -	0x69, 0x89, 0xa3, 0xf0, 0x65, 0x16, 0xf3, 0xa8, 0xa2, 0x18, 0x4b, 0x12, 0xe8, 0xa3, 0x50, 0x24,
    -	0xde, 0xf6, 0xf4, 0x20, 0xa3, 0x34, 0x93, 0x43, 0xe9, 0xa6, 0x13, 0xc4, 0x67, 0xfe, 0x92, 0xb7,
    -	0x8d, 0x69, 0x1d, 0xf4, 0x09, 0x18, 0x96, 0x07, 0x46, 0x28, 0xa4, 0xa8, 0x99, 0x0b, 0x56, 0x1e,
    -	0x33, 0x98, 0xbc, 0xdb, 0x76, 0x03, 0xd2, 0x24, 0x5e, 0x14, 0xc6, 0x27, 0xa4, 0x84, 0x86, 0x38,
    -	0xa6, 0x86, 0x6a, 0x30, 0x1a, 0x90, 0xd0, 0xbd, 0x47, 0x2a, 0x7e, 0xc3, 0xad, 0xed, 0x4c, 0x9f,
    -	0x60, 0xdd, 0x7b, 0xaa, 0xe3, 0x90, 0x61, 0xad, 0x42, 0x2c, 0xe5, 0xd7, 0x4b, 0xb1, 0x41, 0x14,
    -	0xbd, 0x05, 0x63, 0x01, 0x09, 0x23, 0x27, 0x88, 0x44, 0x2b, 0xd3, 0x4a, 0x2b, 0x37, 0x86, 0x75,
    -	0x00, 0x7f, 0x4e, 0xc4, 0xcd, 0xc4, 0x10, 0x6c, 0x52, 0x40, 0x9f, 0x90, 0x2a, 0x87, 0x15, 0xbf,
    -	0xed, 0x45, 0xe1, 0xf4, 0x30, 0xeb, 0x77, 0xa6, 0x6e, 0xfa, 0x66, 0x8c, 0x97, 0xd4, 0x49, 0xf0,
    -	0xca, 0xd8, 0x20, 0x85, 0x3e, 0x05, 0x63, 0xfc, 0x3f, 0x57, 0xa9, 0x86, 0xd3, 0xc7, 0x18, 0xed,
    -	0xb3, 0xf9, 0xb4, 0x39, 0xe2, 0xfc, 0x31, 0x41, 0x7c, 0x4c, 0x2f, 0x0d, 0xb1, 0x49, 0x0d, 0x61,
    -	0x18, 0x6b, 0xb8, 0xdb, 0xc4, 0x23, 0x61, 0x58, 0x09, 0xfc, 0xdb, 0x44, 0x48, 0x88, 0x4f, 0x66,
    -	0xab, 0x60, 0xfd, 0xdb, 0x44, 0x3c, 0x02, 0xf5, 0x3a, 0xd8, 0x24, 0x81, 0x6e, 0xc0, 0x38, 0x7d,
    -	0x92, 0xbb, 0x31, 0xd1, 0x91, 0x6e, 0x44, 0xd9, 0xc3, 0x19, 0x1b, 0x95, 0x70, 0x82, 0x08, 0xba,
    -	0x0e, 0xa3, 0x6c, 0xcc, 0xdb, 0x2d, 0x4e, 0xf4, 0x78, 0x37, 0xa2, 0xcc, 0xa0, 0xa0, 0xaa, 0x55,
    -	0xc1, 0x06, 0x01, 0xf4, 0x26, 0x0c, 0x37, 0xdc, 0x75, 0x52, 0xdb, 0xa9, 0x35, 0xc8, 0xf4, 0x28,
    -	0xa3, 0x96, 0x79, 0x18, 0x5e, 0x93, 0x48, 0x9c, 0x3f, 0x57, 0x7f, 0x71, 0x5c, 0x1d, 0xdd, 0x84,
    -	0xe3, 0x11, 0x09, 0x9a, 0xae, 0xe7, 0xd0, 0x43, 0x4c, 0x3c, 0x09, 0x99, 0x66, 0x7c, 0x8c, 0xad,
    -	0xae, 0x33, 0x62, 0x36, 0x8e, 0xaf, 0x65, 0x62, 0xe1, 0x9c, 0xda, 0xe8, 0x2e, 0x4c, 0x67, 0x40,
    -	0xf8, 0xba, 0x3d, 0xca, 0x28, 0xbf, 0x26, 0x28, 0x4f, 0xaf, 0xe5, 0xe0, 0xed, 0x77, 0x80, 0xe1,
    -	0x5c, 0xea, 0xe8, 0x3a, 0x4c, 0xb0, 0x93, 0xb3, 0xd2, 0x6e, 0x34, 0x44, 0x83, 0xe3, 0xac, 0xc1,
    -	0x27, 0x24, 0x1f, 0x51, 0x36, 0xc1, 0xfb, 0xbb, 0x25, 0x88, 0xff, 0xe1, 0x64, 0x6d, 0x74, 0x9b,
    -	0x29, 0x61, 0xdb, 0x81, 0x1b, 0xed, 0xd0, 0x5d, 0x45, 0xee, 0x46, 0xd3, 0x13, 0x1d, 0x05, 0x52,
    -	0x3a, 0xaa, 0xd2, 0xd4, 0xea, 0x85, 0x38, 0x49, 0x90, 0x5e, 0x05, 0x61, 0x54, 0x77, 0xbd, 0xe9,
    -	0x49, 0xfe, 0x9e, 0x92, 0x27, 0x69, 0x95, 0x16, 0x62, 0x0e, 0x63, 0x0a, 0x58, 0xfa, 0xe3, 0x3a,
    -	0xbd, 0x71, 0xa7, 0x18, 0x62, 0xac, 0x80, 0x95, 0x00, 0x1c, 0xe3, 0x50, 0x26, 0x38, 0x8a, 0x76,
    -	0xa6, 0x11, 0x43, 0x55, 0x07, 0xe2, 0xda, 0xda, 0x27, 0x30, 0x2d, 0xb7, 0x6f, 0xc3, 0xb8, 0x3a,
    -	0x26, 0xd8, 0x98, 0xa0, 0x12, 0xf4, 0x33, 0xb6, 0x4f, 0x88, 0x4f, 0x87, 0x69, 0x17, 0x18, 0x4b,
    -	0x88, 0x79, 0x39, 0xeb, 0x82, 0x7b, 0x8f, 0xcc, 0xef, 0x44, 0x84, 0xcb, 0x22, 0x8a, 0x5a, 0x17,
    -	0x24, 0x00, 0xc7, 0x38, 0xf6, 0xbf, 0xe7, 0xec, 0x73, 0x7c, 0x4b, 0xf4, 0x70, 0x2f, 0x3e, 0x0b,
    -	0x43, 0xcc, 0xf0, 0xc3, 0x0f, 0xb8, 0x76, 0xb6, 0x3f, 0x66, 0x98, 0xaf, 0x88, 0x72, 0xac, 0x30,
    -	0xd0, 0xab, 0x30, 0x56, 0xd3, 0x1b, 0x10, 0x97, 0xba, 0x3a, 0x46, 0x8c, 0xd6, 0xb1, 0x89, 0x8b,
    -	0x2e, 0xc1, 0x10, 0xb3, 0x71, 0xaa, 0xf9, 0x0d, 0xc1, 0x6d, 0x4a, 0xce, 0x64, 0xa8, 0x22, 0xca,
    -	0xf7, 0xb5, 0xdf, 0x58, 0x61, 0xa3, 0x73, 0x30, 0x40, 0xbb, 0x50, 0xae, 0x88, 0xeb, 0x54, 0x49,
    -	0x02, 0xaf, 0xb0, 0x52, 0x2c, 0xa0, 0xf6, 0x1f, 0x5b, 0x8c, 0x97, 0x4a, 0x9f, 0xf9, 0xe8, 0x0a,
    -	0xbb, 0x34, 0xd8, 0x0d, 0xa2, 0x69, 0xe1, 0x1f, 0xd7, 0x6e, 0x02, 0x05, 0xdb, 0x4f, 0xfc, 0xc7,
    -	0x46, 0x4d, 0xf4, 0x76, 0xf2, 0x66, 0xe0, 0x0c, 0xc5, 0x8b, 0x72, 0x08, 0x92, 0xb7, 0xc3, 0x23,
    -	0xf1, 0x15, 0x47, 0xfb, 0xd3, 0xe9, 0x8a, 0xb0, 0x7f, 0xaa, 0xa0, 0xad, 0x92, 0x6a, 0xe4, 0x44,
    -	0x04, 0x55, 0x60, 0xf0, 0x8e, 0xe3, 0x46, 0xae, 0xb7, 0x21, 0xf8, 0xbe, 0xce, 0x17, 0x1d, 0xab,
    -	0x74, 0x8b, 0x57, 0xe0, 0xdc, 0x8b, 0xf8, 0x83, 0x25, 0x19, 0x4a, 0x31, 0x68, 0x7b, 0x1e, 0xa5,
    -	0x58, 0xe8, 0x95, 0x22, 0xe6, 0x15, 0x38, 0x45, 0xf1, 0x07, 0x4b, 0x32, 0xe8, 0x1d, 0x00, 0x79,
    -	0x42, 0x90, 0xba, 0x90, 0x1d, 0x3e, 0xdb, 0x9d, 0xe8, 0x9a, 0xaa, 0xc3, 0x85, 0x93, 0xf1, 0x7f,
    -	0xac, 0xd1, 0xb3, 0x23, 0x6d, 0x4e, 0xf5, 0xce, 0xa0, 0x4f, 0xd2, 0x2d, 0xea, 0x04, 0x11, 0xa9,
    -	0xcf, 0x45, 0x62, 0x70, 0x9e, 0xee, 0xed, 0x71, 0xb8, 0xe6, 0x36, 0x89, 0xbe, 0x9d, 0x05, 0x11,
    -	0x1c, 0xd3, 0xb3, 0x7f, 0xbf, 0x08, 0xd3, 0x79, 0xdd, 0xa5, 0x9b, 0x86, 0xdc, 0x75, 0xa3, 0x05,
    -	0xca, 0xd6, 0x5a, 0xe6, 0xa6, 0x59, 0x12, 0xe5, 0x58, 0x61, 0xd0, 0xd5, 0x1b, 0xba, 0x1b, 0xf2,
    -	0x6d, 0xdf, 0x1f, 0xaf, 0xde, 0x2a, 0x2b, 0xc5, 0x02, 0x4a, 0xf1, 0x02, 0xe2, 0x84, 0xc2, 0xf8,
    -	0x4e, 0x5b, 0xe5, 0x98, 0x95, 0x62, 0x01, 0xd5, 0xa5, 0x8c, 0x7d, 0x5d, 0xa4, 0x8c, 0xc6, 0x10,
    -	0xf5, 0x3f, 0xd8, 0x21, 0x42, 0x9f, 0x06, 0x58, 0x77, 0x3d, 0x37, 0xdc, 0x64, 0xd4, 0x07, 0x0e,
    -	0x4c, 0x5d, 0x31, 0xc5, 0xcb, 0x8a, 0x0a, 0xd6, 0x28, 0xa2, 0x97, 0x60, 0x44, 0x1d, 0x20, 0xe5,
    -	0x45, 0xa6, 0xfa, 0xd7, 0x4c, 0xa9, 0xe2, 0xd3, 0x74, 0x11, 0xeb, 0x78, 0xf6, 0x67, 0x93, 0xeb,
    -	0x45, 0xec, 0x00, 0x6d, 0x7c, 0xad, 0x5e, 0xc7, 0xb7, 0xd0, 0x79, 0x7c, 0xed, 0xbf, 0x1e, 0x86,
    -	0x09, 0xa3, 0xb1, 0x76, 0xd8, 0xc3, 0x99, 0x7b, 0x99, 0x5e, 0x40, 0x4e, 0x44, 0xc4, 0xfe, 0xb3,
    -	0xbb, 0x6f, 0x15, 0xfd, 0x92, 0xa2, 0x3b, 0x80, 0xd7, 0x47, 0x9f, 0x86, 0xe1, 0x86, 0x13, 0x32,
    -	0x89, 0x25, 0x11, 0xfb, 0xae, 0x17, 0x62, 0xf1, 0x83, 0xd0, 0x09, 0x23, 0xed, 0xd6, 0xe7, 0xb4,
    -	0x63, 0x92, 0xf4, 0xa6, 0xa4, 0xfc, 0x95, 0xb4, 0xee, 0x54, 0x9d, 0xa0, 0x4c, 0xd8, 0x0e, 0xe6,
    -	0x30, 0x74, 0x89, 0x1d, 0xad, 0x74, 0x55, 0x2c, 0x50, 0x6e, 0x94, 0x2d, 0xb3, 0x7e, 0x83, 0xc9,
    -	0x56, 0x30, 0x6c, 0x60, 0xc6, 0x6f, 0xb2, 0x81, 0x0e, 0x6f, 0xb2, 0xa7, 0x60, 0x90, 0xfd, 0x50,
    -	0x2b, 0x40, 0xcd, 0x46, 0x99, 0x17, 0x63, 0x09, 0x4f, 0x2e, 0x98, 0xa1, 0xde, 0x16, 0x0c, 0x7d,
    -	0xf5, 0x89, 0x45, 0xcd, 0xcc, 0x2e, 0x86, 0xf8, 0x29, 0x27, 0x96, 0x3c, 0x96, 0x30, 0xf4, 0x6b,
    -	0x16, 0x20, 0xa7, 0x41, 0x5f, 0xcb, 0xb4, 0x58, 0x3d, 0x6e, 0x80, 0xb1, 0xda, 0xaf, 0x76, 0x1d,
    -	0xf6, 0x76, 0x38, 0x3b, 0x97, 0xaa, 0xcd, 0x25, 0xa5, 0xaf, 0x88, 0x2e, 0xa2, 0x34, 0x82, 0x7e,
    -	0x19, 0x5d, 0x73, 0xc3, 0xe8, 0xf3, 0x7f, 0x9f, 0xb8, 0x9c, 0x32, 0xba, 0x84, 0x6e, 0xe8, 0x8f,
    -	0xaf, 0x91, 0x03, 0x3e, 0xbe, 0xc6, 0x72, 0x1f, 0x5e, 0xdf, 0x9f, 0x78, 0xc0, 0x8c, 0xb2, 0x2f,
    -	0x7f, 0xa2, 0xcb, 0x03, 0x46, 0x88, 0xd3, 0x7b, 0x79, 0xc6, 0x54, 0x84, 0x1e, 0x78, 0x8c, 0x75,
    -	0xb9, 0xf3, 0x23, 0xf8, 0x46, 0x48, 0x82, 0xf9, 0x93, 0x52, 0x4d, 0xbc, 0xaf, 0xf3, 0x1e, 0x9a,
    -	0xde, 0xf8, 0x87, 0x2c, 0x98, 0x4e, 0x0f, 0x10, 0xef, 0xd2, 0xf4, 0x38, 0xeb, 0xbf, 0xdd, 0x69,
    -	0x64, 0x44, 0xe7, 0xa5, 0xb9, 0xeb, 0xf4, 0x5c, 0x0e, 0x2d, 0x9c, 0xdb, 0x0a, 0xba, 0x04, 0x10,
    -	0x46, 0x7e, 0x8b, 0x9f, 0xf5, 0x8c, 0x99, 0x1d, 0x66, 0x06, 0x17, 0x50, 0x55, 0xa5, 0xfb, 0xf1,
    -	0x5d, 0xa0, 0xe1, 0xce, 0xb4, 0xe1, 0x44, 0xce, 0x8a, 0xc9, 0x90, 0x77, 0x2f, 0xea, 0xf2, 0xee,
    -	0x2e, 0x52, 0xd2, 0x59, 0x39, 0xa7, 0xb3, 0x6f, 0xb5, 0x1d, 0x2f, 0x72, 0xa3, 0x1d, 0x5d, 0x3e,
    -	0xee, 0x81, 0x39, 0x94, 0xe8, 0x53, 0xd0, 0xdf, 0x70, 0xbd, 0xf6, 0x5d, 0x71, 0xc7, 0x9e, 0xcb,
    -	0x7e, 0xfe, 0x78, 0xed, 0xbb, 0xe6, 0xe4, 0x94, 0xe8, 0x56, 0x66, 0xe5, 0xfb, 0xbb, 0x25, 0x94,
    -	0x46, 0xc0, 0x9c, 0xaa, 0xfd, 0x34, 0x8c, 0x2f, 0x3a, 0xa4, 0xe9, 0x7b, 0x4b, 0x5e, 0xbd, 0xe5,
    -	0xbb, 0x5e, 0x84, 0xa6, 0xa1, 0x8f, 0x31, 0x97, 0xfc, 0x6a, 0xed, 0xa3, 0x83, 0x8f, 0x59, 0x89,
    -	0xbd, 0x01, 0xc7, 0x16, 0xfd, 0x3b, 0xde, 0x1d, 0x27, 0xa8, 0xcf, 0x55, 0xca, 0x9a, 0xbc, 0x70,
    -	0x55, 0xca, 0xab, 0xac, 0x7c, 0x69, 0x80, 0x56, 0x93, 0x2f, 0xc2, 0x65, 0xb7, 0x41, 0x72, 0xa4,
    -	0xba, 0x3f, 0x5b, 0x30, 0x5a, 0x8a, 0xf1, 0x95, 0x4e, 0xd2, 0xca, 0x35, 0x67, 0x78, 0x0b, 0x86,
    -	0xd6, 0x5d, 0xd2, 0xa8, 0x63, 0xb2, 0x2e, 0x66, 0xe3, 0xc9, 0x7c, 0x83, 0xc7, 0x65, 0x8a, 0xa9,
    -	0x94, 0xa7, 0x4c, 0xda, 0xb5, 0x2c, 0x2a, 0x63, 0x45, 0x06, 0x6d, 0xc1, 0xa4, 0x9c, 0x33, 0x09,
    -	0x15, 0xe7, 0xfd, 0x53, 0x9d, 0x96, 0xaf, 0x49, 0x9c, 0x19, 0x7f, 0xe3, 0x04, 0x19, 0x9c, 0x22,
    -	0x8c, 0x4e, 0x41, 0x5f, 0x93, 0x72, 0x36, 0x7d, 0x6c, 0xf8, 0x99, 0x78, 0x8b, 0x49, 0xea, 0x58,
    -	0xa9, 0xfd, 0xf3, 0x16, 0x9c, 0x48, 0x8d, 0x8c, 0x90, 0x58, 0x3e, 0xe0, 0x59, 0x48, 0x4a, 0x10,
    -	0x0b, 0xdd, 0x25, 0x88, 0xf6, 0x7f, 0x61, 0xc1, 0xd1, 0xa5, 0x66, 0x2b, 0xda, 0x59, 0x74, 0x4d,
    -	0xdb, 0x83, 0x97, 0x61, 0xa0, 0x49, 0xea, 0x6e, 0xbb, 0x29, 0x66, 0xae, 0x24, 0x6f, 0xff, 0x15,
    -	0x56, 0x4a, 0x4f, 0x90, 0x6a, 0xe4, 0x07, 0xce, 0x06, 0xe1, 0x05, 0x58, 0xa0, 0x33, 0x1e, 0xca,
    -	0xbd, 0x47, 0xae, 0xb9, 0x4d, 0x37, 0xba, 0xbf, 0xdd, 0x25, 0xcc, 0x06, 0x24, 0x11, 0x1c, 0xd3,
    -	0xb3, 0xbf, 0x69, 0xc1, 0x84, 0x5c, 0xf7, 0x73, 0xf5, 0x7a, 0x40, 0xc2, 0x10, 0xcd, 0x40, 0xc1,
    -	0x6d, 0x89, 0x5e, 0x82, 0xe8, 0x65, 0xa1, 0x5c, 0xc1, 0x05, 0xb7, 0x25, 0x9f, 0x6b, 0x8c, 0xc1,
    -	0x28, 0x9a, 0x16, 0x14, 0x57, 0x44, 0x39, 0x56, 0x18, 0xe8, 0x3c, 0x0c, 0x79, 0x7e, 0x9d, 0xbf,
    -	0x78, 0x84, 0x0e, 0x9d, 0x62, 0xae, 0x8a, 0x32, 0xac, 0xa0, 0xa8, 0x02, 0xc3, 0xdc, 0xbe, 0x36,
    -	0x5e, 0xb4, 0x3d, 0x59, 0xe9, 0xb2, 0x2f, 0x5b, 0x93, 0x35, 0x71, 0x4c, 0xc4, 0xfe, 0x53, 0x0b,
    -	0x46, 0xe5, 0x97, 0xf5, 0xf8, 0x16, 0xa5, 0x5b, 0x2b, 0x7e, 0x87, 0xc6, 0x5b, 0x8b, 0xbe, 0x25,
    -	0x19, 0xc4, 0x78, 0x42, 0x16, 0x0f, 0xf4, 0x84, 0xbc, 0x08, 0x23, 0x4e, 0xab, 0x55, 0x31, 0xdf,
    -	0x9f, 0x6c, 0x29, 0xcd, 0xc5, 0xc5, 0x58, 0xc7, 0xb1, 0x7f, 0xae, 0x00, 0xe3, 0xf2, 0x0b, 0xaa,
    -	0xed, 0xdb, 0x21, 0x89, 0xd0, 0x1a, 0x0c, 0x3b, 0x7c, 0x96, 0x88, 0x5c, 0xe4, 0x8f, 0x65, 0xcb,
    -	0x45, 0x8d, 0x29, 0x8d, 0x19, 0xe9, 0x39, 0x59, 0x1b, 0xc7, 0x84, 0x50, 0x03, 0xa6, 0x3c, 0x3f,
    -	0x62, 0x4c, 0x95, 0x82, 0x77, 0x52, 0x55, 0x27, 0xa9, 0x9f, 0x14, 0xd4, 0xa7, 0x56, 0x93, 0x54,
    -	0x70, 0x9a, 0x30, 0x5a, 0x92, 0xb2, 0xe6, 0x62, 0xbe, 0x90, 0x50, 0x9f, 0xb8, 0x6c, 0x51, 0xb3,
    -	0xfd, 0x47, 0x16, 0x0c, 0x4b, 0xb4, 0xc3, 0xb0, 0x4a, 0x58, 0x81, 0xc1, 0x90, 0x4d, 0x82, 0x1c,
    -	0x1a, 0xbb, 0x53, 0xc7, 0xf9, 0x7c, 0xc5, 0xbc, 0x22, 0xff, 0x1f, 0x62, 0x49, 0x83, 0xa9, 0x1a,
    -	0x55, 0xf7, 0xdf, 0x27, 0xaa, 0x46, 0xd5, 0x9f, 0x9c, 0x4b, 0xe9, 0x1f, 0x58, 0x9f, 0x35, 0xd9,
    -	0x3d, 0x7d, 0xd2, 0xb4, 0x02, 0xb2, 0xee, 0xde, 0x4d, 0x3e, 0x69, 0x2a, 0xac, 0x14, 0x0b, 0x28,
    -	0x7a, 0x07, 0x46, 0x6b, 0x52, 0xc7, 0x14, 0xef, 0xf0, 0x73, 0x1d, 0xf5, 0x9d, 0x4a, 0x35, 0xce,
    -	0x65, 0xa4, 0x0b, 0x5a, 0x7d, 0x6c, 0x50, 0x33, 0xed, 0xc7, 0x8a, 0xdd, 0xec, 0xc7, 0x62, 0xba,
    -	0xf9, 0xd6, 0x54, 0xbf, 0x60, 0xc1, 0x00, 0xd7, 0x2d, 0xf4, 0xa6, 0xda, 0xd1, 0x2c, 0x05, 0xe2,
    -	0xb1, 0xbb, 0x49, 0x0b, 0x05, 0x67, 0x83, 0x56, 0x60, 0x98, 0xfd, 0x60, 0xba, 0x91, 0x62, 0xbe,
    -	0xb7, 0x19, 0x6f, 0x55, 0xef, 0xe0, 0x4d, 0x59, 0x0d, 0xc7, 0x14, 0xec, 0x9f, 0x2e, 0xd2, 0xd3,
    -	0x2d, 0x46, 0x35, 0x2e, 0x7d, 0xeb, 0xe1, 0x5d, 0xfa, 0x85, 0x87, 0x75, 0xe9, 0x6f, 0xc0, 0x44,
    -	0x4d, 0xb3, 0x2b, 0x88, 0x67, 0xf2, 0x7c, 0xc7, 0x45, 0xa2, 0x99, 0x20, 0x70, 0xe9, 0xeb, 0x82,
    -	0x49, 0x04, 0x27, 0xa9, 0xa2, 0x4f, 0xc2, 0x28, 0x9f, 0x67, 0xd1, 0x0a, 0x37, 0xc1, 0x7b, 0x22,
    -	0x7f, 0xbd, 0xe8, 0x4d, 0x70, 0x69, 0xbd, 0x56, 0x1d, 0x1b, 0xc4, 0xec, 0x7f, 0xb1, 0x00, 0x2d,
    -	0xb5, 0x36, 0x49, 0x93, 0x04, 0x4e, 0x23, 0x56, 0x0f, 0x7e, 0xc9, 0x82, 0x69, 0x92, 0x2a, 0x5e,
    -	0xf0, 0x9b, 0x4d, 0x21, 0x0c, 0xc8, 0x91, 0x57, 0x2d, 0xe5, 0xd4, 0x89, 0x1f, 0x04, 0x79, 0x18,
    -	0x38, 0xb7, 0x3d, 0xb4, 0x02, 0x47, 0xf8, 0x2d, 0xa9, 0x00, 0x9a, 0x95, 0xde, 0x23, 0x82, 0xf0,
    -	0x91, 0xb5, 0x34, 0x0a, 0xce, 0xaa, 0x67, 0xff, 0xd1, 0x18, 0xe4, 0xf6, 0xe2, 0x03, 0xbd, 0xe8,
    -	0x07, 0x7a, 0xd1, 0x0f, 0xf4, 0xa2, 0x1f, 0xe8, 0x45, 0x3f, 0xd0, 0x8b, 0x7e, 0xa0, 0x17, 0x7d,
    -	0x9f, 0xea, 0x45, 0x7f, 0xc6, 0x82, 0x63, 0xea, 0xfa, 0x32, 0x1e, 0xec, 0x9f, 0x83, 0x23, 0x7c,
    -	0xbb, 0x2d, 0x34, 0x1c, 0xb7, 0xb9, 0x46, 0x9a, 0xad, 0x86, 0x13, 0x49, 0xeb, 0xa7, 0x8b, 0x99,
    -	0x2b, 0x37, 0xe1, 0x62, 0x61, 0x54, 0xe4, 0xbe, 0x6a, 0x19, 0x00, 0x9c, 0xd5, 0x8c, 0xfd, 0xfb,
    -	0x43, 0xd0, 0xbf, 0xb4, 0x4d, 0xbc, 0xe8, 0x10, 0x9e, 0x36, 0x35, 0x18, 0x77, 0xbd, 0x6d, 0xbf,
    -	0xb1, 0x4d, 0xea, 0x1c, 0x7e, 0x90, 0x17, 0xf8, 0x71, 0x41, 0x7a, 0xbc, 0x6c, 0x90, 0xc0, 0x09,
    -	0x92, 0x0f, 0x43, 0xbb, 0x74, 0x19, 0x06, 0xf8, 0xe5, 0x23, 0x54, 0x4b, 0x99, 0x67, 0x36, 0x1b,
    -	0x44, 0x71, 0xa5, 0xc6, 0x9a, 0x2f, 0x7e, 0xb9, 0x89, 0xea, 0xe8, 0xb3, 0x30, 0xbe, 0xee, 0x06,
    -	0x61, 0xb4, 0xe6, 0x36, 0xe9, 0xd5, 0xd0, 0x6c, 0xdd, 0x87, 0x36, 0x49, 0x8d, 0xc3, 0xb2, 0x41,
    -	0x09, 0x27, 0x28, 0xa3, 0x0d, 0x18, 0x6b, 0x38, 0x7a, 0x53, 0x83, 0x07, 0x6e, 0x4a, 0xdd, 0x0e,
    -	0xd7, 0x74, 0x42, 0xd8, 0xa4, 0x4b, 0xb7, 0x53, 0x8d, 0x29, 0x44, 0x86, 0x98, 0x38, 0x43, 0x6d,
    -	0x27, 0xae, 0x09, 0xe1, 0x30, 0xca, 0xa0, 0x31, 0x47, 0x85, 0x61, 0x93, 0x41, 0xd3, 0xdc, 0x11,
    -	0x3e, 0x03, 0xc3, 0x84, 0x0e, 0x21, 0x25, 0x2c, 0x2e, 0x98, 0x0b, 0xbd, 0xf5, 0x75, 0xc5, 0xad,
    -	0x05, 0xbe, 0xa9, 0xc7, 0x5b, 0x92, 0x94, 0x70, 0x4c, 0x14, 0x2d, 0xc0, 0x40, 0x48, 0x02, 0x57,
    -	0xe9, 0x0a, 0x3a, 0x4c, 0x23, 0x43, 0xe3, 0xce, 0x90, 0xfc, 0x37, 0x16, 0x55, 0xe9, 0xf2, 0x72,
    -	0x98, 0x28, 0x96, 0x5d, 0x06, 0xda, 0xf2, 0x9a, 0x63, 0xa5, 0x58, 0x40, 0xd1, 0x9b, 0x30, 0x18,
    -	0x90, 0x06, 0x53, 0x14, 0x8f, 0xf5, 0xbe, 0xc8, 0xb9, 0xde, 0x99, 0xd7, 0xc3, 0x92, 0x00, 0xba,
    -	0x0a, 0x28, 0x20, 0x94, 0xc1, 0x73, 0xbd, 0x0d, 0x65, 0xbe, 0x2f, 0x0e, 0x5a, 0xc5, 0x48, 0xe3,
    -	0x18, 0x43, 0xfa, 0xc1, 0xe2, 0x8c, 0x6a, 0xe8, 0x32, 0x4c, 0xa9, 0xd2, 0xb2, 0x17, 0x46, 0x0e,
    -	0x3d, 0xe0, 0xb8, 0xb8, 0x5e, 0xc9, 0x57, 0x70, 0x12, 0x01, 0xa7, 0xeb, 0xd8, 0xbf, 0x61, 0x01,
    -	0x1f, 0xe7, 0x43, 0x90, 0x2a, 0xbc, 0x6e, 0x4a, 0x15, 0x4e, 0xe6, 0xce, 0x5c, 0x8e, 0x44, 0xe1,
    -	0x37, 0x2c, 0x18, 0xd1, 0x66, 0x36, 0x5e, 0xb3, 0x56, 0x87, 0x35, 0xdb, 0x86, 0x49, 0xba, 0xd2,
    -	0xaf, 0xdf, 0x0e, 0x49, 0xb0, 0x4d, 0xea, 0x6c, 0x61, 0x16, 0xee, 0x6f, 0x61, 0x2a, 0x53, 0xe1,
    -	0x6b, 0x09, 0x82, 0x38, 0xd5, 0x84, 0xfd, 0x19, 0xd9, 0x55, 0x65, 0x59, 0x5d, 0x53, 0x73, 0x9e,
    -	0xb0, 0xac, 0x56, 0xb3, 0x8a, 0x63, 0x1c, 0xba, 0xd5, 0x36, 0xfd, 0x30, 0x4a, 0x5a, 0x56, 0x5f,
    -	0xf1, 0xc3, 0x08, 0x33, 0x88, 0xfd, 0x02, 0xc0, 0xd2, 0x5d, 0x52, 0xe3, 0x2b, 0x56, 0x7f, 0xf4,
    -	0x58, 0xf9, 0x8f, 0x1e, 0xfb, 0x6f, 0x2c, 0x18, 0x5f, 0x5e, 0x30, 0x6e, 0xae, 0x59, 0x00, 0xfe,
    -	0x52, 0xbb, 0x75, 0x6b, 0x55, 0x9a, 0xf7, 0x70, 0x0b, 0x07, 0x55, 0x8a, 0x35, 0x0c, 0x74, 0x12,
    -	0x8a, 0x8d, 0xb6, 0x27, 0xc4, 0x9e, 0x83, 0xf4, 0x7a, 0xbc, 0xd6, 0xf6, 0x30, 0x2d, 0xd3, 0x7c,
    -	0xe0, 0x8a, 0x3d, 0xfb, 0xc0, 0x75, 0x0d, 0xc5, 0x83, 0x4a, 0xd0, 0x7f, 0xe7, 0x8e, 0x5b, 0xe7,
    -	0x11, 0x06, 0x84, 0xe9, 0xd1, 0xad, 0x5b, 0xe5, 0xc5, 0x10, 0xf3, 0x72, 0xfb, 0xcb, 0x45, 0x98,
    -	0x59, 0x6e, 0x90, 0xbb, 0xef, 0x31, 0xca, 0x42, 0xaf, 0x1e, 0x7c, 0x07, 0x13, 0x20, 0x1d, 0xd4,
    -	0x4b, 0xb3, 0xfb, 0x78, 0xac, 0xc3, 0x20, 0x37, 0x2c, 0x96, 0x31, 0x17, 0x32, 0xd5, 0xb9, 0xf9,
    -	0x03, 0x32, 0xcb, 0x0d, 0x94, 0x85, 0x3a, 0x57, 0x5d, 0x98, 0xa2, 0x14, 0x4b, 0xe2, 0x33, 0xaf,
    -	0xc0, 0xa8, 0x8e, 0x79, 0x20, 0x7f, 0xe9, 0x1f, 0x2e, 0xc2, 0x24, 0xed, 0xc1, 0x43, 0x9d, 0x88,
    -	0x1b, 0xe9, 0x89, 0x78, 0xd0, 0x3e, 0xb3, 0xdd, 0x67, 0xe3, 0x9d, 0xe4, 0x6c, 0x5c, 0xcc, 0x9b,
    -	0x8d, 0xc3, 0x9e, 0x83, 0x1f, 0xb1, 0xe0, 0xc8, 0x72, 0xc3, 0xaf, 0x6d, 0x25, 0xfc, 0x5a, 0x5f,
    -	0x82, 0x11, 0x7a, 0x1c, 0x87, 0x46, 0x88, 0x17, 0x23, 0xe8, 0x8f, 0x00, 0x61, 0x1d, 0x4f, 0xab,
    -	0x76, 0xe3, 0x46, 0x79, 0x31, 0x2b, 0x56, 0x90, 0x00, 0x61, 0x1d, 0xcf, 0xfe, 0x4b, 0x0b, 0x4e,
    -	0x5f, 0x5e, 0x58, 0x8a, 0x97, 0x62, 0x2a, 0x5c, 0xd1, 0x39, 0x18, 0x68, 0xd5, 0xb5, 0xae, 0xc4,
    -	0x62, 0xe1, 0x45, 0xd6, 0x0b, 0x01, 0x7d, 0xbf, 0x44, 0x06, 0xbb, 0x01, 0x70, 0x19, 0x57, 0x16,
    -	0xc4, 0xb9, 0x2b, 0xb5, 0x40, 0x56, 0xae, 0x16, 0xe8, 0x09, 0x18, 0xa4, 0xf7, 0x82, 0x5b, 0x93,
    -	0xfd, 0xe6, 0x06, 0x1b, 0xbc, 0x08, 0x4b, 0x98, 0xfd, 0xeb, 0x16, 0x1c, 0xb9, 0xec, 0x46, 0xf4,
    -	0xd2, 0x4e, 0xc6, 0xe3, 0xa1, 0xb7, 0x76, 0xe8, 0x46, 0x7e, 0xb0, 0x93, 0x8c, 0xc7, 0x83, 0x15,
    -	0x04, 0x6b, 0x58, 0xfc, 0x83, 0xb6, 0x5d, 0xe6, 0x29, 0x53, 0x30, 0xf5, 0x6e, 0x58, 0x94, 0x63,
    -	0x85, 0x41, 0xc7, 0xab, 0xee, 0x06, 0x4c, 0x64, 0xb9, 0x23, 0x0e, 0x6e, 0x35, 0x5e, 0x8b, 0x12,
    -	0x80, 0x63, 0x1c, 0xfb, 0x9f, 0x2c, 0x28, 0x5d, 0xe6, 0xfe, 0xbe, 0xeb, 0x61, 0xce, 0xa1, 0xfb,
    -	0x02, 0x0c, 0x13, 0xa9, 0x20, 0x10, 0xbd, 0x56, 0x8c, 0xa8, 0xd2, 0x1c, 0xf0, 0xb0, 0x40, 0x0a,
    -	0xaf, 0x07, 0xe7, 0xfb, 0x83, 0x79, 0x4f, 0x2f, 0x03, 0x22, 0x7a, 0x5b, 0x7a, 0x9c, 0x24, 0x16,
    -	0x70, 0x65, 0x29, 0x05, 0xc5, 0x19, 0x35, 0xec, 0x9f, 0xb7, 0xe0, 0x98, 0xfa, 0xe0, 0xf7, 0xdd,
    -	0x67, 0xda, 0xbf, 0x53, 0x80, 0xb1, 0x2b, 0x6b, 0x6b, 0x95, 0xcb, 0x24, 0xd2, 0x56, 0x65, 0x67,
    -	0xb5, 0x3f, 0xd6, 0xb4, 0x97, 0x9d, 0xde, 0x88, 0xed, 0xc8, 0x6d, 0xcc, 0xf2, 0xe8, 0x7f, 0xb3,
    -	0x65, 0x2f, 0xba, 0x1e, 0x54, 0xa3, 0xc0, 0xf5, 0x36, 0x32, 0x57, 0xba, 0xe4, 0x59, 0x8a, 0x79,
    -	0x3c, 0x0b, 0x7a, 0x01, 0x06, 0x58, 0xf8, 0x41, 0x39, 0x09, 0x8f, 0xa8, 0x27, 0x16, 0x2b, 0xdd,
    -	0xdf, 0x2d, 0x0d, 0xdf, 0xc0, 0x65, 0xfe, 0x07, 0x0b, 0x54, 0x74, 0x03, 0x46, 0x36, 0xa3, 0xa8,
    -	0x75, 0x85, 0x38, 0x75, 0x12, 0xc8, 0x53, 0xf6, 0x4c, 0xd6, 0x29, 0x4b, 0x07, 0x81, 0xa3, 0xc5,
    -	0x07, 0x53, 0x5c, 0x16, 0x62, 0x9d, 0x8e, 0x5d, 0x05, 0x88, 0x61, 0x0f, 0x48, 0x71, 0x63, 0xaf,
    -	0xc1, 0x30, 0xfd, 0xdc, 0xb9, 0x86, 0xeb, 0x74, 0x56, 0x8d, 0x3f, 0x03, 0xc3, 0x52, 0xf1, 0x1d,
    -	0x8a, 0xe0, 0x20, 0xec, 0x46, 0x92, 0x7a, 0xf1, 0x10, 0xc7, 0x70, 0xfb, 0x71, 0x10, 0xb6, 0xc3,
    -	0x9d, 0x48, 0xda, 0xeb, 0x70, 0x94, 0x19, 0x41, 0x3b, 0xd1, 0xa6, 0xb1, 0x46, 0xbb, 0x2f, 0x86,
    -	0x67, 0xc5, 0xbb, 0xae, 0xa0, 0xec, 0x7d, 0xa4, 0xf3, 0xf9, 0xa8, 0xa4, 0x18, 0xbf, 0xf1, 0xec,
    -	0x7f, 0xec, 0x83, 0x47, 0xca, 0xd5, 0xfc, 0xa8, 0x56, 0x97, 0x60, 0x94, 0xb3, 0x8b, 0x74, 0x69,
    -	0x38, 0x0d, 0xd1, 0xae, 0x92, 0x80, 0xae, 0x69, 0x30, 0x6c, 0x60, 0xa2, 0xd3, 0x50, 0x74, 0xdf,
    -	0xf5, 0x92, 0xae, 0x99, 0xe5, 0xb7, 0x56, 0x31, 0x2d, 0xa7, 0x60, 0xca, 0x79, 0xf2, 0x23, 0x5d,
    -	0x81, 0x15, 0xf7, 0xf9, 0x3a, 0x8c, 0xbb, 0x61, 0x2d, 0x74, 0xcb, 0x1e, 0xdd, 0xa7, 0xda, 0x4e,
    -	0x57, 0x32, 0x07, 0xda, 0x69, 0x05, 0xc5, 0x09, 0x6c, 0xed, 0x7e, 0xe9, 0xef, 0x99, 0x7b, 0xed,
    -	0x1a, 0x53, 0x83, 0x1e, 0xff, 0x2d, 0xf6, 0x75, 0x21, 0x13, 0xc1, 0x8b, 0xe3, 0x9f, 0x7f, 0x70,
    -	0x88, 0x25, 0x8c, 0x3e, 0xe8, 0x6a, 0x9b, 0x4e, 0x6b, 0xae, 0x1d, 0x6d, 0x2e, 0xba, 0x61, 0xcd,
    -	0xdf, 0x26, 0xc1, 0x0e, 0x7b, 0x8b, 0x0f, 0xc5, 0x0f, 0x3a, 0x05, 0x58, 0xb8, 0x32, 0x57, 0xa1,
    -	0x98, 0x38, 0x5d, 0x07, 0xcd, 0xc1, 0x84, 0x2c, 0xac, 0x92, 0x90, 0x5d, 0x01, 0x23, 0x8c, 0x8c,
    -	0x72, 0x96, 0x14, 0xc5, 0x8a, 0x48, 0x12, 0xdf, 0x64, 0x70, 0xe1, 0x41, 0x30, 0xb8, 0x2f, 0xc3,
    -	0x98, 0xeb, 0xb9, 0x91, 0xeb, 0x44, 0x3e, 0xd7, 0x1f, 0xf1, 0x67, 0x37, 0x13, 0x30, 0x97, 0x75,
    -	0x00, 0x36, 0xf1, 0xec, 0xff, 0xb3, 0x0f, 0xa6, 0xd8, 0xb4, 0x7d, 0xb0, 0xc2, 0xbe, 0x97, 0x56,
    -	0xd8, 0x8d, 0xf4, 0x0a, 0x7b, 0x10, 0x9c, 0xfb, 0x7d, 0x2f, 0xb3, 0x2f, 0x58, 0x30, 0xc5, 0x64,
    -	0xdc, 0xc6, 0x32, 0xbb, 0x00, 0xc3, 0x81, 0xe1, 0xc7, 0x3a, 0xac, 0x2b, 0xb5, 0xa4, 0x4b, 0x6a,
    -	0x8c, 0x83, 0xde, 0x00, 0x68, 0xc5, 0x32, 0xf4, 0x82, 0x11, 0x7c, 0x14, 0x72, 0xc5, 0xe7, 0x5a,
    -	0x1d, 0xfb, 0xb3, 0x30, 0xac, 0x1c, 0x55, 0xa5, 0xa7, 0xba, 0x95, 0xe3, 0xa9, 0xde, 0x9d, 0x8d,
    -	0x90, 0xb6, 0x71, 0xc5, 0x4c, 0xdb, 0xb8, 0xff, 0xcb, 0x82, 0x58, 0xc3, 0x81, 0xde, 0x82, 0xe1,
    -	0x96, 0xcf, 0x4c, 0xa9, 0x03, 0xe9, 0x9f, 0xf0, 0x78, 0x47, 0x15, 0x09, 0x8f, 0x30, 0x18, 0xf0,
    -	0xe9, 0xa8, 0xc8, 0xaa, 0x38, 0xa6, 0x82, 0xae, 0xc2, 0x60, 0x2b, 0x20, 0xd5, 0x88, 0x85, 0xbf,
    -	0xea, 0x9d, 0x20, 0x5f, 0xbe, 0xbc, 0x22, 0x96, 0x14, 0x12, 0x96, 0xa9, 0xc5, 0xde, 0x2d, 0x53,
    -	0xed, 0xdf, 0x2a, 0xc0, 0x64, 0xb2, 0x11, 0xf4, 0x1a, 0xf4, 0x91, 0xbb, 0xa4, 0x26, 0xbe, 0x34,
    -	0x93, 0x9b, 0x88, 0xa5, 0x2b, 0x7c, 0xe8, 0xe8, 0x7f, 0xcc, 0x6a, 0xa1, 0x2b, 0x30, 0x48, 0x59,
    -	0x89, 0xcb, 0x2a, 0x48, 0xe4, 0xa3, 0x79, 0xec, 0x88, 0xe2, 0xc9, 0xf8, 0x67, 0x89, 0x22, 0x2c,
    -	0xab, 0x33, 0x53, 0xb6, 0x5a, 0xab, 0x4a, 0x5f, 0x69, 0x51, 0x27, 0x61, 0xc2, 0xda, 0x42, 0x85,
    -	0x23, 0x09, 0x6a, 0xdc, 0x94, 0x4d, 0x16, 0xe2, 0x98, 0x08, 0x7a, 0x03, 0xfa, 0xc3, 0x06, 0x21,
    -	0x2d, 0x61, 0xab, 0x90, 0x29, 0x1f, 0xad, 0x52, 0x04, 0x41, 0x89, 0xc9, 0x53, 0x58, 0x01, 0xe6,
    -	0x15, 0xed, 0xdf, 0xb5, 0x00, 0xb8, 0xed, 0x9f, 0xe3, 0x6d, 0x90, 0x43, 0x50, 0x29, 0x2c, 0x42,
    -	0x5f, 0xd8, 0x22, 0xb5, 0x4e, 0x1e, 0x06, 0x71, 0x7f, 0xaa, 0x2d, 0x52, 0x8b, 0x57, 0x3b, 0xfd,
    -	0x87, 0x59, 0x6d, 0xfb, 0x47, 0x01, 0xc6, 0x63, 0xb4, 0x72, 0x44, 0x9a, 0xe8, 0x39, 0x23, 0xb2,
    -	0xce, 0xc9, 0x44, 0x64, 0x9d, 0x61, 0x86, 0xad, 0x49, 0xaf, 0x3f, 0x0b, 0xc5, 0xa6, 0x73, 0x57,
    -	0x88, 0x27, 0x9f, 0xe9, 0xdc, 0x0d, 0x4a, 0x7f, 0x76, 0xc5, 0xb9, 0xcb, 0x5f, 0xf0, 0xcf, 0xc8,
    -	0xdd, 0xb9, 0xe2, 0xdc, 0xed, 0x6a, 0x05, 0x4f, 0x1b, 0x61, 0x6d, 0xb9, 0x9e, 0x30, 0x6b, 0xeb,
    -	0xa9, 0x2d, 0xd7, 0x4b, 0xb6, 0xe5, 0x7a, 0x3d, 0xb4, 0xe5, 0x7a, 0xe8, 0x1e, 0x0c, 0x0a, 0xab,
    -	0x53, 0x11, 0xf2, 0xef, 0x42, 0x0f, 0xed, 0x09, 0xa3, 0x55, 0xde, 0xe6, 0x05, 0x29, 0xa1, 0x10,
    -	0xa5, 0x5d, 0xdb, 0x95, 0x0d, 0xa2, 0xff, 0xd4, 0x82, 0x71, 0xf1, 0x1b, 0x93, 0x77, 0xdb, 0x24,
    -	0x8c, 0x04, 0x07, 0xff, 0x91, 0xde, 0xfb, 0x20, 0x2a, 0xf2, 0xae, 0x7c, 0x44, 0x5e, 0xb6, 0x26,
    -	0xb0, 0x6b, 0x8f, 0x12, 0xbd, 0x40, 0xbf, 0x65, 0xc1, 0xd1, 0xa6, 0x73, 0x97, 0xb7, 0xc8, 0xcb,
    -	0xb0, 0x13, 0xb9, 0xbe, 0xb0, 0xde, 0x78, 0xad, 0xb7, 0xe9, 0x4f, 0x55, 0xe7, 0x9d, 0x94, 0xaa,
    -	0xda, 0xa3, 0x59, 0x28, 0x5d, 0xbb, 0x9a, 0xd9, 0xaf, 0x99, 0x75, 0x18, 0x92, 0xeb, 0xed, 0x61,
    -	0x9a, 0xd4, 0xb3, 0x76, 0xc4, 0x5a, 0x7b, 0xa8, 0xed, 0x7c, 0x16, 0x46, 0xf5, 0x35, 0xf6, 0x50,
    -	0xdb, 0x7a, 0x17, 0x8e, 0x64, 0xac, 0xa5, 0x87, 0xda, 0xe4, 0x1d, 0x38, 0x99, 0xbb, 0x3e, 0x1e,
    -	0xaa, 0x4b, 0xc4, 0xef, 0x58, 0xfa, 0x39, 0x78, 0x08, 0x7a, 0x9d, 0x05, 0x53, 0xaf, 0x73, 0xa6,
    -	0xf3, 0xce, 0xc9, 0x51, 0xee, 0xbc, 0xa3, 0x77, 0x9a, 0x9e, 0xea, 0xe8, 0x4d, 0x18, 0x68, 0xd0,
    -	0x12, 0x69, 0xbb, 0x6c, 0x77, 0xdf, 0x91, 0x31, 0x47, 0xcd, 0xca, 0x43, 0x2c, 0x28, 0xd8, 0x5f,
    -	0xb1, 0x20, 0xc3, 0xa9, 0x83, 0x72, 0x58, 0x6d, 0xb7, 0xce, 0x86, 0xa4, 0x18, 0x73, 0x58, 0x2a,
    -	0xf0, 0xcc, 0x69, 0x28, 0x6e, 0xb8, 0x75, 0xe1, 0xcd, 0xac, 0xc0, 0x97, 0x29, 0x78, 0xc3, 0xad,
    -	0xa3, 0x65, 0x40, 0x61, 0xbb, 0xd5, 0x6a, 0x30, 0x83, 0x27, 0xa7, 0x71, 0x39, 0xf0, 0xdb, 0x2d,
    -	0x6e, 0xa8, 0x5c, 0xe4, 0xe2, 0xa5, 0x6a, 0x0a, 0x8a, 0x33, 0x6a, 0xd8, 0x7f, 0x60, 0x41, 0xdf,
    -	0x21, 0x4c, 0x13, 0x36, 0xa7, 0xe9, 0xb9, 0x5c, 0xd2, 0x22, 0x53, 0xc4, 0x2c, 0x76, 0xee, 0x2c,
    -	0xdd, 0x8d, 0x88, 0x17, 0x32, 0x86, 0x23, 0x73, 0xd6, 0x76, 0x2d, 0x38, 0x72, 0xcd, 0x77, 0xea,
    -	0xf3, 0x4e, 0xc3, 0xf1, 0x6a, 0x24, 0x28, 0x7b, 0x1b, 0x07, 0xf2, 0x0a, 0x28, 0x74, 0xf5, 0x0a,
    -	0xb8, 0x04, 0x03, 0x6e, 0x4b, 0x0b, 0x35, 0x7f, 0x96, 0xce, 0x6e, 0xb9, 0x22, 0xa2, 0xcc, 0x23,
    -	0xa3, 0x71, 0x56, 0x8a, 0x05, 0x3e, 0x5d, 0x96, 0xdc, 0x1c, 0xaf, 0x2f, 0x7f, 0x59, 0xd2, 0x57,
    -	0x52, 0x32, 0x84, 0x9a, 0x61, 0x38, 0xbe, 0x09, 0x46, 0x13, 0xc2, 0x4d, 0x0a, 0xc3, 0xa0, 0xcb,
    -	0xbf, 0x54, 0xac, 0xcd, 0x27, 0xb3, 0x5f, 0x2f, 0xa9, 0x81, 0xd1, 0xfc, 0x01, 0x79, 0x01, 0x96,
    -	0x84, 0xec, 0x4b, 0x90, 0x19, 0xf2, 0xa6, 0xbb, 0x64, 0xca, 0xfe, 0x04, 0x4c, 0xb1, 0x9a, 0x07,
    -	0x94, 0xfa, 0xd8, 0x09, 0x79, 0x7a, 0x46, 0xd4, 0x60, 0xfb, 0x7f, 0xb5, 0x00, 0xad, 0xf8, 0x75,
    -	0x77, 0x7d, 0x47, 0x10, 0xe7, 0xdf, 0xff, 0x2e, 0x94, 0xf8, 0xb3, 0x3a, 0x19, 0x59, 0x77, 0xa1,
    -	0xe1, 0x84, 0xa1, 0x26, 0xcb, 0x7f, 0x52, 0xb4, 0x5b, 0x5a, 0xeb, 0x8c, 0x8e, 0xbb, 0xd1, 0x43,
    -	0x6f, 0x25, 0x02, 0x1d, 0x7e, 0x34, 0x15, 0xe8, 0xf0, 0xc9, 0x4c, 0x8b, 0x9a, 0x74, 0xef, 0x65,
    -	0x00, 0x44, 0xfb, 0x8b, 0x16, 0x4c, 0xac, 0x26, 0x22, 0xc5, 0x9e, 0x63, 0xe6, 0x05, 0x19, 0x3a,
    -	0xaa, 0x2a, 0x2b, 0xc5, 0x02, 0xfa, 0xc0, 0x65, 0xb8, 0xdf, 0xb6, 0x20, 0x0e, 0xb1, 0x75, 0x08,
    -	0x2c, 0xf7, 0x82, 0xc1, 0x72, 0x67, 0x3e, 0x5f, 0x54, 0x77, 0xf2, 0x38, 0x6e, 0x74, 0x55, 0xcd,
    -	0x49, 0x87, 0x97, 0x4b, 0x4c, 0x86, 0xef, 0xb3, 0x71, 0x73, 0xe2, 0xd4, 0x6c, 0x7c, 0xa3, 0x00,
    -	0x48, 0xe1, 0xf6, 0x1c, 0x1c, 0x33, 0x5d, 0xe3, 0xc1, 0x04, 0xc7, 0xdc, 0x06, 0xc4, 0x0c, 0x64,
    -	0x02, 0xc7, 0x0b, 0x39, 0x59, 0x57, 0x48, 0xad, 0x0f, 0x66, 0x7d, 0x33, 0x23, 0xbd, 0x65, 0xaf,
    -	0xa5, 0xa8, 0xe1, 0x8c, 0x16, 0x34, 0xc3, 0xa7, 0xfe, 0x5e, 0x0d, 0x9f, 0x06, 0xba, 0xb8, 0x7d,
    -	0x7f, 0xcd, 0x82, 0x31, 0x35, 0x4c, 0xef, 0x13, 0xe7, 0x11, 0xd5, 0x9f, 0x9c, 0x7b, 0xa5, 0xa2,
    -	0x75, 0x99, 0x31, 0x03, 0xdf, 0xc7, 0xdc, 0xf7, 0x9d, 0x86, 0x7b, 0x8f, 0xa8, 0x18, 0xce, 0x25,
    -	0xe1, 0x8e, 0x2f, 0x4a, 0xf7, 0x77, 0x4b, 0x63, 0xea, 0x1f, 0x8f, 0x1a, 0x1b, 0x57, 0xb1, 0x7f,
    -	0x99, 0x6e, 0x76, 0x73, 0x29, 0xa2, 0x97, 0xa0, 0xbf, 0xb5, 0xe9, 0x84, 0x24, 0xe1, 0x64, 0xd7,
    -	0x5f, 0xa1, 0x85, 0xfb, 0xbb, 0xa5, 0x71, 0x55, 0x81, 0x95, 0x60, 0x8e, 0xdd, 0x7b, 0xc8, 0xd1,
    -	0xf4, 0xe2, 0xec, 0x1a, 0x72, 0xf4, 0x5f, 0x2c, 0xe8, 0x5b, 0xa5, 0xb7, 0xd7, 0xc3, 0x3f, 0x02,
    -	0x5e, 0x37, 0x8e, 0x80, 0x53, 0x79, 0xd9, 0x8c, 0x72, 0x77, 0xff, 0x72, 0x62, 0xf7, 0x9f, 0xc9,
    -	0xa5, 0xd0, 0x79, 0xe3, 0x37, 0x61, 0x84, 0xe5, 0x48, 0x12, 0x0e, 0x85, 0x2f, 0x18, 0x1b, 0xbe,
    -	0x94, 0xd8, 0xf0, 0x13, 0x1a, 0xaa, 0xb6, 0xd3, 0x9f, 0x82, 0x41, 0xe1, 0xa1, 0x96, 0x8c, 0x82,
    -	0x20, 0x70, 0xb1, 0x84, 0xdb, 0xbf, 0x50, 0x04, 0x23, 0x27, 0x13, 0xfa, 0x23, 0x0b, 0x66, 0x03,
    -	0x6e, 0xb9, 0x5e, 0x5f, 0x6c, 0x07, 0xae, 0xb7, 0x51, 0xad, 0x6d, 0x92, 0x7a, 0xbb, 0xe1, 0x7a,
    -	0x1b, 0xe5, 0x0d, 0xcf, 0x57, 0xc5, 0x4b, 0x77, 0x49, 0xad, 0xcd, 0xb4, 0xca, 0x5d, 0x12, 0x40,
    -	0x29, 0x0f, 0x90, 0xe7, 0xf7, 0x76, 0x4b, 0xb3, 0xf8, 0x40, 0xb4, 0xf1, 0x01, 0xfb, 0x82, 0xfe,
    -	0xd2, 0x82, 0x0b, 0x3c, 0x37, 0x50, 0xef, 0xfd, 0xef, 0x20, 0xe1, 0xa8, 0x48, 0x52, 0x31, 0x91,
    -	0x35, 0x12, 0x34, 0xe7, 0x5f, 0x16, 0x03, 0x7a, 0xa1, 0x72, 0xb0, 0xb6, 0xf0, 0x41, 0x3b, 0x67,
    -	0xff, 0xb7, 0x45, 0x18, 0x13, 0xa1, 0x29, 0xc5, 0x1d, 0xf0, 0x92, 0xb1, 0x24, 0x1e, 0x4d, 0x2c,
    -	0x89, 0x29, 0x03, 0xf9, 0xc1, 0x1c, 0xff, 0x21, 0x4c, 0xd1, 0xc3, 0xf9, 0x0a, 0x71, 0x82, 0xe8,
    -	0x36, 0x71, 0xb8, 0x3d, 0x63, 0xf1, 0xc0, 0xa7, 0xbf, 0x12, 0xac, 0x5f, 0x4b, 0x12, 0xc3, 0x69,
    -	0xfa, 0xdf, 0x4b, 0x77, 0x8e, 0x07, 0x93, 0xa9, 0xe8, 0xa2, 0x6f, 0xc3, 0xb0, 0x72, 0xaf, 0x12,
    -	0x87, 0x4e, 0xe7, 0x20, 0xbd, 0x49, 0x0a, 0x5c, 0xe8, 0x19, 0xbb, 0xf6, 0xc5, 0xe4, 0xec, 0xdf,
    -	0x2e, 0x18, 0x0d, 0xf2, 0x49, 0x5c, 0x85, 0x21, 0x27, 0x64, 0x81, 0xc3, 0xeb, 0x9d, 0x24, 0xda,
    -	0xa9, 0x66, 0x98, 0x8b, 0xdb, 0x9c, 0xa8, 0x89, 0x15, 0x0d, 0x74, 0x85, 0x5b, 0x8d, 0x6e, 0x93,
    -	0x4e, 0xe2, 0xec, 0x14, 0x35, 0x90, 0x76, 0xa5, 0xdb, 0x04, 0x8b, 0xfa, 0xe8, 0x53, 0xdc, 0xac,
    -	0xf7, 0xaa, 0xe7, 0xdf, 0xf1, 0x2e, 0xfb, 0xbe, 0x0c, 0x43, 0xd4, 0x1b, 0xc1, 0x29, 0x69, 0xcc,
    -	0xab, 0xaa, 0x63, 0x93, 0x5a, 0x6f, 0xe1, 0xba, 0x3f, 0x07, 0x2c, 0x17, 0x8a, 0x19, 0xcd, 0x20,
    -	0x44, 0x04, 0x26, 0x44, 0xdc, 0x53, 0x59, 0x26, 0xc6, 0x2e, 0xf3, 0xf9, 0x6d, 0xd6, 0x8e, 0x35,
    -	0x40, 0x57, 0x4d, 0x12, 0x38, 0x49, 0xd3, 0xde, 0xe4, 0x87, 0xf0, 0x32, 0x71, 0xa2, 0x76, 0x40,
    -	0x42, 0xf4, 0x71, 0x98, 0x4e, 0xbf, 0x8c, 0x85, 0x22, 0xc5, 0x62, 0xdc, 0xf3, 0xa9, 0xbd, 0xdd,
    -	0xd2, 0x74, 0x35, 0x07, 0x07, 0xe7, 0xd6, 0xb6, 0x7f, 0xcd, 0x02, 0xe6, 0x43, 0x7e, 0x08, 0x9c,
    -	0xcf, 0xc7, 0x4c, 0xce, 0x67, 0x3a, 0x6f, 0x3a, 0x73, 0x98, 0x9e, 0x17, 0xf9, 0x1a, 0xae, 0x04,
    -	0xfe, 0xdd, 0x1d, 0x61, 0xf5, 0xd5, 0xfd, 0x19, 0x67, 0x7f, 0xd9, 0x02, 0x96, 0x38, 0x08, 0xf3,
    -	0x57, 0xbb, 0x54, 0x70, 0x74, 0x37, 0x68, 0xf8, 0x38, 0x0c, 0xad, 0x8b, 0xe1, 0xcf, 0x10, 0x3a,
    -	0x19, 0x1d, 0x36, 0x69, 0xcb, 0x49, 0x13, 0xbe, 0xa0, 0xe2, 0x1f, 0x56, 0xd4, 0xec, 0xff, 0xd2,
    -	0x82, 0x99, 0xfc, 0x6a, 0xe8, 0x06, 0x9c, 0x08, 0x48, 0xad, 0x1d, 0x84, 0x74, 0x4b, 0x88, 0x07,
    -	0x90, 0x70, 0xa7, 0xe2, 0x53, 0xfd, 0xc8, 0xde, 0x6e, 0xe9, 0x04, 0xce, 0x46, 0xc1, 0x79, 0x75,
    -	0xd1, 0x2b, 0x30, 0xde, 0x0e, 0x39, 0xe7, 0xc7, 0x98, 0xae, 0x50, 0x44, 0xa7, 0x66, 0x1e, 0x47,
    -	0x37, 0x0c, 0x08, 0x4e, 0x60, 0xda, 0x3f, 0xc0, 0x97, 0xa3, 0x0a, 0x50, 0xdd, 0x84, 0x29, 0x4f,
    -	0xfb, 0x4f, 0x6f, 0x40, 0xf9, 0xd4, 0x7f, 0xbc, 0xdb, 0xad, 0xcf, 0xae, 0x4b, 0xcd, 0xcb, 0x3d,
    -	0x41, 0x06, 0xa7, 0x29, 0xdb, 0xbf, 0x68, 0xc1, 0x09, 0x1d, 0x51, 0x73, 0xa4, 0xeb, 0xa6, 0x05,
    -	0x5c, 0x84, 0x21, 0xbf, 0x45, 0x02, 0x27, 0xf2, 0x03, 0x71, 0xcd, 0x9d, 0x97, 0x2b, 0xf4, 0xba,
    -	0x28, 0xdf, 0x17, 0x09, 0x73, 0x24, 0x75, 0x59, 0x8e, 0x55, 0x4d, 0x64, 0xc3, 0x00, 0x13, 0x20,
    -	0x86, 0xc2, 0x65, 0x92, 0x1d, 0x5a, 0xcc, 0xb2, 0x25, 0xc4, 0x02, 0x62, 0xff, 0xa3, 0xc5, 0xd7,
    -	0xa7, 0xde, 0x75, 0xf4, 0x2e, 0x4c, 0x36, 0x9d, 0xa8, 0xb6, 0xb9, 0x74, 0xb7, 0x15, 0x70, 0xe5,
    -	0xae, 0x1c, 0xa7, 0x67, 0xba, 0x8d, 0x93, 0xf6, 0x91, 0xb1, 0x69, 0xf5, 0x4a, 0x82, 0x18, 0x4e,
    -	0x91, 0x47, 0xb7, 0x61, 0x84, 0x95, 0x31, 0x6f, 0xe0, 0xb0, 0x13, 0x2f, 0x93, 0xd7, 0x9a, 0x32,
    -	0x0e, 0x5a, 0x89, 0xe9, 0x60, 0x9d, 0xa8, 0xfd, 0xd5, 0x22, 0x3f, 0x34, 0xd8, 0xdb, 0xe3, 0x29,
    -	0x18, 0x6c, 0xf9, 0xf5, 0x85, 0xf2, 0x22, 0x16, 0xb3, 0xa0, 0xee, 0xbd, 0x0a, 0x2f, 0xc6, 0x12,
    -	0x8e, 0xce, 0xc3, 0x90, 0xf8, 0x29, 0x95, 0xf1, 0x6c, 0x8f, 0x08, 0xbc, 0x10, 0x2b, 0x28, 0x7a,
    -	0x1e, 0xa0, 0x15, 0xf8, 0xdb, 0x6e, 0x9d, 0x45, 0x7f, 0x2a, 0x9a, 0x76, 0x7d, 0x15, 0x05, 0xc1,
    -	0x1a, 0x16, 0x7a, 0x15, 0xc6, 0xda, 0x5e, 0xc8, 0xf9, 0x27, 0x2d, 0xc6, 0xbe, 0xb2, 0x38, 0xbb,
    -	0xa1, 0x03, 0xb1, 0x89, 0x8b, 0xe6, 0x60, 0x20, 0x72, 0x98, 0x9d, 0x5a, 0x7f, 0xbe, 0xf9, 0xfd,
    -	0x1a, 0xc5, 0xd0, 0xb3, 0xd9, 0xd1, 0x0a, 0x58, 0x54, 0x44, 0x6f, 0x4b, 0xc7, 0x7c, 0x7e, 0x13,
    -	0x09, 0xbf, 0x97, 0xde, 0x6e, 0x2d, 0xcd, 0x2d, 0x5f, 0xf8, 0xd3, 0x18, 0xb4, 0xd0, 0x2b, 0x00,
    -	0xe4, 0x6e, 0x44, 0x02, 0xcf, 0x69, 0x28, 0xeb, 0x52, 0xc5, 0xc8, 0x2c, 0xfa, 0xab, 0x7e, 0x74,
    -	0x23, 0x24, 0x4b, 0x0a, 0x03, 0x6b, 0xd8, 0xf6, 0x8f, 0x8e, 0x00, 0xc4, 0x0f, 0x0d, 0x74, 0x0f,
    -	0x86, 0x6a, 0x4e, 0xcb, 0xa9, 0xf1, 0x54, 0xad, 0xc5, 0x3c, 0x7f, 0xe9, 0xb8, 0xc6, 0xec, 0x82,
    -	0x40, 0xe7, 0xca, 0x1b, 0x19, 0xa6, 0x7c, 0x48, 0x16, 0x77, 0x55, 0xd8, 0xa8, 0xf6, 0xd0, 0x17,
    -	0x2c, 0x18, 0x11, 0xd1, 0x95, 0xd8, 0x0c, 0x15, 0xf2, 0xf5, 0x6d, 0x5a, 0xfb, 0x73, 0x71, 0x0d,
    -	0xde, 0x85, 0x17, 0xe4, 0x0a, 0xd5, 0x20, 0x5d, 0x7b, 0xa1, 0x37, 0x8c, 0x3e, 0x2c, 0xdf, 0xb6,
    -	0x45, 0x63, 0x28, 0xd5, 0xdb, 0x76, 0x98, 0x5d, 0x35, 0xfa, 0xb3, 0xf6, 0x86, 0xf1, 0xac, 0xed,
    -	0xcb, 0xf7, 0x3c, 0x36, 0xf8, 0xed, 0x6e, 0x2f, 0x5a, 0x54, 0xd1, 0xa3, 0x90, 0xf4, 0xe7, 0xbb,
    -	0xcb, 0x6a, 0x0f, 0xbb, 0x2e, 0x11, 0x48, 0x3e, 0x0b, 0x13, 0x75, 0x93, 0x6b, 0x11, 0x2b, 0xf1,
    -	0xc9, 0x3c, 0xba, 0x09, 0x26, 0x27, 0xe6, 0x53, 0x12, 0x00, 0x9c, 0x24, 0x8c, 0x2a, 0x3c, 0x28,
    -	0x4d, 0xd9, 0x5b, 0xf7, 0x85, 0xef, 0x95, 0x9d, 0x3b, 0x97, 0x3b, 0x61, 0x44, 0x9a, 0x14, 0x33,
    -	0x66, 0x12, 0x56, 0x45, 0x5d, 0xac, 0xa8, 0xa0, 0x37, 0x61, 0x80, 0xf9, 0x4b, 0x86, 0xd3, 0x43,
    -	0xf9, 0x6a, 0x0d, 0x33, 0xfa, 0x6a, 0xbc, 0x21, 0xd9, 0xdf, 0x10, 0x0b, 0x0a, 0xe8, 0x8a, 0xf4,
    -	0x46, 0x0e, 0xcb, 0xde, 0x8d, 0x90, 0x30, 0x6f, 0xe4, 0xe1, 0xf9, 0xc7, 0x63, 0x47, 0x63, 0x5e,
    -	0x9e, 0x99, 0xf3, 0xd6, 0xa8, 0x49, 0xd9, 0x3e, 0xf1, 0x5f, 0xa6, 0xd2, 0x15, 0xb1, 0xe2, 0x32,
    -	0xbb, 0x67, 0xa6, 0xdb, 0x8d, 0x87, 0xf3, 0xa6, 0x49, 0x02, 0x27, 0x69, 0x52, 0x16, 0x9a, 0xef,
    -	0x7a, 0xe1, 0xbd, 0xd5, 0xed, 0xec, 0xe0, 0x92, 0x03, 0x76, 0x1b, 0xf1, 0x12, 0x2c, 0xea, 0x23,
    -	0x17, 0x26, 0x02, 0x83, 0xbd, 0x90, 0x21, 0xde, 0xce, 0xf5, 0xc6, 0xc4, 0x68, 0xc9, 0x03, 0x4c,
    -	0x32, 0x38, 0x49, 0x17, 0xbd, 0xa9, 0x31, 0x4a, 0x63, 0x9d, 0x5f, 0xfe, 0xdd, 0x58, 0xa3, 0x99,
    -	0x2d, 0x18, 0x33, 0x0e, 0x9b, 0x87, 0xaa, 0x82, 0xf4, 0x60, 0x32, 0x79, 0xb2, 0x3c, 0x54, 0xcd,
    -	0xe3, 0x2b, 0x30, 0xce, 0x36, 0xc2, 0x1d, 0xa7, 0x25, 0x8e, 0xe2, 0xf3, 0xc6, 0x51, 0x6c, 0x9d,
    -	0x2f, 0xf2, 0x81, 0x91, 0x43, 0x10, 0x1f, 0x9c, 0xf6, 0xaf, 0xf4, 0x8b, 0xca, 0x6a, 0x17, 0xa1,
    -	0x0b, 0x30, 0x2c, 0x3a, 0xa0, 0x32, 0x70, 0xa9, 0x83, 0x61, 0x45, 0x02, 0x70, 0x8c, 0xc3, 0x12,
    -	0xaf, 0xb1, 0xea, 0x9a, 0x87, 0x42, 0x9c, 0x78, 0x4d, 0x41, 0xb0, 0x86, 0x45, 0x1f, 0xbf, 0xb7,
    -	0x7d, 0x3f, 0x52, 0x77, 0xb0, 0xda, 0x6a, 0xf3, 0xac, 0x14, 0x0b, 0x28, 0xbd, 0x7b, 0xb7, 0x48,
    -	0xe0, 0x91, 0x86, 0x99, 0x82, 0x42, 0xdd, 0xbd, 0x57, 0x75, 0x20, 0x36, 0x71, 0x29, 0x07, 0xe1,
    -	0x87, 0x6c, 0xef, 0x8a, 0x27, 0x76, 0xec, 0xf1, 0x51, 0xe5, 0xb1, 0x2b, 0x24, 0x1c, 0x7d, 0x02,
    -	0x4e, 0xa8, 0x70, 0x8f, 0x62, 0x65, 0xca, 0x16, 0x07, 0x0c, 0x89, 0xd8, 0x89, 0x85, 0x6c, 0x34,
    -	0x9c, 0x57, 0x1f, 0xbd, 0x0e, 0xe3, 0xe2, 0x19, 0x26, 0x29, 0x0e, 0x9a, 0xe6, 0x8b, 0x57, 0x0d,
    -	0x28, 0x4e, 0x60, 0xcb, 0x24, 0x1a, 0xec, 0x7d, 0x22, 0x29, 0x0c, 0xa5, 0x93, 0x68, 0xe8, 0x70,
    -	0x9c, 0xaa, 0x81, 0xe6, 0x60, 0x82, 0xb3, 0x9d, 0xae, 0xb7, 0xc1, 0xe7, 0x44, 0xf8, 0x93, 0xaa,
    -	0x0d, 0x79, 0xdd, 0x04, 0xe3, 0x24, 0x3e, 0xba, 0x04, 0xa3, 0x4e, 0x50, 0xdb, 0x74, 0x23, 0x52,
    -	0xa3, 0xbb, 0x8a, 0x59, 0x10, 0x6a, 0xf6, 0x9f, 0x73, 0x1a, 0x0c, 0x1b, 0x98, 0xe8, 0x0d, 0xe8,
    -	0x0b, 0xef, 0x38, 0x2d, 0x71, 0xfa, 0xe4, 0x1f, 0xe5, 0x6a, 0x05, 0x73, 0xd3, 0x2f, 0xfa, 0x1f,
    -	0xb3, 0x9a, 0xf6, 0x3d, 0x38, 0x92, 0x11, 0x16, 0x87, 0x2e, 0x3d, 0xa7, 0xe5, 0xca, 0x51, 0x49,
    -	0xb8, 0x69, 0xcc, 0x55, 0xca, 0x72, 0x3c, 0x34, 0x2c, 0xba, 0xbe, 0x59, 0xf8, 0x1c, 0x2d, 0xdd,
    -	0xb8, 0x5a, 0xdf, 0xcb, 0x12, 0x80, 0x63, 0x1c, 0xfb, 0x5f, 0x0b, 0x30, 0x91, 0xa1, 0x1e, 0x64,
    -	0x29, 0xaf, 0x13, 0xef, 0xbc, 0x38, 0xc3, 0xb5, 0x99, 0xd5, 0xa5, 0x70, 0x80, 0xac, 0x2e, 0xc5,
    -	0x6e, 0x59, 0x5d, 0xfa, 0xde, 0x4b, 0x56, 0x17, 0x73, 0xc4, 0xfa, 0x7b, 0x1a, 0xb1, 0x8c, 0x4c,
    -	0x30, 0x03, 0x07, 0xcc, 0x04, 0x63, 0x0c, 0xfa, 0x60, 0x0f, 0x83, 0xfe, 0xd3, 0x05, 0x98, 0x4c,
    -	0x6a, 0x16, 0x0f, 0x41, 0x3a, 0xff, 0xa6, 0x21, 0x9d, 0x3f, 0xdf, 0x4b, 0x04, 0x81, 0x5c, 0x49,
    -	0x3d, 0x4e, 0x48, 0xea, 0x9f, 0xee, 0x89, 0x5a, 0x67, 0xa9, 0xfd, 0x2f, 0x15, 0xe0, 0x58, 0xa6,
    -	0xc2, 0xf5, 0x10, 0xc6, 0xe6, 0xba, 0x31, 0x36, 0xcf, 0xf5, 0x1c, 0x5d, 0x21, 0x77, 0x80, 0x6e,
    -	0x25, 0x06, 0xe8, 0x42, 0xef, 0x24, 0x3b, 0x8f, 0xd2, 0x37, 0x8b, 0x70, 0x26, 0xb3, 0x5e, 0x2c,
    -	0xdc, 0x5e, 0x36, 0x84, 0xdb, 0xcf, 0x27, 0x84, 0xdb, 0x76, 0xe7, 0xda, 0x0f, 0x46, 0xda, 0x2d,
    -	0xa2, 0x0c, 0xb0, 0x58, 0x29, 0xf7, 0x29, 0xe9, 0x36, 0xa2, 0x0c, 0x28, 0x42, 0xd8, 0xa4, 0xfb,
    -	0xbd, 0x24, 0xe1, 0xfe, 0x1f, 0x2d, 0x38, 0x99, 0x39, 0x37, 0x87, 0x20, 0x67, 0x5c, 0x35, 0xe5,
    -	0x8c, 0x4f, 0xf5, 0xbc, 0x5a, 0x73, 0x04, 0x8f, 0x5f, 0x1c, 0xc8, 0xf9, 0x16, 0x26, 0xfe, 0xb8,
    -	0x0e, 0x23, 0x4e, 0xad, 0x46, 0xc2, 0x70, 0xc5, 0xaf, 0xab, 0x04, 0x10, 0xcf, 0xb1, 0xc7, 0x69,
    -	0x5c, 0xbc, 0xbf, 0x5b, 0x9a, 0x49, 0x92, 0x88, 0xc1, 0x58, 0xa7, 0x80, 0x3e, 0x05, 0x43, 0xa1,
    -	0xcc, 0xdd, 0xd9, 0x77, 0xff, 0xb9, 0x3b, 0x19, 0x27, 0xa9, 0xc4, 0x3b, 0x8a, 0x24, 0xfa, 0x7e,
    -	0x3d, 0x6a, 0x55, 0x07, 0xc1, 0x26, 0xef, 0xe4, 0x7d, 0xc4, 0xae, 0x7a, 0x1e, 0x60, 0x5b, 0xbd,
    -	0xa3, 0x92, 0xa2, 0x1b, 0xed, 0x85, 0xa5, 0x61, 0xa1, 0x37, 0x60, 0x32, 0xe4, 0x01, 0x5b, 0x63,
    -	0x13, 0x19, 0xbe, 0x16, 0x59, 0xcc, 0xbb, 0x6a, 0x02, 0x86, 0x53, 0xd8, 0x68, 0x59, 0xb6, 0xca,
    -	0x8c, 0xa1, 0xf8, 0xf2, 0x3c, 0x17, 0xb7, 0x28, 0x0c, 0xa2, 0x8e, 0x26, 0x27, 0x81, 0x0d, 0xbf,
    -	0x56, 0x13, 0x7d, 0x0a, 0x80, 0x2e, 0x22, 0x21, 0xc2, 0x19, 0xcc, 0x3f, 0x42, 0xe9, 0xd9, 0x52,
    -	0xcf, 0xf4, 0xc0, 0x60, 0xe1, 0x01, 0x16, 0x15, 0x11, 0xac, 0x11, 0x44, 0x0e, 0x8c, 0xc5, 0xff,
    -	0xe2, 0xac, 0xf4, 0xe7, 0x73, 0x5b, 0x48, 0x12, 0x67, 0xea, 0x8d, 0x45, 0x9d, 0x04, 0x36, 0x29,
    -	0xa2, 0x4f, 0xc2, 0xc9, 0xed, 0x5c, 0xbb, 0x23, 0xce, 0x4b, 0xb2, 0x34, 0xf3, 0xf9, 0xd6, 0x46,
    -	0xf9, 0xf5, 0xed, 0xff, 0x09, 0xe0, 0x91, 0x0e, 0x27, 0x3d, 0x9a, 0x33, 0x6d, 0x06, 0x9e, 0x49,
    -	0xca, 0x55, 0x66, 0x32, 0x2b, 0x1b, 0x82, 0x96, 0xc4, 0x86, 0x2a, 0xbc, 0xe7, 0x0d, 0xf5, 0x13,
    -	0x96, 0xf6, 0xcc, 0xe2, 0x16, 0xe5, 0x1f, 0x3b, 0xe0, 0x0d, 0xf6, 0x00, 0x45, 0x60, 0xeb, 0x19,
    -	0x72, 0xa4, 0xe7, 0x7b, 0xee, 0x4e, 0xef, 0x82, 0xa5, 0xdf, 0xc9, 0x0e, 0x71, 0xcf, 0x45, 0x4c,
    -	0x97, 0x0f, 0xfa, 0xfd, 0x87, 0x15, 0xee, 0xfe, 0x1b, 0x16, 0x9c, 0x4c, 0x15, 0xf3, 0x3e, 0x90,
    -	0x50, 0x44, 0xe9, 0x5b, 0x7d, 0xcf, 0x9d, 0x97, 0x04, 0xf9, 0x37, 0x5c, 0x11, 0xdf, 0x70, 0x32,
    -	0x17, 0x2f, 0xd9, 0xf5, 0x2f, 0xfd, 0x7d, 0xe9, 0x08, 0x6b, 0xc0, 0x44, 0xc4, 0xf9, 0x5d, 0x47,
    -	0x2d, 0x38, 0x5b, 0x6b, 0x07, 0x41, 0xbc, 0x58, 0x33, 0x36, 0x27, 0x7f, 0x2d, 0x3e, 0xbe, 0xb7,
    -	0x5b, 0x3a, 0xbb, 0xd0, 0x05, 0x17, 0x77, 0xa5, 0x86, 0x3c, 0x40, 0xcd, 0x94, 0x75, 0x1f, 0x3b,
    -	0x00, 0x72, 0xa4, 0x40, 0x69, 0x5b, 0x40, 0x6e, 0xa7, 0x9b, 0x61, 0x23, 0x98, 0x41, 0xf9, 0x70,
    -	0x65, 0x37, 0xdf, 0x99, 0x78, 0xfa, 0x33, 0xd7, 0xe0, 0x4c, 0xe7, 0xc5, 0x74, 0xa0, 0x10, 0x14,
    -	0x7f, 0x63, 0xc1, 0xe9, 0x8e, 0x71, 0xce, 0xbe, 0x0b, 0x1f, 0x0b, 0xf6, 0xe7, 0x2d, 0x78, 0x34,
    -	0xb3, 0x46, 0xd2, 0x79, 0xb0, 0x46, 0x0b, 0x35, 0x63, 0xd8, 0x38, 0xe2, 0x8f, 0x04, 0xe0, 0x18,
    -	0xc7, 0xb0, 0x17, 0x2d, 0x74, 0xb5, 0x17, 0xfd, 0x53, 0x0b, 0x52, 0x57, 0xfd, 0x21, 0x70, 0x9e,
    -	0x65, 0x93, 0xf3, 0x7c, 0xbc, 0x97, 0xd1, 0xcc, 0x61, 0x3a, 0xff, 0x79, 0x02, 0x8e, 0xe7, 0x78,
    -	0x90, 0x6f, 0xc3, 0xd4, 0x46, 0x8d, 0x98, 0x21, 0x43, 0x3a, 0x85, 0xd2, 0xeb, 0x18, 0x5f, 0x64,
    -	0xfe, 0xd8, 0xde, 0x6e, 0x69, 0x2a, 0x85, 0x82, 0xd3, 0x4d, 0xa0, 0xcf, 0x5b, 0x70, 0xd4, 0xb9,
    -	0x13, 0x2e, 0xd1, 0x17, 0x84, 0x5b, 0x9b, 0x6f, 0xf8, 0xb5, 0x2d, 0xca, 0x98, 0xc9, 0x6d, 0xf5,
    -	0x62, 0xa6, 0x28, 0xfc, 0x56, 0x35, 0x85, 0x6f, 0x34, 0x3f, 0xbd, 0xb7, 0x5b, 0x3a, 0x9a, 0x85,
    -	0x85, 0x33, 0xdb, 0x42, 0x58, 0xe4, 0x38, 0x73, 0xa2, 0xcd, 0x4e, 0x41, 0x6d, 0xb2, 0x5c, 0xfd,
    -	0x39, 0x4b, 0x2c, 0x21, 0x58, 0xd1, 0x41, 0x9f, 0x81, 0xe1, 0x0d, 0x19, 0xbf, 0x22, 0x83, 0xe5,
    -	0x8e, 0x07, 0xb2, 0x73, 0x54, 0x0f, 0x6e, 0x80, 0xa3, 0x90, 0x70, 0x4c, 0x14, 0xbd, 0x0e, 0x45,
    -	0x6f, 0x3d, 0x14, 0xa1, 0xf5, 0xb2, 0xed, 0x80, 0x4d, 0x4b, 0x6b, 0x1e, 0x3a, 0x6a, 0x75, 0xb9,
    -	0x8a, 0x69, 0x45, 0x74, 0x05, 0x8a, 0xc1, 0xed, 0xba, 0xd0, 0xe3, 0x64, 0x6e, 0x52, 0x3c, 0xbf,
    -	0x98, 0xd3, 0x2b, 0x46, 0x09, 0xcf, 0x2f, 0x62, 0x4a, 0x02, 0x55, 0xa0, 0x9f, 0xb9, 0x5d, 0x0b,
    -	0xd6, 0x36, 0xf3, 0x29, 0xdf, 0x21, 0x7c, 0x01, 0xf7, 0x87, 0x64, 0x08, 0x98, 0x13, 0x42, 0x6b,
    -	0x30, 0x50, 0x73, 0xbd, 0x3a, 0x09, 0x04, 0x2f, 0xfb, 0xe1, 0x4c, 0x8d, 0x0d, 0xc3, 0xc8, 0xa1,
    -	0xc9, 0x15, 0x18, 0x0c, 0x03, 0x0b, 0x5a, 0x8c, 0x2a, 0x69, 0x6d, 0xae, 0xcb, 0x1b, 0x2b, 0x9b,
    -	0x2a, 0x69, 0x6d, 0x2e, 0x57, 0x3b, 0x52, 0x65, 0x18, 0x58, 0xd0, 0x42, 0xaf, 0x40, 0x61, 0xbd,
    -	0x26, 0x5c, 0xaa, 0x33, 0xc5, 0x9b, 0x66, 0xf4, 0xaf, 0xf9, 0x81, 0xbd, 0xdd, 0x52, 0x61, 0x79,
    -	0x01, 0x17, 0xd6, 0x6b, 0x68, 0x15, 0x06, 0xd7, 0x79, 0xbc, 0x20, 0x21, 0x1f, 0x7d, 0x32, 0x3b,
    -	0x94, 0x51, 0x2a, 0xa4, 0x10, 0xf7, 0x6d, 0x15, 0x00, 0x2c, 0x89, 0xb0, 0x94, 0x5b, 0x2a, 0xee,
    -	0x91, 0x08, 0xbb, 0x3a, 0x7b, 0xb0, 0x58, 0x55, 0xfc, 0xa9, 0x11, 0x47, 0x4f, 0xc2, 0x1a, 0x45,
    -	0xba, 0xaa, 0x9d, 0x7b, 0xed, 0x80, 0xe5, 0xe4, 0x10, 0x8a, 0x99, 0xcc, 0x55, 0x3d, 0x27, 0x91,
    -	0x3a, 0xad, 0x6a, 0x85, 0x84, 0x63, 0xa2, 0x68, 0x0b, 0xc6, 0xb6, 0xc3, 0xd6, 0x26, 0x91, 0x5b,
    -	0x9a, 0x85, 0xeb, 0xcb, 0xe1, 0x66, 0x6f, 0x0a, 0x44, 0x37, 0x88, 0xda, 0x4e, 0x23, 0x75, 0x0a,
    -	0xb1, 0x67, 0xcd, 0x4d, 0x9d, 0x18, 0x36, 0x69, 0xd3, 0xe1, 0x7f, 0xb7, 0xed, 0xdf, 0xde, 0x89,
    -	0x88, 0x88, 0x96, 0x9a, 0x39, 0xfc, 0x6f, 0x71, 0x94, 0xf4, 0xf0, 0x0b, 0x00, 0x96, 0x44, 0xd0,
    -	0x4d, 0x31, 0x3c, 0xec, 0xf4, 0x9c, 0xcc, 0x0f, 0xc5, 0x3e, 0x27, 0x91, 0x72, 0x06, 0x85, 0x9d,
    -	0x96, 0x31, 0x29, 0x76, 0x4a, 0xb6, 0x36, 0xfd, 0xc8, 0xf7, 0x12, 0x27, 0xf4, 0x54, 0xfe, 0x29,
    -	0x59, 0xc9, 0xc0, 0x4f, 0x9f, 0x92, 0x59, 0x58, 0x38, 0xb3, 0x2d, 0x54, 0x87, 0xf1, 0x96, 0x1f,
    -	0x44, 0x77, 0xfc, 0x40, 0xae, 0x2f, 0xd4, 0x41, 0x50, 0x6a, 0x60, 0x8a, 0x16, 0x99, 0x59, 0x90,
    -	0x09, 0xc1, 0x09, 0x9a, 0xe8, 0xe3, 0x30, 0x18, 0xd6, 0x9c, 0x06, 0x29, 0x5f, 0x9f, 0x3e, 0x92,
    -	0x7f, 0xfd, 0x54, 0x39, 0x4a, 0xce, 0xea, 0xe2, 0xe1, 0x9e, 0x38, 0x0a, 0x96, 0xe4, 0xd0, 0x32,
    -	0xf4, 0xb3, 0x54, 0xd6, 0x2c, 0xb4, 0x6f, 0x4e, 0x44, 0xf9, 0x94, 0x53, 0x0f, 0x3f, 0x9b, 0x58,
    -	0x31, 0xe6, 0xd5, 0xe9, 0x1e, 0x10, 0x92, 0x02, 0x3f, 0x9c, 0x3e, 0x96, 0xbf, 0x07, 0x84, 0x80,
    -	0xe1, 0x7a, 0xb5, 0xd3, 0x1e, 0x50, 0x48, 0x38, 0x26, 0x4a, 0x4f, 0x66, 0x7a, 0x9a, 0x1e, 0xef,
    -	0x60, 0xb0, 0x99, 0x7b, 0x96, 0xb2, 0x93, 0x99, 0x9e, 0xa4, 0x94, 0x84, 0xfd, 0xc7, 0x43, 0x69,
    -	0x9e, 0x85, 0x49, 0x98, 0xfe, 0x63, 0x2b, 0x65, 0xb1, 0xf1, 0x91, 0x5e, 0x05, 0xde, 0x0f, 0xf0,
    -	0xe1, 0xfa, 0x79, 0x0b, 0x8e, 0xb7, 0x32, 0x3f, 0x44, 0x30, 0x00, 0xbd, 0xc9, 0xcd, 0xf9, 0xa7,
    -	0xab, 0x30, 0xd0, 0xd9, 0x70, 0x9c, 0xd3, 0x52, 0x52, 0x38, 0x50, 0x7c, 0xcf, 0xc2, 0x81, 0x15,
    -	0x18, 0xaa, 0xf1, 0x97, 0x9c, 0x4c, 0x5f, 0xd0, 0x53, 0x10, 0x53, 0xae, 0xa7, 0x15, 0x15, 0xb1,
    -	0x22, 0x81, 0x7e, 0xd2, 0x82, 0xd3, 0xc9, 0xae, 0x63, 0xc2, 0xc0, 0xc2, 0x5c, 0x93, 0x8b, 0xb5,
    -	0x96, 0xc5, 0xf7, 0xa7, 0xf8, 0x7f, 0x03, 0x79, 0xbf, 0x1b, 0x02, 0xee, 0xdc, 0x18, 0x5a, 0xcc,
    -	0x90, 0xab, 0x0d, 0x98, 0x3a, 0xc9, 0x1e, 0x64, 0x6b, 0x2f, 0xc2, 0x68, 0xd3, 0x6f, 0x7b, 0x91,
    -	0xb0, 0xba, 0x14, 0xa6, 0x5b, 0xcc, 0x64, 0x69, 0x45, 0x2b, 0xc7, 0x06, 0x56, 0x42, 0x22, 0x37,
    -	0x74, 0xdf, 0x12, 0xb9, 0x77, 0x60, 0xd4, 0xd3, 0x1c, 0x12, 0x3a, 0xbd, 0x60, 0x85, 0x74, 0x51,
    -	0xc3, 0xe6, 0xbd, 0xd4, 0x4b, 0xb0, 0x41, 0xad, 0xb3, 0xb4, 0x0c, 0xde, 0x9b, 0xb4, 0xec, 0x50,
    -	0x9f, 0xc4, 0xf6, 0x6f, 0x16, 0x32, 0x5e, 0x0c, 0x5c, 0x2a, 0xf7, 0x9a, 0x29, 0x95, 0x3b, 0x97,
    -	0x94, 0xca, 0xa5, 0x54, 0x55, 0x86, 0x40, 0xae, 0xf7, 0x1c, 0x9a, 0x3d, 0x07, 0xa6, 0xfe, 0x61,
    -	0x0b, 0x4e, 0x30, 0xdd, 0x07, 0x6d, 0xe0, 0x3d, 0xeb, 0x3b, 0x98, 0x41, 0xec, 0xb5, 0x6c, 0x72,
    -	0x38, 0xaf, 0x1d, 0xbb, 0x01, 0x67, 0xbb, 0xdd, 0xbb, 0xcc, 0xbe, 0xb8, 0xae, 0xcc, 0x2b, 0x62,
    -	0xfb, 0xe2, 0x7a, 0x79, 0x11, 0x33, 0x48, 0xaf, 0x61, 0x17, 0xed, 0xff, 0xdb, 0x82, 0x62, 0xc5,
    -	0xaf, 0x1f, 0xc2, 0x8b, 0xfe, 0x63, 0xc6, 0x8b, 0xfe, 0x91, 0xec, 0x1b, 0xbf, 0x9e, 0xab, 0xec,
    -	0x5b, 0x4a, 0x28, 0xfb, 0x4e, 0xe7, 0x11, 0xe8, 0xac, 0xda, 0xfb, 0xe5, 0x22, 0x8c, 0x54, 0xfc,
    -	0xba, 0xda, 0x67, 0xff, 0xfd, 0xfd, 0xb8, 0x11, 0xe5, 0x66, 0xcd, 0xd2, 0x28, 0x33, 0x7b, 0x62,
    -	0x19, 0xf5, 0xe2, 0xbb, 0xcc, 0x9b, 0xe8, 0x16, 0x71, 0x37, 0x36, 0x23, 0x52, 0x4f, 0x7e, 0xce,
    -	0xe1, 0x79, 0x13, 0x7d, 0xab, 0x08, 0x13, 0x89, 0xd6, 0x51, 0x03, 0xc6, 0x1a, 0xba, 0x2a, 0x49,
    -	0xac, 0xd3, 0xfb, 0xd2, 0x42, 0x09, 0x6f, 0x0c, 0xad, 0x08, 0x9b, 0xc4, 0xd1, 0x2c, 0x80, 0xa7,
    -	0xdb, 0xa4, 0xab, 0x00, 0xcb, 0x9a, 0x3d, 0xba, 0x86, 0x81, 0x5e, 0x82, 0x91, 0xc8, 0x6f, 0xf9,
    -	0x0d, 0x7f, 0x63, 0xe7, 0x2a, 0x91, 0x11, 0x39, 0x95, 0xc9, 0xf2, 0x5a, 0x0c, 0xc2, 0x3a, 0x1e,
    -	0xba, 0x0b, 0x53, 0x8a, 0x48, 0xf5, 0x01, 0xa8, 0xd7, 0x98, 0xd8, 0x64, 0x35, 0x49, 0x11, 0xa7,
    -	0x1b, 0x41, 0xaf, 0xc0, 0x38, 0xb3, 0x9d, 0x66, 0xf5, 0xaf, 0x92, 0x1d, 0x19, 0xa9, 0x99, 0x71,
    -	0xd8, 0x2b, 0x06, 0x04, 0x27, 0x30, 0xd1, 0x02, 0x4c, 0x35, 0xdd, 0x30, 0x51, 0x7d, 0x80, 0x55,
    -	0x67, 0x1d, 0x58, 0x49, 0x02, 0x71, 0x1a, 0xdf, 0xfe, 0x75, 0x31, 0xc7, 0x5e, 0xe4, 0x7e, 0xb0,
    -	0x1d, 0xdf, 0xdf, 0xdb, 0xf1, 0x9b, 0x16, 0x4c, 0xd2, 0xd6, 0x99, 0x41, 0xa8, 0x64, 0xa4, 0x54,
    -	0x2e, 0x0f, 0xab, 0x43, 0x2e, 0x8f, 0x73, 0xf4, 0xd8, 0xae, 0xfb, 0xed, 0x48, 0x48, 0x47, 0xb5,
    -	0x73, 0x99, 0x96, 0x62, 0x01, 0x15, 0x78, 0x24, 0x08, 0x84, 0xd7, 0xbd, 0x8e, 0x47, 0x82, 0x00,
    -	0x0b, 0xa8, 0x4c, 0xf5, 0xd1, 0x97, 0x9d, 0xea, 0x83, 0x47, 0x6c, 0x17, 0x76, 0x74, 0x82, 0xa5,
    -	0xd5, 0x22, 0xb6, 0x4b, 0x03, 0xbb, 0x18, 0xc7, 0xfe, 0x76, 0x11, 0x46, 0x2b, 0x7e, 0x3d, 0x36,
    -	0xec, 0x78, 0xd1, 0x30, 0xec, 0x38, 0x9b, 0x30, 0xec, 0x98, 0xd4, 0x71, 0x35, 0x33, 0x8e, 0x37,
    -	0x01, 0xf9, 0x22, 0x90, 0xfc, 0x65, 0xe2, 0x31, 0xbb, 0x37, 0x61, 0xa8, 0x57, 0x8c, 0xcd, 0x1e,
    -	0xae, 0xa7, 0x30, 0x70, 0x46, 0xad, 0x0f, 0x4c, 0x42, 0x0e, 0xd7, 0x24, 0xe4, 0x4f, 0x2c, 0xb6,
    -	0x02, 0x16, 0x57, 0xab, 0xdc, 0x56, 0x19, 0x5d, 0x84, 0x11, 0x76, 0x5a, 0xb2, 0x90, 0x11, 0xd2,
    -	0x72, 0x82, 0xa5, 0xf1, 0x5c, 0x8d, 0x8b, 0xb1, 0x8e, 0x83, 0xce, 0xc3, 0x50, 0x48, 0x9c, 0xa0,
    -	0xb6, 0xa9, 0xae, 0x0a, 0x61, 0xe6, 0xc0, 0xcb, 0xb0, 0x82, 0xa2, 0xb7, 0xe2, 0xc0, 0xe3, 0xc5,
    -	0x7c, 0xc3, 0x67, 0xbd, 0x3f, 0x7c, 0xbb, 0xe5, 0x47, 0x1b, 0xb7, 0x6f, 0x01, 0x4a, 0xe3, 0xf7,
    -	0xe0, 0x49, 0x56, 0x32, 0x43, 0xe3, 0x0e, 0xa7, 0xc2, 0xe2, 0xfe, 0x9b, 0x05, 0xe3, 0x15, 0xbf,
    -	0x4e, 0x8f, 0x81, 0xef, 0xa5, 0x3d, 0xaf, 0x67, 0x5d, 0x18, 0xe8, 0x90, 0x75, 0xe1, 0x31, 0xe8,
    -	0xaf, 0xf8, 0xf5, 0x2e, 0xe1, 0x7b, 0x7f, 0xc5, 0x82, 0xc1, 0x8a, 0x5f, 0x3f, 0x04, 0x25, 0xce,
    -	0x6b, 0xa6, 0x12, 0xe7, 0x44, 0xce, 0xba, 0xc9, 0xd1, 0xdb, 0xfc, 0x79, 0x1f, 0x8c, 0xd1, 0x7e,
    -	0xfa, 0x1b, 0x72, 0x2a, 0x8d, 0x61, 0xb3, 0x7a, 0x18, 0x36, 0xfa, 0xa4, 0xf0, 0x1b, 0x0d, 0xff,
    -	0x4e, 0x72, 0x5a, 0x97, 0x59, 0x29, 0x16, 0x50, 0xf4, 0x2c, 0x0c, 0xb5, 0x02, 0xb2, 0xed, 0xfa,
    -	0x82, 0x57, 0xd7, 0x54, 0x62, 0x15, 0x51, 0x8e, 0x15, 0x06, 0x7d, 0xc4, 0x87, 0xae, 0x47, 0xf9,
    -	0x92, 0x9a, 0xef, 0xd5, 0xb9, 0x9e, 0xa3, 0x28, 0x52, 0x83, 0x69, 0xe5, 0xd8, 0xc0, 0x42, 0xb7,
    -	0x60, 0x98, 0xfd, 0x67, 0xc7, 0x4e, 0xff, 0x81, 0x8f, 0x1d, 0x91, 0x2c, 0x59, 0x10, 0xc0, 0x31,
    -	0x2d, 0xf4, 0x3c, 0x40, 0x24, 0xd3, 0xeb, 0x84, 0x22, 0x8c, 0xab, 0x7a, 0xd7, 0xa8, 0xc4, 0x3b,
    -	0x21, 0xd6, 0xb0, 0xd0, 0x33, 0x30, 0x1c, 0x39, 0x6e, 0xe3, 0x9a, 0xeb, 0x31, 0x5b, 0x00, 0xda,
    -	0x7f, 0x91, 0xb3, 0x58, 0x14, 0xe2, 0x18, 0x4e, 0xf9, 0x4a, 0x16, 0xdd, 0x6a, 0x7e, 0x27, 0x12,
    -	0xe9, 0xf9, 0x8a, 0x9c, 0xaf, 0xbc, 0xa6, 0x4a, 0xb1, 0x86, 0x81, 0x36, 0xe1, 0x94, 0xeb, 0xb1,
    -	0x34, 0x5a, 0xa4, 0xba, 0xe5, 0xb6, 0xd6, 0xae, 0x55, 0x6f, 0x92, 0xc0, 0x5d, 0xdf, 0x99, 0x77,
    -	0x6a, 0x5b, 0xc4, 0xab, 0x33, 0xb1, 0xc3, 0xd0, 0xfc, 0xe3, 0xa2, 0x8b, 0xa7, 0xca, 0x1d, 0x70,
    -	0x71, 0x47, 0x4a, 0xc8, 0xa6, 0xdb, 0x31, 0x20, 0x4e, 0x53, 0xc8, 0x17, 0x78, 0x0a, 0x1e, 0x56,
    -	0x82, 0x05, 0xc4, 0x7e, 0x81, 0xed, 0x89, 0xeb, 0x55, 0xf4, 0xb4, 0x71, 0xbc, 0x1c, 0xd7, 0x8f,
    -	0x97, 0xfd, 0xdd, 0xd2, 0xc0, 0xf5, 0xaa, 0x16, 0xe9, 0xe8, 0x12, 0x1c, 0xab, 0xf8, 0xf5, 0x8a,
    -	0x1f, 0x44, 0xcb, 0x7e, 0x70, 0xc7, 0x09, 0xea, 0x72, 0x09, 0x96, 0x64, 0xac, 0x27, 0x7a, 0xc6,
    -	0xf6, 0xf3, 0x13, 0xc8, 0x88, 0xe3, 0xf4, 0x02, 0xe3, 0x10, 0x0f, 0xe8, 0x5a, 0x5b, 0x63, 0xbc,
    -	0x8a, 0x4a, 0x56, 0x77, 0xd9, 0x89, 0x08, 0xba, 0x0e, 0x63, 0x35, 0xfd, 0xda, 0x16, 0xd5, 0x9f,
    -	0x92, 0x97, 0x9d, 0x71, 0xa7, 0x67, 0xde, 0xf3, 0x66, 0x7d, 0xfb, 0x1b, 0x96, 0x68, 0x85, 0x4b,
    -	0x3e, 0xb8, 0x0d, 0x6d, 0xf7, 0x33, 0x77, 0x01, 0xa6, 0x02, 0xbd, 0x8a, 0x66, 0x8b, 0x76, 0x8c,
    -	0x67, 0xff, 0x49, 0x00, 0x71, 0x1a, 0x1f, 0x7d, 0x12, 0x4e, 0x1a, 0x85, 0x52, 0x2d, 0xaf, 0xe5,
    -	0xe0, 0x66, 0xb2, 0x21, 0x9c, 0x87, 0x84, 0xf3, 0xeb, 0xdb, 0x3f, 0x08, 0xc7, 0x93, 0xdf, 0x25,
    -	0xa4, 0x35, 0xf7, 0xf9, 0x75, 0x85, 0x83, 0x7d, 0x9d, 0xfd, 0x12, 0x4c, 0xd1, 0x67, 0xbc, 0x62,
    -	0x49, 0xd9, 0xfc, 0x75, 0x0f, 0xa7, 0xf5, 0xdb, 0x43, 0xec, 0x1a, 0x4c, 0x64, 0xa0, 0x43, 0x9f,
    -	0x86, 0xf1, 0x90, 0xb0, 0x18, 0x72, 0x52, 0x4a, 0xd8, 0xc1, 0x2f, 0xbe, 0xba, 0xa4, 0x63, 0xf2,
    -	0x97, 0x90, 0x59, 0x86, 0x13, 0xd4, 0x50, 0x13, 0xc6, 0xef, 0xb8, 0x5e, 0xdd, 0xbf, 0x13, 0x4a,
    -	0xfa, 0x43, 0xf9, 0x2a, 0x87, 0x5b, 0x1c, 0x33, 0xd1, 0x47, 0xa3, 0xb9, 0x5b, 0x06, 0x31, 0x9c,
    -	0x20, 0x4e, 0x8f, 0x9a, 0xa0, 0xed, 0xcd, 0x85, 0x37, 0x42, 0x12, 0x88, 0x08, 0x77, 0xec, 0xa8,
    -	0xc1, 0xb2, 0x10, 0xc7, 0x70, 0x7a, 0xd4, 0xb0, 0x3f, 0xcc, 0xb1, 0x9e, 0x9d, 0x65, 0xe2, 0xa8,
    -	0xc1, 0xaa, 0x14, 0x6b, 0x18, 0xf4, 0x28, 0x66, 0xff, 0x56, 0x7d, 0x0f, 0xfb, 0x7e, 0x24, 0x0f,
    -	0x6f, 0x96, 0xae, 0x53, 0x2b, 0xc7, 0x06, 0x56, 0x4e, 0x3c, 0xbd, 0xbe, 0x83, 0xc6, 0xd3, 0x43,
    -	0x51, 0x87, 0x58, 0x02, 0x3c, 0x22, 0xf4, 0xa5, 0x4e, 0xb1, 0x04, 0xf6, 0xef, 0x2b, 0xce, 0x00,
    -	0xe5, 0x05, 0xd6, 0xc5, 0x00, 0xf5, 0xf3, 0x80, 0x81, 0x4c, 0x29, 0x5a, 0xe5, 0xa3, 0x23, 0x61,
    -	0x68, 0x09, 0x06, 0xc3, 0x9d, 0xb0, 0x16, 0x35, 0xc2, 0x4e, 0x29, 0x59, 0xab, 0x0c, 0x45, 0xcb,
    -	0x08, 0xce, 0xab, 0x60, 0x59, 0x17, 0xd5, 0xe0, 0x88, 0xa0, 0xb8, 0xb0, 0xe9, 0x78, 0x2a, 0x51,
    -	0x24, 0xb7, 0x7e, 0xbc, 0xb8, 0xb7, 0x5b, 0x3a, 0x22, 0x5a, 0xd6, 0xc1, 0xfb, 0xbb, 0x25, 0xba,
    -	0x25, 0x33, 0x20, 0x38, 0x8b, 0x1a, 0x5f, 0xf2, 0xb5, 0x9a, 0xdf, 0x6c, 0x55, 0x02, 0x7f, 0xdd,
    -	0x6d, 0x90, 0x4e, 0x8a, 0xe5, 0xaa, 0x81, 0x29, 0x96, 0xbc, 0x51, 0x86, 0x13, 0xd4, 0xd0, 0x6d,
    -	0x98, 0x70, 0x5a, 0xad, 0xb9, 0xa0, 0xe9, 0x07, 0xb2, 0x81, 0x91, 0x7c, 0x0d, 0xc5, 0x9c, 0x89,
    -	0xca, 0xf3, 0x44, 0x26, 0x0a, 0x71, 0x92, 0x20, 0x1d, 0x28, 0xb1, 0xd1, 0x8c, 0x81, 0x1a, 0x8b,
    -	0x07, 0x4a, 0xec, 0xcb, 0x8c, 0x81, 0xca, 0x80, 0xe0, 0x2c, 0x6a, 0xf6, 0x0f, 0x30, 0xc6, 0x9f,
    -	0xc5, 0x9b, 0x66, 0x6e, 0x46, 0x4d, 0x18, 0x6b, 0xb1, 0x63, 0x5f, 0xe4, 0x70, 0x13, 0x47, 0xc5,
    -	0x8b, 0x3d, 0x0a, 0x42, 0xef, 0xb0, 0x2c, 0xb4, 0x86, 0x41, 0x6c, 0x45, 0x27, 0x87, 0x4d, 0xea,
    -	0xf6, 0x2f, 0xcd, 0x30, 0xd6, 0xb1, 0xca, 0xa5, 0x9b, 0x83, 0xc2, 0xe9, 0x52, 0xc8, 0x33, 0x66,
    -	0xf2, 0xf5, 0x08, 0xf1, 0xfa, 0x12, 0x8e, 0x9b, 0x58, 0xd6, 0x45, 0x9f, 0x82, 0x71, 0xd7, 0x73,
    -	0xe3, 0xec, 0xcd, 0xe1, 0xf4, 0xd1, 0xfc, 0x68, 0x5e, 0x0a, 0x4b, 0xcf, 0xef, 0xa8, 0x57, 0xc6,
    -	0x09, 0x62, 0xe8, 0x2d, 0x66, 0x23, 0x2a, 0x49, 0x17, 0x7a, 0x21, 0xad, 0x9b, 0x83, 0x4a, 0xb2,
    -	0x1a, 0x11, 0xd4, 0x86, 0x23, 0xe9, 0x2c, 0xd6, 0xe1, 0xb4, 0x9d, 0xff, 0x36, 0x4a, 0x27, 0xa2,
    -	0x8e, 0x13, 0xf1, 0xa5, 0x61, 0x21, 0xce, 0xa2, 0x8f, 0xae, 0x25, 0x73, 0x0c, 0x17, 0x0d, 0x0d,
    -	0x44, 0x2a, 0xcf, 0xf0, 0x58, 0xc7, 0xf4, 0xc2, 0x1b, 0x70, 0x5a, 0x4b, 0xd3, 0x7a, 0x39, 0x70,
    -	0x98, 0x8d, 0x92, 0xcb, 0x6e, 0x23, 0x8d, 0xa9, 0x7d, 0x74, 0x6f, 0xb7, 0x74, 0x7a, 0xad, 0x13,
    -	0x22, 0xee, 0x4c, 0x07, 0x5d, 0x87, 0x63, 0x3c, 0x16, 0xcd, 0x22, 0x71, 0xea, 0x0d, 0xd7, 0x53,
    -	0x5c, 0x33, 0x3f, 0xbb, 0x4e, 0xee, 0xed, 0x96, 0x8e, 0xcd, 0x65, 0x21, 0xe0, 0xec, 0x7a, 0xe8,
    -	0x35, 0x18, 0xae, 0x7b, 0xf2, 0x94, 0x1d, 0x30, 0x32, 0xe1, 0x0e, 0x2f, 0xae, 0x56, 0xd5, 0xf7,
    -	0xc7, 0x7f, 0x70, 0x5c, 0x01, 0x6d, 0x70, 0x15, 0x98, 0x92, 0x5b, 0x0e, 0xa6, 0x42, 0x94, 0x26,
    -	0x45, 0xfb, 0x46, 0x70, 0x07, 0xae, 0xfb, 0x55, 0x0e, 0x80, 0x46, 0xdc, 0x07, 0x83, 0x30, 0x7a,
    -	0x13, 0x90, 0xc8, 0xb8, 0x34, 0x57, 0x63, 0x09, 0x02, 0x35, 0xbb, 0x54, 0x25, 0x42, 0xa8, 0xa6,
    -	0x30, 0x70, 0x46, 0x2d, 0x74, 0x85, 0x1e, 0x8f, 0x7a, 0xa9, 0x38, 0x7e, 0x55, 0xbe, 0xf5, 0x45,
    -	0xd2, 0x0a, 0x08, 0x33, 0xa5, 0x34, 0x29, 0xe2, 0x44, 0x3d, 0x54, 0x87, 0x53, 0x4e, 0x3b, 0xf2,
    -	0x99, 0x76, 0xd1, 0x44, 0x5d, 0xf3, 0xb7, 0x88, 0xc7, 0x14, 0xfb, 0x43, 0x2c, 0xf4, 0xe9, 0xa9,
    -	0xb9, 0x0e, 0x78, 0xb8, 0x23, 0x15, 0xfa, 0x9c, 0xa2, 0x63, 0xa1, 0x29, 0xfe, 0x0c, 0x3f, 0x75,
    -	0xae, 0x0d, 0x97, 0x18, 0xe8, 0x25, 0x18, 0xd9, 0xf4, 0xc3, 0x68, 0x95, 0x44, 0x77, 0xfc, 0x60,
    -	0x4b, 0xa4, 0x78, 0x88, 0xd3, 0xea, 0xc4, 0x20, 0xac, 0xe3, 0xa1, 0xa7, 0x60, 0x90, 0x99, 0x9d,
    -	0x95, 0x17, 0xd9, 0x5d, 0x3b, 0x14, 0x9f, 0x31, 0x57, 0x78, 0x31, 0x96, 0x70, 0x89, 0x5a, 0xae,
    -	0x2c, 0xb0, 0xe3, 0x38, 0x81, 0x5a, 0xae, 0x2c, 0x60, 0x09, 0xa7, 0xcb, 0x35, 0xdc, 0x74, 0x02,
    -	0x52, 0x09, 0xfc, 0x1a, 0x09, 0xb5, 0x64, 0x4e, 0x8f, 0xf0, 0x04, 0x16, 0x74, 0xb9, 0x56, 0xb3,
    -	0x10, 0x70, 0x76, 0x3d, 0x44, 0xd2, 0x29, 0x8a, 0xc7, 0xf3, 0xd5, 0xae, 0x69, 0x76, 0xb0, 0xc7,
    -	0x2c, 0xc5, 0x1e, 0x4c, 0xaa, 0xe4, 0xc8, 0x3c, 0x65, 0x45, 0x38, 0x3d, 0xc1, 0xd6, 0x76, 0xef,
    -	0xf9, 0x2e, 0x94, 0x22, 0xbb, 0x9c, 0xa0, 0x84, 0x53, 0xb4, 0x8d, 0xd8, 0xba, 0x93, 0x5d, 0x63,
    -	0xeb, 0x5e, 0x80, 0xe1, 0xb0, 0x7d, 0xbb, 0xee, 0x37, 0x1d, 0xd7, 0x63, 0xd6, 0x3b, 0xda, 0xc3,
    -	0xbd, 0x2a, 0x01, 0x38, 0xc6, 0x41, 0xcb, 0x30, 0xe4, 0x48, 0x2d, 0x35, 0xca, 0x0f, 0x1b, 0xa8,
    -	0x74, 0xd3, 0x3c, 0x92, 0x96, 0xd4, 0x4b, 0xab, 0xba, 0xe8, 0x55, 0x18, 0x13, 0xa1, 0x49, 0x78,
    -	0x14, 0x1e, 0x66, 0x5d, 0xa3, 0x39, 0x53, 0x57, 0x75, 0x20, 0x36, 0x71, 0xd1, 0x0d, 0x18, 0x89,
    -	0xfc, 0x86, 0x90, 0x71, 0x86, 0xd3, 0xc7, 0xf3, 0xa3, 0xfb, 0xae, 0x29, 0x34, 0x5d, 0x7f, 0xa2,
    -	0xaa, 0x62, 0x9d, 0x0e, 0x5a, 0xe3, 0xeb, 0x9d, 0xa5, 0x6e, 0x22, 0xa1, 0x48, 0x48, 0x7f, 0x3a,
    -	0xcf, 0xf4, 0x92, 0xa1, 0x99, 0xdb, 0x41, 0xd4, 0xc4, 0x3a, 0x19, 0x74, 0x19, 0xa6, 0x5a, 0x81,
    -	0xeb, 0xb3, 0x35, 0xa1, 0xb4, 0xee, 0xd3, 0x66, 0xa2, 0xd6, 0x4a, 0x12, 0x01, 0xa7, 0xeb, 0xb0,
    -	0xc8, 0x32, 0xa2, 0x70, 0xfa, 0x24, 0x4f, 0x36, 0xc7, 0xe5, 0x20, 0xbc, 0x0c, 0x2b, 0x28, 0x5a,
    -	0x61, 0x27, 0x31, 0x17, 0xe1, 0x4d, 0xcf, 0xe4, 0xc7, 0x2b, 0xd0, 0x45, 0x7d, 0x9c, 0xf7, 0x57,
    -	0x7f, 0x71, 0x4c, 0x01, 0xd5, 0xb5, 0x1c, 0xef, 0xf4, 0x05, 0x15, 0x4e, 0x9f, 0xea, 0x60, 0xfb,
    -	0x9b, 0x78, 0x2e, 0xc7, 0x0c, 0x81, 0x51, 0x1c, 0xe2, 0x04, 0x4d, 0xf4, 0x06, 0x4c, 0x8a, 0xb0,
    -	0x0b, 0xf1, 0x30, 0x9d, 0x8e, 0xfd, 0xa3, 0x70, 0x02, 0x86, 0x53, 0xd8, 0x3c, 0xd9, 0x9b, 0x73,
    -	0xbb, 0x41, 0xc4, 0xd1, 0x77, 0xcd, 0xf5, 0xb6, 0xc2, 0xe9, 0x33, 0xec, 0x7c, 0x10, 0xc9, 0xde,
    -	0x92, 0x50, 0x9c, 0x51, 0x03, 0xad, 0xc1, 0x64, 0x2b, 0x20, 0xa4, 0xc9, 0xde, 0x49, 0xe2, 0x3e,
    -	0x2b, 0xf1, 0xc0, 0x4a, 0xb4, 0x27, 0x95, 0x04, 0x6c, 0x3f, 0xa3, 0x0c, 0xa7, 0x28, 0xa0, 0x3b,
    -	0x30, 0xe4, 0x6f, 0x93, 0x60, 0x93, 0x38, 0xf5, 0xe9, 0xb3, 0x1d, 0xbc, 0xf6, 0xc4, 0xe5, 0x76,
    -	0x5d, 0xe0, 0x26, 0x8c, 0x9a, 0x64, 0x71, 0x77, 0xa3, 0x26, 0xd9, 0x18, 0xfa, 0x4f, 0x2c, 0x38,
    -	0x29, 0xd5, 0x84, 0xd5, 0x16, 0x1d, 0xf5, 0x05, 0xdf, 0x0b, 0xa3, 0x80, 0x87, 0x02, 0x7a, 0x34,
    -	0x3f, 0x3c, 0xce, 0x5a, 0x4e, 0x25, 0xa5, 0x45, 0x38, 0x99, 0x87, 0x11, 0xe2, 0xfc, 0x16, 0xe9,
    -	0xcb, 0x3e, 0x24, 0x91, 0x3c, 0x8c, 0xe6, 0xc2, 0xe5, 0xb7, 0x16, 0x57, 0xa7, 0x1f, 0xe3, 0x71,
    -	0x8c, 0xe8, 0x66, 0xa8, 0x26, 0x81, 0x38, 0x8d, 0x8f, 0x2e, 0x42, 0xc1, 0x0f, 0xa7, 0x1f, 0x67,
    -	0x6b, 0xfb, 0x64, 0xce, 0x38, 0x5e, 0xaf, 0x72, 0xe3, 0xd6, 0xeb, 0x55, 0x5c, 0xf0, 0x43, 0x99,
    -	0x70, 0x8d, 0x3e, 0x67, 0xc3, 0xe9, 0x27, 0xb8, 0xcc, 0x59, 0x26, 0x5c, 0x63, 0x85, 0x38, 0x86,
    -	0xa3, 0x4d, 0x98, 0x08, 0x0d, 0xb1, 0x41, 0x38, 0x7d, 0x8e, 0x8d, 0xd4, 0x13, 0x79, 0x93, 0x66,
    -	0x60, 0x6b, 0x99, 0x90, 0x4c, 0x2a, 0x38, 0x49, 0x96, 0xef, 0x2e, 0x4d, 0x70, 0x11, 0x4e, 0x3f,
    -	0xd9, 0x65, 0x77, 0x69, 0xc8, 0xfa, 0xee, 0xd2, 0x69, 0xe0, 0x04, 0x4d, 0x74, 0x43, 0x77, 0x89,
    -	0x3c, 0x9f, 0x6f, 0x28, 0x99, 0xe9, 0x0c, 0x39, 0x96, 0xe7, 0x08, 0x39, 0xf3, 0x7d, 0x30, 0x95,
    -	0xe2, 0xc2, 0x0e, 0xe2, 0x1f, 0x32, 0xb3, 0x05, 0x63, 0xc6, 0x4a, 0x7f, 0xa8, 0xe6, 0x43, 0x3f,
    -	0x03, 0x30, 0xac, 0xcc, 0x3a, 0x72, 0xf4, 0x6c, 0x53, 0xf7, 0xa5, 0x67, 0xbb, 0x60, 0x5a, 0x1f,
    -	0x9d, 0x4c, 0x5a, 0x1f, 0x0d, 0x55, 0xfc, 0xba, 0x61, 0x70, 0xb4, 0x96, 0x11, 0x41, 0x38, 0xef,
    -	0x8c, 0xee, 0xdd, 0x21, 0x4e, 0x53, 0x55, 0x15, 0x7b, 0x36, 0x63, 0xea, 0xeb, 0xa8, 0xfd, 0xba,
    -	0x0c, 0x53, 0x9e, 0xcf, 0x9e, 0x11, 0xa4, 0x2e, 0x79, 0x44, 0xc6, 0x0a, 0x0e, 0xeb, 0x11, 0xee,
    -	0x12, 0x08, 0x38, 0x5d, 0x87, 0x36, 0xc8, 0x79, 0xb9, 0xa4, 0xba, 0x8d, 0xb3, 0x7a, 0x58, 0x40,
    -	0xe9, 0xf3, 0x95, 0xff, 0x0a, 0xa7, 0x27, 0xf3, 0x9f, 0xaf, 0xbc, 0x52, 0x92, 0x5f, 0x0c, 0x25,
    -	0xbf, 0xc8, 0xb4, 0x4b, 0x2d, 0xbf, 0x5e, 0xae, 0x88, 0x97, 0x88, 0x16, 0xdb, 0xbf, 0x5e, 0xae,
    -	0x60, 0x0e, 0x43, 0x73, 0x30, 0xc0, 0x7e, 0xc8, 0xc8, 0x41, 0x79, 0x27, 0x49, 0xb9, 0xa2, 0xe5,
    -	0xa4, 0x65, 0x15, 0xb0, 0xa8, 0xc8, 0xb4, 0x07, 0xf4, 0xf9, 0xc6, 0xb4, 0x07, 0x83, 0xf7, 0xa9,
    -	0x3d, 0x90, 0x04, 0x70, 0x4c, 0x0b, 0xdd, 0x85, 0x63, 0xc6, 0x93, 0x59, 0x79, 0x08, 0x42, 0xbe,
    -	0x91, 0x42, 0x02, 0x79, 0xfe, 0xb4, 0xe8, 0xf4, 0xb1, 0x72, 0x16, 0x25, 0x9c, 0xdd, 0x00, 0x6a,
    -	0xc0, 0x54, 0x2d, 0xd5, 0xea, 0x50, 0xef, 0xad, 0xaa, 0x75, 0x91, 0x6e, 0x31, 0x4d, 0x18, 0xbd,
    -	0x0a, 0x43, 0xef, 0xfa, 0xdc, 0xa0, 0x50, 0xbc, 0x9e, 0x64, 0x7c, 0x9b, 0xa1, 0xb7, 0xae, 0x57,
    -	0x59, 0xf9, 0xfe, 0x6e, 0x69, 0xa4, 0xe2, 0xd7, 0xe5, 0x5f, 0xac, 0x2a, 0xa0, 0x1f, 0xb3, 0x60,
    -	0x26, 0xfd, 0x26, 0x57, 0x9d, 0x1e, 0xeb, 0xbd, 0xd3, 0xb6, 0x68, 0x74, 0x66, 0x29, 0x97, 0x1c,
    -	0xee, 0xd0, 0x14, 0xfa, 0x28, 0xdd, 0x4f, 0xa1, 0x7b, 0x8f, 0x88, 0x84, 0xfe, 0x8f, 0xc6, 0xfb,
    -	0x89, 0x96, 0xee, 0xef, 0x96, 0x26, 0xf8, 0xe1, 0xed, 0xde, 0x53, 0x59, 0x08, 0x78, 0x05, 0xf4,
    -	0x83, 0x70, 0x2c, 0x48, 0xcb, 0xc8, 0x89, 0x7c, 0x27, 0x3c, 0xdd, 0xcb, 0x45, 0x90, 0x9c, 0x70,
    -	0x9c, 0x45, 0x10, 0x67, 0xb7, 0x63, 0xff, 0xa1, 0xc5, 0x74, 0x23, 0xa2, 0x5b, 0x24, 0x6c, 0x37,
    -	0xa2, 0x43, 0x30, 0xe2, 0x5b, 0x32, 0x6c, 0x13, 0xee, 0xdb, 0x0a, 0xef, 0xbf, 0xb3, 0x98, 0x15,
    -	0xde, 0x21, 0xfa, 0x13, 0xbe, 0x05, 0x43, 0x91, 0x68, 0x4d, 0x74, 0x3d, 0xcf, 0x62, 0x48, 0x76,
    -	0x8a, 0x59, 0x22, 0xaa, 0x77, 0x98, 0x2c, 0xc5, 0x8a, 0x8c, 0xfd, 0x5f, 0xf3, 0x19, 0x90, 0x90,
    -	0x43, 0x50, 0x01, 0x2f, 0x9a, 0x2a, 0xe0, 0x52, 0x97, 0x2f, 0xc8, 0x51, 0x05, 0xff, 0x57, 0x66,
    -	0xbf, 0x99, 0xfc, 0xf1, 0xfd, 0x6e, 0xfe, 0x69, 0x7f, 0xd1, 0x02, 0x88, 0xd3, 0xbe, 0xf4, 0x90,
    -	0xc0, 0xfb, 0x12, 0x7d, 0x79, 0xf9, 0x91, 0x5f, 0xf3, 0x1b, 0x42, 0x05, 0x75, 0x2a, 0xd6, 0x42,
    -	0xf3, 0xf2, 0x7d, 0xed, 0x37, 0x56, 0xd8, 0xa8, 0x24, 0xe3, 0x30, 0x17, 0x63, 0xbb, 0x08, 0x23,
    -	0x06, 0xf3, 0x57, 0x2c, 0x38, 0x9a, 0xe5, 0x9c, 0x42, 0xdf, 0xf1, 0x5c, 0x12, 0xab, 0x4c, 0x73,
    -	0xd5, 0x6c, 0xde, 0x14, 0xe5, 0x58, 0x61, 0xf4, 0x9c, 0x19, 0xfd, 0x60, 0x29, 0x49, 0xae, 0xc3,
    -	0x58, 0x25, 0x20, 0x1a, 0x7f, 0xf1, 0x7a, 0x9c, 0x2d, 0x69, 0x78, 0xfe, 0xd9, 0x03, 0x47, 0x7c,
    -	0xb2, 0xbf, 0x5a, 0x80, 0xa3, 0xdc, 0xc0, 0x6c, 0x6e, 0xdb, 0x77, 0xeb, 0x15, 0xbf, 0x2e, 0x5c,
    -	0x8a, 0xdf, 0x86, 0xd1, 0x96, 0x26, 0x3e, 0xef, 0x14, 0x5e, 0x5f, 0x17, 0xb3, 0xc7, 0x02, 0x3f,
    -	0xbd, 0x14, 0x1b, 0xb4, 0x50, 0x1d, 0x46, 0xc9, 0xb6, 0x5b, 0x53, 0x96, 0x45, 0x85, 0x03, 0x5f,
    -	0xd2, 0xaa, 0x95, 0x25, 0x8d, 0x0e, 0x36, 0xa8, 0xf6, 0x6c, 0x16, 0xae, 0xb1, 0x68, 0x7d, 0x5d,
    -	0xac, 0x89, 0x7e, 0xce, 0x82, 0x13, 0x39, 0xc1, 0xf8, 0x69, 0x73, 0x77, 0x98, 0x29, 0x9f, 0x58,
    -	0xb6, 0xaa, 0x39, 0x6e, 0xe0, 0x87, 0x05, 0x14, 0x7d, 0x1c, 0xa0, 0x15, 0xa7, 0x30, 0xed, 0x12,
    -	0xb5, 0xdc, 0x88, 0x5f, 0xac, 0x85, 0xa2, 0x55, 0x99, 0x4e, 0x35, 0x5a, 0xf6, 0x57, 0xfa, 0xa0,
    -	0x9f, 0x19, 0x71, 0xa1, 0x0a, 0x0c, 0x6e, 0xf2, 0x48, 0x89, 0x1d, 0xe7, 0x8d, 0xe2, 0xca, 0xd0,
    -	0x8b, 0xf1, 0xbc, 0x69, 0xa5, 0x58, 0x92, 0x41, 0x2b, 0x70, 0x84, 0xa7, 0x67, 0x6d, 0x2c, 0x92,
    -	0x86, 0xb3, 0x23, 0x25, 0xd3, 0x05, 0xf6, 0xa9, 0x4a, 0x42, 0x5f, 0x4e, 0xa3, 0xe0, 0xac, 0x7a,
    -	0xe8, 0x75, 0x18, 0x8f, 0xdc, 0x26, 0xf1, 0xdb, 0x91, 0xa4, 0xc4, 0xf3, 0xa1, 0xaa, 0xc7, 0xd3,
    -	0x9a, 0x01, 0xc5, 0x09, 0x6c, 0xf4, 0x2a, 0x8c, 0xb5, 0x52, 0x32, 0xf8, 0xfe, 0x58, 0x58, 0x65,
    -	0xca, 0xdd, 0x4d, 0x5c, 0xe6, 0x9f, 0xd2, 0x66, 0xde, 0x38, 0x6b, 0x9b, 0x01, 0x09, 0x37, 0xfd,
    -	0x46, 0x9d, 0x71, 0xc0, 0xfd, 0x9a, 0x7f, 0x4a, 0x02, 0x8e, 0x53, 0x35, 0x28, 0x95, 0x75, 0xc7,
    -	0x6d, 0xb4, 0x03, 0x12, 0x53, 0x19, 0x30, 0xa9, 0x2c, 0x27, 0xe0, 0x38, 0x55, 0xa3, 0xbb, 0x72,
    -	0x61, 0xf0, 0xc1, 0x28, 0x17, 0xec, 0x5f, 0x2d, 0x80, 0x31, 0xb5, 0xdf, 0xc3, 0xd9, 0x56, 0x5f,
    -	0x83, 0xbe, 0x8d, 0xa0, 0x55, 0x13, 0x06, 0x8b, 0x99, 0x5f, 0x76, 0x19, 0x57, 0x16, 0xf4, 0x2f,
    -	0xa3, 0xff, 0x31, 0xab, 0x45, 0xf7, 0xf8, 0xb1, 0x4a, 0xe0, 0xd3, 0x4b, 0x4e, 0x06, 0x53, 0x55,
    -	0x6e, 0x60, 0x83, 0xf2, 0xbd, 0xde, 0x21, 0xec, 0xb8, 0xf0, 0x65, 0xe1, 0x14, 0x0c, 0xdb, 0xbe,
    -	0xaa, 0x78, 0xad, 0x4b, 0x2a, 0xe8, 0x22, 0x8c, 0x88, 0x04, 0x98, 0xcc, 0x5b, 0x89, 0x6f, 0x26,
    -	0x66, 0x8b, 0xb8, 0x18, 0x17, 0x63, 0x1d, 0xc7, 0xfe, 0xf1, 0x02, 0x1c, 0xc9, 0x70, 0x37, 0xe5,
    -	0xd7, 0xc8, 0x86, 0x1b, 0x46, 0xc1, 0x4e, 0xf2, 0x72, 0xc2, 0xa2, 0x1c, 0x2b, 0x0c, 0x7a, 0x56,
    -	0xf1, 0x8b, 0x2a, 0x79, 0x39, 0x09, 0x77, 0x2e, 0x01, 0x3d, 0xd8, 0xe5, 0x44, 0xaf, 0xed, 0x76,
    -	0x48, 0x64, 0x86, 0x03, 0x75, 0x6d, 0x33, 0xc3, 0x05, 0x06, 0xa1, 0x4f, 0xc0, 0x0d, 0xa5, 0x8d,
    -	0xd7, 0x9e, 0x80, 0x5c, 0x1f, 0xcf, 0x61, 0xb4, 0x73, 0x11, 0xf1, 0x1c, 0x2f, 0x12, 0x0f, 0xc5,
    -	0x38, 0xf2, 0x35, 0x2b, 0xc5, 0x02, 0x6a, 0x7f, 0xb9, 0x08, 0x27, 0x73, 0x1d, 0xd0, 0x69, 0xd7,
    -	0x9b, 0xbe, 0xe7, 0x46, 0xbe, 0x32, 0xf2, 0xe4, 0xd1, 0xae, 0x49, 0x6b, 0x73, 0x45, 0x94, 0x63,
    -	0x85, 0x81, 0xce, 0x41, 0x3f, 0x93, 0xdb, 0x27, 0x93, 0xdf, 0xe1, 0xf9, 0x45, 0x1e, 0x0b, 0x94,
    -	0x83, 0xb5, 0x5b, 0xbd, 0xd8, 0xf1, 0x56, 0x7f, 0x8c, 0x72, 0x30, 0x7e, 0x23, 0x79, 0xa1, 0xd0,
    -	0xee, 0xfa, 0x7e, 0x03, 0x33, 0x20, 0x7a, 0x42, 0x8c, 0x57, 0xc2, 0xaa, 0x11, 0x3b, 0x75, 0x3f,
    -	0xd4, 0x06, 0xed, 0x29, 0x18, 0xdc, 0x22, 0x3b, 0x81, 0xeb, 0x6d, 0x24, 0xad, 0x5d, 0xaf, 0xf2,
    -	0x62, 0x2c, 0xe1, 0x66, 0x96, 0xf8, 0xc1, 0x07, 0x91, 0x25, 0x5e, 0x5f, 0x01, 0x43, 0x5d, 0xd9,
    -	0x93, 0x9f, 0x28, 0xc2, 0x04, 0x9e, 0x5f, 0xfc, 0x60, 0x22, 0x6e, 0xa4, 0x27, 0xe2, 0x41, 0x24,
    -	0x53, 0x3f, 0xd8, 0x6c, 0xfc, 0x9e, 0x05, 0x13, 0x2c, 0x0d, 0xa7, 0x88, 0x1e, 0xe3, 0xfa, 0xde,
    -	0x21, 0x3c, 0x05, 0x1e, 0x83, 0xfe, 0x80, 0x36, 0x2a, 0x66, 0x50, 0xed, 0x71, 0xd6, 0x13, 0xcc,
    -	0x61, 0xe8, 0x14, 0xf4, 0xb1, 0x2e, 0xd0, 0xc9, 0x1b, 0xe5, 0x47, 0xf0, 0xa2, 0x13, 0x39, 0x98,
    -	0x95, 0xb2, 0x38, 0x96, 0x98, 0xb4, 0x1a, 0x2e, 0xef, 0x74, 0x6c, 0x55, 0xf1, 0xfe, 0x08, 0x4d,
    -	0x93, 0xd9, 0xb5, 0xf7, 0x16, 0xc7, 0x32, 0x9b, 0x64, 0xe7, 0x67, 0xf6, 0x3f, 0x15, 0xe0, 0x4c,
    -	0x66, 0xbd, 0x9e, 0xe3, 0x58, 0x76, 0xae, 0xfd, 0x30, 0x93, 0xf6, 0x15, 0x0f, 0xd1, 0x97, 0xa0,
    -	0xaf, 0x57, 0xee, 0xbf, 0xbf, 0x87, 0xf0, 0x92, 0x99, 0x43, 0xf6, 0x3e, 0x09, 0x2f, 0x99, 0xd9,
    -	0xb7, 0x1c, 0x31, 0xc1, 0xb7, 0x0b, 0x39, 0xdf, 0xc2, 0x04, 0x06, 0xe7, 0xe9, 0x39, 0xc3, 0x80,
    -	0xa1, 0x7c, 0x84, 0xf3, 0x33, 0x86, 0x97, 0x61, 0x05, 0x45, 0x73, 0x30, 0xd1, 0x74, 0x3d, 0x7a,
    -	0xf8, 0xec, 0x98, 0xac, 0xb8, 0x52, 0xb7, 0xac, 0x98, 0x60, 0x9c, 0xc4, 0x47, 0xae, 0x16, 0x7a,
    -	0x92, 0x7f, 0xdd, 0xab, 0x07, 0xda, 0x75, 0xb3, 0xa6, 0xc5, 0x89, 0x1a, 0xc5, 0x8c, 0x30, 0x94,
    -	0x2b, 0x9a, 0x9c, 0xa8, 0xd8, 0xbb, 0x9c, 0x68, 0x34, 0x5b, 0x46, 0x34, 0xf3, 0x2a, 0x8c, 0xdd,
    -	0xb7, 0x9e, 0xc5, 0xfe, 0x66, 0x11, 0x1e, 0xe9, 0xb0, 0xed, 0xf9, 0x59, 0x6f, 0xcc, 0x81, 0x76,
    -	0xd6, 0xa7, 0xe6, 0xa1, 0x02, 0x47, 0xd7, 0xdb, 0x8d, 0xc6, 0x0e, 0x73, 0xc0, 0x23, 0x75, 0x89,
    -	0x21, 0x78, 0x4a, 0x29, 0x1c, 0x39, 0xba, 0x9c, 0x81, 0x83, 0x33, 0x6b, 0xd2, 0x27, 0x16, 0xbd,
    -	0x49, 0x76, 0x14, 0xa9, 0xc4, 0x13, 0x0b, 0xeb, 0x40, 0x6c, 0xe2, 0xa2, 0xcb, 0x30, 0xe5, 0x6c,
    -	0x3b, 0x2e, 0x4f, 0x7a, 0x22, 0x09, 0xf0, 0x37, 0x96, 0x92, 0x45, 0xcf, 0x25, 0x11, 0x70, 0xba,
    -	0x4e, 0x8e, 0x4a, 0xa8, 0x78, 0x5f, 0x2a, 0x21, 0x33, 0x08, 0xe2, 0x40, 0x7e, 0x10, 0xc4, 0xce,
    -	0xe7, 0x62, 0xd7, 0x7c, 0x91, 0xef, 0xc0, 0xd8, 0x41, 0x2d, 0xc7, 0x9f, 0x82, 0xc1, 0x40, 0x64,
    -	0xe2, 0x4f, 0x78, 0xbb, 0xcb, 0x3c, 0xe5, 0x12, 0x6e, 0xff, 0x6f, 0x16, 0x28, 0x59, 0xb2, 0x19,
    -	0xef, 0xfc, 0x55, 0x66, 0x06, 0xcf, 0xa5, 0xe0, 0x5a, 0x88, 0xb3, 0x63, 0x9a, 0x19, 0x7c, 0x0c,
    -	0xc4, 0x26, 0x2e, 0x5f, 0x6e, 0x61, 0x1c, 0x59, 0xc3, 0x78, 0x40, 0x08, 0x0d, 0xa4, 0xc2, 0x40,
    -	0x9f, 0x80, 0xc1, 0xba, 0xbb, 0xed, 0x86, 0x42, 0x8e, 0x76, 0x60, 0x1d, 0x60, 0xfc, 0x7d, 0x8b,
    -	0x9c, 0x0c, 0x96, 0xf4, 0xec, 0x9f, 0xb2, 0x40, 0xa9, 0x4e, 0xaf, 0x10, 0xa7, 0x11, 0x6d, 0xa2,
    -	0x37, 0x00, 0x24, 0x05, 0x25, 0x7b, 0x93, 0x06, 0x5d, 0x80, 0x15, 0x64, 0xdf, 0xf8, 0x87, 0xb5,
    -	0x3a, 0xe8, 0x75, 0x18, 0xd8, 0x64, 0xb4, 0xc4, 0xb7, 0x9d, 0x53, 0xaa, 0x2e, 0x56, 0xba, 0xbf,
    -	0x5b, 0x3a, 0x6a, 0xb6, 0x29, 0x6f, 0x31, 0x5e, 0xcb, 0xfe, 0x89, 0x42, 0x3c, 0xa7, 0x6f, 0xb5,
    -	0xfd, 0xc8, 0x39, 0x04, 0x4e, 0xe4, 0xb2, 0xc1, 0x89, 0x3c, 0xd1, 0x49, 0x37, 0xcc, 0xba, 0x94,
    -	0xcb, 0x81, 0x5c, 0x4f, 0x70, 0x20, 0x4f, 0x76, 0x27, 0xd5, 0x99, 0xf3, 0xf8, 0x6f, 0x2c, 0x98,
    -	0x32, 0xf0, 0x0f, 0xe1, 0x02, 0x5c, 0x36, 0x2f, 0xc0, 0x47, 0xbb, 0x7e, 0x43, 0xce, 0xc5, 0xf7,
    -	0xa3, 0xc5, 0x44, 0xdf, 0xd9, 0x85, 0xf7, 0x2e, 0xf4, 0x6d, 0x3a, 0x41, 0x5d, 0xbc, 0xeb, 0x2f,
    -	0xf4, 0x34, 0xd6, 0xb3, 0x57, 0x9c, 0x40, 0x18, 0x83, 0x3c, 0x2b, 0x47, 0x9d, 0x16, 0x75, 0x35,
    -	0x04, 0x61, 0x4d, 0xa1, 0x4b, 0x30, 0x10, 0xd6, 0xfc, 0x96, 0xf2, 0x29, 0x64, 0x49, 0xd4, 0xab,
    -	0xac, 0x64, 0x7f, 0xb7, 0x84, 0xcc, 0xe6, 0x68, 0x31, 0x16, 0xf8, 0xe8, 0x6d, 0x18, 0x63, 0xbf,
    -	0x94, 0x65, 0x66, 0x31, 0x5f, 0x02, 0x53, 0xd5, 0x11, 0xb9, 0xd9, 0xb2, 0x51, 0x84, 0x4d, 0x52,
    -	0x33, 0x1b, 0x30, 0xac, 0x3e, 0xeb, 0xa1, 0x6a, 0xfe, 0xff, 0xba, 0x08, 0x47, 0x32, 0xd6, 0x1c,
    -	0x0a, 0x8d, 0x99, 0xb8, 0xd8, 0xe3, 0x52, 0x7d, 0x8f, 0x73, 0x11, 0xb2, 0x07, 0x60, 0x5d, 0xac,
    -	0xad, 0x9e, 0x1b, 0xbd, 0x11, 0x92, 0x64, 0xa3, 0xb4, 0xa8, 0x7b, 0xa3, 0xb4, 0xb1, 0x43, 0x1b,
    -	0x6a, 0xda, 0x90, 0xea, 0xe9, 0x43, 0x9d, 0xd3, 0x3f, 0xe9, 0x83, 0xa3, 0x59, 0xe6, 0x2a, 0xe8,
    -	0x73, 0x30, 0xc0, 0x9c, 0xde, 0xa4, 0xe0, 0xec, 0xc5, 0x5e, 0x0d, 0x5d, 0x66, 0x99, 0xdf, 0x9c,
    -	0x08, 0x99, 0x3b, 0x2b, 0x8f, 0x23, 0x5e, 0xd8, 0x75, 0x98, 0x45, 0x9b, 0x2c, 0x94, 0x95, 0xb8,
    -	0x3d, 0xe5, 0xf1, 0xf1, 0x91, 0x9e, 0x3b, 0x20, 0xee, 0xdf, 0x30, 0x61, 0xf5, 0x25, 0x8b, 0xbb,
    -	0x5b, 0x7d, 0xc9, 0x96, 0x51, 0x19, 0x06, 0x6a, 0xdc, 0x9c, 0xa8, 0xd8, 0xfd, 0x08, 0xe3, 0xb6,
    -	0x44, 0xea, 0x00, 0x16, 0x36, 0x44, 0x82, 0xc0, 0x8c, 0x0b, 0x23, 0xda, 0xc0, 0x3c, 0xd4, 0xc5,
    -	0xb3, 0x45, 0x2f, 0x3e, 0x6d, 0x08, 0x1e, 0xea, 0x02, 0xfa, 0x59, 0xed, 0xee, 0x17, 0xe7, 0xc1,
    -	0x87, 0x0d, 0xde, 0xe9, 0x54, 0xc2, 0x15, 0x31, 0xb1, 0xaf, 0x18, 0x2f, 0x55, 0x35, 0x63, 0xcd,
    -	0xe7, 0x26, 0xcc, 0x32, 0x2f, 0xfc, 0xce, 0xf1, 0xe5, 0xed, 0x9f, 0xb3, 0x20, 0xe1, 0x2c, 0xa6,
    -	0xc4, 0x9d, 0x56, 0xae, 0xb8, 0xf3, 0x2c, 0xf4, 0x05, 0x7e, 0x43, 0xf2, 0x53, 0x0a, 0x03, 0xfb,
    -	0x0d, 0x82, 0x19, 0x84, 0x62, 0x44, 0xb1, 0x10, 0x6b, 0x54, 0x7f, 0xa0, 0x8b, 0xa7, 0xf7, 0x63,
    -	0xd0, 0xdf, 0x20, 0xdb, 0xa4, 0x91, 0xcc, 0x1b, 0x7b, 0x8d, 0x16, 0x62, 0x0e, 0xb3, 0x7f, 0xaf,
    -	0x0f, 0x4e, 0x77, 0x8c, 0x78, 0x47, 0x19, 0xcc, 0x0d, 0x27, 0x22, 0x77, 0x9c, 0x9d, 0x64, 0xbe,
    -	0xc4, 0xcb, 0xbc, 0x18, 0x4b, 0x38, 0x73, 0xdc, 0xe6, 0x39, 0x80, 0x12, 0xc2, 0x61, 0x91, 0xfa,
    -	0x47, 0x40, 0x4d, 0x61, 0x63, 0xf1, 0x41, 0x08, 0x1b, 0x9f, 0x07, 0x08, 0xc3, 0x06, 0xb7, 0x09,
    -	0xad, 0x0b, 0x8f, 0xf0, 0x38, 0x57, 0x54, 0xf5, 0x9a, 0x80, 0x60, 0x0d, 0x0b, 0x2d, 0xc2, 0x64,
    -	0x2b, 0xf0, 0x23, 0x2e, 0x6b, 0x5f, 0xe4, 0x66, 0xd3, 0xfd, 0x66, 0xb0, 0xb1, 0x4a, 0x02, 0x8e,
    -	0x53, 0x35, 0xd0, 0x4b, 0x30, 0x22, 0x02, 0x90, 0x55, 0x7c, 0xbf, 0x21, 0xc4, 0x7b, 0xca, 0x92,
    -	0xb8, 0x1a, 0x83, 0xb0, 0x8e, 0xa7, 0x55, 0x63, 0x02, 0xfc, 0xc1, 0xcc, 0x6a, 0x5c, 0x88, 0xaf,
    -	0xe1, 0x25, 0x92, 0x15, 0x0c, 0xf5, 0x94, 0xac, 0x20, 0x16, 0x78, 0x0e, 0xf7, 0xac, 0x4f, 0x86,
    -	0xae, 0x22, 0xc2, 0xaf, 0xf5, 0xc1, 0x11, 0xb1, 0x70, 0x1e, 0xf6, 0x72, 0xb9, 0x91, 0x5e, 0x2e,
    -	0x0f, 0x42, 0x24, 0xfa, 0xc1, 0x9a, 0x39, 0xec, 0x35, 0xf3, 0x93, 0x16, 0x98, 0x3c, 0x24, 0xfa,
    -	0x8f, 0x72, 0x13, 0xce, 0xbe, 0x94, 0xcb, 0x93, 0xc6, 0x91, 0xcc, 0xdf, 0x5b, 0xea, 0x59, 0xfb,
    -	0x7f, 0xb1, 0xe0, 0xd1, 0xae, 0x14, 0xd1, 0x12, 0x0c, 0x33, 0x46, 0x57, 0x7b, 0x17, 0x3f, 0xa9,
    -	0xdc, 0x2a, 0x24, 0x20, 0x87, 0xef, 0x8e, 0x6b, 0xa2, 0xa5, 0x54, 0x66, 0xdf, 0xa7, 0x32, 0x32,
    -	0xfb, 0x1e, 0x33, 0x86, 0xe7, 0x3e, 0x53, 0xfb, 0x7e, 0x89, 0xde, 0x38, 0xa6, 0x6f, 0xe6, 0x47,
    -	0x0c, 0x71, 0xae, 0x9d, 0x10, 0xe7, 0x22, 0x13, 0x5b, 0xbb, 0x43, 0xde, 0x80, 0x49, 0x16, 0x99,
    -	0x94, 0x39, 0xf9, 0x08, 0xa7, 0xce, 0x42, 0x6c, 0xc8, 0x7f, 0x2d, 0x01, 0xc3, 0x29, 0x6c, 0xfb,
    -	0x1f, 0x8a, 0x30, 0xc0, 0xb7, 0xdf, 0x21, 0x3c, 0x7c, 0x9f, 0x81, 0x61, 0xb7, 0xd9, 0x6c, 0xf3,
    -	0x64, 0xad, 0xfd, 0xb1, 0x59, 0x78, 0x59, 0x16, 0xe2, 0x18, 0x8e, 0x96, 0x85, 0x26, 0xa1, 0x43,
    -	0xf0, 0x73, 0xde, 0xf1, 0xd9, 0x45, 0x27, 0x72, 0x38, 0x17, 0xa7, 0xee, 0xd9, 0x58, 0xe7, 0x80,
    -	0x3e, 0x0d, 0x10, 0x46, 0x81, 0xeb, 0x6d, 0xd0, 0x32, 0x91, 0x21, 0xe3, 0xe9, 0x0e, 0xd4, 0xaa,
    -	0x0a, 0x99, 0xd3, 0x8c, 0xcf, 0x1c, 0x05, 0xc0, 0x1a, 0x45, 0x34, 0x6b, 0xdc, 0xf4, 0x33, 0x89,
    -	0xb9, 0x03, 0x4e, 0x35, 0x9e, 0xb3, 0x99, 0x97, 0x61, 0x58, 0x11, 0xef, 0x26, 0x57, 0x1c, 0xd5,
    -	0x19, 0xb6, 0x8f, 0xc1, 0x44, 0xa2, 0x6f, 0x07, 0x12, 0x4b, 0xfe, 0xbe, 0x05, 0x13, 0xbc, 0x33,
    -	0x4b, 0xde, 0xb6, 0xb8, 0x0d, 0xee, 0xc1, 0xd1, 0x46, 0xc6, 0xa9, 0x2c, 0xa6, 0xbf, 0xf7, 0x53,
    -	0x5c, 0x89, 0x21, 0xb3, 0xa0, 0x38, 0xb3, 0x0d, 0x74, 0x9e, 0xee, 0x38, 0x7a, 0xea, 0x3a, 0x0d,
    -	0x11, 0x99, 0x64, 0x94, 0xef, 0x36, 0x5e, 0x86, 0x15, 0xd4, 0xfe, 0x5b, 0x0b, 0xa6, 0x78, 0xcf,
    -	0xaf, 0x92, 0x1d, 0x75, 0x36, 0x7d, 0x27, 0xfb, 0x2e, 0xd2, 0x84, 0x17, 0x72, 0xd2, 0x84, 0xeb,
    -	0x9f, 0x56, 0xec, 0xf8, 0x69, 0x5f, 0xb5, 0x40, 0xac, 0x90, 0x43, 0x90, 0xb4, 0x7c, 0x9f, 0x29,
    -	0x69, 0x99, 0xc9, 0xdf, 0x04, 0x39, 0x22, 0x96, 0x7f, 0xb3, 0x60, 0x92, 0x23, 0xc4, 0x56, 0x10,
    -	0xdf, 0xd1, 0x79, 0x98, 0x37, 0xbf, 0x28, 0xd3, 0xac, 0xf5, 0x2a, 0xd9, 0x59, 0xf3, 0x2b, 0x4e,
    -	0xb4, 0x99, 0xfd, 0x51, 0xc6, 0x64, 0xf5, 0x75, 0x9c, 0xac, 0xba, 0xdc, 0x40, 0x46, 0x42, 0xc8,
    -	0x2e, 0x02, 0xe0, 0x83, 0x26, 0x84, 0xb4, 0xff, 0xd1, 0x02, 0xc4, 0x9b, 0x31, 0x18, 0x37, 0xca,
    -	0x0e, 0xb1, 0x52, 0xed, 0xa2, 0x8b, 0x8f, 0x26, 0x05, 0xc1, 0x1a, 0xd6, 0x03, 0x19, 0x9e, 0x84,
    -	0x29, 0x4b, 0xb1, 0xbb, 0x29, 0xcb, 0x01, 0x46, 0xf4, 0xab, 0x83, 0x90, 0x74, 0xeb, 0x44, 0x37,
    -	0x61, 0xb4, 0xe6, 0xb4, 0x9c, 0xdb, 0x6e, 0xc3, 0x8d, 0x5c, 0x12, 0x76, 0xb2, 0x73, 0x5b, 0xd0,
    -	0xf0, 0x84, 0xf1, 0x81, 0x56, 0x82, 0x0d, 0x3a, 0x68, 0x16, 0xa0, 0x15, 0xb8, 0xdb, 0x6e, 0x83,
    -	0x6c, 0x30, 0x81, 0x10, 0x8b, 0x85, 0xc4, 0x8d, 0xee, 0x64, 0x29, 0xd6, 0x30, 0x32, 0x42, 0x90,
    -	0x14, 0x1f, 0x72, 0x08, 0x12, 0x38, 0xb4, 0x10, 0x24, 0x7d, 0x07, 0x0a, 0x41, 0x32, 0x74, 0xe0,
    -	0x10, 0x24, 0xfd, 0x3d, 0x85, 0x20, 0xc1, 0x70, 0x5c, 0xf2, 0x9e, 0xf4, 0xff, 0xb2, 0xdb, 0x20,
    -	0xe2, 0xc1, 0xc1, 0x03, 0x38, 0xcd, 0xec, 0xed, 0x96, 0x8e, 0xe3, 0x4c, 0x0c, 0x9c, 0x53, 0x13,
    -	0x7d, 0x1c, 0xa6, 0x9d, 0x46, 0xc3, 0xbf, 0xa3, 0x26, 0x75, 0x29, 0xac, 0x39, 0x8d, 0x38, 0xae,
    -	0xdf, 0xd0, 0xfc, 0xa9, 0xbd, 0xdd, 0xd2, 0xf4, 0x5c, 0x0e, 0x0e, 0xce, 0xad, 0x8d, 0x5e, 0x83,
    -	0xe1, 0x56, 0xe0, 0xd7, 0x56, 0x34, 0xdf, 0xf3, 0x33, 0x74, 0x00, 0x2b, 0xb2, 0x70, 0x7f, 0xb7,
    -	0x34, 0xa6, 0xfe, 0xb0, 0x0b, 0x3f, 0xae, 0x90, 0x11, 0xdd, 0x63, 0xe4, 0x61, 0x47, 0xf7, 0x18,
    -	0x7d, 0xc0, 0xd1, 0x3d, 0xec, 0x2d, 0x38, 0x52, 0x25, 0x81, 0xeb, 0x34, 0xdc, 0x7b, 0x94, 0x27,
    -	0x97, 0x67, 0xe0, 0x1a, 0x0c, 0x07, 0x89, 0x53, 0xbf, 0xa7, 0xa0, 0xe7, 0x9a, 0x5c, 0x46, 0x9e,
    -	0xf2, 0x31, 0x21, 0xfb, 0xff, 0xb7, 0x60, 0x50, 0xb8, 0x8a, 0x1e, 0x02, 0x67, 0x3a, 0x67, 0xa8,
    -	0x64, 0x4a, 0xd9, 0x93, 0xc2, 0x3a, 0x93, 0xab, 0x8c, 0x29, 0x27, 0x94, 0x31, 0x8f, 0x76, 0x22,
    -	0xd2, 0x59, 0x0d, 0xf3, 0x9f, 0x15, 0xe9, 0x0b, 0xc1, 0x08, 0x5a, 0xf0, 0xf0, 0x87, 0x60, 0x15,
    -	0x06, 0x43, 0xe1, 0x34, 0x5f, 0xc8, 0xf7, 0xe5, 0x49, 0x4e, 0x62, 0x6c, 0x03, 0x29, 0xdc, 0xe4,
    -	0x25, 0x91, 0x4c, 0x6f, 0xfc, 0xe2, 0x43, 0xf4, 0xc6, 0xef, 0x16, 0xd6, 0xa1, 0xef, 0x41, 0x84,
    -	0x75, 0xb0, 0xbf, 0xce, 0x6e, 0x67, 0xbd, 0xfc, 0x10, 0x18, 0xb7, 0xcb, 0xe6, 0x3d, 0x6e, 0x77,
    -	0x58, 0x59, 0xa2, 0x53, 0x39, 0x0c, 0xdc, 0xef, 0x5a, 0x70, 0x3a, 0xe3, 0xab, 0x34, 0x6e, 0xee,
    -	0x59, 0x18, 0x72, 0xda, 0x75, 0x57, 0xed, 0x65, 0x4d, 0x5b, 0x3c, 0x27, 0xca, 0xb1, 0xc2, 0x40,
    -	0x0b, 0x30, 0x45, 0xee, 0xb6, 0x5c, 0xae, 0x86, 0xd7, 0x4d, 0xc7, 0x8b, 0xdc, 0xbf, 0x78, 0x29,
    -	0x09, 0xc4, 0x69, 0x7c, 0x15, 0x1a, 0xae, 0x98, 0x1b, 0x1a, 0xee, 0x37, 0x2d, 0x18, 0x51, 0x6e,
    -	0xe3, 0x0f, 0x7d, 0xb4, 0xdf, 0x30, 0x47, 0xfb, 0x91, 0x0e, 0xa3, 0x9d, 0x33, 0xcc, 0x7f, 0x53,
    -	0x50, 0xfd, 0xad, 0xf8, 0x41, 0xd4, 0x03, 0x97, 0x78, 0xff, 0x6e, 0x2f, 0x17, 0x61, 0xc4, 0x69,
    -	0xb5, 0x24, 0x40, 0xda, 0x2f, 0xb2, 0x14, 0x16, 0x71, 0x31, 0xd6, 0x71, 0x94, 0x17, 0x4e, 0x31,
    -	0xd7, 0x0b, 0xa7, 0x0e, 0x10, 0x39, 0xc1, 0x06, 0x89, 0x68, 0x99, 0x30, 0xb7, 0xce, 0x3f, 0x6f,
    -	0xda, 0x91, 0xdb, 0x98, 0x75, 0xbd, 0x28, 0x8c, 0x82, 0xd9, 0xb2, 0x17, 0x5d, 0x0f, 0xf8, 0x33,
    -	0x55, 0x0b, 0xc0, 0xa8, 0x68, 0x61, 0x8d, 0xae, 0x0c, 0x91, 0xc2, 0xda, 0xe8, 0x37, 0x0d, 0x61,
    -	0x56, 0x45, 0x39, 0x56, 0x18, 0xf6, 0xcb, 0xec, 0xf6, 0x61, 0x63, 0x7a, 0xb0, 0xc0, 0x82, 0xff,
    -	0x34, 0xaa, 0x66, 0x83, 0xa9, 0x84, 0x17, 0xf5, 0xf0, 0x85, 0x9d, 0x0f, 0x7b, 0xda, 0xb0, 0xee,
    -	0xcf, 0x1a, 0xc7, 0x38, 0x44, 0x9f, 0x4c, 0x19, 0x37, 0x3d, 0xd7, 0xe5, 0xd6, 0x38, 0x80, 0x39,
    -	0x13, 0xcb, 0x67, 0xc7, 0xb2, 0x7d, 0x95, 0x2b, 0x62, 0x5f, 0x68, 0xf9, 0xec, 0x04, 0x00, 0xc7,
    -	0x38, 0x94, 0x61, 0x53, 0x7f, 0xc2, 0x69, 0x14, 0x87, 0x3d, 0x57, 0xd8, 0x21, 0xd6, 0x30, 0xd0,
    -	0x05, 0x21, 0xb4, 0xe0, 0xba, 0x87, 0x47, 0x12, 0x42, 0x0b, 0x39, 0x5c, 0x9a, 0xa4, 0xe9, 0x22,
    -	0x8c, 0x90, 0xbb, 0x11, 0x09, 0x3c, 0xa7, 0x41, 0x5b, 0xe8, 0x8f, 0xa3, 0xeb, 0x2e, 0xc5, 0xc5,
    -	0x58, 0xc7, 0x41, 0x6b, 0x30, 0x11, 0x72, 0x59, 0x9e, 0x4a, 0xb6, 0xc1, 0x65, 0xa2, 0x4f, 0x2b,
    -	0x87, 0x7d, 0x13, 0xbc, 0xcf, 0x8a, 0xf8, 0xe9, 0x24, 0xc3, 0x98, 0x24, 0x49, 0xa0, 0xd7, 0x61,
    -	0xbc, 0xe1, 0x3b, 0xf5, 0x79, 0xa7, 0xe1, 0x78, 0x35, 0x36, 0x3e, 0x43, 0x46, 0x2c, 0xcb, 0xf1,
    -	0x6b, 0x06, 0x14, 0x27, 0xb0, 0x29, 0x83, 0xa8, 0x97, 0x88, 0x04, 0x31, 0x8e, 0xb7, 0x41, 0xc2,
    -	0xe9, 0x61, 0xf6, 0x55, 0x8c, 0x41, 0xbc, 0x96, 0x83, 0x83, 0x73, 0x6b, 0xa3, 0x4b, 0x30, 0x2a,
    -	0x3f, 0x5f, 0x8b, 0xfa, 0x13, 0x3b, 0x34, 0x69, 0x30, 0x6c, 0x60, 0xa2, 0x10, 0x8e, 0xc9, 0xff,
    -	0x6b, 0x81, 0xb3, 0xbe, 0xee, 0xd6, 0x44, 0x28, 0x0c, 0xee, 0xfc, 0xfd, 0x31, 0xe9, 0x69, 0xba,
    -	0x94, 0x85, 0xb4, 0xbf, 0x5b, 0x3a, 0x25, 0x46, 0x2d, 0x13, 0x8e, 0xb3, 0x69, 0xa3, 0x15, 0x38,
    -	0xc2, 0x6d, 0x60, 0x16, 0x36, 0x49, 0x6d, 0x4b, 0x6e, 0x38, 0xc6, 0x35, 0x6a, 0x8e, 0x3f, 0x57,
    -	0xd2, 0x28, 0x38, 0xab, 0x1e, 0x7a, 0x07, 0xa6, 0x5b, 0xed, 0xdb, 0x0d, 0x37, 0xdc, 0x5c, 0xf5,
    -	0x23, 0x66, 0x42, 0x36, 0x57, 0xaf, 0x07, 0x24, 0xe4, 0xbe, 0xc1, 0xec, 0xea, 0x95, 0x91, 0x9a,
    -	0x2a, 0x39, 0x78, 0x38, 0x97, 0x02, 0xba, 0x07, 0xc7, 0x12, 0x0b, 0x41, 0x84, 0x5c, 0x19, 0xcf,
    -	0x4f, 0xb5, 0x55, 0xcd, 0xaa, 0x20, 0xa2, 0x17, 0x65, 0x81, 0x70, 0x76, 0x13, 0xe8, 0x15, 0x00,
    -	0xb7, 0xb5, 0xec, 0x34, 0xdd, 0x06, 0x7d, 0x8e, 0x1e, 0x61, 0x6b, 0x84, 0x3e, 0x4d, 0xa0, 0x5c,
    -	0x91, 0xa5, 0xf4, 0x6c, 0x16, 0xff, 0x76, 0xb0, 0x86, 0x8d, 0xae, 0xc1, 0xb8, 0xf8, 0xb7, 0x23,
    -	0xa6, 0x74, 0x4a, 0x65, 0x65, 0x1d, 0x97, 0x35, 0xd4, 0x3c, 0x26, 0x4a, 0x70, 0xa2, 0x2e, 0xda,
    -	0x80, 0xd3, 0x32, 0x25, 0xac, 0xbe, 0x3e, 0xe5, 0x1c, 0x84, 0x2c, 0xbf, 0xd5, 0x10, 0xf7, 0x29,
    -	0x9a, 0xeb, 0x84, 0x88, 0x3b, 0xd3, 0xa1, 0xf7, 0xba, 0xbe, 0xcc, 0xb9, 0xc7, 0xf8, 0xb1, 0x38,
    -	0x22, 0xe8, 0xb5, 0x24, 0x10, 0xa7, 0xf1, 0x91, 0x0f, 0xc7, 0x5c, 0x2f, 0x6b, 0x55, 0x1f, 0x67,
    -	0x84, 0x3e, 0xca, 0x9d, 0xe5, 0x3b, 0xaf, 0xe8, 0x4c, 0x38, 0xce, 0xa6, 0x8b, 0xca, 0x70, 0x24,
    -	0xe2, 0x05, 0x8b, 0x6e, 0xc8, 0xd3, 0xe7, 0xd0, 0x67, 0xdf, 0x09, 0xd6, 0xdc, 0x09, 0xba, 0x9a,
    -	0xd7, 0xd2, 0x60, 0x9c, 0x55, 0xe7, 0xbd, 0x19, 0x80, 0x7e, 0xc3, 0xa2, 0xb5, 0x35, 0x46, 0x1f,
    -	0x7d, 0x06, 0x46, 0xf5, 0xf1, 0x11, 0x4c, 0xcb, 0xb9, 0x6c, 0x3e, 0x58, 0x3b, 0x5e, 0xf8, 0x33,
    -	0x41, 0x1d, 0x21, 0x3a, 0x0c, 0x1b, 0x14, 0x51, 0x2d, 0x23, 0xc8, 0xc5, 0x85, 0xde, 0x98, 0xa2,
    -	0xde, 0xed, 0x1f, 0x09, 0x64, 0xef, 0x1c, 0x74, 0x0d, 0x86, 0x6a, 0x0d, 0x97, 0x78, 0x51, 0xb9,
    -	0xd2, 0x29, 0x50, 0xeb, 0x82, 0xc0, 0x11, 0x5b, 0x51, 0x64, 0xbd, 0xe2, 0x65, 0x58, 0x51, 0xb0,
    -	0x2f, 0xc1, 0x48, 0xb5, 0x41, 0x48, 0x8b, 0xfb, 0x71, 0xa1, 0xa7, 0xd8, 0xc3, 0x84, 0xb1, 0x96,
    -	0x16, 0x63, 0x2d, 0xf5, 0x37, 0x07, 0x63, 0x2a, 0x25, 0xdc, 0xfe, 0xb3, 0x02, 0x94, 0xba, 0x24,
    -	0x5f, 0x4b, 0xe8, 0xdb, 0xac, 0x9e, 0xf4, 0x6d, 0x73, 0x30, 0x11, 0xff, 0xd3, 0x45, 0x79, 0xca,
    -	0x18, 0xfa, 0xa6, 0x09, 0xc6, 0x49, 0xfc, 0x9e, 0xfd, 0x5a, 0x74, 0x95, 0x5d, 0x5f, 0x57, 0xcf,
    -	0x2c, 0x43, 0x55, 0xdf, 0xdf, 0xfb, 0xdb, 0x3b, 0x57, 0xed, 0x6a, 0x7f, 0xbd, 0x00, 0xc7, 0xd4,
    -	0x10, 0x7e, 0xef, 0x0e, 0xdc, 0x8d, 0xf4, 0xc0, 0x3d, 0x00, 0xa5, 0xb5, 0x7d, 0x1d, 0x06, 0x78,
    -	0xf4, 0xd8, 0x1e, 0x78, 0xfe, 0xc7, 0xcc, 0x40, 0xfe, 0x8a, 0xcd, 0x34, 0x82, 0xf9, 0xff, 0x98,
    -	0x05, 0x13, 0x09, 0x07, 0x49, 0x84, 0x35, 0x2f, 0xfa, 0xfb, 0xe1, 0xcb, 0xb3, 0x38, 0xfe, 0xb3,
    -	0xd0, 0xb7, 0xe9, 0x2b, 0x23, 0x65, 0x85, 0x71, 0xc5, 0x0f, 0x23, 0xcc, 0x20, 0xf6, 0xdf, 0x59,
    -	0xd0, 0xbf, 0xe6, 0xb8, 0x5e, 0x24, 0xb5, 0x1f, 0x56, 0x8e, 0xf6, 0xa3, 0x97, 0xef, 0x42, 0x2f,
    -	0xc1, 0x00, 0x59, 0x5f, 0x27, 0xb5, 0x48, 0xcc, 0xaa, 0x8c, 0xa6, 0x31, 0xb0, 0xc4, 0x4a, 0x29,
    -	0x13, 0xca, 0x1a, 0xe3, 0x7f, 0xb1, 0x40, 0x46, 0xb7, 0x60, 0x38, 0x72, 0x9b, 0x64, 0xae, 0x5e,
    -	0x17, 0x36, 0x01, 0xf7, 0x11, 0x02, 0x66, 0x4d, 0x12, 0xc0, 0x31, 0x2d, 0xfb, 0xcb, 0x05, 0x80,
    -	0x38, 0x5a, 0x5d, 0xb7, 0x4f, 0x9c, 0x4f, 0x69, 0x8b, 0xcf, 0x65, 0x68, 0x8b, 0x51, 0x4c, 0x30,
    -	0x43, 0x55, 0xac, 0x86, 0xa9, 0xd8, 0xd3, 0x30, 0xf5, 0x1d, 0x64, 0x98, 0x16, 0x60, 0x2a, 0x8e,
    -	0xb6, 0x67, 0x06, 0x1b, 0x65, 0xf7, 0xf7, 0x5a, 0x12, 0x88, 0xd3, 0xf8, 0x36, 0x81, 0xb3, 0x2a,
    -	0xe8, 0x98, 0xb8, 0x0b, 0x99, 0x2b, 0x81, 0xae, 0x7d, 0xef, 0x32, 0x4e, 0xb1, 0x3a, 0xbc, 0x90,
    -	0xab, 0x0e, 0xff, 0x45, 0x0b, 0x8e, 0x26, 0xdb, 0x61, 0x7e, 0xf7, 0x5f, 0xb4, 0xe0, 0x58, 0x9c,
    -	0x7b, 0x28, 0x6d, 0x82, 0xf0, 0x62, 0xc7, 0x40, 0x6a, 0x39, 0x3d, 0x8e, 0xc3, 0xb6, 0xac, 0x64,
    -	0x91, 0xc6, 0xd9, 0x2d, 0xda, 0xff, 0x5f, 0x1f, 0x4c, 0xe7, 0x45, 0x60, 0x63, 0x9e, 0x46, 0xce,
    -	0xdd, 0xea, 0x16, 0xb9, 0x23, 0xfc, 0x39, 0x62, 0x4f, 0x23, 0x5e, 0x8c, 0x25, 0x3c, 0x99, 0x6e,
    -	0xaa, 0xd0, 0x63, 0xba, 0xa9, 0x4d, 0x98, 0xba, 0xb3, 0x49, 0xbc, 0x1b, 0x5e, 0xe8, 0x44, 0x6e,
    -	0xb8, 0xee, 0x32, 0x05, 0x3a, 0x5f, 0x37, 0xaf, 0x48, 0xaf, 0x8b, 0x5b, 0x49, 0x84, 0xfd, 0xdd,
    -	0xd2, 0x69, 0xa3, 0x20, 0xee, 0x32, 0x3f, 0x48, 0x70, 0x9a, 0x68, 0x3a, 0x5b, 0x57, 0xdf, 0x43,
    -	0xce, 0xd6, 0xd5, 0x74, 0x85, 0xd9, 0x8d, 0x74, 0x23, 0x61, 0xcf, 0xd6, 0x15, 0x55, 0x8a, 0x35,
    -	0x0c, 0xf4, 0x29, 0x40, 0x7a, 0xba, 0x45, 0x23, 0x00, 0xee, 0x73, 0x7b, 0xbb, 0x25, 0xb4, 0x9a,
    -	0x82, 0xee, 0xef, 0x96, 0x8e, 0xd0, 0xd2, 0xb2, 0x47, 0x9f, 0xbf, 0x71, 0xd4, 0xc0, 0x0c, 0x42,
    -	0xe8, 0x16, 0x4c, 0xd2, 0x52, 0xb6, 0xa3, 0x64, 0x74, 0x5d, 0xfe, 0x64, 0x7d, 0x66, 0x6f, 0xb7,
    -	0x34, 0xb9, 0x9a, 0x80, 0xe5, 0x91, 0x4e, 0x11, 0xc9, 0x48, 0xda, 0x35, 0xd4, 0x6b, 0xd2, 0x2e,
    -	0xfb, 0x8b, 0x16, 0x9c, 0xa4, 0x17, 0x5c, 0xfd, 0x5a, 0x8e, 0x16, 0xdd, 0x69, 0xb9, 0x5c, 0x4f,
    -	0x23, 0xae, 0x1a, 0x26, 0xab, 0xab, 0x94, 0xb9, 0x96, 0x46, 0x41, 0xe9, 0x09, 0xbf, 0xe5, 0x7a,
    -	0xf5, 0xe4, 0x09, 0x7f, 0xd5, 0xf5, 0xea, 0x98, 0x41, 0xd4, 0x95, 0x55, 0xcc, 0x8d, 0xd6, 0xff,
    -	0x35, 0xba, 0x57, 0x69, 0x5f, 0xbe, 0xa3, 0xdd, 0x40, 0xcf, 0xe8, 0x3a, 0x55, 0x61, 0x3e, 0x99,
    -	0xab, 0x4f, 0xfd, 0x82, 0x05, 0xc2, 0xfb, 0xbd, 0x87, 0x3b, 0xf9, 0x6d, 0x18, 0xdd, 0x4e, 0xa7,
    -	0xa2, 0x3d, 0x9b, 0x1f, 0x0e, 0x40, 0x24, 0xa0, 0x55, 0x2c, 0xba, 0x91, 0x76, 0xd6, 0xa0, 0x65,
    -	0xd7, 0x41, 0x40, 0x17, 0x09, 0xd3, 0x6a, 0x74, 0xef, 0xcd, 0xf3, 0x00, 0x75, 0x86, 0xcb, 0xf2,
    -	0xd3, 0x17, 0x4c, 0x8e, 0x6b, 0x51, 0x41, 0xb0, 0x86, 0x65, 0xff, 0x7a, 0x11, 0x46, 0x64, 0xea,
    -	0xd3, 0xb6, 0xd7, 0x8b, 0xec, 0x51, 0x67, 0x9c, 0x0a, 0x5d, 0x19, 0xa7, 0x77, 0x60, 0x2a, 0x20,
    -	0xb5, 0x76, 0x10, 0xba, 0xdb, 0x44, 0x82, 0xc5, 0x26, 0x99, 0xe5, 0xc9, 0x22, 0x12, 0xc0, 0x7d,
    -	0x16, 0x22, 0x2b, 0x51, 0xc8, 0x94, 0xc6, 0x69, 0x42, 0xe8, 0x02, 0x0c, 0x33, 0xd1, 0x7b, 0x25,
    -	0x16, 0x08, 0x2b, 0xc1, 0xd7, 0x8a, 0x04, 0xe0, 0x18, 0x87, 0x3d, 0x0e, 0xda, 0xb7, 0x19, 0x7a,
    -	0xc2, 0x13, 0xbc, 0xca, 0x8b, 0xb1, 0x84, 0xa3, 0x8f, 0xc3, 0x24, 0xaf, 0x17, 0xf8, 0x2d, 0x67,
    -	0x83, 0xab, 0x04, 0xfb, 0x55, 0x78, 0x9d, 0xc9, 0x95, 0x04, 0x6c, 0x7f, 0xb7, 0x74, 0x34, 0x59,
    -	0xc6, 0xba, 0x9d, 0xa2, 0xc2, 0x2c, 0xff, 0x78, 0x23, 0xf4, 0xce, 0x48, 0x19, 0x0c, 0xc6, 0x20,
    -	0xac, 0xe3, 0xd9, 0xff, 0x6a, 0xc1, 0x94, 0x36, 0x55, 0x3d, 0xe7, 0xeb, 0x30, 0x06, 0xa9, 0xd0,
    -	0xc3, 0x20, 0x1d, 0x2c, 0xda, 0x43, 0xe6, 0x0c, 0xf7, 0x3d, 0xa0, 0x19, 0xb6, 0x3f, 0x03, 0x28,
    -	0x9d, 0x57, 0x17, 0xbd, 0xc9, 0x0d, 0xf9, 0xdd, 0x80, 0xd4, 0x3b, 0x29, 0xfc, 0xf5, 0xc8, 0x39,
    -	0xd2, 0x73, 0x95, 0xd7, 0xc2, 0xaa, 0xbe, 0xfd, 0xe3, 0x7d, 0x30, 0x99, 0x8c, 0xd5, 0x81, 0xae,
    -	0xc0, 0x00, 0xe7, 0xd2, 0x05, 0xf9, 0x0e, 0xf6, 0x64, 0x5a, 0x84, 0x0f, 0x9e, 0x4b, 0x87, 0x73,
    -	0xf7, 0xa2, 0x3e, 0x7a, 0x07, 0x46, 0xea, 0xfe, 0x1d, 0xef, 0x8e, 0x13, 0xd4, 0xe7, 0x2a, 0x65,
    -	0x71, 0x42, 0x64, 0x0a, 0xa0, 0x16, 0x63, 0x34, 0x3d, 0x6a, 0x08, 0xb3, 0x9d, 0x88, 0x41, 0x58,
    -	0x27, 0x87, 0xd6, 0x58, 0x7a, 0xa7, 0x75, 0x77, 0x63, 0xc5, 0x69, 0x75, 0xf2, 0xea, 0x5a, 0x90,
    -	0x48, 0x1a, 0xe5, 0x31, 0x91, 0x03, 0x8a, 0x03, 0x70, 0x4c, 0x08, 0x7d, 0x0e, 0x8e, 0x84, 0x39,
    -	0x2a, 0xb1, 0xbc, 0x34, 0xeb, 0x9d, 0xb4, 0x44, 0x5c, 0x98, 0x92, 0xa5, 0x3c, 0xcb, 0x6a, 0x06,
    -	0xdd, 0x05, 0x24, 0x44, 0xcf, 0x6b, 0x41, 0x3b, 0x8c, 0xe6, 0xdb, 0x5e, 0xbd, 0x21, 0xd3, 0x3f,
    -	0x7d, 0x38, 0x5b, 0x4e, 0x90, 0xc4, 0xd6, 0xda, 0x66, 0xe1, 0x85, 0xd3, 0x18, 0x38, 0xa3, 0x0d,
    -	0xfb, 0x0b, 0x7d, 0x30, 0x23, 0x13, 0x59, 0x67, 0x78, 0xaf, 0x7c, 0xde, 0x4a, 0xb8, 0xaf, 0xbc,
    -	0x92, 0x7f, 0xd0, 0x3f, 0x34, 0x27, 0x96, 0x2f, 0xa5, 0x9d, 0x58, 0x5e, 0x3b, 0x60, 0x37, 0x1e,
    -	0x98, 0x2b, 0xcb, 0xf7, 0xac, 0xff, 0xc9, 0xde, 0x51, 0x30, 0xae, 0x66, 0x84, 0x79, 0xec, 0xf6,
    -	0x8a, 0x54, 0x1d, 0xe5, 0x3c, 0xff, 0xaf, 0x08, 0x1c, 0xe3, 0xb2, 0x1f, 0x95, 0x11, 0xde, 0xd9,
    -	0x39, 0xab, 0xe8, 0x50, 0x9a, 0xa4, 0xd9, 0x8a, 0x76, 0x16, 0xdd, 0x40, 0xf4, 0x38, 0x93, 0xe6,
    -	0x92, 0xc0, 0x49, 0xd3, 0x94, 0x10, 0xac, 0xe8, 0xa0, 0x6d, 0x98, 0xda, 0x60, 0x11, 0x9f, 0xb4,
    -	0x9c, 0xd2, 0xe2, 0x5c, 0xc8, 0xdc, 0xb7, 0x97, 0x17, 0x96, 0xf2, 0x13, 0x50, 0xf3, 0xc7, 0x5f,
    -	0x0a, 0x05, 0xa7, 0x9b, 0xa0, 0x5b, 0xe3, 0xa8, 0x73, 0x27, 0x5c, 0x6a, 0x38, 0x61, 0xe4, 0xd6,
    -	0xe6, 0x1b, 0x7e, 0x6d, 0xab, 0x1a, 0xf9, 0x81, 0x4c, 0x16, 0x99, 0xf9, 0xf6, 0x9a, 0xbb, 0x55,
    -	0x4d, 0xe1, 0x1b, 0xcd, 0x4f, 0xef, 0xed, 0x96, 0x8e, 0x66, 0x61, 0xe1, 0xcc, 0xb6, 0xd0, 0x2a,
    -	0x0c, 0x6e, 0xb8, 0x11, 0x26, 0x2d, 0x5f, 0x9c, 0x16, 0x99, 0x47, 0xe1, 0x65, 0x8e, 0x62, 0xb4,
    -	0xc4, 0x22, 0x52, 0x09, 0x00, 0x96, 0x44, 0xd0, 0x9b, 0xea, 0x12, 0x18, 0xc8, 0x17, 0xc0, 0xa6,
    -	0x6d, 0xef, 0x32, 0xaf, 0x81, 0xd7, 0xa1, 0xe8, 0xad, 0x87, 0x9d, 0x62, 0xf1, 0xac, 0x2e, 0x1b,
    -	0xf2, 0xb3, 0xf9, 0x41, 0xfa, 0x34, 0x5e, 0x5d, 0xae, 0x62, 0x5a, 0x91, 0xb9, 0xbd, 0x86, 0xb5,
    -	0xd0, 0x15, 0x89, 0xa7, 0x32, 0xbd, 0x80, 0xcb, 0xd5, 0x85, 0x6a, 0xd9, 0xa0, 0xc1, 0xa2, 0x1a,
    -	0xb2, 0x62, 0xcc, 0xab, 0xa3, 0x9b, 0x30, 0xbc, 0xc1, 0x0f, 0xbe, 0xf5, 0x50, 0x24, 0xb3, 0xcf,
    -	0xbc, 0x8c, 0x2e, 0x4b, 0x24, 0x83, 0x1e, 0xbb, 0x32, 0x14, 0x08, 0xc7, 0xa4, 0xd0, 0x17, 0x2c,
    -	0x38, 0xd6, 0x4a, 0x48, 0x50, 0x99, 0xb3, 0x9a, 0x30, 0x53, 0xcb, 0x74, 0x00, 0xa8, 0x64, 0x55,
    -	0x30, 0x1a, 0x64, 0xea, 0x97, 0x4c, 0x34, 0x9c, 0xdd, 0x1c, 0x1d, 0xe8, 0xe0, 0x76, 0xbd, 0x53,
    -	0xae, 0xa2, 0x44, 0x60, 0x22, 0x3e, 0xd0, 0x78, 0x7e, 0x11, 0xd3, 0x8a, 0x68, 0x0d, 0x60, 0xbd,
    -	0x41, 0x44, 0xc4, 0x47, 0x61, 0x14, 0x95, 0x79, 0xfb, 0x2f, 0x2b, 0x2c, 0x41, 0x87, 0xbd, 0x44,
    -	0xe3, 0x52, 0xac, 0xd1, 0xa1, 0x4b, 0xa9, 0xe6, 0x7a, 0x75, 0x12, 0x30, 0xe5, 0x56, 0xce, 0x52,
    -	0x5a, 0x60, 0x18, 0xe9, 0xa5, 0xc4, 0xcb, 0xb1, 0xa0, 0xc0, 0x68, 0x91, 0xd6, 0xe6, 0x7a, 0xd8,
    -	0x29, 0x2b, 0xc6, 0x02, 0x69, 0x6d, 0x26, 0x16, 0x14, 0xa7, 0xc5, 0xca, 0xb1, 0xa0, 0x40, 0xb7,
    -	0xcc, 0x3a, 0xdd, 0x40, 0x24, 0x98, 0x9e, 0xc8, 0xdf, 0x32, 0xcb, 0x1c, 0x25, 0xbd, 0x65, 0x04,
    -	0x00, 0x4b, 0x22, 0xe8, 0xd3, 0x26, 0xb7, 0x33, 0xc9, 0x68, 0x3e, 0xd3, 0x85, 0xdb, 0x31, 0xe8,
    -	0x76, 0xe6, 0x77, 0x5e, 0x81, 0xc2, 0x7a, 0x8d, 0x29, 0xc5, 0x72, 0x74, 0x06, 0xcb, 0x0b, 0x06,
    -	0x35, 0x16, 0x65, 0x7e, 0x79, 0x01, 0x17, 0xd6, 0x6b, 0x74, 0xe9, 0x3b, 0xf7, 0xda, 0x01, 0x59,
    -	0x76, 0x1b, 0x44, 0x64, 0xc8, 0xc8, 0x5c, 0xfa, 0x73, 0x12, 0x29, 0xbd, 0xf4, 0x15, 0x08, 0xc7,
    -	0xa4, 0x28, 0xdd, 0x98, 0x07, 0x3b, 0x92, 0x4f, 0x57, 0xb1, 0x5a, 0x69, 0xba, 0x99, 0x5c, 0xd8,
    -	0x16, 0x8c, 0x6d, 0x87, 0xad, 0x4d, 0x22, 0x4f, 0x45, 0xa6, 0xae, 0xcb, 0x89, 0x54, 0x71, 0x53,
    -	0x20, 0xba, 0x41, 0xd4, 0x76, 0x1a, 0xa9, 0x83, 0x9c, 0x89, 0x56, 0x6e, 0xea, 0xc4, 0xb0, 0x49,
    -	0x9b, 0x2e, 0x84, 0x77, 0x79, 0x38, 0x39, 0xa6, 0xb8, 0xcb, 0x59, 0x08, 0x19, 0x11, 0xe7, 0xf8,
    -	0x42, 0x10, 0x00, 0x2c, 0x89, 0xa8, 0xc1, 0x66, 0x17, 0xd0, 0xf1, 0x2e, 0x83, 0x9d, 0xea, 0x6f,
    -	0x3c, 0xd8, 0xec, 0xc2, 0x89, 0x49, 0xb1, 0x8b, 0xa6, 0xb5, 0xe9, 0x47, 0xbe, 0x97, 0xb8, 0xe4,
    -	0x4e, 0xe4, 0x5f, 0x34, 0x95, 0x0c, 0xfc, 0xf4, 0x45, 0x93, 0x85, 0x85, 0x33, 0xdb, 0xa2, 0x1f,
    -	0xd7, 0x92, 0x91, 0x01, 0x45, 0x16, 0x8f, 0xa7, 0x72, 0x02, 0x6b, 0xa6, 0xc3, 0x07, 0xf2, 0x8f,
    -	0x53, 0x20, 0x1c, 0x93, 0x42, 0x75, 0x18, 0x6f, 0x19, 0x11, 0x67, 0x59, 0x36, 0x92, 0x1c, 0xbe,
    -	0x20, 0x2b, 0x36, 0x2d, 0x97, 0x10, 0x99, 0x10, 0x9c, 0xa0, 0xc9, 0x2c, 0xf7, 0xb8, 0xab, 0x1f,
    -	0x4b, 0x56, 0x92, 0x33, 0xd5, 0x19, 0xde, 0x80, 0x7c, 0xaa, 0x05, 0x00, 0x4b, 0x22, 0x74, 0x34,
    -	0x84, 0x83, 0x9a, 0x1f, 0xb2, 0x9c, 0x3f, 0x79, 0x0a, 0xf6, 0x2c, 0x35, 0x91, 0x0c, 0xb3, 0x2e,
    -	0x40, 0x38, 0x26, 0x45, 0x4f, 0x72, 0x7a, 0xe1, 0x9d, 0xca, 0x3f, 0xc9, 0x93, 0xd7, 0x1d, 0x3b,
    -	0xc9, 0xe9, 0x65, 0x57, 0x14, 0x57, 0x9d, 0x8a, 0x0a, 0xce, 0xf2, 0x95, 0xe4, 0xf4, 0x4b, 0x85,
    -	0x15, 0x4f, 0xf7, 0x4b, 0x81, 0x70, 0x4c, 0x8a, 0x5d, 0xc5, 0x2c, 0x34, 0xdd, 0x99, 0x0e, 0x57,
    -	0x31, 0x45, 0xc8, 0xb8, 0x8a, 0xb5, 0xd0, 0x75, 0xf6, 0x8f, 0x17, 0xe0, 0x4c, 0xe7, 0x7d, 0x1b,
    -	0xeb, 0xd0, 0x2a, 0xb1, 0xcd, 0x52, 0x42, 0x87, 0xc6, 0x25, 0x3a, 0x31, 0x56, 0xcf, 0x01, 0x87,
    -	0x2f, 0xc3, 0x94, 0x72, 0x47, 0x6c, 0xb8, 0xb5, 0x1d, 0x2d, 0x49, 0xa9, 0x0a, 0xcd, 0x53, 0x4d,
    -	0x22, 0xe0, 0x74, 0x1d, 0x34, 0x07, 0x13, 0x46, 0x61, 0x79, 0x51, 0x3c, 0xff, 0xe3, 0x4c, 0x1b,
    -	0x26, 0x18, 0x27, 0xf1, 0xed, 0xdf, 0xb0, 0xe0, 0x44, 0x4e, 0xfe, 0xfb, 0x9e, 0xe3, 0xe9, 0xae,
    -	0xc3, 0x44, 0xcb, 0xac, 0xda, 0x25, 0x04, 0xb8, 0x91, 0x65, 0x5f, 0xf5, 0x35, 0x01, 0xc0, 0x49,
    -	0xa2, 0xf6, 0xaf, 0x15, 0xe0, 0x74, 0x47, 0xfb, 0x7a, 0x84, 0xe1, 0xf8, 0x46, 0x33, 0x74, 0x16,
    -	0x02, 0x52, 0x27, 0x5e, 0xe4, 0x3a, 0x8d, 0x6a, 0x8b, 0xd4, 0x34, 0x2d, 0x28, 0x33, 0x54, 0xbf,
    -	0xbc, 0x52, 0x9d, 0x4b, 0x63, 0xe0, 0x9c, 0x9a, 0x68, 0x19, 0x50, 0x1a, 0x22, 0x66, 0x98, 0x3d,
    -	0x71, 0xd3, 0xf4, 0x70, 0x46, 0x0d, 0xf4, 0x32, 0x8c, 0x29, 0xbb, 0x7d, 0x6d, 0xc6, 0xd9, 0x05,
    -	0x81, 0x75, 0x00, 0x36, 0xf1, 0xd0, 0x45, 0x9e, 0x82, 0x49, 0x24, 0xeb, 0x12, 0x2a, 0xd3, 0x09,
    -	0x99, 0x5f, 0x49, 0x14, 0x63, 0x1d, 0x67, 0xfe, 0xd2, 0x5f, 0x7c, 0xeb, 0xcc, 0x87, 0xfe, 0xea,
    -	0x5b, 0x67, 0x3e, 0xf4, 0xb7, 0xdf, 0x3a, 0xf3, 0xa1, 0x1f, 0xda, 0x3b, 0x63, 0xfd, 0xc5, 0xde,
    -	0x19, 0xeb, 0xaf, 0xf6, 0xce, 0x58, 0x7f, 0xbb, 0x77, 0xc6, 0xfa, 0xdf, 0xf7, 0xce, 0x58, 0x5f,
    -	0xfe, 0x3f, 0xce, 0x7c, 0xe8, 0x6d, 0x14, 0x47, 0xa8, 0xbe, 0x40, 0x67, 0xe7, 0xc2, 0xf6, 0xc5,
    -	0xff, 0x10, 0x00, 0x00, 0xff, 0xff, 0xf5, 0xf1, 0x8c, 0x4c, 0x2d, 0x26, 0x01, 0x00,
    +	// 16665 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x5b, 0x90, 0x5c, 0x49,
    +	0x76, 0x18, 0xb6, 0xb7, 0xaa, 0x9f, 0xa7, 0xdf, 0x89, 0x57, 0xa1, 0x07, 0x40, 0x61, 0xee, 0xcc,
    +	0x60, 0x30, 0x3b, 0x33, 0x8d, 0xc5, 0x3c, 0x76, 0xb1, 0x33, 0xb3, 0xc3, 0xe9, 0x27, 0xd0, 0x03,
    +	0x74, 0xa3, 0x26, 0xab, 0x01, 0xec, 0x63, 0x76, 0xb5, 0x17, 0x55, 0xd9, 0xdd, 0x77, 0xbb, 0xea,
    +	0xde, 0x9a, 0x7b, 0x6f, 0x35, 0xd0, 0x30, 0x15, 0xa4, 0x56, 0xe6, 0x4a, 0x4b, 0xd2, 0x11, 0x1b,
    +	0x0a, 0x4b, 0x72, 0x90, 0x0a, 0x7e, 0xe8, 0x45, 0xd2, 0xb4, 0x64, 0x52, 0xa4, 0x45, 0x59, 0x14,
    +	0x29, 0xda, 0x96, 0x23, 0x68, 0x7f, 0xc8, 0x14, 0x23, 0xcc, 0x65, 0x58, 0xe1, 0x96, 0xd9, 0xb6,
    +	0x42, 0xc1, 0x0f, 0x53, 0x0a, 0xda, 0x1f, 0x76, 0x87, 0x6c, 0x2a, 0xf2, 0x79, 0x33, 0xef, 0xab,
    +	0xaa, 0x31, 0x40, 0xef, 0x70, 0x63, 0xfe, 0xaa, 0xf2, 0x9c, 0x3c, 0x99, 0x37, 0x1f, 0x27, 0x4f,
    +	0x9e, 0x73, 0xf2, 0x1c, 0xb0, 0x77, 0xae, 0x85, 0x73, 0xae, 0x7f, 0xc5, 0xe9, 0xb8, 0x57, 0x1a,
    +	0x7e, 0x40, 0xae, 0xec, 0x5e, 0xbd, 0xb2, 0x45, 0x3c, 0x12, 0x38, 0x11, 0x69, 0xce, 0x75, 0x02,
    +	0x3f, 0xf2, 0x11, 0xe2, 0x38, 0x73, 0x4e, 0xc7, 0x9d, 0xa3, 0x38, 0x73, 0xbb, 0x57, 0x67, 0x5f,
    +	0xdd, 0x72, 0xa3, 0xed, 0xee, 0xfd, 0xb9, 0x86, 0xdf, 0xbe, 0xb2, 0xe5, 0x6f, 0xf9, 0x57, 0x18,
    +	0xea, 0xfd, 0xee, 0x26, 0xfb, 0xc7, 0xfe, 0xb0, 0x5f, 0x9c, 0xc4, 0xec, 0x1b, 0x71, 0x33, 0x6d,
    +	0xa7, 0xb1, 0xed, 0x7a, 0x24, 0xd8, 0xbb, 0xd2, 0xd9, 0xd9, 0x62, 0xed, 0x06, 0x24, 0xf4, 0xbb,
    +	0x41, 0x83, 0x24, 0x1b, 0x2e, 0xac, 0x15, 0x5e, 0x69, 0x93, 0xc8, 0xc9, 0xe8, 0xee, 0xec, 0x95,
    +	0xbc, 0x5a, 0x41, 0xd7, 0x8b, 0xdc, 0x76, 0xba, 0x99, 0xcf, 0xf7, 0xaa, 0x10, 0x36, 0xb6, 0x49,
    +	0xdb, 0x49, 0xd5, 0x7b, 0x3d, 0xaf, 0x5e, 0x37, 0x72, 0x5b, 0x57, 0x5c, 0x2f, 0x0a, 0xa3, 0x20,
    +	0x59, 0xc9, 0xfe, 0xbe, 0x05, 0x17, 0xe7, 0xef, 0xd5, 0x97, 0x5b, 0x4e, 0x18, 0xb9, 0x8d, 0x85,
    +	0x96, 0xdf, 0xd8, 0xa9, 0x47, 0x7e, 0x40, 0xee, 0xfa, 0xad, 0x6e, 0x9b, 0xd4, 0xd9, 0x40, 0xa0,
    +	0x57, 0x60, 0x64, 0x97, 0xfd, 0x5f, 0x5d, 0xaa, 0x58, 0x17, 0xad, 0xcb, 0xa3, 0x0b, 0xd3, 0xbf,
    +	0xb3, 0x5f, 0xfd, 0xcc, 0xc1, 0x7e, 0x75, 0xe4, 0xae, 0x28, 0xc7, 0x0a, 0x03, 0x5d, 0x82, 0xa1,
    +	0xcd, 0x70, 0x63, 0xaf, 0x43, 0x2a, 0x25, 0x86, 0x3b, 0x29, 0x70, 0x87, 0x56, 0xea, 0xb4, 0x14,
    +	0x0b, 0x28, 0xba, 0x02, 0xa3, 0x1d, 0x27, 0x88, 0xdc, 0xc8, 0xf5, 0xbd, 0x4a, 0xf9, 0xa2, 0x75,
    +	0x79, 0x70, 0x61, 0x46, 0xa0, 0x8e, 0xd6, 0x24, 0x00, 0xc7, 0x38, 0xb4, 0x1b, 0x01, 0x71, 0x9a,
    +	0xb7, 0xbd, 0xd6, 0x5e, 0x65, 0xe0, 0xa2, 0x75, 0x79, 0x24, 0xee, 0x06, 0x16, 0xe5, 0x58, 0x61,
    +	0xd8, 0x3f, 0x53, 0x82, 0x91, 0xf9, 0xcd, 0x4d, 0xd7, 0x73, 0xa3, 0x3d, 0x74, 0x17, 0xc6, 0x3d,
    +	0xbf, 0x49, 0xe4, 0x7f, 0xf6, 0x15, 0x63, 0xaf, 0x5d, 0x9c, 0x4b, 0x2f, 0xa5, 0xb9, 0x75, 0x0d,
    +	0x6f, 0x61, 0xfa, 0x60, 0xbf, 0x3a, 0xae, 0x97, 0x60, 0x83, 0x0e, 0xc2, 0x30, 0xd6, 0xf1, 0x9b,
    +	0x8a, 0x6c, 0x89, 0x91, 0xad, 0x66, 0x91, 0xad, 0xc5, 0x68, 0x0b, 0x53, 0x07, 0xfb, 0xd5, 0x31,
    +	0xad, 0x00, 0xeb, 0x44, 0xd0, 0x7d, 0x98, 0xa2, 0x7f, 0xbd, 0xc8, 0x55, 0x74, 0xcb, 0x8c, 0xee,
    +	0x73, 0x79, 0x74, 0x35, 0xd4, 0x85, 0x13, 0x07, 0xfb, 0xd5, 0xa9, 0x44, 0x21, 0x4e, 0x12, 0xb4,
    +	0x7f, 0xda, 0x82, 0xa9, 0xf9, 0x4e, 0x67, 0x3e, 0x68, 0xfb, 0x41, 0x2d, 0xf0, 0x37, 0xdd, 0x16,
    +	0x41, 0x5f, 0x80, 0x81, 0x88, 0xce, 0x1a, 0x9f, 0xe1, 0xe7, 0xc4, 0xd0, 0x0e, 0xd0, 0xb9, 0x3a,
    +	0xdc, 0xaf, 0x9e, 0x48, 0xa0, 0xb3, 0xa9, 0x64, 0x15, 0xd0, 0x7b, 0x30, 0xdd, 0xf2, 0x1b, 0x4e,
    +	0x6b, 0xdb, 0x0f, 0x23, 0x01, 0x15, 0x53, 0x7f, 0xf2, 0x60, 0xbf, 0x3a, 0x7d, 0x2b, 0x01, 0xc3,
    +	0x29, 0x6c, 0xfb, 0x11, 0x4c, 0xce, 0x47, 0x91, 0xd3, 0xd8, 0x26, 0x4d, 0xbe, 0xa0, 0xd0, 0x1b,
    +	0x30, 0xe0, 0x39, 0x6d, 0xd9, 0x99, 0x8b, 0xb2, 0x33, 0xeb, 0x4e, 0x9b, 0x76, 0x66, 0xfa, 0x8e,
    +	0xe7, 0x7e, 0xd4, 0x15, 0x8b, 0x94, 0x96, 0x61, 0x86, 0x8d, 0x5e, 0x03, 0x68, 0x92, 0x5d, 0xb7,
    +	0x41, 0x6a, 0x4e, 0xb4, 0x2d, 0xfa, 0x80, 0x44, 0x5d, 0x58, 0x52, 0x10, 0xac, 0x61, 0xd9, 0x0f,
    +	0x61, 0x74, 0x7e, 0xd7, 0x77, 0x9b, 0x35, 0xbf, 0x19, 0xa2, 0x1d, 0x98, 0xea, 0x04, 0x64, 0x93,
    +	0x04, 0xaa, 0xa8, 0x62, 0x5d, 0x2c, 0x5f, 0x1e, 0x7b, 0xed, 0x72, 0xe6, 0xd8, 0x9b, 0xa8, 0xcb,
    +	0x5e, 0x14, 0xec, 0x2d, 0x9c, 0x11, 0xed, 0x4d, 0x25, 0xa0, 0x38, 0x49, 0xd9, 0xfe, 0x67, 0x25,
    +	0x38, 0x35, 0xff, 0xa8, 0x1b, 0x90, 0x25, 0x37, 0xdc, 0x49, 0x6e, 0xb8, 0xa6, 0x1b, 0xee, 0xac,
    +	0xc7, 0x23, 0xa0, 0x56, 0xfa, 0x92, 0x28, 0xc7, 0x0a, 0x03, 0xbd, 0x0a, 0xc3, 0xf4, 0xf7, 0x1d,
    +	0xbc, 0x2a, 0x3e, 0xf9, 0x84, 0x40, 0x1e, 0x5b, 0x72, 0x22, 0x67, 0x89, 0x83, 0xb0, 0xc4, 0x41,
    +	0x6b, 0x30, 0xd6, 0x60, 0xfc, 0x61, 0x6b, 0xcd, 0x6f, 0x12, 0xb6, 0xb6, 0x46, 0x17, 0x5e, 0xa6,
    +	0xe8, 0x8b, 0x71, 0xf1, 0xe1, 0x7e, 0xb5, 0xc2, 0xfb, 0x26, 0x48, 0x68, 0x30, 0xac, 0xd7, 0x47,
    +	0xb6, 0xda, 0xee, 0x03, 0x8c, 0x12, 0x64, 0x6c, 0xf5, 0xcb, 0xda, 0xce, 0x1d, 0x64, 0x3b, 0x77,
    +	0x3c, 0x7b, 0xd7, 0xa2, 0xab, 0x30, 0xb0, 0xe3, 0x7a, 0xcd, 0xca, 0x10, 0xa3, 0x75, 0x9e, 0xce,
    +	0xf9, 0x4d, 0xd7, 0x6b, 0x1e, 0xee, 0x57, 0x67, 0x8c, 0xee, 0xd0, 0x42, 0xcc, 0x50, 0xed, 0xff,
    +	0xcb, 0x82, 0x2a, 0x83, 0xad, 0xb8, 0x2d, 0x52, 0x23, 0x41, 0xe8, 0x86, 0x11, 0xf1, 0x22, 0x63,
    +	0x40, 0x5f, 0x03, 0x08, 0x49, 0x23, 0x20, 0x91, 0x36, 0xa4, 0x6a, 0x61, 0xd4, 0x15, 0x04, 0x6b,
    +	0x58, 0x94, 0x3f, 0x85, 0xdb, 0x4e, 0xc0, 0xd6, 0x97, 0x18, 0x58, 0xc5, 0x9f, 0xea, 0x12, 0x80,
    +	0x63, 0x1c, 0x83, 0x3f, 0x95, 0x7b, 0xf1, 0x27, 0xf4, 0x25, 0x98, 0x8a, 0x1b, 0x0b, 0x3b, 0x4e,
    +	0x43, 0x0e, 0x20, 0xdb, 0xc1, 0x75, 0x13, 0x84, 0x93, 0xb8, 0xf6, 0x7f, 0x6e, 0x89, 0xc5, 0x43,
    +	0xbf, 0xfa, 0x13, 0xfe, 0xad, 0xf6, 0x3f, 0xb2, 0x60, 0x78, 0xc1, 0xf5, 0x9a, 0xae, 0xb7, 0x85,
    +	0xbe, 0x09, 0x23, 0xf4, 0xa8, 0x6c, 0x3a, 0x91, 0x23, 0xd8, 0xf0, 0xe7, 0xb4, 0xbd, 0xa5, 0x4e,
    +	0xae, 0xb9, 0xce, 0xce, 0x16, 0x2d, 0x08, 0xe7, 0x28, 0x36, 0xdd, 0x6d, 0xb7, 0xef, 0x7f, 0x8b,
    +	0x34, 0xa2, 0x35, 0x12, 0x39, 0xf1, 0xe7, 0xc4, 0x65, 0x58, 0x51, 0x45, 0x37, 0x61, 0x28, 0x72,
    +	0x82, 0x2d, 0x12, 0x09, 0x7e, 0x9c, 0xc9, 0x37, 0x79, 0x4d, 0x4c, 0x77, 0x24, 0xf1, 0x1a, 0x24,
    +	0x3e, 0xa5, 0x36, 0x58, 0x55, 0x2c, 0x48, 0xd8, 0xff, 0xdf, 0x30, 0x9c, 0x5d, 0xac, 0xaf, 0xe6,
    +	0xac, 0xab, 0x4b, 0x30, 0xd4, 0x0c, 0xdc, 0x5d, 0x12, 0x88, 0x71, 0x56, 0x54, 0x96, 0x58, 0x29,
    +	0x16, 0x50, 0x74, 0x0d, 0xc6, 0xf9, 0xf9, 0x78, 0xc3, 0xf1, 0x9a, 0x31, 0x7b, 0x14, 0xd8, 0xe3,
    +	0x77, 0x35, 0x18, 0x36, 0x30, 0x8f, 0xb8, 0xa8, 0x2e, 0x25, 0x36, 0x63, 0xde, 0xd9, 0xfb, 0x5d,
    +	0x0b, 0xa6, 0x79, 0x33, 0xf3, 0x51, 0x14, 0xb8, 0xf7, 0xbb, 0x11, 0x09, 0x2b, 0x83, 0x8c, 0xd3,
    +	0x2d, 0x66, 0x8d, 0x56, 0xee, 0x08, 0xcc, 0xdd, 0x4d, 0x50, 0xe1, 0x4c, 0xb0, 0x22, 0xda, 0x9d,
    +	0x4e, 0x82, 0x71, 0xaa, 0x59, 0xf4, 0x17, 0x2d, 0x98, 0x6d, 0xf8, 0x5e, 0x14, 0xf8, 0xad, 0x16,
    +	0x09, 0x6a, 0xdd, 0xfb, 0x2d, 0x37, 0xdc, 0xe6, 0xeb, 0x14, 0x93, 0x4d, 0xc6, 0x09, 0x72, 0xe6,
    +	0x50, 0x21, 0x89, 0x39, 0xbc, 0x70, 0xb0, 0x5f, 0x9d, 0x5d, 0xcc, 0x25, 0x85, 0x0b, 0x9a, 0x41,
    +	0x3b, 0x80, 0xe8, 0xc9, 0x5e, 0x8f, 0x9c, 0x2d, 0x12, 0x37, 0x3e, 0xdc, 0x7f, 0xe3, 0xa7, 0x0f,
    +	0xf6, 0xab, 0x68, 0x3d, 0x45, 0x02, 0x67, 0x90, 0x45, 0x1f, 0xc1, 0x49, 0x5a, 0x9a, 0xfa, 0xd6,
    +	0x91, 0xfe, 0x9b, 0xab, 0x1c, 0xec, 0x57, 0x4f, 0xae, 0x67, 0x10, 0xc1, 0x99, 0xa4, 0xd1, 0x8f,
    +	0x5b, 0x70, 0x36, 0xfe, 0xfc, 0xe5, 0x87, 0x1d, 0xc7, 0x6b, 0xc6, 0x0d, 0x8f, 0xf6, 0xdf, 0x30,
    +	0xe5, 0xc9, 0x67, 0x17, 0xf3, 0x28, 0xe1, 0xfc, 0x46, 0x90, 0x07, 0x27, 0x68, 0xd7, 0x92, 0x6d,
    +	0x43, 0xff, 0x6d, 0x9f, 0x39, 0xd8, 0xaf, 0x9e, 0x58, 0x4f, 0xd3, 0xc0, 0x59, 0x84, 0x67, 0x17,
    +	0xe1, 0x54, 0xe6, 0xea, 0x44, 0xd3, 0x50, 0xde, 0x21, 0x5c, 0x08, 0x1c, 0xc5, 0xf4, 0x27, 0x3a,
    +	0x09, 0x83, 0xbb, 0x4e, 0xab, 0x2b, 0x36, 0x26, 0xe6, 0x7f, 0xde, 0x2a, 0x5d, 0xb3, 0xec, 0xff,
    +	0xbe, 0x0c, 0x53, 0x8b, 0xf5, 0xd5, 0xc7, 0xda, 0xf5, 0xfa, 0xb1, 0x57, 0x2a, 0x3c, 0xf6, 0xe2,
    +	0x43, 0xb4, 0x9c, 0x7b, 0x88, 0xfe, 0x58, 0xc6, 0x96, 0x1d, 0x60, 0x5b, 0xf6, 0x8b, 0x39, 0x5b,
    +	0xf6, 0x09, 0x6f, 0xd4, 0xdd, 0x9c, 0x55, 0x3b, 0xc8, 0x26, 0x30, 0x53, 0x42, 0x62, 0xb2, 0x5f,
    +	0x92, 0xd5, 0x1e, 0x71, 0xe9, 0x3e, 0x99, 0x79, 0x6c, 0xc0, 0xf8, 0xa2, 0xd3, 0x71, 0xee, 0xbb,
    +	0x2d, 0x37, 0x72, 0x49, 0x88, 0x5e, 0x84, 0xb2, 0xd3, 0x6c, 0x32, 0xe9, 0x6e, 0x74, 0xe1, 0xd4,
    +	0xc1, 0x7e, 0xb5, 0x3c, 0xdf, 0xa4, 0x62, 0x06, 0x28, 0xac, 0x3d, 0x4c, 0x31, 0xd0, 0x67, 0x61,
    +	0xa0, 0x19, 0xf8, 0x9d, 0x4a, 0x89, 0x61, 0xd2, 0x5d, 0x3e, 0xb0, 0x14, 0xf8, 0x9d, 0x04, 0x2a,
    +	0xc3, 0xb1, 0x7f, 0xbb, 0x04, 0xe7, 0x16, 0x49, 0x67, 0x7b, 0xa5, 0x9e, 0x73, 0x5e, 0x5c, 0x86,
    +	0x91, 0xb6, 0xef, 0xb9, 0x91, 0x1f, 0x84, 0xa2, 0x69, 0xb6, 0x22, 0xd6, 0x44, 0x19, 0x56, 0x50,
    +	0x74, 0x11, 0x06, 0x3a, 0xb1, 0x10, 0x3b, 0x2e, 0x05, 0x60, 0x26, 0xbe, 0x32, 0x08, 0xc5, 0xe8,
    +	0x86, 0x24, 0x10, 0x2b, 0x46, 0x61, 0xdc, 0x09, 0x49, 0x80, 0x19, 0x24, 0x96, 0x04, 0xa8, 0x8c,
    +	0x20, 0x4e, 0x84, 0x84, 0x24, 0x40, 0x21, 0x58, 0xc3, 0x42, 0x35, 0x18, 0x0d, 0x13, 0x33, 0xdb,
    +	0xd7, 0xd6, 0x9c, 0x60, 0xa2, 0x82, 0x9a, 0xc9, 0x98, 0x88, 0x71, 0x82, 0x0d, 0xf5, 0x14, 0x15,
    +	0x7e, 0xa3, 0x04, 0x88, 0x0f, 0xe1, 0x9f, 0xb1, 0x81, 0xbb, 0x93, 0x1e, 0xb8, 0xfe, 0xb7, 0xc4,
    +	0x93, 0x1a, 0xbd, 0xff, 0xdb, 0x82, 0x73, 0x8b, 0xae, 0xd7, 0x24, 0x41, 0xce, 0x02, 0x7c, 0x3a,
    +	0x57, 0xf9, 0xa3, 0x09, 0x29, 0xc6, 0x12, 0x1b, 0x78, 0x02, 0x4b, 0xcc, 0xfe, 0xb7, 0x16, 0x20,
    +	0xfe, 0xd9, 0x9f, 0xb8, 0x8f, 0xbd, 0x93, 0xfe, 0xd8, 0x27, 0xb0, 0x2c, 0xec, 0x5b, 0x30, 0xb9,
    +	0xd8, 0x72, 0x89, 0x17, 0xad, 0xd6, 0x16, 0x7d, 0x6f, 0xd3, 0xdd, 0x42, 0x6f, 0xc1, 0x64, 0xe4,
    +	0xb6, 0x89, 0xdf, 0x8d, 0xea, 0xa4, 0xe1, 0x7b, 0xec, 0xe6, 0x6a, 0x5d, 0x1e, 0x5c, 0x40, 0x07,
    +	0xfb, 0xd5, 0xc9, 0x0d, 0x03, 0x82, 0x13, 0x98, 0xf6, 0xdf, 0xa5, 0x7c, 0xab, 0xd5, 0x0d, 0x23,
    +	0x12, 0x6c, 0x04, 0xdd, 0x30, 0x5a, 0xe8, 0x52, 0xd9, 0xb3, 0x16, 0xf8, 0xb4, 0x3b, 0xae, 0xef,
    +	0xa1, 0x73, 0xc6, 0x75, 0x7c, 0x44, 0x5e, 0xc5, 0xc5, 0xb5, 0x7b, 0x0e, 0x20, 0x74, 0xb7, 0x3c,
    +	0x12, 0x68, 0xd7, 0x87, 0x49, 0xb6, 0x55, 0x54, 0x29, 0xd6, 0x30, 0x50, 0x0b, 0x26, 0x5a, 0xce,
    +	0x7d, 0xd2, 0xaa, 0x93, 0x16, 0x69, 0x44, 0x7e, 0x20, 0xf4, 0x1b, 0xaf, 0xf7, 0x77, 0x0f, 0xb8,
    +	0xa5, 0x57, 0x5d, 0x98, 0x39, 0xd8, 0xaf, 0x4e, 0x18, 0x45, 0xd8, 0x24, 0x4e, 0x59, 0x87, 0xdf,
    +	0xa1, 0x5f, 0xe1, 0xb4, 0xf4, 0xcb, 0xe7, 0x6d, 0x51, 0x86, 0x15, 0x54, 0xb1, 0x8e, 0x81, 0x3c,
    +	0xd6, 0x61, 0xff, 0x4b, 0xba, 0xd0, 0xfc, 0x76, 0xc7, 0xf7, 0x88, 0x17, 0x2d, 0xfa, 0x5e, 0x93,
    +	0x6b, 0xa6, 0xde, 0x32, 0x54, 0x27, 0x97, 0x12, 0xaa, 0x93, 0xd3, 0xe9, 0x1a, 0x9a, 0xf6, 0xe4,
    +	0x8b, 0x30, 0x14, 0x46, 0x4e, 0xd4, 0x0d, 0xc5, 0xc0, 0x3d, 0x2b, 0x97, 0x5d, 0x9d, 0x95, 0x1e,
    +	0xee, 0x57, 0xa7, 0x54, 0x35, 0x5e, 0x84, 0x45, 0x05, 0xf4, 0x12, 0x0c, 0xb7, 0x49, 0x18, 0x3a,
    +	0x5b, 0x52, 0x6c, 0x98, 0x12, 0x75, 0x87, 0xd7, 0x78, 0x31, 0x96, 0x70, 0xf4, 0x1c, 0x0c, 0x92,
    +	0x20, 0xf0, 0x03, 0xf1, 0x6d, 0x13, 0x02, 0x71, 0x70, 0x99, 0x16, 0x62, 0x0e, 0xb3, 0xff, 0x27,
    +	0x0b, 0xa6, 0x54, 0x5f, 0x79, 0x5b, 0xc7, 0x70, 0x5d, 0xfb, 0x2a, 0x40, 0x43, 0x7e, 0x60, 0xc8,
    +	0x8e, 0xd9, 0xb1, 0xd7, 0x2e, 0x65, 0x4a, 0x34, 0xa9, 0x61, 0x8c, 0x29, 0xab, 0xa2, 0x10, 0x6b,
    +	0xd4, 0xec, 0xdf, 0xb4, 0xe0, 0x44, 0xe2, 0x8b, 0x6e, 0xb9, 0x61, 0x84, 0x3e, 0x4c, 0x7d, 0xd5,
    +	0x5c, 0x9f, 0x8b, 0xcf, 0x0d, 0xf9, 0x37, 0xa9, 0x3d, 0x2f, 0x4b, 0xb4, 0x2f, 0xba, 0x01, 0x83,
    +	0x6e, 0x44, 0xda, 0xf2, 0x63, 0x9e, 0x2b, 0xfc, 0x18, 0xde, 0xab, 0x78, 0x46, 0x56, 0x69, 0x4d,
    +	0xcc, 0x09, 0xd8, 0xbf, 0x5d, 0x86, 0x51, 0xbe, 0xbf, 0xd7, 0x9c, 0xce, 0x31, 0xcc, 0xc5, 0xcb,
    +	0x30, 0xea, 0xb6, 0xdb, 0xdd, 0xc8, 0xb9, 0x2f, 0xce, 0xbd, 0x11, 0xce, 0x83, 0x56, 0x65, 0x21,
    +	0x8e, 0xe1, 0x68, 0x15, 0x06, 0x58, 0x57, 0xf8, 0x57, 0xbe, 0x98, 0xfd, 0x95, 0xa2, 0xef, 0x73,
    +	0x4b, 0x4e, 0xe4, 0x70, 0x91, 0x53, 0xed, 0x2b, 0x5a, 0x84, 0x19, 0x09, 0xe4, 0x00, 0xdc, 0x77,
    +	0x3d, 0x27, 0xd8, 0xa3, 0x65, 0x95, 0x32, 0x23, 0xf8, 0x6a, 0x31, 0xc1, 0x05, 0x85, 0xcf, 0xc9,
    +	0xaa, 0x0f, 0x8b, 0x01, 0x58, 0x23, 0x3a, 0xfb, 0x05, 0x18, 0x55, 0xc8, 0x47, 0x91, 0x1c, 0x67,
    +	0xbf, 0x04, 0x53, 0x89, 0xb6, 0x7a, 0x55, 0x1f, 0xd7, 0x05, 0xcf, 0x7f, 0xcc, 0x58, 0x86, 0xe8,
    +	0xf5, 0xb2, 0xb7, 0x2b, 0xce, 0xa6, 0x47, 0x70, 0xb2, 0x95, 0xc1, 0xf2, 0xc5, 0xbc, 0xf6, 0x7f,
    +	0x44, 0x9c, 0x13, 0x9f, 0x7d, 0x32, 0x0b, 0x8a, 0x33, 0xdb, 0x30, 0x38, 0x62, 0xa9, 0x88, 0x23,
    +	0x52, 0x7e, 0x77, 0x52, 0x75, 0xfe, 0x26, 0xd9, 0x53, 0x4c, 0xf5, 0x07, 0xd9, 0xfd, 0xf3, 0x7c,
    +	0xf4, 0x39, 0xbb, 0x1c, 0x13, 0x04, 0xca, 0x37, 0xc9, 0x1e, 0x9f, 0x0a, 0xfd, 0xeb, 0xca, 0x85,
    +	0x5f, 0xf7, 0x2b, 0x16, 0x4c, 0xa8, 0xaf, 0x3b, 0x06, 0xbe, 0xb0, 0x60, 0xf2, 0x85, 0xf3, 0x85,
    +	0x0b, 0x3c, 0x87, 0x23, 0xfc, 0x46, 0x09, 0xce, 0x2a, 0x1c, 0x7a, 0x89, 0xe2, 0x7f, 0xc4, 0xaa,
    +	0xba, 0x02, 0xa3, 0x9e, 0x52, 0x27, 0x5a, 0xa6, 0x1e, 0x2f, 0x56, 0x26, 0xc6, 0x38, 0xf4, 0xc8,
    +	0xf3, 0xe2, 0x43, 0x7b, 0x5c, 0xd7, 0xb3, 0x8b, 0xc3, 0x7d, 0x01, 0xca, 0x5d, 0xb7, 0x29, 0x0e,
    +	0x98, 0xcf, 0xc9, 0xd1, 0xbe, 0xb3, 0xba, 0x74, 0xb8, 0x5f, 0x7d, 0x36, 0xcf, 0xe4, 0x44, 0x4f,
    +	0xb6, 0x70, 0xee, 0xce, 0xea, 0x12, 0xa6, 0x95, 0xd1, 0x3c, 0x4c, 0x49, 0xab, 0xda, 0x5d, 0x2a,
    +	0x97, 0xfa, 0x9e, 0x38, 0x87, 0x94, 0xb2, 0x1c, 0x9b, 0x60, 0x9c, 0xc4, 0x47, 0x4b, 0x30, 0xbd,
    +	0xd3, 0xbd, 0x4f, 0x5a, 0x24, 0xe2, 0x1f, 0x7c, 0x93, 0x70, 0x55, 0xf2, 0x68, 0x7c, 0x85, 0xbd,
    +	0x99, 0x80, 0xe3, 0x54, 0x0d, 0xfb, 0x4f, 0xd9, 0x79, 0x20, 0x46, 0x4f, 0x93, 0x6f, 0x7e, 0x90,
    +	0xcb, 0xb9, 0x9f, 0x55, 0x71, 0x93, 0xec, 0x6d, 0xf8, 0x54, 0x0e, 0xc9, 0x5e, 0x15, 0xc6, 0x9a,
    +	0x1f, 0x28, 0x5c, 0xf3, 0xbf, 0x56, 0x82, 0x53, 0x6a, 0x04, 0x0c, 0x69, 0xf9, 0xcf, 0xfa, 0x18,
    +	0x5c, 0x85, 0xb1, 0x26, 0xd9, 0x74, 0xba, 0xad, 0x48, 0xd9, 0x35, 0x06, 0xb9, 0xa9, 0x6d, 0x29,
    +	0x2e, 0xc6, 0x3a, 0xce, 0x11, 0x86, 0xed, 0x6f, 0x4d, 0xb2, 0x83, 0x38, 0x72, 0xe8, 0x1a, 0x57,
    +	0xbb, 0xc6, 0xca, 0xdd, 0x35, 0xcf, 0xc1, 0xa0, 0xdb, 0xa6, 0x82, 0x59, 0xc9, 0x94, 0xb7, 0x56,
    +	0x69, 0x21, 0xe6, 0x30, 0xf4, 0x02, 0x0c, 0x37, 0xfc, 0x76, 0xdb, 0xf1, 0x9a, 0xec, 0xc8, 0x1b,
    +	0x5d, 0x18, 0xa3, 0xb2, 0xdb, 0x22, 0x2f, 0xc2, 0x12, 0x46, 0x85, 0x6f, 0x27, 0xd8, 0xe2, 0xca,
    +	0x1e, 0x21, 0x7c, 0xcf, 0x07, 0x5b, 0x21, 0x66, 0xa5, 0xf4, 0xae, 0xfa, 0xc0, 0x0f, 0x76, 0x5c,
    +	0x6f, 0x6b, 0xc9, 0x0d, 0xc4, 0x96, 0x50, 0x67, 0xe1, 0x3d, 0x05, 0xc1, 0x1a, 0x16, 0x5a, 0x81,
    +	0xc1, 0x8e, 0x1f, 0x44, 0x61, 0x65, 0x88, 0x0d, 0xf7, 0xb3, 0x39, 0x8c, 0x88, 0x7f, 0x6d, 0xcd,
    +	0x0f, 0xa2, 0xf8, 0x03, 0xe8, 0xbf, 0x10, 0xf3, 0xea, 0xe8, 0x16, 0x0c, 0x13, 0x6f, 0x77, 0x25,
    +	0xf0, 0xdb, 0x95, 0x13, 0xf9, 0x94, 0x96, 0x39, 0x0a, 0x5f, 0x66, 0xb1, 0x8c, 0x2a, 0x8a, 0xb1,
    +	0x24, 0x81, 0xbe, 0x08, 0x65, 0xe2, 0xed, 0x56, 0x86, 0x19, 0xa5, 0xd9, 0x1c, 0x4a, 0x77, 0x9d,
    +	0x20, 0xe6, 0xf9, 0xcb, 0xde, 0x2e, 0xa6, 0x75, 0xd0, 0x57, 0x60, 0x54, 0x32, 0x8c, 0x50, 0x68,
    +	0x51, 0x33, 0x17, 0xac, 0x64, 0x33, 0x98, 0x7c, 0xd4, 0x75, 0x03, 0xd2, 0x26, 0x5e, 0x14, 0xc6,
    +	0x1c, 0x52, 0x42, 0x43, 0x1c, 0x53, 0x43, 0x0d, 0x18, 0x0f, 0x48, 0xe8, 0x3e, 0x22, 0x35, 0xbf,
    +	0xe5, 0x36, 0xf6, 0x2a, 0x67, 0x58, 0xf7, 0x5e, 0x2a, 0x1c, 0x32, 0xac, 0x55, 0x88, 0xb5, 0xfc,
    +	0x7a, 0x29, 0x36, 0x88, 0xa2, 0x0f, 0x60, 0x22, 0x20, 0x61, 0xe4, 0x04, 0x91, 0x68, 0xa5, 0xa2,
    +	0xac, 0x72, 0x13, 0x58, 0x07, 0xf0, 0xeb, 0x44, 0xdc, 0x4c, 0x0c, 0xc1, 0x26, 0x05, 0x14, 0x01,
    +	0x32, 0x0a, 0x70, 0xb7, 0x45, 0xc2, 0xca, 0xd9, 0x7c, 0x6b, 0x66, 0x92, 0x2c, 0xad, 0xb0, 0x30,
    +	0x2b, 0x3a, 0x8f, 0x70, 0x8a, 0x16, 0xce, 0xa0, 0x8f, 0xbe, 0x22, 0x0d, 0x1d, 0x6b, 0x7e, 0xd7,
    +	0x8b, 0xc2, 0xca, 0x28, 0x6b, 0x2f, 0xd3, 0x22, 0x7e, 0x37, 0xc6, 0x4b, 0x5a, 0x42, 0x78, 0x65,
    +	0x6c, 0x90, 0x42, 0x5f, 0x87, 0x09, 0xfe, 0x9f, 0x1b, 0x72, 0xc3, 0xca, 0x29, 0x46, 0xfb, 0x62,
    +	0x3e, 0x6d, 0x8e, 0xb8, 0x70, 0x4a, 0x10, 0x9f, 0xd0, 0x4b, 0x43, 0x6c, 0x52, 0x43, 0x18, 0x26,
    +	0x5a, 0xee, 0x2e, 0xf1, 0x48, 0x18, 0xd6, 0x02, 0xff, 0x3e, 0x11, 0x7a, 0xe9, 0xb3, 0xd9, 0x86,
    +	0x5f, 0xff, 0x3e, 0x11, 0x57, 0x4f, 0xbd, 0x0e, 0x36, 0x49, 0xa0, 0x3b, 0x30, 0x19, 0x10, 0xa7,
    +	0xe9, 0xc6, 0x44, 0xc7, 0x7a, 0x11, 0x65, 0xd7, 0x75, 0x6c, 0x54, 0xc2, 0x09, 0x22, 0xe8, 0x36,
    +	0x8c, 0xb3, 0x81, 0xef, 0x76, 0x38, 0xd1, 0xd3, 0xbd, 0x88, 0x32, 0x37, 0x86, 0xba, 0x56, 0x05,
    +	0x1b, 0x04, 0xd0, 0xfb, 0x30, 0xda, 0x72, 0x37, 0x49, 0x63, 0xaf, 0xd1, 0x22, 0x95, 0x71, 0x46,
    +	0x2d, 0x93, 0x05, 0xdf, 0x92, 0x48, 0xfc, 0x56, 0xa0, 0xfe, 0xe2, 0xb8, 0x3a, 0xba, 0x0b, 0xa7,
    +	0x23, 0x12, 0xb4, 0x5d, 0xcf, 0xa1, 0xac, 0x53, 0x5c, 0x44, 0x99, 0x3d, 0x7e, 0x82, 0xad, 0xe9,
    +	0x0b, 0x62, 0x36, 0x4e, 0x6f, 0x64, 0x62, 0xe1, 0x9c, 0xda, 0xe8, 0x21, 0x54, 0x32, 0x20, 0x7c,
    +	0xb7, 0x9c, 0x64, 0x94, 0xdf, 0x11, 0x94, 0x2b, 0x1b, 0x39, 0x78, 0x87, 0x05, 0x30, 0x9c, 0x4b,
    +	0x1d, 0xdd, 0x86, 0x29, 0xc6, 0xaf, 0x6b, 0xdd, 0x56, 0x4b, 0x34, 0x38, 0xc9, 0x1a, 0x7c, 0x41,
    +	0x4a, 0x2f, 0xab, 0x26, 0xf8, 0x70, 0xbf, 0x0a, 0xf1, 0x3f, 0x9c, 0xac, 0x8d, 0xee, 0x33, 0xd3,
    +	0x6f, 0x37, 0x70, 0xa3, 0x3d, 0xba, 0xe9, 0xc8, 0xc3, 0xa8, 0x32, 0x55, 0xa8, 0x06, 0xd3, 0x51,
    +	0x95, 0x7d, 0x58, 0x2f, 0xc4, 0x49, 0x82, 0xf4, 0x00, 0x0a, 0xa3, 0xa6, 0xeb, 0x55, 0xa6, 0xf9,
    +	0x2d, 0x4e, 0xf2, 0xef, 0x3a, 0x2d, 0xc4, 0x1c, 0xc6, 0xcc, 0xbe, 0xf4, 0xc7, 0x6d, 0x7a, 0xce,
    +	0xcf, 0x30, 0xc4, 0xd8, 0xec, 0x2b, 0x01, 0x38, 0xc6, 0xa1, 0xa2, 0x77, 0x14, 0xed, 0x55, 0x10,
    +	0x43, 0x55, 0x6c, 0x78, 0x63, 0xe3, 0x2b, 0x98, 0x96, 0xdb, 0xbf, 0x6b, 0xc1, 0x45, 0xc5, 0x46,
    +	0x96, 0x1f, 0x46, 0xc4, 0x6b, 0x92, 0xa6, 0xce, 0x73, 0x49, 0x18, 0xa1, 0xb7, 0x61, 0xa2, 0x21,
    +	0x71, 0x34, 0x13, 0xb5, 0xda, 0xa5, 0x8b, 0x3a, 0x10, 0x9b, 0xb8, 0xe8, 0x1a, 0xe3, 0xc6, 0x8c,
    +	0x9e, 0xa6, 0x6c, 0xd2, 0x59, 0xac, 0x82, 0x61, 0x03, 0x13, 0xbd, 0x09, 0x63, 0x01, 0xef, 0x01,
    +	0xab, 0x58, 0x36, 0x3d, 0x25, 0x70, 0x0c, 0xc2, 0x3a, 0x9e, 0x7d, 0x1f, 0x26, 0x55, 0x87, 0xd8,
    +	0x34, 0xa3, 0x2a, 0x0c, 0x32, 0xf9, 0x59, 0xe8, 0xa1, 0x47, 0xe9, 0xa8, 0x32, 0xd9, 0x1a, 0xf3,
    +	0x72, 0x36, 0xaa, 0xee, 0x23, 0xb2, 0xb0, 0x17, 0x11, 0xae, 0xd4, 0x29, 0x6b, 0xa3, 0x2a, 0x01,
    +	0x38, 0xc6, 0xb1, 0xff, 0x7f, 0x7e, 0x0f, 0x89, 0x8f, 0xdb, 0x3e, 0x04, 0x8c, 0x57, 0x60, 0x84,
    +	0x79, 0xd0, 0xf8, 0x01, 0x37, 0x73, 0x0f, 0xc6, 0x37, 0x8f, 0x1b, 0xa2, 0x1c, 0x2b, 0x0c, 0x63,
    +	0xcc, 0x59, 0x15, 0x2e, 0x1d, 0xa5, 0xc7, 0x9c, 0xd5, 0x33, 0x71, 0xd1, 0x35, 0x18, 0x61, 0xce,
    +	0x62, 0x0d, 0xbf, 0x25, 0xc4, 0x76, 0x29, 0xe2, 0x8d, 0xd4, 0x44, 0xf9, 0xa1, 0xf6, 0x1b, 0x2b,
    +	0x6c, 0x74, 0x09, 0x86, 0x68, 0x17, 0x56, 0x6b, 0x42, 0x2e, 0x51, 0x2a, 0xd5, 0x1b, 0xac, 0x14,
    +	0x0b, 0xa8, 0xfd, 0x9b, 0x16, 0x13, 0x4a, 0xd3, 0x87, 0x27, 0xba, 0x91, 0x98, 0x6f, 0x3e, 0x20,
    +	0xcf, 0x67, 0xcd, 0xf7, 0x61, 0xf1, 0xfc, 0x7f, 0x35, 0x79, 0xc4, 0xf2, 0xa5, 0xf3, 0x86, 0x1c,
    +	0x82, 0xe4, 0x31, 0xfb, 0x4c, 0xbc, 0x6e, 0x69, 0x7f, 0x8a, 0xce, 0x5a, 0xfb, 0xb7, 0xf8, 0x35,
    +	0x39, 0x75, 0x7c, 0xa2, 0x25, 0x18, 0x72, 0xd8, 0x0d, 0x43, 0x74, 0xfc, 0x15, 0x39, 0x00, 0xf3,
    +	0xac, 0xf4, 0x50, 0xd8, 0xab, 0x93, 0xf5, 0x38, 0x14, 0x8b, 0xba, 0xe8, 0x9b, 0x30, 0x4a, 0x1e,
    +	0xba, 0xd1, 0xa2, 0xdf, 0x14, 0x0b, 0xca, 0xd4, 0x95, 0x16, 0x9e, 0xe0, 0xb7, 0xbd, 0x65, 0x59,
    +	0x95, 0x33, 0x6d, 0xf5, 0x17, 0xc7, 0x44, 0xed, 0x9f, 0xb3, 0xa0, 0xda, 0xa3, 0x36, 0xba, 0x47,
    +	0x85, 0x65, 0x12, 0x38, 0x91, 0x2f, 0xed, 0x9e, 0x6f, 0xcb, 0x65, 0x70, 0x5b, 0x94, 0x1f, 0xee,
    +	0x57, 0x5f, 0xec, 0x41, 0x46, 0xa2, 0x62, 0x45, 0x0c, 0xd9, 0x30, 0xc4, 0xd4, 0x25, 0x5c, 0xfa,
    +	0x1f, 0xe4, 0xc6, 0xcf, 0xbb, 0xac, 0x04, 0x0b, 0x88, 0xfd, 0x57, 0x4a, 0xda, 0x3e, 0xac, 0x47,
    +	0x4e, 0x44, 0x50, 0x0d, 0x86, 0x1f, 0x38, 0x6e, 0xe4, 0x7a, 0x5b, 0xe2, 0x8a, 0x52, 0x2c, 0x93,
    +	0xb1, 0x4a, 0xf7, 0x78, 0x05, 0x2e, 0x68, 0x8b, 0x3f, 0x58, 0x92, 0xa1, 0x14, 0x83, 0xae, 0xe7,
    +	0x51, 0x8a, 0xa5, 0x7e, 0x29, 0x62, 0x5e, 0x81, 0x53, 0x14, 0x7f, 0xb0, 0x24, 0x83, 0x3e, 0x04,
    +	0x90, 0xc7, 0x0a, 0x69, 0x0a, 0x35, 0xf7, 0x2b, 0xbd, 0x89, 0x6e, 0xa8, 0x3a, 0x5c, 0x8f, 0x1e,
    +	0xff, 0xc7, 0x1a, 0x3d, 0x3b, 0xd2, 0x76, 0x8d, 0xde, 0x19, 0xf4, 0x35, 0xca, 0xd7, 0x9d, 0x20,
    +	0x22, 0xcd, 0xf9, 0x48, 0x0c, 0xce, 0x67, 0xfb, 0xd3, 0x63, 0x6c, 0xb8, 0x6d, 0xa2, 0x9f, 0x01,
    +	0x82, 0x08, 0x8e, 0xe9, 0xd9, 0xbf, 0x5e, 0x86, 0x4a, 0x5e, 0x77, 0x29, 0x5b, 0x92, 0xab, 0x4a,
    +	0xd8, 0x1f, 0x14, 0x5b, 0x92, 0x4b, 0x00, 0x2b, 0x0c, 0xca, 0x1f, 0x42, 0x77, 0x4b, 0xaa, 0xa1,
    +	0x06, 0x63, 0xfe, 0x50, 0x67, 0xa5, 0x58, 0x40, 0x29, 0x5e, 0x40, 0x9c, 0x50, 0xf8, 0x89, 0x6a,
    +	0x7c, 0x04, 0xb3, 0x52, 0x2c, 0xa0, 0xba, 0x42, 0x7c, 0xa0, 0x87, 0x42, 0xdc, 0x18, 0xa2, 0xc1,
    +	0x27, 0x3b, 0x44, 0xe8, 0x1b, 0x00, 0x9b, 0xae, 0xe7, 0x86, 0xdb, 0x8c, 0xfa, 0xd0, 0x91, 0xa9,
    +	0xab, 0xfb, 0xdb, 0x8a, 0xa2, 0x82, 0x35, 0x8a, 0xf4, 0x2c, 0x53, 0x2c, 0x7a, 0x75, 0x89, 0x79,
    +	0xa9, 0x68, 0x67, 0x59, 0x7c, 0x5e, 0x2d, 0x61, 0x1d, 0xcf, 0xfe, 0x56, 0x72, 0xbd, 0x88, 0x1d,
    +	0xa0, 0x8d, 0xaf, 0xd5, 0xef, 0xf8, 0x96, 0x8a, 0xc7, 0xd7, 0xfe, 0x17, 0xa3, 0x30, 0x65, 0x34,
    +	0xd6, 0x0d, 0xfb, 0x38, 0xd5, 0xae, 0x53, 0xa9, 0xc5, 0x89, 0x88, 0xd8, 0x7f, 0x76, 0xef, 0xad,
    +	0xa2, 0x4b, 0x36, 0x74, 0x07, 0xf0, 0xfa, 0xe8, 0x1b, 0x30, 0xda, 0x72, 0x42, 0xa6, 0x5c, 0x27,
    +	0x62, 0xdf, 0xf5, 0x43, 0x2c, 0xd6, 0x5d, 0x38, 0x61, 0xa4, 0x89, 0x8a, 0x9c, 0x76, 0x4c, 0x92,
    +	0x8a, 0x57, 0x54, 0x28, 0x97, 0x8e, 0xc8, 0xaa, 0x13, 0x54, 0x72, 0xdf, 0xc3, 0x1c, 0x26, 0x84,
    +	0x15, 0xba, 0x2a, 0x16, 0xe9, 0x15, 0x86, 0x2d, 0xb3, 0x41, 0x43, 0x58, 0x51, 0x30, 0x6c, 0x60,
    +	0xc6, 0xea, 0x83, 0xa1, 0x02, 0xf5, 0xc1, 0x4b, 0x30, 0xcc, 0x7e, 0xa8, 0x15, 0xa0, 0x66, 0x63,
    +	0x95, 0x17, 0x63, 0x09, 0x4f, 0x2e, 0x98, 0x91, 0xfe, 0x16, 0x0c, 0x7a, 0x01, 0x86, 0xc5, 0xa2,
    +	0x66, 0x1e, 0x42, 0x23, 0x9c, 0xcb, 0x89, 0x25, 0x8f, 0x25, 0x0c, 0xfd, 0xbc, 0x05, 0xc8, 0x69,
    +	0xb5, 0xfc, 0x06, 0xe3, 0x50, 0xea, 0x1e, 0x0e, 0xec, 0x7e, 0xf6, 0x76, 0xcf, 0x61, 0xef, 0x86,
    +	0x73, 0xf3, 0xa9, 0xda, 0x5c, 0xa9, 0xff, 0x96, 0xbc, 0x7e, 0xa6, 0x11, 0xf4, 0xe3, 0xfe, 0x96,
    +	0x1b, 0x46, 0xdf, 0xfe, 0x57, 0x89, 0xe3, 0x3f, 0xa3, 0x4b, 0xe8, 0x8e, 0xae, 0x27, 0x18, 0x3b,
    +	0xa2, 0x9e, 0x60, 0x22, 0x57, 0x47, 0xf0, 0xe7, 0x12, 0xb7, 0xde, 0x71, 0xf6, 0xe5, 0x2f, 0xf4,
    +	0xb8, 0xf5, 0x0a, 0xcb, 0x4f, 0x3f, 0x77, 0xdf, 0x9a, 0x70, 0x59, 0x98, 0x60, 0x5d, 0x2e, 0xd6,
    +	0xd7, 0xdc, 0x09, 0x49, 0xb0, 0x70, 0x56, 0x7a, 0x34, 0x1c, 0xea, 0xd2, 0x9d, 0xe6, 0xe2, 0xf0,
    +	0xe3, 0x16, 0x54, 0xd2, 0x03, 0xc4, 0xbb, 0x54, 0x99, 0x64, 0xfd, 0xb7, 0x8b, 0x46, 0x46, 0x74,
    +	0x5e, 0x7a, 0x66, 0x57, 0xe6, 0x73, 0x68, 0xe1, 0xdc, 0x56, 0xd0, 0x35, 0x80, 0x30, 0xf2, 0x3b,
    +	0x9c, 0xd7, 0xb3, 0x1b, 0xd0, 0x28, 0xf3, 0x0d, 0x82, 0xba, 0x2a, 0x3d, 0x8c, 0xcf, 0x02, 0x0d,
    +	0x77, 0xb6, 0x0b, 0x67, 0x72, 0x56, 0x4c, 0x86, 0x69, 0x66, 0x49, 0x37, 0xcd, 0xf4, 0x50, 0xe8,
    +	0xcf, 0xc9, 0x39, 0x9d, 0xfb, 0xa0, 0xeb, 0x78, 0x91, 0x1b, 0xed, 0xe9, 0xa6, 0x1c, 0x0f, 0xcc,
    +	0xa1, 0x44, 0x5f, 0x87, 0xc1, 0x96, 0xeb, 0x75, 0x1f, 0x8a, 0x33, 0xf6, 0x52, 0xf6, 0x9d, 0xd9,
    +	0xeb, 0x3e, 0x34, 0x27, 0xa7, 0x4a, 0xb7, 0x32, 0x2b, 0x3f, 0xdc, 0xaf, 0xa2, 0x34, 0x02, 0xe6,
    +	0x54, 0xed, 0xcf, 0xc2, 0xe4, 0x92, 0x43, 0xda, 0xbe, 0xb7, 0xec, 0x35, 0x3b, 0xbe, 0xeb, 0x45,
    +	0xa8, 0x02, 0x03, 0x4c, 0x7c, 0xe7, 0x47, 0xeb, 0x00, 0x1d, 0x7c, 0xcc, 0x4a, 0xec, 0x2d, 0x38,
    +	0xb5, 0xe4, 0x3f, 0xf0, 0x1e, 0x38, 0x41, 0x73, 0xbe, 0xb6, 0xaa, 0xa9, 0xb6, 0xd7, 0xa5, 0x6a,
    +	0xd5, 0xca, 0x57, 0x5c, 0x69, 0x35, 0xf9, 0x22, 0x5c, 0x71, 0x5b, 0x24, 0xc7, 0x00, 0xf1, 0xd7,
    +	0x4b, 0x46, 0x4b, 0x31, 0xbe, 0x32, 0x9f, 0x5b, 0xb9, 0x9e, 0x37, 0x1f, 0xc0, 0xc8, 0xa6, 0x4b,
    +	0x5a, 0x4d, 0x4c, 0x36, 0xc5, 0x6c, 0xbc, 0x98, 0xef, 0x9b, 0xbb, 0x42, 0x31, 0x95, 0x9d, 0x9f,
    +	0x29, 0x66, 0x57, 0x44, 0x65, 0xac, 0xc8, 0xa0, 0x1d, 0x98, 0x96, 0x73, 0x26, 0xa1, 0x82, 0xdf,
    +	0xbf, 0x54, 0xb4, 0x7c, 0x4d, 0xe2, 0xec, 0x9d, 0x02, 0x4e, 0x90, 0xc1, 0x29, 0xc2, 0xe8, 0x1c,
    +	0x0c, 0xb4, 0xa9, 0x64, 0x33, 0xc0, 0x86, 0x9f, 0x69, 0x62, 0x99, 0x52, 0x99, 0x95, 0xda, 0x7f,
    +	0xc3, 0x82, 0x33, 0xa9, 0x91, 0x11, 0xca, 0xf5, 0x27, 0x3c, 0x0b, 0x49, 0x65, 0x77, 0xa9, 0xb7,
    +	0xb2, 0xdb, 0xfe, 0x2f, 0x2c, 0x38, 0xb9, 0xdc, 0xee, 0x44, 0x7b, 0x4b, 0xae, 0xe9, 0x26, 0xf3,
    +	0x05, 0x18, 0x6a, 0x93, 0xa6, 0xdb, 0x6d, 0x8b, 0x99, 0xab, 0xca, 0xd3, 0x7f, 0x8d, 0x95, 0x52,
    +	0x0e, 0x52, 0x8f, 0xfc, 0xc0, 0xd9, 0x22, 0xbc, 0x00, 0x0b, 0x74, 0x26, 0x43, 0xb9, 0x8f, 0xc8,
    +	0x2d, 0xb7, 0xed, 0x46, 0x8f, 0xb7, 0xbb, 0x84, 0x87, 0x8b, 0x24, 0x82, 0x63, 0x7a, 0xf6, 0xf7,
    +	0x2d, 0x98, 0x92, 0xeb, 0x7e, 0xbe, 0xd9, 0x0c, 0x48, 0x18, 0xa2, 0x59, 0x28, 0xb9, 0x1d, 0xd1,
    +	0x4b, 0x10, 0xbd, 0x2c, 0xad, 0xd6, 0x70, 0xc9, 0xed, 0xc8, 0x0b, 0xb1, 0x17, 0x5f, 0xee, 0x8d,
    +	0x0b, 0xb1, 0xc7, 0xde, 0x4c, 0x48, 0x0c, 0x74, 0x19, 0x46, 0x3c, 0xbf, 0xc9, 0xef, 0x94, 0xc2,
    +	0xdd, 0x83, 0x62, 0xae, 0x8b, 0x32, 0xac, 0xa0, 0xa8, 0x06, 0xa3, 0xdc, 0x15, 0x3c, 0x5e, 0xb4,
    +	0x7d, 0x39, 0x94, 0xb3, 0x2f, 0xdb, 0x90, 0x35, 0x71, 0x4c, 0xc4, 0xfe, 0xa7, 0x16, 0x8c, 0xcb,
    +	0x2f, 0xeb, 0xf3, 0xb6, 0x4f, 0xb7, 0x56, 0x7c, 0xd3, 0x8f, 0xb7, 0x16, 0xbd, 0xad, 0x33, 0x88,
    +	0x71, 0x49, 0x2f, 0x1f, 0xe9, 0x92, 0x7e, 0x15, 0xc6, 0x9c, 0x4e, 0xa7, 0x66, 0xde, 0xf0, 0xd9,
    +	0x52, 0x9a, 0x8f, 0x8b, 0xb1, 0x8e, 0x63, 0xff, 0x6c, 0x09, 0x26, 0xe5, 0x17, 0xd4, 0xbb, 0xf7,
    +	0x43, 0x12, 0xa1, 0x0d, 0x18, 0x75, 0xf8, 0x2c, 0x11, 0xb9, 0xc8, 0x9f, 0xcb, 0x56, 0xe1, 0x1b,
    +	0x53, 0x1a, 0x0b, 0xd2, 0xf3, 0xb2, 0x36, 0x8e, 0x09, 0xa1, 0x16, 0xcc, 0x78, 0x7e, 0xc4, 0x84,
    +	0x2a, 0x05, 0x2f, 0xf2, 0xaa, 0x48, 0x52, 0x3f, 0x2b, 0xa8, 0xcf, 0xac, 0x27, 0xa9, 0xe0, 0x34,
    +	0x61, 0xb4, 0x2c, 0xcd, 0x22, 0xe5, 0x7c, 0xcd, 0xb2, 0x3e, 0x71, 0xd9, 0x56, 0x11, 0xfb, 0x9f,
    +	0x58, 0x30, 0x2a, 0xd1, 0x8e, 0xc3, 0x81, 0x66, 0x0d, 0x86, 0x43, 0x36, 0x09, 0x72, 0x68, 0xec,
    +	0xa2, 0x8e, 0xf3, 0xf9, 0x8a, 0x65, 0x45, 0xfe, 0x3f, 0xc4, 0x92, 0x06, 0xb3, 0x8a, 0xab, 0xee,
    +	0x7f, 0x42, 0xac, 0xe2, 0xaa, 0x3f, 0x39, 0x87, 0xd2, 0xbf, 0x61, 0x7d, 0xd6, 0xcc, 0x4c, 0xf4,
    +	0x4a, 0xd3, 0x09, 0xc8, 0xa6, 0xfb, 0x30, 0x79, 0xa5, 0xa9, 0xb1, 0x52, 0x2c, 0xa0, 0xe8, 0x43,
    +	0x18, 0x6f, 0x48, 0x73, 0x68, 0xbc, 0xc3, 0x2f, 0x15, 0x9a, 0xe6, 0x95, 0x17, 0x07, 0x57, 0xac,
    +	0x2f, 0x6a, 0xf5, 0xb1, 0x41, 0xcd, 0x74, 0x75, 0x2c, 0xf7, 0x72, 0x75, 0x8c, 0xe9, 0xe6, 0x3b,
    +	0xfe, 0xfd, 0x9c, 0x05, 0x43, 0xdc, 0x0c, 0xd6, 0x9f, 0x15, 0x52, 0x73, 0x6a, 0x89, 0xc7, 0x8e,
    +	0x29, 0x57, 0x84, 0x64, 0x83, 0xd6, 0x60, 0x94, 0xfd, 0x60, 0x66, 0xbc, 0x72, 0xfe, 0xc3, 0x48,
    +	0xde, 0xaa, 0xde, 0xc1, 0xbb, 0xb2, 0x1a, 0x8e, 0x29, 0xd8, 0x7f, 0x54, 0xa6, 0xdc, 0x2d, 0x46,
    +	0x35, 0x0e, 0x7d, 0xeb, 0xe9, 0x1d, 0xfa, 0xa5, 0xa7, 0x75, 0xe8, 0x6f, 0xc1, 0x54, 0x43, 0x73,
    +	0x81, 0x89, 0x67, 0xf2, 0x72, 0xe1, 0x22, 0xd1, 0xbc, 0x65, 0xb8, 0xca, 0x7e, 0xd1, 0x24, 0x82,
    +	0x93, 0x54, 0xd1, 0xd7, 0x60, 0x9c, 0xcf, 0xb3, 0x68, 0x85, 0x7b, 0x8b, 0xbe, 0x90, 0xbf, 0x5e,
    +	0xf4, 0x26, 0xb8, 0x89, 0x47, 0xab, 0x8e, 0x0d, 0x62, 0xa8, 0x0e, 0xb0, 0xe9, 0xb6, 0x88, 0x20,
    +	0x5d, 0xe0, 0xd8, 0xbd, 0xc2, 0xb1, 0x14, 0xe1, 0x49, 0xae, 0x87, 0x90, 0x55, 0xb1, 0x46, 0xc6,
    +	0xfe, 0x77, 0x16, 0xa0, 0xe5, 0xce, 0x36, 0x69, 0x93, 0xc0, 0x69, 0xc5, 0xe6, 0xf1, 0x9f, 0xb4,
    +	0xa0, 0x42, 0x52, 0xc5, 0x8b, 0x7e, 0xbb, 0x2d, 0x34, 0x0c, 0x39, 0x4a, 0xb0, 0xe5, 0x9c, 0x3a,
    +	0xf1, 0x2d, 0x23, 0x0f, 0x03, 0xe7, 0xb6, 0x87, 0xd6, 0xe0, 0x04, 0x3f, 0x7a, 0x0d, 0xbb, 0x82,
    +	0xd8, 0x11, 0xcf, 0x08, 0xc2, 0x27, 0x36, 0xd2, 0x28, 0x38, 0xab, 0x9e, 0xfd, 0x0f, 0x26, 0x21,
    +	0xb7, 0x17, 0x9f, 0xfa, 0x05, 0x7c, 0xea, 0x17, 0xf0, 0xa9, 0x5f, 0xc0, 0xa7, 0x7e, 0x01, 0x9f,
    +	0xfa, 0x05, 0x7c, 0xea, 0x17, 0xf0, 0xa9, 0x5f, 0x80, 0xe6, 0x17, 0xf0, 0x57, 0x2d, 0x38, 0xa5,
    +	0x0e, 0x4d, 0x43, 0xf7, 0xf0, 0xa3, 0x70, 0x82, 0x6f, 0xb7, 0xc5, 0x96, 0xe3, 0xb6, 0x37, 0x48,
    +	0xbb, 0xd3, 0x72, 0x22, 0xe9, 0x73, 0x78, 0x35, 0x73, 0xe5, 0x26, 0x1e, 0x36, 0x19, 0x15, 0xf9,
    +	0x0b, 0xd1, 0x0c, 0x00, 0xce, 0x6a, 0xc6, 0xfe, 0xf5, 0x11, 0x18, 0x5c, 0xde, 0x25, 0x5e, 0x74,
    +	0x0c, 0xb7, 0xb4, 0x06, 0x4c, 0xba, 0xde, 0xae, 0xdf, 0xda, 0x25, 0x4d, 0x0e, 0x3f, 0x8a, 0x32,
    +	0xe1, 0xb4, 0x20, 0x3d, 0xb9, 0x6a, 0x90, 0xc0, 0x09, 0x92, 0x4f, 0xc3, 0x50, 0x76, 0x1d, 0x86,
    +	0xf8, 0x91, 0x27, 0x84, 0xc6, 0x4c, 0x9e, 0xcd, 0x06, 0x51, 0x1c, 0xe4, 0xb1, 0x11, 0x8f, 0x1f,
    +	0xa9, 0xa2, 0x3a, 0xfa, 0x16, 0x4c, 0x6e, 0xba, 0x41, 0x18, 0x6d, 0xb8, 0x6d, 0x7a, 0x3e, 0xb4,
    +	0x3b, 0x8f, 0x61, 0x18, 0x53, 0xe3, 0xb0, 0x62, 0x50, 0xc2, 0x09, 0xca, 0x68, 0x0b, 0x26, 0x5a,
    +	0x8e, 0xde, 0xd4, 0xf0, 0x91, 0x9b, 0x52, 0xa7, 0xc3, 0x2d, 0x9d, 0x10, 0x36, 0xe9, 0xd2, 0xed,
    +	0xd4, 0x60, 0xb6, 0x9d, 0x11, 0xa6, 0x99, 0x51, 0xdb, 0x89, 0x1b, 0x75, 0x38, 0x8c, 0x8a, 0x85,
    +	0xec, 0x79, 0xd0, 0xa8, 0x29, 0x16, 0x6a, 0x8f, 0x80, 0xbe, 0x09, 0xa3, 0x84, 0x0e, 0x21, 0x25,
    +	0x2c, 0x0e, 0x98, 0x2b, 0xfd, 0xf5, 0x75, 0xcd, 0x6d, 0x04, 0xbe, 0x69, 0x92, 0x5c, 0x96, 0x94,
    +	0x70, 0x4c, 0x14, 0x2d, 0xc2, 0x50, 0x48, 0x02, 0x57, 0x99, 0x3d, 0x0a, 0xa6, 0x91, 0xa1, 0x71,
    +	0x2b, 0x3c, 0xff, 0x8d, 0x45, 0x55, 0xba, 0xbc, 0x84, 0x3b, 0xc3, 0xb8, 0xb9, 0xbc, 0x12, 0x0e,
    +	0x0b, 0xef, 0xc3, 0x70, 0x40, 0x5a, 0xcc, 0xe6, 0x3d, 0xd1, 0xff, 0x22, 0xe7, 0x26, 0x74, 0x5e,
    +	0x0f, 0x4b, 0x02, 0xe8, 0x26, 0x95, 0x57, 0xa8, 0x58, 0xe9, 0x7a, 0x5b, 0xea, 0xd1, 0x8c, 0x60,
    +	0xb4, 0x4a, 0x7c, 0xc7, 0x31, 0x86, 0x7c, 0x7d, 0x8e, 0x33, 0xaa, 0xa1, 0xeb, 0x30, 0xa3, 0x4a,
    +	0x57, 0xbd, 0x30, 0x72, 0x28, 0x83, 0xe3, 0x96, 0x07, 0xa5, 0x2a, 0xc2, 0x49, 0x04, 0x9c, 0xae,
    +	0x63, 0xff, 0xa2, 0x05, 0x7c, 0x9c, 0x8f, 0x41, 0x41, 0xf2, 0xae, 0xa9, 0x20, 0x39, 0x9b, 0x3b,
    +	0x73, 0x39, 0xca, 0x91, 0x5f, 0xb4, 0x60, 0x4c, 0x9b, 0xd9, 0x78, 0xcd, 0x5a, 0x05, 0x6b, 0xb6,
    +	0x0b, 0xd3, 0x74, 0xa5, 0xdf, 0xbe, 0x1f, 0x92, 0x60, 0x97, 0x34, 0xd9, 0xc2, 0x2c, 0x3d, 0xde,
    +	0xc2, 0x54, 0x0e, 0xfa, 0xb7, 0x12, 0x04, 0x71, 0xaa, 0x09, 0xfb, 0x9b, 0xb2, 0xab, 0xea, 0x3d,
    +	0x43, 0x43, 0xcd, 0x79, 0xe2, 0x3d, 0x83, 0x9a, 0x55, 0x1c, 0xe3, 0xd0, 0xad, 0xb6, 0xed, 0x87,
    +	0x51, 0xf2, 0x3d, 0xc3, 0x0d, 0x3f, 0x8c, 0x30, 0x83, 0xd8, 0xaf, 0x03, 0x2c, 0x3f, 0x24, 0x0d,
    +	0xbe, 0x62, 0xf5, 0xab, 0x96, 0x95, 0x7f, 0xd5, 0xb2, 0x7f, 0xcf, 0x82, 0xc9, 0x95, 0x45, 0xe3,
    +	0xe4, 0x9a, 0x03, 0xe0, 0xf7, 0xc3, 0x7b, 0xf7, 0xd6, 0xa5, 0x2f, 0x18, 0x77, 0xd6, 0x50, 0xa5,
    +	0x58, 0xc3, 0x40, 0x67, 0xa1, 0xdc, 0xea, 0x7a, 0x42, 0x83, 0x3b, 0x4c, 0x8f, 0xc7, 0x5b, 0x5d,
    +	0x0f, 0xd3, 0x32, 0xed, 0xe5, 0x69, 0xb9, 0xef, 0x97, 0xa7, 0x3d, 0x03, 0x60, 0xa1, 0x2a, 0x0c,
    +	0x3e, 0x78, 0xe0, 0x36, 0x79, 0x5c, 0x0f, 0xe1, 0xa7, 0x76, 0xef, 0xde, 0xea, 0x52, 0x88, 0x79,
    +	0xb9, 0xfd, 0xcb, 0x16, 0x4c, 0x25, 0x6e, 0xfb, 0xf4, 0xd6, 0xb8, 0xab, 0xa2, 0x2a, 0x25, 0x83,
    +	0xc7, 0x68, 0xf1, 0x96, 0x34, 0xac, 0x3e, 0x5e, 0x5c, 0x8b, 0x17, 0x3b, 0xe5, 0x3e, 0x5e, 0xec,
    +	0x14, 0xbb, 0xe1, 0x7f, 0xaf, 0x0c, 0xb3, 0x2b, 0x2d, 0xf2, 0xf0, 0x63, 0x86, 0x63, 0xe9, 0xf7,
    +	0xa9, 0xef, 0xd1, 0xd4, 0x77, 0x47, 0x7d, 0xce, 0xdd, 0x7b, 0x0a, 0x37, 0x61, 0x98, 0x7f, 0xba,
    +	0x0c, 0xce, 0x92, 0x69, 0x4c, 0xcf, 0x1f, 0x90, 0x39, 0x3e, 0x84, 0xc2, 0x98, 0xae, 0xce, 0x78,
    +	0x51, 0x8a, 0x25, 0xf1, 0xd9, 0xb7, 0x60, 0x5c, 0xc7, 0x3c, 0x52, 0x60, 0x85, 0xbf, 0x50, 0x86,
    +	0x69, 0xda, 0x83, 0xa7, 0x3a, 0x11, 0x77, 0xd2, 0x13, 0xf1, 0xa4, 0x1f, 0xd7, 0xf7, 0x9e, 0x8d,
    +	0x0f, 0x93, 0xb3, 0x71, 0x35, 0x6f, 0x36, 0x8e, 0x7b, 0x0e, 0xfe, 0xa2, 0x05, 0x27, 0x56, 0x5a,
    +	0x7e, 0x63, 0x27, 0xf1, 0x00, 0xfe, 0x4d, 0x18, 0xa3, 0x27, 0x48, 0x68, 0xc4, 0x82, 0x32, 0xa2,
    +	0x83, 0x09, 0x10, 0xd6, 0xf1, 0xb4, 0x6a, 0x77, 0xee, 0xac, 0x2e, 0x65, 0x05, 0x15, 0x13, 0x20,
    +	0xac, 0xe3, 0xd9, 0xff, 0xdc, 0x82, 0xf3, 0xd7, 0x17, 0x97, 0xe3, 0xa5, 0x98, 0x8a, 0x6b, 0x76,
    +	0x09, 0x86, 0x3a, 0x4d, 0xad, 0x2b, 0xb1, 0x52, 0x7e, 0x89, 0xf5, 0x42, 0x40, 0x3f, 0x29, 0x21,
    +	0x04, 0xef, 0x00, 0x5c, 0xc7, 0xb5, 0x45, 0x71, 0x54, 0x48, 0x1b, 0x9c, 0x95, 0x6b, 0x83, 0x7b,
    +	0x01, 0x86, 0xe9, 0x51, 0xe6, 0x36, 0x64, 0xbf, 0xb9, 0xbb, 0x0c, 0x2f, 0xc2, 0x12, 0x66, 0xff,
    +	0x82, 0x05, 0x27, 0xae, 0xbb, 0x11, 0x95, 0x33, 0x92, 0x81, 0xbb, 0xa8, 0xa0, 0x11, 0xba, 0x91,
    +	0x1f, 0xec, 0x25, 0x79, 0x2f, 0x56, 0x10, 0xac, 0x61, 0xf1, 0x0f, 0xda, 0x75, 0xd9, 0x93, 0xba,
    +	0x92, 0x69, 0xf5, 0xc4, 0xa2, 0x1c, 0x2b, 0x0c, 0x3a, 0x5e, 0x4d, 0x37, 0x60, 0x9c, 0x5e, 0x72,
    +	0x63, 0x35, 0x5e, 0x4b, 0x12, 0x80, 0x63, 0x1c, 0xfb, 0x8f, 0x2d, 0xa8, 0x5e, 0xe7, 0x81, 0x01,
    +	0x36, 0xc3, 0x1c, 0xa6, 0xfb, 0x3a, 0x8c, 0x12, 0x69, 0x9e, 0x49, 0xfa, 0x72, 0x2b, 0xbb, 0x0d,
    +	0x8f, 0x1f, 0xa6, 0xf0, 0xfa, 0x38, 0x33, 0x8e, 0x16, 0x66, 0x61, 0x05, 0x10, 0xd1, 0xdb, 0xd2,
    +	0x03, 0xaa, 0xb1, 0xc8, 0x4c, 0xcb, 0x29, 0x28, 0xce, 0xa8, 0x61, 0xff, 0x0d, 0x0b, 0x4e, 0xa9,
    +	0x0f, 0xfe, 0xc4, 0x7d, 0xa6, 0xfd, 0xab, 0x25, 0x98, 0xb8, 0xb1, 0xb1, 0x51, 0xbb, 0x4e, 0x22,
    +	0x6d, 0x55, 0x16, 0x3b, 0x5d, 0x60, 0xcd, 0x76, 0x5c, 0x74, 0xad, 0xed, 0x46, 0x6e, 0x6b, 0x8e,
    +	0x87, 0x09, 0x9d, 0x5b, 0xf5, 0xa2, 0xdb, 0x41, 0x3d, 0x0a, 0x5c, 0x6f, 0x2b, 0x73, 0xa5, 0x4b,
    +	0x31, 0xab, 0x9c, 0x27, 0x66, 0xa1, 0xd7, 0x61, 0x88, 0xc5, 0x29, 0x95, 0x93, 0xf0, 0x8c, 0xba,
    +	0x15, 0xb2, 0xd2, 0xc3, 0xfd, 0xea, 0xe8, 0x1d, 0xbc, 0xca, 0xff, 0x60, 0x81, 0x8a, 0xee, 0xc0,
    +	0xd8, 0x76, 0x14, 0x75, 0x6e, 0x10, 0xa7, 0x49, 0x02, 0xc9, 0x65, 0x2f, 0x64, 0x71, 0x59, 0x3a,
    +	0x08, 0x1c, 0x2d, 0x66, 0x4c, 0x71, 0x59, 0x88, 0x75, 0x3a, 0x76, 0x1d, 0x20, 0x86, 0x3d, 0x21,
    +	0xb3, 0x99, 0xbd, 0x01, 0xa3, 0xf4, 0x73, 0xe7, 0x5b, 0xae, 0x53, 0xec, 0x98, 0xf0, 0x32, 0x8c,
    +	0x4a, 0xb7, 0x83, 0x50, 0x44, 0x11, 0x62, 0x27, 0x92, 0xf4, 0x4a, 0x08, 0x71, 0x0c, 0xb7, 0x9f,
    +	0x07, 0xe1, 0x1b, 0x5f, 0x44, 0xd2, 0xde, 0x84, 0x93, 0xcc, 0xc9, 0xdf, 0x89, 0xb6, 0x8d, 0x35,
    +	0xda, 0x7b, 0x31, 0xbc, 0x22, 0xae, 0xa2, 0x25, 0xe5, 0x6d, 0x25, 0xa3, 0x54, 0x8c, 0x4b, 0x8a,
    +	0xf1, 0xb5, 0xd4, 0xfe, 0xa3, 0x01, 0x78, 0x66, 0xb5, 0x9e, 0x1f, 0xfe, 0xee, 0x1a, 0x8c, 0x73,
    +	0x09, 0x97, 0x2e, 0x0d, 0xa7, 0x25, 0xda, 0x55, 0x4a, 0xdb, 0x0d, 0x0d, 0x86, 0x0d, 0x4c, 0x2a,
    +	0x11, 0xba, 0x1f, 0x79, 0xc9, 0x37, 0xdc, 0xab, 0x1f, 0xac, 0x63, 0x5a, 0x4e, 0xc1, 0x54, 0x58,
    +	0xe6, 0x2c, 0x5d, 0x81, 0x95, 0xc0, 0xfc, 0x2e, 0x4c, 0xba, 0x61, 0x23, 0x74, 0x57, 0x3d, 0xba,
    +	0x4f, 0xb5, 0x9d, 0xae, 0xd4, 0x24, 0xb4, 0xd3, 0x0a, 0x8a, 0x13, 0xd8, 0xda, 0xf9, 0x32, 0xd8,
    +	0xb7, 0xc0, 0xdd, 0x33, 0xf8, 0x0e, 0x65, 0xff, 0x1d, 0xf6, 0x75, 0x21, 0xb3, 0x55, 0x08, 0xf6,
    +	0xcf, 0x3f, 0x38, 0xc4, 0x12, 0x46, 0xef, 0xa0, 0x8d, 0x6d, 0xa7, 0x33, 0xdf, 0x8d, 0xb6, 0x97,
    +	0xdc, 0xb0, 0xe1, 0xef, 0x92, 0x60, 0x8f, 0xa9, 0x0f, 0x46, 0xe2, 0x3b, 0xa8, 0x02, 0x2c, 0xde,
    +	0x98, 0xaf, 0x51, 0x4c, 0x9c, 0xae, 0x83, 0xe6, 0x61, 0x4a, 0x16, 0xd6, 0x49, 0xc8, 0x8e, 0x80,
    +	0x31, 0x46, 0x46, 0xbd, 0xaa, 0x16, 0xc5, 0x8a, 0x48, 0x12, 0xdf, 0x14, 0x70, 0xe1, 0x49, 0x08,
    +	0xb8, 0x5f, 0x80, 0x09, 0xd7, 0x73, 0x23, 0xd7, 0x89, 0x7c, 0x6e, 0x68, 0xe3, 0x9a, 0x02, 0xa6,
    +	0x13, 0x5f, 0xd5, 0x01, 0xd8, 0xc4, 0xb3, 0xff, 0x8f, 0x01, 0x98, 0x61, 0xd3, 0xf6, 0xe9, 0x0a,
    +	0xfb, 0x61, 0x5a, 0x61, 0x77, 0xd2, 0x2b, 0xec, 0x49, 0x48, 0xee, 0x8f, 0xbd, 0xcc, 0xbe, 0x63,
    +	0xc1, 0x0c, 0x53, 0xcb, 0x1b, 0xcb, 0xec, 0x0a, 0x8c, 0x06, 0xc6, 0x83, 0xf7, 0x51, 0xdd, 0xfa,
    +	0x27, 0xdf, 0xae, 0xc7, 0x38, 0xe8, 0x3d, 0x80, 0x4e, 0xac, 0xf6, 0x2f, 0x19, 0x51, 0x8a, 0x21,
    +	0x57, 0xe3, 0xaf, 0xd5, 0xb1, 0xbf, 0x05, 0xa3, 0xea, 0x45, 0xbb, 0xbc, 0x20, 0x5b, 0x39, 0x17,
    +	0xe4, 0xde, 0x62, 0x84, 0xf4, 0x4c, 0x2c, 0x67, 0x7a, 0x26, 0xfe, 0x6b, 0x0b, 0x62, 0xa3, 0x0c,
    +	0xfa, 0x00, 0x46, 0x3b, 0x3e, 0x73, 0x64, 0x0f, 0xe4, 0xeb, 0x90, 0xe7, 0x0b, 0xad, 0x3a, 0x3c,
    +	0x14, 0x69, 0xc0, 0xa7, 0xa3, 0x26, 0xab, 0xe2, 0x98, 0x0a, 0xba, 0x09, 0xc3, 0x9d, 0x80, 0xd4,
    +	0x23, 0x16, 0x27, 0xaf, 0x7f, 0x82, 0x7c, 0xf9, 0xf2, 0x8a, 0x58, 0x52, 0x48, 0xf8, 0x05, 0x97,
    +	0xfb, 0xf7, 0x0b, 0xb6, 0xff, 0x7e, 0x09, 0xa6, 0x93, 0x8d, 0xa0, 0x77, 0x60, 0x80, 0x3c, 0x24,
    +	0x0d, 0xf1, 0xa5, 0x99, 0xd2, 0x44, 0xac, 0x10, 0xe2, 0x43, 0x47, 0xff, 0x63, 0x56, 0x0b, 0xdd,
    +	0x80, 0x61, 0x2a, 0x4a, 0x5c, 0x57, 0xd1, 0x64, 0x9f, 0xcd, 0x13, 0x47, 0x94, 0x4c, 0xc6, 0x3f,
    +	0x4b, 0x14, 0x61, 0x59, 0x9d, 0x39, 0x12, 0x36, 0x3a, 0x75, 0x7a, 0x4b, 0x8b, 0x8a, 0x94, 0x09,
    +	0x1b, 0x8b, 0x35, 0x8e, 0x24, 0xa8, 0x71, 0x47, 0x42, 0x59, 0x88, 0x63, 0x22, 0xe8, 0x3d, 0x18,
    +	0x0c, 0x5b, 0x84, 0x74, 0x84, 0xa7, 0x48, 0xa6, 0x4a, 0xb7, 0x4e, 0x11, 0x04, 0x25, 0xa6, 0x02,
    +	0x62, 0x05, 0x98, 0x57, 0xb4, 0x7f, 0xcd, 0x02, 0xe0, 0x9e, 0x97, 0x8e, 0xb7, 0x45, 0x8e, 0xc1,
    +	0x0a, 0xb2, 0x04, 0x03, 0x61, 0x87, 0x34, 0x8a, 0xde, 0x77, 0xc4, 0xfd, 0xa9, 0x77, 0x48, 0x23,
    +	0x5e, 0xed, 0xf4, 0x1f, 0x66, 0xb5, 0xed, 0x9f, 0x00, 0x98, 0x8c, 0xd1, 0x56, 0x23, 0xd2, 0x46,
    +	0xaf, 0x1a, 0x21, 0xb8, 0xce, 0x26, 0x42, 0x70, 0x8d, 0x32, 0x6c, 0x4d, 0xe1, 0xfe, 0x2d, 0x28,
    +	0xb7, 0x9d, 0x87, 0x42, 0xa3, 0xfa, 0x72, 0x71, 0x37, 0x28, 0xfd, 0xb9, 0x35, 0xe7, 0x21, 0xbf,
    +	0xc1, 0xbf, 0x2c, 0x77, 0xe7, 0x9a, 0xf3, 0xb0, 0xe7, 0x1b, 0x04, 0xda, 0x08, 0x6b, 0xcb, 0xf5,
    +	0x84, 0x53, 0x61, 0x5f, 0x6d, 0xb9, 0x5e, 0xb2, 0x2d, 0xd7, 0xeb, 0xa3, 0x2d, 0xd7, 0x43, 0x8f,
    +	0x60, 0x58, 0xf8, 0xfc, 0x8a, 0xd8, 0xa0, 0x57, 0xfa, 0x68, 0x4f, 0xb8, 0x0c, 0xf3, 0x36, 0xaf,
    +	0x48, 0x0d, 0x85, 0x28, 0xed, 0xd9, 0xae, 0x6c, 0x10, 0xfd, 0x35, 0x0b, 0x26, 0xc5, 0x6f, 0xf1,
    +	0x9c, 0x56, 0x48, 0xf0, 0x9f, 0xef, 0xbf, 0x0f, 0xa2, 0x22, 0xef, 0xca, 0xe7, 0xe5, 0x61, 0x6b,
    +	0x02, 0x7b, 0xf6, 0x28, 0xd1, 0x0b, 0xf4, 0xf7, 0x2d, 0x38, 0xd9, 0x76, 0x1e, 0xf2, 0x16, 0x79,
    +	0x19, 0x76, 0x22, 0xd7, 0x17, 0x6e, 0x2e, 0xef, 0xf4, 0x37, 0xfd, 0xa9, 0xea, 0xbc, 0x93, 0xd2,
    +	0xba, 0x7c, 0x32, 0x0b, 0xa5, 0x67, 0x57, 0x33, 0xfb, 0x35, 0xbb, 0x09, 0x23, 0x72, 0xbd, 0x3d,
    +	0xcd, 0x07, 0x0d, 0xac, 0x1d, 0xb1, 0xd6, 0x9e, 0x6a, 0x3b, 0xdf, 0x82, 0x71, 0x7d, 0x8d, 0x3d,
    +	0xd5, 0xb6, 0x3e, 0x82, 0x13, 0x19, 0x6b, 0xe9, 0xa9, 0x36, 0xf9, 0x00, 0xce, 0xe6, 0xae, 0x8f,
    +	0xa7, 0xfa, 0x20, 0xe5, 0x57, 0x2d, 0x9d, 0x0f, 0x1e, 0x83, 0x29, 0x6a, 0xd1, 0x34, 0x45, 0x5d,
    +	0x28, 0xde, 0x39, 0x39, 0xf6, 0xa8, 0x0f, 0xf5, 0x4e, 0x53, 0xae, 0x8e, 0xde, 0x87, 0xa1, 0x16,
    +	0x2d, 0x91, 0x9e, 0xe3, 0x76, 0xef, 0x1d, 0x19, 0x4b, 0xd4, 0xac, 0x3c, 0xc4, 0x82, 0x82, 0xfd,
    +	0x33, 0x16, 0x64, 0x3c, 0xa9, 0xa1, 0x12, 0x56, 0xd7, 0x6d, 0xb2, 0x21, 0x29, 0xc7, 0x12, 0x96,
    +	0x8a, 0x50, 0x75, 0x1e, 0xca, 0x5b, 0x6e, 0x53, 0xbc, 0xd6, 0x57, 0xe0, 0xeb, 0x14, 0xbc, 0xe5,
    +	0x36, 0xd1, 0x0a, 0xa0, 0xb0, 0xdb, 0xe9, 0xb4, 0x98, 0x67, 0x98, 0xd3, 0xba, 0x1e, 0xf8, 0xdd,
    +	0x0e, 0x77, 0x13, 0x2f, 0x73, 0xf5, 0x52, 0x3d, 0x05, 0xc5, 0x19, 0x35, 0xec, 0x7f, 0x64, 0xc1,
    +	0xc0, 0x31, 0x4c, 0x13, 0x36, 0xa7, 0xe9, 0xd5, 0x5c, 0xd2, 0x22, 0xa5, 0xcc, 0x1c, 0x76, 0x1e,
    +	0xb0, 0x70, 0x0d, 0x21, 0x13, 0x38, 0x32, 0x67, 0x6d, 0xdf, 0x82, 0x13, 0xb7, 0x7c, 0xa7, 0xb9,
    +	0xe0, 0xb4, 0x1c, 0xaf, 0x41, 0x82, 0x55, 0x6f, 0xeb, 0x48, 0x6f, 0x32, 0x4a, 0x3d, 0xdf, 0x64,
    +	0x5c, 0x83, 0x21, 0xb7, 0xa3, 0xe5, 0xa4, 0xb8, 0x48, 0x67, 0x77, 0xb5, 0x26, 0xd2, 0x51, 0x20,
    +	0xa3, 0x71, 0x56, 0x8a, 0x05, 0x3e, 0x5d, 0x96, 0xdc, 0x6f, 0x71, 0x20, 0x7f, 0x59, 0xd2, 0x5b,
    +	0x52, 0x32, 0xd6, 0xa2, 0xe1, 0xb6, 0xbf, 0x0d, 0x46, 0x13, 0xe2, 0x91, 0x1a, 0x86, 0x61, 0x97,
    +	0x7f, 0xa9, 0x58, 0x9b, 0x2f, 0x66, 0xdf, 0x5e, 0x52, 0x03, 0xa3, 0xbd, 0xc6, 0xe4, 0x05, 0x58,
    +	0x12, 0xb2, 0xaf, 0x41, 0x66, 0x6c, 0xac, 0xde, 0x9a, 0x29, 0xfb, 0x2b, 0x30, 0xc3, 0x6a, 0x1e,
    +	0x51, 0xeb, 0x63, 0x27, 0xf4, 0xe9, 0x19, 0xe1, 0xc5, 0xed, 0xff, 0xc5, 0x02, 0xb4, 0xe6, 0x37,
    +	0xdd, 0xcd, 0x3d, 0x41, 0x9c, 0x7f, 0xff, 0x47, 0x50, 0xe5, 0xd7, 0xea, 0x64, 0x08, 0xee, 0xc5,
    +	0x96, 0x13, 0x86, 0x9a, 0x2e, 0xff, 0x45, 0xd1, 0x6e, 0x75, 0xa3, 0x18, 0x1d, 0xf7, 0xa2, 0x87,
    +	0x3e, 0x48, 0x44, 0x44, 0xfd, 0x62, 0x2a, 0x22, 0xea, 0x8b, 0x99, 0x4e, 0x40, 0xe9, 0xde, 0xcb,
    +	0x48, 0xa9, 0xf6, 0x77, 0x2d, 0x98, 0x5a, 0x4f, 0x84, 0x94, 0xbe, 0xc4, 0x3c, 0x22, 0x32, 0x6c,
    +	0x54, 0x75, 0x56, 0x8a, 0x05, 0xf4, 0x89, 0xeb, 0x70, 0xff, 0xd4, 0x82, 0x38, 0x16, 0xdf, 0x31,
    +	0x88, 0xdc, 0x8b, 0x86, 0xc8, 0x9d, 0x79, 0x7d, 0x51, 0xdd, 0xc9, 0x93, 0xb8, 0xd1, 0x4d, 0x35,
    +	0x27, 0x05, 0x37, 0x97, 0x98, 0x0c, 0xdf, 0x67, 0x93, 0xe6, 0xc4, 0xa9, 0xd9, 0xf8, 0xfd, 0x12,
    +	0x20, 0x85, 0xdb, 0x77, 0x14, 0xdd, 0x74, 0x8d, 0x27, 0x13, 0x45, 0x77, 0x17, 0x10, 0xf3, 0xe9,
    +	0x09, 0x1c, 0x2f, 0xe4, 0x64, 0x5d, 0xa1, 0xb5, 0x3e, 0x9a, 0xc3, 0x90, 0x72, 0x89, 0xbd, 0x95,
    +	0xa2, 0x86, 0x33, 0x5a, 0xd0, 0x7c, 0xb5, 0x06, 0xfb, 0xf5, 0xd5, 0x1a, 0xea, 0xf1, 0xe8, 0xfe,
    +	0x57, 0x2c, 0x98, 0x50, 0xc3, 0xf4, 0x09, 0x79, 0xba, 0xa3, 0xfa, 0x93, 0x73, 0xae, 0xd4, 0xb4,
    +	0x2e, 0x33, 0x61, 0xe0, 0x47, 0x58, 0xf0, 0x04, 0xa7, 0xe5, 0x3e, 0x22, 0x2a, 0xd8, 0x7b, 0x55,
    +	0x04, 0x43, 0x10, 0xa5, 0x87, 0xfb, 0xd5, 0x09, 0xf5, 0x8f, 0xfb, 0x23, 0xc4, 0x55, 0xec, 0xbf,
    +	0x4d, 0x37, 0xbb, 0xb9, 0x14, 0xd1, 0x9b, 0x30, 0xd8, 0xd9, 0x76, 0x42, 0x92, 0x78, 0xe2, 0x38,
    +	0x58, 0xa3, 0x85, 0x87, 0xfb, 0xd5, 0x49, 0x55, 0x81, 0x95, 0x60, 0x8e, 0xdd, 0x7f, 0x6c, 0xe2,
    +	0xf4, 0xe2, 0xec, 0x19, 0x9b, 0xf8, 0xdf, 0x59, 0x30, 0xb0, 0x4e, 0x4f, 0xaf, 0xa7, 0xcf, 0x02,
    +	0xde, 0x35, 0x58, 0xc0, 0xb9, 0xbc, 0xb4, 0x67, 0xb9, 0xbb, 0x7f, 0x25, 0xb1, 0xfb, 0x2f, 0xe4,
    +	0x52, 0x28, 0xde, 0xf8, 0x6d, 0x18, 0x63, 0xc9, 0xd4, 0xc4, 0x73, 0xce, 0xd7, 0x8d, 0x0d, 0x5f,
    +	0x4d, 0x6c, 0xf8, 0x29, 0x0d, 0x55, 0xdb, 0xe9, 0x2f, 0xc1, 0xb0, 0x78, 0x1f, 0x98, 0x8c, 0x41,
    +	0x21, 0x70, 0xb1, 0x84, 0xdb, 0x3f, 0x57, 0x06, 0x23, 0x79, 0x1b, 0xfa, 0x27, 0x16, 0xcc, 0x05,
    +	0xdc, 0xc5, 0xbf, 0xb9, 0xd4, 0x0d, 0x5c, 0x6f, 0xab, 0xde, 0xd8, 0x26, 0xcd, 0x6e, 0xcb, 0xf5,
    +	0xb6, 0x56, 0xb7, 0x3c, 0x5f, 0x15, 0x2f, 0x3f, 0x24, 0x8d, 0xae, 0x8a, 0xdb, 0x53, 0x90, 0x29,
    +	0x4e, 0x3d, 0x93, 0x79, 0xed, 0x60, 0xbf, 0x3a, 0x87, 0x8f, 0x44, 0x1b, 0x1f, 0xb1, 0x2f, 0xe8,
    +	0x9f, 0x5b, 0x70, 0x85, 0x27, 0x11, 0xeb, 0xbf, 0xff, 0x05, 0x1a, 0x8e, 0x9a, 0x24, 0x15, 0x13,
    +	0xd9, 0x20, 0x41, 0x7b, 0xe1, 0x0b, 0x62, 0x40, 0xaf, 0xd4, 0x8e, 0xd6, 0x16, 0x3e, 0x6a, 0xe7,
    +	0xec, 0xff, 0xa6, 0x0c, 0x13, 0x22, 0x86, 0xad, 0x38, 0x03, 0xde, 0x34, 0x96, 0xc4, 0xb3, 0x89,
    +	0x25, 0x31, 0x63, 0x20, 0x3f, 0x19, 0xf6, 0x1f, 0xc2, 0x0c, 0x65, 0xce, 0x37, 0x88, 0x13, 0x44,
    +	0xf7, 0x89, 0xc3, 0x5d, 0x30, 0xcb, 0x47, 0xe6, 0xfe, 0x4a, 0xb1, 0x7e, 0x2b, 0x49, 0x0c, 0xa7,
    +	0xe9, 0xff, 0x30, 0x9d, 0x39, 0x1e, 0x4c, 0xa7, 0xc2, 0x10, 0x7f, 0x15, 0x46, 0xd5, 0xe3, 0x36,
    +	0xc1, 0x74, 0x8a, 0xa3, 0x79, 0x27, 0x29, 0x70, 0xa5, 0x67, 0xfc, 0xb0, 0x32, 0x26, 0x67, 0xff,
    +	0x72, 0xc9, 0x68, 0x90, 0x4f, 0xe2, 0x3a, 0x8c, 0x38, 0x21, 0xcb, 0x30, 0xd0, 0x2c, 0xd2, 0x68,
    +	0xa7, 0x9a, 0x61, 0x7e, 0x66, 0xf3, 0xa2, 0x26, 0x56, 0x34, 0xd0, 0x0d, 0xee, 0xe8, 0xba, 0x4b,
    +	0x8a, 0xd4, 0xd9, 0x29, 0x6a, 0x20, 0x5d, 0x61, 0x77, 0x09, 0x16, 0xf5, 0xd1, 0xd7, 0xb9, 0x27,
    +	0xf2, 0x4d, 0xcf, 0x7f, 0xe0, 0x5d, 0xf7, 0x7d, 0x19, 0x04, 0xaa, 0x3f, 0x82, 0x33, 0xd2, 0xff,
    +	0x58, 0x55, 0xc7, 0x26, 0xb5, 0xfe, 0xe2, 0xfa, 0xff, 0x28, 0xb0, 0xa4, 0x49, 0x66, 0x2c, 0x89,
    +	0x10, 0x11, 0x98, 0x12, 0x01, 0x92, 0x65, 0x99, 0x18, 0xbb, 0xcc, 0xeb, 0xb7, 0x59, 0x3b, 0xb6,
    +	0x00, 0xdd, 0x34, 0x49, 0xe0, 0x24, 0x4d, 0x7b, 0x9b, 0x33, 0xe1, 0x15, 0xe2, 0x44, 0xdd, 0x80,
    +	0x84, 0xe8, 0xcb, 0x50, 0x49, 0xdf, 0x8c, 0x85, 0x21, 0xc5, 0x62, 0xd2, 0xf3, 0xb9, 0x83, 0xfd,
    +	0x6a, 0xa5, 0x9e, 0x83, 0x83, 0x73, 0x6b, 0xdb, 0x3f, 0x6f, 0x01, 0x7b, 0xc1, 0x7f, 0x0c, 0x92,
    +	0xcf, 0x97, 0x4c, 0xc9, 0xa7, 0x92, 0x37, 0x9d, 0x39, 0x42, 0xcf, 0x1b, 0x7c, 0x0d, 0xd7, 0x02,
    +	0xff, 0xe1, 0x9e, 0xf0, 0xfa, 0xea, 0x7d, 0x8d, 0xb3, 0xbf, 0x67, 0x01, 0xcb, 0x30, 0x86, 0xf9,
    +	0xad, 0x5d, 0x1a, 0x38, 0x7a, 0x3b, 0x34, 0x7c, 0x19, 0x46, 0x36, 0xc5, 0xf0, 0x67, 0x28, 0x9d,
    +	0x8c, 0x0e, 0x9b, 0xb4, 0xe5, 0xa4, 0x89, 0x97, 0xb8, 0xe2, 0x1f, 0x56, 0xd4, 0xec, 0xff, 0xd2,
    +	0x82, 0xd9, 0xfc, 0x6a, 0xe8, 0x0e, 0x9c, 0x09, 0x48, 0xa3, 0x1b, 0x84, 0x74, 0x4b, 0x88, 0x0b,
    +	0x90, 0x78, 0x01, 0xc6, 0xa7, 0xfa, 0x99, 0x83, 0xfd, 0xea, 0x19, 0x9c, 0x8d, 0x82, 0xf3, 0xea,
    +	0xa2, 0xb7, 0x60, 0xb2, 0x1b, 0x72, 0xc9, 0x8f, 0x09, 0x5d, 0xa1, 0x08, 0x63, 0xcf, 0x1e, 0x49,
    +	0xdd, 0x31, 0x20, 0x38, 0x81, 0x69, 0xff, 0x79, 0xbe, 0x1c, 0x95, 0xc7, 0x6b, 0x1b, 0x66, 0x3c,
    +	0xed, 0x3f, 0x3d, 0x01, 0xe5, 0x55, 0xff, 0xf9, 0x5e, 0xa7, 0x3e, 0x3b, 0x2e, 0xb5, 0x18, 0x03,
    +	0x09, 0x32, 0x38, 0x4d, 0xd9, 0xfe, 0x9b, 0x16, 0x9c, 0xd1, 0x11, 0xb5, 0x17, 0x87, 0xbd, 0xac,
    +	0x80, 0x4b, 0x5a, 0x00, 0x3e, 0x7e, 0xcc, 0x5d, 0xce, 0x08, 0xc0, 0x77, 0x52, 0xa7, 0x5e, 0x18,
    +	0x6d, 0x8f, 0xbf, 0x2d, 0xcd, 0x8a, 0xb6, 0xf7, 0x47, 0x16, 0x5f, 0x9f, 0x7a, 0xd7, 0xd1, 0x47,
    +	0x30, 0xdd, 0x76, 0xa2, 0xc6, 0xf6, 0xf2, 0xc3, 0x4e, 0xc0, 0x8d, 0xbb, 0x72, 0x9c, 0x5e, 0xee,
    +	0x35, 0x4e, 0xda, 0x47, 0xc6, 0xde, 0xe0, 0x6b, 0x09, 0x62, 0x38, 0x45, 0x1e, 0xdd, 0x87, 0x31,
    +	0x56, 0xc6, 0xde, 0x62, 0x87, 0x45, 0xb2, 0x4c, 0x5e, 0x6b, 0xca, 0x39, 0x68, 0x2d, 0xa6, 0x83,
    +	0x75, 0xa2, 0xf6, 0x2f, 0x95, 0x39, 0xd3, 0x60, 0x77, 0x8f, 0x97, 0x60, 0xb8, 0xe3, 0x37, 0x17,
    +	0x57, 0x97, 0xb0, 0x98, 0x05, 0x75, 0xee, 0xd5, 0x78, 0x31, 0x96, 0x70, 0x74, 0x19, 0x46, 0xc4,
    +	0x4f, 0x69, 0x8c, 0x67, 0x7b, 0x44, 0xe0, 0x85, 0x58, 0x41, 0xd1, 0x6b, 0x00, 0x9d, 0xc0, 0xdf,
    +	0x75, 0x9b, 0x2c, 0xf6, 0x56, 0xd9, 0xf4, 0xeb, 0xab, 0x29, 0x08, 0xd6, 0xb0, 0xd0, 0xdb, 0x30,
    +	0xd1, 0xf5, 0x42, 0x2e, 0x3f, 0x69, 0xc9, 0x38, 0x94, 0xc7, 0xd9, 0x1d, 0x1d, 0x88, 0x4d, 0x5c,
    +	0x34, 0x0f, 0x43, 0x91, 0xc3, 0xfc, 0xd4, 0x06, 0xf3, 0x5f, 0x0c, 0x6c, 0x50, 0x0c, 0x3d, 0xed,
    +	0x25, 0xad, 0x80, 0x45, 0x45, 0xf4, 0x55, 0x19, 0x16, 0x81, 0x9f, 0x44, 0xe2, 0xa9, 0x4e, 0x7f,
    +	0xa7, 0x96, 0x16, 0x14, 0x41, 0x3c, 0x01, 0x32, 0x68, 0xa1, 0xb7, 0x00, 0xc8, 0xc3, 0x88, 0x04,
    +	0x9e, 0xd3, 0x52, 0xde, 0xa5, 0x4a, 0x90, 0x59, 0xf2, 0xd7, 0xfd, 0xe8, 0x4e, 0x48, 0x96, 0x15,
    +	0x06, 0xd6, 0xb0, 0xed, 0x9f, 0x18, 0x03, 0x88, 0x2f, 0x1a, 0xe8, 0x11, 0x8c, 0x34, 0x9c, 0x8e,
    +	0xd3, 0xe0, 0x39, 0x9d, 0xcb, 0x79, 0x0f, 0xcb, 0xe3, 0x1a, 0x73, 0x8b, 0x02, 0x9d, 0x1b, 0x6f,
    +	0x64, 0x3e, 0x83, 0x11, 0x59, 0xdc, 0xd3, 0x60, 0xa3, 0xda, 0x43, 0xdf, 0xb1, 0x60, 0x4c, 0xc4,
    +	0xb6, 0x62, 0x33, 0x54, 0xca, 0xb7, 0xb7, 0x69, 0xed, 0xcf, 0xc7, 0x35, 0x78, 0x17, 0x5e, 0x97,
    +	0x2b, 0x54, 0x83, 0xf4, 0xec, 0x85, 0xde, 0x30, 0xfa, 0x9c, 0xbc, 0xdb, 0x96, 0x8d, 0xa1, 0x54,
    +	0x77, 0xdb, 0x51, 0x76, 0xd4, 0xe8, 0xd7, 0xda, 0x3b, 0xc6, 0xb5, 0x76, 0x20, 0xff, 0x89, 0xb6,
    +	0x21, 0x6f, 0xf7, 0xba, 0xd1, 0xa2, 0x9a, 0x1e, 0x03, 0x66, 0x30, 0xff, 0x85, 0xaf, 0x76, 0xb1,
    +	0xeb, 0x11, 0xff, 0xe5, 0x5b, 0x30, 0xd5, 0x34, 0xa5, 0x16, 0xb1, 0x12, 0x5f, 0xcc, 0xa3, 0x9b,
    +	0x10, 0x72, 0x62, 0x39, 0x25, 0x01, 0xc0, 0x49, 0xc2, 0xa8, 0xc6, 0x43, 0x02, 0xad, 0x7a, 0x9b,
    +	0xbe, 0x78, 0x2e, 0x66, 0xe7, 0xce, 0xe5, 0x5e, 0x18, 0x91, 0x36, 0xc5, 0x8c, 0x85, 0x84, 0x75,
    +	0x51, 0x17, 0x2b, 0x2a, 0xe8, 0x7d, 0x18, 0x62, 0x4f, 0x3c, 0xc3, 0xca, 0x48, 0xbe, 0x59, 0xc3,
    +	0x8c, 0x2e, 0x1c, 0x6f, 0x48, 0xf6, 0x37, 0xc4, 0x82, 0x02, 0xba, 0x21, 0x1f, 0x50, 0x87, 0xab,
    +	0xde, 0x9d, 0x90, 0xb0, 0x07, 0xd4, 0xa3, 0x0b, 0xcf, 0xc7, 0x6f, 0xa3, 0x79, 0x79, 0x66, 0x72,
    +	0x6c, 0xa3, 0x26, 0x15, 0xfb, 0xc4, 0x7f, 0x99, 0x73, 0x5b, 0x44, 0xea, 0xcb, 0xec, 0x9e, 0x99,
    +	0x97, 0x3b, 0x1e, 0xce, 0xbb, 0x26, 0x09, 0x9c, 0xa4, 0x49, 0x45, 0x68, 0xbe, 0xeb, 0xc5, 0x83,
    +	0xb3, 0x5e, 0xbc, 0x83, 0x6b, 0x0e, 0xd8, 0x69, 0xc4, 0x4b, 0xb0, 0xa8, 0x8f, 0x5c, 0x98, 0x0a,
    +	0x0c, 0xf1, 0x42, 0x06, 0xd8, 0xbb, 0xd4, 0x9f, 0x10, 0xa3, 0x65, 0x19, 0x31, 0xc9, 0xe0, 0x24,
    +	0x5d, 0xf4, 0xbe, 0x26, 0x28, 0x4d, 0x14, 0xdf, 0xfc, 0x7b, 0x89, 0x46, 0xb3, 0x3b, 0x30, 0x61,
    +	0x30, 0x9b, 0xa7, 0x6a, 0x82, 0xf4, 0x60, 0x3a, 0xc9, 0x59, 0x9e, 0xaa, 0xe5, 0xf1, 0x2d, 0x98,
    +	0x64, 0x1b, 0xe1, 0x81, 0xd3, 0x11, 0xac, 0xf8, 0xb2, 0xc1, 0x8a, 0xad, 0xcb, 0x65, 0x3e, 0x30,
    +	0x72, 0x08, 0x62, 0xc6, 0x69, 0xff, 0x9d, 0x41, 0x51, 0x59, 0xed, 0x22, 0x74, 0x05, 0x46, 0x45,
    +	0x07, 0x54, 0xaa, 0x3e, 0xc5, 0x18, 0xd6, 0x24, 0x00, 0xc7, 0x38, 0x2c, 0x43, 0x23, 0xab, 0xae,
    +	0xbd, 0x50, 0x88, 0x33, 0x34, 0x2a, 0x08, 0xd6, 0xb0, 0xe8, 0xe5, 0xf7, 0xbe, 0xef, 0x47, 0xea,
    +	0x0c, 0x56, 0x5b, 0x6d, 0x81, 0x95, 0x62, 0x01, 0xa5, 0x67, 0xef, 0x0e, 0x09, 0x3c, 0xd2, 0x32,
    +	0x73, 0xd5, 0xa8, 0xb3, 0xf7, 0xa6, 0x0e, 0xc4, 0x26, 0x2e, 0x95, 0x20, 0xfc, 0x90, 0xed, 0x5d,
    +	0x71, 0xc5, 0x8e, 0x5f, 0x7c, 0xd4, 0x79, 0x90, 0x0f, 0x09, 0x47, 0x5f, 0x81, 0x33, 0x2a, 0xd8,
    +	0xa6, 0x58, 0x99, 0xb2, 0xc5, 0x21, 0x43, 0x23, 0x76, 0x66, 0x31, 0x1b, 0x0d, 0xe7, 0xd5, 0x47,
    +	0xef, 0xc2, 0xa4, 0xb8, 0x86, 0x49, 0x8a, 0xc3, 0xa6, 0xfb, 0xe2, 0x4d, 0x03, 0x8a, 0x13, 0xd8,
    +	0x32, 0xdb, 0x0e, 0xbb, 0x9f, 0x48, 0x0a, 0x23, 0xe9, 0x6c, 0x3b, 0x3a, 0x1c, 0xa7, 0x6a, 0xa0,
    +	0x79, 0x98, 0xe2, 0x62, 0xa7, 0xeb, 0x6d, 0xf1, 0x39, 0x11, 0x4f, 0x60, 0xd5, 0x86, 0xbc, 0x6d,
    +	0x82, 0x71, 0x12, 0x1f, 0x5d, 0x83, 0x71, 0x27, 0x68, 0x6c, 0xbb, 0x11, 0x69, 0xd0, 0x5d, 0xc5,
    +	0x3c, 0x08, 0x35, 0xff, 0xcf, 0x79, 0x0d, 0x86, 0x0d, 0x4c, 0xf4, 0x1e, 0x0c, 0x84, 0x0f, 0x9c,
    +	0x8e, 0xe0, 0x3e, 0xf9, 0xac, 0x5c, 0xad, 0x60, 0xee, 0xfa, 0x45, 0xff, 0x63, 0x56, 0xd3, 0x7e,
    +	0x04, 0x27, 0x32, 0x82, 0x12, 0xd1, 0xa5, 0xe7, 0x74, 0x5c, 0x39, 0x2a, 0x89, 0x67, 0x1a, 0xf3,
    +	0xb5, 0x55, 0x39, 0x1e, 0x1a, 0x16, 0x5d, 0xdf, 0x2c, 0x78, 0x51, 0x2d, 0x36, 0x24, 0xa9, 0xf5,
    +	0xbd, 0x22, 0x01, 0x38, 0xc6, 0xb1, 0xff, 0xa4, 0x04, 0x53, 0x19, 0xe6, 0x41, 0x96, 0x1b, 0x3f,
    +	0x71, 0xcf, 0x8b, 0x53, 0xe1, 0x9b, 0xe9, 0x9f, 0x4a, 0x47, 0x48, 0xff, 0x54, 0xee, 0x95, 0xfe,
    +	0x69, 0xe0, 0xe3, 0xa4, 0x7f, 0x32, 0x47, 0x6c, 0xb0, 0xaf, 0x11, 0xcb, 0x48, 0x19, 0x35, 0x74,
    +	0xc4, 0x94, 0x51, 0xc6, 0xa0, 0x0f, 0xf7, 0x31, 0xe8, 0xff, 0x69, 0x09, 0xa6, 0x93, 0x96, 0xc5,
    +	0x63, 0xd0, 0xce, 0xbf, 0x6f, 0x68, 0xe7, 0x2f, 0xf7, 0x13, 0xf4, 0x20, 0x57, 0x53, 0x8f, 0x13,
    +	0x9a, 0xfa, 0xcf, 0xf6, 0x45, 0xad, 0x58, 0x6b, 0xff, 0xb7, 0x4a, 0x70, 0x2a, 0xd3, 0xe0, 0x7a,
    +	0x0c, 0x63, 0x73, 0xdb, 0x18, 0x9b, 0x57, 0xfb, 0x0e, 0x08, 0x91, 0x3b, 0x40, 0xf7, 0x12, 0x03,
    +	0x74, 0xa5, 0x7f, 0x92, 0xc5, 0xa3, 0xf4, 0xfd, 0x32, 0x5c, 0xc8, 0xac, 0x17, 0x2b, 0xb7, 0x57,
    +	0x0c, 0xe5, 0xf6, 0x6b, 0x09, 0xe5, 0xb6, 0x5d, 0x5c, 0xfb, 0xc9, 0x68, 0xbb, 0x45, 0x60, 0x04,
    +	0x16, 0xde, 0xe5, 0x31, 0x35, 0xdd, 0x46, 0x60, 0x04, 0x45, 0x08, 0x9b, 0x74, 0x7f, 0x98, 0x34,
    +	0xdc, 0xff, 0x83, 0x05, 0x67, 0x33, 0xe7, 0xe6, 0x18, 0xf4, 0x8c, 0xeb, 0xa6, 0x9e, 0xf1, 0xa5,
    +	0xbe, 0x57, 0x6b, 0x8e, 0xe2, 0xf1, 0xbb, 0x43, 0x39, 0xdf, 0xc2, 0xd4, 0x1f, 0xb7, 0x61, 0xcc,
    +	0x69, 0x34, 0x48, 0x18, 0xae, 0xb1, 0x54, 0x13, 0xdc, 0xf6, 0xfa, 0x2a, 0xbb, 0x9c, 0xc6, 0xc5,
    +	0x87, 0xfb, 0xd5, 0xd9, 0x24, 0x89, 0x18, 0x8c, 0x75, 0x0a, 0xe8, 0xeb, 0x30, 0x12, 0xca, 0x24,
    +	0xbf, 0x03, 0x8f, 0x9f, 0xe4, 0x97, 0x49, 0x92, 0x4a, 0xbd, 0xa3, 0x48, 0xa2, 0x3f, 0xa7, 0x87,
    +	0xf7, 0x2a, 0x50, 0x6c, 0xf2, 0x4e, 0x3e, 0x46, 0x90, 0x2f, 0xf3, 0x39, 0x7c, 0xb9, 0xaf, 0xe7,
    +	0xf0, 0xef, 0xc1, 0x74, 0xc8, 0xc3, 0xe5, 0xc6, 0x2e, 0x32, 0x7c, 0x2d, 0xb2, 0x88, 0x83, 0xf5,
    +	0x04, 0x0c, 0xa7, 0xb0, 0xd1, 0x8a, 0x6c, 0x95, 0x39, 0x43, 0xf1, 0xe5, 0x79, 0x29, 0x6e, 0x51,
    +	0x38, 0x44, 0x9d, 0x4c, 0x4e, 0x02, 0x1b, 0x7e, 0xad, 0x26, 0xfa, 0x3a, 0x00, 0x5d, 0x44, 0x42,
    +	0x85, 0x33, 0x9c, 0xcf, 0x42, 0x29, 0x6f, 0x69, 0x66, 0xbe, 0xc0, 0x60, 0x11, 0x0d, 0x96, 0x14,
    +	0x11, 0xac, 0x11, 0x44, 0x0e, 0x4c, 0xc4, 0xff, 0x30, 0xd9, 0x2c, 0x0a, 0xb0, 0xc6, 0x5a, 0x48,
    +	0x12, 0x67, 0xe6, 0x8d, 0x25, 0x9d, 0x04, 0x36, 0x29, 0xa2, 0xaf, 0xc1, 0xd9, 0xdd, 0x5c, 0xbf,
    +	0x23, 0x2e, 0x4b, 0x9e, 0x3f, 0xd8, 0xaf, 0x9e, 0xcd, 0xf7, 0x36, 0xca, 0xaf, 0x6f, 0xff, 0x8f,
    +	0x00, 0xcf, 0x14, 0x70, 0x7a, 0x34, 0x6f, 0xfa, 0x0c, 0xbc, 0x9c, 0xd4, 0xab, 0xcc, 0x66, 0x56,
    +	0x36, 0x14, 0x2d, 0x89, 0x0d, 0x55, 0xfa, 0xd8, 0x1b, 0xea, 0xa7, 0x2c, 0xed, 0x9a, 0xc5, 0x3d,
    +	0xca, 0xbf, 0x74, 0xc4, 0x13, 0xec, 0x09, 0xaa, 0xc0, 0x36, 0x33, 0xf4, 0x48, 0xaf, 0xf5, 0xdd,
    +	0x9d, 0xfe, 0x15, 0x4b, 0xbf, 0x9a, 0x9d, 0x60, 0x80, 0xab, 0x98, 0xae, 0x1f, 0xf5, 0xfb, 0x8f,
    +	0x2b, 0xd9, 0xc0, 0xef, 0x5b, 0x70, 0x36, 0x55, 0xcc, 0xfb, 0x40, 0x42, 0x11, 0xce, 0x70, 0xfd,
    +	0x63, 0x77, 0x5e, 0x12, 0xe4, 0xdf, 0x70, 0x43, 0x7c, 0xc3, 0xd9, 0x5c, 0xbc, 0x64, 0xd7, 0x7f,
    +	0xf2, 0x5f, 0x55, 0x4f, 0xb0, 0x06, 0x4c, 0x44, 0x9c, 0xdf, 0x75, 0xd4, 0x81, 0x8b, 0x8d, 0x6e,
    +	0x10, 0xc4, 0x8b, 0x35, 0x63, 0x73, 0xf2, 0xdb, 0xe2, 0xf3, 0x07, 0xfb, 0xd5, 0x8b, 0x8b, 0x3d,
    +	0x70, 0x71, 0x4f, 0x6a, 0xc8, 0x03, 0xd4, 0x4e, 0x79, 0xf7, 0x31, 0x06, 0x90, 0xa3, 0x05, 0x4a,
    +	0xfb, 0x02, 0x72, 0x3f, 0xdd, 0x0c, 0x1f, 0xc1, 0x0c, 0xca, 0xc7, 0xab, 0xbb, 0xf9, 0xc1, 0x64,
    +	0x33, 0x98, 0xbd, 0x05, 0x17, 0x8a, 0x17, 0xd3, 0x91, 0x42, 0x50, 0xfc, 0x9e, 0x05, 0xe7, 0x0b,
    +	0x43, 0xb3, 0xfd, 0x19, 0xbc, 0x2c, 0xd8, 0xdf, 0xb6, 0xe0, 0xd9, 0xcc, 0x1a, 0xc9, 0xc7, 0x83,
    +	0x0d, 0x5a, 0xa8, 0x39, 0xc3, 0xc6, 0x41, 0x8a, 0x24, 0x00, 0xc7, 0x38, 0x86, 0xbf, 0x68, 0xa9,
    +	0xa7, 0xbf, 0xe8, 0x3f, 0xb5, 0x20, 0x75, 0xd4, 0x1f, 0x83, 0xe4, 0xb9, 0x6a, 0x4a, 0x9e, 0xcf,
    +	0xf7, 0x33, 0x9a, 0x39, 0x42, 0xe7, 0xbf, 0x9d, 0x82, 0xd3, 0x39, 0x2f, 0xc8, 0x77, 0x61, 0x66,
    +	0xab, 0x41, 0xcc, 0x90, 0x21, 0x45, 0xd1, 0xff, 0x0a, 0xe3, 0x8b, 0x2c, 0x9c, 0x3a, 0xd8, 0xaf,
    +	0xce, 0xa4, 0x50, 0x70, 0xba, 0x09, 0xf4, 0x6d, 0x0b, 0x4e, 0x3a, 0x0f, 0xc2, 0x65, 0x7a, 0x83,
    +	0x70, 0x1b, 0x0b, 0x2d, 0xbf, 0xb1, 0x43, 0x05, 0x33, 0xb9, 0xad, 0xde, 0xc8, 0x54, 0x85, 0xdf,
    +	0xab, 0xa7, 0xf0, 0x8d, 0xe6, 0x2b, 0x07, 0xfb, 0xd5, 0x93, 0x59, 0x58, 0x38, 0xb3, 0x2d, 0x84,
    +	0x45, 0x0e, 0x3f, 0x27, 0xda, 0x2e, 0x0a, 0x6a, 0x93, 0xf5, 0xd4, 0x9f, 0x8b, 0xc4, 0x12, 0x82,
    +	0x15, 0x1d, 0xf4, 0x4d, 0x18, 0xdd, 0x92, 0xf1, 0x2b, 0x32, 0x44, 0xee, 0x78, 0x20, 0x8b, 0xa3,
    +	0x7a, 0x70, 0x07, 0x1c, 0x85, 0x84, 0x63, 0xa2, 0xe8, 0x5d, 0x28, 0x7b, 0x9b, 0x61, 0x51, 0x08,
    +	0xe9, 0x84, 0xa7, 0x35, 0x8f, 0x76, 0xb5, 0xbe, 0x52, 0xc7, 0xb4, 0x22, 0xba, 0x01, 0xe5, 0xe0,
    +	0x7e, 0x53, 0xd8, 0x71, 0x32, 0x37, 0x29, 0x5e, 0x58, 0xca, 0xe9, 0x15, 0xa3, 0x84, 0x17, 0x96,
    +	0x30, 0x25, 0x81, 0x6a, 0x30, 0xc8, 0x9e, 0x5d, 0x0b, 0xd1, 0x36, 0xf3, 0x2a, 0x5f, 0x10, 0xbe,
    +	0x80, 0xbf, 0x87, 0x64, 0x08, 0x98, 0x13, 0x42, 0x1b, 0x30, 0xd4, 0x70, 0xbd, 0x26, 0x09, 0x84,
    +	0x2c, 0xfb, 0xb9, 0x4c, 0x8b, 0x0d, 0xc3, 0xc8, 0xa1, 0xc9, 0x0d, 0x18, 0x0c, 0x03, 0x0b, 0x5a,
    +	0x8c, 0x2a, 0xe9, 0x6c, 0x6f, 0xca, 0x13, 0x2b, 0x9b, 0x2a, 0xe9, 0x6c, 0xaf, 0xd4, 0x0b, 0xa9,
    +	0x32, 0x0c, 0x2c, 0x68, 0xa1, 0xb7, 0xa0, 0xb4, 0xd9, 0x10, 0x4f, 0xaa, 0x33, 0xd5, 0x9b, 0x66,
    +	0xc0, 0xb2, 0x85, 0xa1, 0x83, 0xfd, 0x6a, 0x69, 0x65, 0x11, 0x97, 0x36, 0x1b, 0x68, 0x1d, 0x86,
    +	0x37, 0x79, 0xbc, 0x20, 0xa1, 0x1f, 0x7d, 0x31, 0x3b, 0x94, 0x51, 0x2a, 0xa4, 0x10, 0x7f, 0xdb,
    +	0x2a, 0x00, 0x58, 0x12, 0x61, 0x09, 0xcf, 0x54, 0xdc, 0x23, 0x11, 0x29, 0x76, 0xee, 0x68, 0xb1,
    +	0xaa, 0x44, 0xa0, 0x71, 0x45, 0x05, 0x6b, 0x14, 0xe9, 0xaa, 0x76, 0x1e, 0x75, 0x03, 0x96, 0x11,
    +	0x45, 0x18, 0x66, 0x32, 0x57, 0xf5, 0xbc, 0x44, 0x2a, 0x5a, 0xd5, 0x0a, 0x09, 0xc7, 0x44, 0xd1,
    +	0x0e, 0x4c, 0xec, 0x86, 0x9d, 0x6d, 0x22, 0xb7, 0x34, 0x8b, 0x30, 0x98, 0x23, 0xcd, 0xde, 0x15,
    +	0x88, 0x6e, 0x10, 0x75, 0x9d, 0x56, 0x8a, 0x0b, 0xb1, 0x6b, 0xcd, 0x5d, 0x9d, 0x18, 0x36, 0x69,
    +	0xd3, 0xe1, 0xff, 0xa8, 0xeb, 0xdf, 0xdf, 0x8b, 0x88, 0x08, 0xf0, 0x9a, 0x39, 0xfc, 0x1f, 0x70,
    +	0x94, 0xf4, 0xf0, 0x0b, 0x00, 0x96, 0x44, 0xd0, 0x5d, 0x31, 0x3c, 0x8c, 0x7b, 0x4e, 0xe7, 0x07,
    +	0xc2, 0x9f, 0x97, 0x48, 0x39, 0x83, 0xc2, 0xb8, 0x65, 0x4c, 0x8a, 0x71, 0xc9, 0xce, 0xb6, 0x1f,
    +	0xf9, 0x5e, 0x82, 0x43, 0xcf, 0xe4, 0x73, 0xc9, 0x5a, 0x06, 0x7e, 0x9a, 0x4b, 0x66, 0x61, 0xe1,
    +	0xcc, 0xb6, 0x50, 0x13, 0x26, 0x3b, 0x7e, 0x10, 0x3d, 0xf0, 0x03, 0xb9, 0xbe, 0x50, 0x81, 0xa2,
    +	0xd4, 0xc0, 0x14, 0x2d, 0x32, 0xb7, 0x20, 0x13, 0x82, 0x13, 0x34, 0xd1, 0x97, 0x61, 0x38, 0x6c,
    +	0x38, 0x2d, 0xb2, 0x7a, 0xbb, 0x72, 0x22, 0xff, 0xf8, 0xa9, 0x73, 0x94, 0x9c, 0xd5, 0xc5, 0xc3,
    +	0x3d, 0x71, 0x14, 0x2c, 0xc9, 0xa1, 0x15, 0x18, 0x64, 0x39, 0xef, 0x59, 0x34, 0xe2, 0x9c, 0x78,
    +	0xfe, 0xa9, 0x47, 0x3d, 0x9c, 0x37, 0xb1, 0x62, 0xcc, 0xab, 0xd3, 0x3d, 0x20, 0x34, 0x05, 0x7e,
    +	0x58, 0x39, 0x95, 0xbf, 0x07, 0x84, 0x82, 0xe1, 0x76, 0xbd, 0x68, 0x0f, 0x28, 0x24, 0x1c, 0x13,
    +	0xa5, 0x9c, 0x99, 0x72, 0xd3, 0xd3, 0x05, 0x0e, 0x9b, 0xb9, 0xbc, 0x94, 0x71, 0x66, 0xca, 0x49,
    +	0x29, 0x09, 0xfb, 0x37, 0x47, 0xd2, 0x32, 0x0b, 0xd3, 0x30, 0xfd, 0xc7, 0x56, 0xca, 0x63, 0xe3,
    +	0xf3, 0xfd, 0x2a, 0xbc, 0x9f, 0xe0, 0xc5, 0xf5, 0xdb, 0x16, 0x9c, 0xee, 0x64, 0x7e, 0x88, 0x10,
    +	0x00, 0xfa, 0xd3, 0x9b, 0xf3, 0x4f, 0x57, 0x91, 0xab, 0xb3, 0xe1, 0x38, 0xa7, 0xa5, 0xa4, 0x72,
    +	0xa0, 0xfc, 0xb1, 0x95, 0x03, 0x6b, 0x30, 0xd2, 0xe0, 0x37, 0x39, 0x99, 0x3c, 0xa2, 0xaf, 0xb8,
    +	0xab, 0xdc, 0x4e, 0x2b, 0x2a, 0x62, 0x45, 0x02, 0xfd, 0xb4, 0x05, 0xe7, 0x93, 0x5d, 0xc7, 0x84,
    +	0x81, 0x85, 0xbb, 0x26, 0x57, 0x6b, 0xad, 0x88, 0xef, 0x4f, 0xc9, 0xff, 0x06, 0xf2, 0x61, 0x2f,
    +	0x04, 0x5c, 0xdc, 0x18, 0x5a, 0xca, 0xd0, 0xab, 0x0d, 0x99, 0x36, 0xc9, 0x3e, 0x74, 0x6b, 0x6f,
    +	0xc0, 0x78, 0xdb, 0xef, 0x7a, 0x91, 0xf0, 0xba, 0x14, 0xae, 0x5b, 0xcc, 0x65, 0x69, 0x4d, 0x2b,
    +	0xc7, 0x06, 0x56, 0x42, 0x23, 0x37, 0xf2, 0xd8, 0x1a, 0xb9, 0x0f, 0x61, 0xdc, 0xd3, 0x1e, 0x24,
    +	0x14, 0xdd, 0x60, 0x85, 0x76, 0x51, 0xc3, 0xe6, 0xbd, 0xd4, 0x4b, 0xb0, 0x41, 0xad, 0x58, 0x5b,
    +	0x06, 0x1f, 0x4f, 0x5b, 0x76, 0xac, 0x57, 0x62, 0xfb, 0xef, 0x95, 0x32, 0x6e, 0x0c, 0x5c, 0x2b,
    +	0xf7, 0x8e, 0xa9, 0x95, 0xbb, 0x94, 0xd4, 0xca, 0xa5, 0x4c, 0x55, 0x86, 0x42, 0xae, 0xff, 0x0c,
    +	0xa6, 0x7d, 0xc7, 0xd2, 0xfe, 0x0b, 0x16, 0x9c, 0x61, 0xb6, 0x0f, 0xda, 0xc0, 0xc7, 0xb6, 0x77,
    +	0x30, 0x87, 0xd8, 0x5b, 0xd9, 0xe4, 0x70, 0x5e, 0x3b, 0x76, 0x0b, 0x2e, 0xf6, 0x3a, 0x77, 0x99,
    +	0x7f, 0x71, 0x53, 0xb9, 0x57, 0xc4, 0xfe, 0xc5, 0xcd, 0xd5, 0x25, 0xcc, 0x20, 0xfd, 0x86, 0x5d,
    +	0xb4, 0xff, 0x4f, 0x0b, 0xca, 0x35, 0xbf, 0x79, 0x0c, 0x37, 0xfa, 0x2f, 0x19, 0x37, 0xfa, 0x67,
    +	0xb2, 0x4f, 0xfc, 0x66, 0xae, 0xb1, 0x6f, 0x39, 0x61, 0xec, 0x3b, 0x9f, 0x47, 0xa0, 0xd8, 0xb4,
    +	0xf7, 0xb7, 0xcb, 0x30, 0x56, 0xf3, 0x9b, 0x6a, 0x9f, 0xfd, 0x77, 0x8f, 0xf3, 0x8c, 0x28, 0x37,
    +	0x67, 0x99, 0x46, 0x99, 0xf9, 0x13, 0xcb, 0xa8, 0x17, 0x7f, 0xc6, 0x5e, 0x13, 0xdd, 0x23, 0xee,
    +	0xd6, 0x76, 0x44, 0x9a, 0xc9, 0xcf, 0x39, 0xbe, 0xd7, 0x44, 0x7f, 0x58, 0x86, 0xa9, 0x44, 0xeb,
    +	0xa8, 0x05, 0x13, 0x2d, 0xdd, 0x94, 0x24, 0xd6, 0xe9, 0x63, 0x59, 0xa1, 0xc4, 0x6b, 0x0c, 0xad,
    +	0x08, 0x9b, 0xc4, 0xd1, 0x1c, 0x80, 0xa7, 0xfb, 0xa4, 0xab, 0x98, 0xd0, 0x9a, 0x3f, 0xba, 0x86,
    +	0x81, 0xde, 0x84, 0xb1, 0xc8, 0xef, 0xf8, 0x2d, 0x7f, 0x6b, 0xef, 0xa6, 0x8a, 0x8f, 0xac, 0x5c,
    +	0x96, 0x37, 0x62, 0x10, 0xd6, 0xf1, 0xd0, 0x43, 0x98, 0x51, 0x44, 0xea, 0x4f, 0xc0, 0xbc, 0xc6,
    +	0xd4, 0x26, 0xeb, 0x49, 0x8a, 0x38, 0xdd, 0x08, 0x7a, 0x0b, 0x26, 0x99, 0xef, 0x34, 0xab, 0x7f,
    +	0x93, 0xec, 0xc9, 0xe0, 0xd2, 0x4c, 0xc2, 0x5e, 0x33, 0x20, 0x38, 0x81, 0x89, 0x16, 0x61, 0xa6,
    +	0xed, 0x86, 0x89, 0xea, 0x43, 0xac, 0x3a, 0xeb, 0xc0, 0x5a, 0x12, 0x88, 0xd3, 0xf8, 0xf6, 0x2f,
    +	0x88, 0x39, 0xf6, 0x22, 0xf7, 0xd3, 0xed, 0xf8, 0xc9, 0xde, 0x8e, 0xdf, 0xb7, 0x60, 0x9a, 0xb6,
    +	0xce, 0x1c, 0x42, 0xa5, 0x20, 0xa5, 0xd2, 0x8f, 0x58, 0x05, 0xe9, 0x47, 0x2e, 0x51, 0xb6, 0xdd,
    +	0xf4, 0xbb, 0x91, 0xd0, 0x8e, 0x6a, 0x7c, 0x99, 0x96, 0x62, 0x01, 0x15, 0x78, 0x24, 0x08, 0xc4,
    +	0xab, 0x7b, 0x1d, 0x8f, 0x04, 0x01, 0x16, 0x50, 0x99, 0x9d, 0x64, 0x20, 0x3b, 0x3b, 0x09, 0x0f,
    +	0x32, 0x2f, 0xfc, 0xe8, 0x84, 0x48, 0xab, 0x05, 0x99, 0x97, 0x0e, 0x76, 0x31, 0x8e, 0xfd, 0xd7,
    +	0xca, 0x50, 0xa9, 0xf9, 0xcd, 0x45, 0x12, 0x44, 0xee, 0xa6, 0xdb, 0x70, 0x22, 0xa2, 0xe5, 0xdb,
    +	0x7d, 0x0d, 0x80, 0x3d, 0x22, 0x0b, 0xb2, 0x22, 0xa8, 0xd7, 0x15, 0x04, 0x6b, 0x58, 0x54, 0x2a,
    +	0xd9, 0x21, 0x7b, 0xda, 0xc9, 0xab, 0xa4, 0x92, 0x9b, 0xbc, 0x18, 0x4b, 0x38, 0xba, 0xc5, 0x42,
    +	0x19, 0x2d, 0x3f, 0xec, 0xb8, 0x01, 0xcf, 0x4c, 0x4e, 0x1a, 0xbe, 0xd7, 0x0c, 0x45, 0xe0, 0xb7,
    +	0x8a, 0x08, 0x44, 0x94, 0x82, 0xe3, 0xcc, 0x5a, 0xa8, 0x06, 0x27, 0x1b, 0x01, 0x69, 0x12, 0x2f,
    +	0x72, 0x9d, 0xd6, 0x42, 0xd7, 0x6b, 0xb6, 0x78, 0x4a, 0x9e, 0x01, 0x23, 0x83, 0xe8, 0xc9, 0xc5,
    +	0x0c, 0x1c, 0x9c, 0x59, 0x53, 0x7c, 0x0a, 0x23, 0x32, 0x98, 0xfa, 0x14, 0x56, 0x4f, 0xc2, 0x59,
    +	0xe3, 0xf1, 0x10, 0x2e, 0x6e, 0x3b, 0xae, 0xc7, 0xea, 0x0d, 0x25, 0x1a, 0xcf, 0xc0, 0xc1, 0x99,
    +	0x35, 0xed, 0x3f, 0x2d, 0xc3, 0x38, 0x9d, 0x18, 0xe5, 0x71, 0xf3, 0x86, 0xe1, 0x71, 0x73, 0x31,
    +	0xe1, 0x71, 0x33, 0xad, 0xe3, 0x6a, 0xfe, 0x35, 0xef, 0x03, 0xf2, 0x45, 0x52, 0x82, 0xeb, 0xc4,
    +	0x23, 0x7c, 0xc8, 0x98, 0x92, 0xb1, 0x1c, 0xfb, 0xa3, 0xdc, 0x4e, 0x61, 0xe0, 0x8c, 0x5a, 0x9f,
    +	0xfa, 0xea, 0x1c, 0xaf, 0xaf, 0xce, 0x6f, 0x59, 0x6c, 0x05, 0x2c, 0xad, 0xd7, 0xb9, 0x13, 0x39,
    +	0xba, 0x0a, 0x63, 0xec, 0x18, 0x63, 0xb1, 0x3c, 0xa4, 0x4b, 0x0b, 0xcb, 0x6e, 0xbb, 0x1e, 0x17,
    +	0x63, 0x1d, 0x07, 0x5d, 0x86, 0x91, 0x90, 0x38, 0x41, 0x63, 0x5b, 0x9d, 0xe1, 0xc2, 0xff, 0x84,
    +	0x97, 0x61, 0x05, 0x45, 0x1f, 0xc4, 0x11, 0xe1, 0xcb, 0xf9, 0x1e, 0xe9, 0x7a, 0x7f, 0x38, 0x1f,
    +	0xcc, 0x0f, 0x03, 0x6f, 0xdf, 0x03, 0x94, 0xc6, 0xef, 0xe3, 0x89, 0x5f, 0xd5, 0x8c, 0x59, 0x3c,
    +	0x9a, 0x8a, 0x57, 0xfc, 0xef, 0x2d, 0x98, 0xac, 0xf9, 0x4d, 0xca, 0x9f, 0x7f, 0x98, 0x98, 0xb1,
    +	0x9e, 0xc1, 0x63, 0xa8, 0x20, 0x83, 0xc7, 0x81, 0x05, 0x17, 0xd8, 0xe7, 0x47, 0xc4, 0x6b, 0xc6,
    +	0x06, 0x4f, 0xdd, 0xdf, 0xe3, 0x01, 0x4c, 0x05, 0x3c, 0x7c, 0xd7, 0x9a, 0xd3, 0xe9, 0xb8, 0xde,
    +	0x96, 0x7c, 0xdf, 0xf6, 0x46, 0xe1, 0xbb, 0x8d, 0x24, 0x49, 0x11, 0x02, 0x4c, 0x77, 0x54, 0x35,
    +	0x88, 0xe2, 0x64, 0x2b, 0x3c, 0x2b, 0x8d, 0xd6, 0x1f, 0x2d, 0x41, 0xa5, 0x96, 0x95, 0x26, 0x81,
    +	0x80, 0xd3, 0x75, 0xec, 0xe7, 0x60, 0xb0, 0xe6, 0x37, 0x7b, 0x04, 0x8f, 0xfe, 0x3b, 0x16, 0x0c,
    +	0xd7, 0xfc, 0xe6, 0x31, 0x98, 0x10, 0xdf, 0x31, 0x4d, 0x88, 0x67, 0x72, 0x36, 0x47, 0x8e, 0xd5,
    +	0xf0, 0x9f, 0x0d, 0xc0, 0x04, 0xed, 0xa7, 0xbf, 0x25, 0xd7, 0xab, 0xb1, 0x36, 0xac, 0x3e, 0xd6,
    +	0x06, 0xbd, 0xd0, 0xfa, 0xad, 0x96, 0xff, 0x20, 0xb9, 0x76, 0x57, 0x58, 0x29, 0x16, 0x50, 0xf4,
    +	0x0a, 0x8c, 0x74, 0x02, 0xb2, 0xeb, 0xfa, 0xe2, 0xa6, 0xa8, 0x19, 0x64, 0x6b, 0xa2, 0x1c, 0x2b,
    +	0x0c, 0xf4, 0x06, 0x8c, 0x87, 0xae, 0x47, 0xa5, 0x62, 0x7e, 0xf4, 0x0e, 0xb0, 0x83, 0x81, 0xe7,
    +	0xd2, 0xd3, 0xca, 0xb1, 0x81, 0x85, 0xee, 0xc1, 0x28, 0xfb, 0xcf, 0x78, 0xeb, 0xe0, 0x91, 0x79,
    +	0xab, 0x48, 0x94, 0x2e, 0x08, 0xe0, 0x98, 0x16, 0x15, 0x38, 0x22, 0x99, 0x8f, 0x2a, 0x14, 0x41,
    +	0x84, 0x95, 0xc0, 0xa1, 0x32, 0x55, 0x85, 0x58, 0xc3, 0x42, 0x2f, 0xc3, 0x68, 0xe4, 0xb8, 0xad,
    +	0x5b, 0xae, 0xc7, 0x3c, 0x51, 0x68, 0xff, 0x45, 0xbe, 0x72, 0x51, 0x88, 0x63, 0x38, 0xbd, 0xd5,
    +	0xb0, 0xd8, 0x6a, 0x0b, 0x7b, 0x91, 0xc8, 0xa2, 0x59, 0xe6, 0xb7, 0x9a, 0x5b, 0xaa, 0x14, 0x6b,
    +	0x18, 0x68, 0x1b, 0xce, 0xb9, 0x1e, 0xcb, 0x3b, 0x47, 0xea, 0x3b, 0x6e, 0x67, 0xe3, 0x56, 0xfd,
    +	0x2e, 0x09, 0xdc, 0xcd, 0xbd, 0x05, 0xa7, 0xb1, 0x43, 0xbc, 0x26, 0x53, 0x7a, 0x8d, 0x2c, 0x3c,
    +	0x2f, 0xba, 0x78, 0x6e, 0xb5, 0x00, 0x17, 0x17, 0x52, 0x42, 0x36, 0xe5, 0x39, 0x01, 0x71, 0xda,
    +	0x42, 0xbb, 0xc5, 0x73, 0x56, 0xb1, 0x12, 0x2c, 0x20, 0xf6, 0xeb, 0x6c, 0x4f, 0xdc, 0xae, 0xa3,
    +	0xcf, 0x1a, 0x3c, 0xf4, 0xb4, 0xce, 0x43, 0x0f, 0xf7, 0xab, 0x43, 0xb7, 0xeb, 0x5a, 0x9c, 0xad,
    +	0x6b, 0x70, 0xaa, 0xe6, 0x37, 0x6b, 0x7e, 0x10, 0xad, 0xf8, 0xc1, 0x03, 0x27, 0x68, 0xca, 0x25,
    +	0x58, 0x95, 0x91, 0xc6, 0x28, 0x67, 0x18, 0xe4, 0x6c, 0xd6, 0x88, 0x22, 0xf6, 0x3a, 0xbb, 0x9f,
    +	0x1c, 0xf1, 0x61, 0x77, 0x83, 0x49, 0xca, 0x2a, 0xbb, 0xe3, 0x75, 0x27, 0x22, 0xe8, 0x36, 0x4c,
    +	0x34, 0x74, 0xd9, 0x44, 0x54, 0x7f, 0x49, 0x9e, 0xe8, 0x86, 0xe0, 0x92, 0x29, 0xcc, 0x98, 0xf5,
    +	0xed, 0xdf, 0xb7, 0x44, 0x2b, 0x1a, 0xd7, 0xe8, 0xe3, 0x60, 0x59, 0xcc, 0x62, 0x4e, 0xfc, 0xa6,
    +	0x7a, 0xaa, 0x5f, 0xc6, 0x84, 0xbe, 0x06, 0x67, 0x8d, 0x42, 0xe9, 0x14, 0xa2, 0xe5, 0xdf, 0x67,
    +	0x9a, 0x49, 0x9c, 0x87, 0x84, 0xf3, 0xeb, 0xdb, 0x3f, 0x06, 0xa7, 0x93, 0xdf, 0x25, 0x38, 0xfa,
    +	0x63, 0x7e, 0x5d, 0xe9, 0x68, 0x5f, 0x67, 0xbf, 0x09, 0x33, 0x35, 0x5f, 0x8b, 0xa2, 0xc2, 0xe6,
    +	0xaf, 0x77, 0x30, 0xb7, 0x5f, 0x1e, 0x61, 0x67, 0x7d, 0x22, 0x65, 0x23, 0xfa, 0x06, 0x4c, 0x86,
    +	0x84, 0x45, 0x30, 0x94, 0x3a, 0xea, 0x82, 0xa8, 0x0c, 0xf5, 0x65, 0x1d, 0x93, 0xdf, 0xc3, 0xcd,
    +	0x32, 0x9c, 0xa0, 0x86, 0xda, 0x30, 0xf9, 0xc0, 0xf5, 0x9a, 0xfe, 0x83, 0x50, 0xd2, 0x1f, 0xc9,
    +	0x37, 0x78, 0xdd, 0xe3, 0x98, 0x89, 0x3e, 0x1a, 0xcd, 0xdd, 0x33, 0x88, 0xe1, 0x04, 0x71, 0xca,
    +	0x6a, 0x82, 0xae, 0x37, 0x1f, 0xde, 0x09, 0x49, 0x20, 0xe2, 0x2b, 0x32, 0x56, 0x83, 0x65, 0x21,
    +	0x8e, 0xe1, 0x94, 0xd5, 0xb0, 0x3f, 0x2c, 0xac, 0x03, 0xe3, 0x65, 0x82, 0xd5, 0x60, 0x55, 0x8a,
    +	0x35, 0x0c, 0xca, 0x8a, 0xd9, 0xbf, 0x75, 0xdf, 0xc3, 0xbe, 0x1f, 0x49, 0xe6, 0xcd, 0xb2, 0xea,
    +	0x6a, 0xe5, 0xd8, 0xc0, 0xca, 0x89, 0xe6, 0x38, 0x70, 0xd4, 0x68, 0x8e, 0x28, 0x2a, 0x88, 0x64,
    +	0xc1, 0xe3, 0x91, 0x5f, 0x2b, 0x8a, 0x64, 0x71, 0xf8, 0x58, 0x51, 0x2e, 0xa8, 0xc0, 0xb3, 0x29,
    +	0x06, 0x68, 0x90, 0x87, 0xab, 0x64, 0x26, 0xf9, 0x3a, 0x1f, 0x1d, 0x09, 0x43, 0xcb, 0x30, 0x1c,
    +	0xee, 0x85, 0x8d, 0xa8, 0x15, 0x16, 0x65, 0x4e, 0xae, 0x33, 0x94, 0x58, 0x1e, 0xe5, 0xff, 0x43,
    +	0x2c, 0xeb, 0xa2, 0x06, 0x9c, 0x10, 0x14, 0x17, 0xb7, 0x1d, 0x4f, 0x65, 0x56, 0xe5, 0xbe, 0xb7,
    +	0x57, 0x0f, 0xf6, 0xab, 0x27, 0x44, 0xcb, 0x3a, 0xf8, 0x70, 0xbf, 0x4a, 0xb7, 0x64, 0x06, 0x04,
    +	0x67, 0x51, 0xe3, 0x4b, 0xbe, 0xd1, 0xf0, 0xdb, 0x9d, 0x5a, 0xe0, 0x6f, 0xba, 0x2d, 0x52, 0xe4,
    +	0xd6, 0x50, 0x37, 0x30, 0xc5, 0x92, 0x37, 0xca, 0x70, 0x82, 0x1a, 0xba, 0x0f, 0x53, 0x4e, 0xa7,
    +	0x33, 0x1f, 0xb4, 0xfd, 0x40, 0x36, 0x30, 0x96, 0x6f, 0x1f, 0x9b, 0x37, 0x51, 0x79, 0x62, 0xd5,
    +	0x44, 0x21, 0x4e, 0x12, 0xa4, 0x03, 0x25, 0x36, 0x9a, 0x31, 0x50, 0x13, 0xf1, 0x40, 0x89, 0x7d,
    +	0x99, 0x31, 0x50, 0x19, 0x10, 0x9c, 0x45, 0xcd, 0xfe, 0xf3, 0xec, 0x76, 0xc3, 0xa2, 0x9d, 0xb3,
    +	0x47, 0x6e, 0x6d, 0x98, 0xe8, 0x30, 0xb6, 0x2f, 0x92, 0x1e, 0x0a, 0x56, 0xf1, 0x46, 0x9f, 0x6a,
    +	0xf8, 0x07, 0x2c, 0xab, 0xb3, 0xe1, 0x8e, 0x5d, 0xd3, 0xc9, 0x61, 0x93, 0xba, 0xfd, 0xaf, 0x67,
    +	0x99, 0xe8, 0x58, 0xe7, 0xba, 0xf5, 0x61, 0xf1, 0xe4, 0x57, 0x48, 0xc9, 0xb3, 0xf9, 0x56, 0xac,
    +	0x78, 0x7d, 0x89, 0x67, 0xc3, 0x58, 0xd6, 0x45, 0x5f, 0x87, 0x49, 0xd7, 0x73, 0xe3, 0x24, 0xeb,
    +	0x61, 0xe5, 0x64, 0x7e, 0x2c, 0x39, 0x85, 0xa5, 0x27, 0x44, 0xd5, 0x2b, 0xe3, 0x04, 0x31, 0xf4,
    +	0x01, 0xf3, 0x50, 0x96, 0xa4, 0x4b, 0xfd, 0x90, 0xd6, 0x9d, 0x91, 0x25, 0x59, 0x8d, 0x08, 0xea,
    +	0xc2, 0x89, 0x74, 0xb2, 0xf9, 0xb0, 0x62, 0xe7, 0x5f, 0x00, 0xd3, 0xf9, 0xe2, 0xe3, 0xcc, 0x95,
    +	0x69, 0x58, 0x88, 0xb3, 0xe8, 0xa3, 0x5b, 0xc9, 0x54, 0xe0, 0x65, 0xc3, 0xfe, 0x95, 0x4a, 0x07,
    +	0x3e, 0x51, 0x98, 0x05, 0x7c, 0x0b, 0xce, 0x6b, 0x79, 0x8d, 0xaf, 0x07, 0x0e, 0xf3, 0x90, 0x73,
    +	0xd9, 0x69, 0xa4, 0x09, 0xb5, 0xcf, 0x1e, 0xec, 0x57, 0xcf, 0x6f, 0x14, 0x21, 0xe2, 0x62, 0x3a,
    +	0xe8, 0x36, 0x9c, 0xe2, 0x91, 0x90, 0x96, 0x88, 0xd3, 0x6c, 0xb9, 0x9e, 0x92, 0x9a, 0x39, 0xef,
    +	0x3a, 0x7b, 0xb0, 0x5f, 0x3d, 0x35, 0x9f, 0x85, 0x80, 0xb3, 0xeb, 0xa1, 0x77, 0x60, 0xb4, 0xe9,
    +	0x49, 0x2e, 0x3b, 0x64, 0xa4, 0x8e, 0x1e, 0x5d, 0x5a, 0xaf, 0xab, 0xef, 0x8f, 0xff, 0xe0, 0xb8,
    +	0x02, 0xda, 0xe2, 0x06, 0x58, 0xa5, 0x35, 0x1f, 0x4e, 0x05, 0xc8, 0x4d, 0x1a, 0x96, 0x8c, 0xd0,
    +	0x22, 0xdc, 0xf3, 0x40, 0x3d, 0x3f, 0x35, 0xa2, 0x8e, 0x18, 0x84, 0xd1, 0xfb, 0x80, 0x44, 0xbe,
    +	0xaf, 0xf9, 0x06, 0xcb, 0xa8, 0xa9, 0x79, 0x45, 0x2b, 0x3d, 0x49, 0x3d, 0x85, 0x81, 0x33, 0x6a,
    +	0xa1, 0x1b, 0x94, 0x3d, 0xea, 0xa5, 0x82, 0xfd, 0x4a, 0x7d, 0x56, 0x65, 0x89, 0x74, 0x02, 0xc2,
    +	0x1c, 0x79, 0x4d, 0x8a, 0x38, 0x51, 0x0f, 0x35, 0xe1, 0x9c, 0xd3, 0x8d, 0x7c, 0x66, 0xdb, 0x36,
    +	0x51, 0x37, 0xfc, 0x1d, 0xe2, 0x31, 0xb7, 0x92, 0x11, 0x16, 0x78, 0xf7, 0xdc, 0x7c, 0x01, 0x1e,
    +	0x2e, 0xa4, 0x42, 0xaf, 0x53, 0x74, 0x2c, 0x34, 0xb3, 0xb3, 0x11, 0x25, 0x81, 0xfb, 0x62, 0x48,
    +	0x0c, 0xf4, 0x26, 0x8c, 0x6d, 0xfb, 0x61, 0xb4, 0x4e, 0xa2, 0x07, 0x7e, 0xb0, 0x23, 0x12, 0x8c,
    +	0xc4, 0x49, 0x9d, 0x62, 0x10, 0xd6, 0xf1, 0xd0, 0x4b, 0x30, 0xcc, 0x9c, 0x1e, 0x57, 0x97, 0xd8,
    +	0x59, 0x3b, 0x12, 0xf3, 0x98, 0x1b, 0xbc, 0x18, 0x4b, 0xb8, 0x44, 0x5d, 0xad, 0x2d, 0x32, 0x76,
    +	0x9c, 0x40, 0x5d, 0xad, 0x2d, 0x62, 0x09, 0xa7, 0xcb, 0x35, 0xdc, 0x76, 0x02, 0x52, 0x0b, 0xfc,
    +	0x06, 0x09, 0xb5, 0x54, 0x62, 0xcf, 0xf0, 0xf4, 0x29, 0x74, 0xb9, 0xd6, 0xb3, 0x10, 0x70, 0x76,
    +	0x3d, 0x44, 0xd2, 0x39, 0xbd, 0x27, 0xf3, 0x8d, 0xfe, 0x69, 0x71, 0xb0, 0xcf, 0xb4, 0xde, 0x1e,
    +	0x4c, 0xab, 0x6c, 0xe2, 0x3c, 0x61, 0x4a, 0x58, 0x99, 0xca, 0xcf, 0xe9, 0x9f, 0xf9, 0xd6, 0x47,
    +	0xb9, 0x51, 0xac, 0x26, 0x28, 0xe1, 0x14, 0x6d, 0x23, 0xb2, 0xf3, 0x74, 0xcf, 0xc8, 0xce, 0x57,
    +	0x60, 0x34, 0xec, 0xde, 0x6f, 0xfa, 0x6d, 0xc7, 0xf5, 0x98, 0xef, 0x98, 0x76, 0x71, 0xaf, 0x4b,
    +	0x00, 0x8e, 0x71, 0xd0, 0x0a, 0x8c, 0x38, 0xd2, 0x47, 0x02, 0xe5, 0x07, 0xad, 0x54, 0x9e, 0x11,
    +	0x3c, 0x8e, 0x9b, 0xf4, 0x8a, 0x50, 0x75, 0xd1, 0xdb, 0x30, 0x21, 0x02, 0xe3, 0x08, 0x7d, 0xfc,
    +	0x09, 0xf3, 0x29, 0x7f, 0x5d, 0x07, 0x62, 0x13, 0x17, 0xdd, 0x81, 0xb1, 0xc8, 0x6f, 0x09, 0x45,
    +	0x6e, 0x58, 0x39, 0x9d, 0x1f, 0x5b, 0x7a, 0x43, 0xa1, 0xe9, 0xd6, 0x3b, 0x55, 0x15, 0xeb, 0x74,
    +	0xd0, 0x06, 0x5f, 0xef, 0x2c, 0x71, 0x18, 0x09, 0x2b, 0x67, 0xf2, 0xcf, 0x24, 0x95, 0x5f, 0xcc,
    +	0xdc, 0x0e, 0xa2, 0x26, 0xd6, 0xc9, 0xa0, 0xeb, 0x30, 0xd3, 0x09, 0x5c, 0x9f, 0xad, 0x09, 0xe5,
    +	0xf3, 0x51, 0x31, 0x75, 0x48, 0xb5, 0x24, 0x02, 0x4e, 0xd7, 0x61, 0x71, 0x8d, 0x44, 0x61, 0xe5,
    +	0x2c, 0x4f, 0x75, 0xc8, 0xf5, 0x20, 0xbc, 0x0c, 0x2b, 0x28, 0x5a, 0x63, 0x9c, 0x98, 0xeb, 0x29,
    +	0x2b, 0xb3, 0xf9, 0xd1, 0x32, 0x74, 0x7d, 0x26, 0x97, 0xfd, 0xd5, 0x5f, 0x1c, 0x53, 0x40, 0x4d,
    +	0x98, 0x0c, 0xf4, 0x1b, 0x70, 0x58, 0x39, 0x57, 0xe0, 0x79, 0x9e, 0xb8, 0x2e, 0xc7, 0x02, 0x81,
    +	0x51, 0x1c, 0xe2, 0x04, 0x4d, 0xf4, 0x1e, 0x4c, 0x8b, 0xa0, 0x1f, 0xf1, 0x30, 0x9d, 0x8f, 0x5f,
    +	0xe7, 0xe1, 0x04, 0x0c, 0xa7, 0xb0, 0x79, 0xaa, 0x41, 0xe7, 0x7e, 0x8b, 0x08, 0xd6, 0x77, 0xcb,
    +	0xf5, 0x76, 0xc2, 0xca, 0x05, 0xc6, 0x1f, 0x44, 0xaa, 0xc1, 0x24, 0x14, 0x67, 0xd4, 0x40, 0x1b,
    +	0x30, 0xdd, 0x09, 0x08, 0x69, 0xb3, 0x7b, 0x92, 0x38, 0xcf, 0xaa, 0x3c, 0xac, 0x17, 0xed, 0x49,
    +	0x2d, 0x01, 0x3b, 0xcc, 0x28, 0xc3, 0x29, 0x0a, 0xe8, 0x01, 0x8c, 0xf8, 0xbb, 0x24, 0xd8, 0x26,
    +	0x4e, 0xb3, 0x72, 0xb1, 0xe0, 0xcd, 0xa8, 0x38, 0xdc, 0x6e, 0x0b, 0xdc, 0x84, 0x4b, 0x9d, 0x2c,
    +	0xee, 0xed, 0x52, 0x27, 0x1b, 0x43, 0xff, 0x89, 0x05, 0x67, 0xa5, 0x91, 0xba, 0xde, 0xa1, 0xa3,
    +	0xbe, 0xe8, 0x7b, 0x61, 0x14, 0xf0, 0x40, 0x54, 0xcf, 0xe6, 0x07, 0x67, 0xda, 0xc8, 0xa9, 0xa4,
    +	0x4c, 0x25, 0x67, 0xf3, 0x30, 0x42, 0x9c, 0xdf, 0x22, 0xbd, 0xd9, 0x87, 0x24, 0x92, 0xcc, 0x68,
    +	0x3e, 0x5c, 0xf9, 0x60, 0x69, 0xbd, 0xf2, 0x1c, 0x8f, 0xa2, 0x45, 0x37, 0x43, 0x3d, 0x09, 0xc4,
    +	0x69, 0x7c, 0x74, 0x15, 0x4a, 0x7e, 0x58, 0x79, 0x9e, 0xad, 0xed, 0xb3, 0x39, 0xe3, 0x78, 0xbb,
    +	0xce, 0x5d, 0xab, 0x6f, 0xd7, 0x71, 0xc9, 0x0f, 0x65, 0xba, 0x3f, 0x7a, 0x9d, 0x0d, 0x2b, 0x2f,
    +	0x70, 0xc5, 0xba, 0x4c, 0xf7, 0xc7, 0x0a, 0x71, 0x0c, 0x47, 0xdb, 0x30, 0x15, 0x1a, 0x6a, 0x83,
    +	0xb0, 0x72, 0x89, 0x8d, 0xd4, 0x0b, 0x79, 0x93, 0x66, 0x60, 0x6b, 0x79, 0xb8, 0x4c, 0x2a, 0x38,
    +	0x49, 0x96, 0xef, 0x2e, 0x4d, 0x71, 0x11, 0x56, 0x5e, 0xec, 0xb1, 0xbb, 0x34, 0x64, 0x7d, 0x77,
    +	0xe9, 0x34, 0x70, 0x82, 0x26, 0xba, 0xa3, 0x3f, 0xc8, 0xbd, 0x9c, 0xef, 0xa6, 0x9b, 0xf9, 0x14,
    +	0x77, 0x22, 0xf7, 0x19, 0xee, 0x7b, 0x30, 0x2d, 0xcf, 0x12, 0xba, 0x32, 0x03, 0xb7, 0x49, 0x2a,
    +	0x2f, 0xc5, 0x9b, 0xf6, 0x46, 0x02, 0x86, 0x53, 0xd8, 0xb3, 0x3f, 0x02, 0x33, 0x29, 0x39, 0xee,
    +	0x28, 0xef, 0x9b, 0x66, 0x77, 0x60, 0xc2, 0xd8, 0x2b, 0x4f, 0xd7, 0xfd, 0x6d, 0x0c, 0x46, 0x95,
    +	0x5b, 0x52, 0x8e, 0x39, 0x72, 0xe6, 0xb1, 0xcc, 0x91, 0x57, 0x4c, 0xef, 0xb9, 0xb3, 0x49, 0xef,
    +	0xb9, 0x91, 0x9a, 0xdf, 0x34, 0x1c, 0xe6, 0x36, 0x32, 0x22, 0x60, 0xe7, 0x71, 0xf9, 0xfe, 0x1f,
    +	0x74, 0x6a, 0x16, 0xbd, 0x72, 0xdf, 0x6e, 0x78, 0x03, 0x85, 0x46, 0xc2, 0xeb, 0x30, 0xe3, 0xf9,
    +	0xec, 0x22, 0x42, 0x9a, 0x52, 0xca, 0x64, 0xc2, 0xe4, 0xa8, 0x1e, 0xa1, 0x31, 0x81, 0x80, 0xd3,
    +	0x75, 0x68, 0x83, 0x5c, 0x1a, 0x4c, 0x5a, 0x25, 0xb9, 0xb0, 0x88, 0x05, 0x94, 0x5e, 0x80, 0xf9,
    +	0xaf, 0xb0, 0x32, 0x9d, 0x7f, 0x01, 0xe6, 0x95, 0x92, 0x12, 0x67, 0x28, 0x25, 0x4e, 0x66, 0x84,
    +	0xeb, 0xf8, 0xcd, 0xd5, 0x9a, 0xb8, 0xcb, 0x68, 0xb9, 0x29, 0x9a, 0xab, 0x35, 0xcc, 0x61, 0x68,
    +	0x1e, 0x86, 0xd8, 0x0f, 0x19, 0xf9, 0x2a, 0x8f, 0x17, 0xad, 0xd6, 0xb4, 0x9c, 0xca, 0xac, 0x02,
    +	0x16, 0x15, 0x99, 0xfd, 0x81, 0x5e, 0x00, 0x99, 0xfd, 0x61, 0xf8, 0x31, 0xed, 0x0f, 0x92, 0x00,
    +	0x8e, 0x69, 0xa1, 0x87, 0x70, 0xca, 0xb8, 0x74, 0xab, 0x17, 0xae, 0x90, 0xef, 0x64, 0x93, 0x40,
    +	0x5e, 0x38, 0x2f, 0x3a, 0x7d, 0x6a, 0x35, 0x8b, 0x12, 0xce, 0x6e, 0x00, 0xb5, 0x60, 0xa6, 0x91,
    +	0x6a, 0x75, 0xa4, 0xff, 0x56, 0xd5, 0xba, 0x48, 0xb7, 0x98, 0x26, 0x8c, 0xde, 0x86, 0x91, 0x8f,
    +	0x7c, 0xee, 0x10, 0x2b, 0xee, 0x5f, 0x32, 0x3e, 0xd3, 0xc8, 0x07, 0xb7, 0xeb, 0xac, 0xfc, 0x70,
    +	0xbf, 0x3a, 0x56, 0xf3, 0x9b, 0xf2, 0x2f, 0x56, 0x15, 0xd0, 0x5f, 0xb2, 0x60, 0x36, 0x7d, 0xab,
    +	0x57, 0x9d, 0x9e, 0xe8, 0xbf, 0xd3, 0xb6, 0x68, 0x74, 0x76, 0x39, 0x97, 0x1c, 0x2e, 0x68, 0x0a,
    +	0x7d, 0x91, 0xee, 0xa7, 0xd0, 0x7d, 0xc4, 0x5f, 0xb8, 0x68, 0x0e, 0x09, 0x98, 0x95, 0x1e, 0xee,
    +	0x57, 0xa7, 0x38, 0xfb, 0x77, 0x1f, 0xa9, 0x2c, 0x1a, 0xbc, 0x02, 0xfa, 0x31, 0x38, 0x15, 0xa4,
    +	0xb5, 0xec, 0x44, 0xde, 0x34, 0x3e, 0xdb, 0xcf, 0x51, 0x92, 0x9c, 0x70, 0x9c, 0x45, 0x10, 0x67,
    +	0xb7, 0x83, 0xfe, 0xaa, 0x05, 0xcf, 0x90, 0x7c, 0x0b, 0xae, 0xb8, 0x2a, 0xbc, 0x96, 0xd3, 0x8f,
    +	0x02, 0xdb, 0x2f, 0x4b, 0x30, 0xf0, 0x4c, 0x01, 0x02, 0x2e, 0x6a, 0xd7, 0xfe, 0xc7, 0x16, 0xb3,
    +	0xfa, 0x08, 0x54, 0x12, 0x76, 0x5b, 0xd1, 0x31, 0x38, 0xc7, 0x2e, 0x1b, 0xae, 0x25, 0x8f, 0xed,
    +	0xdd, 0xfa, 0xdf, 0x5a, 0xcc, 0xbb, 0xf5, 0x18, 0xdf, 0xe9, 0x7e, 0x00, 0x23, 0x91, 0x68, 0x4d,
    +	0x74, 0x3d, 0xcf, 0x13, 0x4f, 0x76, 0x8a, 0x79, 0xf8, 0xaa, 0x1b, 0xa6, 0x2c, 0xc5, 0x8a, 0x8c,
    +	0xfd, 0x5f, 0xf1, 0x19, 0x90, 0x90, 0x63, 0x30, 0x6e, 0x2f, 0x99, 0xc6, 0xed, 0x6a, 0x8f, 0x2f,
    +	0xc8, 0x31, 0x72, 0xff, 0x03, 0xb3, 0xdf, 0x4c, 0xb3, 0xfa, 0x49, 0x77, 0xab, 0xb6, 0xbf, 0x6b,
    +	0x01, 0xc4, 0xe9, 0x94, 0xfa, 0x48, 0x8c, 0x7f, 0x8d, 0xde, 0x29, 0xfd, 0xc8, 0x6f, 0xf8, 0x2d,
    +	0x61, 0x5c, 0x3b, 0x17, 0xdb, 0xd7, 0x79, 0xf9, 0xa1, 0xf6, 0x1b, 0x2b, 0x6c, 0x54, 0x95, 0xf1,
    +	0xcd, 0xcb, 0xb1, 0x5b, 0x8b, 0x11, 0xdb, 0xfc, 0x67, 0x2c, 0x38, 0x99, 0xf5, 0xe8, 0x0b, 0xbd,
    +	0x02, 0x23, 0x5c, 0xc7, 0xac, 0x5c, 0xde, 0xd5, 0x6c, 0xde, 0x15, 0xe5, 0x58, 0x61, 0xf4, 0xeb,
    +	0xfa, 0x7e, 0xc4, 0x54, 0x3f, 0xb7, 0x61, 0xa2, 0x16, 0x10, 0x4d, 0xee, 0x79, 0x37, 0xce, 0x42,
    +	0x36, 0xba, 0xf0, 0xca, 0x91, 0x23, 0xa9, 0xd9, 0xbf, 0x54, 0x82, 0x93, 0xdc, 0x71, 0x73, 0x7e,
    +	0xd7, 0x77, 0x9b, 0x35, 0xbf, 0x29, 0x9e, 0xea, 0x7f, 0x15, 0xc6, 0x3b, 0x9a, 0x61, 0xa0, 0x28,
    +	0x6d, 0x85, 0x6e, 0x40, 0x88, 0x55, 0x99, 0x7a, 0x29, 0x36, 0x68, 0xa1, 0x26, 0x8c, 0x93, 0x5d,
    +	0xb7, 0xa1, 0x1c, 0xc3, 0x4a, 0x47, 0x16, 0x1e, 0x54, 0x2b, 0xcb, 0x1a, 0x1d, 0x6c, 0x50, 0xed,
    +	0xfb, 0xb9, 0x85, 0x26, 0x3a, 0x0e, 0xf4, 0x70, 0x06, 0xfb, 0x59, 0x0b, 0xce, 0xe4, 0x24, 0xb9,
    +	0xa0, 0xcd, 0x3d, 0x60, 0x2e, 0xb2, 0x62, 0xd9, 0xaa, 0xe6, 0xb8, 0xe3, 0x2c, 0x16, 0x50, 0xf4,
    +	0x65, 0x80, 0x4e, 0x9c, 0x1a, 0xb8, 0x47, 0x36, 0x00, 0x23, 0x2e, 0xb8, 0x16, 0xe2, 0x59, 0x65,
    +	0x10, 0xd6, 0x68, 0xd9, 0x3f, 0x33, 0x00, 0x83, 0xcc, 0x07, 0x0f, 0xd5, 0x60, 0x78, 0x9b, 0x47,
    +	0x20, 0x2d, 0x9c, 0x37, 0x8a, 0x2b, 0x43, 0x9a, 0xc6, 0xf3, 0xa6, 0x95, 0x62, 0x49, 0x06, 0xad,
    +	0xc1, 0x09, 0x9e, 0xf6, 0xb8, 0xb5, 0x44, 0x5a, 0xce, 0x9e, 0xd4, 0xb9, 0x97, 0xd8, 0xa7, 0x2a,
    +	0xdb, 0xc3, 0x6a, 0x1a, 0x05, 0x67, 0xd5, 0x43, 0xef, 0xc2, 0x64, 0xe4, 0xb6, 0x89, 0xdf, 0x8d,
    +	0x4c, 0x77, 0x53, 0x75, 0x2d, 0xdc, 0x30, 0xa0, 0x38, 0x81, 0x8d, 0xde, 0x86, 0x89, 0x4e, 0xca,
    +	0xba, 0x30, 0x18, 0xab, 0xe1, 0x4c, 0x8b, 0x82, 0x89, 0xcb, 0xde, 0x7d, 0x75, 0xd9, 0x2b, 0xb7,
    +	0x8d, 0xed, 0x80, 0x84, 0xdb, 0x7e, 0xab, 0xc9, 0x24, 0xf3, 0x41, 0xed, 0xdd, 0x57, 0x02, 0x8e,
    +	0x53, 0x35, 0x28, 0x95, 0x4d, 0xc7, 0x6d, 0x75, 0x03, 0x12, 0x53, 0x19, 0x32, 0xa9, 0xac, 0x24,
    +	0xe0, 0x38, 0x55, 0xa3, 0xb7, 0xd9, 0x64, 0xf8, 0xc9, 0x98, 0x4d, 0xec, 0xbf, 0x5b, 0x02, 0x63,
    +	0x6a, 0x7f, 0x88, 0xb3, 0x18, 0xbf, 0x03, 0x03, 0x5b, 0x41, 0xa7, 0x21, 0xfc, 0x4d, 0x33, 0xbf,
    +	0xec, 0x3a, 0xae, 0x2d, 0xea, 0x5f, 0x46, 0xff, 0x63, 0x56, 0x8b, 0xee, 0xf1, 0x53, 0xc2, 0xfb,
    +	0x5a, 0x06, 0x29, 0x56, 0xcf, 0x2b, 0x87, 0xa5, 0x26, 0xa2, 0x20, 0x9c, 0xbf, 0x78, 0x23, 0xa6,
    +	0xfc, 0xb7, 0x35, 0x53, 0xb8, 0xd0, 0x43, 0x48, 0x2a, 0xe8, 0x2a, 0x8c, 0x89, 0xc4, 0xb2, 0xec,
    +	0x15, 0x20, 0xdf, 0x4c, 0xcc, 0x95, 0x74, 0x29, 0x2e, 0xc6, 0x3a, 0x8e, 0xfd, 0x97, 0x4b, 0x70,
    +	0x22, 0xe3, 0x19, 0x37, 0x3f, 0x46, 0xb6, 0xdc, 0x30, 0x0a, 0xf6, 0x92, 0x87, 0x13, 0x16, 0xe5,
    +	0x58, 0x61, 0x50, 0x5e, 0xc5, 0x0f, 0xaa, 0xe4, 0xe1, 0x24, 0x9e, 0x49, 0x0a, 0xe8, 0xd1, 0x0e,
    +	0x27, 0x7a, 0x6c, 0x77, 0x43, 0x22, 0x33, 0x87, 0xa8, 0x63, 0x9b, 0xb9, 0x64, 0x30, 0x08, 0xbd,
    +	0x9a, 0x6e, 0x29, 0x3f, 0x03, 0xed, 0x6a, 0xca, 0x3d, 0x0d, 0x38, 0x8c, 0x76, 0x2e, 0x22, 0x9e,
    +	0xe3, 0x45, 0xe2, 0x02, 0x1b, 0x47, 0x94, 0x67, 0xa5, 0x58, 0x40, 0xed, 0xef, 0x95, 0xe1, 0x6c,
    +	0x6e, 0x60, 0x07, 0xda, 0xf5, 0xb6, 0xef, 0xb9, 0x91, 0xaf, 0x7c, 0x74, 0x79, 0x14, 0x79, 0xd2,
    +	0xd9, 0x5e, 0x13, 0xe5, 0x58, 0x61, 0xa0, 0x4b, 0x30, 0xc8, 0x2c, 0x12, 0xc9, 0xa4, 0x92, 0x78,
    +	0x61, 0x89, 0xc7, 0xd8, 0xe5, 0x60, 0xed, 0x54, 0x2f, 0x17, 0x9e, 0xea, 0xcf, 0x51, 0x09, 0xc6,
    +	0x6f, 0x25, 0x0f, 0x14, 0xda, 0x5d, 0xdf, 0x6f, 0x61, 0x06, 0x44, 0x2f, 0x88, 0xf1, 0x4a, 0x38,
    +	0xa5, 0x62, 0xa7, 0xe9, 0x87, 0xda, 0xa0, 0x71, 0x07, 0xf8, 0xc0, 0xf5, 0xb6, 0x92, 0xce, 0xca,
    +	0x37, 0x79, 0x31, 0x96, 0x70, 0xba, 0x97, 0xe2, 0xdc, 0xf8, 0xc3, 0xf9, 0x7b, 0x49, 0x65, 0xc0,
    +	0xef, 0x99, 0x16, 0x5f, 0x5f, 0x01, 0x23, 0x3d, 0xc5, 0x93, 0x9f, 0x2a, 0xc3, 0x14, 0x5e, 0x58,
    +	0xfa, 0x74, 0x22, 0xee, 0xa4, 0x27, 0xa2, 0x7f, 0xb3, 0xd9, 0x93, 0x9a, 0x8d, 0x7f, 0x68, 0xc1,
    +	0x14, 0x4b, 0x6f, 0x2b, 0xa2, 0x32, 0xb9, 0xbe, 0x77, 0x0c, 0x57, 0x81, 0xe7, 0x60, 0x30, 0xa0,
    +	0x8d, 0x8a, 0x19, 0x54, 0x7b, 0x9c, 0xf5, 0x04, 0x73, 0x18, 0x3a, 0x07, 0x03, 0xac, 0x0b, 0x74,
    +	0xf2, 0xc6, 0x39, 0x0b, 0x5e, 0x72, 0x22, 0x07, 0xb3, 0x52, 0x16, 0x1f, 0x16, 0x93, 0x4e, 0xcb,
    +	0xe5, 0x9d, 0x8e, 0xfd, 0x45, 0x3e, 0x19, 0x21, 0x9f, 0x32, 0xbb, 0xf6, 0xf1, 0xe2, 0xc3, 0x66,
    +	0x93, 0x2c, 0xbe, 0x66, 0xff, 0x71, 0x09, 0x2e, 0x64, 0xd6, 0xeb, 0x3b, 0x3e, 0x6c, 0x71, 0xed,
    +	0xa7, 0x99, 0x0c, 0xb3, 0x7c, 0x8c, 0x4f, 0x41, 0x06, 0xfa, 0x95, 0xfe, 0x07, 0xfb, 0x08, 0xdb,
    +	0x9a, 0x39, 0x64, 0x9f, 0x90, 0xb0, 0xad, 0x99, 0x7d, 0xcb, 0x51, 0x13, 0xfc, 0x69, 0x29, 0xe7,
    +	0x5b, 0x98, 0xc2, 0xe0, 0x32, 0xe5, 0x33, 0x0c, 0x18, 0xca, 0x4b, 0x38, 0xe7, 0x31, 0xbc, 0x0c,
    +	0x2b, 0x28, 0x9a, 0x87, 0xa9, 0xb6, 0xeb, 0x51, 0xe6, 0xb3, 0x67, 0x8a, 0xe2, 0xca, 0x90, 0xb4,
    +	0x66, 0x82, 0x71, 0x12, 0x1f, 0xb9, 0x5a, 0x48, 0x57, 0xfe, 0x75, 0x6f, 0x1f, 0x69, 0xd7, 0xcd,
    +	0x99, 0xbe, 0x34, 0x6a, 0x14, 0x33, 0xc2, 0xbb, 0xae, 0x69, 0x7a, 0xa2, 0x72, 0xff, 0x7a, 0xa2,
    +	0xf1, 0x6c, 0x1d, 0xd1, 0xec, 0xdb, 0x30, 0xf1, 0xd8, 0xf6, 0x1f, 0xfb, 0xfb, 0x65, 0x78, 0xa6,
    +	0x60, 0xdb, 0x73, 0x5e, 0x6f, 0xcc, 0x81, 0xc6, 0xeb, 0x53, 0xf3, 0x50, 0x83, 0x93, 0x9b, 0xdd,
    +	0x56, 0x6b, 0x8f, 0x3d, 0x6c, 0x25, 0x4d, 0x89, 0x21, 0x64, 0x4a, 0xf5, 0xf4, 0x6d, 0x25, 0x03,
    +	0x07, 0x67, 0xd6, 0xa4, 0x57, 0x2c, 0x7a, 0x92, 0xec, 0x29, 0x52, 0x89, 0x2b, 0x16, 0xd6, 0x81,
    +	0xd8, 0xc4, 0x45, 0xd7, 0x61, 0xc6, 0xd9, 0x75, 0x5c, 0x9e, 0x4c, 0x48, 0x12, 0xe0, 0x77, 0x2c,
    +	0xa5, 0x23, 0x9f, 0x4f, 0x22, 0xe0, 0x74, 0x9d, 0x1c, 0x53, 0x55, 0xf9, 0xb1, 0x4c, 0x55, 0x66,
    +	0x70, 0xd1, 0xa1, 0xfc, 0xe0, 0xa2, 0xc5, 0x7c, 0xb1, 0x67, 0x1e, 0xd6, 0x0f, 0x61, 0xe2, 0xa8,
    +	0x3e, 0xf1, 0x2f, 0xc1, 0xb0, 0x78, 0xc3, 0x93, 0x7c, 0xaf, 0x29, 0xf3, 0xff, 0x4b, 0xb8, 0xfd,
    +	0xbf, 0x5a, 0xa0, 0x74, 0xdc, 0x66, 0x1e, 0x81, 0xb7, 0x99, 0x83, 0x3f, 0xd7, 0xce, 0x6b, 0x6f,
    +	0x45, 0x4f, 0x69, 0x0e, 0xfe, 0x31, 0x10, 0x9b, 0xb8, 0x7c, 0xb9, 0x85, 0x71, 0xc4, 0x1a, 0xe3,
    +	0x02, 0x21, 0x6c, 0xab, 0x0a, 0x03, 0x7d, 0x05, 0x86, 0x9b, 0xee, 0xae, 0x1b, 0x0a, 0x3d, 0xda,
    +	0x91, 0x6d, 0x93, 0xf1, 0xf7, 0x2d, 0x71, 0x32, 0x58, 0xd2, 0xb3, 0xff, 0x8a, 0x05, 0xca, 0x28,
    +	0x7c, 0x83, 0x38, 0xad, 0x68, 0x1b, 0xbd, 0x07, 0x20, 0x29, 0x28, 0xdd, 0x9b, 0x74, 0x55, 0x03,
    +	0xac, 0x20, 0x87, 0xc6, 0x3f, 0xac, 0xd5, 0x41, 0xef, 0xc2, 0xd0, 0x36, 0xa3, 0x25, 0xbe, 0xed,
    +	0x92, 0x32, 0xc1, 0xb1, 0xd2, 0xc3, 0xfd, 0xea, 0x49, 0xb3, 0x4d, 0x79, 0x8a, 0xf1, 0x5a, 0xf6,
    +	0x4f, 0x95, 0xe2, 0x39, 0xfd, 0xa0, 0xeb, 0x47, 0xce, 0x31, 0x48, 0x22, 0xd7, 0x0d, 0x49, 0xe4,
    +	0x85, 0x22, 0xab, 0x37, 0xeb, 0x52, 0xae, 0x04, 0x72, 0x3b, 0x21, 0x81, 0xbc, 0xd8, 0x9b, 0x54,
    +	0xb1, 0xe4, 0xf1, 0x5f, 0x5b, 0x30, 0x63, 0xe0, 0x1f, 0xc3, 0x01, 0xb8, 0x62, 0x1e, 0x80, 0xcf,
    +	0xf6, 0xfc, 0x86, 0x9c, 0x83, 0xef, 0x27, 0xca, 0x89, 0xbe, 0xb3, 0x03, 0xef, 0x23, 0x18, 0xd8,
    +	0x76, 0x82, 0xa6, 0xb8, 0xd7, 0x5f, 0xe9, 0x6b, 0xac, 0xe7, 0x6e, 0x38, 0x81, 0x70, 0x73, 0x79,
    +	0x45, 0x8e, 0x3a, 0x2d, 0xea, 0xe9, 0xe2, 0xc2, 0x9a, 0x42, 0xd7, 0x60, 0x28, 0x6c, 0xf8, 0x1d,
    +	0xf5, 0x24, 0xf4, 0x22, 0x1b, 0x68, 0x56, 0x72, 0xb8, 0x5f, 0x45, 0x66, 0x73, 0xb4, 0x18, 0x0b,
    +	0x7c, 0xf4, 0x55, 0x98, 0x60, 0xbf, 0x94, 0xcf, 0x69, 0x39, 0x5f, 0x03, 0x53, 0xd7, 0x11, 0xb9,
    +	0x43, 0xb6, 0x51, 0x84, 0x4d, 0x52, 0xb3, 0x5b, 0x30, 0xaa, 0x3e, 0xeb, 0xa9, 0x7a, 0x24, 0xfc,
    +	0x8b, 0x32, 0x9c, 0xc8, 0x58, 0x73, 0x28, 0x34, 0x66, 0xe2, 0x6a, 0x9f, 0x4b, 0xf5, 0x63, 0xce,
    +	0x45, 0xc8, 0x2e, 0x80, 0x4d, 0xb1, 0xb6, 0xfa, 0x6e, 0xf4, 0x4e, 0x48, 0x92, 0x8d, 0xd2, 0xa2,
    +	0xde, 0x8d, 0xd2, 0xc6, 0x8e, 0x6d, 0xa8, 0x69, 0x43, 0xaa, 0xa7, 0x4f, 0x75, 0x4e, 0x7f, 0x6b,
    +	0x00, 0x4e, 0x66, 0x39, 0xe2, 0xa0, 0x1f, 0x85, 0x21, 0xf6, 0x9c, 0xaf, 0xf0, 0xfd, 0x6b, 0x56,
    +	0xcd, 0x39, 0xf6, 0x22, 0x50, 0x84, 0xa2, 0x9e, 0x93, 0xec, 0x88, 0x17, 0xf6, 0x1c, 0x66, 0xd1,
    +	0x26, 0x0b, 0x11, 0x27, 0x4e, 0x4f, 0xc9, 0x3e, 0x3e, 0xdf, 0x77, 0x07, 0xc4, 0xf9, 0x1b, 0x26,
    +	0xfc, 0xd9, 0x64, 0x71, 0x6f, 0x7f, 0x36, 0xd9, 0x32, 0x5a, 0x85, 0xa1, 0x06, 0x77, 0x94, 0x2a,
    +	0xf7, 0x66, 0x61, 0xdc, 0x4b, 0x4a, 0x31, 0x60, 0xe1, 0x1d, 0x25, 0x08, 0xcc, 0xba, 0x30, 0xa6,
    +	0x0d, 0xcc, 0x53, 0x5d, 0x3c, 0x3b, 0xf4, 0xe0, 0xd3, 0x86, 0xe0, 0xa9, 0x2e, 0xa0, 0xbf, 0xae,
    +	0x9d, 0xfd, 0x82, 0x1f, 0x7c, 0xce, 0x90, 0x9d, 0xce, 0x25, 0x1e, 0x59, 0x26, 0xf6, 0x15, 0x93,
    +	0xa5, 0xea, 0x66, 0x0e, 0x87, 0xdc, 0x44, 0x74, 0xe6, 0x81, 0x5f, 0x9c, 0xb7, 0xc1, 0xfe, 0x59,
    +	0x0b, 0x12, 0xcf, 0xe0, 0x94, 0xba, 0xd3, 0xca, 0x55, 0x77, 0x5e, 0x84, 0x81, 0xc0, 0x6f, 0x49,
    +	0x79, 0x4a, 0x61, 0x60, 0xbf, 0x45, 0x30, 0x83, 0x50, 0x8c, 0x28, 0x56, 0x62, 0x8d, 0xeb, 0x17,
    +	0x74, 0x71, 0xf5, 0x7e, 0x0e, 0x06, 0x5b, 0x64, 0x97, 0xb4, 0x92, 0xf9, 0x98, 0x6f, 0xd1, 0x42,
    +	0xcc, 0x61, 0xf6, 0x3f, 0x1c, 0x80, 0xf3, 0x85, 0x91, 0x24, 0xa9, 0x80, 0xb9, 0xe5, 0x44, 0xe4,
    +	0x81, 0xb3, 0x97, 0xcc, 0x43, 0x7a, 0x9d, 0x17, 0x63, 0x09, 0x67, 0xef, 0xee, 0x79, 0x6e, 0xad,
    +	0x84, 0x72, 0x58, 0xa4, 0xd4, 0x12, 0x50, 0x53, 0xd9, 0x58, 0x7e, 0x12, 0xca, 0xc6, 0xd7, 0x00,
    +	0xc2, 0xb0, 0xc5, 0xbd, 0x5d, 0x9b, 0xe2, 0x41, 0x7f, 0x1c, 0xe9, 0xa4, 0x7e, 0x4b, 0x40, 0xb0,
    +	0x86, 0x85, 0x96, 0x60, 0xba, 0x13, 0xf8, 0x11, 0xd7, 0xb5, 0x2f, 0x71, 0x87, 0xf0, 0x41, 0x33,
    +	0x88, 0x5f, 0x2d, 0x01, 0xc7, 0xa9, 0x1a, 0xe8, 0x4d, 0x18, 0x13, 0x81, 0xfd, 0x6a, 0xbe, 0xdf,
    +	0x12, 0xea, 0x3d, 0xe5, 0x23, 0x5d, 0x8f, 0x41, 0x58, 0xc7, 0xd3, 0xaa, 0x31, 0x05, 0xfe, 0x70,
    +	0x66, 0x35, 0xae, 0xc4, 0xd7, 0xf0, 0x12, 0x49, 0x40, 0x46, 0xfa, 0x4a, 0x02, 0x12, 0x2b, 0x3c,
    +	0x47, 0xfb, 0xb6, 0x27, 0x43, 0x4f, 0x15, 0xe1, 0xaf, 0x0c, 0xc0, 0x09, 0xb1, 0x70, 0x9e, 0xf6,
    +	0x72, 0xb9, 0x93, 0x5e, 0x2e, 0x4f, 0x42, 0x25, 0xfa, 0xe9, 0x9a, 0x39, 0xee, 0x35, 0xf3, 0xd3,
    +	0x16, 0x98, 0x32, 0x24, 0xfa, 0x8f, 0x72, 0x13, 0x39, 0xbf, 0x99, 0x2b, 0x93, 0xc6, 0x19, 0x02,
    +	0x3e, 0x5e, 0x4a, 0x67, 0xfb, 0x7f, 0xb6, 0xe0, 0xd9, 0x9e, 0x14, 0xd1, 0x32, 0x8c, 0x32, 0x41,
    +	0x57, 0xbb, 0x17, 0xbf, 0xa8, 0x1e, 0x8c, 0x48, 0x40, 0x8e, 0xdc, 0x1d, 0xd7, 0x44, 0xcb, 0xa9,
    +	0x8c, 0xd9, 0x2f, 0x65, 0x64, 0xcc, 0x3e, 0x65, 0x0c, 0xcf, 0x63, 0xa6, 0xcc, 0xfe, 0x49, 0x7a,
    +	0xe2, 0x98, 0xaf, 0x4e, 0x3f, 0x6f, 0xa8, 0x73, 0xed, 0x84, 0x3a, 0x17, 0x99, 0xd8, 0xda, 0x19,
    +	0xf2, 0x1e, 0x4c, 0xb3, 0x88, 0xbf, 0xec, 0xf9, 0x92, 0x78, 0xae, 0x5a, 0x8a, 0xbd, 0x9d, 0x6f,
    +	0x25, 0x60, 0x38, 0x85, 0x6d, 0xff, 0x9b, 0x32, 0x0c, 0xf1, 0xed, 0x77, 0x0c, 0x17, 0xdf, 0x97,
    +	0x61, 0xd4, 0x6d, 0xb7, 0xbb, 0x3c, 0x09, 0xf2, 0x60, 0xec, 0xf0, 0xbe, 0x2a, 0x0b, 0x71, 0x0c,
    +	0x47, 0x2b, 0xc2, 0x92, 0x50, 0x90, 0x54, 0x80, 0x77, 0x7c, 0x6e, 0xc9, 0x89, 0x1c, 0x2e, 0xc5,
    +	0xa9, 0x73, 0x36, 0xb6, 0x39, 0xa0, 0x6f, 0x00, 0x84, 0x51, 0xe0, 0x7a, 0x5b, 0xb4, 0x4c, 0x64,
    +	0x9e, 0xf9, 0x6c, 0x01, 0xb5, 0xba, 0x42, 0xe6, 0x34, 0x63, 0x9e, 0xa3, 0x00, 0x58, 0xa3, 0x88,
    +	0xe6, 0x8c, 0x93, 0x7e, 0x36, 0x31, 0x77, 0xc0, 0xa9, 0xc6, 0x73, 0x36, 0xfb, 0x05, 0x18, 0x55,
    +	0xc4, 0x7b, 0xe9, 0x15, 0xc7, 0x75, 0x81, 0xed, 0x4b, 0x30, 0x95, 0xe8, 0xdb, 0x91, 0xd4, 0x92,
    +	0xbf, 0x6e, 0xc1, 0x14, 0xef, 0xcc, 0xb2, 0xb7, 0x2b, 0x4e, 0x83, 0x47, 0x70, 0xb2, 0x95, 0xc1,
    +	0x95, 0xc5, 0xf4, 0xf7, 0xcf, 0xc5, 0x95, 0x1a, 0x32, 0x0b, 0x8a, 0x33, 0xdb, 0x40, 0x97, 0xe9,
    +	0x8e, 0xa3, 0x5c, 0xd7, 0x69, 0x89, 0x98, 0x2b, 0xe3, 0x7c, 0xb7, 0xf1, 0x32, 0xac, 0xa0, 0xf6,
    +	0x1f, 0x58, 0x30, 0xc3, 0x7b, 0x7e, 0x93, 0xec, 0x29, 0xde, 0xf4, 0x83, 0xec, 0xbb, 0x48, 0xbf,
    +	0x5f, 0xca, 0x49, 0xbf, 0xaf, 0x7f, 0x5a, 0xb9, 0xf0, 0xd3, 0x7e, 0xc9, 0x02, 0xb1, 0x42, 0x8e,
    +	0x41, 0xd3, 0xf2, 0x23, 0xa6, 0xa6, 0x65, 0x36, 0x7f, 0x13, 0xe4, 0xa8, 0x58, 0xfe, 0xbd, 0x05,
    +	0xd3, 0x1c, 0x41, 0x8b, 0x62, 0xf7, 0x83, 0x9c, 0x87, 0x05, 0xf3, 0x8b, 0x32, 0xdd, 0x5a, 0x6f,
    +	0x92, 0xbd, 0x0d, 0xbf, 0xe6, 0x44, 0xdb, 0xd9, 0x1f, 0x65, 0x4c, 0xd6, 0x40, 0xe1, 0x64, 0x35,
    +	0xe5, 0x06, 0x32, 0x12, 0xad, 0xf6, 0x50, 0x00, 0x1f, 0x35, 0xd1, 0xaa, 0xfd, 0x47, 0x16, 0x20,
    +	0xde, 0x8c, 0x21, 0xb8, 0x51, 0x71, 0x88, 0x95, 0x66, 0x06, 0x0b, 0x54, 0x10, 0xac, 0x61, 0x3d,
    +	0x91, 0xe1, 0x49, 0xb8, 0xb2, 0x94, 0x7b, 0xbb, 0xb2, 0x1c, 0x61, 0x44, 0x7f, 0x69, 0x18, 0x92,
    +	0x0f, 0x56, 0xd1, 0x5d, 0x18, 0x6f, 0x38, 0x1d, 0xe7, 0xbe, 0xdb, 0x72, 0x23, 0x97, 0x84, 0x45,
    +	0x7e, 0x6e, 0x8b, 0x1a, 0x9e, 0x70, 0x3e, 0xd0, 0x4a, 0xb0, 0x41, 0x07, 0xcd, 0x01, 0x74, 0x02,
    +	0x77, 0xd7, 0x6d, 0x91, 0x2d, 0xa6, 0x10, 0x62, 0x51, 0x9e, 0xb8, 0xd3, 0x9d, 0x2c, 0xc5, 0x1a,
    +	0x46, 0x46, 0x70, 0x95, 0xf2, 0x53, 0x0e, 0xae, 0x02, 0xc7, 0x16, 0x5c, 0x65, 0xe0, 0x48, 0xc1,
    +	0x55, 0x46, 0x8e, 0x1c, 0x5c, 0x65, 0xb0, 0xaf, 0xe0, 0x2a, 0x18, 0x4e, 0x4b, 0xd9, 0x93, 0xfe,
    +	0x5f, 0x71, 0x5b, 0x44, 0x5c, 0x38, 0x78, 0x68, 0xaa, 0xd9, 0x83, 0xfd, 0xea, 0x69, 0x9c, 0x89,
    +	0x81, 0x73, 0x6a, 0xa2, 0x2f, 0x43, 0xc5, 0x69, 0xb5, 0xfc, 0x07, 0x6a, 0x52, 0x97, 0xc3, 0x86,
    +	0xd3, 0x8a, 0xc3, 0x32, 0x8e, 0x2c, 0x9c, 0x3b, 0xd8, 0xaf, 0x56, 0xe6, 0x73, 0x70, 0x70, 0x6e,
    +	0x6d, 0xf4, 0x0e, 0x8c, 0x76, 0x02, 0xbf, 0xb1, 0xa6, 0xbd, 0xaa, 0xbf, 0x40, 0x07, 0xb0, 0x26,
    +	0x0b, 0x0f, 0xf7, 0xab, 0x13, 0xea, 0x0f, 0x3b, 0xf0, 0xe3, 0x0a, 0x19, 0x71, 0x4b, 0xc6, 0x9e,
    +	0x76, 0xdc, 0x92, 0xf1, 0x27, 0x1c, 0xb7, 0xc4, 0xde, 0x81, 0x13, 0x75, 0x12, 0xb8, 0x4e, 0xcb,
    +	0x7d, 0x44, 0x65, 0x72, 0xc9, 0x03, 0x37, 0x60, 0x34, 0x48, 0x70, 0xfd, 0xbe, 0x92, 0x09, 0x68,
    +	0x7a, 0x19, 0xc9, 0xe5, 0x63, 0x42, 0xf6, 0xff, 0x6b, 0xc1, 0xb0, 0x78, 0x04, 0x7b, 0x0c, 0x92,
    +	0xe9, 0xbc, 0x61, 0x92, 0xa9, 0x66, 0x4f, 0x0a, 0xeb, 0x4c, 0xae, 0x31, 0x66, 0x35, 0x61, 0x8c,
    +	0x79, 0xb6, 0x88, 0x48, 0xb1, 0x19, 0xe6, 0x3f, 0x2b, 0xd3, 0x1b, 0x82, 0x11, 0x8e, 0xe1, 0xe9,
    +	0x0f, 0xc1, 0x3a, 0x0c, 0x87, 0x22, 0x1c, 0x40, 0x29, 0xff, 0x8d, 0x51, 0x72, 0x12, 0x63, 0x1f,
    +	0x48, 0x11, 0x00, 0x40, 0x12, 0xc9, 0x8c, 0x33, 0x50, 0x7e, 0x8a, 0x71, 0x06, 0x7a, 0x05, 0xac,
    +	0x18, 0x78, 0x12, 0x01, 0x2b, 0xec, 0xdf, 0x60, 0xa7, 0xb3, 0x5e, 0x7e, 0x0c, 0x82, 0xdb, 0x75,
    +	0xf3, 0x1c, 0xb7, 0x0b, 0x56, 0x96, 0xe8, 0x54, 0x8e, 0x00, 0xf7, 0x6b, 0x16, 0x9c, 0xcf, 0xf8,
    +	0x2a, 0x4d, 0x9a, 0x7b, 0x05, 0x46, 0x9c, 0x6e, 0xd3, 0x55, 0x7b, 0x59, 0xb3, 0x16, 0xcf, 0x8b,
    +	0x72, 0xac, 0x30, 0xd0, 0x22, 0xcc, 0x90, 0x54, 0x7c, 0x61, 0x1e, 0xb9, 0x8b, 0xbd, 0x9c, 0x4e,
    +	0x07, 0x17, 0x4e, 0xe3, 0xab, 0xa0, 0x77, 0xe5, 0xdc, 0xa0, 0x77, 0x7f, 0xcf, 0x82, 0x31, 0xf5,
    +	0x20, 0xfe, 0xa9, 0x8f, 0xf6, 0x7b, 0xe6, 0x68, 0x3f, 0x53, 0x30, 0xda, 0x39, 0xc3, 0xfc, 0x7b,
    +	0x25, 0xd5, 0xdf, 0x9a, 0x1f, 0x44, 0x7d, 0x48, 0x89, 0x8f, 0xff, 0xec, 0xe5, 0x2a, 0x8c, 0x39,
    +	0x9d, 0x8e, 0x04, 0x48, 0xff, 0x45, 0x96, 0x1a, 0x26, 0x2e, 0xc6, 0x3a, 0x8e, 0x7a, 0x85, 0x53,
    +	0xce, 0x7d, 0x85, 0xd3, 0x04, 0x88, 0x9c, 0x60, 0x8b, 0x44, 0xb4, 0x4c, 0xb8, 0x5b, 0xe7, 0xf3,
    +	0x9b, 0x6e, 0xe4, 0xb6, 0xe6, 0x5c, 0x2f, 0x0a, 0xa3, 0x60, 0x6e, 0xd5, 0x8b, 0x6e, 0x07, 0xfc,
    +	0x9a, 0xaa, 0x85, 0x96, 0x54, 0xb4, 0xb0, 0x46, 0x57, 0x06, 0x7f, 0x61, 0x6d, 0x0c, 0x9a, 0x8e,
    +	0x30, 0xeb, 0xa2, 0x1c, 0x2b, 0x0c, 0xfb, 0x0b, 0xec, 0xf4, 0x61, 0x63, 0x7a, 0xb4, 0x90, 0x89,
    +	0x7f, 0x3c, 0xae, 0x66, 0x83, 0x99, 0x84, 0x97, 0xf4, 0xc0, 0x8c, 0xc5, 0xcc, 0x9e, 0x36, 0xac,
    +	0xbf, 0xb3, 0x8d, 0xa3, 0x37, 0xa2, 0xaf, 0xa5, 0x9c, 0x9b, 0x5e, 0xed, 0x71, 0x6a, 0x1c, 0xc1,
    +	0x9d, 0x89, 0xe5, 0x89, 0x64, 0x59, 0xf4, 0x56, 0x6b, 0x62, 0x5f, 0x68, 0x79, 0x22, 0x05, 0x00,
    +	0xc7, 0x38, 0x54, 0x60, 0x53, 0x7f, 0xc2, 0x0a, 0x8a, 0xd3, 0x09, 0x28, 0xec, 0x10, 0x6b, 0x18,
    +	0xe8, 0x8a, 0x50, 0x5a, 0x70, 0xdb, 0xc3, 0x33, 0x09, 0xa5, 0x85, 0x1c, 0x2e, 0x4d, 0xd3, 0x74,
    +	0x15, 0xc6, 0xc8, 0xc3, 0x88, 0x04, 0x9e, 0xd3, 0xa2, 0x2d, 0x0c, 0xc6, 0xc1, 0x91, 0x97, 0xe3,
    +	0x62, 0xac, 0xe3, 0xa0, 0x0d, 0x98, 0x0a, 0xb9, 0x2e, 0x4f, 0x25, 0xb1, 0xe1, 0x3a, 0xd1, 0xcf,
    +	0xaa, 0x50, 0x04, 0x26, 0xf8, 0x90, 0x15, 0x71, 0xee, 0x24, 0x03, 0xb4, 0x24, 0x49, 0xa0, 0x77,
    +	0x61, 0xb2, 0xe5, 0x3b, 0xcd, 0x05, 0xa7, 0xe5, 0x78, 0x0d, 0x36, 0x3e, 0x23, 0x46, 0x94, 0xce,
    +	0xc9, 0x5b, 0x06, 0x14, 0x27, 0xb0, 0xa9, 0x80, 0xa8, 0x97, 0x88, 0xc4, 0x4b, 0x8e, 0xb7, 0x45,
    +	0xc2, 0xca, 0x28, 0xfb, 0x2a, 0x26, 0x20, 0xde, 0xca, 0xc1, 0xc1, 0xb9, 0xb5, 0xd1, 0x35, 0x18,
    +	0x97, 0x9f, 0xaf, 0xc5, 0x33, 0x8a, 0x1f, 0x34, 0x69, 0x30, 0x6c, 0x60, 0xa2, 0x10, 0x4e, 0xc9,
    +	0xff, 0x1b, 0x81, 0xb3, 0xb9, 0xe9, 0x36, 0x44, 0x90, 0x0f, 0xfe, 0x28, 0xfd, 0x4b, 0xf2, 0x05,
    +	0xec, 0x72, 0x16, 0xd2, 0xe1, 0x7e, 0xf5, 0x9c, 0x18, 0xb5, 0x4c, 0x38, 0xce, 0xa6, 0x8d, 0xd6,
    +	0xe0, 0x04, 0xf7, 0x81, 0x59, 0xdc, 0x26, 0x8d, 0x1d, 0xb9, 0xe1, 0x98, 0xd4, 0xa8, 0x3d, 0xfc,
    +	0xb9, 0x91, 0x46, 0xc1, 0x59, 0xf5, 0xd0, 0x87, 0x50, 0xe9, 0x74, 0xef, 0xb7, 0xdc, 0x70, 0x7b,
    +	0xdd, 0x8f, 0x98, 0x0b, 0xd9, 0x7c, 0xb3, 0x19, 0x90, 0x90, 0xbf, 0x59, 0x66, 0x47, 0xaf, 0x8c,
    +	0x41, 0x55, 0xcb, 0xc1, 0xc3, 0xb9, 0x14, 0xd0, 0x23, 0x38, 0x95, 0x58, 0x08, 0x22, 0x98, 0xcc,
    +	0x64, 0x7e, 0x0a, 0xbb, 0x7a, 0x56, 0x05, 0x11, 0x97, 0x29, 0x0b, 0x84, 0xb3, 0x9b, 0x40, 0x6f,
    +	0x01, 0xb8, 0x9d, 0x15, 0xa7, 0xed, 0xb6, 0xe8, 0x75, 0xf4, 0x04, 0x5b, 0x23, 0xf4, 0x6a, 0x02,
    +	0xab, 0x35, 0x59, 0x4a, 0x79, 0xb3, 0xf8, 0xb7, 0x87, 0x35, 0x6c, 0x74, 0x0b, 0x26, 0xc5, 0xbf,
    +	0x3d, 0x31, 0xa5, 0x33, 0x2a, 0xdb, 0xf1, 0xa4, 0xac, 0xa1, 0xe6, 0x31, 0x51, 0x82, 0x13, 0x75,
    +	0xd1, 0x16, 0x9c, 0x97, 0xa9, 0x96, 0xf5, 0xf5, 0x29, 0xe7, 0x20, 0x64, 0x79, 0xe3, 0x46, 0xf8,
    +	0x9b, 0xa2, 0xf9, 0x22, 0x44, 0x5c, 0x4c, 0x87, 0x9e, 0xeb, 0xfa, 0x32, 0xe7, 0x2f, 0xd9, 0x4f,
    +	0xc5, 0xb1, 0x4e, 0x6f, 0x25, 0x81, 0x38, 0x8d, 0x8f, 0x7c, 0x38, 0xe5, 0x7a, 0x59, 0xab, 0xfa,
    +	0x34, 0x23, 0xf4, 0x45, 0xfe, 0x88, 0xbf, 0x78, 0x45, 0x67, 0xc2, 0x71, 0x36, 0x5d, 0xb4, 0x0a,
    +	0x27, 0x22, 0x5e, 0xb0, 0xe4, 0x86, 0x3c, 0x2d, 0x15, 0xbd, 0xf6, 0x9d, 0x61, 0xcd, 0x9d, 0xa1,
    +	0xab, 0x79, 0x23, 0x0d, 0xc6, 0x59, 0x75, 0x3e, 0x9e, 0x03, 0xe8, 0xef, 0x5b, 0xb4, 0xb6, 0x26,
    +	0xe8, 0xa3, 0x6f, 0xc2, 0xb8, 0x3e, 0x3e, 0x42, 0x68, 0xb9, 0x94, 0x2d, 0x07, 0x6b, 0xec, 0x85,
    +	0x5f, 0x13, 0x14, 0x0b, 0xd1, 0x61, 0xd8, 0xa0, 0x88, 0x1a, 0x19, 0xc1, 0x37, 0xae, 0xf4, 0x27,
    +	0x14, 0xf5, 0xef, 0xff, 0x48, 0x20, 0x7b, 0xe7, 0xa0, 0x5b, 0x30, 0xd2, 0x68, 0xb9, 0xc4, 0x8b,
    +	0x56, 0x6b, 0x45, 0x21, 0x68, 0x17, 0x05, 0x8e, 0xd8, 0x8a, 0x22, 0x9b, 0x1c, 0x2f, 0xc3, 0x8a,
    +	0x82, 0x7d, 0x0d, 0xc6, 0xea, 0x2d, 0x42, 0x3a, 0xfc, 0x1d, 0x17, 0x7a, 0x89, 0x5d, 0x4c, 0x98,
    +	0x68, 0x69, 0x31, 0xd1, 0x52, 0xbf, 0x73, 0x30, 0xa1, 0x52, 0xc2, 0xed, 0xdf, 0x2e, 0x41, 0xb5,
    +	0x47, 0x52, 0xc3, 0x84, 0xbd, 0xcd, 0xea, 0xcb, 0xde, 0x36, 0x0f, 0x53, 0xf1, 0x3f, 0x5d, 0x95,
    +	0xa7, 0x9c, 0xa1, 0xef, 0x9a, 0x60, 0x9c, 0xc4, 0xef, 0xfb, 0x5d, 0x8b, 0x6e, 0xb2, 0x1b, 0xe8,
    +	0xf9, 0x32, 0xcb, 0x30, 0xd5, 0x0f, 0xf6, 0x7f, 0xf7, 0xce, 0x35, 0xbb, 0xda, 0xbf, 0x51, 0x82,
    +	0x53, 0x6a, 0x08, 0x7f, 0x78, 0x07, 0xee, 0x4e, 0x7a, 0xe0, 0x9e, 0x80, 0xd1, 0xda, 0xbe, 0x0d,
    +	0x43, 0x3c, 0x2e, 0x6e, 0x1f, 0x32, 0xff, 0x73, 0x66, 0x1e, 0x06, 0x25, 0x66, 0x1a, 0xb9, 0x18,
    +	0xfe, 0x92, 0x05, 0x53, 0x89, 0x07, 0x92, 0x08, 0x6b, 0xaf, 0xe8, 0x1f, 0x47, 0x2e, 0xcf, 0x92,
    +	0xf8, 0x2f, 0xc2, 0xc0, 0xb6, 0xaf, 0x9c, 0x94, 0x15, 0xc6, 0x0d, 0x3f, 0x8c, 0x30, 0x83, 0xd8,
    +	0xff, 0xd2, 0x82, 0xc1, 0x0d, 0xc7, 0xf5, 0x22, 0x69, 0xfd, 0xb0, 0x72, 0xac, 0x1f, 0xfd, 0x7c,
    +	0x17, 0x7a, 0x13, 0x86, 0xc8, 0xe6, 0x26, 0x69, 0x44, 0x62, 0x56, 0x65, 0x94, 0x8f, 0xa1, 0x65,
    +	0x56, 0x4a, 0x85, 0x50, 0xd6, 0x18, 0xff, 0x8b, 0x05, 0x32, 0xba, 0x07, 0xa3, 0x91, 0xdb, 0x26,
    +	0xf3, 0xcd, 0xa6, 0xf0, 0x09, 0x78, 0x8c, 0xd0, 0x34, 0x1b, 0x92, 0x00, 0x8e, 0x69, 0xd9, 0xdf,
    +	0x2b, 0x01, 0xc4, 0x71, 0xf8, 0x7a, 0x7d, 0xe2, 0x42, 0xca, 0x5a, 0x7c, 0x29, 0xc3, 0x5a, 0x8c,
    +	0x62, 0x82, 0x19, 0xa6, 0x62, 0x35, 0x4c, 0xe5, 0xbe, 0x86, 0x69, 0xe0, 0x28, 0xc3, 0xb4, 0x08,
    +	0x33, 0x71, 0x1c, 0x41, 0x33, 0x8c, 0x2a, 0x3b, 0xbf, 0x37, 0x92, 0x40, 0x9c, 0xc6, 0xb7, 0x09,
    +	0x5c, 0x54, 0xe1, 0xd4, 0xc4, 0x59, 0xc8, 0x9e, 0x12, 0xe8, 0xd6, 0xf7, 0x1e, 0xe3, 0x14, 0x9b,
    +	0xc3, 0x4b, 0xb9, 0xe6, 0xf0, 0xbf, 0x69, 0xc1, 0xc9, 0x64, 0x3b, 0xec, 0xdd, 0xfd, 0x77, 0x2d,
    +	0x38, 0x15, 0xe7, 0xf4, 0x4a, 0xbb, 0x20, 0xbc, 0x51, 0x18, 0x22, 0x2e, 0xa7, 0xc7, 0x71, 0x38,
    +	0x99, 0xb5, 0x2c, 0xd2, 0x38, 0xbb, 0x45, 0xfb, 0xff, 0x19, 0x80, 0x4a, 0x5e, 0x6c, 0x39, 0xf6,
    +	0xd2, 0xc8, 0x79, 0x58, 0xdf, 0x21, 0x0f, 0xc4, 0x7b, 0x8e, 0xf8, 0xa5, 0x11, 0x2f, 0xc6, 0x12,
    +	0x9e, 0x4c, 0xe3, 0x56, 0xea, 0x33, 0x8d, 0xdb, 0x36, 0xcc, 0x3c, 0xd8, 0x26, 0xde, 0x1d, 0x2f,
    +	0x74, 0x22, 0x37, 0xdc, 0x74, 0x99, 0x01, 0x9d, 0xaf, 0x9b, 0xb7, 0xe4, 0xab, 0x8b, 0x7b, 0x49,
    +	0x84, 0xc3, 0xfd, 0xea, 0x79, 0xa3, 0x20, 0xee, 0x32, 0x67, 0x24, 0x38, 0x4d, 0x34, 0x9d, 0x05,
    +	0x6f, 0xe0, 0x29, 0x67, 0xc1, 0x6b, 0xbb, 0xc2, 0xed, 0x46, 0x3e, 0x23, 0x61, 0xd7, 0xd6, 0x35,
    +	0x55, 0x8a, 0x35, 0x0c, 0xf4, 0x75, 0x40, 0x7a, 0x1a, 0x53, 0x23, 0xb4, 0xef, 0xab, 0x07, 0xfb,
    +	0x55, 0xb4, 0x9e, 0x82, 0x1e, 0xee, 0x57, 0x4f, 0xd0, 0xd2, 0x55, 0x8f, 0x5e, 0x7f, 0xe3, 0x78,
    +	0x88, 0x19, 0x84, 0xd0, 0x3d, 0x98, 0xa6, 0xa5, 0x6c, 0x47, 0xc9, 0xb8, 0xc1, 0xfc, 0xca, 0xfa,
    +	0xf2, 0xc1, 0x7e, 0x75, 0x7a, 0x3d, 0x01, 0xcb, 0x23, 0x9d, 0x22, 0x92, 0x91, 0x0c, 0x6f, 0xa4,
    +	0xdf, 0x64, 0x78, 0xf6, 0x77, 0x2d, 0x38, 0x4b, 0x0f, 0xb8, 0xe6, 0xad, 0x1c, 0x2b, 0xba, 0xd3,
    +	0x71, 0xb9, 0x9d, 0x46, 0x1c, 0x35, 0x4c, 0x57, 0x57, 0x5b, 0xe5, 0x56, 0x1a, 0x05, 0xa5, 0x1c,
    +	0x7e, 0xc7, 0xf5, 0x9a, 0x49, 0x0e, 0x7f, 0xd3, 0xf5, 0x9a, 0x98, 0x41, 0xd4, 0x91, 0x55, 0xce,
    +	0xcd, 0x43, 0xf0, 0x2b, 0x74, 0xaf, 0xd2, 0xbe, 0xfc, 0x40, 0xbb, 0x81, 0x5e, 0xd6, 0x6d, 0xaa,
    +	0xc2, 0x7d, 0x32, 0xd7, 0x9e, 0xfa, 0x1d, 0x0b, 0xc4, 0xeb, 0xf7, 0x3e, 0xce, 0xe4, 0xaf, 0xc2,
    +	0xf8, 0x6e, 0x3a, 0xc5, 0xf3, 0xc5, 0xfc, 0x70, 0x00, 0x22, 0xb1, 0xb3, 0x12, 0xd1, 0x8d, 0x74,
    +	0xce, 0x06, 0x2d, 0xbb, 0x09, 0x02, 0xba, 0x44, 0x98, 0x55, 0xa3, 0x77, 0x6f, 0x5e, 0x03, 0x68,
    +	0x32, 0x5c, 0x96, 0xec, 0xac, 0x64, 0x4a, 0x5c, 0x4b, 0x0a, 0x82, 0x35, 0x2c, 0xfb, 0x17, 0xca,
    +	0x30, 0x26, 0x53, 0x0a, 0x77, 0xbd, 0x7e, 0x74, 0x8f, 0xba, 0xe0, 0x54, 0xea, 0x29, 0x38, 0x7d,
    +	0x08, 0x33, 0x01, 0x69, 0x74, 0x83, 0xd0, 0xdd, 0x25, 0x12, 0x2c, 0x36, 0xc9, 0x1c, 0x4f, 0x83,
    +	0x91, 0x00, 0x1e, 0xb2, 0xd0, 0x5d, 0x89, 0x42, 0x66, 0x34, 0x4e, 0x13, 0x42, 0x57, 0x60, 0x94,
    +	0xa9, 0xde, 0x6b, 0xb1, 0x42, 0x58, 0x29, 0xbe, 0xd6, 0x24, 0x00, 0xc7, 0x38, 0xec, 0x72, 0xd0,
    +	0xbd, 0xaf, 0x65, 0xa2, 0x8b, 0x2f, 0x07, 0xbc, 0x18, 0x4b, 0x38, 0xfa, 0x32, 0x4c, 0xf3, 0x7a,
    +	0x81, 0xdf, 0x71, 0xb6, 0xb8, 0x49, 0x70, 0x50, 0x85, 0xd7, 0x99, 0x5e, 0x4b, 0xc0, 0x0e, 0xf7,
    +	0xab, 0x27, 0x93, 0x65, 0xac, 0xdb, 0x29, 0x2a, 0xcc, 0xf3, 0x8f, 0x37, 0x42, 0xcf, 0x8c, 0x94,
    +	0xc3, 0x60, 0x0c, 0xc2, 0x3a, 0x9e, 0xfd, 0x27, 0x16, 0xcc, 0x68, 0x53, 0xd5, 0x77, 0x26, 0x12,
    +	0x63, 0x90, 0x4a, 0x7d, 0x0c, 0xd2, 0xd1, 0xa2, 0x3d, 0x64, 0xce, 0xf0, 0xc0, 0x13, 0x9a, 0x61,
    +	0xfb, 0x9b, 0x80, 0xd2, 0xf9, 0xaa, 0xd1, 0xfb, 0xdc, 0x91, 0xdf, 0x0d, 0x48, 0xb3, 0xc8, 0xe0,
    +	0xaf, 0x47, 0xce, 0x91, 0x2f, 0x57, 0x79, 0x2d, 0xac, 0xea, 0xdb, 0x7f, 0x32, 0x00, 0xd3, 0xc9,
    +	0x58, 0x1d, 0xe8, 0x06, 0x0c, 0x71, 0x29, 0x5d, 0x90, 0x2f, 0xf0, 0x27, 0xd3, 0x22, 0x7c, 0xf0,
    +	0x2c, 0x41, 0x5c, 0xba, 0x17, 0xf5, 0xd1, 0x87, 0x30, 0xd6, 0xf4, 0x1f, 0x78, 0x0f, 0x9c, 0xa0,
    +	0x39, 0x5f, 0x5b, 0x15, 0x1c, 0x22, 0x53, 0x01, 0xb5, 0x14, 0xa3, 0xe9, 0x51, 0x43, 0x98, 0xef,
    +	0x44, 0x0c, 0xc2, 0x3a, 0x39, 0xb4, 0xc1, 0x12, 0x57, 0x6d, 0xba, 0x5b, 0x6b, 0x4e, 0xa7, 0xe8,
    +	0x55, 0xd7, 0xa2, 0x44, 0xd2, 0x28, 0x4f, 0x88, 0xec, 0x56, 0x1c, 0x80, 0x63, 0x42, 0xe8, 0x47,
    +	0xe1, 0x44, 0x98, 0x63, 0x12, 0xcb, 0x71, 0x38, 0x28, 0xb4, 0x12, 0x71, 0x65, 0x4a, 0x96, 0xf1,
    +	0x2c, 0xab, 0x19, 0xf4, 0x10, 0x90, 0x50, 0x3d, 0x6f, 0x04, 0xdd, 0x30, 0xe2, 0x29, 0x20, 0xc5,
    +	0xa5, 0xeb, 0x73, 0xd9, 0x7a, 0x82, 0x24, 0xb6, 0xd6, 0x36, 0x0b, 0x9c, 0x9c, 0xc6, 0xc0, 0x19,
    +	0x6d, 0xa0, 0x6d, 0x98, 0xec, 0x18, 0xd9, 0x37, 0xd9, 0xde, 0xcc, 0x89, 0x2e, 0x9c, 0x97, 0xa7,
    +	0x93, 0x9f, 0xd2, 0x26, 0x14, 0x27, 0xe8, 0xda, 0xdf, 0x19, 0x80, 0x59, 0x99, 0x8a, 0x3e, 0xe3,
    +	0x9d, 0xcc, 0xb7, 0xad, 0xc4, 0x43, 0x99, 0xb7, 0xf2, 0x8f, 0x94, 0xa7, 0xf6, 0x5c, 0xe6, 0x27,
    +	0xd3, 0xcf, 0x65, 0xde, 0x39, 0x62, 0x37, 0x9e, 0xd8, 0xa3, 0x99, 0x1f, 0xda, 0x97, 0x2e, 0x07,
    +	0x27, 0xc1, 0x10, 0x02, 0x10, 0xe6, 0xf1, 0xef, 0x6b, 0xd2, 0x48, 0x95, 0xa3, 0x68, 0xb8, 0x21,
    +	0x70, 0x0c, 0xb1, 0x62, 0x5c, 0x46, 0xc9, 0x67, 0x1c, 0x5d, 0xd1, 0xa1, 0x34, 0x49, 0xbb, 0x13,
    +	0xed, 0x2d, 0xb9, 0x81, 0xe8, 0x71, 0x26, 0xcd, 0x65, 0x81, 0x93, 0xa6, 0x29, 0x21, 0x58, 0xd1,
    +	0x41, 0xbb, 0x30, 0xb3, 0xc5, 0x62, 0x4b, 0x69, 0x59, 0xe1, 0x05, 0x07, 0xca, 0xe4, 0x10, 0xd7,
    +	0x17, 0x97, 0xf3, 0x53, 0xc8, 0xf3, 0x6b, 0x66, 0x0a, 0x05, 0xa7, 0x9b, 0xa0, 0x5b, 0xe3, 0xa4,
    +	0xf3, 0x20, 0x5c, 0x6e, 0x39, 0x61, 0xe4, 0x36, 0x16, 0x5a, 0x7e, 0x63, 0xa7, 0x1e, 0xf9, 0x81,
    +	0xcc, 0x2a, 0x9a, 0x79, 0xcb, 0x9b, 0xbf, 0x57, 0x4f, 0xe1, 0x1b, 0xcd, 0xb3, 0xec, 0xb6, 0x59,
    +	0x58, 0x38, 0xb3, 0x2d, 0xb4, 0x0e, 0xc3, 0x5b, 0x6e, 0x84, 0x49, 0xc7, 0x17, 0x7c, 0x29, 0x93,
    +	0xe9, 0x5e, 0xe7, 0x28, 0x46, 0x4b, 0x2c, 0xf6, 0x95, 0x00, 0x60, 0x49, 0x04, 0xbd, 0xaf, 0x8e,
    +	0x9b, 0xa1, 0x7c, 0x55, 0x6f, 0xda, 0xcb, 0x2f, 0xf3, 0xc0, 0x79, 0x17, 0xca, 0xde, 0x66, 0x58,
    +	0x14, 0xf5, 0x67, 0x7d, 0xc5, 0xd0, 0xd4, 0x2d, 0x0c, 0xd3, 0x4b, 0xf8, 0xfa, 0x4a, 0x1d, 0xd3,
    +	0x8a, 0xec, 0x81, 0x6d, 0xd8, 0x08, 0x5d, 0x91, 0xbc, 0x2b, 0xf3, 0xbd, 0xf1, 0x6a, 0x7d, 0xb1,
    +	0xbe, 0x6a, 0xd0, 0x60, 0xf1, 0x13, 0x59, 0x31, 0xe6, 0xd5, 0xd1, 0x5d, 0x18, 0xdd, 0xe2, 0x2c,
    +	0x76, 0x93, 0x87, 0xb5, 0xcd, 0x39, 0xf6, 0xae, 0x4b, 0x24, 0x83, 0x1e, 0x3b, 0x9c, 0x14, 0x08,
    +	0xc7, 0xa4, 0xd0, 0x77, 0x2c, 0x38, 0xd5, 0x49, 0xe8, 0x6a, 0xd9, 0xb3, 0x38, 0xe1, 0x10, 0x97,
    +	0xf9, 0xd4, 0xa0, 0x96, 0x55, 0xc1, 0x68, 0x90, 0x19, 0x7a, 0x32, 0xd1, 0x70, 0x76, 0x73, 0x74,
    +	0xa0, 0x83, 0xfb, 0xcd, 0xa2, 0x7c, 0x4f, 0x89, 0x10, 0x48, 0x7c, 0xa0, 0xf1, 0xc2, 0x12, 0xa6,
    +	0x15, 0xd1, 0x06, 0xc0, 0x66, 0x8b, 0x88, 0xd8, 0x92, 0xc2, 0xfd, 0x2a, 0x53, 0xce, 0x58, 0x51,
    +	0x58, 0x82, 0x0e, 0xbb, 0xf3, 0xc6, 0xa5, 0x58, 0xa3, 0x43, 0x97, 0x52, 0xc3, 0xf5, 0x9a, 0x24,
    +	0x60, 0x66, 0xb4, 0x9c, 0xa5, 0xb4, 0xc8, 0x30, 0xd2, 0x4b, 0x89, 0x97, 0x63, 0x41, 0x81, 0xd1,
    +	0x22, 0x9d, 0xed, 0xcd, 0xb0, 0x28, 0xb3, 0xc8, 0x22, 0xe9, 0x6c, 0x27, 0x16, 0x14, 0xa7, 0xc5,
    +	0xca, 0xb1, 0xa0, 0x40, 0xb7, 0xcc, 0x26, 0xdd, 0x40, 0x24, 0xa8, 0x4c, 0xe5, 0x6f, 0x99, 0x15,
    +	0x8e, 0x92, 0xde, 0x32, 0x02, 0x80, 0x25, 0x11, 0xf4, 0x0d, 0x53, 0xae, 0x9a, 0x66, 0x34, 0x5f,
    +	0xee, 0x21, 0x57, 0x19, 0x74, 0x8b, 0x25, 0xab, 0xb7, 0xa0, 0xb4, 0xd9, 0x60, 0xe6, 0xb7, 0x1c,
    +	0xeb, 0xc4, 0xca, 0xa2, 0x41, 0x8d, 0x45, 0xea, 0x5f, 0x59, 0xc4, 0xa5, 0xcd, 0x06, 0x5d, 0xfa,
    +	0xce, 0xa3, 0x6e, 0x40, 0x56, 0xdc, 0x16, 0x11, 0xa1, 0x83, 0x33, 0x97, 0xfe, 0xbc, 0x44, 0x4a,
    +	0x2f, 0x7d, 0x05, 0xc2, 0x31, 0x29, 0x4a, 0x37, 0x96, 0xf6, 0x4e, 0xe4, 0xd3, 0x55, 0x42, 0x5d,
    +	0x9a, 0x6e, 0xa6, 0xbc, 0xb7, 0x03, 0x13, 0xbb, 0x61, 0x67, 0x9b, 0x48, 0xae, 0xc8, 0x0c, 0x83,
    +	0x39, 0x31, 0x31, 0xee, 0x0a, 0x44, 0x37, 0x88, 0xba, 0x4e, 0x2b, 0xc5, 0xc8, 0x99, 0x12, 0xe7,
    +	0xae, 0x4e, 0x0c, 0x9b, 0xb4, 0xe9, 0x42, 0xf8, 0x88, 0x07, 0xae, 0x63, 0x26, 0xc2, 0x9c, 0x85,
    +	0x90, 0x11, 0xdb, 0x8e, 0x2f, 0x04, 0x01, 0xc0, 0x92, 0x88, 0x1a, 0x6c, 0x76, 0x00, 0x9d, 0xee,
    +	0x31, 0xd8, 0xa9, 0xfe, 0xc6, 0x83, 0xcd, 0x0e, 0x9c, 0x98, 0x14, 0x3b, 0x68, 0x3a, 0xdb, 0x7e,
    +	0xe4, 0x7b, 0x89, 0x43, 0xee, 0x4c, 0xfe, 0x41, 0x53, 0xcb, 0xc0, 0x4f, 0x1f, 0x34, 0x59, 0x58,
    +	0x38, 0xb3, 0x2d, 0xfa, 0x71, 0x1d, 0x19, 0x83, 0x50, 0x64, 0x42, 0x79, 0x29, 0x27, 0x84, 0x67,
    +	0x3a, 0x50, 0x21, 0xff, 0x38, 0x05, 0xc2, 0x31, 0x29, 0xd4, 0xa4, 0x92, 0xae, 0x1e, 0xdb, 0x96,
    +	0x65, 0x74, 0xc9, 0x91, 0x0b, 0xb2, 0xa2, 0xe0, 0x4a, 0x29, 0x57, 0x87, 0xe0, 0x04, 0x4d, 0xe6,
    +	0x23, 0xc8, 0x1f, 0x15, 0xb2, 0x84, 0x2f, 0x39, 0x53, 0x9d, 0xf1, 0xee, 0x90, 0x4f, 0xb5, 0x00,
    +	0x60, 0x49, 0x84, 0x8e, 0x86, 0x78, 0x0a, 0xe7, 0x87, 0x2c, 0x6f, 0x52, 0x9e, 0x29, 0x3f, 0xcb,
    +	0x20, 0x25, 0x03, 0xcd, 0x0b, 0x10, 0x8e, 0x49, 0x51, 0x4e, 0x4e, 0x0f, 0xbc, 0x73, 0xf9, 0x9c,
    +	0x3c, 0x79, 0xdc, 0x31, 0x4e, 0x4e, 0x0f, 0xbb, 0xb2, 0x38, 0xea, 0x54, 0x5c, 0x74, 0x96, 0xf3,
    +	0x25, 0xa7, 0x5f, 0x2a, 0xb0, 0x7a, 0xba, 0x5f, 0x0a, 0x84, 0x63, 0x52, 0xec, 0x28, 0x66, 0x41,
    +	0xf0, 0x2e, 0x14, 0x1c, 0xc5, 0x14, 0x21, 0xe3, 0x28, 0xd6, 0x82, 0xe4, 0xd9, 0x7f, 0xb9, 0x04,
    +	0x17, 0x8a, 0xf7, 0x6d, 0x6c, 0xad, 0xab, 0xc5, 0xde, 0x51, 0x09, 0x6b, 0x1d, 0xd7, 0x1d, 0xc5,
    +	0x58, 0x7d, 0x87, 0x36, 0xbe, 0x0e, 0x33, 0xea, 0xe1, 0x63, 0xcb, 0x6d, 0xec, 0x69, 0x89, 0x5e,
    +	0x55, 0x10, 0xa0, 0x7a, 0x12, 0x01, 0xa7, 0xeb, 0xa0, 0x79, 0x98, 0x32, 0x0a, 0x57, 0x97, 0x84,
    +	0xa2, 0x21, 0xce, 0x56, 0x62, 0x82, 0x71, 0x12, 0xdf, 0xfe, 0x45, 0x0b, 0xce, 0xf0, 0x40, 0xbc,
    +	0xa4, 0x59, 0xf3, 0x9b, 0x52, 0xa3, 0x70, 0xa4, 0xc8, 0xbd, 0x9b, 0x30, 0xd5, 0x31, 0xab, 0xf6,
    +	0x08, 0x36, 0xae, 0xa3, 0xc6, 0x7d, 0x4d, 0x00, 0x70, 0x92, 0xa8, 0xfd, 0xf3, 0x25, 0x38, 0x5f,
    +	0xe8, 0xc9, 0x8f, 0x30, 0x9c, 0xde, 0x6a, 0x87, 0xce, 0x62, 0x40, 0x9a, 0xc4, 0x8b, 0x5c, 0xa7,
    +	0x55, 0xef, 0x90, 0x86, 0x66, 0x6f, 0x65, 0x2e, 0xf1, 0xd7, 0xd7, 0xea, 0xf3, 0x69, 0x0c, 0x9c,
    +	0x53, 0x13, 0xad, 0x00, 0x4a, 0x43, 0xc4, 0x0c, 0xb3, 0xcb, 0x74, 0x9a, 0x1e, 0xce, 0xa8, 0x81,
    +	0xbe, 0x00, 0x13, 0xea, 0x85, 0x80, 0x36, 0xe3, 0xec, 0x80, 0xc0, 0x3a, 0x00, 0x9b, 0x78, 0xe8,
    +	0x2a, 0x4f, 0x63, 0x25, 0x12, 0x9e, 0x09, 0xe3, 0xec, 0x94, 0xcc, 0x51, 0x25, 0x8a, 0xb1, 0x8e,
    +	0xb3, 0x70, 0xed, 0x77, 0xfe, 0xf0, 0xc2, 0x67, 0x7e, 0xf7, 0x0f, 0x2f, 0x7c, 0xe6, 0x0f, 0xfe,
    +	0xf0, 0xc2, 0x67, 0x7e, 0xfc, 0xe0, 0x82, 0xf5, 0x3b, 0x07, 0x17, 0xac, 0xdf, 0x3d, 0xb8, 0x60,
    +	0xfd, 0xc1, 0xc1, 0x05, 0xeb, 0x7f, 0x3b, 0xb8, 0x60, 0x7d, 0xef, 0x7f, 0xbf, 0xf0, 0x99, 0xaf,
    +	0xa2, 0x38, 0x16, 0xf6, 0x15, 0x3a, 0x3b, 0x57, 0x76, 0xaf, 0xfe, 0x87, 0x00, 0x00, 0x00, 0xff,
    +	0xff, 0xba, 0xfb, 0xfc, 0xdd, 0x18, 0x2e, 0x01, 0x00,
     }
     
     func (m *AWSElasticBlockStoreVolumeSource) Marshal() (dAtA []byte, err error) {
    @@ -9346,6 +9549,22 @@ func (m *Container) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if len(m.RestartPolicyRules) > 0 {
    +		for iNdEx := len(m.RestartPolicyRules) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.RestartPolicyRules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1
    +			i--
    +			dAtA[i] = 0xca
    +		}
    +	}
     	if m.RestartPolicy != nil {
     		i -= len(*m.RestartPolicy)
     		copy(dAtA[i:], *m.RestartPolicy)
    @@ -9600,6 +9819,44 @@ func (m *Container) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *ContainerExtendedResourceRequest) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ContainerExtendedResourceRequest) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ContainerExtendedResourceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.RequestName)
    +	copy(dAtA[i:], m.RequestName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.RequestName)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.ResourceName)
    +	copy(dAtA[i:], m.ResourceName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceName)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.ContainerName)
    +	copy(dAtA[i:], m.ContainerName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ContainerName)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *ContainerImage) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -9712,6 +9969,81 @@ func (m *ContainerResizePolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *ContainerRestartRule) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ContainerRestartRule) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ContainerRestartRule) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.ExitCodes != nil {
    +		{
    +			size, err := m.ExitCodes.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i -= len(m.Action)
    +	copy(dAtA[i:], m.Action)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Action)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ContainerRestartRuleOnExitCodes) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ContainerRestartRuleOnExitCodes) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ContainerRestartRuleOnExitCodes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Values) > 0 {
    +		for iNdEx := len(m.Values) - 1; iNdEx >= 0; iNdEx-- {
    +			i = encodeVarintGenerated(dAtA, i, uint64(m.Values[iNdEx]))
    +			i--
    +			dAtA[i] = 0x10
    +		}
    +	}
    +	i -= len(m.Operator)
    +	copy(dAtA[i:], m.Operator)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Operator)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *ContainerState) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -10681,6 +11013,18 @@ func (m *EnvVarSource) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.FileKeyRef != nil {
    +		{
    +			size, err := m.FileKeyRef.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x2a
    +	}
     	if m.SecretKeyRef != nil {
     		{
     			size, err := m.SecretKeyRef.MarshalToSizedBuffer(dAtA[:i])
    @@ -10790,6 +11134,22 @@ func (m *EphemeralContainerCommon) MarshalToSizedBuffer(dAtA []byte) (int, error
     	_ = i
     	var l int
     	_ = l
    +	if len(m.RestartPolicyRules) > 0 {
    +		for iNdEx := len(m.RestartPolicyRules) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.RestartPolicyRules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1
    +			i--
    +			dAtA[i] = 0xca
    +		}
    +	}
     	if m.RestartPolicy != nil {
     		i -= len(*m.RestartPolicy)
     		copy(dAtA[i:], *m.RestartPolicy)
    @@ -11426,6 +11786,54 @@ func (m *FCVolumeSource) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *FileKeySelector) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *FileKeySelector) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *FileKeySelector) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.Optional != nil {
    +		i--
    +		if *m.Optional {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x20
    +	}
    +	i -= len(m.Key)
    +	copy(dAtA[i:], m.Key)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.Path)
    +	copy(dAtA[i:], m.Path)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.VolumeName)
    +	copy(dAtA[i:], m.VolumeName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeName)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *FlexPersistentVolumeSource) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -15791,6 +16199,59 @@ func (m *PodAttachOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *PodCertificateProjection) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *PodCertificateProjection) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *PodCertificateProjection) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.CertificateChainPath)
    +	copy(dAtA[i:], m.CertificateChainPath)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.CertificateChainPath)))
    +	i--
    +	dAtA[i] = 0x32
    +	i -= len(m.KeyPath)
    +	copy(dAtA[i:], m.KeyPath)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.KeyPath)))
    +	i--
    +	dAtA[i] = 0x2a
    +	i -= len(m.CredentialBundlePath)
    +	copy(dAtA[i:], m.CredentialBundlePath)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.CredentialBundlePath)))
    +	i--
    +	dAtA[i] = 0x22
    +	if m.MaxExpirationSeconds != nil {
    +		i = encodeVarintGenerated(dAtA, i, uint64(*m.MaxExpirationSeconds))
    +		i--
    +		dAtA[i] = 0x18
    +	}
    +	i -= len(m.KeyType)
    +	copy(dAtA[i:], m.KeyType)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.KeyType)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.SignerName)
    +	copy(dAtA[i:], m.SignerName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.SignerName)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *PodCondition) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -16016,6 +16477,48 @@ func (m *PodExecOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	return len(dAtA) - i, nil
     }
     
    +func (m *PodExtendedResourceClaimStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *PodExtendedResourceClaimStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *PodExtendedResourceClaimStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.ResourceClaimName)
    +	copy(dAtA[i:], m.ResourceClaimName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.ResourceClaimName)))
    +	i--
    +	dAtA[i] = 0x12
    +	if len(m.RequestMappings) > 0 {
    +		for iNdEx := len(m.RequestMappings) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.RequestMappings[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
     func (m *PodIP) Marshal() (dAtA []byte, err error) {
     	size := m.Size()
     	dAtA = make([]byte, size)
    @@ -16597,6 +17100,15 @@ func (m *PodSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.HostnameOverride != nil {
    +		i -= len(*m.HostnameOverride)
    +		copy(dAtA[i:], *m.HostnameOverride)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.HostnameOverride)))
    +		i--
    +		dAtA[i] = 0x2
    +		i--
    +		dAtA[i] = 0xca
    +	}
     	if m.Resources != nil {
     		{
     			size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i])
    @@ -17085,6 +17597,20 @@ func (m *PodStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.ExtendedResourceClaimStatus != nil {
    +		{
    +			size, err := m.ExtendedResourceClaimStatus.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x1
    +		i--
    +		dAtA[i] = 0x92
    +	}
     	i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration))
     	i--
     	dAtA[i] = 0x1
    @@ -21108,6 +21634,18 @@ func (m *VolumeProjection) MarshalToSizedBuffer(dAtA []byte) (int, error) {
     	_ = i
     	var l int
     	_ = l
    +	if m.PodCertificate != nil {
    +		{
    +			size, err := m.PodCertificate.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x32
    +	}
     	if m.ClusterTrustBundle != nil {
     		{
     			size, err := m.ClusterTrustBundle.MarshalToSizedBuffer(dAtA[:i])
    @@ -22471,6 +23009,27 @@ func (m *Container) Size() (n int) {
     		l = len(*m.RestartPolicy)
     		n += 2 + l + sovGenerated(uint64(l))
     	}
    +	if len(m.RestartPolicyRules) > 0 {
    +		for _, e := range m.RestartPolicyRules {
    +			l = e.Size()
    +			n += 2 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ContainerExtendedResourceRequest) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.ContainerName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.ResourceName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.RequestName)
    +	n += 1 + l + sovGenerated(uint64(l))
     	return n
     }
     
    @@ -22520,6 +23079,37 @@ func (m *ContainerResizePolicy) Size() (n int) {
     	return n
     }
     
    +func (m *ContainerRestartRule) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Action)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.ExitCodes != nil {
    +		l = m.ExitCodes.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *ContainerRestartRuleOnExitCodes) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Operator)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Values) > 0 {
    +		for _, e := range m.Values {
    +			n += 1 + sovGenerated(uint64(e))
    +		}
    +	}
    +	return n
    +}
    +
     func (m *ContainerState) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -22896,6 +23486,10 @@ func (m *EnvVarSource) Size() (n int) {
     		l = m.SecretKeyRef.Size()
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    +	if m.FileKeyRef != nil {
    +		l = m.FileKeyRef.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -23007,6 +23601,12 @@ func (m *EphemeralContainerCommon) Size() (n int) {
     		l = len(*m.RestartPolicy)
     		n += 2 + l + sovGenerated(uint64(l))
     	}
    +	if len(m.RestartPolicyRules) > 0 {
    +		for _, e := range m.RestartPolicyRules {
    +			l = e.Size()
    +			n += 2 + l + sovGenerated(uint64(l))
    +		}
    +	}
     	return n
     }
     
    @@ -23149,6 +23749,24 @@ func (m *FCVolumeSource) Size() (n int) {
     	return n
     }
     
    +func (m *FileKeySelector) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.VolumeName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Path)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Key)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Optional != nil {
    +		n += 2
    +	}
    +	return n
    +}
    +
     func (m *FlexPersistentVolumeSource) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -24752,6 +25370,28 @@ func (m *PodAttachOptions) Size() (n int) {
     	return n
     }
     
    +func (m *PodCertificateProjection) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.SignerName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.KeyType)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.MaxExpirationSeconds != nil {
    +		n += 1 + sovGenerated(uint64(*m.MaxExpirationSeconds))
    +	}
    +	l = len(m.CredentialBundlePath)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.KeyPath)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.CertificateChainPath)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
     func (m *PodCondition) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -24837,6 +25477,23 @@ func (m *PodExecOptions) Size() (n int) {
     	return n
     }
     
    +func (m *PodExtendedResourceClaimStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.RequestMappings) > 0 {
    +		for _, e := range m.RequestMappings {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = len(m.ResourceClaimName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
     func (m *PodIP) Size() (n int) {
     	if m == nil {
     		return 0
    @@ -25224,6 +25881,10 @@ func (m *PodSpec) Size() (n int) {
     		l = m.Resources.Size()
     		n += 2 + l + sovGenerated(uint64(l))
     	}
    +	if m.HostnameOverride != nil {
    +		l = len(*m.HostnameOverride)
    +		n += 2 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -25296,6 +25957,10 @@ func (m *PodStatus) Size() (n int) {
     		}
     	}
     	n += 2 + sovGenerated(uint64(m.ObservedGeneration))
    +	if m.ExtendedResourceClaimStatus != nil {
    +		l = m.ExtendedResourceClaimStatus.Size()
    +		n += 2 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -26751,6 +27416,10 @@ func (m *VolumeProjection) Size() (n int) {
     		l = m.ClusterTrustBundle.Size()
     		n += 1 + l + sovGenerated(uint64(l))
     	}
    +	if m.PodCertificate != nil {
    +		l = m.PodCertificate.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
     	return n
     }
     
    @@ -27426,6 +28095,11 @@ func (this *Container) String() string {
     		repeatedStringForResizePolicy += strings.Replace(strings.Replace(f.String(), "ContainerResizePolicy", "ContainerResizePolicy", 1), `&`, ``, 1) + ","
     	}
     	repeatedStringForResizePolicy += "}"
    +	repeatedStringForRestartPolicyRules := "[]ContainerRestartRule{"
    +	for _, f := range this.RestartPolicyRules {
    +		repeatedStringForRestartPolicyRules += strings.Replace(strings.Replace(f.String(), "ContainerRestartRule", "ContainerRestartRule", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForRestartPolicyRules += "}"
     	s := strings.Join([]string{`&Container{`,
     		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
     		`Image:` + fmt.Sprintf("%v", this.Image) + `,`,
    @@ -27451,6 +28125,19 @@ func (this *Container) String() string {
     		`StartupProbe:` + strings.Replace(this.StartupProbe.String(), "Probe", "Probe", 1) + `,`,
     		`ResizePolicy:` + repeatedStringForResizePolicy + `,`,
     		`RestartPolicy:` + valueToStringGenerated(this.RestartPolicy) + `,`,
    +		`RestartPolicyRules:` + repeatedStringForRestartPolicyRules + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ContainerExtendedResourceRequest) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ContainerExtendedResourceRequest{`,
    +		`ContainerName:` + fmt.Sprintf("%v", this.ContainerName) + `,`,
    +		`ResourceName:` + fmt.Sprintf("%v", this.ResourceName) + `,`,
    +		`RequestName:` + fmt.Sprintf("%v", this.RequestName) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -27491,6 +28178,28 @@ func (this *ContainerResizePolicy) String() string {
     	}, "")
     	return s
     }
    +func (this *ContainerRestartRule) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ContainerRestartRule{`,
    +		`Action:` + fmt.Sprintf("%v", this.Action) + `,`,
    +		`ExitCodes:` + strings.Replace(this.ExitCodes.String(), "ContainerRestartRuleOnExitCodes", "ContainerRestartRuleOnExitCodes", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ContainerRestartRuleOnExitCodes) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ContainerRestartRuleOnExitCodes{`,
    +		`Operator:` + fmt.Sprintf("%v", this.Operator) + `,`,
    +		`Values:` + fmt.Sprintf("%v", this.Values) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *ContainerState) String() string {
     	if this == nil {
     		return "nil"
    @@ -27777,6 +28486,7 @@ func (this *EnvVarSource) String() string {
     		`ResourceFieldRef:` + strings.Replace(this.ResourceFieldRef.String(), "ResourceFieldSelector", "ResourceFieldSelector", 1) + `,`,
     		`ConfigMapKeyRef:` + strings.Replace(this.ConfigMapKeyRef.String(), "ConfigMapKeySelector", "ConfigMapKeySelector", 1) + `,`,
     		`SecretKeyRef:` + strings.Replace(this.SecretKeyRef.String(), "SecretKeySelector", "SecretKeySelector", 1) + `,`,
    +		`FileKeyRef:` + strings.Replace(this.FileKeyRef.String(), "FileKeySelector", "FileKeySelector", 1) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -27826,6 +28536,11 @@ func (this *EphemeralContainerCommon) String() string {
     		repeatedStringForResizePolicy += strings.Replace(strings.Replace(f.String(), "ContainerResizePolicy", "ContainerResizePolicy", 1), `&`, ``, 1) + ","
     	}
     	repeatedStringForResizePolicy += "}"
    +	repeatedStringForRestartPolicyRules := "[]ContainerRestartRule{"
    +	for _, f := range this.RestartPolicyRules {
    +		repeatedStringForRestartPolicyRules += strings.Replace(strings.Replace(f.String(), "ContainerRestartRule", "ContainerRestartRule", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForRestartPolicyRules += "}"
     	s := strings.Join([]string{`&EphemeralContainerCommon{`,
     		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
     		`Image:` + fmt.Sprintf("%v", this.Image) + `,`,
    @@ -27851,6 +28566,7 @@ func (this *EphemeralContainerCommon) String() string {
     		`StartupProbe:` + strings.Replace(this.StartupProbe.String(), "Probe", "Probe", 1) + `,`,
     		`ResizePolicy:` + repeatedStringForResizePolicy + `,`,
     		`RestartPolicy:` + valueToStringGenerated(this.RestartPolicy) + `,`,
    +		`RestartPolicyRules:` + repeatedStringForRestartPolicyRules + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -27951,6 +28667,19 @@ func (this *FCVolumeSource) String() string {
     	}, "")
     	return s
     }
    +func (this *FileKeySelector) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&FileKeySelector{`,
    +		`VolumeName:` + fmt.Sprintf("%v", this.VolumeName) + `,`,
    +		`Path:` + fmt.Sprintf("%v", this.Path) + `,`,
    +		`Key:` + fmt.Sprintf("%v", this.Key) + `,`,
    +		`Optional:` + valueToStringGenerated(this.Optional) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *FlexPersistentVolumeSource) String() string {
     	if this == nil {
     		return "nil"
    @@ -29169,6 +29898,21 @@ func (this *PodAttachOptions) String() string {
     	}, "")
     	return s
     }
    +func (this *PodCertificateProjection) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&PodCertificateProjection{`,
    +		`SignerName:` + fmt.Sprintf("%v", this.SignerName) + `,`,
    +		`KeyType:` + fmt.Sprintf("%v", this.KeyType) + `,`,
    +		`MaxExpirationSeconds:` + valueToStringGenerated(this.MaxExpirationSeconds) + `,`,
    +		`CredentialBundlePath:` + fmt.Sprintf("%v", this.CredentialBundlePath) + `,`,
    +		`KeyPath:` + fmt.Sprintf("%v", this.KeyPath) + `,`,
    +		`CertificateChainPath:` + fmt.Sprintf("%v", this.CertificateChainPath) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *PodCondition) String() string {
     	if this == nil {
     		return "nil"
    @@ -29228,6 +29972,22 @@ func (this *PodExecOptions) String() string {
     	}, "")
     	return s
     }
    +func (this *PodExtendedResourceClaimStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForRequestMappings := "[]ContainerExtendedResourceRequest{"
    +	for _, f := range this.RequestMappings {
    +		repeatedStringForRequestMappings += strings.Replace(strings.Replace(f.String(), "ContainerExtendedResourceRequest", "ContainerExtendedResourceRequest", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForRequestMappings += "}"
    +	s := strings.Join([]string{`&PodExtendedResourceClaimStatus{`,
    +		`RequestMappings:` + repeatedStringForRequestMappings + `,`,
    +		`ResourceClaimName:` + fmt.Sprintf("%v", this.ResourceClaimName) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
     func (this *PodIP) String() string {
     	if this == nil {
     		return "nil"
    @@ -29503,6 +30263,7 @@ func (this *PodSpec) String() string {
     		`SchedulingGates:` + repeatedStringForSchedulingGates + `,`,
     		`ResourceClaims:` + repeatedStringForResourceClaims + `,`,
     		`Resources:` + strings.Replace(this.Resources.String(), "ResourceRequirements", "ResourceRequirements", 1) + `,`,
    +		`HostnameOverride:` + valueToStringGenerated(this.HostnameOverride) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -29564,6 +30325,7 @@ func (this *PodStatus) String() string {
     		`ResourceClaimStatuses:` + repeatedStringForResourceClaimStatuses + `,`,
     		`HostIPs:` + repeatedStringForHostIPs + `,`,
     		`ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`,
    +		`ExtendedResourceClaimStatus:` + strings.Replace(this.ExtendedResourceClaimStatus.String(), "PodExtendedResourceClaimStatus", "PodExtendedResourceClaimStatus", 1) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -30673,6 +31435,7 @@ func (this *VolumeProjection) String() string {
     		`ConfigMap:` + strings.Replace(this.ConfigMap.String(), "ConfigMapProjection", "ConfigMapProjection", 1) + `,`,
     		`ServiceAccountToken:` + strings.Replace(this.ServiceAccountToken.String(), "ServiceAccountTokenProjection", "ServiceAccountTokenProjection", 1) + `,`,
     		`ClusterTrustBundle:` + strings.Replace(this.ClusterTrustBundle.String(), "ClusterTrustBundleProjection", "ClusterTrustBundleProjection", 1) + `,`,
    +		`PodCertificate:` + strings.Replace(this.PodCertificate.String(), "PodCertificateProjection", "PodCertificateProjection", 1) + `,`,
     		`}`,
     	}, "")
     	return s
    @@ -36465,61 +37228,11 @@ func (m *Container) Unmarshal(dAtA []byte) error {
     			s := ContainerRestartPolicy(dAtA[iNdEx:postIndex])
     			m.RestartPolicy = &s
     			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ContainerImage) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ContainerImage: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ContainerImage: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    +		case 25:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field RestartPolicyRules", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -36529,43 +37242,26 @@ func (m *ContainerImage) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Names = append(m.Names, string(dAtA[iNdEx:postIndex]))
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field SizeBytes", wireType)
    -			}
    -			m.SizeBytes = 0
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				m.SizeBytes |= int64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    +			m.RestartPolicyRules = append(m.RestartPolicyRules, ContainerRestartRule{})
    +			if err := m.RestartPolicyRules[len(m.RestartPolicyRules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
     			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -36587,7 +37283,7 @@ func (m *ContainerImage) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *ContainerPort) Unmarshal(dAtA []byte) error {
    +func (m *ContainerExtendedResourceRequest) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -36610,15 +37306,15 @@ func (m *ContainerPort) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: ContainerPort: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ContainerExtendedResourceRequest: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ContainerPort: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ContainerExtendedResourceRequest: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ContainerName", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -36646,49 +37342,11 @@ func (m *ContainerPort) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    +			m.ContainerName = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 2:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field HostPort", wireType)
    -			}
    -			m.HostPort = 0
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				m.HostPort |= int32(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -		case 3:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ContainerPort", wireType)
    -			}
    -			m.ContainerPort = 0
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				m.ContainerPort |= int32(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -		case 4:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceName", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -36716,11 +37374,11 @@ func (m *ContainerPort) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Protocol = Protocol(dAtA[iNdEx:postIndex])
    +			m.ResourceName = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
    -		case 5:
    +		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field HostIP", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field RequestName", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -36748,7 +37406,7 @@ func (m *ContainerPort) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.HostIP = string(dAtA[iNdEx:postIndex])
    +			m.RequestName = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -36771,7 +37429,7 @@ func (m *ContainerPort) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *ContainerResizePolicy) Unmarshal(dAtA []byte) error {
    +func (m *ContainerImage) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -36794,15 +37452,15 @@ func (m *ContainerResizePolicy) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: ContainerResizePolicy: wiretype end group for non-group")
    +			return fmt.Errorf("proto: ContainerImage: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ContainerResizePolicy: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: ContainerImage: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ResourceName", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -36830,13 +37488,13 @@ func (m *ContainerResizePolicy) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.ResourceName = ResourceName(dAtA[iNdEx:postIndex])
    +			m.Names = append(m.Names, string(dAtA[iNdEx:postIndex]))
     			iNdEx = postIndex
     		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field RestartPolicy", wireType)
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SizeBytes", wireType)
     			}
    -			var stringLen uint64
    +			m.SizeBytes = 0
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -36846,24 +37504,585 @@ func (m *ContainerResizePolicy) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				m.SizeBytes |= int64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.RestartPolicy = ResourceResizeRestartPolicy(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ContainerPort) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ContainerPort: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ContainerPort: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field HostPort", wireType)
    +			}
    +			m.HostPort = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.HostPort |= int32(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		case 3:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ContainerPort", wireType)
    +			}
    +			m.ContainerPort = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.ContainerPort |= int32(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Protocol = Protocol(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field HostIP", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.HostIP = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ContainerResizePolicy) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ContainerResizePolicy: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ContainerResizePolicy: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ResourceName = ResourceName(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field RestartPolicy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.RestartPolicy = ResourceResizeRestartPolicy(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ContainerRestartRule) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ContainerRestartRule: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ContainerRestartRule: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Action = ContainerRestartRuleAction(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ExitCodes", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ExitCodes == nil {
    +				m.ExitCodes = &ContainerRestartRuleOnExitCodes{}
    +			}
    +			if err := m.ExitCodes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ContainerRestartRuleOnExitCodes) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ContainerRestartRuleOnExitCodes: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ContainerRestartRuleOnExitCodes: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Operator = ContainerRestartRuleOnExitCodesOperator(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType == 0 {
    +				var v int32
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					v |= int32(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				m.Values = append(m.Values, v)
    +			} else if wireType == 2 {
    +				var packedLen int
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					packedLen |= int(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				if packedLen < 0 {
    +					return ErrInvalidLengthGenerated
    +				}
    +				postIndex := iNdEx + packedLen
    +				if postIndex < 0 {
    +					return ErrInvalidLengthGenerated
    +				}
    +				if postIndex > l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				var elementCount int
    +				var count int
    +				for _, integer := range dAtA[iNdEx:postIndex] {
    +					if integer < 128 {
    +						count++
    +					}
    +				}
    +				elementCount = count
    +				if elementCount != 0 && len(m.Values) == 0 {
    +					m.Values = make([]int32, 0, elementCount)
    +				}
    +				for iNdEx < postIndex {
    +					var v int32
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						v |= int32(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					m.Values = append(m.Values, v)
    +				}
    +			} else {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType)
    +			}
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -38790,13 +40009,196 @@ func (m *EndpointAddress) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.IP = string(dAtA[iNdEx:postIndex])
    +			m.IP = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field TargetRef", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.TargetRef == nil {
    +				m.TargetRef = &ObjectReference{}
    +			}
    +			if err := m.TargetRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Hostname = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.NodeName = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *EndpointPort) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: EndpointPort: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: EndpointPort: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field TargetRef", wireType)
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
     			}
    -			var msglen int
    +			m.Port = 0
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -38806,31 +40208,14 @@ func (m *EndpointAddress) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				m.Port |= int32(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if m.TargetRef == nil {
    -				m.TargetRef = &ObjectReference{}
    -			}
    -			if err := m.TargetRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
     		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -38858,11 +40243,11 @@ func (m *EndpointAddress) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Hostname = string(dAtA[iNdEx:postIndex])
    +			m.Protocol = Protocol(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 4:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field NodeName", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field AppProtocol", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -38891,7 +40276,7 @@ func (m *EndpointAddress) Unmarshal(dAtA []byte) error {
     				return io.ErrUnexpectedEOF
     			}
     			s := string(dAtA[iNdEx:postIndex])
    -			m.NodeName = &s
    +			m.AppProtocol = &s
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -38914,7 +40299,7 @@ func (m *EndpointAddress) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *EndpointPort) Unmarshal(dAtA []byte) error {
    +func (m *EndpointSubset) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -38937,17 +40322,17 @@ func (m *EndpointPort) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: EndpointPort: wiretype end group for non-group")
    +			return fmt.Errorf("proto: EndpointSubset: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: EndpointPort: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: EndpointSubset: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -38957,48 +40342,31 @@ func (m *EndpointPort) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    +			m.Addresses = append(m.Addresses, EndpointAddress{})
    +			if err := m.Addresses[len(m.Addresses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		case 2:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
    -			}
    -			m.Port = 0
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				m.Port |= int32(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Protocol", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field NotReadyAddresses", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -39008,29 +40376,31 @@ func (m *EndpointPort) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Protocol = Protocol(dAtA[iNdEx:postIndex])
    +			m.NotReadyAddresses = append(m.NotReadyAddresses, EndpointAddress{})
    +			if err := m.NotReadyAddresses[len(m.NotReadyAddresses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
    -		case 4:
    +		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field AppProtocol", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -39040,24 +40410,25 @@ func (m *EndpointPort) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := string(dAtA[iNdEx:postIndex])
    -			m.AppProtocol = &s
    +			m.Ports = append(m.Ports, EndpointPort{})
    +			if err := m.Ports[len(m.Ports)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -39080,7 +40451,7 @@ func (m *EndpointPort) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *EndpointSubset) Unmarshal(dAtA []byte) error {
    +func (m *Endpoints) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -39103,15 +40474,15 @@ func (m *EndpointSubset) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: EndpointSubset: wiretype end group for non-group")
    +			return fmt.Errorf("proto: Endpoints: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: EndpointSubset: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: Endpoints: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -39138,48 +40509,13 @@ func (m *EndpointSubset) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Addresses = append(m.Addresses, EndpointAddress{})
    -			if err := m.Addresses[len(m.Addresses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field NotReadyAddresses", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.NotReadyAddresses = append(m.NotReadyAddresses, EndpointAddress{})
    -			if err := m.NotReadyAddresses[len(m.NotReadyAddresses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Ports", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Subsets", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -39206,8 +40542,8 @@ func (m *EndpointSubset) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Ports = append(m.Ports, EndpointPort{})
    -			if err := m.Ports[len(m.Ports)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.Subsets = append(m.Subsets, EndpointSubset{})
    +			if err := m.Subsets[len(m.Subsets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -39232,7 +40568,7 @@ func (m *EndpointSubset) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *Endpoints) Unmarshal(dAtA []byte) error {
    +func (m *EndpointsList) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -39255,15 +40591,15 @@ func (m *Endpoints) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: Endpoints: wiretype end group for non-group")
    +			return fmt.Errorf("proto: EndpointsList: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: Endpoints: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: EndpointsList: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -39290,13 +40626,13 @@ func (m *Endpoints) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Subsets", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -39323,8 +40659,8 @@ func (m *Endpoints) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Subsets = append(m.Subsets, EndpointSubset{})
    -			if err := m.Subsets[len(m.Subsets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.Items = append(m.Items, Endpoints{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -39349,7 +40685,7 @@ func (m *Endpoints) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *EndpointsList) Unmarshal(dAtA []byte) error {
    +func (m *EnvFromSource) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -39372,15 +40708,47 @@ func (m *EndpointsList) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: EndpointsList: wiretype end group for non-group")
    +			return fmt.Errorf("proto: EnvFromSource: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: EndpointsList: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: EnvFromSource: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Prefix", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Prefix = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ConfigMapRef", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -39407,13 +40775,16 @@ func (m *EndpointsList) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if m.ConfigMapRef == nil {
    +				m.ConfigMapRef = &ConfigMapEnvSource{}
    +			}
    +			if err := m.ConfigMapRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 2:
    +		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -39440,8 +40811,10 @@ func (m *EndpointsList) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Items = append(m.Items, Endpoints{})
    -			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if m.SecretRef == nil {
    +				m.SecretRef = &SecretEnvSource{}
    +			}
    +			if err := m.SecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -39466,7 +40839,7 @@ func (m *EndpointsList) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *EnvFromSource) Unmarshal(dAtA []byte) error {
    +func (m *EnvVar) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -39489,15 +40862,15 @@ func (m *EnvFromSource) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: EnvFromSource: wiretype end group for non-group")
    +			return fmt.Errorf("proto: EnvVar: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: EnvFromSource: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: EnvVar: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Prefix", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -39525,13 +40898,13 @@ func (m *EnvFromSource) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Prefix = string(dAtA[iNdEx:postIndex])
    +			m.Name = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ConfigMapRef", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -39541,31 +40914,27 @@ func (m *EnvFromSource) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.ConfigMapRef == nil {
    -				m.ConfigMapRef = &ConfigMapEnvSource{}
    -			}
    -			if err := m.ConfigMapRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.Value = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ValueFrom", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -39592,10 +40961,10 @@ func (m *EnvFromSource) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.SecretRef == nil {
    -				m.SecretRef = &SecretEnvSource{}
    +			if m.ValueFrom == nil {
    +				m.ValueFrom = &EnvVarSource{}
     			}
    -			if err := m.SecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.ValueFrom.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -39620,7 +40989,7 @@ func (m *EnvFromSource) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *EnvVar) Unmarshal(dAtA []byte) error {
    +func (m *EnvVarSource) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -39643,79 +41012,15 @@ func (m *EnvVar) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: EnvVar: wiretype end group for non-group")
    +			return fmt.Errorf("proto: EnvVarSource: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: EnvVar: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: EnvVarSource: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Value = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ValueFrom", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -39742,66 +41047,16 @@ func (m *EnvVar) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.ValueFrom == nil {
    -				m.ValueFrom = &EnvVarSource{}
    +			if m.FieldRef == nil {
    +				m.FieldRef = &ObjectFieldSelector{}
     			}
    -			if err := m.ValueFrom.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.FieldRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *EnvVarSource) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: EnvVarSource: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: EnvVarSource: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    +		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field FieldRef", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceFieldRef", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -39828,16 +41083,16 @@ func (m *EnvVarSource) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.FieldRef == nil {
    -				m.FieldRef = &ObjectFieldSelector{}
    +			if m.ResourceFieldRef == nil {
    +				m.ResourceFieldRef = &ResourceFieldSelector{}
     			}
    -			if err := m.FieldRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.ResourceFieldRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 2:
    +		case 3:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ResourceFieldRef", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ConfigMapKeyRef", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -39864,16 +41119,16 @@ func (m *EnvVarSource) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.ResourceFieldRef == nil {
    -				m.ResourceFieldRef = &ResourceFieldSelector{}
    +			if m.ConfigMapKeyRef == nil {
    +				m.ConfigMapKeyRef = &ConfigMapKeySelector{}
     			}
    -			if err := m.ResourceFieldRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.ConfigMapKeyRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 3:
    +		case 4:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ConfigMapKeyRef", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field SecretKeyRef", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -39900,16 +41155,16 @@ func (m *EnvVarSource) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.ConfigMapKeyRef == nil {
    -				m.ConfigMapKeyRef = &ConfigMapKeySelector{}
    +			if m.SecretKeyRef == nil {
    +				m.SecretKeyRef = &SecretKeySelector{}
     			}
    -			if err := m.ConfigMapKeyRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.SecretKeyRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 4:
    +		case 5:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field SecretKeyRef", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field FileKeyRef", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -39936,10 +41191,10 @@ func (m *EnvVarSource) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.SecretKeyRef == nil {
    -				m.SecretKeyRef = &SecretKeySelector{}
    +			if m.FileKeyRef == nil {
    +				m.FileKeyRef = &FileKeySelector{}
     			}
    -			if err := m.SecretKeyRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			if err := m.FileKeyRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    @@ -40700,46 +41955,116 @@ func (m *EphemeralContainerCommon) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.EnvFrom = append(m.EnvFrom, EnvFromSource{})
    -			if err := m.EnvFrom[len(m.EnvFrom)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 20:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field TerminationMessagePolicy", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    +			m.EnvFrom = append(m.EnvFrom, EnvFromSource{})
    +			if err := m.EnvFrom[len(m.EnvFrom)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 20:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field TerminationMessagePolicy", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.TerminationMessagePolicy = TerminationMessagePolicy(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 21:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field VolumeDevices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.VolumeDevices = append(m.VolumeDevices, VolumeDevice{})
    +			if err := m.VolumeDevices[len(m.VolumeDevices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 22:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field StartupProbe", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.StartupProbe == nil {
    +				m.StartupProbe = &Probe{}
     			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    +			if err := m.StartupProbe.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
     			}
    -			m.TerminationMessagePolicy = TerminationMessagePolicy(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
    -		case 21:
    +		case 23:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field VolumeDevices", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResizePolicy", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -40766,16 +42091,16 @@ func (m *EphemeralContainerCommon) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.VolumeDevices = append(m.VolumeDevices, VolumeDevice{})
    -			if err := m.VolumeDevices[len(m.VolumeDevices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.ResizePolicy = append(m.ResizePolicy, ContainerResizePolicy{})
    +			if err := m.ResizePolicy[len(m.ResizePolicy)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 22:
    +		case 24:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field StartupProbe", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field RestartPolicy", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -40785,31 +42110,28 @@ func (m *EphemeralContainerCommon) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			if m.StartupProbe == nil {
    -				m.StartupProbe = &Probe{}
    -			}
    -			if err := m.StartupProbe.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			s := ContainerRestartPolicy(dAtA[iNdEx:postIndex])
    +			m.RestartPolicy = &s
     			iNdEx = postIndex
    -		case 23:
    +		case 25:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ResizePolicy", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field RestartPolicyRules", wireType)
     			}
     			var msglen int
     			for shift := uint(0); ; shift += 7 {
    @@ -40836,44 +42158,11 @@ func (m *EphemeralContainerCommon) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.ResizePolicy = append(m.ResizePolicy, ContainerResizePolicy{})
    -			if err := m.ResizePolicy[len(m.ResizePolicy)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +			m.RestartPolicyRules = append(m.RestartPolicyRules, ContainerRestartRule{})
    +			if err := m.RestartPolicyRules[len(m.RestartPolicyRules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
     				return err
     			}
     			iNdEx = postIndex
    -		case 24:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field RestartPolicy", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			s := ContainerRestartPolicy(dAtA[iNdEx:postIndex])
    -			m.RestartPolicy = &s
    -			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -42113,6 +43402,173 @@ func (m *FCVolumeSource) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    +func (m *FileKeySelector) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: FileKeySelector: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: FileKeySelector: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field VolumeName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.VolumeName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Path = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Key = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Optional", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.Optional = &b
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
     func (m *FlexPersistentVolumeSource) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
    @@ -55916,17 +57372,297 @@ func (m *PodAntiAffinity) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: PodAntiAffinity: wiretype end group for non-group")
    +			return fmt.Errorf("proto: PodAntiAffinity: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: PodAntiAffinity: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field RequiredDuringSchedulingIgnoredDuringExecution", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.RequiredDuringSchedulingIgnoredDuringExecution = append(m.RequiredDuringSchedulingIgnoredDuringExecution, PodAffinityTerm{})
    +			if err := m.RequiredDuringSchedulingIgnoredDuringExecution[len(m.RequiredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PreferredDuringSchedulingIgnoredDuringExecution", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.PreferredDuringSchedulingIgnoredDuringExecution = append(m.PreferredDuringSchedulingIgnoredDuringExecution, WeightedPodAffinityTerm{})
    +			if err := m.PreferredDuringSchedulingIgnoredDuringExecution[len(m.PreferredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *PodAttachOptions) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: PodAttachOptions: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: PodAttachOptions: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.Stdin = bool(v != 0)
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.Stdout = bool(v != 0)
    +		case 3:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.Stderr = bool(v != 0)
    +		case 4:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field TTY", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.TTY = bool(v != 0)
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Container", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Container = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *PodCertificateProjection) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: PodCertificateProjection: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: PodAntiAffinity: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: PodCertificateProjection: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field RequiredDuringSchedulingIgnoredDuringExecution", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field SignerName", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -55936,31 +57672,29 @@ func (m *PodAntiAffinity) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.RequiredDuringSchedulingIgnoredDuringExecution = append(m.RequiredDuringSchedulingIgnoredDuringExecution, PodAffinityTerm{})
    -			if err := m.RequiredDuringSchedulingIgnoredDuringExecution[len(m.RequiredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.SignerName = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field PreferredDuringSchedulingIgnoredDuringExecution", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field KeyType", wireType)
     			}
    -			var msglen int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -55970,81 +57704,29 @@ func (m *PodAntiAffinity) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			if msglen < 0 {
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + msglen
    +			postIndex := iNdEx + intStringLen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.PreferredDuringSchedulingIgnoredDuringExecution = append(m.PreferredDuringSchedulingIgnoredDuringExecution, WeightedPodAffinityTerm{})
    -			if err := m.PreferredDuringSchedulingIgnoredDuringExecution[len(m.PreferredDuringSchedulingIgnoredDuringExecution)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    +			m.KeyType = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *PodAttachOptions) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: PodAttachOptions: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: PodAttachOptions: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    +		case 3:
     			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field MaxExpirationSeconds", wireType)
     			}
    -			var v int
    +			var v int32
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -56054,17 +57736,17 @@ func (m *PodAttachOptions) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				v |= int(b&0x7F) << shift
    +				v |= int32(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			m.Stdin = bool(v != 0)
    -		case 2:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType)
    +			m.MaxExpirationSeconds = &v
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field CredentialBundlePath", wireType)
     			}
    -			var v int
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -56074,37 +57756,29 @@ func (m *PodAttachOptions) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				v |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			m.Stdout = bool(v != 0)
    -		case 3:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType)
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
     			}
    -			var v int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				v |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
     			}
    -			m.Stderr = bool(v != 0)
    -		case 4:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field TTY", wireType)
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
     			}
    -			var v int
    +			m.CredentialBundlePath = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field KeyPath", wireType)
    +			}
    +			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -56114,15 +57788,27 @@ func (m *PodAttachOptions) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				v |= int(b&0x7F) << shift
    +				stringLen |= uint64(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			m.TTY = bool(v != 0)
    -		case 5:
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.KeyPath = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 6:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Container", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field CertificateChainPath", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -56150,7 +57836,7 @@ func (m *PodAttachOptions) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Container = string(dAtA[iNdEx:postIndex])
    +			m.CertificateChainPath = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -56607,15 +58293,210 @@ func (m *PodDNSConfigOption) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: PodDNSConfigOption: wiretype end group for non-group")
    +			return fmt.Errorf("proto: PodDNSConfigOption: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: PodDNSConfigOption: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.Value = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *PodExecOptions) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: PodExecOptions: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: PodDNSConfigOption: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: PodExecOptions: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.Stdin = bool(v != 0)
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.Stdout = bool(v != 0)
    +		case 3:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.Stderr = bool(v != 0)
    +		case 4:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field TTY", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.TTY = bool(v != 0)
    +		case 5:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Container", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -56643,11 +58524,11 @@ func (m *PodDNSConfigOption) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    +			m.Container = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
    -		case 2:
    +		case 6:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field Command", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -56675,8 +58556,7 @@ func (m *PodDNSConfigOption) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			s := string(dAtA[iNdEx:postIndex])
    -			m.Value = &s
    +			m.Command = append(m.Command, string(dAtA[iNdEx:postIndex]))
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -56699,7 +58579,7 @@ func (m *PodDNSConfigOption) Unmarshal(dAtA []byte) error {
     	}
     	return nil
     }
    -func (m *PodExecOptions) Unmarshal(dAtA []byte) error {
    +func (m *PodExtendedResourceClaimStatus) Unmarshal(dAtA []byte) error {
     	l := len(dAtA)
     	iNdEx := 0
     	for iNdEx < l {
    @@ -56722,97 +58602,17 @@ func (m *PodExecOptions) Unmarshal(dAtA []byte) error {
     		fieldNum := int32(wire >> 3)
     		wireType := int(wire & 0x7)
     		if wireType == 4 {
    -			return fmt.Errorf("proto: PodExecOptions: wiretype end group for non-group")
    +			return fmt.Errorf("proto: PodExtendedResourceClaimStatus: wiretype end group for non-group")
     		}
     		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: PodExecOptions: illegal tag %d (wire type %d)", fieldNum, wire)
    +			return fmt.Errorf("proto: PodExtendedResourceClaimStatus: illegal tag %d (wire type %d)", fieldNum, wire)
     		}
     		switch fieldNum {
     		case 1:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Stdin", wireType)
    -			}
    -			var v int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				v |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			m.Stdin = bool(v != 0)
    -		case 2:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType)
    -			}
    -			var v int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				v |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			m.Stdout = bool(v != 0)
    -		case 3:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType)
    -			}
    -			var v int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				v |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			m.Stderr = bool(v != 0)
    -		case 4:
    -			if wireType != 0 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field TTY", wireType)
    -			}
    -			var v int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				v |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			m.TTY = bool(v != 0)
    -		case 5:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Container", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field RequestMappings", wireType)
     			}
    -			var stringLen uint64
    +			var msglen int
     			for shift := uint(0); ; shift += 7 {
     				if shift >= 64 {
     					return ErrIntOverflowGenerated
    @@ -56822,27 +58622,29 @@ func (m *PodExecOptions) Unmarshal(dAtA []byte) error {
     				}
     				b := dAtA[iNdEx]
     				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    +				msglen |= int(b&0x7F) << shift
     				if b < 0x80 {
     					break
     				}
     			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    +			if msglen < 0 {
     				return ErrInvalidLengthGenerated
     			}
    -			postIndex := iNdEx + intStringLen
    +			postIndex := iNdEx + msglen
     			if postIndex < 0 {
     				return ErrInvalidLengthGenerated
     			}
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Container = string(dAtA[iNdEx:postIndex])
    +			m.RequestMappings = append(m.RequestMappings, ContainerExtendedResourceRequest{})
    +			if err := m.RequestMappings[len(m.RequestMappings)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
     			iNdEx = postIndex
    -		case 6:
    +		case 2:
     			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Command", wireType)
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceClaimName", wireType)
     			}
     			var stringLen uint64
     			for shift := uint(0); ; shift += 7 {
    @@ -56870,7 +58672,7 @@ func (m *PodExecOptions) Unmarshal(dAtA []byte) error {
     			if postIndex > l {
     				return io.ErrUnexpectedEOF
     			}
    -			m.Command = append(m.Command, string(dAtA[iNdEx:postIndex]))
    +			m.ResourceClaimName = string(dAtA[iNdEx:postIndex])
     			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
    @@ -60088,6 +61890,39 @@ func (m *PodSpec) Unmarshal(dAtA []byte) error {
     				return err
     			}
     			iNdEx = postIndex
    +		case 41:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field HostnameOverride", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.HostnameOverride = &s
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -60687,6 +62522,42 @@ func (m *PodStatus) Unmarshal(dAtA []byte) error {
     					break
     				}
     			}
    +		case 18:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ExtendedResourceClaimStatus", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ExtendedResourceClaimStatus == nil {
    +				m.ExtendedResourceClaimStatus = &PodExtendedResourceClaimStatus{}
    +			}
    +			if err := m.ExtendedResourceClaimStatus.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    @@ -73489,6 +75360,42 @@ func (m *VolumeProjection) Unmarshal(dAtA []byte) error {
     				return err
     			}
     			iNdEx = postIndex
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PodCertificate", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.PodCertificate == nil {
    +				m.PodCertificate = &PodCertificateProjection{}
    +			}
    +			if err := m.PodCertificate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
     		default:
     			iNdEx = preIndex
     			skippy, err := skipGenerated(dAtA[iNdEx:])
    diff --git a/vendor/k8s.io/api/core/v1/generated.proto b/vendor/k8s.io/api/core/v1/generated.proto
    index 9b48fb1c39..fb26953147 100644
    --- a/vendor/k8s.io/api/core/v1/generated.proto
    +++ b/vendor/k8s.io/api/core/v1/generated.proto
    @@ -737,8 +737,8 @@ message Container {
       repeated ContainerPort ports = 6;
     
       // List of sources to populate environment variables in the container.
    -  // The keys defined within a source must be a C_IDENTIFIER. All invalid keys
    -  // will be reported as an event when the container is starting. When a key exists in multiple
    +  // The keys defined within a source may consist of any printable ASCII characters except '='.
    +  // When a key exists in multiple
       // sources, the value associated with the last source will take precedence.
       // Values defined by an Env with a duplicate key will take precedence.
       // Cannot be updated.
    @@ -768,10 +768,10 @@ message Container {
       repeated ContainerResizePolicy resizePolicy = 23;
     
       // RestartPolicy defines the restart behavior of individual containers in a pod.
    -  // This field may only be set for init containers, and the only allowed value is "Always".
    -  // For non-init containers or when this field is not specified,
    +  // This overrides the pod-level restart policy. When this field is not specified,
       // the restart behavior is defined by the Pod's restart policy and the container type.
    -  // Setting the RestartPolicy as "Always" for the init container will have the following effect:
    +  // Additionally, setting the RestartPolicy as "Always" for the init container will
    +  // have the following effect:
       // this init container will be continually restarted on
       // exit until all regular containers have terminated. Once all regular
       // containers have completed, all init containers with restartPolicy "Always"
    @@ -786,6 +786,22 @@ message Container {
       // +optional
       optional string restartPolicy = 24;
     
    +  // Represents a list of rules to be checked to determine if the
    +  // container should be restarted on exit. The rules are evaluated in
    +  // order. Once a rule matches a container exit condition, the remaining
    +  // rules are ignored. If no rule matches the container exit condition,
    +  // the Container-level restart policy determines the whether the container
    +  // is restarted or not. Constraints on the rules:
    +  // - At most 20 rules are allowed.
    +  // - Rules can have the same action.
    +  // - Identical rules are not forbidden in validations.
    +  // When rules are specified, container MUST set RestartPolicy explicitly
    +  // even it if matches the Pod's RestartPolicy.
    +  // +featureGate=ContainerRestartRules
    +  // +optional
    +  // +listType=atomic
    +  repeated ContainerRestartRule restartPolicyRules = 25;
    +
       // Pod volumes to mount into the container's filesystem.
       // Cannot be updated.
       // +optional
    @@ -888,6 +904,19 @@ message Container {
       optional bool tty = 18;
     }
     
    +// ContainerExtendedResourceRequest has the mapping of container name,
    +// extended resource name to the device request name.
    +message ContainerExtendedResourceRequest {
    +  // The name of the container requesting resources.
    +  optional string containerName = 1;
    +
    +  // The name of the extended resource in that container which gets backed by DRA.
    +  optional string resourceName = 2;
    +
    +  // The name of the request in the special ResourceClaim which corresponds to the extended resource.
    +  optional string requestName = 3;
    +}
    +
     // Describe a container image
     message ContainerImage {
       // Names by which this image is known.
    @@ -942,6 +971,39 @@ message ContainerResizePolicy {
       optional string restartPolicy = 2;
     }
     
    +// ContainerRestartRule describes how a container exit is handled.
    +message ContainerRestartRule {
    +  // Specifies the action taken on a container exit if the requirements
    +  // are satisfied. The only possible value is "Restart" to restart the
    +  // container.
    +  // +required
    +  optional string action = 1;
    +
    +  // Represents the exit codes to check on container exits.
    +  // +optional
    +  // +oneOf=when
    +  optional ContainerRestartRuleOnExitCodes exitCodes = 2;
    +}
    +
    +// ContainerRestartRuleOnExitCodes describes the condition
    +// for handling an exited container based on its exit codes.
    +message ContainerRestartRuleOnExitCodes {
    +  // Represents the relationship between the container exit code(s) and the
    +  // specified values. Possible values are:
    +  // - In: the requirement is satisfied if the container exit code is in the
    +  //   set of specified values.
    +  // - NotIn: the requirement is satisfied if the container exit code is
    +  //   not in the set of specified values.
    +  // +required
    +  optional string operator = 1;
    +
    +  // Specifies the set of values to check for container exit codes.
    +  // At most 255 elements are allowed.
    +  // +optional
    +  // +listType=set
    +  repeated int32 values = 2;
    +}
    +
     // ContainerState holds a possible state of container.
     // Only one of its members may be specified.
     // If none of them is specified, the default one is ContainerStateWaiting.
    @@ -1344,7 +1406,8 @@ message EndpointsList {
     
     // EnvFromSource represents the source of a set of ConfigMaps or Secrets
     message EnvFromSource {
    -  // Optional text to prepend to the name of each environment variable. Must be a C_IDENTIFIER.
    +  // Optional text to prepend to the name of each environment variable.
    +  // May consist of any printable ASCII characters except '='.
       // +optional
       optional string prefix = 1;
     
    @@ -1359,7 +1422,8 @@ message EnvFromSource {
     
     // EnvVar represents an environment variable present in a Container.
     message EnvVar {
    -  // Name of the environment variable. Must be a C_IDENTIFIER.
    +  // Name of the environment variable.
    +  // May consist of any printable ASCII characters except '='.
       optional string name = 1;
     
       // Variable references $(VAR_NAME) are expanded
    @@ -1398,6 +1462,13 @@ message EnvVarSource {
       // Selects a key of a secret in the pod's namespace
       // +optional
       optional SecretKeySelector secretKeyRef = 4;
    +
    +  // FileKeyRef selects a key of the env file.
    +  // Requires the EnvFiles feature gate to be enabled.
    +  //
    +  // +featureGate=EnvFiles
    +  // +optional
    +  optional FileKeySelector fileKeyRef = 5;
     }
     
     // An EphemeralContainer is a temporary container that you may add to an existing Pod for
    @@ -1479,8 +1550,8 @@ message EphemeralContainerCommon {
       repeated ContainerPort ports = 6;
     
       // List of sources to populate environment variables in the container.
    -  // The keys defined within a source must be a C_IDENTIFIER. All invalid keys
    -  // will be reported as an event when the container is starting. When a key exists in multiple
    +  // The keys defined within a source may consist of any printable ASCII characters except '='.
    +  // When a key exists in multiple
       // sources, the value associated with the last source will take precedence.
       // Values defined by an Env with a duplicate key will take precedence.
       // Cannot be updated.
    @@ -1510,12 +1581,19 @@ message EphemeralContainerCommon {
     
       // Restart policy for the container to manage the restart behavior of each
       // container within a pod.
    -  // This may only be set for init containers. You cannot set this field on
    -  // ephemeral containers.
    +  // You cannot set this field on ephemeral containers.
       // +featureGate=SidecarContainers
       // +optional
       optional string restartPolicy = 24;
     
    +  // Represents a list of rules to be checked to determine if the
    +  // container should be restarted on exit. You cannot set this field on
    +  // ephemeral containers.
    +  // +featureGate=ContainerRestartRules
    +  // +optional
    +  // +listType=atomic
    +  repeated ContainerRestartRule restartPolicyRules = 25;
    +
       // Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
       // Cannot be updated.
       // +optional
    @@ -1776,6 +1854,36 @@ message FCVolumeSource {
       repeated string wwids = 5;
     }
     
    +// FileKeySelector selects a key of the env file.
    +// +structType=atomic
    +message FileKeySelector {
    +  // The name of the volume mount containing the env file.
    +  // +required
    +  optional string volumeName = 1;
    +
    +  // The path within the volume from which to select the file.
    +  // Must be relative and may not contain the '..' path or start with '..'.
    +  // +required
    +  optional string path = 2;
    +
    +  // The key within the env file. An invalid key will prevent the pod from starting.
    +  // The keys defined within a source may consist of any printable ASCII characters except '='.
    +  // During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.
    +  // +required
    +  optional string key = 3;
    +
    +  // Specify whether the file or its key must be defined. If the file or key
    +  // does not exist, then the env var is not published.
    +  // If optional is set to true and the specified key does not exist,
    +  // the environment variable will not be set in the Pod's containers.
    +  //
    +  // If optional is set to false and the specified key does not exist,
    +  // an error will be returned during Pod creation.
    +  // +optional
    +  // +default=false
    +  optional bool optional = 4;
    +}
    +
     // FlexPersistentVolumeSource represents a generic persistent volume resource that is
     // provisioned/attached using an exec based plugin.
     message FlexPersistentVolumeSource {
    @@ -1949,7 +2057,6 @@ message GlusterfsPersistentVolumeSource {
     // Glusterfs volumes do not support ownership management or SELinux relabeling.
     message GlusterfsVolumeSource {
       // endpoints is the endpoint name that details Glusterfs topology.
    -  // More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
       optional string endpoints = 1;
     
       // path is the Glusterfs volume path.
    @@ -3160,15 +3267,13 @@ message PersistentVolumeClaimSpec {
       // volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
       // If specified, the CSI driver will create or update the volume with the attributes defined
       // in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
    -  // it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
    -  // will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
    -  // If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
    -  // will be set by the persistentvolume controller if it exists.
    +  // it can be changed after the claim is created. An empty string or nil value indicates that no
    +  // VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
    +  // this field can be reset to its previous value (including nil) to cancel the modification.
       // If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
       // set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
       // exists.
       // More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
    -  // (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).
       // +featureGate=VolumeAttributesClass
       // +optional
       optional string volumeAttributesClassName = 9;
    @@ -3267,14 +3372,12 @@ message PersistentVolumeClaimStatus {
     
       // currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
       // When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
    -  // This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
       // +featureGate=VolumeAttributesClass
       // +optional
       optional string currentVolumeAttributesClassName = 8;
     
       // ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
       // When this is unset, there is no ModifyVolume operation being attempted.
    -  // This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
       // +featureGate=VolumeAttributesClass
       // +optional
       optional ModifyVolumeStatus modifyVolumeStatus = 9;
    @@ -3515,7 +3618,6 @@ message PersistentVolumeSpec {
       // after a volume has been updated successfully to a new class.
       // For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
       // PersistentVolumeClaims during the binding process.
    -  // This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
       // +featureGate=VolumeAttributesClass
       // +optional
       optional string volumeAttributesClassName = 10;
    @@ -3684,8 +3786,8 @@ message PodAntiAffinity {
       // most preferred is the one with the greatest sum of weights, i.e.
       // for each node that meets all of the scheduling requirements (resource
       // request, requiredDuringScheduling anti-affinity expressions, etc.),
    -  // compute a sum by iterating through the elements of this field and adding
    -  // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
    +  // compute a sum by iterating through the elements of this field and subtracting
    +  // "weight" from the sum if the node has pods which matches the corresponding podAffinityTerm; the
       // node(s) with the highest sum are the most preferred.
       // +optional
       // +listType=atomic
    @@ -3725,6 +3827,79 @@ message PodAttachOptions {
       optional string container = 5;
     }
     
    +// PodCertificateProjection provides a private key and X.509 certificate in the
    +// pod filesystem.
    +message PodCertificateProjection {
    +  // Kubelet's generated CSRs will be addressed to this signer.
    +  //
    +  // +required
    +  optional string signerName = 1;
    +
    +  // The type of keypair Kubelet will generate for the pod.
    +  //
    +  // Valid values are "RSA3072", "RSA4096", "ECDSAP256", "ECDSAP384",
    +  // "ECDSAP521", and "ED25519".
    +  //
    +  // +required
    +  optional string keyType = 2;
    +
    +  // maxExpirationSeconds is the maximum lifetime permitted for the
    +  // certificate.
    +  //
    +  // Kubelet copies this value verbatim into the PodCertificateRequests it
    +  // generates for this projection.
    +  //
    +  // If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver
    +  // will reject values shorter than 3600 (1 hour).  The maximum allowable
    +  // value is 7862400 (91 days).
    +  //
    +  // The signer implementation is then free to issue a certificate with any
    +  // lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600
    +  // seconds (1 hour).  This constraint is enforced by kube-apiserver.
    +  // `kubernetes.io` signers will never issue certificates with a lifetime
    +  // longer than 24 hours.
    +  //
    +  // +optional
    +  optional int32 maxExpirationSeconds = 3;
    +
    +  // Write the credential bundle at this path in the projected volume.
    +  //
    +  // The credential bundle is a single file that contains multiple PEM blocks.
    +  // The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private
    +  // key.
    +  //
    +  // The remaining blocks are CERTIFICATE blocks, containing the issued
    +  // certificate chain from the signer (leaf and any intermediates).
    +  //
    +  // Using credentialBundlePath lets your Pod's application code make a single
    +  // atomic read that retrieves a consistent key and certificate chain.  If you
    +  // project them to separate files, your application code will need to
    +  // additionally check that the leaf certificate was issued to the key.
    +  //
    +  // +optional
    +  optional string credentialBundlePath = 4;
    +
    +  // Write the key at this path in the projected volume.
    +  //
    +  // Most applications should use credentialBundlePath.  When using keyPath
    +  // and certificateChainPath, your application needs to check that the key
    +  // and leaf certificate are consistent, because it is possible to read the
    +  // files mid-rotation.
    +  //
    +  // +optional
    +  optional string keyPath = 5;
    +
    +  // Write the certificate chain at this path in the projected volume.
    +  //
    +  // Most applications should use credentialBundlePath.  When using keyPath
    +  // and certificateChainPath, your application needs to check that the key
    +  // and leaf certificate are consistent, because it is possible to read the
    +  // files mid-rotation.
    +  //
    +  // +optional
    +  optional string certificateChainPath = 6;
    +}
    +
     // PodCondition contains details for the current condition of this pod.
     message PodCondition {
       // Type is the type of the condition.
    @@ -3829,6 +4004,20 @@ message PodExecOptions {
       repeated string command = 6;
     }
     
    +// PodExtendedResourceClaimStatus is stored in the PodStatus for the extended
    +// resource requests backed by DRA. It stores the generated name for
    +// the corresponding special ResourceClaim created by the scheduler.
    +message PodExtendedResourceClaimStatus {
    +  // RequestMappings identifies the mapping of  to  device request
    +  // in the generated ResourceClaim.
    +  // +listType=atomic
    +  repeated ContainerExtendedResourceRequest requestMappings = 1;
    +
    +  // ResourceClaimName is the name of the ResourceClaim that was
    +  // generated for the Pod in the namespace of the Pod.
    +  optional string resourceClaimName = 2;
    +}
    +
     // PodIP represents a single IP address allocated to the pod.
     message PodIP {
       // IP is the IP address assigned to the pod
    @@ -4269,7 +4458,9 @@ message PodSpec {
       optional string nodeName = 10;
     
       // Host networking requested for this pod. Use the host's network namespace.
    -  // If this option is set, the ports that will be used must be specified.
    +  // When using HostNetwork you should specify ports so the scheduler is aware.
    +  // When `hostNetwork` is true, specified `hostPort` fields in port definitions must match `containerPort`,
    +  // and unspecified `hostPort` fields in port definitions are defaulted to match `containerPort`.
       // Default to false.
       // +k8s:conversion-gen=false
       // +optional
    @@ -4434,6 +4625,7 @@ message PodSpec {
       // - spec.hostPID
       // - spec.hostIPC
       // - spec.hostUsers
    +  // - spec.resources
       // - spec.securityContext.appArmorProfile
       // - spec.securityContext.seLinuxOptions
       // - spec.securityContext.seccompProfile
    @@ -4504,7 +4696,7 @@ message PodSpec {
     
       // Resources is the total amount of CPU and Memory resources required by all
       // containers in the pod. It supports specifying Requests and Limits for
    -  // "cpu" and "memory" resource names only. ResourceClaims are not supported.
    +  // "cpu", "memory" and "hugepages-" resource names only. ResourceClaims are not supported.
       //
       // This field enables fine-grained control over resource allocation for the
       // entire pod, allowing resource sharing among containers in a pod.
    @@ -4516,6 +4708,21 @@ message PodSpec {
       // +featureGate=PodLevelResources
       // +optional
       optional ResourceRequirements resources = 40;
    +
    +  // HostnameOverride specifies an explicit override for the pod's hostname as perceived by the pod.
    +  // This field only specifies the pod's hostname and does not affect its DNS records.
    +  // When this field is set to a non-empty string:
    +  // - It takes precedence over the values set in `hostname` and `subdomain`.
    +  // - The Pod's hostname will be set to this value.
    +  // - `setHostnameAsFQDN` must be nil or set to false.
    +  // - `hostNetwork` must be set to false.
    +  //
    +  // This field must be a valid DNS subdomain as defined in RFC 1123 and contain at most 64 characters.
    +  // Requires the HostnameOverride feature gate to be enabled.
    +  //
    +  // +featureGate=HostnameOverride
    +  // +optional
    +  optional string hostnameOverride = 41;
     }
     
     // PodStatus represents information about the status of a pod. Status may trail the actual
    @@ -4674,6 +4881,11 @@ message PodStatus {
       // +featureGate=DynamicResourceAllocation
       // +optional
       repeated PodResourceClaimStatus resourceClaimStatuses = 15;
    +
    +  // Status of extended resource claim backed by DRA.
    +  // +featureGate=DRAExtendedResource
    +  // +optional
    +  optional PodExtendedResourceClaimStatus extendedResourceClaimStatus = 18;
     }
     
     // PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded
    @@ -5298,7 +5510,7 @@ message ResourceRequirements {
       // Claims lists the names of resources, defined in spec.resourceClaims,
       // that are used by this container.
       //
    -  // This is an alpha field and requires enabling the
    +  // This field depends on the
       // DynamicResourceAllocation feature gate.
       //
       // This field is immutable. It can only be set for containers.
    @@ -6301,7 +6513,6 @@ message Taint {
       optional string effect = 3;
     
       // TimeAdded represents the time at which the taint was added.
    -  // It is only written for NoExecute taints.
       // +optional
       optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;
     }
    @@ -6682,6 +6893,44 @@ message VolumeProjection {
       // +featureGate=ClusterTrustBundleProjection
       // +optional
       optional ClusterTrustBundleProjection clusterTrustBundle = 5;
    +
    +  // Projects an auto-rotating credential bundle (private key and certificate
    +  // chain) that the pod can use either as a TLS client or server.
    +  //
    +  // Kubelet generates a private key and uses it to send a
    +  // PodCertificateRequest to the named signer.  Once the signer approves the
    +  // request and issues a certificate chain, Kubelet writes the key and
    +  // certificate chain to the pod filesystem.  The pod does not start until
    +  // certificates have been issued for each podCertificate projected volume
    +  // source in its spec.
    +  //
    +  // Kubelet will begin trying to rotate the certificate at the time indicated
    +  // by the signer using the PodCertificateRequest.Status.BeginRefreshAt
    +  // timestamp.
    +  //
    +  // Kubelet can write a single file, indicated by the credentialBundlePath
    +  // field, or separate files, indicated by the keyPath and
    +  // certificateChainPath fields.
    +  //
    +  // The credential bundle is a single file in PEM format.  The first PEM
    +  // entry is the private key (in PKCS#8 format), and the remaining PEM
    +  // entries are the certificate chain issued by the signer (typically,
    +  // signers will return their certificate chain in leaf-to-root order).
    +  //
    +  // Prefer using the credential bundle format, since your application code
    +  // can read it atomically.  If you use keyPath and certificateChainPath,
    +  // your application must make two separate file reads. If these coincide
    +  // with a certificate rotation, it is possible that the private key and leaf
    +  // certificate you read may not correspond to each other.  Your application
    +  // will need to check for this condition, and re-read until they are
    +  // consistent.
    +  //
    +  // The named signer controls chooses the format of the certificate it
    +  // issues; consult the signer implementation's documentation to learn how to
    +  // use the certificates it issues.
    +  //
    +  // +featureGate=PodCertificateProjection +optional
    +  optional PodCertificateProjection podCertificate = 6;
     }
     
     // VolumeResourceRequirements describes the storage resource requirements for a volume.
    @@ -6753,13 +7002,12 @@ message VolumeSource {
     
       // iscsi represents an ISCSI Disk resource that is attached to a
       // kubelet's host machine and then exposed to the pod.
    -  // More info: https://examples.k8s.io/volumes/iscsi/README.md
    +  // More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi
       // +optional
       optional ISCSIVolumeSource iscsi = 8;
     
       // glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
       // Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported.
    -  // More info: https://examples.k8s.io/volumes/glusterfs/README.md
       // +optional
       optional GlusterfsVolumeSource glusterfs = 9;
     
    @@ -6771,7 +7019,6 @@ message VolumeSource {
     
       // rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
       // Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
    -  // More info: https://examples.k8s.io/volumes/rbd/README.md
       // +optional
       optional RBDVolumeSource rbd = 11;
     
    diff --git a/vendor/k8s.io/api/core/v1/types.go b/vendor/k8s.io/api/core/v1/types.go
    index f7641e485a..08b6d351cc 100644
    --- a/vendor/k8s.io/api/core/v1/types.go
    +++ b/vendor/k8s.io/api/core/v1/types.go
    @@ -91,12 +91,11 @@ type VolumeSource struct {
     	NFS *NFSVolumeSource `json:"nfs,omitempty" protobuf:"bytes,7,opt,name=nfs"`
     	// iscsi represents an ISCSI Disk resource that is attached to a
     	// kubelet's host machine and then exposed to the pod.
    -	// More info: https://examples.k8s.io/volumes/iscsi/README.md
    +	// More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi
     	// +optional
     	ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty" protobuf:"bytes,8,opt,name=iscsi"`
     	// glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
     	// Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported.
    -	// More info: https://examples.k8s.io/volumes/glusterfs/README.md
     	// +optional
     	Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty" protobuf:"bytes,9,opt,name=glusterfs"`
     	// persistentVolumeClaimVolumeSource represents a reference to a
    @@ -106,7 +105,6 @@ type VolumeSource struct {
     	PersistentVolumeClaim *PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim,omitempty" protobuf:"bytes,10,opt,name=persistentVolumeClaim"`
     	// rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
     	// Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
    -	// More info: https://examples.k8s.io/volumes/rbd/README.md
     	// +optional
     	RBD *RBDVolumeSource `json:"rbd,omitempty" protobuf:"bytes,11,opt,name=rbd"`
     	// flexVolume represents a generic volume resource that is
    @@ -437,7 +435,6 @@ type PersistentVolumeSpec struct {
     	// after a volume has been updated successfully to a new class.
     	// For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound
     	// PersistentVolumeClaims during the binding process.
    -	// This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
     	// +featureGate=VolumeAttributesClass
     	// +optional
     	VolumeAttributesClassName *string `json:"volumeAttributesClassName,omitempty" protobuf:"bytes,10,opt,name=volumeAttributesClassName"`
    @@ -616,15 +613,13 @@ type PersistentVolumeClaimSpec struct {
     	// volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
     	// If specified, the CSI driver will create or update the volume with the attributes defined
     	// in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
    -	// it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
    -	// will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
    -	// If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
    -	// will be set by the persistentvolume controller if it exists.
    +	// it can be changed after the claim is created. An empty string or nil value indicates that no
    +	// VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
    +	// this field can be reset to its previous value (including nil) to cancel the modification.
     	// If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
     	// set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
     	// exists.
     	// More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
    -	// (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).
     	// +featureGate=VolumeAttributesClass
     	// +optional
     	VolumeAttributesClassName *string `json:"volumeAttributesClassName,omitempty" protobuf:"bytes,9,opt,name=volumeAttributesClassName"`
    @@ -851,13 +846,11 @@ type PersistentVolumeClaimStatus struct {
     	AllocatedResourceStatuses map[ResourceName]ClaimResourceStatus `json:"allocatedResourceStatuses,omitempty" protobuf:"bytes,7,rep,name=allocatedResourceStatuses"`
     	// currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
     	// When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
    -	// This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
     	// +featureGate=VolumeAttributesClass
     	// +optional
     	CurrentVolumeAttributesClassName *string `json:"currentVolumeAttributesClassName,omitempty" protobuf:"bytes,8,opt,name=currentVolumeAttributesClassName"`
     	// ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
     	// When this is unset, there is no ModifyVolume operation being attempted.
    -	// This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
     	// +featureGate=VolumeAttributesClass
     	// +optional
     	ModifyVolumeStatus *ModifyVolumeStatus `json:"modifyVolumeStatus,omitempty" protobuf:"bytes,9,opt,name=modifyVolumeStatus"`
    @@ -972,7 +965,6 @@ type EmptyDirVolumeSource struct {
     // Glusterfs volumes do not support ownership management or SELinux relabeling.
     type GlusterfsVolumeSource struct {
     	// endpoints is the endpoint name that details Glusterfs topology.
    -	// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
     	EndpointsName string `json:"endpoints" protobuf:"bytes,1,opt,name=endpoints"`
     
     	// path is the Glusterfs volume path.
    @@ -1993,6 +1985,79 @@ type ClusterTrustBundleProjection struct {
     	Path string `json:"path" protobuf:"bytes,4,rep,name=path"`
     }
     
    +// PodCertificateProjection provides a private key and X.509 certificate in the
    +// pod filesystem.
    +type PodCertificateProjection struct {
    +	// Kubelet's generated CSRs will be addressed to this signer.
    +	//
    +	// +required
    +	SignerName string `json:"signerName,omitempty" protobuf:"bytes,1,rep,name=signerName"`
    +
    +	// The type of keypair Kubelet will generate for the pod.
    +	//
    +	// Valid values are "RSA3072", "RSA4096", "ECDSAP256", "ECDSAP384",
    +	// "ECDSAP521", and "ED25519".
    +	//
    +	// +required
    +	KeyType string `json:"keyType,omitempty" protobuf:"bytes,2,rep,name=keyType"`
    +
    +	// maxExpirationSeconds is the maximum lifetime permitted for the
    +	// certificate.
    +	//
    +	// Kubelet copies this value verbatim into the PodCertificateRequests it
    +	// generates for this projection.
    +	//
    +	// If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver
    +	// will reject values shorter than 3600 (1 hour).  The maximum allowable
    +	// value is 7862400 (91 days).
    +	//
    +	// The signer implementation is then free to issue a certificate with any
    +	// lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600
    +	// seconds (1 hour).  This constraint is enforced by kube-apiserver.
    +	// `kubernetes.io` signers will never issue certificates with a lifetime
    +	// longer than 24 hours.
    +	//
    +	// +optional
    +	MaxExpirationSeconds *int32 `json:"maxExpirationSeconds,omitempty" protobuf:"varint,3,opt,name=maxExpirationSeconds"`
    +
    +	// Write the credential bundle at this path in the projected volume.
    +	//
    +	// The credential bundle is a single file that contains multiple PEM blocks.
    +	// The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private
    +	// key.
    +	//
    +	// The remaining blocks are CERTIFICATE blocks, containing the issued
    +	// certificate chain from the signer (leaf and any intermediates).
    +	//
    +	// Using credentialBundlePath lets your Pod's application code make a single
    +	// atomic read that retrieves a consistent key and certificate chain.  If you
    +	// project them to separate files, your application code will need to
    +	// additionally check that the leaf certificate was issued to the key.
    +	//
    +	// +optional
    +	CredentialBundlePath string `json:"credentialBundlePath,omitempty" protobuf:"bytes,4,rep,name=credentialBundlePath"`
    +
    +	// Write the key at this path in the projected volume.
    +	//
    +	// Most applications should use credentialBundlePath.  When using keyPath
    +	// and certificateChainPath, your application needs to check that the key
    +	// and leaf certificate are consistent, because it is possible to read the
    +	// files mid-rotation.
    +	//
    +	// +optional
    +	KeyPath string `json:"keyPath,omitempty" protobuf:"bytes,5,rep,name=keyPath"`
    +
    +	// Write the certificate chain at this path in the projected volume.
    +	//
    +	// Most applications should use credentialBundlePath.  When using keyPath
    +	// and certificateChainPath, your application needs to check that the key
    +	// and leaf certificate are consistent, because it is possible to read the
    +	// files mid-rotation.
    +	//
    +	// +optional
    +	CertificateChainPath string `json:"certificateChainPath,omitempty" protobuf:"bytes,6,rep,name=certificateChainPath"`
    +}
    +
     // Represents a projected volume source
     type ProjectedVolumeSource struct {
     	// sources is the list of volume projections. Each entry in this list
    @@ -2043,6 +2108,44 @@ type VolumeProjection struct {
     	// +featureGate=ClusterTrustBundleProjection
     	// +optional
     	ClusterTrustBundle *ClusterTrustBundleProjection `json:"clusterTrustBundle,omitempty" protobuf:"bytes,5,opt,name=clusterTrustBundle"`
    +
    +	// Projects an auto-rotating credential bundle (private key and certificate
    +	// chain) that the pod can use either as a TLS client or server.
    +	//
    +	// Kubelet generates a private key and uses it to send a
    +	// PodCertificateRequest to the named signer.  Once the signer approves the
    +	// request and issues a certificate chain, Kubelet writes the key and
    +	// certificate chain to the pod filesystem.  The pod does not start until
    +	// certificates have been issued for each podCertificate projected volume
    +	// source in its spec.
    +	//
    +	// Kubelet will begin trying to rotate the certificate at the time indicated
    +	// by the signer using the PodCertificateRequest.Status.BeginRefreshAt
    +	// timestamp.
    +	//
    +	// Kubelet can write a single file, indicated by the credentialBundlePath
    +	// field, or separate files, indicated by the keyPath and
    +	// certificateChainPath fields.
    +	//
    +	// The credential bundle is a single file in PEM format.  The first PEM
    +	// entry is the private key (in PKCS#8 format), and the remaining PEM
    +	// entries are the certificate chain issued by the signer (typically,
    +	// signers will return their certificate chain in leaf-to-root order).
    +	//
    +	// Prefer using the credential bundle format, since your application code
    +	// can read it atomically.  If you use keyPath and certificateChainPath,
    +	// your application must make two separate file reads. If these coincide
    +	// with a certificate rotation, it is possible that the private key and leaf
    +	// certificate you read may not correspond to each other.  Your application
    +	// will need to check for this condition, and re-read until they are
    +	// consistent.
    +	//
    +	// The named signer controls chooses the format of the certificate it
    +	// issues; consult the signer implementation's documentation to learn how to
    +	// use the certificates it issues.
    +	//
    +	// +featureGate=PodCertificateProjection +optional
    +	PodCertificate *PodCertificateProjection `json:"podCertificate,omitempty" protobuf:"bytes,6,opt,name=podCertificate"`
     }
     
     const (
    @@ -2351,7 +2454,8 @@ type VolumeDevice struct {
     
     // EnvVar represents an environment variable present in a Container.
     type EnvVar struct {
    -	// Name of the environment variable. Must be a C_IDENTIFIER.
    +	// Name of the environment variable.
    +	// May consist of any printable ASCII characters except '='.
     	Name string `json:"name" protobuf:"bytes,1,opt,name=name"`
     
     	// Optional: no more than one of the following may be specified.
    @@ -2388,6 +2492,39 @@ type EnvVarSource struct {
     	// Selects a key of a secret in the pod's namespace
     	// +optional
     	SecretKeyRef *SecretKeySelector `json:"secretKeyRef,omitempty" protobuf:"bytes,4,opt,name=secretKeyRef"`
    +	// FileKeyRef selects a key of the env file.
    +	// Requires the EnvFiles feature gate to be enabled.
    +	//
    +	// +featureGate=EnvFiles
    +	// +optional
    +	FileKeyRef *FileKeySelector `json:"fileKeyRef,omitempty" protobuf:"bytes,5,opt,name=fileKeyRef"`
    +}
    +
    +// FileKeySelector selects a key of the env file.
    +// +structType=atomic
    +type FileKeySelector struct {
    +	// The name of the volume mount containing the env file.
    +	// +required
    +	VolumeName string `json:"volumeName" protobuf:"bytes,1,opt,name=volumeName"`
    +	// The path within the volume from which to select the file.
    +	// Must be relative and may not contain the '..' path or start with '..'.
    +	// +required
    +	Path string `json:"path" protobuf:"bytes,2,opt,name=path"`
    +	// The key within the env file. An invalid key will prevent the pod from starting.
    +	// The keys defined within a source may consist of any printable ASCII characters except '='.
    +	// During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.
    +	// +required
    +	Key string `json:"key" protobuf:"bytes,3,opt,name=key"`
    +	// Specify whether the file or its key must be defined. If the file or key
    +	// does not exist, then the env var is not published.
    +	// If optional is set to true and the specified key does not exist,
    +	// the environment variable will not be set in the Pod's containers.
    +	//
    +	// If optional is set to false and the specified key does not exist,
    +	// an error will be returned during Pod creation.
    +	// +optional
    +	// +default=false
    +	Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"`
     }
     
     // ObjectFieldSelector selects an APIVersioned field of an object.
    @@ -2439,7 +2576,8 @@ type SecretKeySelector struct {
     
     // EnvFromSource represents the source of a set of ConfigMaps or Secrets
     type EnvFromSource struct {
    -	// Optional text to prepend to the name of each environment variable. Must be a C_IDENTIFIER.
    +	// Optional text to prepend to the name of each environment variable.
    +	// May consist of any printable ASCII characters except '='.
     	// +optional
     	Prefix string `json:"prefix,omitempty" protobuf:"bytes,1,opt,name=prefix"`
     	// The ConfigMap to select from
    @@ -2697,7 +2835,7 @@ type ResourceRequirements struct {
     	// Claims lists the names of resources, defined in spec.resourceClaims,
     	// that are used by this container.
     	//
    -	// This is an alpha field and requires enabling the
    +	// This field depends on the
     	// DynamicResourceAllocation feature gate.
     	//
     	// This field is immutable. It can only be set for containers.
    @@ -2805,8 +2943,8 @@ type Container struct {
     	// +listMapKey=protocol
     	Ports []ContainerPort `json:"ports,omitempty" patchStrategy:"merge" patchMergeKey:"containerPort" protobuf:"bytes,6,rep,name=ports"`
     	// List of sources to populate environment variables in the container.
    -	// The keys defined within a source must be a C_IDENTIFIER. All invalid keys
    -	// will be reported as an event when the container is starting. When a key exists in multiple
    +	// The keys defined within a source may consist of any printable ASCII characters except '='.
    +	// When a key exists in multiple
     	// sources, the value associated with the last source will take precedence.
     	// Values defined by an Env with a duplicate key will take precedence.
     	// Cannot be updated.
    @@ -2832,10 +2970,10 @@ type Container struct {
     	// +listType=atomic
     	ResizePolicy []ContainerResizePolicy `json:"resizePolicy,omitempty" protobuf:"bytes,23,rep,name=resizePolicy"`
     	// RestartPolicy defines the restart behavior of individual containers in a pod.
    -	// This field may only be set for init containers, and the only allowed value is "Always".
    -	// For non-init containers or when this field is not specified,
    +	// This overrides the pod-level restart policy. When this field is not specified,
     	// the restart behavior is defined by the Pod's restart policy and the container type.
    -	// Setting the RestartPolicy as "Always" for the init container will have the following effect:
    +	// Additionally, setting the RestartPolicy as "Always" for the init container will
    +	// have the following effect:
     	// this init container will be continually restarted on
     	// exit until all regular containers have terminated. Once all regular
     	// containers have completed, all init containers with restartPolicy "Always"
    @@ -2849,6 +2987,21 @@ type Container struct {
     	// +featureGate=SidecarContainers
     	// +optional
     	RestartPolicy *ContainerRestartPolicy `json:"restartPolicy,omitempty" protobuf:"bytes,24,opt,name=restartPolicy,casttype=ContainerRestartPolicy"`
    +	// Represents a list of rules to be checked to determine if the
    +	// container should be restarted on exit. The rules are evaluated in
    +	// order. Once a rule matches a container exit condition, the remaining
    +	// rules are ignored. If no rule matches the container exit condition,
    +	// the Container-level restart policy determines the whether the container
    +	// is restarted or not. Constraints on the rules:
    +	// - At most 20 rules are allowed.
    +	// - Rules can have the same action.
    +	// - Identical rules are not forbidden in validations.
    +	// When rules are specified, container MUST set RestartPolicy explicitly
    +	// even it if matches the Pod's RestartPolicy.
    +	// +featureGate=ContainerRestartRules
    +	// +optional
    +	// +listType=atomic
    +	RestartPolicyRules []ContainerRestartRule `json:"restartPolicyRules,omitempty" protobuf:"bytes,25,rep,name=restartPolicyRules"`
     	// Pod volumes to mount into the container's filesystem.
     	// Cannot be updated.
     	// +optional
    @@ -3478,11 +3631,64 @@ const (
     )
     
     // ContainerRestartPolicy is the restart policy for a single container.
    -// This may only be set for init containers and only allowed value is "Always".
    +// The only allowed values are "Always", "Never", and "OnFailure".
     type ContainerRestartPolicy string
     
     const (
    -	ContainerRestartPolicyAlways ContainerRestartPolicy = "Always"
    +	ContainerRestartPolicyAlways    ContainerRestartPolicy = "Always"
    +	ContainerRestartPolicyNever     ContainerRestartPolicy = "Never"
    +	ContainerRestartPolicyOnFailure ContainerRestartPolicy = "OnFailure"
    +)
    +
    +// ContainerRestartRule describes how a container exit is handled.
    +type ContainerRestartRule struct {
    +	// Specifies the action taken on a container exit if the requirements
    +	// are satisfied. The only possible value is "Restart" to restart the
    +	// container.
    +	// +required
    +	Action ContainerRestartRuleAction `json:"action,omitempty" proto:"bytes,1,opt,name=action" protobuf:"bytes,1,opt,name=action,casttype=ContainerRestartRuleAction"`
    +
    +	// Represents the exit codes to check on container exits.
    +	// +optional
    +	// +oneOf=when
    +	ExitCodes *ContainerRestartRuleOnExitCodes `json:"exitCodes,omitempty" proto:"bytes,2,opt,name=exitCodes" protobuf:"bytes,2,opt,name=exitCodes"`
    +}
    +
    +// ContainerRestartRuleAction describes the action to take when the
    +// container exits.
    +type ContainerRestartRuleAction string
    +
    +// The only valid action is Restart.
    +const (
    +	ContainerRestartRuleActionRestart ContainerRestartRuleAction = "Restart"
    +)
    +
    +// ContainerRestartRuleOnExitCodes describes the condition
    +// for handling an exited container based on its exit codes.
    +type ContainerRestartRuleOnExitCodes struct {
    +	// Represents the relationship between the container exit code(s) and the
    +	// specified values. Possible values are:
    +	// - In: the requirement is satisfied if the container exit code is in the
    +	//   set of specified values.
    +	// - NotIn: the requirement is satisfied if the container exit code is
    +	//   not in the set of specified values.
    +	// +required
    +	Operator ContainerRestartRuleOnExitCodesOperator `json:"operator,omitempty" proto:"bytes,1,opt,name=operator" protobuf:"bytes,1,opt,name=operator,casttype=ContainerRestartRuleOnExitCodesOperator"`
    +
    +	// Specifies the set of values to check for container exit codes.
    +	// At most 255 elements are allowed.
    +	// +optional
    +	// +listType=set
    +	Values []int32 `json:"values,omitempty" proto:"varint,2,rep,name=values" protobuf:"varint,2,rep,name=values"`
    +}
    +
    +// ContainerRestartRuleOnExitCodesOperator describes the operator
    +// to take for the exit codes.
    +type ContainerRestartRuleOnExitCodesOperator string
    +
    +const (
    +	ContainerRestartRuleOnExitCodesOpIn    ContainerRestartRuleOnExitCodesOperator = "In"
    +	ContainerRestartRuleOnExitCodesOpNotIn ContainerRestartRuleOnExitCodesOperator = "NotIn"
     )
     
     // DNSPolicy defines how a pod's DNS will be configured.
    @@ -3678,8 +3884,8 @@ type PodAntiAffinity struct {
     	// most preferred is the one with the greatest sum of weights, i.e.
     	// for each node that meets all of the scheduling requirements (resource
     	// request, requiredDuringScheduling anti-affinity expressions, etc.),
    -	// compute a sum by iterating through the elements of this field and adding
    -	// "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
    +	// compute a sum by iterating through the elements of this field and subtracting
    +	// "weight" from the sum if the node has pods which matches the corresponding podAffinityTerm; the
     	// node(s) with the highest sum are the most preferred.
     	// +optional
     	// +listType=atomic
    @@ -3806,7 +4012,6 @@ type Taint struct {
     	// Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
     	Effect TaintEffect `json:"effect" protobuf:"bytes,3,opt,name=effect,casttype=TaintEffect"`
     	// TimeAdded represents the time at which the taint was added.
    -	// It is only written for NoExecute taints.
     	// +optional
     	TimeAdded *metav1.Time `json:"timeAdded,omitempty" protobuf:"bytes,4,opt,name=timeAdded"`
     }
    @@ -3983,7 +4188,9 @@ type PodSpec struct {
     	// +optional
     	NodeName string `json:"nodeName,omitempty" protobuf:"bytes,10,opt,name=nodeName"`
     	// Host networking requested for this pod. Use the host's network namespace.
    -	// If this option is set, the ports that will be used must be specified.
    +	// When using HostNetwork you should specify ports so the scheduler is aware.
    +	// When `hostNetwork` is true, specified `hostPort` fields in port definitions must match `containerPort`,
    +	// and unspecified `hostPort` fields in port definitions are defaulted to match `containerPort`.
     	// Default to false.
     	// +k8s:conversion-gen=false
     	// +optional
    @@ -4126,6 +4333,7 @@ type PodSpec struct {
     	// - spec.hostPID
     	// - spec.hostIPC
     	// - spec.hostUsers
    +	// - spec.resources
     	// - spec.securityContext.appArmorProfile
     	// - spec.securityContext.seLinuxOptions
     	// - spec.securityContext.seccompProfile
    @@ -4194,7 +4402,7 @@ type PodSpec struct {
     	ResourceClaims []PodResourceClaim `json:"resourceClaims,omitempty" patchStrategy:"merge,retainKeys" patchMergeKey:"name" protobuf:"bytes,39,rep,name=resourceClaims"`
     	// Resources is the total amount of CPU and Memory resources required by all
     	// containers in the pod. It supports specifying Requests and Limits for
    -	// "cpu" and "memory" resource names only. ResourceClaims are not supported.
    +	// "cpu", "memory" and "hugepages-" resource names only. ResourceClaims are not supported.
     	//
     	// This field enables fine-grained control over resource allocation for the
     	// entire pod, allowing resource sharing among containers in a pod.
    @@ -4206,6 +4414,20 @@ type PodSpec struct {
     	// +featureGate=PodLevelResources
     	// +optional
     	Resources *ResourceRequirements `json:"resources,omitempty" protobuf:"bytes,40,opt,name=resources"`
    +	// HostnameOverride specifies an explicit override for the pod's hostname as perceived by the pod.
    +	// This field only specifies the pod's hostname and does not affect its DNS records.
    +	// When this field is set to a non-empty string:
    +	// - It takes precedence over the values set in `hostname` and `subdomain`.
    +	// - The Pod's hostname will be set to this value.
    +	// - `setHostnameAsFQDN` must be nil or set to false.
    +	// - `hostNetwork` must be set to false.
    +	//
    +	// This field must be a valid DNS subdomain as defined in RFC 1123 and contain at most 64 characters.
    +	// Requires the HostnameOverride feature gate to be enabled.
    +	//
    +	// +featureGate=HostnameOverride
    +	// +optional
    +	HostnameOverride *string `json:"hostnameOverride,omitempty" protobuf:"bytes,41,opt,name=hostnameOverride"`
     }
     
     // PodResourceClaim references exactly one ResourceClaim, either directly
    @@ -4267,6 +4489,31 @@ type PodResourceClaimStatus struct {
     	ResourceClaimName *string `json:"resourceClaimName,omitempty" protobuf:"bytes,2,opt,name=resourceClaimName"`
     }
     
    +// PodExtendedResourceClaimStatus is stored in the PodStatus for the extended
    +// resource requests backed by DRA. It stores the generated name for
    +// the corresponding special ResourceClaim created by the scheduler.
    +type PodExtendedResourceClaimStatus struct {
    +	// RequestMappings identifies the mapping of  to  device request
    +	// in the generated ResourceClaim.
    +	// +listType=atomic
    +	RequestMappings []ContainerExtendedResourceRequest `json:"requestMappings" protobuf:"bytes,1,rep,name=requestMappings"`
    +
    +	// ResourceClaimName is the name of the ResourceClaim that was
    +	// generated for the Pod in the namespace of the Pod.
    +	ResourceClaimName string `json:"resourceClaimName" protobuf:"bytes,2,name=resourceClaimName"`
    +}
    +
    +// ContainerExtendedResourceRequest has the mapping of container name,
    +// extended resource name to the device request name.
    +type ContainerExtendedResourceRequest struct {
    +	// The name of the container requesting resources.
    +	ContainerName string `json:"containerName" protobuf:"bytes,1,name=containerName"`
    +	// The name of the extended resource in that container which gets backed by DRA.
    +	ResourceName string `json:"resourceName" protobuf:"bytes,2,name=resourceName"`
    +	// The name of the request in the special ResourceClaim which corresponds to the extended resource.
    +	RequestName string `json:"requestName" protobuf:"bytes,3,name=requestName"`
    +}
    +
     // OSName is the set of OS'es that can be used in OS.
     type OSName string
     
    @@ -4799,8 +5046,8 @@ type EphemeralContainerCommon struct {
     	// +listMapKey=protocol
     	Ports []ContainerPort `json:"ports,omitempty" patchStrategy:"merge" patchMergeKey:"containerPort" protobuf:"bytes,6,rep,name=ports"`
     	// List of sources to populate environment variables in the container.
    -	// The keys defined within a source must be a C_IDENTIFIER. All invalid keys
    -	// will be reported as an event when the container is starting. When a key exists in multiple
    +	// The keys defined within a source may consist of any printable ASCII characters except '='.
    +	// When a key exists in multiple
     	// sources, the value associated with the last source will take precedence.
     	// Values defined by an Env with a duplicate key will take precedence.
     	// Cannot be updated.
    @@ -4826,11 +5073,17 @@ type EphemeralContainerCommon struct {
     	ResizePolicy []ContainerResizePolicy `json:"resizePolicy,omitempty" protobuf:"bytes,23,rep,name=resizePolicy"`
     	// Restart policy for the container to manage the restart behavior of each
     	// container within a pod.
    -	// This may only be set for init containers. You cannot set this field on
    -	// ephemeral containers.
    +	// You cannot set this field on ephemeral containers.
     	// +featureGate=SidecarContainers
     	// +optional
     	RestartPolicy *ContainerRestartPolicy `json:"restartPolicy,omitempty" protobuf:"bytes,24,opt,name=restartPolicy,casttype=ContainerRestartPolicy"`
    +	// Represents a list of rules to be checked to determine if the
    +	// container should be restarted on exit. You cannot set this field on
    +	// ephemeral containers.
    +	// +featureGate=ContainerRestartRules
    +	// +optional
    +	// +listType=atomic
    +	RestartPolicyRules []ContainerRestartRule `json:"restartPolicyRules,omitempty" protobuf:"bytes,25,rep,name=restartPolicyRules"`
     	// Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.
     	// Cannot be updated.
     	// +optional
    @@ -5091,6 +5344,10 @@ type PodStatus struct {
     	// +featureGate=DynamicResourceAllocation
     	// +optional
     	ResourceClaimStatuses []PodResourceClaimStatus `json:"resourceClaimStatuses,omitempty" patchStrategy:"merge,retainKeys" patchMergeKey:"name" protobuf:"bytes,15,rep,name=resourceClaimStatuses"`
    +	// Status of extended resource claim backed by DRA.
    +	// +featureGate=DRAExtendedResource
    +	// +optional
    +	ExtendedResourceClaimStatus *PodExtendedResourceClaimStatus `json:"extendedResourceClaimStatus,omitempty" protobuf:"bytes,18,opt,name=extendedResourceClaimStatus"`
     }
     
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    @@ -5311,6 +5568,7 @@ type ReplicationControllerCondition struct {
     // +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
     // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
     // +k8s:prerelease-lifecycle-gen:introduced=1.0
    +// +k8s:supportsSubresource=/scale
     
     // ReplicationController represents the configuration of a replication controller.
     type ReplicationController struct {
    diff --git a/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go
    index 9e987eefdd..1204307667 100644
    --- a/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go
    @@ -356,11 +356,12 @@ var map_Container = map[string]string{
     	"args":                     "Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
     	"workingDir":               "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.",
     	"ports":                    "List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated.",
    -	"envFrom":                  "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.",
    +	"envFrom":                  "List of sources to populate environment variables in the container. The keys defined within a source may consist of any printable ASCII characters except '='. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.",
     	"env":                      "List of environment variables to set in the container. Cannot be updated.",
     	"resources":                "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
     	"resizePolicy":             "Resources resize policy for the container.",
    -	"restartPolicy":            "RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is \"Always\". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as \"Always\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \"Always\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \"sidecar\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.",
    +	"restartPolicy":            "RestartPolicy defines the restart behavior of individual containers in a pod. This overrides the pod-level restart policy. When this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Additionally, setting the RestartPolicy as \"Always\" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy \"Always\" will be shut down. This lifecycle differs from normal init containers and is often referred to as a \"sidecar\" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed.",
    +	"restartPolicyRules":       "Represents a list of rules to be checked to determine if the container should be restarted on exit. The rules are evaluated in order. Once a rule matches a container exit condition, the remaining rules are ignored. If no rule matches the container exit condition, the Container-level restart policy determines the whether the container is restarted or not. Constraints on the rules: - At most 20 rules are allowed. - Rules can have the same action. - Identical rules are not forbidden in validations. When rules are specified, container MUST set RestartPolicy explicitly even it if matches the Pod's RestartPolicy.",
     	"volumeMounts":             "Pod volumes to mount into the container's filesystem. Cannot be updated.",
     	"volumeDevices":            "volumeDevices is the list of block devices to be used by the container.",
     	"livenessProbe":            "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
    @@ -380,6 +381,17 @@ func (Container) SwaggerDoc() map[string]string {
     	return map_Container
     }
     
    +var map_ContainerExtendedResourceRequest = map[string]string{
    +	"":              "ContainerExtendedResourceRequest has the mapping of container name, extended resource name to the device request name.",
    +	"containerName": "The name of the container requesting resources.",
    +	"resourceName":  "The name of the extended resource in that container which gets backed by DRA.",
    +	"requestName":   "The name of the request in the special ResourceClaim which corresponds to the extended resource.",
    +}
    +
    +func (ContainerExtendedResourceRequest) SwaggerDoc() map[string]string {
    +	return map_ContainerExtendedResourceRequest
    +}
    +
     var map_ContainerImage = map[string]string{
     	"":          "Describe a container image",
     	"names":     "Names by which this image is known. e.g. [\"kubernetes.example/hyperkube:v1.0.7\", \"cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7\"]",
    @@ -413,6 +425,26 @@ func (ContainerResizePolicy) SwaggerDoc() map[string]string {
     	return map_ContainerResizePolicy
     }
     
    +var map_ContainerRestartRule = map[string]string{
    +	"":          "ContainerRestartRule describes how a container exit is handled.",
    +	"action":    "Specifies the action taken on a container exit if the requirements are satisfied. The only possible value is \"Restart\" to restart the container.",
    +	"exitCodes": "Represents the exit codes to check on container exits.",
    +}
    +
    +func (ContainerRestartRule) SwaggerDoc() map[string]string {
    +	return map_ContainerRestartRule
    +}
    +
    +var map_ContainerRestartRuleOnExitCodes = map[string]string{
    +	"":         "ContainerRestartRuleOnExitCodes describes the condition for handling an exited container based on its exit codes.",
    +	"operator": "Represents the relationship between the container exit code(s) and the specified values. Possible values are: - In: the requirement is satisfied if the container exit code is in the\n  set of specified values.\n- NotIn: the requirement is satisfied if the container exit code is\n  not in the set of specified values.",
    +	"values":   "Specifies the set of values to check for container exit codes. At most 255 elements are allowed.",
    +}
    +
    +func (ContainerRestartRuleOnExitCodes) SwaggerDoc() map[string]string {
    +	return map_ContainerRestartRuleOnExitCodes
    +}
    +
     var map_ContainerState = map[string]string{
     	"":           "ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting.",
     	"waiting":    "Details about a waiting container",
    @@ -597,7 +629,7 @@ func (EndpointsList) SwaggerDoc() map[string]string {
     
     var map_EnvFromSource = map[string]string{
     	"":             "EnvFromSource represents the source of a set of ConfigMaps or Secrets",
    -	"prefix":       "Optional text to prepend to the name of each environment variable. Must be a C_IDENTIFIER.",
    +	"prefix":       "Optional text to prepend to the name of each environment variable. May consist of any printable ASCII characters except '='.",
     	"configMapRef": "The ConfigMap to select from",
     	"secretRef":    "The Secret to select from",
     }
    @@ -608,7 +640,7 @@ func (EnvFromSource) SwaggerDoc() map[string]string {
     
     var map_EnvVar = map[string]string{
     	"":          "EnvVar represents an environment variable present in a Container.",
    -	"name":      "Name of the environment variable. Must be a C_IDENTIFIER.",
    +	"name":      "Name of the environment variable. May consist of any printable ASCII characters except '='.",
     	"value":     "Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".",
     	"valueFrom": "Source for the environment variable's value. Cannot be used if value is not empty.",
     }
    @@ -623,6 +655,7 @@ var map_EnvVarSource = map[string]string{
     	"resourceFieldRef": "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.",
     	"configMapKeyRef":  "Selects a key of a ConfigMap.",
     	"secretKeyRef":     "Selects a key of a secret in the pod's namespace",
    +	"fileKeyRef":       "FileKeyRef selects a key of the env file. Requires the EnvFiles feature gate to be enabled.",
     }
     
     func (EnvVarSource) SwaggerDoc() map[string]string {
    @@ -646,11 +679,12 @@ var map_EphemeralContainerCommon = map[string]string{
     	"args":                     "Arguments to the entrypoint. The image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
     	"workingDir":               "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.",
     	"ports":                    "Ports are not allowed for ephemeral containers.",
    -	"envFrom":                  "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.",
    +	"envFrom":                  "List of sources to populate environment variables in the container. The keys defined within a source may consist of any printable ASCII characters except '='. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.",
     	"env":                      "List of environment variables to set in the container. Cannot be updated.",
     	"resources":                "Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources already allocated to the pod.",
     	"resizePolicy":             "Resources resize policy for the container.",
    -	"restartPolicy":            "Restart policy for the container to manage the restart behavior of each container within a pod. This may only be set for init containers. You cannot set this field on ephemeral containers.",
    +	"restartPolicy":            "Restart policy for the container to manage the restart behavior of each container within a pod. You cannot set this field on ephemeral containers.",
    +	"restartPolicyRules":       "Represents a list of rules to be checked to determine if the container should be restarted on exit. You cannot set this field on ephemeral containers.",
     	"volumeMounts":             "Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers. Cannot be updated.",
     	"volumeDevices":            "volumeDevices is the list of block devices to be used by the container.",
     	"livenessProbe":            "Probes are not allowed for ephemeral containers.",
    @@ -754,6 +788,18 @@ func (FCVolumeSource) SwaggerDoc() map[string]string {
     	return map_FCVolumeSource
     }
     
    +var map_FileKeySelector = map[string]string{
    +	"":           "FileKeySelector selects a key of the env file.",
    +	"volumeName": "The name of the volume mount containing the env file.",
    +	"path":       "The path within the volume from which to select the file. Must be relative and may not contain the '..' path or start with '..'.",
    +	"key":        "The key within the env file. An invalid key will prevent the pod from starting. The keys defined within a source may consist of any printable ASCII characters except '='. During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.",
    +	"optional":   "Specify whether the file or its key must be defined. If the file or key does not exist, then the env var is not published. If optional is set to true and the specified key does not exist, the environment variable will not be set in the Pod's containers.\n\nIf optional is set to false and the specified key does not exist, an error will be returned during Pod creation.",
    +}
    +
    +func (FileKeySelector) SwaggerDoc() map[string]string {
    +	return map_FileKeySelector
    +}
    +
     var map_FlexPersistentVolumeSource = map[string]string{
     	"":          "FlexPersistentVolumeSource represents a generic persistent volume resource that is provisioned/attached using an exec based plugin.",
     	"driver":    "driver is the name of the driver to use for this volume.",
    @@ -837,7 +883,7 @@ func (GlusterfsPersistentVolumeSource) SwaggerDoc() map[string]string {
     
     var map_GlusterfsVolumeSource = map[string]string{
     	"":          "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.",
    -	"endpoints": "endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod",
    +	"endpoints": "endpoints is the endpoint name that details Glusterfs topology.",
     	"path":      "path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod",
     	"readOnly":  "readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod",
     }
    @@ -1446,7 +1492,7 @@ var map_PersistentVolumeClaimSpec = map[string]string{
     	"volumeMode":                "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.",
     	"dataSource":                "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource.",
     	"dataSourceRef":             "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef\n  allows any non-core object, as well as PersistentVolumeClaim objects.\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\n  preserves all values, and generates an error if a disallowed value is\n  specified.\n* While dataSource only allows local objects, dataSourceRef allows objects\n  in any namespaces.\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.",
    -	"volumeAttributesClassName": "volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).",
    +	"volumeAttributesClassName": "volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string or nil value indicates that no VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state, this field can be reset to its previous value (including nil) to cancel the modification. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/",
     }
     
     func (PersistentVolumeClaimSpec) SwaggerDoc() map[string]string {
    @@ -1461,8 +1507,8 @@ var map_PersistentVolumeClaimStatus = map[string]string{
     	"conditions":                       "conditions is the current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'Resizing'.",
     	"allocatedResources":               "allocatedResources tracks the resources allocated to a PVC including its capacity. Key names follow standard Kubernetes label syntax. Valid values are either:\n\t* Un-prefixed keys:\n\t\t- storage - the capacity of the volume.\n\t* Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\"\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used.\n\nCapacity reported here may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity.\n\nA controller that receives PVC update with previously unknown resourceName should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC.\n\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.",
     	"allocatedResourceStatuses":        "allocatedResourceStatuses stores status of resource being resized for the given PVC. Key names follow standard Kubernetes label syntax. Valid values are either:\n\t* Un-prefixed keys:\n\t\t- storage - the capacity of the volume.\n\t* Custom resources must use implementation-defined prefixed names such as \"example.com/my-custom-resource\"\nApart from above values - keys that are unprefixed or have kubernetes.io prefix are considered reserved and hence may not be used.\n\nClaimResourceStatus can be in any of following states:\n\t- ControllerResizeInProgress:\n\t\tState set when resize controller starts resizing the volume in control-plane.\n\t- ControllerResizeFailed:\n\t\tState set when resize has failed in resize controller with a terminal error.\n\t- NodeResizePending:\n\t\tState set when resize controller has finished resizing the volume but further resizing of\n\t\tvolume is needed on the node.\n\t- NodeResizeInProgress:\n\t\tState set when kubelet starts resizing the volume.\n\t- NodeResizeFailed:\n\t\tState set when resizing has failed in kubelet with a terminal error. Transient errors don't set\n\t\tNodeResizeFailed.\nFor example: if expanding a PVC for more capacity - this field can be one of the following states:\n\t- pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeInProgress\"\n     - pvc.status.allocatedResourceStatus['storage'] = \"ControllerResizeFailed\"\n     - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizePending\"\n     - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeInProgress\"\n     - pvc.status.allocatedResourceStatus['storage'] = \"NodeResizeFailed\"\nWhen this field is not set, it means that no resize operation is in progress for the given PVC.\n\nA controller that receives PVC update with previously unknown resourceName or ClaimResourceStatus should ignore the update for the purpose it was designed. For example - a controller that only is responsible for resizing capacity of the volume, should ignore PVC updates that change other valid resources associated with PVC.\n\nThis is an alpha field and requires enabling RecoverVolumeExpansionFailure feature.",
    -	"currentVolumeAttributesClassName": "currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using. When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim This is a beta field and requires enabling VolumeAttributesClass feature (off by default).",
    -	"modifyVolumeStatus":               "ModifyVolumeStatus represents the status object of ControllerModifyVolume operation. When this is unset, there is no ModifyVolume operation being attempted. This is a beta field and requires enabling VolumeAttributesClass feature (off by default).",
    +	"currentVolumeAttributesClassName": "currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using. When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim",
    +	"modifyVolumeStatus":               "ModifyVolumeStatus represents the status object of ControllerModifyVolume operation. When this is unset, there is no ModifyVolume operation being attempted.",
     }
     
     func (PersistentVolumeClaimStatus) SwaggerDoc() map[string]string {
    @@ -1539,7 +1585,7 @@ var map_PersistentVolumeSpec = map[string]string{
     	"mountOptions":                  "mountOptions is the list of mount options, e.g. [\"ro\", \"soft\"]. Not validated - mount will simply fail if one is invalid. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options",
     	"volumeMode":                    "volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.",
     	"nodeAffinity":                  "nodeAffinity defines constraints that limit what nodes this volume can be accessed from. This field influences the scheduling of pods that use this volume.",
    -	"volumeAttributesClassName":     "Name of VolumeAttributesClass to which this persistent volume belongs. Empty value is not allowed. When this field is not set, it indicates that this volume does not belong to any VolumeAttributesClass. This field is mutable and can be changed by the CSI driver after a volume has been updated successfully to a new class. For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound PersistentVolumeClaims during the binding process. This is a beta field and requires enabling VolumeAttributesClass feature (off by default).",
    +	"volumeAttributesClassName":     "Name of VolumeAttributesClass to which this persistent volume belongs. Empty value is not allowed. When this field is not set, it indicates that this volume does not belong to any VolumeAttributesClass. This field is mutable and can be changed by the CSI driver after a volume has been updated successfully to a new class. For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound PersistentVolumeClaims during the binding process.",
     }
     
     func (PersistentVolumeSpec) SwaggerDoc() map[string]string {
    @@ -1606,7 +1652,7 @@ func (PodAffinityTerm) SwaggerDoc() map[string]string {
     var map_PodAntiAffinity = map[string]string{
     	"": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.",
     	"requiredDuringSchedulingIgnoredDuringExecution":  "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.",
    -	"preferredDuringSchedulingIgnoredDuringExecution": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.",
    +	"preferredDuringSchedulingIgnoredDuringExecution": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and subtracting \"weight\" from the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.",
     }
     
     func (PodAntiAffinity) SwaggerDoc() map[string]string {
    @@ -1626,6 +1672,20 @@ func (PodAttachOptions) SwaggerDoc() map[string]string {
     	return map_PodAttachOptions
     }
     
    +var map_PodCertificateProjection = map[string]string{
    +	"":                     "PodCertificateProjection provides a private key and X.509 certificate in the pod filesystem.",
    +	"signerName":           "Kubelet's generated CSRs will be addressed to this signer.",
    +	"keyType":              "The type of keypair Kubelet will generate for the pod.\n\nValid values are \"RSA3072\", \"RSA4096\", \"ECDSAP256\", \"ECDSAP384\", \"ECDSAP521\", and \"ED25519\".",
    +	"maxExpirationSeconds": "maxExpirationSeconds is the maximum lifetime permitted for the certificate.\n\nKubelet copies this value verbatim into the PodCertificateRequests it generates for this projection.\n\nIf omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver will reject values shorter than 3600 (1 hour).  The maximum allowable value is 7862400 (91 days).\n\nThe signer implementation is then free to issue a certificate with any lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600 seconds (1 hour).  This constraint is enforced by kube-apiserver. `kubernetes.io` signers will never issue certificates with a lifetime longer than 24 hours.",
    +	"credentialBundlePath": "Write the credential bundle at this path in the projected volume.\n\nThe credential bundle is a single file that contains multiple PEM blocks. The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private key.\n\nThe remaining blocks are CERTIFICATE blocks, containing the issued certificate chain from the signer (leaf and any intermediates).\n\nUsing credentialBundlePath lets your Pod's application code make a single atomic read that retrieves a consistent key and certificate chain.  If you project them to separate files, your application code will need to additionally check that the leaf certificate was issued to the key.",
    +	"keyPath":              "Write the key at this path in the projected volume.\n\nMost applications should use credentialBundlePath.  When using keyPath and certificateChainPath, your application needs to check that the key and leaf certificate are consistent, because it is possible to read the files mid-rotation.",
    +	"certificateChainPath": "Write the certificate chain at this path in the projected volume.\n\nMost applications should use credentialBundlePath.  When using keyPath and certificateChainPath, your application needs to check that the key and leaf certificate are consistent, because it is possible to read the files mid-rotation.",
    +}
    +
    +func (PodCertificateProjection) SwaggerDoc() map[string]string {
    +	return map_PodCertificateProjection
    +}
    +
     var map_PodCondition = map[string]string{
     	"":                   "PodCondition contains details for the current condition of this pod.",
     	"type":               "Type is the type of the condition. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions",
    @@ -1676,6 +1736,16 @@ func (PodExecOptions) SwaggerDoc() map[string]string {
     	return map_PodExecOptions
     }
     
    +var map_PodExtendedResourceClaimStatus = map[string]string{
    +	"":                  "PodExtendedResourceClaimStatus is stored in the PodStatus for the extended resource requests backed by DRA. It stores the generated name for the corresponding special ResourceClaim created by the scheduler.",
    +	"requestMappings":   "RequestMappings identifies the mapping of  to  device request in the generated ResourceClaim.",
    +	"resourceClaimName": "ResourceClaimName is the name of the ResourceClaim that was generated for the Pod in the namespace of the Pod.",
    +}
    +
    +func (PodExtendedResourceClaimStatus) SwaggerDoc() map[string]string {
    +	return map_PodExtendedResourceClaimStatus
    +}
    +
     var map_PodIP = map[string]string{
     	"":   "PodIP represents a single IP address allocated to the pod.",
     	"ip": "IP is the IP address assigned to the pod",
    @@ -1824,7 +1894,7 @@ var map_PodSpec = map[string]string{
     	"serviceAccount":                "DeprecatedServiceAccount is a deprecated alias for ServiceAccountName. Deprecated: Use serviceAccountName instead.",
     	"automountServiceAccountToken":  "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.",
     	"nodeName":                      "NodeName indicates in which node this pod is scheduled. If empty, this pod is a candidate for scheduling by the scheduler defined in schedulerName. Once this field is set, the kubelet for this node becomes responsible for the lifecycle of this pod. This field should not be used to express a desire for the pod to be scheduled on a specific node. https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename",
    -	"hostNetwork":                   "Host networking requested for this pod. Use the host's network namespace. If this option is set, the ports that will be used must be specified. Default to false.",
    +	"hostNetwork":                   "Host networking requested for this pod. Use the host's network namespace. When using HostNetwork you should specify ports so the scheduler is aware. When `hostNetwork` is true, specified `hostPort` fields in port definitions must match `containerPort`, and unspecified `hostPort` fields in port definitions are defaulted to match `containerPort`. Default to false.",
     	"hostPID":                       "Use the host's pid namespace. Optional: Default to false.",
     	"hostIPC":                       "Use the host's ipc namespace. Optional: Default to false.",
     	"shareProcessNamespace":         "Share a single process namespace between all of the containers in a pod. When this is set containers will be able to view and signal processes from other containers in the same pod, and the first process in each container will not be assigned PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: Default to false.",
    @@ -1846,11 +1916,12 @@ var map_PodSpec = map[string]string{
     	"overhead":                      "Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md",
     	"topologySpreadConstraints":     "TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.",
     	"setHostnameAsFQDN":             "If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.",
    -	"os":                            "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup",
    +	"os":                            "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.resources - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup",
     	"hostUsers":                     "Use the host's user namespace. Optional: Default to true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as root without actually having root privileges on the host. This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.",
     	"schedulingGates":               "SchedulingGates is an opaque list of values that if specified will block scheduling the pod. If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the scheduler will not attempt to schedule the pod.\n\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.",
     	"resourceClaims":                "ResourceClaims defines which ResourceClaims must be allocated and reserved before the Pod is allowed to start. The resources will be made available to those containers which consume them by name.\n\nThis is an alpha field and requires enabling the DynamicResourceAllocation feature gate.\n\nThis field is immutable.",
    -	"resources":                     "Resources is the total amount of CPU and Memory resources required by all containers in the pod. It supports specifying Requests and Limits for \"cpu\" and \"memory\" resource names only. ResourceClaims are not supported.\n\nThis field enables fine-grained control over resource allocation for the entire pod, allowing resource sharing among containers in a pod.\n\nThis is an alpha field and requires enabling the PodLevelResources feature gate.",
    +	"resources":                     "Resources is the total amount of CPU and Memory resources required by all containers in the pod. It supports specifying Requests and Limits for \"cpu\", \"memory\" and \"hugepages-\" resource names only. ResourceClaims are not supported.\n\nThis field enables fine-grained control over resource allocation for the entire pod, allowing resource sharing among containers in a pod.\n\nThis is an alpha field and requires enabling the PodLevelResources feature gate.",
    +	"hostnameOverride":              "HostnameOverride specifies an explicit override for the pod's hostname as perceived by the pod. This field only specifies the pod's hostname and does not affect its DNS records. When this field is set to a non-empty string: - It takes precedence over the values set in `hostname` and `subdomain`. - The Pod's hostname will be set to this value. - `setHostnameAsFQDN` must be nil or set to false. - `hostNetwork` must be set to false.\n\nThis field must be a valid DNS subdomain as defined in RFC 1123 and contain at most 64 characters. Requires the HostnameOverride feature gate to be enabled.",
     }
     
     func (PodSpec) SwaggerDoc() map[string]string {
    @@ -1858,24 +1929,25 @@ func (PodSpec) SwaggerDoc() map[string]string {
     }
     
     var map_PodStatus = map[string]string{
    -	"":                           "PodStatus represents information about the status of a pod. Status may trail the actual state of a system, especially if the node that hosts the pod cannot contact the control plane.",
    -	"observedGeneration":         "If set, this represents the .metadata.generation that the pod status was set based upon. This is an alpha field. Enable PodObservedGenerationTracking to be able to use this field.",
    -	"phase":                      "The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle. The conditions array, the reason and message fields, and the individual container status arrays contain more detail about the pod's status. There are five possible phase values:\n\nPending: The pod has been accepted by the Kubernetes system, but one or more of the container images has not been created. This includes time before being scheduled as well as time spent downloading images over the network, which could take a while. Running: The pod has been bound to a node, and all of the containers have been created. At least one container is still running, or is in the process of starting or restarting. Succeeded: All containers in the pod have terminated in success, and will not be restarted. Failed: All containers in the pod have terminated, and at least one container has terminated in failure. The container either exited with non-zero status or was terminated by the system. Unknown: For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod.\n\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase",
    -	"conditions":                 "Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions",
    -	"message":                    "A human readable message indicating details about why the pod is in this condition.",
    -	"reason":                     "A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted'",
    -	"nominatedNodeName":          "nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be scheduled right away as preemption victims receive their graceful termination periods. This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to give the resources on this node to a higher priority pod that is created after preemption. As a result, this field may be different than PodSpec.nodeName when the pod is scheduled.",
    -	"hostIP":                     "hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet. A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will not be updated even if there is a node is assigned to pod",
    -	"hostIPs":                    "hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must match the hostIP field. This list is empty if the pod has not started yet. A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will not be updated even if there is a node is assigned to this pod.",
    -	"podIP":                      "podIP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.",
    -	"podIPs":                     "podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list is empty if no IPs have been allocated yet.",
    -	"startTime":                  "RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod.",
    -	"initContainerStatuses":      "Statuses of init containers in this pod. The most recent successful non-restartable init container will have ready = true, the most recently started container will have startTime set. Each init container in the pod should have at most one status in this list, and all statuses should be for containers in the pod. However this is not enforced. If a status for a non-existent container is present in the list, or the list has duplicate names, the behavior of various Kubernetes components is not defined and those statuses might be ignored. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-and-container-status",
    -	"containerStatuses":          "Statuses of containers in this pod. Each container in the pod should have at most one status in this list, and all statuses should be for containers in the pod. However this is not enforced. If a status for a non-existent container is present in the list, or the list has duplicate names, the behavior of various Kubernetes components is not defined and those statuses might be ignored. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status",
    -	"qosClass":                   "The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes",
    -	"ephemeralContainerStatuses": "Statuses for any ephemeral containers that have run in this pod. Each ephemeral container in the pod should have at most one status in this list, and all statuses should be for containers in the pod. However this is not enforced. If a status for a non-existent container is present in the list, or the list has duplicate names, the behavior of various Kubernetes components is not defined and those statuses might be ignored. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status",
    -	"resize":                     "Status of resources resize desired for pod's containers. It is empty if no resources resize is pending. Any changes to container resources will automatically set this to \"Proposed\" Deprecated: Resize status is moved to two pod conditions PodResizePending and PodResizeInProgress. PodResizePending will track states where the spec has been resized, but the Kubelet has not yet allocated the resources. PodResizeInProgress will track in-progress resizes, and should be present whenever allocated resources != acknowledged resources.",
    -	"resourceClaimStatuses":      "Status of resource claims.",
    +	"":                            "PodStatus represents information about the status of a pod. Status may trail the actual state of a system, especially if the node that hosts the pod cannot contact the control plane.",
    +	"observedGeneration":          "If set, this represents the .metadata.generation that the pod status was set based upon. This is an alpha field. Enable PodObservedGenerationTracking to be able to use this field.",
    +	"phase":                       "The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle. The conditions array, the reason and message fields, and the individual container status arrays contain more detail about the pod's status. There are five possible phase values:\n\nPending: The pod has been accepted by the Kubernetes system, but one or more of the container images has not been created. This includes time before being scheduled as well as time spent downloading images over the network, which could take a while. Running: The pod has been bound to a node, and all of the containers have been created. At least one container is still running, or is in the process of starting or restarting. Succeeded: All containers in the pod have terminated in success, and will not be restarted. Failed: All containers in the pod have terminated, and at least one container has terminated in failure. The container either exited with non-zero status or was terminated by the system. Unknown: For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod.\n\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase",
    +	"conditions":                  "Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions",
    +	"message":                     "A human readable message indicating details about why the pod is in this condition.",
    +	"reason":                      "A brief CamelCase message indicating details about why the pod is in this state. e.g. 'Evicted'",
    +	"nominatedNodeName":           "nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be scheduled right away as preemption victims receive their graceful termination periods. This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to give the resources on this node to a higher priority pod that is created after preemption. As a result, this field may be different than PodSpec.nodeName when the pod is scheduled.",
    +	"hostIP":                      "hostIP holds the IP address of the host to which the pod is assigned. Empty if the pod has not started yet. A pod can be assigned to a node that has a problem in kubelet which in turns mean that HostIP will not be updated even if there is a node is assigned to pod",
    +	"hostIPs":                     "hostIPs holds the IP addresses allocated to the host. If this field is specified, the first entry must match the hostIP field. This list is empty if the pod has not started yet. A pod can be assigned to a node that has a problem in kubelet which in turns means that HostIPs will not be updated even if there is a node is assigned to this pod.",
    +	"podIP":                       "podIP address allocated to the pod. Routable at least within the cluster. Empty if not yet allocated.",
    +	"podIPs":                      "podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list is empty if no IPs have been allocated yet.",
    +	"startTime":                   "RFC 3339 date and time at which the object was acknowledged by the Kubelet. This is before the Kubelet pulled the container image(s) for the pod.",
    +	"initContainerStatuses":       "Statuses of init containers in this pod. The most recent successful non-restartable init container will have ready = true, the most recently started container will have startTime set. Each init container in the pod should have at most one status in this list, and all statuses should be for containers in the pod. However this is not enforced. If a status for a non-existent container is present in the list, or the list has duplicate names, the behavior of various Kubernetes components is not defined and those statuses might be ignored. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-and-container-status",
    +	"containerStatuses":           "Statuses of containers in this pod. Each container in the pod should have at most one status in this list, and all statuses should be for containers in the pod. However this is not enforced. If a status for a non-existent container is present in the list, or the list has duplicate names, the behavior of various Kubernetes components is not defined and those statuses might be ignored. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status",
    +	"qosClass":                    "The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes",
    +	"ephemeralContainerStatuses":  "Statuses for any ephemeral containers that have run in this pod. Each ephemeral container in the pod should have at most one status in this list, and all statuses should be for containers in the pod. However this is not enforced. If a status for a non-existent container is present in the list, or the list has duplicate names, the behavior of various Kubernetes components is not defined and those statuses might be ignored. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status",
    +	"resize":                      "Status of resources resize desired for pod's containers. It is empty if no resources resize is pending. Any changes to container resources will automatically set this to \"Proposed\" Deprecated: Resize status is moved to two pod conditions PodResizePending and PodResizeInProgress. PodResizePending will track states where the spec has been resized, but the Kubelet has not yet allocated the resources. PodResizeInProgress will track in-progress resizes, and should be present whenever allocated resources != acknowledged resources.",
    +	"resourceClaimStatuses":       "Status of resource claims.",
    +	"extendedResourceClaimStatus": "Status of extended resource claim backed by DRA.",
     }
     
     func (PodStatus) SwaggerDoc() map[string]string {
    @@ -2205,7 +2277,7 @@ var map_ResourceRequirements = map[string]string{
     	"":         "ResourceRequirements describes the compute resource requirements.",
     	"limits":   "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
     	"requests": "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
    -	"claims":   "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.\n\nThis is an alpha field and requires enabling the DynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers.",
    +	"claims":   "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container.\n\nThis field depends on the DynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers.",
     }
     
     func (ResourceRequirements) SwaggerDoc() map[string]string {
    @@ -2587,7 +2659,7 @@ var map_Taint = map[string]string{
     	"key":       "Required. The taint key to be applied to a node.",
     	"value":     "The taint value corresponding to the taint key.",
     	"effect":    "Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.",
    -	"timeAdded": "TimeAdded represents the time at which the taint was added. It is only written for NoExecute taints.",
    +	"timeAdded": "TimeAdded represents the time at which the taint was added.",
     }
     
     func (Taint) SwaggerDoc() map[string]string {
    @@ -2727,6 +2799,7 @@ var map_VolumeProjection = map[string]string{
     	"configMap":           "configMap information about the configMap data to project",
     	"serviceAccountToken": "serviceAccountToken is information about the serviceAccountToken data to project",
     	"clusterTrustBundle":  "ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file.\n\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\n\nClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector.\n\nKubelet performs aggressive normalization of the PEM contents written into the pod filesystem.  Esoteric PEM features such as inter-block comments and block headers are stripped.  Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.",
    +	"podCertificate":      "Projects an auto-rotating credential bundle (private key and certificate chain) that the pod can use either as a TLS client or server.\n\nKubelet generates a private key and uses it to send a PodCertificateRequest to the named signer.  Once the signer approves the request and issues a certificate chain, Kubelet writes the key and certificate chain to the pod filesystem.  The pod does not start until certificates have been issued for each podCertificate projected volume source in its spec.\n\nKubelet will begin trying to rotate the certificate at the time indicated by the signer using the PodCertificateRequest.Status.BeginRefreshAt timestamp.\n\nKubelet can write a single file, indicated by the credentialBundlePath field, or separate files, indicated by the keyPath and certificateChainPath fields.\n\nThe credential bundle is a single file in PEM format.  The first PEM entry is the private key (in PKCS#8 format), and the remaining PEM entries are the certificate chain issued by the signer (typically, signers will return their certificate chain in leaf-to-root order).\n\nPrefer using the credential bundle format, since your application code can read it atomically.  If you use keyPath and certificateChainPath, your application must make two separate file reads. If these coincide with a certificate rotation, it is possible that the private key and leaf certificate you read may not correspond to each other.  Your application will need to check for this condition, and re-read until they are consistent.\n\nThe named signer controls chooses the format of the certificate it issues; consult the signer implementation's documentation to learn how to use the certificates it issues.",
     }
     
     func (VolumeProjection) SwaggerDoc() map[string]string {
    @@ -2752,10 +2825,10 @@ var map_VolumeSource = map[string]string{
     	"gitRepo":               "gitRepo represents a git repository at a particular revision. Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container.",
     	"secret":                "secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret",
     	"nfs":                   "nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs",
    -	"iscsi":                 "iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md",
    -	"glusterfs":             "glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported. More info: https://examples.k8s.io/volumes/glusterfs/README.md",
    +	"iscsi":                 "iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi",
    +	"glusterfs":             "glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported.",
     	"persistentVolumeClaim": "persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims",
    -	"rbd":                   "rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported. More info: https://examples.k8s.io/volumes/rbd/README.md",
    +	"rbd":                   "rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.",
     	"flexVolume":            "flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.",
     	"cinder":                "cinder represents a cinder volume attached and mounted on kubelets host machine. Deprecated: Cinder is deprecated. All operations for the in-tree cinder type are redirected to the cinder.csi.openstack.org CSI driver. More info: https://examples.k8s.io/mysql-cinder-pd/README.md",
     	"cephfs":                "cephFS represents a Ceph FS mount on the host that shares a pod's lifetime. Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.",
    diff --git a/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go
    index 619c525427..bcd91bd019 100644
    --- a/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go
    +++ b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go
    @@ -829,6 +829,13 @@ func (in *Container) DeepCopyInto(out *Container) {
     		*out = new(ContainerRestartPolicy)
     		**out = **in
     	}
    +	if in.RestartPolicyRules != nil {
    +		in, out := &in.RestartPolicyRules, &out.RestartPolicyRules
    +		*out = make([]ContainerRestartRule, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
     	if in.VolumeMounts != nil {
     		in, out := &in.VolumeMounts, &out.VolumeMounts
     		*out = make([]VolumeMount, len(*in))
    @@ -879,6 +886,22 @@ func (in *Container) DeepCopy() *Container {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ContainerExtendedResourceRequest) DeepCopyInto(out *ContainerExtendedResourceRequest) {
    +	*out = *in
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerExtendedResourceRequest.
    +func (in *ContainerExtendedResourceRequest) DeepCopy() *ContainerExtendedResourceRequest {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ContainerExtendedResourceRequest)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *ContainerImage) DeepCopyInto(out *ContainerImage) {
     	*out = *in
    @@ -932,6 +955,48 @@ func (in *ContainerResizePolicy) DeepCopy() *ContainerResizePolicy {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ContainerRestartRule) DeepCopyInto(out *ContainerRestartRule) {
    +	*out = *in
    +	if in.ExitCodes != nil {
    +		in, out := &in.ExitCodes, &out.ExitCodes
    +		*out = new(ContainerRestartRuleOnExitCodes)
    +		(*in).DeepCopyInto(*out)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerRestartRule.
    +func (in *ContainerRestartRule) DeepCopy() *ContainerRestartRule {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ContainerRestartRule)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *ContainerRestartRuleOnExitCodes) DeepCopyInto(out *ContainerRestartRuleOnExitCodes) {
    +	*out = *in
    +	if in.Values != nil {
    +		in, out := &in.Values, &out.Values
    +		*out = make([]int32, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerRestartRuleOnExitCodes.
    +func (in *ContainerRestartRuleOnExitCodes) DeepCopy() *ContainerRestartRuleOnExitCodes {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(ContainerRestartRuleOnExitCodes)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *ContainerState) DeepCopyInto(out *ContainerState) {
     	*out = *in
    @@ -1433,6 +1498,11 @@ func (in *EnvVarSource) DeepCopyInto(out *EnvVarSource) {
     		*out = new(SecretKeySelector)
     		(*in).DeepCopyInto(*out)
     	}
    +	if in.FileKeyRef != nil {
    +		in, out := &in.FileKeyRef, &out.FileKeyRef
    +		*out = new(FileKeySelector)
    +		(*in).DeepCopyInto(*out)
    +	}
     	return
     }
     
    @@ -1506,6 +1576,13 @@ func (in *EphemeralContainerCommon) DeepCopyInto(out *EphemeralContainerCommon)
     		*out = new(ContainerRestartPolicy)
     		**out = **in
     	}
    +	if in.RestartPolicyRules != nil {
    +		in, out := &in.RestartPolicyRules, &out.RestartPolicyRules
    +		*out = make([]ContainerRestartRule, len(*in))
    +		for i := range *in {
    +			(*in)[i].DeepCopyInto(&(*out)[i])
    +		}
    +	}
     	if in.VolumeMounts != nil {
     		in, out := &in.VolumeMounts, &out.VolumeMounts
     		*out = make([]VolumeMount, len(*in))
    @@ -1736,6 +1813,27 @@ func (in *FCVolumeSource) DeepCopy() *FCVolumeSource {
     	return out
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *FileKeySelector) DeepCopyInto(out *FileKeySelector) {
    +	*out = *in
    +	if in.Optional != nil {
    +		in, out := &in.Optional, &out.Optional
    +		*out = new(bool)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FileKeySelector.
    +func (in *FileKeySelector) DeepCopy() *FileKeySelector {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(FileKeySelector)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *FlexPersistentVolumeSource) DeepCopyInto(out *FlexPersistentVolumeSource) {
     	*out = *in
    @@ -3797,6 +3895,27 @@ func (in *PodAttachOptions) DeepCopyObject() runtime.Object {
     	return nil
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *PodCertificateProjection) DeepCopyInto(out *PodCertificateProjection) {
    +	*out = *in
    +	if in.MaxExpirationSeconds != nil {
    +		in, out := &in.MaxExpirationSeconds, &out.MaxExpirationSeconds
    +		*out = new(int32)
    +		**out = **in
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCertificateProjection.
    +func (in *PodCertificateProjection) DeepCopy() *PodCertificateProjection {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(PodCertificateProjection)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *PodCondition) DeepCopyInto(out *PodCondition) {
     	*out = *in
    @@ -3899,6 +4018,27 @@ func (in *PodExecOptions) DeepCopyObject() runtime.Object {
     	return nil
     }
     
    +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    +func (in *PodExtendedResourceClaimStatus) DeepCopyInto(out *PodExtendedResourceClaimStatus) {
    +	*out = *in
    +	if in.RequestMappings != nil {
    +		in, out := &in.RequestMappings, &out.RequestMappings
    +		*out = make([]ContainerExtendedResourceRequest, len(*in))
    +		copy(*out, *in)
    +	}
    +	return
    +}
    +
    +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodExtendedResourceClaimStatus.
    +func (in *PodExtendedResourceClaimStatus) DeepCopy() *PodExtendedResourceClaimStatus {
    +	if in == nil {
    +		return nil
    +	}
    +	out := new(PodExtendedResourceClaimStatus)
    +	in.DeepCopyInto(out)
    +	return out
    +}
    +
     // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
     func (in *PodIP) DeepCopyInto(out *PodIP) {
     	*out = *in
    @@ -4412,6 +4552,11 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) {
     		*out = new(ResourceRequirements)
     		(*in).DeepCopyInto(*out)
     	}
    +	if in.HostnameOverride != nil {
    +		in, out := &in.HostnameOverride, &out.HostnameOverride
    +		*out = new(string)
    +		**out = **in
    +	}
     	return
     }
     
    @@ -4477,6 +4622,11 @@ func (in *PodStatus) DeepCopyInto(out *PodStatus) {
     			(*in)[i].DeepCopyInto(&(*out)[i])
     		}
     	}
    +	if in.ExtendedResourceClaimStatus != nil {
    +		in, out := &in.ExtendedResourceClaimStatus, &out.ExtendedResourceClaimStatus
    +		*out = new(PodExtendedResourceClaimStatus)
    +		(*in).DeepCopyInto(*out)
    +	}
     	return
     }
     
    @@ -6412,6 +6562,11 @@ func (in *VolumeProjection) DeepCopyInto(out *VolumeProjection) {
     		*out = new(ClusterTrustBundleProjection)
     		(*in).DeepCopyInto(*out)
     	}
    +	if in.PodCertificate != nil {
    +		in, out := &in.PodCertificate, &out.PodCertificate
    +		*out = new(PodCertificateProjection)
    +		(*in).DeepCopyInto(*out)
    +	}
     	return
     }
     
    diff --git a/vendor/k8s.io/api/extensions/v1beta1/doc.go b/vendor/k8s.io/api/extensions/v1beta1/doc.go
    index 7770fab5d2..be710973cb 100644
    --- a/vendor/k8s.io/api/extensions/v1beta1/doc.go
    +++ b/vendor/k8s.io/api/extensions/v1beta1/doc.go
    @@ -18,5 +18,7 @@ limitations under the License.
     // +k8s:protobuf-gen=package
     // +k8s:openapi-gen=true
     // +k8s:prerelease-lifecycle-gen=true
    +// +k8s:validation-gen=TypeMeta
    +// +k8s:validation-gen-input=k8s.io/api/extensions/v1beta1
     
     package v1beta1
    diff --git a/vendor/k8s.io/api/extensions/v1beta1/generated.proto b/vendor/k8s.io/api/extensions/v1beta1/generated.proto
    index 70fcec0cc5..fed0b4835d 100644
    --- a/vendor/k8s.io/api/extensions/v1beta1/generated.proto
    +++ b/vendor/k8s.io/api/extensions/v1beta1/generated.proto
    @@ -980,7 +980,7 @@ message RollingUpdateDaemonSet {
       // pod is available (Ready for at least minReadySeconds) the old DaemonSet pod
       // on that node is marked deleted. If the old pod becomes unavailable for any
       // reason (Ready transitions to false, is evicted, or is drained) an updated
    -  // pod is immediatedly created on that node without considering surge limits.
    +  // pod is immediately created on that node without considering surge limits.
       // Allowing surge implies the possibility that the resources consumed by the
       // daemonset on any given node can double if the readiness check fails, and
       // so resource intensive daemonsets should take into account that they may
    @@ -1039,6 +1039,9 @@ message Scale {
     message ScaleSpec {
       // desired number of instances for the scaled object.
       // +optional
    +  // +k8s:optional
    +  // +default=0
    +  // +k8s:minimum=0
       optional int32 replicas = 1;
     }
     
    diff --git a/vendor/k8s.io/api/extensions/v1beta1/types.go b/vendor/k8s.io/api/extensions/v1beta1/types.go
    index b80a7a7e16..c7b50e0590 100644
    --- a/vendor/k8s.io/api/extensions/v1beta1/types.go
    +++ b/vendor/k8s.io/api/extensions/v1beta1/types.go
    @@ -27,6 +27,9 @@ import (
     type ScaleSpec struct {
     	// desired number of instances for the scaled object.
     	// +optional
    +	// +k8s:optional
    +	// +default=0
    +	// +k8s:minimum=0
     	Replicas int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"`
     }
     
    @@ -54,6 +57,7 @@ type ScaleStatus struct {
     // +k8s:prerelease-lifecycle-gen:introduced=1.1
     // +k8s:prerelease-lifecycle-gen:deprecated=1.2
     // +k8s:prerelease-lifecycle-gen:removed=1.16
    +// +k8s:isSubresource=/scale
     
     // represents a scaling request for a resource.
     type Scale struct {
    @@ -398,7 +402,7 @@ type RollingUpdateDaemonSet struct {
     	// pod is available (Ready for at least minReadySeconds) the old DaemonSet pod
     	// on that node is marked deleted. If the old pod becomes unavailable for any
     	// reason (Ready transitions to false, is evicted, or is drained) an updated
    -	// pod is immediatedly created on that node without considering surge limits.
    +	// pod is immediately created on that node without considering surge limits.
     	// Allowing surge implies the possibility that the resources consumed by the
     	// daemonset on any given node can double if the readiness check fails, and
     	// so resource intensive daemonsets should take into account that they may
    diff --git a/vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go b/vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go
    index 923fab3aa1..8a158233ef 100644
    --- a/vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go
    @@ -482,7 +482,7 @@ func (RollbackConfig) SwaggerDoc() map[string]string {
     var map_RollingUpdateDaemonSet = map[string]string{
     	"":               "Spec to control the desired behavior of daemon set rolling update.",
     	"maxUnavailable": "The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0 if MaxSurge is 0 Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update.",
    -	"maxSurge":       "The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption. This is an alpha field and requires enabling DaemonSetUpdateSurge feature gate.",
    +	"maxSurge":       "The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediately created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption. This is an alpha field and requires enabling DaemonSetUpdateSurge feature gate.",
     }
     
     func (RollingUpdateDaemonSet) SwaggerDoc() map[string]string {
    diff --git a/vendor/k8s.io/api/extensions/v1beta1/zz_generated.validations.go b/vendor/k8s.io/api/extensions/v1beta1/zz_generated.validations.go
    new file mode 100644
    index 0000000000..6d2a1666ae
    --- /dev/null
    +++ b/vendor/k8s.io/api/extensions/v1beta1/zz_generated.validations.go
    @@ -0,0 +1,78 @@
    +//go:build !ignore_autogenerated
    +// +build !ignore_autogenerated
    +
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by validation-gen. DO NOT EDIT.
    +
    +package v1beta1
    +
    +import (
    +	context "context"
    +	fmt "fmt"
    +
    +	operation "k8s.io/apimachinery/pkg/api/operation"
    +	safe "k8s.io/apimachinery/pkg/api/safe"
    +	validate "k8s.io/apimachinery/pkg/api/validate"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +	field "k8s.io/apimachinery/pkg/util/validation/field"
    +)
    +
    +func init() { localSchemeBuilder.Register(RegisterValidations) }
    +
    +// RegisterValidations adds validation functions to the given scheme.
    +// Public to allow building arbitrary schemes.
    +func RegisterValidations(scheme *runtime.Scheme) error {
    +	scheme.AddValidationFunc((*Scale)(nil), func(ctx context.Context, op operation.Operation, obj, oldObj interface{}) field.ErrorList {
    +		switch op.Request.SubresourcePath() {
    +		case "/scale":
    +			return Validate_Scale(ctx, op, nil /* fldPath */, obj.(*Scale), safe.Cast[*Scale](oldObj))
    +		}
    +		return field.ErrorList{field.InternalError(nil, fmt.Errorf("no validation found for %T, subresource: %v", obj, op.Request.SubresourcePath()))}
    +	})
    +	return nil
    +}
    +
    +func Validate_Scale(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *Scale) (errs field.ErrorList) {
    +	// field Scale.TypeMeta has no validation
    +	// field Scale.ObjectMeta has no validation
    +
    +	// field Scale.Spec
    +	errs = append(errs,
    +		func(fldPath *field.Path, obj, oldObj *ScaleSpec) (errs field.ErrorList) {
    +			errs = append(errs, Validate_ScaleSpec(ctx, op, fldPath, obj, oldObj)...)
    +			return
    +		}(fldPath.Child("spec"), &obj.Spec, safe.Field(oldObj, func(oldObj *Scale) *ScaleSpec { return &oldObj.Spec }))...)
    +
    +	// field Scale.Status has no validation
    +	return errs
    +}
    +
    +func Validate_ScaleSpec(ctx context.Context, op operation.Operation, fldPath *field.Path, obj, oldObj *ScaleSpec) (errs field.ErrorList) {
    +	// field ScaleSpec.Replicas
    +	errs = append(errs,
    +		func(fldPath *field.Path, obj, oldObj *int32) (errs field.ErrorList) {
    +			// optional value-type fields with zero-value defaults are purely documentation
    +			if op.Type == operation.Update && (obj == oldObj || (obj != nil && oldObj != nil && *obj == *oldObj)) {
    +				return nil // no changes
    +			}
    +			errs = append(errs, validate.Minimum(ctx, op, fldPath, obj, oldObj, 0)...)
    +			return
    +		}(fldPath.Child("replicas"), &obj.Replicas, safe.Field(oldObj, func(oldObj *ScaleSpec) *int32 { return &oldObj.Replicas }))...)
    +
    +	return errs
    +}
    diff --git a/vendor/k8s.io/api/networking/v1/generated.proto b/vendor/k8s.io/api/networking/v1/generated.proto
    index e3e3e9215e..16a2792aa6 100644
    --- a/vendor/k8s.io/api/networking/v1/generated.proto
    +++ b/vendor/k8s.io/api/networking/v1/generated.proto
    @@ -534,11 +534,12 @@ message NetworkPolicyPort {
     // NetworkPolicySpec provides the specification of a NetworkPolicy
     message NetworkPolicySpec {
       // podSelector selects the pods to which this NetworkPolicy object applies.
    -  // The array of ingress rules is applied to any pods selected by this field.
    +  // The array of rules is applied to any pods selected by this field. An empty
    +  // selector matches all pods in the policy's namespace.
       // Multiple network policies can select the same set of pods. In this case,
       // the ingress rules for each are combined additively.
    -  // This field is NOT optional and follows standard label selector semantics.
    -  // An empty podSelector matches all pods in this namespace.
    +  // This field is optional. If it is not specified, it defaults to an empty selector.
    +  // +optional
       optional .k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector podSelector = 1;
     
       // ingress is a list of ingress rules to be applied to the selected pods.
    diff --git a/vendor/k8s.io/api/networking/v1/types.go b/vendor/k8s.io/api/networking/v1/types.go
    index 216647ceeb..7d9a4fc94c 100644
    --- a/vendor/k8s.io/api/networking/v1/types.go
    +++ b/vendor/k8s.io/api/networking/v1/types.go
    @@ -60,11 +60,12 @@ const (
     // NetworkPolicySpec provides the specification of a NetworkPolicy
     type NetworkPolicySpec struct {
     	// podSelector selects the pods to which this NetworkPolicy object applies.
    -	// The array of ingress rules is applied to any pods selected by this field.
    +	// The array of rules is applied to any pods selected by this field. An empty
    +	// selector matches all pods in the policy's namespace.
     	// Multiple network policies can select the same set of pods. In this case,
     	// the ingress rules for each are combined additively.
    -	// This field is NOT optional and follows standard label selector semantics.
    -	// An empty podSelector matches all pods in this namespace.
    +	// This field is optional. If it is not specified, it defaults to an empty selector.
    +	// +optional
     	PodSelector metav1.LabelSelector `json:"podSelector" protobuf:"bytes,1,opt,name=podSelector"`
     
     	// ingress is a list of ingress rules to be applied to the selected pods.
    diff --git a/vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go
    index 0e294848ba..6210bb7a5a 100644
    --- a/vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go
    +++ b/vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go
    @@ -313,7 +313,7 @@ func (NetworkPolicyPort) SwaggerDoc() map[string]string {
     
     var map_NetworkPolicySpec = map[string]string{
     	"":            "NetworkPolicySpec provides the specification of a NetworkPolicy",
    -	"podSelector": "podSelector selects the pods to which this NetworkPolicy object applies. The array of ingress rules is applied to any pods selected by this field. Multiple network policies can select the same set of pods. In this case, the ingress rules for each are combined additively. This field is NOT optional and follows standard label selector semantics. An empty podSelector matches all pods in this namespace.",
    +	"podSelector": "podSelector selects the pods to which this NetworkPolicy object applies. The array of rules is applied to any pods selected by this field. An empty selector matches all pods in the policy's namespace. Multiple network policies can select the same set of pods. In this case, the ingress rules for each are combined additively. This field is optional. If it is not specified, it defaults to an empty selector.",
     	"ingress":     "ingress is a list of ingress rules to be applied to the selected pods. Traffic is allowed to a pod if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic source is the pod's local node, OR if the traffic matches at least one ingress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy does not allow any traffic (and serves solely to ensure that the pods it selects are isolated by default)",
     	"egress":      "egress is a list of egress rules to be applied to the selected pods. Outgoing traffic is allowed if there are no NetworkPolicies selecting the pod (and cluster policy otherwise allows the traffic), OR if the traffic matches at least one egress rule across all of the NetworkPolicy objects whose podSelector matches the pod. If this field is empty then this NetworkPolicy limits all outgoing traffic (and serves solely to ensure that the pods it selects are isolated by default). This field is beta-level in 1.8",
     	"policyTypes": "policyTypes is a list of rule types that the NetworkPolicy relates to. Valid options are [\"Ingress\"], [\"Egress\"], or [\"Ingress\", \"Egress\"]. If this field is not specified, it will default based on the existence of ingress or egress rules; policies that contain an egress section are assumed to affect egress, and all policies (whether or not they contain an ingress section) are assumed to affect ingress. If you want to write an egress-only policy, you must explicitly specify policyTypes [ \"Egress\" ]. Likewise, if you want to write a policy that specifies that no egress is allowed, you must specify a policyTypes value that include \"Egress\" (since such a policy would not include an egress section and would otherwise default to just [ \"Ingress\" ]). This field is beta-level in 1.8",
    diff --git a/vendor/k8s.io/api/networking/v1alpha1/generated.pb.go b/vendor/k8s.io/api/networking/v1alpha1/generated.pb.go
    deleted file mode 100644
    index 0d42034837..0000000000
    --- a/vendor/k8s.io/api/networking/v1alpha1/generated.pb.go
    +++ /dev/null
    @@ -1,1929 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by protoc-gen-gogo. DO NOT EDIT.
    -// source: k8s.io/api/networking/v1alpha1/generated.proto
    -
    -package v1alpha1
    -
    -import (
    -	fmt "fmt"
    -
    -	io "io"
    -
    -	proto "github.com/gogo/protobuf/proto"
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -
    -	math "math"
    -	math_bits "math/bits"
    -	reflect "reflect"
    -	strings "strings"
    -)
    -
    -// Reference imports to suppress errors if they are not otherwise used.
    -var _ = proto.Marshal
    -var _ = fmt.Errorf
    -var _ = math.Inf
    -
    -// This is a compile-time assertion to ensure that this generated file
    -// is compatible with the proto package it is being compiled against.
    -// A compilation error at this line likely means your copy of the
    -// proto package needs to be updated.
    -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
    -
    -func (m *IPAddress) Reset()      { *m = IPAddress{} }
    -func (*IPAddress) ProtoMessage() {}
    -func (*IPAddress) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1cb39e7b48ce50d, []int{0}
    -}
    -func (m *IPAddress) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *IPAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *IPAddress) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_IPAddress.Merge(m, src)
    -}
    -func (m *IPAddress) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *IPAddress) XXX_DiscardUnknown() {
    -	xxx_messageInfo_IPAddress.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_IPAddress proto.InternalMessageInfo
    -
    -func (m *IPAddressList) Reset()      { *m = IPAddressList{} }
    -func (*IPAddressList) ProtoMessage() {}
    -func (*IPAddressList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1cb39e7b48ce50d, []int{1}
    -}
    -func (m *IPAddressList) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *IPAddressList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *IPAddressList) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_IPAddressList.Merge(m, src)
    -}
    -func (m *IPAddressList) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *IPAddressList) XXX_DiscardUnknown() {
    -	xxx_messageInfo_IPAddressList.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_IPAddressList proto.InternalMessageInfo
    -
    -func (m *IPAddressSpec) Reset()      { *m = IPAddressSpec{} }
    -func (*IPAddressSpec) ProtoMessage() {}
    -func (*IPAddressSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1cb39e7b48ce50d, []int{2}
    -}
    -func (m *IPAddressSpec) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *IPAddressSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *IPAddressSpec) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_IPAddressSpec.Merge(m, src)
    -}
    -func (m *IPAddressSpec) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *IPAddressSpec) XXX_DiscardUnknown() {
    -	xxx_messageInfo_IPAddressSpec.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_IPAddressSpec proto.InternalMessageInfo
    -
    -func (m *ParentReference) Reset()      { *m = ParentReference{} }
    -func (*ParentReference) ProtoMessage() {}
    -func (*ParentReference) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1cb39e7b48ce50d, []int{3}
    -}
    -func (m *ParentReference) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ParentReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ParentReference) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ParentReference.Merge(m, src)
    -}
    -func (m *ParentReference) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ParentReference) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ParentReference.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ParentReference proto.InternalMessageInfo
    -
    -func (m *ServiceCIDR) Reset()      { *m = ServiceCIDR{} }
    -func (*ServiceCIDR) ProtoMessage() {}
    -func (*ServiceCIDR) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1cb39e7b48ce50d, []int{4}
    -}
    -func (m *ServiceCIDR) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ServiceCIDR) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ServiceCIDR) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ServiceCIDR.Merge(m, src)
    -}
    -func (m *ServiceCIDR) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ServiceCIDR) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ServiceCIDR.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ServiceCIDR proto.InternalMessageInfo
    -
    -func (m *ServiceCIDRList) Reset()      { *m = ServiceCIDRList{} }
    -func (*ServiceCIDRList) ProtoMessage() {}
    -func (*ServiceCIDRList) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1cb39e7b48ce50d, []int{5}
    -}
    -func (m *ServiceCIDRList) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ServiceCIDRList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ServiceCIDRList) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ServiceCIDRList.Merge(m, src)
    -}
    -func (m *ServiceCIDRList) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ServiceCIDRList) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ServiceCIDRList.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ServiceCIDRList proto.InternalMessageInfo
    -
    -func (m *ServiceCIDRSpec) Reset()      { *m = ServiceCIDRSpec{} }
    -func (*ServiceCIDRSpec) ProtoMessage() {}
    -func (*ServiceCIDRSpec) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1cb39e7b48ce50d, []int{6}
    -}
    -func (m *ServiceCIDRSpec) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ServiceCIDRSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ServiceCIDRSpec) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ServiceCIDRSpec.Merge(m, src)
    -}
    -func (m *ServiceCIDRSpec) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ServiceCIDRSpec) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ServiceCIDRSpec.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ServiceCIDRSpec proto.InternalMessageInfo
    -
    -func (m *ServiceCIDRStatus) Reset()      { *m = ServiceCIDRStatus{} }
    -func (*ServiceCIDRStatus) ProtoMessage() {}
    -func (*ServiceCIDRStatus) Descriptor() ([]byte, []int) {
    -	return fileDescriptor_c1cb39e7b48ce50d, []int{7}
    -}
    -func (m *ServiceCIDRStatus) XXX_Unmarshal(b []byte) error {
    -	return m.Unmarshal(b)
    -}
    -func (m *ServiceCIDRStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    -	b = b[:cap(b)]
    -	n, err := m.MarshalToSizedBuffer(b)
    -	if err != nil {
    -		return nil, err
    -	}
    -	return b[:n], nil
    -}
    -func (m *ServiceCIDRStatus) XXX_Merge(src proto.Message) {
    -	xxx_messageInfo_ServiceCIDRStatus.Merge(m, src)
    -}
    -func (m *ServiceCIDRStatus) XXX_Size() int {
    -	return m.Size()
    -}
    -func (m *ServiceCIDRStatus) XXX_DiscardUnknown() {
    -	xxx_messageInfo_ServiceCIDRStatus.DiscardUnknown(m)
    -}
    -
    -var xxx_messageInfo_ServiceCIDRStatus proto.InternalMessageInfo
    -
    -func init() {
    -	proto.RegisterType((*IPAddress)(nil), "k8s.io.api.networking.v1alpha1.IPAddress")
    -	proto.RegisterType((*IPAddressList)(nil), "k8s.io.api.networking.v1alpha1.IPAddressList")
    -	proto.RegisterType((*IPAddressSpec)(nil), "k8s.io.api.networking.v1alpha1.IPAddressSpec")
    -	proto.RegisterType((*ParentReference)(nil), "k8s.io.api.networking.v1alpha1.ParentReference")
    -	proto.RegisterType((*ServiceCIDR)(nil), "k8s.io.api.networking.v1alpha1.ServiceCIDR")
    -	proto.RegisterType((*ServiceCIDRList)(nil), "k8s.io.api.networking.v1alpha1.ServiceCIDRList")
    -	proto.RegisterType((*ServiceCIDRSpec)(nil), "k8s.io.api.networking.v1alpha1.ServiceCIDRSpec")
    -	proto.RegisterType((*ServiceCIDRStatus)(nil), "k8s.io.api.networking.v1alpha1.ServiceCIDRStatus")
    -}
    -
    -func init() {
    -	proto.RegisterFile("k8s.io/api/networking/v1alpha1/generated.proto", fileDescriptor_c1cb39e7b48ce50d)
    -}
    -
    -var fileDescriptor_c1cb39e7b48ce50d = []byte{
    -	// 634 bytes of a gzipped FileDescriptorProto
    -	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcd, 0x6e, 0xd3, 0x4a,
    -	0x18, 0x8d, 0xdb, 0xa4, 0xaa, 0x27, 0xb7, 0xb7, 0xb7, 0x5e, 0x45, 0x5d, 0x38, 0x91, 0xef, 0xa6,
    -	0x08, 0x3a, 0x26, 0x11, 0x42, 0x6c, 0x71, 0x2b, 0xa1, 0x4a, 0xd0, 0x96, 0xe9, 0x0a, 0xd4, 0x05,
    -	0xd3, 0xc9, 0x57, 0x67, 0x08, 0xfe, 0xd1, 0xcc, 0x24, 0xc0, 0x8e, 0x47, 0xe0, 0x05, 0x78, 0x0e,
    -	0x56, 0x20, 0xb1, 0xeb, 0xb2, 0xcb, 0xae, 0x2a, 0x6a, 0x5e, 0x04, 0xcd, 0xd8, 0xb1, 0x93, 0x46,
    -	0xfd, 0xdb, 0x74, 0xe7, 0xef, 0xcc, 0x39, 0x67, 0xbe, 0xf3, 0xcd, 0x8c, 0x8c, 0xf0, 0xf0, 0x99,
    -	0xc4, 0x3c, 0xf1, 0x69, 0xca, 0xfd, 0x18, 0xd4, 0xc7, 0x44, 0x0c, 0x79, 0x1c, 0xfa, 0xe3, 0x2e,
    -	0xfd, 0x90, 0x0e, 0x68, 0xd7, 0x0f, 0x21, 0x06, 0x41, 0x15, 0xf4, 0x71, 0x2a, 0x12, 0x95, 0x38,
    -	0x6e, 0xce, 0xc7, 0x34, 0xe5, 0xb8, 0xe2, 0xe3, 0x09, 0x7f, 0x7d, 0x33, 0xe4, 0x6a, 0x30, 0x3a,
    -	0xc2, 0x2c, 0x89, 0xfc, 0x30, 0x09, 0x13, 0xdf, 0xc8, 0x8e, 0x46, 0xc7, 0xa6, 0x32, 0x85, 0xf9,
    -	0xca, 0xed, 0xd6, 0x9f, 0x54, 0xdb, 0x47, 0x94, 0x0d, 0x78, 0x0c, 0xe2, 0xb3, 0x9f, 0x0e, 0x43,
    -	0x0d, 0x48, 0x3f, 0x02, 0x45, 0xfd, 0xf1, 0x5c, 0x13, 0xeb, 0xfe, 0x55, 0x2a, 0x31, 0x8a, 0x15,
    -	0x8f, 0x60, 0x4e, 0xf0, 0xf4, 0x26, 0x81, 0x64, 0x03, 0x88, 0xe8, 0x65, 0x9d, 0xf7, 0xd3, 0x42,
    -	0xf6, 0xce, 0xfe, 0xf3, 0x7e, 0x5f, 0x80, 0x94, 0xce, 0x3b, 0xb4, 0xac, 0x3b, 0xea, 0x53, 0x45,
    -	0x5b, 0x56, 0xc7, 0xda, 0x68, 0xf6, 0x1e, 0xe3, 0x6a, 0x1c, 0xa5, 0x31, 0x4e, 0x87, 0xa1, 0x06,
    -	0x24, 0xd6, 0x6c, 0x3c, 0xee, 0xe2, 0xbd, 0xa3, 0xf7, 0xc0, 0xd4, 0x2b, 0x50, 0x34, 0x70, 0x4e,
    -	0xce, 0xdb, 0xb5, 0xec, 0xbc, 0x8d, 0x2a, 0x8c, 0x94, 0xae, 0xce, 0x1e, 0xaa, 0xcb, 0x14, 0x58,
    -	0x6b, 0xc1, 0xb8, 0x6f, 0xe2, 0xeb, 0x87, 0x8d, 0xcb, 0xd6, 0x0e, 0x52, 0x60, 0xc1, 0x3f, 0x85,
    -	0x75, 0x5d, 0x57, 0xc4, 0x18, 0x79, 0x3f, 0x2c, 0xb4, 0x52, 0xb2, 0x5e, 0x72, 0xa9, 0x9c, 0xc3,
    -	0xb9, 0x10, 0xf8, 0x76, 0x21, 0xb4, 0xda, 0x44, 0xf8, 0xaf, 0xd8, 0x67, 0x79, 0x82, 0x4c, 0x05,
    -	0xd8, 0x45, 0x0d, 0xae, 0x20, 0x92, 0xad, 0x85, 0xce, 0xe2, 0x46, 0xb3, 0xf7, 0xe0, 0xd6, 0x09,
    -	0x82, 0x95, 0xc2, 0xb5, 0xb1, 0xa3, 0xf5, 0x24, 0xb7, 0xf1, 0xa2, 0xa9, 0xf6, 0x75, 0x2c, 0xe7,
    -	0x10, 0xd9, 0x29, 0x15, 0x10, 0x2b, 0x02, 0xc7, 0x45, 0xff, 0xfe, 0x4d, 0x9b, 0xec, 0x4f, 0x04,
    -	0x20, 0x20, 0x66, 0x10, 0xac, 0x64, 0xe7, 0x6d, 0xbb, 0x04, 0x49, 0x65, 0xe8, 0x7d, 0xb7, 0xd0,
    -	0xea, 0x25, 0xb6, 0xf3, 0x3f, 0x6a, 0x84, 0x22, 0x19, 0xa5, 0x66, 0x37, 0xbb, 0xea, 0xf3, 0x85,
    -	0x06, 0x49, 0xbe, 0xe6, 0x3c, 0x42, 0xcb, 0x02, 0x64, 0x32, 0x12, 0x0c, 0xcc, 0xe1, 0xd9, 0xd5,
    -	0x94, 0x48, 0x81, 0x93, 0x92, 0xe1, 0xf8, 0xc8, 0x8e, 0x69, 0x04, 0x32, 0xa5, 0x0c, 0x5a, 0x8b,
    -	0x86, 0xbe, 0x56, 0xd0, 0xed, 0xdd, 0xc9, 0x02, 0xa9, 0x38, 0x4e, 0x07, 0xd5, 0x75, 0xd1, 0xaa,
    -	0x1b, 0x6e, 0x79, 0xd0, 0x9a, 0x4b, 0xcc, 0x8a, 0xf7, 0x6d, 0x01, 0x35, 0x0f, 0x40, 0x8c, 0x39,
    -	0x83, 0xad, 0x9d, 0x6d, 0x72, 0x0f, 0x77, 0xf5, 0xf5, 0xcc, 0x5d, 0xbd, 0xf1, 0x10, 0xa6, 0x9a,
    -	0xbb, 0xea, 0xb6, 0x3a, 0x6f, 0xd0, 0x92, 0x54, 0x54, 0x8d, 0xa4, 0x19, 0x4a, 0xb3, 0xd7, 0xbd,
    -	0x8b, 0xa9, 0x11, 0x06, 0xff, 0x16, 0xb6, 0x4b, 0x79, 0x4d, 0x0a, 0x43, 0xef, 0x97, 0x85, 0x56,
    -	0xa7, 0xd8, 0xf7, 0xf0, 0x14, 0xf6, 0x67, 0x9f, 0xc2, 0xc3, 0x3b, 0x64, 0xb9, 0xe2, 0x31, 0xf4,
    -	0x66, 0x22, 0x98, 0xe7, 0xd0, 0x46, 0x0d, 0xc6, 0xfb, 0x42, 0xb6, 0xac, 0xce, 0xe2, 0x86, 0x1d,
    -	0xd8, 0x5a, 0xa3, 0x17, 0x25, 0xc9, 0x71, 0xef, 0x13, 0x5a, 0x9b, 0x1b, 0x92, 0xc3, 0x10, 0x62,
    -	0x49, 0xdc, 0xe7, 0x8a, 0x27, 0x71, 0x2e, 0x9d, 0x3d, 0xc0, 0x6b, 0xa2, 0x6f, 0x4d, 0x74, 0xd5,
    -	0xed, 0x28, 0x21, 0x49, 0xa6, 0x6c, 0x83, 0xed, 0x93, 0x0b, 0xb7, 0x76, 0x7a, 0xe1, 0xd6, 0xce,
    -	0x2e, 0xdc, 0xda, 0x97, 0xcc, 0xb5, 0x4e, 0x32, 0xd7, 0x3a, 0xcd, 0x5c, 0xeb, 0x2c, 0x73, 0xad,
    -	0xdf, 0x99, 0x6b, 0x7d, 0xfd, 0xe3, 0xd6, 0xde, 0xba, 0xd7, 0xff, 0x7f, 0xfe, 0x06, 0x00, 0x00,
    -	0xff, 0xff, 0xb1, 0xd0, 0x33, 0x02, 0xa0, 0x06, 0x00, 0x00,
    -}
    -
    -func (m *IPAddress) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *IPAddress) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *IPAddress) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	{
    -		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0x12
    -	{
    -		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *IPAddressList) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *IPAddressList) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *IPAddressList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if len(m.Items) > 0 {
    -		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x12
    -		}
    -	}
    -	{
    -		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *IPAddressSpec) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *IPAddressSpec) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *IPAddressSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if m.ParentRef != nil {
    -		{
    -			size, err := m.ParentRef.MarshalToSizedBuffer(dAtA[:i])
    -			if err != nil {
    -				return 0, err
    -			}
    -			i -= size
    -			i = encodeVarintGenerated(dAtA, i, uint64(size))
    -		}
    -		i--
    -		dAtA[i] = 0xa
    -	}
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ParentReference) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ParentReference) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ParentReference) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	i -= len(m.Name)
    -	copy(dAtA[i:], m.Name)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    -	i--
    -	dAtA[i] = 0x22
    -	i -= len(m.Namespace)
    -	copy(dAtA[i:], m.Namespace)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace)))
    -	i--
    -	dAtA[i] = 0x1a
    -	i -= len(m.Resource)
    -	copy(dAtA[i:], m.Resource)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource)))
    -	i--
    -	dAtA[i] = 0x12
    -	i -= len(m.Group)
    -	copy(dAtA[i:], m.Group)
    -	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Group)))
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ServiceCIDR) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ServiceCIDR) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ServiceCIDR) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	{
    -		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0x1a
    -	{
    -		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0x12
    -	{
    -		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ServiceCIDRList) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ServiceCIDRList) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ServiceCIDRList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if len(m.Items) > 0 {
    -		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0x12
    -		}
    -	}
    -	{
    -		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    -		if err != nil {
    -			return 0, err
    -		}
    -		i -= size
    -		i = encodeVarintGenerated(dAtA, i, uint64(size))
    -	}
    -	i--
    -	dAtA[i] = 0xa
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ServiceCIDRSpec) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ServiceCIDRSpec) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ServiceCIDRSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if len(m.CIDRs) > 0 {
    -		for iNdEx := len(m.CIDRs) - 1; iNdEx >= 0; iNdEx-- {
    -			i -= len(m.CIDRs[iNdEx])
    -			copy(dAtA[i:], m.CIDRs[iNdEx])
    -			i = encodeVarintGenerated(dAtA, i, uint64(len(m.CIDRs[iNdEx])))
    -			i--
    -			dAtA[i] = 0xa
    -		}
    -	}
    -	return len(dAtA) - i, nil
    -}
    -
    -func (m *ServiceCIDRStatus) Marshal() (dAtA []byte, err error) {
    -	size := m.Size()
    -	dAtA = make([]byte, size)
    -	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    -	if err != nil {
    -		return nil, err
    -	}
    -	return dAtA[:n], nil
    -}
    -
    -func (m *ServiceCIDRStatus) MarshalTo(dAtA []byte) (int, error) {
    -	size := m.Size()
    -	return m.MarshalToSizedBuffer(dAtA[:size])
    -}
    -
    -func (m *ServiceCIDRStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    -	i := len(dAtA)
    -	_ = i
    -	var l int
    -	_ = l
    -	if len(m.Conditions) > 0 {
    -		for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
    -			{
    -				size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    -				if err != nil {
    -					return 0, err
    -				}
    -				i -= size
    -				i = encodeVarintGenerated(dAtA, i, uint64(size))
    -			}
    -			i--
    -			dAtA[i] = 0xa
    -		}
    -	}
    -	return len(dAtA) - i, nil
    -}
    -
    -func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    -	offset -= sovGenerated(v)
    -	base := offset
    -	for v >= 1<<7 {
    -		dAtA[offset] = uint8(v&0x7f | 0x80)
    -		v >>= 7
    -		offset++
    -	}
    -	dAtA[offset] = uint8(v)
    -	return base
    -}
    -func (m *IPAddress) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ObjectMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Spec.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    -}
    -
    -func (m *IPAddressList) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ListMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if len(m.Items) > 0 {
    -		for _, e := range m.Items {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	return n
    -}
    -
    -func (m *IPAddressSpec) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	if m.ParentRef != nil {
    -		l = m.ParentRef.Size()
    -		n += 1 + l + sovGenerated(uint64(l))
    -	}
    -	return n
    -}
    -
    -func (m *ParentReference) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = len(m.Group)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Resource)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Namespace)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = len(m.Name)
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    -}
    -
    -func (m *ServiceCIDR) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ObjectMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Spec.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	l = m.Status.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	return n
    -}
    -
    -func (m *ServiceCIDRList) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	l = m.ListMeta.Size()
    -	n += 1 + l + sovGenerated(uint64(l))
    -	if len(m.Items) > 0 {
    -		for _, e := range m.Items {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	return n
    -}
    -
    -func (m *ServiceCIDRSpec) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	if len(m.CIDRs) > 0 {
    -		for _, s := range m.CIDRs {
    -			l = len(s)
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	return n
    -}
    -
    -func (m *ServiceCIDRStatus) Size() (n int) {
    -	if m == nil {
    -		return 0
    -	}
    -	var l int
    -	_ = l
    -	if len(m.Conditions) > 0 {
    -		for _, e := range m.Conditions {
    -			l = e.Size()
    -			n += 1 + l + sovGenerated(uint64(l))
    -		}
    -	}
    -	return n
    -}
    -
    -func sovGenerated(x uint64) (n int) {
    -	return (math_bits.Len64(x|1) + 6) / 7
    -}
    -func sozGenerated(x uint64) (n int) {
    -	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    -}
    -func (this *IPAddress) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&IPAddress{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "IPAddressSpec", "IPAddressSpec", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *IPAddressList) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	repeatedStringForItems := "[]IPAddress{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "IPAddress", "IPAddress", 1), `&`, ``, 1) + ","
    -	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&IPAddressList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *IPAddressSpec) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&IPAddressSpec{`,
    -		`ParentRef:` + strings.Replace(this.ParentRef.String(), "ParentReference", "ParentReference", 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ParentReference) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ParentReference{`,
    -		`Group:` + fmt.Sprintf("%v", this.Group) + `,`,
    -		`Resource:` + fmt.Sprintf("%v", this.Resource) + `,`,
    -		`Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`,
    -		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ServiceCIDR) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ServiceCIDR{`,
    -		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    -		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ServiceCIDRSpec", "ServiceCIDRSpec", 1), `&`, ``, 1) + `,`,
    -		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "ServiceCIDRStatus", "ServiceCIDRStatus", 1), `&`, ``, 1) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ServiceCIDRList) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	repeatedStringForItems := "[]ServiceCIDR{"
    -	for _, f := range this.Items {
    -		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ServiceCIDR", "ServiceCIDR", 1), `&`, ``, 1) + ","
    -	}
    -	repeatedStringForItems += "}"
    -	s := strings.Join([]string{`&ServiceCIDRList{`,
    -		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    -		`Items:` + repeatedStringForItems + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ServiceCIDRSpec) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	s := strings.Join([]string{`&ServiceCIDRSpec{`,
    -		`CIDRs:` + fmt.Sprintf("%v", this.CIDRs) + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func (this *ServiceCIDRStatus) String() string {
    -	if this == nil {
    -		return "nil"
    -	}
    -	repeatedStringForConditions := "[]Condition{"
    -	for _, f := range this.Conditions {
    -		repeatedStringForConditions += fmt.Sprintf("%v", f) + ","
    -	}
    -	repeatedStringForConditions += "}"
    -	s := strings.Join([]string{`&ServiceCIDRStatus{`,
    -		`Conditions:` + repeatedStringForConditions + `,`,
    -		`}`,
    -	}, "")
    -	return s
    -}
    -func valueToStringGenerated(v interface{}) string {
    -	rv := reflect.ValueOf(v)
    -	if rv.IsNil() {
    -		return "nil"
    -	}
    -	pv := reflect.Indirect(rv).Interface()
    -	return fmt.Sprintf("*%v", pv)
    -}
    -func (m *IPAddress) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: IPAddress: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IPAddress: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *IPAddressList) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: IPAddressList: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IPAddressList: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Items = append(m.Items, IPAddress{})
    -			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *IPAddressSpec) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: IPAddressSpec: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: IPAddressSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ParentRef", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if m.ParentRef == nil {
    -				m.ParentRef = &ParentReference{}
    -			}
    -			if err := m.ParentRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ParentReference) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ParentReference: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ParentReference: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Group = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Resource = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Namespace = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		case 4:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Name = string(dAtA[iNdEx:postIndex])
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ServiceCIDR) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ServiceCIDR: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ServiceCIDR: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 3:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ServiceCIDRList) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ServiceCIDRList: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ServiceCIDRList: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		case 2:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Items = append(m.Items, ServiceCIDR{})
    -			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ServiceCIDRSpec) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ServiceCIDRSpec: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ServiceCIDRSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field CIDRs", wireType)
    -			}
    -			var stringLen uint64
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				stringLen |= uint64(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			intStringLen := int(stringLen)
    -			if intStringLen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + intStringLen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.CIDRs = append(m.CIDRs, string(dAtA[iNdEx:postIndex]))
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func (m *ServiceCIDRStatus) Unmarshal(dAtA []byte) error {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	for iNdEx < l {
    -		preIndex := iNdEx
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= uint64(b&0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		fieldNum := int32(wire >> 3)
    -		wireType := int(wire & 0x7)
    -		if wireType == 4 {
    -			return fmt.Errorf("proto: ServiceCIDRStatus: wiretype end group for non-group")
    -		}
    -		if fieldNum <= 0 {
    -			return fmt.Errorf("proto: ServiceCIDRStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    -		}
    -		switch fieldNum {
    -		case 1:
    -			if wireType != 2 {
    -				return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
    -			}
    -			var msglen int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				msglen |= int(b&0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if msglen < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			postIndex := iNdEx + msglen
    -			if postIndex < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if postIndex > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			m.Conditions = append(m.Conditions, v1.Condition{})
    -			if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    -				return err
    -			}
    -			iNdEx = postIndex
    -		default:
    -			iNdEx = preIndex
    -			skippy, err := skipGenerated(dAtA[iNdEx:])
    -			if err != nil {
    -				return err
    -			}
    -			if (skippy < 0) || (iNdEx+skippy) < 0 {
    -				return ErrInvalidLengthGenerated
    -			}
    -			if (iNdEx + skippy) > l {
    -				return io.ErrUnexpectedEOF
    -			}
    -			iNdEx += skippy
    -		}
    -	}
    -
    -	if iNdEx > l {
    -		return io.ErrUnexpectedEOF
    -	}
    -	return nil
    -}
    -func skipGenerated(dAtA []byte) (n int, err error) {
    -	l := len(dAtA)
    -	iNdEx := 0
    -	depth := 0
    -	for iNdEx < l {
    -		var wire uint64
    -		for shift := uint(0); ; shift += 7 {
    -			if shift >= 64 {
    -				return 0, ErrIntOverflowGenerated
    -			}
    -			if iNdEx >= l {
    -				return 0, io.ErrUnexpectedEOF
    -			}
    -			b := dAtA[iNdEx]
    -			iNdEx++
    -			wire |= (uint64(b) & 0x7F) << shift
    -			if b < 0x80 {
    -				break
    -			}
    -		}
    -		wireType := int(wire & 0x7)
    -		switch wireType {
    -		case 0:
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return 0, ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return 0, io.ErrUnexpectedEOF
    -				}
    -				iNdEx++
    -				if dAtA[iNdEx-1] < 0x80 {
    -					break
    -				}
    -			}
    -		case 1:
    -			iNdEx += 8
    -		case 2:
    -			var length int
    -			for shift := uint(0); ; shift += 7 {
    -				if shift >= 64 {
    -					return 0, ErrIntOverflowGenerated
    -				}
    -				if iNdEx >= l {
    -					return 0, io.ErrUnexpectedEOF
    -				}
    -				b := dAtA[iNdEx]
    -				iNdEx++
    -				length |= (int(b) & 0x7F) << shift
    -				if b < 0x80 {
    -					break
    -				}
    -			}
    -			if length < 0 {
    -				return 0, ErrInvalidLengthGenerated
    -			}
    -			iNdEx += length
    -		case 3:
    -			depth++
    -		case 4:
    -			if depth == 0 {
    -				return 0, ErrUnexpectedEndOfGroupGenerated
    -			}
    -			depth--
    -		case 5:
    -			iNdEx += 4
    -		default:
    -			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
    -		}
    -		if iNdEx < 0 {
    -			return 0, ErrInvalidLengthGenerated
    -		}
    -		if depth == 0 {
    -			return iNdEx, nil
    -		}
    -	}
    -	return 0, io.ErrUnexpectedEOF
    -}
    -
    -var (
    -	ErrInvalidLengthGenerated        = fmt.Errorf("proto: negative length found during unmarshaling")
    -	ErrIntOverflowGenerated          = fmt.Errorf("proto: integer overflow")
    -	ErrUnexpectedEndOfGroupGenerated = fmt.Errorf("proto: unexpected end of group")
    -)
    diff --git a/vendor/k8s.io/api/networking/v1alpha1/generated.proto b/vendor/k8s.io/api/networking/v1alpha1/generated.proto
    deleted file mode 100644
    index 80ec6af735..0000000000
    --- a/vendor/k8s.io/api/networking/v1alpha1/generated.proto
    +++ /dev/null
    @@ -1,142 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -
    -// This file was autogenerated by go-to-protobuf. Do not edit it manually!
    -
    -syntax = "proto2";
    -
    -package k8s.io.api.networking.v1alpha1;
    -
    -import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
    -import "k8s.io/apimachinery/pkg/runtime/generated.proto";
    -import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    -
    -// Package-wide variables from generator "generated".
    -option go_package = "k8s.io/api/networking/v1alpha1";
    -
    -// IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs
    -// that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses.
    -// An IP address can be represented in different formats, to guarantee the uniqueness of the IP,
    -// the name of the object is the IP address in canonical format, four decimal digits separated
    -// by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6.
    -// Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1
    -// Invalid: 10.01.2.3 or 2001:db8:0:0:0::1
    -message IPAddress {
    -  // Standard object's metadata.
    -  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    -  // +optional
    -  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    -
    -  // spec is the desired state of the IPAddress.
    -  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    -  // +optional
    -  optional IPAddressSpec spec = 2;
    -}
    -
    -// IPAddressList contains a list of IPAddress.
    -message IPAddressList {
    -  // Standard object's metadata.
    -  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    -  // +optional
    -  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    -
    -  // items is the list of IPAddresses.
    -  repeated IPAddress items = 2;
    -}
    -
    -// IPAddressSpec describe the attributes in an IP Address.
    -message IPAddressSpec {
    -  // ParentRef references the resource that an IPAddress is attached to.
    -  // An IPAddress must reference a parent object.
    -  // +required
    -  optional ParentReference parentRef = 1;
    -}
    -
    -// ParentReference describes a reference to a parent object.
    -message ParentReference {
    -  // Group is the group of the object being referenced.
    -  // +optional
    -  optional string group = 1;
    -
    -  // Resource is the resource of the object being referenced.
    -  // +required
    -  optional string resource = 2;
    -
    -  // Namespace is the namespace of the object being referenced.
    -  // +optional
    -  optional string namespace = 3;
    -
    -  // Name is the name of the object being referenced.
    -  // +required
    -  optional string name = 4;
    -}
    -
    -// ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64).
    -// This range is used to allocate ClusterIPs to Service objects.
    -message ServiceCIDR {
    -  // Standard object's metadata.
    -  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    -  // +optional
    -  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
    -
    -  // spec is the desired state of the ServiceCIDR.
    -  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    -  // +optional
    -  optional ServiceCIDRSpec spec = 2;
    -
    -  // status represents the current state of the ServiceCIDR.
    -  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    -  // +optional
    -  optional ServiceCIDRStatus status = 3;
    -}
    -
    -// ServiceCIDRList contains a list of ServiceCIDR objects.
    -message ServiceCIDRList {
    -  // Standard object's metadata.
    -  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    -  // +optional
    -  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
    -
    -  // items is the list of ServiceCIDRs.
    -  repeated ServiceCIDR items = 2;
    -}
    -
    -// ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services.
    -message ServiceCIDRSpec {
    -  // CIDRs defines the IP blocks in CIDR notation (e.g. "192.168.0.0/24" or "2001:db8::/64")
    -  // from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family.
    -  // The network address of each CIDR, the address that identifies the subnet of a host, is reserved
    -  // and will not be allocated. The broadcast address for IPv4 CIDRs is also reserved and will not be
    -  // allocated.
    -  // This field is immutable.
    -  // +optional
    -  // +listType=atomic
    -  repeated string cidrs = 1;
    -}
    -
    -// ServiceCIDRStatus describes the current state of the ServiceCIDR.
    -message ServiceCIDRStatus {
    -  // conditions holds an array of metav1.Condition that describe the state of the ServiceCIDR.
    -  // Current service state
    -  // +optional
    -  // +patchMergeKey=type
    -  // +patchStrategy=merge
    -  // +listType=map
    -  // +listMapKey=type
    -  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 1;
    -}
    -
    diff --git a/vendor/k8s.io/api/networking/v1alpha1/types.go b/vendor/k8s.io/api/networking/v1alpha1/types.go
    deleted file mode 100644
    index 0e454f0263..0000000000
    --- a/vendor/k8s.io/api/networking/v1alpha1/types.go
    +++ /dev/null
    @@ -1,154 +0,0 @@
    -/*
    -Copyright 2022 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -package v1alpha1
    -
    -import (
    -	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -)
    -
    -// +genclient
    -// +genclient:nonNamespaced
    -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    -// +k8s:prerelease-lifecycle-gen:introduced=1.27
    -
    -// IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs
    -// that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses.
    -// An IP address can be represented in different formats, to guarantee the uniqueness of the IP,
    -// the name of the object is the IP address in canonical format, four decimal digits separated
    -// by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6.
    -// Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1
    -// Invalid: 10.01.2.3 or 2001:db8:0:0:0::1
    -type IPAddress struct {
    -	metav1.TypeMeta `json:",inline"`
    -	// Standard object's metadata.
    -	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    -	// +optional
    -	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -	// spec is the desired state of the IPAddress.
    -	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    -	// +optional
    -	Spec IPAddressSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
    -}
    -
    -// IPAddressSpec describe the attributes in an IP Address.
    -type IPAddressSpec struct {
    -	// ParentRef references the resource that an IPAddress is attached to.
    -	// An IPAddress must reference a parent object.
    -	// +required
    -	ParentRef *ParentReference `json:"parentRef,omitempty" protobuf:"bytes,1,opt,name=parentRef"`
    -}
    -
    -// ParentReference describes a reference to a parent object.
    -type ParentReference struct {
    -	// Group is the group of the object being referenced.
    -	// +optional
    -	Group string `json:"group,omitempty" protobuf:"bytes,1,opt,name=group"`
    -	// Resource is the resource of the object being referenced.
    -	// +required
    -	Resource string `json:"resource,omitempty" protobuf:"bytes,2,opt,name=resource"`
    -	// Namespace is the namespace of the object being referenced.
    -	// +optional
    -	Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"`
    -	// Name is the name of the object being referenced.
    -	// +required
    -	Name string `json:"name,omitempty" protobuf:"bytes,4,opt,name=name"`
    -}
    -
    -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    -// +k8s:prerelease-lifecycle-gen:introduced=1.27
    -
    -// IPAddressList contains a list of IPAddress.
    -type IPAddressList struct {
    -	metav1.TypeMeta `json:",inline"`
    -	// Standard object's metadata.
    -	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    -	// +optional
    -	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -	// items is the list of IPAddresses.
    -	Items []IPAddress `json:"items" protobuf:"bytes,2,rep,name=items"`
    -}
    -
    -// +genclient
    -// +genclient:nonNamespaced
    -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    -// +k8s:prerelease-lifecycle-gen:introduced=1.27
    -
    -// ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64).
    -// This range is used to allocate ClusterIPs to Service objects.
    -type ServiceCIDR struct {
    -	metav1.TypeMeta `json:",inline"`
    -	// Standard object's metadata.
    -	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    -	// +optional
    -	metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -	// spec is the desired state of the ServiceCIDR.
    -	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    -	// +optional
    -	Spec ServiceCIDRSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
    -	// status represents the current state of the ServiceCIDR.
    -	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    -	// +optional
    -	Status ServiceCIDRStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
    -}
    -
    -// ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services.
    -type ServiceCIDRSpec struct {
    -	// CIDRs defines the IP blocks in CIDR notation (e.g. "192.168.0.0/24" or "2001:db8::/64")
    -	// from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family.
    -	// The network address of each CIDR, the address that identifies the subnet of a host, is reserved
    -	// and will not be allocated. The broadcast address for IPv4 CIDRs is also reserved and will not be
    -	// allocated.
    -	// This field is immutable.
    -	// +optional
    -	// +listType=atomic
    -	CIDRs []string `json:"cidrs,omitempty" protobuf:"bytes,1,opt,name=cidrs"`
    -}
    -
    -const (
    -	// ServiceCIDRConditionReady represents status of a ServiceCIDR that is ready to be used by the
    -	// apiserver to allocate ClusterIPs for Services.
    -	ServiceCIDRConditionReady = "Ready"
    -	// ServiceCIDRReasonTerminating represents a reason where a ServiceCIDR is not ready because it is
    -	// being deleted.
    -	ServiceCIDRReasonTerminating = "Terminating"
    -)
    -
    -// ServiceCIDRStatus describes the current state of the ServiceCIDR.
    -type ServiceCIDRStatus struct {
    -	// conditions holds an array of metav1.Condition that describe the state of the ServiceCIDR.
    -	// Current service state
    -	// +optional
    -	// +patchMergeKey=type
    -	// +patchStrategy=merge
    -	// +listType=map
    -	// +listMapKey=type
    -	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
    -}
    -
    -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
    -// +k8s:prerelease-lifecycle-gen:introduced=1.27
    -
    -// ServiceCIDRList contains a list of ServiceCIDR objects.
    -type ServiceCIDRList struct {
    -	metav1.TypeMeta `json:",inline"`
    -	// Standard object's metadata.
    -	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    -	// +optional
    -	metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
    -	// items is the list of ServiceCIDRs.
    -	Items []ServiceCIDR `json:"items" protobuf:"bytes,2,rep,name=items"`
    -}
    diff --git a/vendor/k8s.io/api/networking/v1alpha1/types_swagger_doc_generated.go b/vendor/k8s.io/api/networking/v1alpha1/types_swagger_doc_generated.go
    deleted file mode 100644
    index 4c8eb57a7a..0000000000
    --- a/vendor/k8s.io/api/networking/v1alpha1/types_swagger_doc_generated.go
    +++ /dev/null
    @@ -1,110 +0,0 @@
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -package v1alpha1
    -
    -// This file contains a collection of methods that can be used from go-restful to
    -// generate Swagger API documentation for its models. Please read this PR for more
    -// information on the implementation: https://github.com/emicklei/go-restful/pull/215
    -//
    -// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if
    -// they are on one line! For multiple line or blocks that you want to ignore use ---.
    -// Any context after a --- is ignored.
    -//
    -// Those methods can be generated by using hack/update-codegen.sh
    -
    -// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
    -var map_IPAddress = map[string]string{
    -	"":         "IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1",
    -	"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    -	"spec":     "spec is the desired state of the IPAddress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
    -}
    -
    -func (IPAddress) SwaggerDoc() map[string]string {
    -	return map_IPAddress
    -}
    -
    -var map_IPAddressList = map[string]string{
    -	"":         "IPAddressList contains a list of IPAddress.",
    -	"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    -	"items":    "items is the list of IPAddresses.",
    -}
    -
    -func (IPAddressList) SwaggerDoc() map[string]string {
    -	return map_IPAddressList
    -}
    -
    -var map_IPAddressSpec = map[string]string{
    -	"":          "IPAddressSpec describe the attributes in an IP Address.",
    -	"parentRef": "ParentRef references the resource that an IPAddress is attached to. An IPAddress must reference a parent object.",
    -}
    -
    -func (IPAddressSpec) SwaggerDoc() map[string]string {
    -	return map_IPAddressSpec
    -}
    -
    -var map_ParentReference = map[string]string{
    -	"":          "ParentReference describes a reference to a parent object.",
    -	"group":     "Group is the group of the object being referenced.",
    -	"resource":  "Resource is the resource of the object being referenced.",
    -	"namespace": "Namespace is the namespace of the object being referenced.",
    -	"name":      "Name is the name of the object being referenced.",
    -}
    -
    -func (ParentReference) SwaggerDoc() map[string]string {
    -	return map_ParentReference
    -}
    -
    -var map_ServiceCIDR = map[string]string{
    -	"":         "ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64). This range is used to allocate ClusterIPs to Service objects.",
    -	"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    -	"spec":     "spec is the desired state of the ServiceCIDR. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
    -	"status":   "status represents the current state of the ServiceCIDR. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
    -}
    -
    -func (ServiceCIDR) SwaggerDoc() map[string]string {
    -	return map_ServiceCIDR
    -}
    -
    -var map_ServiceCIDRList = map[string]string{
    -	"":         "ServiceCIDRList contains a list of ServiceCIDR objects.",
    -	"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
    -	"items":    "items is the list of ServiceCIDRs.",
    -}
    -
    -func (ServiceCIDRList) SwaggerDoc() map[string]string {
    -	return map_ServiceCIDRList
    -}
    -
    -var map_ServiceCIDRSpec = map[string]string{
    -	"":      "ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services.",
    -	"cidrs": "CIDRs defines the IP blocks in CIDR notation (e.g. \"192.168.0.0/24\" or \"2001:db8::/64\") from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family. The network address of each CIDR, the address that identifies the subnet of a host, is reserved and will not be allocated. The broadcast address for IPv4 CIDRs is also reserved and will not be allocated. This field is immutable.",
    -}
    -
    -func (ServiceCIDRSpec) SwaggerDoc() map[string]string {
    -	return map_ServiceCIDRSpec
    -}
    -
    -var map_ServiceCIDRStatus = map[string]string{
    -	"":           "ServiceCIDRStatus describes the current state of the ServiceCIDR.",
    -	"conditions": "conditions holds an array of metav1.Condition that describe the state of the ServiceCIDR. Current service state",
    -}
    -
    -func (ServiceCIDRStatus) SwaggerDoc() map[string]string {
    -	return map_ServiceCIDRStatus
    -}
    -
    -// AUTO-GENERATED FUNCTIONS END HERE
    diff --git a/vendor/k8s.io/api/networking/v1alpha1/well_known_labels.go b/vendor/k8s.io/api/networking/v1alpha1/well_known_labels.go
    deleted file mode 100644
    index 5f9c23f708..0000000000
    --- a/vendor/k8s.io/api/networking/v1alpha1/well_known_labels.go
    +++ /dev/null
    @@ -1,33 +0,0 @@
    -/*
    -Copyright 2023 The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -package v1alpha1
    -
    -const (
    -
    -	// TODO: Use IPFamily as field with a field selector,And the value is set based on
    -	// the name at create time and immutable.
    -	// LabelIPAddressFamily is used to indicate the IP family of a Kubernetes IPAddress.
    -	// This label simplify dual-stack client operations allowing to obtain the list of
    -	// IP addresses filtered by family.
    -	LabelIPAddressFamily = "ipaddress.kubernetes.io/ip-family"
    -	// LabelManagedBy is used to indicate the controller or entity that manages
    -	// an IPAddress. This label aims to enable different IPAddress
    -	// objects to be managed by different controllers or entities within the
    -	// same cluster. It is highly recommended to configure this label for all
    -	// IPAddress objects.
    -	LabelManagedBy = "ipaddress.kubernetes.io/managed-by"
    -)
    diff --git a/vendor/k8s.io/api/networking/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/networking/v1alpha1/zz_generated.deepcopy.go
    deleted file mode 100644
    index 5c8f697ba3..0000000000
    --- a/vendor/k8s.io/api/networking/v1alpha1/zz_generated.deepcopy.go
    +++ /dev/null
    @@ -1,229 +0,0 @@
    -//go:build !ignore_autogenerated
    -// +build !ignore_autogenerated
    -
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by deepcopy-gen. DO NOT EDIT.
    -
    -package v1alpha1
    -
    -import (
    -	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    -	runtime "k8s.io/apimachinery/pkg/runtime"
    -)
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *IPAddress) DeepCopyInto(out *IPAddress) {
    -	*out = *in
    -	out.TypeMeta = in.TypeMeta
    -	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    -	in.Spec.DeepCopyInto(&out.Spec)
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAddress.
    -func (in *IPAddress) DeepCopy() *IPAddress {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(IPAddress)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *IPAddress) DeepCopyObject() runtime.Object {
    -	if c := in.DeepCopy(); c != nil {
    -		return c
    -	}
    -	return nil
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *IPAddressList) DeepCopyInto(out *IPAddressList) {
    -	*out = *in
    -	out.TypeMeta = in.TypeMeta
    -	in.ListMeta.DeepCopyInto(&out.ListMeta)
    -	if in.Items != nil {
    -		in, out := &in.Items, &out.Items
    -		*out = make([]IPAddress, len(*in))
    -		for i := range *in {
    -			(*in)[i].DeepCopyInto(&(*out)[i])
    -		}
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAddressList.
    -func (in *IPAddressList) DeepCopy() *IPAddressList {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(IPAddressList)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *IPAddressList) DeepCopyObject() runtime.Object {
    -	if c := in.DeepCopy(); c != nil {
    -		return c
    -	}
    -	return nil
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *IPAddressSpec) DeepCopyInto(out *IPAddressSpec) {
    -	*out = *in
    -	if in.ParentRef != nil {
    -		in, out := &in.ParentRef, &out.ParentRef
    -		*out = new(ParentReference)
    -		**out = **in
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPAddressSpec.
    -func (in *IPAddressSpec) DeepCopy() *IPAddressSpec {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(IPAddressSpec)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ParentReference) DeepCopyInto(out *ParentReference) {
    -	*out = *in
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParentReference.
    -func (in *ParentReference) DeepCopy() *ParentReference {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ParentReference)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ServiceCIDR) DeepCopyInto(out *ServiceCIDR) {
    -	*out = *in
    -	out.TypeMeta = in.TypeMeta
    -	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
    -	in.Spec.DeepCopyInto(&out.Spec)
    -	in.Status.DeepCopyInto(&out.Status)
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceCIDR.
    -func (in *ServiceCIDR) DeepCopy() *ServiceCIDR {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ServiceCIDR)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *ServiceCIDR) DeepCopyObject() runtime.Object {
    -	if c := in.DeepCopy(); c != nil {
    -		return c
    -	}
    -	return nil
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ServiceCIDRList) DeepCopyInto(out *ServiceCIDRList) {
    -	*out = *in
    -	out.TypeMeta = in.TypeMeta
    -	in.ListMeta.DeepCopyInto(&out.ListMeta)
    -	if in.Items != nil {
    -		in, out := &in.Items, &out.Items
    -		*out = make([]ServiceCIDR, len(*in))
    -		for i := range *in {
    -			(*in)[i].DeepCopyInto(&(*out)[i])
    -		}
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceCIDRList.
    -func (in *ServiceCIDRList) DeepCopy() *ServiceCIDRList {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ServiceCIDRList)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
    -func (in *ServiceCIDRList) DeepCopyObject() runtime.Object {
    -	if c := in.DeepCopy(); c != nil {
    -		return c
    -	}
    -	return nil
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ServiceCIDRSpec) DeepCopyInto(out *ServiceCIDRSpec) {
    -	*out = *in
    -	if in.CIDRs != nil {
    -		in, out := &in.CIDRs, &out.CIDRs
    -		*out = make([]string, len(*in))
    -		copy(*out, *in)
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceCIDRSpec.
    -func (in *ServiceCIDRSpec) DeepCopy() *ServiceCIDRSpec {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ServiceCIDRSpec)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    -
    -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
    -func (in *ServiceCIDRStatus) DeepCopyInto(out *ServiceCIDRStatus) {
    -	*out = *in
    -	if in.Conditions != nil {
    -		in, out := &in.Conditions, &out.Conditions
    -		*out = make([]v1.Condition, len(*in))
    -		for i := range *in {
    -			(*in)[i].DeepCopyInto(&(*out)[i])
    -		}
    -	}
    -	return
    -}
    -
    -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceCIDRStatus.
    -func (in *ServiceCIDRStatus) DeepCopy() *ServiceCIDRStatus {
    -	if in == nil {
    -		return nil
    -	}
    -	out := new(ServiceCIDRStatus)
    -	in.DeepCopyInto(out)
    -	return out
    -}
    diff --git a/vendor/k8s.io/api/networking/v1alpha1/zz_generated.prerelease-lifecycle.go b/vendor/k8s.io/api/networking/v1alpha1/zz_generated.prerelease-lifecycle.go
    deleted file mode 100644
    index 714e7b6253..0000000000
    --- a/vendor/k8s.io/api/networking/v1alpha1/zz_generated.prerelease-lifecycle.go
    +++ /dev/null
    @@ -1,94 +0,0 @@
    -//go:build !ignore_autogenerated
    -// +build !ignore_autogenerated
    -
    -/*
    -Copyright The Kubernetes Authors.
    -
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    -    http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -*/
    -
    -// Code generated by prerelease-lifecycle-gen. DO NOT EDIT.
    -
    -package v1alpha1
    -
    -// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    -// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    -func (in *IPAddress) APILifecycleIntroduced() (major, minor int) {
    -	return 1, 27
    -}
    -
    -// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    -// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    -func (in *IPAddress) APILifecycleDeprecated() (major, minor int) {
    -	return 1, 30
    -}
    -
    -// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    -// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    -func (in *IPAddress) APILifecycleRemoved() (major, minor int) {
    -	return 1, 33
    -}
    -
    -// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    -// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    -func (in *IPAddressList) APILifecycleIntroduced() (major, minor int) {
    -	return 1, 27
    -}
    -
    -// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    -// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    -func (in *IPAddressList) APILifecycleDeprecated() (major, minor int) {
    -	return 1, 30
    -}
    -
    -// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    -// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    -func (in *IPAddressList) APILifecycleRemoved() (major, minor int) {
    -	return 1, 33
    -}
    -
    -// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    -// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    -func (in *ServiceCIDR) APILifecycleIntroduced() (major, minor int) {
    -	return 1, 27
    -}
    -
    -// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    -// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    -func (in *ServiceCIDR) APILifecycleDeprecated() (major, minor int) {
    -	return 1, 30
    -}
    -
    -// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    -// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    -func (in *ServiceCIDR) APILifecycleRemoved() (major, minor int) {
    -	return 1, 33
    -}
    -
    -// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison.
    -// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go.
    -func (in *ServiceCIDRList) APILifecycleIntroduced() (major, minor int) {
    -	return 1, 27
    -}
    -
    -// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison.
    -// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or  "k8s:prerelease-lifecycle-gen:introduced" plus three minor.
    -func (in *ServiceCIDRList) APILifecycleDeprecated() (major, minor int) {
    -	return 1, 30
    -}
    -
    -// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison.
    -// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or  "k8s:prerelease-lifecycle-gen:deprecated" plus three minor.
    -func (in *ServiceCIDRList) APILifecycleRemoved() (major, minor int) {
    -	return 1, 33
    -}
    diff --git a/vendor/k8s.io/api/resource/v1/devicetaint.go b/vendor/k8s.io/api/resource/v1/devicetaint.go
    new file mode 100644
    index 0000000000..a5c2e20a6e
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1/devicetaint.go
    @@ -0,0 +1,35 @@
    +/*
    +Copyright 2025 The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +package v1
    +
    +import "fmt"
    +
    +var _ fmt.Stringer = DeviceTaint{}
    +
    +// String converts to a string in the format '=:', '=:', ':', or ''.
    +func (t DeviceTaint) String() string {
    +	if len(t.Effect) == 0 {
    +		if len(t.Value) == 0 {
    +			return fmt.Sprintf("%v", t.Key)
    +		}
    +		return fmt.Sprintf("%v=%v:", t.Key, t.Value)
    +	}
    +	if len(t.Value) == 0 {
    +		return fmt.Sprintf("%v:%v", t.Key, t.Effect)
    +	}
    +	return fmt.Sprintf("%v=%v:%v", t.Key, t.Value, t.Effect)
    +}
    diff --git a/vendor/k8s.io/api/networking/v1alpha1/doc.go b/vendor/k8s.io/api/resource/v1/doc.go
    similarity index 83%
    rename from vendor/k8s.io/api/networking/v1alpha1/doc.go
    rename to vendor/k8s.io/api/resource/v1/doc.go
    index 55264ae707..c94ca75ddc 100644
    --- a/vendor/k8s.io/api/networking/v1alpha1/doc.go
    +++ b/vendor/k8s.io/api/resource/v1/doc.go
    @@ -1,5 +1,5 @@
     /*
    -Copyright 2022 The Kubernetes Authors.
    +Copyright 2025 The Kubernetes Authors.
     
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
    @@ -14,10 +14,11 @@ See the License for the specific language governing permissions and
     limitations under the License.
     */
     
    +// +k8s:openapi-gen=true
     // +k8s:deepcopy-gen=package
     // +k8s:protobuf-gen=package
    -// +k8s:openapi-gen=true
     // +k8s:prerelease-lifecycle-gen=true
    -// +groupName=networking.k8s.io
    +// +groupName=resource.k8s.io
     
    -package v1alpha1
    +// Package v1 is the v1 version of the resource API.
    +package v1
    diff --git a/vendor/k8s.io/api/resource/v1/generated.pb.go b/vendor/k8s.io/api/resource/v1/generated.pb.go
    new file mode 100644
    index 0000000000..5695e2c7e0
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1/generated.pb.go
    @@ -0,0 +1,12777 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +// Code generated by protoc-gen-gogo. DO NOT EDIT.
    +// source: k8s.io/api/resource/v1/generated.proto
    +
    +package v1
    +
    +import (
    +	fmt "fmt"
    +
    +	io "io"
    +
    +	proto "github.com/gogo/protobuf/proto"
    +	github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
    +	v11 "k8s.io/api/core/v1"
    +	resource "k8s.io/apimachinery/pkg/api/resource"
    +	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    +	runtime "k8s.io/apimachinery/pkg/runtime"
    +
    +	math "math"
    +	math_bits "math/bits"
    +	reflect "reflect"
    +	strings "strings"
    +
    +	k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types"
    +)
    +
    +// Reference imports to suppress errors if they are not otherwise used.
    +var _ = proto.Marshal
    +var _ = fmt.Errorf
    +var _ = math.Inf
    +
    +// This is a compile-time assertion to ensure that this generated file
    +// is compatible with the proto package it is being compiled against.
    +// A compilation error at this line likely means your copy of the
    +// proto package needs to be updated.
    +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
    +
    +func (m *AllocatedDeviceStatus) Reset()      { *m = AllocatedDeviceStatus{} }
    +func (*AllocatedDeviceStatus) ProtoMessage() {}
    +func (*AllocatedDeviceStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{0}
    +}
    +func (m *AllocatedDeviceStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *AllocatedDeviceStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *AllocatedDeviceStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_AllocatedDeviceStatus.Merge(m, src)
    +}
    +func (m *AllocatedDeviceStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *AllocatedDeviceStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_AllocatedDeviceStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_AllocatedDeviceStatus proto.InternalMessageInfo
    +
    +func (m *AllocationResult) Reset()      { *m = AllocationResult{} }
    +func (*AllocationResult) ProtoMessage() {}
    +func (*AllocationResult) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{1}
    +}
    +func (m *AllocationResult) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *AllocationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *AllocationResult) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_AllocationResult.Merge(m, src)
    +}
    +func (m *AllocationResult) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *AllocationResult) XXX_DiscardUnknown() {
    +	xxx_messageInfo_AllocationResult.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_AllocationResult proto.InternalMessageInfo
    +
    +func (m *CELDeviceSelector) Reset()      { *m = CELDeviceSelector{} }
    +func (*CELDeviceSelector) ProtoMessage() {}
    +func (*CELDeviceSelector) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{2}
    +}
    +func (m *CELDeviceSelector) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *CELDeviceSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *CELDeviceSelector) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_CELDeviceSelector.Merge(m, src)
    +}
    +func (m *CELDeviceSelector) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *CELDeviceSelector) XXX_DiscardUnknown() {
    +	xxx_messageInfo_CELDeviceSelector.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_CELDeviceSelector proto.InternalMessageInfo
    +
    +func (m *CapacityRequestPolicy) Reset()      { *m = CapacityRequestPolicy{} }
    +func (*CapacityRequestPolicy) ProtoMessage() {}
    +func (*CapacityRequestPolicy) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{3}
    +}
    +func (m *CapacityRequestPolicy) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *CapacityRequestPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *CapacityRequestPolicy) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_CapacityRequestPolicy.Merge(m, src)
    +}
    +func (m *CapacityRequestPolicy) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *CapacityRequestPolicy) XXX_DiscardUnknown() {
    +	xxx_messageInfo_CapacityRequestPolicy.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_CapacityRequestPolicy proto.InternalMessageInfo
    +
    +func (m *CapacityRequestPolicyRange) Reset()      { *m = CapacityRequestPolicyRange{} }
    +func (*CapacityRequestPolicyRange) ProtoMessage() {}
    +func (*CapacityRequestPolicyRange) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{4}
    +}
    +func (m *CapacityRequestPolicyRange) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *CapacityRequestPolicyRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *CapacityRequestPolicyRange) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_CapacityRequestPolicyRange.Merge(m, src)
    +}
    +func (m *CapacityRequestPolicyRange) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *CapacityRequestPolicyRange) XXX_DiscardUnknown() {
    +	xxx_messageInfo_CapacityRequestPolicyRange.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_CapacityRequestPolicyRange proto.InternalMessageInfo
    +
    +func (m *CapacityRequirements) Reset()      { *m = CapacityRequirements{} }
    +func (*CapacityRequirements) ProtoMessage() {}
    +func (*CapacityRequirements) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{5}
    +}
    +func (m *CapacityRequirements) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *CapacityRequirements) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *CapacityRequirements) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_CapacityRequirements.Merge(m, src)
    +}
    +func (m *CapacityRequirements) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *CapacityRequirements) XXX_DiscardUnknown() {
    +	xxx_messageInfo_CapacityRequirements.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_CapacityRequirements proto.InternalMessageInfo
    +
    +func (m *Counter) Reset()      { *m = Counter{} }
    +func (*Counter) ProtoMessage() {}
    +func (*Counter) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{6}
    +}
    +func (m *Counter) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *Counter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *Counter) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_Counter.Merge(m, src)
    +}
    +func (m *Counter) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *Counter) XXX_DiscardUnknown() {
    +	xxx_messageInfo_Counter.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_Counter proto.InternalMessageInfo
    +
    +func (m *CounterSet) Reset()      { *m = CounterSet{} }
    +func (*CounterSet) ProtoMessage() {}
    +func (*CounterSet) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{7}
    +}
    +func (m *CounterSet) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *CounterSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *CounterSet) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_CounterSet.Merge(m, src)
    +}
    +func (m *CounterSet) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *CounterSet) XXX_DiscardUnknown() {
    +	xxx_messageInfo_CounterSet.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_CounterSet proto.InternalMessageInfo
    +
    +func (m *Device) Reset()      { *m = Device{} }
    +func (*Device) ProtoMessage() {}
    +func (*Device) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{8}
    +}
    +func (m *Device) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *Device) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *Device) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_Device.Merge(m, src)
    +}
    +func (m *Device) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *Device) XXX_DiscardUnknown() {
    +	xxx_messageInfo_Device.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_Device proto.InternalMessageInfo
    +
    +func (m *DeviceAllocationConfiguration) Reset()      { *m = DeviceAllocationConfiguration{} }
    +func (*DeviceAllocationConfiguration) ProtoMessage() {}
    +func (*DeviceAllocationConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{9}
    +}
    +func (m *DeviceAllocationConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceAllocationConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceAllocationConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceAllocationConfiguration.Merge(m, src)
    +}
    +func (m *DeviceAllocationConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceAllocationConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceAllocationConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceAllocationConfiguration proto.InternalMessageInfo
    +
    +func (m *DeviceAllocationResult) Reset()      { *m = DeviceAllocationResult{} }
    +func (*DeviceAllocationResult) ProtoMessage() {}
    +func (*DeviceAllocationResult) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{10}
    +}
    +func (m *DeviceAllocationResult) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceAllocationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceAllocationResult) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceAllocationResult.Merge(m, src)
    +}
    +func (m *DeviceAllocationResult) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceAllocationResult) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceAllocationResult.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceAllocationResult proto.InternalMessageInfo
    +
    +func (m *DeviceAttribute) Reset()      { *m = DeviceAttribute{} }
    +func (*DeviceAttribute) ProtoMessage() {}
    +func (*DeviceAttribute) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{11}
    +}
    +func (m *DeviceAttribute) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceAttribute) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceAttribute) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceAttribute.Merge(m, src)
    +}
    +func (m *DeviceAttribute) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceAttribute) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceAttribute.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceAttribute proto.InternalMessageInfo
    +
    +func (m *DeviceCapacity) Reset()      { *m = DeviceCapacity{} }
    +func (*DeviceCapacity) ProtoMessage() {}
    +func (*DeviceCapacity) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{12}
    +}
    +func (m *DeviceCapacity) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceCapacity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceCapacity) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceCapacity.Merge(m, src)
    +}
    +func (m *DeviceCapacity) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceCapacity) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceCapacity.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceCapacity proto.InternalMessageInfo
    +
    +func (m *DeviceClaim) Reset()      { *m = DeviceClaim{} }
    +func (*DeviceClaim) ProtoMessage() {}
    +func (*DeviceClaim) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{13}
    +}
    +func (m *DeviceClaim) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClaim) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClaim) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClaim.Merge(m, src)
    +}
    +func (m *DeviceClaim) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClaim) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClaim.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClaim proto.InternalMessageInfo
    +
    +func (m *DeviceClaimConfiguration) Reset()      { *m = DeviceClaimConfiguration{} }
    +func (*DeviceClaimConfiguration) ProtoMessage() {}
    +func (*DeviceClaimConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{14}
    +}
    +func (m *DeviceClaimConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClaimConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClaimConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClaimConfiguration.Merge(m, src)
    +}
    +func (m *DeviceClaimConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClaimConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClaimConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClaimConfiguration proto.InternalMessageInfo
    +
    +func (m *DeviceClass) Reset()      { *m = DeviceClass{} }
    +func (*DeviceClass) ProtoMessage() {}
    +func (*DeviceClass) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{15}
    +}
    +func (m *DeviceClass) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClass) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClass) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClass.Merge(m, src)
    +}
    +func (m *DeviceClass) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClass) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClass.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClass proto.InternalMessageInfo
    +
    +func (m *DeviceClassConfiguration) Reset()      { *m = DeviceClassConfiguration{} }
    +func (*DeviceClassConfiguration) ProtoMessage() {}
    +func (*DeviceClassConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{16}
    +}
    +func (m *DeviceClassConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClassConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClassConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClassConfiguration.Merge(m, src)
    +}
    +func (m *DeviceClassConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClassConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClassConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClassConfiguration proto.InternalMessageInfo
    +
    +func (m *DeviceClassList) Reset()      { *m = DeviceClassList{} }
    +func (*DeviceClassList) ProtoMessage() {}
    +func (*DeviceClassList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{17}
    +}
    +func (m *DeviceClassList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClassList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClassList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClassList.Merge(m, src)
    +}
    +func (m *DeviceClassList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClassList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClassList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClassList proto.InternalMessageInfo
    +
    +func (m *DeviceClassSpec) Reset()      { *m = DeviceClassSpec{} }
    +func (*DeviceClassSpec) ProtoMessage() {}
    +func (*DeviceClassSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{18}
    +}
    +func (m *DeviceClassSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceClassSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceClassSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceClassSpec.Merge(m, src)
    +}
    +func (m *DeviceClassSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceClassSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceClassSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceClassSpec proto.InternalMessageInfo
    +
    +func (m *DeviceConfiguration) Reset()      { *m = DeviceConfiguration{} }
    +func (*DeviceConfiguration) ProtoMessage() {}
    +func (*DeviceConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{19}
    +}
    +func (m *DeviceConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceConfiguration.Merge(m, src)
    +}
    +func (m *DeviceConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceConfiguration proto.InternalMessageInfo
    +
    +func (m *DeviceConstraint) Reset()      { *m = DeviceConstraint{} }
    +func (*DeviceConstraint) ProtoMessage() {}
    +func (*DeviceConstraint) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{20}
    +}
    +func (m *DeviceConstraint) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceConstraint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceConstraint) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceConstraint.Merge(m, src)
    +}
    +func (m *DeviceConstraint) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceConstraint) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceConstraint.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceConstraint proto.InternalMessageInfo
    +
    +func (m *DeviceCounterConsumption) Reset()      { *m = DeviceCounterConsumption{} }
    +func (*DeviceCounterConsumption) ProtoMessage() {}
    +func (*DeviceCounterConsumption) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{21}
    +}
    +func (m *DeviceCounterConsumption) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceCounterConsumption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceCounterConsumption) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceCounterConsumption.Merge(m, src)
    +}
    +func (m *DeviceCounterConsumption) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceCounterConsumption) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceCounterConsumption.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceCounterConsumption proto.InternalMessageInfo
    +
    +func (m *DeviceRequest) Reset()      { *m = DeviceRequest{} }
    +func (*DeviceRequest) ProtoMessage() {}
    +func (*DeviceRequest) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{22}
    +}
    +func (m *DeviceRequest) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceRequest) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceRequest.Merge(m, src)
    +}
    +func (m *DeviceRequest) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceRequest) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceRequest.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceRequest proto.InternalMessageInfo
    +
    +func (m *DeviceRequestAllocationResult) Reset()      { *m = DeviceRequestAllocationResult{} }
    +func (*DeviceRequestAllocationResult) ProtoMessage() {}
    +func (*DeviceRequestAllocationResult) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{23}
    +}
    +func (m *DeviceRequestAllocationResult) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceRequestAllocationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceRequestAllocationResult) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceRequestAllocationResult.Merge(m, src)
    +}
    +func (m *DeviceRequestAllocationResult) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceRequestAllocationResult) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceRequestAllocationResult.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceRequestAllocationResult proto.InternalMessageInfo
    +
    +func (m *DeviceSelector) Reset()      { *m = DeviceSelector{} }
    +func (*DeviceSelector) ProtoMessage() {}
    +func (*DeviceSelector) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{24}
    +}
    +func (m *DeviceSelector) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceSelector) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceSelector.Merge(m, src)
    +}
    +func (m *DeviceSelector) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceSelector) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceSelector.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceSelector proto.InternalMessageInfo
    +
    +func (m *DeviceSubRequest) Reset()      { *m = DeviceSubRequest{} }
    +func (*DeviceSubRequest) ProtoMessage() {}
    +func (*DeviceSubRequest) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{25}
    +}
    +func (m *DeviceSubRequest) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceSubRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceSubRequest) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceSubRequest.Merge(m, src)
    +}
    +func (m *DeviceSubRequest) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceSubRequest) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceSubRequest.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceSubRequest proto.InternalMessageInfo
    +
    +func (m *DeviceTaint) Reset()      { *m = DeviceTaint{} }
    +func (*DeviceTaint) ProtoMessage() {}
    +func (*DeviceTaint) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{26}
    +}
    +func (m *DeviceTaint) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceTaint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceTaint) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceTaint.Merge(m, src)
    +}
    +func (m *DeviceTaint) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceTaint) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceTaint.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceTaint proto.InternalMessageInfo
    +
    +func (m *DeviceToleration) Reset()      { *m = DeviceToleration{} }
    +func (*DeviceToleration) ProtoMessage() {}
    +func (*DeviceToleration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{27}
    +}
    +func (m *DeviceToleration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *DeviceToleration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *DeviceToleration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_DeviceToleration.Merge(m, src)
    +}
    +func (m *DeviceToleration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *DeviceToleration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_DeviceToleration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_DeviceToleration proto.InternalMessageInfo
    +
    +func (m *ExactDeviceRequest) Reset()      { *m = ExactDeviceRequest{} }
    +func (*ExactDeviceRequest) ProtoMessage() {}
    +func (*ExactDeviceRequest) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{28}
    +}
    +func (m *ExactDeviceRequest) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ExactDeviceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ExactDeviceRequest) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ExactDeviceRequest.Merge(m, src)
    +}
    +func (m *ExactDeviceRequest) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ExactDeviceRequest) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ExactDeviceRequest.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ExactDeviceRequest proto.InternalMessageInfo
    +
    +func (m *NetworkDeviceData) Reset()      { *m = NetworkDeviceData{} }
    +func (*NetworkDeviceData) ProtoMessage() {}
    +func (*NetworkDeviceData) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{29}
    +}
    +func (m *NetworkDeviceData) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *NetworkDeviceData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *NetworkDeviceData) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_NetworkDeviceData.Merge(m, src)
    +}
    +func (m *NetworkDeviceData) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *NetworkDeviceData) XXX_DiscardUnknown() {
    +	xxx_messageInfo_NetworkDeviceData.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_NetworkDeviceData proto.InternalMessageInfo
    +
    +func (m *OpaqueDeviceConfiguration) Reset()      { *m = OpaqueDeviceConfiguration{} }
    +func (*OpaqueDeviceConfiguration) ProtoMessage() {}
    +func (*OpaqueDeviceConfiguration) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{30}
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_OpaqueDeviceConfiguration.Merge(m, src)
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *OpaqueDeviceConfiguration) XXX_DiscardUnknown() {
    +	xxx_messageInfo_OpaqueDeviceConfiguration.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_OpaqueDeviceConfiguration proto.InternalMessageInfo
    +
    +func (m *ResourceClaim) Reset()      { *m = ResourceClaim{} }
    +func (*ResourceClaim) ProtoMessage() {}
    +func (*ResourceClaim) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{31}
    +}
    +func (m *ResourceClaim) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaim) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaim) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaim.Merge(m, src)
    +}
    +func (m *ResourceClaim) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaim) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaim.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaim proto.InternalMessageInfo
    +
    +func (m *ResourceClaimConsumerReference) Reset()      { *m = ResourceClaimConsumerReference{} }
    +func (*ResourceClaimConsumerReference) ProtoMessage() {}
    +func (*ResourceClaimConsumerReference) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{32}
    +}
    +func (m *ResourceClaimConsumerReference) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimConsumerReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimConsumerReference) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimConsumerReference.Merge(m, src)
    +}
    +func (m *ResourceClaimConsumerReference) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimConsumerReference) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimConsumerReference.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimConsumerReference proto.InternalMessageInfo
    +
    +func (m *ResourceClaimList) Reset()      { *m = ResourceClaimList{} }
    +func (*ResourceClaimList) ProtoMessage() {}
    +func (*ResourceClaimList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{33}
    +}
    +func (m *ResourceClaimList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimList.Merge(m, src)
    +}
    +func (m *ResourceClaimList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimList proto.InternalMessageInfo
    +
    +func (m *ResourceClaimSpec) Reset()      { *m = ResourceClaimSpec{} }
    +func (*ResourceClaimSpec) ProtoMessage() {}
    +func (*ResourceClaimSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{34}
    +}
    +func (m *ResourceClaimSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimSpec.Merge(m, src)
    +}
    +func (m *ResourceClaimSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimSpec proto.InternalMessageInfo
    +
    +func (m *ResourceClaimStatus) Reset()      { *m = ResourceClaimStatus{} }
    +func (*ResourceClaimStatus) ProtoMessage() {}
    +func (*ResourceClaimStatus) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{35}
    +}
    +func (m *ResourceClaimStatus) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimStatus) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimStatus.Merge(m, src)
    +}
    +func (m *ResourceClaimStatus) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimStatus) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimStatus.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimStatus proto.InternalMessageInfo
    +
    +func (m *ResourceClaimTemplate) Reset()      { *m = ResourceClaimTemplate{} }
    +func (*ResourceClaimTemplate) ProtoMessage() {}
    +func (*ResourceClaimTemplate) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{36}
    +}
    +func (m *ResourceClaimTemplate) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimTemplate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimTemplate) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimTemplate.Merge(m, src)
    +}
    +func (m *ResourceClaimTemplate) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimTemplate) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimTemplate.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimTemplate proto.InternalMessageInfo
    +
    +func (m *ResourceClaimTemplateList) Reset()      { *m = ResourceClaimTemplateList{} }
    +func (*ResourceClaimTemplateList) ProtoMessage() {}
    +func (*ResourceClaimTemplateList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{37}
    +}
    +func (m *ResourceClaimTemplateList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimTemplateList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimTemplateList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimTemplateList.Merge(m, src)
    +}
    +func (m *ResourceClaimTemplateList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimTemplateList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimTemplateList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimTemplateList proto.InternalMessageInfo
    +
    +func (m *ResourceClaimTemplateSpec) Reset()      { *m = ResourceClaimTemplateSpec{} }
    +func (*ResourceClaimTemplateSpec) ProtoMessage() {}
    +func (*ResourceClaimTemplateSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{38}
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceClaimTemplateSpec.Merge(m, src)
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceClaimTemplateSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceClaimTemplateSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceClaimTemplateSpec proto.InternalMessageInfo
    +
    +func (m *ResourcePool) Reset()      { *m = ResourcePool{} }
    +func (*ResourcePool) ProtoMessage() {}
    +func (*ResourcePool) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{39}
    +}
    +func (m *ResourcePool) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourcePool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourcePool) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourcePool.Merge(m, src)
    +}
    +func (m *ResourcePool) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourcePool) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourcePool.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourcePool proto.InternalMessageInfo
    +
    +func (m *ResourceSlice) Reset()      { *m = ResourceSlice{} }
    +func (*ResourceSlice) ProtoMessage() {}
    +func (*ResourceSlice) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{40}
    +}
    +func (m *ResourceSlice) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceSlice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceSlice) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceSlice.Merge(m, src)
    +}
    +func (m *ResourceSlice) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceSlice) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceSlice.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceSlice proto.InternalMessageInfo
    +
    +func (m *ResourceSliceList) Reset()      { *m = ResourceSliceList{} }
    +func (*ResourceSliceList) ProtoMessage() {}
    +func (*ResourceSliceList) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{41}
    +}
    +func (m *ResourceSliceList) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceSliceList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceSliceList) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceSliceList.Merge(m, src)
    +}
    +func (m *ResourceSliceList) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceSliceList) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceSliceList.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceSliceList proto.InternalMessageInfo
    +
    +func (m *ResourceSliceSpec) Reset()      { *m = ResourceSliceSpec{} }
    +func (*ResourceSliceSpec) ProtoMessage() {}
    +func (*ResourceSliceSpec) Descriptor() ([]byte, []int) {
    +	return fileDescriptor_f4fc532aec02d243, []int{42}
    +}
    +func (m *ResourceSliceSpec) XXX_Unmarshal(b []byte) error {
    +	return m.Unmarshal(b)
    +}
    +func (m *ResourceSliceSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    +	b = b[:cap(b)]
    +	n, err := m.MarshalToSizedBuffer(b)
    +	if err != nil {
    +		return nil, err
    +	}
    +	return b[:n], nil
    +}
    +func (m *ResourceSliceSpec) XXX_Merge(src proto.Message) {
    +	xxx_messageInfo_ResourceSliceSpec.Merge(m, src)
    +}
    +func (m *ResourceSliceSpec) XXX_Size() int {
    +	return m.Size()
    +}
    +func (m *ResourceSliceSpec) XXX_DiscardUnknown() {
    +	xxx_messageInfo_ResourceSliceSpec.DiscardUnknown(m)
    +}
    +
    +var xxx_messageInfo_ResourceSliceSpec proto.InternalMessageInfo
    +
    +func init() {
    +	proto.RegisterType((*AllocatedDeviceStatus)(nil), "k8s.io.api.resource.v1.AllocatedDeviceStatus")
    +	proto.RegisterType((*AllocationResult)(nil), "k8s.io.api.resource.v1.AllocationResult")
    +	proto.RegisterType((*CELDeviceSelector)(nil), "k8s.io.api.resource.v1.CELDeviceSelector")
    +	proto.RegisterType((*CapacityRequestPolicy)(nil), "k8s.io.api.resource.v1.CapacityRequestPolicy")
    +	proto.RegisterType((*CapacityRequestPolicyRange)(nil), "k8s.io.api.resource.v1.CapacityRequestPolicyRange")
    +	proto.RegisterType((*CapacityRequirements)(nil), "k8s.io.api.resource.v1.CapacityRequirements")
    +	proto.RegisterMapType((map[QualifiedName]resource.Quantity)(nil), "k8s.io.api.resource.v1.CapacityRequirements.RequestsEntry")
    +	proto.RegisterType((*Counter)(nil), "k8s.io.api.resource.v1.Counter")
    +	proto.RegisterType((*CounterSet)(nil), "k8s.io.api.resource.v1.CounterSet")
    +	proto.RegisterMapType((map[string]Counter)(nil), "k8s.io.api.resource.v1.CounterSet.CountersEntry")
    +	proto.RegisterType((*Device)(nil), "k8s.io.api.resource.v1.Device")
    +	proto.RegisterMapType((map[QualifiedName]DeviceAttribute)(nil), "k8s.io.api.resource.v1.Device.AttributesEntry")
    +	proto.RegisterMapType((map[QualifiedName]DeviceCapacity)(nil), "k8s.io.api.resource.v1.Device.CapacityEntry")
    +	proto.RegisterType((*DeviceAllocationConfiguration)(nil), "k8s.io.api.resource.v1.DeviceAllocationConfiguration")
    +	proto.RegisterType((*DeviceAllocationResult)(nil), "k8s.io.api.resource.v1.DeviceAllocationResult")
    +	proto.RegisterType((*DeviceAttribute)(nil), "k8s.io.api.resource.v1.DeviceAttribute")
    +	proto.RegisterType((*DeviceCapacity)(nil), "k8s.io.api.resource.v1.DeviceCapacity")
    +	proto.RegisterType((*DeviceClaim)(nil), "k8s.io.api.resource.v1.DeviceClaim")
    +	proto.RegisterType((*DeviceClaimConfiguration)(nil), "k8s.io.api.resource.v1.DeviceClaimConfiguration")
    +	proto.RegisterType((*DeviceClass)(nil), "k8s.io.api.resource.v1.DeviceClass")
    +	proto.RegisterType((*DeviceClassConfiguration)(nil), "k8s.io.api.resource.v1.DeviceClassConfiguration")
    +	proto.RegisterType((*DeviceClassList)(nil), "k8s.io.api.resource.v1.DeviceClassList")
    +	proto.RegisterType((*DeviceClassSpec)(nil), "k8s.io.api.resource.v1.DeviceClassSpec")
    +	proto.RegisterType((*DeviceConfiguration)(nil), "k8s.io.api.resource.v1.DeviceConfiguration")
    +	proto.RegisterType((*DeviceConstraint)(nil), "k8s.io.api.resource.v1.DeviceConstraint")
    +	proto.RegisterType((*DeviceCounterConsumption)(nil), "k8s.io.api.resource.v1.DeviceCounterConsumption")
    +	proto.RegisterMapType((map[string]Counter)(nil), "k8s.io.api.resource.v1.DeviceCounterConsumption.CountersEntry")
    +	proto.RegisterType((*DeviceRequest)(nil), "k8s.io.api.resource.v1.DeviceRequest")
    +	proto.RegisterType((*DeviceRequestAllocationResult)(nil), "k8s.io.api.resource.v1.DeviceRequestAllocationResult")
    +	proto.RegisterMapType((map[QualifiedName]resource.Quantity)(nil), "k8s.io.api.resource.v1.DeviceRequestAllocationResult.ConsumedCapacityEntry")
    +	proto.RegisterType((*DeviceSelector)(nil), "k8s.io.api.resource.v1.DeviceSelector")
    +	proto.RegisterType((*DeviceSubRequest)(nil), "k8s.io.api.resource.v1.DeviceSubRequest")
    +	proto.RegisterType((*DeviceTaint)(nil), "k8s.io.api.resource.v1.DeviceTaint")
    +	proto.RegisterType((*DeviceToleration)(nil), "k8s.io.api.resource.v1.DeviceToleration")
    +	proto.RegisterType((*ExactDeviceRequest)(nil), "k8s.io.api.resource.v1.ExactDeviceRequest")
    +	proto.RegisterType((*NetworkDeviceData)(nil), "k8s.io.api.resource.v1.NetworkDeviceData")
    +	proto.RegisterType((*OpaqueDeviceConfiguration)(nil), "k8s.io.api.resource.v1.OpaqueDeviceConfiguration")
    +	proto.RegisterType((*ResourceClaim)(nil), "k8s.io.api.resource.v1.ResourceClaim")
    +	proto.RegisterType((*ResourceClaimConsumerReference)(nil), "k8s.io.api.resource.v1.ResourceClaimConsumerReference")
    +	proto.RegisterType((*ResourceClaimList)(nil), "k8s.io.api.resource.v1.ResourceClaimList")
    +	proto.RegisterType((*ResourceClaimSpec)(nil), "k8s.io.api.resource.v1.ResourceClaimSpec")
    +	proto.RegisterType((*ResourceClaimStatus)(nil), "k8s.io.api.resource.v1.ResourceClaimStatus")
    +	proto.RegisterType((*ResourceClaimTemplate)(nil), "k8s.io.api.resource.v1.ResourceClaimTemplate")
    +	proto.RegisterType((*ResourceClaimTemplateList)(nil), "k8s.io.api.resource.v1.ResourceClaimTemplateList")
    +	proto.RegisterType((*ResourceClaimTemplateSpec)(nil), "k8s.io.api.resource.v1.ResourceClaimTemplateSpec")
    +	proto.RegisterType((*ResourcePool)(nil), "k8s.io.api.resource.v1.ResourcePool")
    +	proto.RegisterType((*ResourceSlice)(nil), "k8s.io.api.resource.v1.ResourceSlice")
    +	proto.RegisterType((*ResourceSliceList)(nil), "k8s.io.api.resource.v1.ResourceSliceList")
    +	proto.RegisterType((*ResourceSliceSpec)(nil), "k8s.io.api.resource.v1.ResourceSliceSpec")
    +}
    +
    +func init() {
    +	proto.RegisterFile("k8s.io/api/resource/v1/generated.proto", fileDescriptor_f4fc532aec02d243)
    +}
    +
    +var fileDescriptor_f4fc532aec02d243 = []byte{
    +	// 3028 bytes of a gzipped FileDescriptorProto
    +	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5b, 0x4d, 0x6c, 0x24, 0x47,
    +	0xf5, 0x77, 0xcf, 0xcc, 0x8e, 0xc7, 0x6f, 0x6c, 0xaf, 0x5d, 0xbb, 0xeb, 0x4c, 0xfc, 0xff, 0xc7,
    +	0xe3, 0xf4, 0x92, 0xc4, 0x49, 0x76, 0xc7, 0x6b, 0x8b, 0x44, 0x51, 0x12, 0x10, 0x1e, 0xdb, 0x9b,
    +	0x38, 0xfb, 0x11, 0xa7, 0xc6, 0x6b, 0x36, 0x28, 0x84, 0xb4, 0x7b, 0xca, 0x76, 0xe3, 0x9e, 0xee,
    +	0x49, 0x77, 0x8d, 0x77, 0xcd, 0x29, 0xe2, 0x00, 0x57, 0x04, 0x12, 0x02, 0x24, 0x24, 0x94, 0x03,
    +	0x12, 0x17, 0x84, 0x38, 0x11, 0x04, 0x28, 0xc7, 0x08, 0x29, 0x28, 0x17, 0xa4, 0x20, 0xa1, 0x81,
    +	0x1d, 0x4e, 0x48, 0x08, 0x89, 0x0b, 0x07, 0x1f, 0x10, 0xaa, 0xea, 0xaa, 0xfe, 0x9a, 0x6e, 0x4f,
    +	0xdb, 0x59, 0xaf, 0x96, 0x9b, 0xe7, 0xd5, 0x7b, 0xbf, 0xaa, 0x7a, 0xf5, 0xbe, 0xea, 0x75, 0x19,
    +	0x9e, 0xdc, 0x7b, 0xc1, 0xad, 0x19, 0xf6, 0xbc, 0xd6, 0x36, 0xe6, 0x1d, 0xe2, 0xda, 0x1d, 0x47,
    +	0x27, 0xf3, 0xfb, 0x0b, 0xf3, 0x3b, 0xc4, 0x22, 0x8e, 0x46, 0x49, 0xb3, 0xd6, 0x76, 0x6c, 0x6a,
    +	0xa3, 0x29, 0x8f, 0xaf, 0xa6, 0xb5, 0x8d, 0x9a, 0xe4, 0xab, 0xed, 0x2f, 0x4c, 0x5f, 0xde, 0x31,
    +	0xe8, 0x6e, 0x67, 0xab, 0xa6, 0xdb, 0xad, 0xf9, 0x1d, 0x7b, 0xc7, 0x9e, 0xe7, 0xec, 0x5b, 0x9d,
    +	0x6d, 0xfe, 0x8b, 0xff, 0xe0, 0x7f, 0x79, 0x30, 0xd3, 0x6a, 0x68, 0x3a, 0xdd, 0x76, 0x92, 0xa6,
    +	0x9a, 0xfe, 0x7c, 0xc0, 0xd3, 0xd2, 0xf4, 0x5d, 0xc3, 0x22, 0xce, 0xc1, 0x7c, 0x7b, 0x6f, 0x27,
    +	0xba, 0xc6, 0xe3, 0x48, 0xb9, 0xf3, 0x2d, 0x42, 0xb5, 0xa4, 0xb9, 0xe6, 0xd3, 0xa4, 0x9c, 0x8e,
    +	0x45, 0x8d, 0x56, 0xff, 0x34, 0xcf, 0x0f, 0x12, 0x70, 0xf5, 0x5d, 0xd2, 0xd2, 0xe2, 0x72, 0xea,
    +	0x87, 0x79, 0xb8, 0xb0, 0x64, 0x9a, 0xb6, 0xce, 0x68, 0x2b, 0x64, 0xdf, 0xd0, 0x49, 0x83, 0x6a,
    +	0xb4, 0xe3, 0xa2, 0x27, 0xa1, 0xd8, 0x74, 0x8c, 0x7d, 0xe2, 0x54, 0x94, 0x59, 0x65, 0x6e, 0xa4,
    +	0x3e, 0xfe, 0x51, 0xb7, 0x3a, 0xd4, 0xeb, 0x56, 0x8b, 0x2b, 0x9c, 0x8a, 0xc5, 0x28, 0x9a, 0x85,
    +	0x42, 0xdb, 0xb6, 0xcd, 0x4a, 0x8e, 0x73, 0x8d, 0x0a, 0xae, 0xc2, 0xba, 0x6d, 0x9b, 0x98, 0x8f,
    +	0x70, 0x24, 0x8e, 0x5c, 0xc9, 0xc7, 0x90, 0x38, 0x15, 0x8b, 0x51, 0xf4, 0x04, 0x0c, 0xbb, 0xbb,
    +	0x9a, 0x43, 0xd6, 0x56, 0x2a, 0xc3, 0x9c, 0xb1, 0xdc, 0xeb, 0x56, 0x87, 0x1b, 0x1e, 0x09, 0xcb,
    +	0x31, 0xa4, 0x03, 0xe8, 0xb6, 0xd5, 0x34, 0xa8, 0x61, 0x5b, 0x6e, 0xa5, 0x30, 0x9b, 0x9f, 0x2b,
    +	0x2f, 0xce, 0xd7, 0x02, 0x3b, 0xf0, 0xf7, 0x5f, 0x6b, 0xef, 0xed, 0x30, 0x82, 0x5b, 0x63, 0x6a,
    +	0xae, 0xed, 0x2f, 0xd4, 0x96, 0xa5, 0x5c, 0x1d, 0x89, 0x35, 0x80, 0x4f, 0x72, 0x71, 0x08, 0x16,
    +	0x5d, 0x83, 0x42, 0x53, 0xa3, 0x5a, 0xe5, 0xcc, 0xac, 0x32, 0x57, 0x5e, 0xbc, 0x9c, 0x0a, 0x2f,
    +	0xd4, 0x5b, 0xc3, 0xda, 0x9d, 0xd5, 0xbb, 0x94, 0x58, 0x2e, 0x03, 0x2f, 0x31, 0x05, 0xac, 0x68,
    +	0x54, 0xc3, 0x1c, 0x04, 0xbd, 0x05, 0x65, 0x8b, 0xd0, 0x3b, 0xb6, 0xb3, 0xc7, 0x88, 0x95, 0x22,
    +	0xc7, 0x7c, 0xba, 0x96, 0x6c, 0xba, 0xb5, 0x9b, 0x82, 0x95, 0x2b, 0x85, 0x09, 0xd4, 0xcf, 0xf6,
    +	0xba, 0xd5, 0xf2, 0xcd, 0x00, 0x01, 0x87, 0xe1, 0xd4, 0xdf, 0xe4, 0x60, 0x42, 0x1c, 0xa1, 0x61,
    +	0x5b, 0x98, 0xb8, 0x1d, 0x93, 0xa2, 0x37, 0x61, 0xd8, 0xd3, 0xaa, 0xcb, 0x8f, 0xaf, 0xbc, 0x58,
    +	0x4b, 0x9b, 0xce, 0x9b, 0x27, 0x0e, 0x50, 0x3f, 0x2b, 0x14, 0x34, 0xec, 0x8d, 0xbb, 0x58, 0xe2,
    +	0xa1, 0x4d, 0x18, 0xb5, 0xec, 0x26, 0x69, 0x10, 0x93, 0xe8, 0xd4, 0x76, 0xf8, 0xa1, 0x96, 0x17,
    +	0x67, 0xc3, 0xf8, 0xcc, 0x85, 0xf8, 0x56, 0x42, 0x7c, 0xf5, 0x89, 0x5e, 0xb7, 0x3a, 0x1a, 0xa6,
    +	0xe0, 0x08, 0x0e, 0xea, 0xc0, 0x39, 0xcd, 0x5f, 0xc5, 0x86, 0xd1, 0x22, 0x2e, 0xd5, 0x5a, 0x6d,
    +	0x71, 0x02, 0xcf, 0x64, 0x3b, 0x60, 0x26, 0x56, 0x7f, 0xa4, 0xd7, 0xad, 0x9e, 0x5b, 0xea, 0x87,
    +	0xc2, 0x49, 0xf8, 0xea, 0x2b, 0x30, 0xb9, 0xbc, 0x7a, 0x5d, 0x98, 0xbe, 0x5c, 0xcb, 0x22, 0x00,
    +	0xb9, 0xdb, 0x76, 0x88, 0xcb, 0xce, 0x53, 0x38, 0x80, 0x6f, 0x32, 0xab, 0xfe, 0x08, 0x0e, 0x71,
    +	0xa9, 0x1f, 0xe4, 0xe0, 0xc2, 0xb2, 0xd6, 0xd6, 0x74, 0x83, 0x1e, 0x60, 0xf2, 0x6e, 0x87, 0xb8,
    +	0x74, 0xdd, 0x36, 0x0d, 0xfd, 0x00, 0xdd, 0x62, 0x87, 0xb1, 0xad, 0x75, 0x4c, 0x9a, 0x70, 0x18,
    +	0x7d, 0xbb, 0x09, 0x4e, 0xe7, 0x8d, 0x8e, 0x66, 0x51, 0x83, 0x1e, 0x78, 0x8e, 0xb0, 0xe2, 0x41,
    +	0x60, 0x89, 0x85, 0x08, 0x94, 0xf7, 0x35, 0xd3, 0x68, 0x6e, 0x6a, 0x66, 0x87, 0xb8, 0x95, 0x3c,
    +	0xf7, 0x84, 0xe3, 0x42, 0x9f, 0x13, 0xbb, 0x2a, 0x6f, 0x06, 0x50, 0x38, 0x8c, 0x8b, 0xb6, 0x00,
    +	0xf8, 0x4f, 0xac, 0x59, 0x3b, 0xa4, 0x52, 0xe0, 0x1b, 0x58, 0x4c, 0xb3, 0xa6, 0x44, 0x05, 0x70,
    +	0xc9, 0xfa, 0x38, 0xd3, 0xdd, 0xa6, 0x8f, 0x84, 0x43, 0xa8, 0xea, 0x7b, 0x39, 0x98, 0x4e, 0x17,
    +	0x45, 0x6b, 0x90, 0x6f, 0x19, 0xd6, 0x09, 0x95, 0x37, 0xdc, 0xeb, 0x56, 0xf3, 0x37, 0x0c, 0x0b,
    +	0x33, 0x0c, 0x0e, 0xa5, 0xdd, 0xe5, 0xd1, 0xea, 0xa4, 0x50, 0xda, 0x5d, 0xcc, 0x30, 0xd0, 0x75,
    +	0x28, 0xb8, 0x94, 0xb4, 0x85, 0x03, 0x1c, 0x17, 0x8b, 0x07, 0x89, 0x06, 0x25, 0x6d, 0xcc, 0x51,
    +	0xd4, 0xff, 0x28, 0x70, 0x3e, 0xac, 0x02, 0xc3, 0x21, 0x2d, 0x62, 0x51, 0x17, 0x1d, 0x40, 0xc9,
    +	0xf1, 0x54, 0xc2, 0x7c, 0x99, 0x9d, 0xf1, 0x8b, 0x59, 0xb4, 0x2f, 0xe5, 0x6b, 0x42, 0x9f, 0xee,
    +	0xaa, 0x45, 0x9d, 0x83, 0xfa, 0xe3, 0xe2, 0xbc, 0x4b, 0x92, 0xfc, 0xcd, 0xbf, 0x54, 0xc7, 0xde,
    +	0xe8, 0x68, 0xa6, 0xb1, 0x6d, 0x90, 0xe6, 0x4d, 0xad, 0x45, 0xb0, 0x3f, 0xdd, 0xf4, 0x1e, 0x8c,
    +	0x45, 0xa4, 0xd1, 0x04, 0xe4, 0xf7, 0xc8, 0x81, 0xe7, 0x10, 0x98, 0xfd, 0x89, 0x56, 0xe0, 0xcc,
    +	0x3e, 0xb3, 0x93, 0x93, 0x69, 0x14, 0x7b, 0xc2, 0x2f, 0xe6, 0x5e, 0x50, 0xd4, 0xb7, 0x61, 0x78,
    +	0xd9, 0xee, 0x58, 0x94, 0x38, 0xa8, 0x21, 0x41, 0x4f, 0x76, 0xe2, 0x63, 0x62, 0x8f, 0x67, 0xb8,
    +	0x05, 0x8b, 0x39, 0xd4, 0x7f, 0x28, 0x00, 0x62, 0x82, 0x06, 0xa1, 0x2c, 0x6f, 0x59, 0x5a, 0x8b,
    +	0x08, 0xe7, 0xf6, 0xf3, 0x16, 0xd7, 0x00, 0x1f, 0x41, 0x6f, 0x43, 0x49, 0xf7, 0xf8, 0xdd, 0x4a,
    +	0x8e, 0x2b, 0xfe, 0x4a, 0xaa, 0xe2, 0x7d, 0x5c, 0xf9, 0xa7, 0x50, 0xf7, 0x84, 0x54, 0xb7, 0x24,
    +	0x63, 0x1f, 0x73, 0xfa, 0x2d, 0x18, 0x8b, 0x30, 0x27, 0x68, 0xf7, 0xb9, 0xa8, 0x76, 0xab, 0x03,
    +	0xe6, 0x0f, 0xab, 0xf3, 0xdf, 0x25, 0x10, 0x09, 0x36, 0xc3, 0x56, 0x5d, 0x00, 0x8d, 0x52, 0xc7,
    +	0xd8, 0xea, 0x50, 0x22, 0x37, 0x3b, 0x20, 0x63, 0xd4, 0x96, 0x7c, 0x01, 0x6f, 0xab, 0x17, 0x65,
    +	0x7c, 0x0c, 0x06, 0xfa, 0x6d, 0x2b, 0x34, 0x0d, 0xda, 0x83, 0x92, 0x2e, 0x0c, 0x56, 0x04, 0xaf,
    +	0x4b, 0x03, 0xa6, 0x94, 0xf6, 0x1d, 0x33, 0x65, 0x49, 0x4e, 0x30, 0x65, 0x39, 0x01, 0xda, 0x87,
    +	0x09, 0xdd, 0xb6, 0xdc, 0x4e, 0x8b, 0xb8, 0x52, 0xe9, 0xa2, 0x76, 0xb8, 0x72, 0xf4, 0xa4, 0x82,
    +	0x7b, 0x99, 0x0b, 0xb7, 0x79, 0xf1, 0x50, 0x11, 0x13, 0x4f, 0x2c, 0xc7, 0x10, 0x71, 0xdf, 0x1c,
    +	0x68, 0x0e, 0x4a, 0x2c, 0xcb, 0xb1, 0xd5, 0xf0, 0x54, 0x36, 0x52, 0x1f, 0x65, 0x4b, 0xbe, 0x29,
    +	0x68, 0xd8, 0x1f, 0xed, 0xcb, 0xab, 0xc5, 0xfb, 0x94, 0x57, 0xe7, 0xa0, 0xa4, 0x99, 0x26, 0x63,
    +	0x70, 0x79, 0x5d, 0x55, 0xf2, 0x56, 0xb0, 0x24, 0x68, 0xd8, 0x1f, 0x45, 0xd7, 0xa0, 0x48, 0x35,
    +	0xc3, 0xa2, 0x6e, 0xa5, 0xc4, 0x35, 0x73, 0xf1, 0x68, 0xcd, 0x6c, 0x30, 0xde, 0xa0, 0x9a, 0xe3,
    +	0x3f, 0x5d, 0x2c, 0x20, 0xd0, 0x02, 0x94, 0xb7, 0x0c, 0xab, 0xe9, 0x6e, 0xd8, 0x0c, 0xbc, 0x32,
    +	0xc2, 0x67, 0xe6, 0x95, 0x4c, 0x3d, 0x20, 0xe3, 0x30, 0x0f, 0x5a, 0x86, 0x49, 0xf6, 0xd3, 0xb0,
    +	0x76, 0x82, 0xaa, 0xac, 0x02, 0xb3, 0xf9, 0xb9, 0x91, 0xfa, 0x85, 0x5e, 0xb7, 0x3a, 0x59, 0x8f,
    +	0x0f, 0xe2, 0x7e, 0x7e, 0x74, 0x1b, 0x2a, 0x82, 0x78, 0x55, 0x33, 0xcc, 0x8e, 0x43, 0x42, 0x58,
    +	0x65, 0x8e, 0xf5, 0xff, 0xbd, 0x6e, 0xb5, 0x52, 0x4f, 0xe1, 0xc1, 0xa9, 0xd2, 0x0c, 0x99, 0x15,
    +	0x10, 0x77, 0x6e, 0x74, 0x4c, 0x6a, 0xb4, 0xcd, 0x50, 0xcd, 0xe4, 0x56, 0x46, 0xf9, 0xf6, 0x38,
    +	0xf2, 0x52, 0x0a, 0x0f, 0x4e, 0x95, 0x9e, 0xde, 0x86, 0xb3, 0x31, 0x6f, 0x4a, 0x88, 0x05, 0x5f,
    +	0x88, 0xc6, 0x82, 0xa7, 0x06, 0x14, 0x74, 0x12, 0x2f, 0x14, 0x13, 0xa6, 0x75, 0x18, 0x8b, 0xb8,
    +	0x50, 0xc2, 0x2c, 0x2f, 0x47, 0x67, 0x79, 0x72, 0x80, 0x73, 0xc8, 0x84, 0x13, 0x0a, 0x3c, 0xdf,
    +	0xce, 0xc1, 0x63, 0xf1, 0xa2, 0x72, 0xd9, 0xb6, 0xb6, 0x8d, 0x9d, 0x8e, 0xc3, 0x7f, 0xa0, 0x2f,
    +	0x41, 0xd1, 0x03, 0x12, 0x11, 0x69, 0x4e, 0x9a, 0x50, 0x83, 0x53, 0x0f, 0xbb, 0xd5, 0xa9, 0xb8,
    +	0xa8, 0x37, 0x82, 0x85, 0x1c, 0xb3, 0x69, 0x3f, 0x27, 0xe6, 0xf8, 0xa1, 0x8e, 0x86, 0x73, 0x5a,
    +	0x90, 0xc2, 0xd0, 0x37, 0xe0, 0x5c, 0x53, 0xf8, 0x71, 0x68, 0x09, 0x22, 0x67, 0x3f, 0x3b, 0xc8,
    +	0xf5, 0x43, 0x22, 0xf5, 0xff, 0x13, 0xab, 0x3c, 0x97, 0x30, 0x88, 0x93, 0x26, 0x51, 0xff, 0xa4,
    +	0xc0, 0x54, 0x72, 0x79, 0x8d, 0xde, 0x81, 0x61, 0x87, 0xff, 0x25, 0x73, 0xfa, 0x73, 0x47, 0x2f,
    +	0x45, 0xec, 0x2c, 0xbd, 0x4c, 0xf7, 0x7e, 0xbb, 0x58, 0xc2, 0xa2, 0xaf, 0x42, 0x51, 0xe7, 0xab,
    +	0x11, 0xe1, 0xfc, 0xb9, 0xac, 0x17, 0x80, 0xe8, 0xae, 0x7d, 0xf7, 0xf6, 0xc8, 0x58, 0x80, 0xaa,
    +	0x3f, 0x53, 0xe0, 0x6c, 0xcc, 0xd2, 0xd0, 0x0c, 0xe4, 0x0d, 0x8b, 0x72, 0xcb, 0xc9, 0x7b, 0x07,
    +	0xb2, 0x66, 0x51, 0x2f, 0x07, 0xb3, 0x01, 0xf4, 0x38, 0x14, 0xb6, 0xd8, 0x55, 0x31, 0xcf, 0x9d,
    +	0x65, 0xac, 0xd7, 0xad, 0x8e, 0xd4, 0x6d, 0xdb, 0xf4, 0x38, 0xf8, 0x10, 0x7a, 0x0a, 0x8a, 0x2e,
    +	0x75, 0x0c, 0x6b, 0x87, 0x17, 0x9a, 0x23, 0x5e, 0xc0, 0x68, 0x70, 0x8a, 0xc7, 0x26, 0x86, 0xd1,
    +	0x33, 0x30, 0xbc, 0x4f, 0x1c, 0x5e, 0x9e, 0x7b, 0x61, 0x95, 0x87, 0xc1, 0x4d, 0x8f, 0xe4, 0xb1,
    +	0x4a, 0x06, 0xf5, 0x63, 0x05, 0xc6, 0xa3, 0xf6, 0x7a, 0x2a, 0x15, 0x06, 0xda, 0x86, 0x31, 0x27,
    +	0x5c, 0xbc, 0x0a, 0x1f, 0xba, 0x7c, 0xac, 0x62, 0xb9, 0x3e, 0xd9, 0xeb, 0x56, 0xc7, 0xa2, 0x45,
    +	0x70, 0x14, 0x56, 0xfd, 0x71, 0x0e, 0xca, 0x62, 0x3f, 0xa6, 0x66, 0xb4, 0x50, 0xa3, 0xaf, 0x42,
    +	0x7c, 0x22, 0x93, 0x35, 0x05, 0xd5, 0x49, 0x82, 0xe3, 0x7c, 0x0d, 0xca, 0x2c, 0x99, 0x51, 0xc7,
    +	0xcb, 0x08, 0x9e, 0x11, 0xcd, 0x0d, 0x74, 0x18, 0x21, 0x10, 0xdc, 0x2b, 0x02, 0x9a, 0x8b, 0xc3,
    +	0x88, 0xe8, 0xb6, 0x6f, 0xa0, 0xf9, 0x4c, 0x79, 0x98, 0x6d, 0x35, 0x9b, 0x6d, 0x7e, 0xa8, 0x40,
    +	0x25, 0x4d, 0x28, 0x12, 0x3a, 0x94, 0x93, 0x84, 0x8e, 0xdc, 0x83, 0x08, 0x1d, 0xbf, 0x56, 0x42,
    +	0x47, 0xec, 0xba, 0xe8, 0x1d, 0x28, 0xb1, 0x3b, 0x2e, 0xef, 0x49, 0x78, 0x26, 0x7b, 0x25, 0xdb,
    +	0x8d, 0xf8, 0xf5, 0xad, 0xaf, 0x13, 0x9d, 0xde, 0x20, 0x54, 0x0b, 0x2e, 0xb0, 0x01, 0x0d, 0xfb,
    +	0xa8, 0x68, 0x0d, 0x0a, 0x6e, 0x9b, 0xe8, 0xd9, 0xb2, 0x0b, 0x5f, 0x54, 0xa3, 0x4d, 0xf4, 0xa0,
    +	0x9a, 0x64, 0xbf, 0x30, 0x87, 0x50, 0xbf, 0x1f, 0xd6, 0xbf, 0xeb, 0x46, 0xf5, 0x9f, 0xa2, 0x55,
    +	0xe5, 0x41, 0x68, 0xf5, 0x03, 0x3f, 0x68, 0xf1, 0x85, 0x5d, 0x37, 0x5c, 0x8a, 0xde, 0xea, 0xd3,
    +	0x6c, 0x2d, 0x9b, 0x66, 0x99, 0x34, 0xd7, 0xab, 0xef, 0x45, 0x92, 0x12, 0xd2, 0xea, 0xab, 0x70,
    +	0xc6, 0xa0, 0xa4, 0x25, 0xfd, 0xe7, 0x62, 0x06, 0xb5, 0x06, 0xc1, 0x65, 0x8d, 0x49, 0x62, 0x0f,
    +	0x40, 0xfd, 0x6e, 0x2e, 0xb2, 0x76, 0xa6, 0x6e, 0xf4, 0x65, 0x18, 0x71, 0x45, 0x99, 0x27, 0x3d,
    +	0x7f, 0x40, 0xc2, 0xf6, 0xab, 0xc6, 0x49, 0x31, 0xc9, 0x88, 0xa4, 0xb8, 0x38, 0xc0, 0x0a, 0xf9,
    +	0x66, 0x2e, 0xa3, 0x6f, 0xc6, 0x8e, 0x39, 0xcd, 0x37, 0xd1, 0x75, 0x38, 0x4f, 0xee, 0x52, 0x62,
    +	0x35, 0x49, 0x13, 0x0b, 0x1c, 0x5e, 0x1b, 0x7b, 0xe1, 0xbe, 0xd2, 0xeb, 0x56, 0xcf, 0xaf, 0x26,
    +	0x8c, 0xe3, 0x44, 0x29, 0xd5, 0x84, 0xa4, 0xc3, 0x47, 0xb7, 0xa0, 0x68, 0xb7, 0xb5, 0x77, 0xfd,
    +	0xf0, 0xbe, 0x90, 0xb6, 0xfc, 0xd7, 0x39, 0x57, 0x92, 0x71, 0x01, 0x5b, 0xbb, 0x37, 0x8c, 0x05,
    +	0x98, 0xfa, 0x77, 0x05, 0x26, 0xe2, 0x81, 0xee, 0x18, 0xf1, 0x64, 0x1d, 0xc6, 0x5b, 0x1a, 0xd5,
    +	0x77, 0xfd, 0x84, 0x29, 0x7a, 0xa6, 0x73, 0xbd, 0x6e, 0x75, 0xfc, 0x46, 0x64, 0xe4, 0xb0, 0x5b,
    +	0x45, 0x57, 0x3b, 0xa6, 0x79, 0x10, 0xbd, 0xce, 0xc4, 0xe4, 0xd1, 0x9b, 0x30, 0xd9, 0x34, 0x5c,
    +	0x6a, 0x58, 0x3a, 0x0d, 0x40, 0xbd, 0x26, 0xeb, 0xb3, 0xac, 0x60, 0x5e, 0x89, 0x0f, 0xa6, 0xe0,
    +	0xf6, 0xa3, 0xa8, 0x3f, 0xca, 0xf9, 0x3e, 0xdc, 0x77, 0x01, 0x42, 0x8b, 0x00, 0xba, 0x7f, 0xe3,
    +	0x8d, 0xb7, 0xc7, 0x82, 0xbb, 0x30, 0x0e, 0x71, 0x21, 0xb3, 0xef, 0x36, 0xfd, 0xc5, 0xe3, 0x5e,
    +	0xbc, 0x1e, 0x9a, 0xbb, 0xf5, 0x3f, 0x15, 0x18, 0x8b, 0x64, 0xd2, 0x0c, 0x57, 0xec, 0x37, 0x60,
    +	0x98, 0xdc, 0xd5, 0x74, 0x6a, 0xca, 0xb2, 0xe0, 0x99, 0xb4, 0x09, 0x57, 0x19, 0x5b, 0x34, 0x51,
    +	0xf3, 0x06, 0xe0, 0xaa, 0x27, 0x8e, 0x25, 0x0e, 0xda, 0x85, 0xf1, 0x6d, 0xc3, 0x71, 0xe9, 0xd2,
    +	0xbe, 0x66, 0x98, 0xda, 0x96, 0x49, 0x44, 0x26, 0x1d, 0x90, 0xa5, 0x1b, 0x9d, 0x2d, 0x89, 0x3b,
    +	0x25, 0x16, 0x3a, 0x7e, 0x35, 0x82, 0x83, 0x63, 0xb8, 0xea, 0x1f, 0x8b, 0xb2, 0xa6, 0x4f, 0x29,
    +	0x44, 0xd1, 0xd3, 0xac, 0xa0, 0xe5, 0x43, 0x42, 0x07, 0xa1, 0xca, 0x94, 0x93, 0xb1, 0x1c, 0x0f,
    +	0x7d, 0x59, 0xc8, 0x65, 0xfa, 0xb2, 0x90, 0xcf, 0xf0, 0x65, 0xa1, 0x70, 0xe4, 0x97, 0x85, 0x05,
    +	0x28, 0x6b, 0xcd, 0x96, 0x61, 0x2d, 0xe9, 0x3a, 0x71, 0x5d, 0x5e, 0x30, 0x8a, 0xbb, 0xe8, 0x52,
    +	0x40, 0xc6, 0x61, 0x1e, 0x56, 0xfe, 0x50, 0xdb, 0x24, 0x8e, 0xb8, 0xdf, 0x15, 0xb3, 0x28, 0x76,
    +	0xc3, 0x17, 0x08, 0xca, 0x9f, 0x80, 0xe6, 0xe2, 0x30, 0x62, 0xf2, 0x65, 0x77, 0xf8, 0x3e, 0x5e,
    +	0x76, 0x4b, 0x9f, 0xe9, 0xb2, 0xfb, 0x5a, 0xf0, 0x31, 0x66, 0x84, 0xeb, 0xf6, 0x4a, 0xe8, 0x63,
    +	0xcc, 0x61, 0xb7, 0xfa, 0x78, 0xda, 0x07, 0x27, 0x7a, 0xd0, 0x26, 0x6e, 0xed, 0x56, 0xf8, 0x8b,
    +	0xcd, 0xfb, 0x8a, 0xdf, 0x7c, 0x69, 0xca, 0x9a, 0x97, 0xdf, 0xeb, 0xcb, 0x8b, 0xd7, 0x4e, 0x74,
    +	0xed, 0xa9, 0x2d, 0xc7, 0xd0, 0xbc, 0x80, 0xf0, 0x74, 0xac, 0x2f, 0xd3, 0x4c, 0x6f, 0x0c, 0xf5,
    +	0xad, 0x67, 0xda, 0x85, 0x0b, 0x89, 0xa8, 0xa7, 0xda, 0xf3, 0xdc, 0x94, 0x17, 0x13, 0xbf, 0x5b,
    +	0xb3, 0x02, 0x79, 0x9d, 0x98, 0x22, 0x6f, 0xa5, 0x7e, 0x23, 0xea, 0xfb, 0x62, 0xe1, 0xb5, 0xa6,
    +	0x97, 0x57, 0xaf, 0x63, 0x26, 0xae, 0x7e, 0xab, 0x20, 0x33, 0x55, 0xe0, 0xec, 0x19, 0x62, 0xd4,
    +	0x12, 0x9c, 0x6d, 0x06, 0x09, 0x9d, 0xe7, 0x65, 0xcf, 0x45, 0x1f, 0x11, 0xcc, 0xe1, 0x0a, 0x84,
    +	0xcb, 0xc5, 0xf9, 0xa3, 0x25, 0x49, 0xfe, 0x3e, 0x96, 0x24, 0x9b, 0x30, 0x1e, 0x7c, 0xbe, 0xb9,
    +	0x61, 0x37, 0xa5, 0xcf, 0xd7, 0x64, 0x08, 0x5b, 0x8a, 0x8c, 0x1e, 0x76, 0xab, 0xe7, 0xe3, 0x37,
    +	0x5b, 0x46, 0xc7, 0x31, 0x14, 0x74, 0x11, 0xce, 0xf0, 0xac, 0xc1, 0xa3, 0x42, 0x3e, 0x28, 0xbe,
    +	0x78, 0xd8, 0xc7, 0xde, 0xd8, 0xe9, 0x47, 0x83, 0xcd, 0x50, 0x2f, 0x74, 0x98, 0x9f, 0xfd, 0xa5,
    +	0xe3, 0x34, 0xf9, 0xbd, 0x9a, 0xc3, 0x1f, 0xf1, 0xb1, 0xd4, 0x7f, 0xf9, 0xf7, 0x08, 0xde, 0x9e,
    +	0x43, 0x8f, 0x85, 0x8c, 0xb9, 0x5e, 0x16, 0xcb, 0xca, 0x5f, 0x23, 0x07, 0x9e, 0x65, 0x5f, 0x0c,
    +	0x5b, 0xf6, 0x48, 0xca, 0x35, 0xf7, 0x25, 0x28, 0x92, 0xed, 0x6d, 0xa2, 0x53, 0x11, 0x99, 0x65,
    +	0xe3, 0xb7, 0xb8, 0xca, 0xa9, 0x87, 0xac, 0xf0, 0x08, 0xa6, 0xf4, 0x88, 0x58, 0x88, 0x30, 0xfb,
    +	0xa0, 0x46, 0x8b, 0x2c, 0x35, 0x9b, 0xa4, 0x29, 0x3e, 0x26, 0x1d, 0xe7, 0xdb, 0x1e, 0x6f, 0x1a,
    +	0x6c, 0x48, 0x00, 0x1c, 0x60, 0xbd, 0x58, 0xfa, 0xc1, 0x4f, 0xaa, 0x43, 0xef, 0xfd, 0x79, 0x76,
    +	0x48, 0x7d, 0x3f, 0x27, 0x8d, 0x3f, 0x50, 0xf7, 0xa0, 0x8d, 0xbf, 0x0a, 0x25, 0xbb, 0xcd, 0x78,
    +	0x6d, 0x99, 0x95, 0x2e, 0xc9, 0xea, 0xe2, 0x75, 0x41, 0x3f, 0xec, 0x56, 0x2b, 0x71, 0x58, 0x39,
    +	0x86, 0x7d, 0xe9, 0x40, 0x85, 0xf9, 0x4c, 0x2a, 0x2c, 0x1c, 0x5f, 0x85, 0xcb, 0x30, 0x19, 0x98,
    +	0x4e, 0x83, 0xe8, 0xb6, 0xd5, 0x74, 0x85, 0xf5, 0xf2, 0xcc, 0xb1, 0x11, 0x1f, 0xc4, 0xfd, 0xfc,
    +	0xea, 0x0f, 0x0b, 0x80, 0xfa, 0x0b, 0x8d, 0xa4, 0x08, 0xa0, 0x7c, 0x96, 0x08, 0x90, 0x3b, 0xd5,
    +	0x08, 0x90, 0xbf, 0xbf, 0x11, 0xa0, 0x70, 0x44, 0x04, 0x78, 0x18, 0x4b, 0x88, 0xd3, 0x0a, 0x1a,
    +	0x3f, 0x57, 0x60, 0xb2, 0xef, 0x15, 0x02, 0x7a, 0x09, 0xc6, 0x0c, 0x56, 0x08, 0x6f, 0x6b, 0xe2,
    +	0xca, 0xe6, 0x19, 0xc6, 0x05, 0xb1, 0xcc, 0xb1, 0xb5, 0xf0, 0x20, 0x8e, 0xf2, 0xa2, 0x47, 0x21,
    +	0x6f, 0xb4, 0x65, 0xaf, 0x96, 0xe7, 0xaa, 0xb5, 0x75, 0x17, 0x33, 0x1a, 0x33, 0xb9, 0x5d, 0xcd,
    +	0x69, 0xde, 0xd1, 0x1c, 0xe6, 0xc9, 0x0e, 0xd3, 0x6e, 0x3e, 0x6a, 0x72, 0xaf, 0x46, 0x87, 0x71,
    +	0x9c, 0x5f, 0xfd, 0xa9, 0x02, 0x8f, 0xa6, 0x5e, 0xe5, 0x32, 0xbf, 0x64, 0xd1, 0x00, 0xda, 0x9a,
    +	0xa3, 0xb5, 0x88, 0xb8, 0xa3, 0x9c, 0xe0, 0xe5, 0x87, 0x7f, 0x09, 0x5a, 0xf7, 0x81, 0x70, 0x08,
    +	0x54, 0xfd, 0x5e, 0x0e, 0xc6, 0xe4, 0x05, 0xd6, 0xeb, 0xdd, 0x9d, 0x7e, 0x63, 0xe7, 0x5a, 0xa4,
    +	0xb1, 0x93, 0x5a, 0x52, 0x44, 0x96, 0x95, 0xd6, 0xda, 0x41, 0x0d, 0x28, 0xba, 0xfc, 0x7d, 0xd0,
    +	0xa0, 0x0e, 0x7a, 0x14, 0x8e, 0x8b, 0x04, 0x8a, 0xf7, 0x7e, 0x63, 0x01, 0xa5, 0xf6, 0x14, 0x98,
    +	0x89, 0xf0, 0x8b, 0x42, 0xcc, 0xc1, 0x64, 0x9b, 0x38, 0xc4, 0xd2, 0x09, 0xba, 0x04, 0x25, 0xad,
    +	0x6d, 0xbc, 0xe2, 0xd8, 0x9d, 0xb6, 0x38, 0x45, 0xff, 0xf6, 0xb7, 0xb4, 0xbe, 0xc6, 0xe9, 0xd8,
    +	0xe7, 0x60, 0xdc, 0x72, 0x2d, 0xc2, 0x96, 0x42, 0x9d, 0x4e, 0x8f, 0x8e, 0x7d, 0x0e, 0xbf, 0x2e,
    +	0x2a, 0xa4, 0xd6, 0x45, 0x75, 0xc8, 0x77, 0x8c, 0xa6, 0x68, 0x34, 0x5f, 0x91, 0xc9, 0xe3, 0x56,
    +	0xd6, 0x42, 0x98, 0x09, 0xab, 0xbf, 0x55, 0x60, 0x32, 0xb2, 0xc9, 0x07, 0xd0, 0x7d, 0x7a, 0x2d,
    +	0xda, 0x7d, 0x7a, 0x22, 0xd3, 0x61, 0xa5, 0xf4, 0x9f, 0xf4, 0xd8, 0xf2, 0x79, 0x03, 0xea, 0x66,
    +	0xfc, 0x99, 0xd1, 0xc5, 0x0c, 0x4d, 0xdc, 0xf4, 0xb7, 0x45, 0xea, 0xaf, 0x72, 0x70, 0x2e, 0xc1,
    +	0x72, 0xd0, 0x6d, 0x80, 0x20, 0x68, 0x8b, 0xa9, 0x52, 0x23, 0x69, 0xdf, 0x47, 0x12, 0xfe, 0xf2,
    +	0x24, 0x44, 0x0d, 0x61, 0xa1, 0x16, 0x94, 0x1d, 0xe2, 0x12, 0x67, 0x9f, 0x34, 0xaf, 0xf2, 0xdc,
    +	0xcf, 0x14, 0xf5, 0x7c, 0x26, 0x45, 0xf5, 0x59, 0x69, 0x10, 0xb2, 0x71, 0x00, 0x89, 0xc3, 0xf8,
    +	0xe8, 0x76, 0xa0, 0x30, 0xef, 0xeb, 0xf3, 0xe5, 0x01, 0xbb, 0x88, 0xbe, 0xca, 0x3b, 0x42, 0x75,
    +	0x7f, 0x50, 0xe0, 0x42, 0x64, 0x79, 0x1b, 0xa4, 0xd5, 0x36, 0x35, 0x4a, 0x1e, 0x40, 0x88, 0x69,
    +	0x44, 0x42, 0xcc, 0x42, 0x26, 0xed, 0xc9, 0xe5, 0xa5, 0x76, 0x91, 0x3f, 0x56, 0xe0, 0xd1, 0x44,
    +	0x89, 0x07, 0xe0, 0x38, 0x38, 0xea, 0x38, 0x97, 0x8f, 0xb5, 0xa3, 0x14, 0x07, 0xfa, 0x7d, 0xda,
    +	0x7e, 0xb8, 0x27, 0xfd, 0x6f, 0xe5, 0x01, 0xf5, 0x17, 0x0a, 0x8c, 0x4a, 0xce, 0x75, 0xdb, 0x36,
    +	0x33, 0x5c, 0x2e, 0x17, 0x01, 0xc4, 0xeb, 0x53, 0xf9, 0x15, 0x25, 0x1f, 0xac, 0xf8, 0x15, 0x7f,
    +	0x04, 0x87, 0xb8, 0xd0, 0x6b, 0x80, 0xe4, 0xda, 0x1a, 0xa6, 0xec, 0x09, 0xf2, 0x90, 0x9e, 0xaf,
    +	0x4f, 0x0b, 0x59, 0x84, 0xfb, 0x38, 0x70, 0x82, 0x94, 0xfa, 0x3b, 0x25, 0xc8, 0xbd, 0x9c, 0xfc,
    +	0xf0, 0xe9, 0x9c, 0x2f, 0x2b, 0x55, 0xe7, 0xe1, 0x0c, 0xc2, 0x39, 0x1f, 0xc2, 0x0c, 0xc2, 0xd7,
    +	0x95, 0xe2, 0x00, 0xbf, 0x2c, 0xc4, 0xd6, 0xcf, 0x0d, 0x3f, 0x6b, 0x75, 0x76, 0x35, 0xf4, 0xce,
    +	0xb8, 0xbc, 0xf8, 0xb9, 0x41, 0x0b, 0x61, 0x46, 0x99, 0xd8, 0x33, 0x0c, 0x3f, 0xc8, 0xc9, 0x1f,
    +	0xeb, 0x41, 0x4e, 0xe1, 0x14, 0x1e, 0xe4, 0x9c, 0x39, 0xf2, 0x41, 0xce, 0x5a, 0x90, 0x2d, 0xbc,
    +	0xdb, 0xc3, 0xcc, 0xd1, 0xe9, 0xf5, 0x88, 0x57, 0xbb, 0x18, 0xa6, 0xda, 0xc4, 0xf1, 0xc8, 0xc1,
    +	0xda, 0x98, 0x27, 0x7a, 0x6f, 0x82, 0xa6, 0x7b, 0xdd, 0xea, 0xd4, 0x7a, 0x22, 0x07, 0x4e, 0x91,
    +	0x44, 0x5b, 0x30, 0xce, 0x5b, 0x7c, 0x4d, 0xff, 0x45, 0x95, 0xf7, 0x6e, 0x48, 0x1d, 0xfc, 0x4c,
    +	0x2e, 0xe8, 0x3c, 0x37, 0x22, 0x08, 0x38, 0x86, 0x58, 0x7f, 0xf9, 0xa3, 0x7b, 0x33, 0x43, 0x9f,
    +	0xdc, 0x9b, 0x19, 0xfa, 0xf4, 0xde, 0xcc, 0xd0, 0x7b, 0xbd, 0x19, 0xe5, 0xa3, 0xde, 0x8c, 0xf2,
    +	0x49, 0x6f, 0x46, 0xf9, 0xb4, 0x37, 0xa3, 0xfc, 0xb5, 0x37, 0xa3, 0x7c, 0xe7, 0x6f, 0x33, 0x43,
    +	0x5f, 0x99, 0x4a, 0xfe, 0x77, 0x81, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x0d, 0x0c, 0xec, 0x16,
    +	0x47, 0x30, 0x00, 0x00,
    +}
    +
    +func (m *AllocatedDeviceStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *AllocatedDeviceStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *AllocatedDeviceStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.ShareID != nil {
    +		i -= len(*m.ShareID)
    +		copy(dAtA[i:], *m.ShareID)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ShareID)))
    +		i--
    +		dAtA[i] = 0x3a
    +	}
    +	if m.NetworkData != nil {
    +		{
    +			size, err := m.NetworkData.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x32
    +	}
    +	if m.Data != nil {
    +		{
    +			size, err := m.Data.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x2a
    +	}
    +	if len(m.Conditions) > 0 {
    +		for iNdEx := len(m.Conditions) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Conditions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x22
    +		}
    +	}
    +	i -= len(m.Device)
    +	copy(dAtA[i:], m.Device)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Device)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.Pool)
    +	copy(dAtA[i:], m.Pool)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Pool)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Driver)
    +	copy(dAtA[i:], m.Driver)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *AllocationResult) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *AllocationResult) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *AllocationResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.AllocationTimestamp != nil {
    +		{
    +			size, err := m.AllocationTimestamp.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x2a
    +	}
    +	if m.NodeSelector != nil {
    +		{
    +			size, err := m.NodeSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	{
    +		size, err := m.Devices.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *CELDeviceSelector) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *CELDeviceSelector) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *CELDeviceSelector) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.Expression)
    +	copy(dAtA[i:], m.Expression)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Expression)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *CapacityRequestPolicy) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *CapacityRequestPolicy) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *CapacityRequestPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.ValidRange != nil {
    +		{
    +			size, err := m.ValidRange.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	if len(m.ValidValues) > 0 {
    +		for iNdEx := len(m.ValidValues) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.ValidValues[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	if m.Default != nil {
    +		{
    +			size, err := m.Default.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *CapacityRequestPolicyRange) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *CapacityRequestPolicyRange) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *CapacityRequestPolicyRange) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.Step != nil {
    +		{
    +			size, err := m.Step.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	if m.Max != nil {
    +		{
    +			size, err := m.Max.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	if m.Min != nil {
    +		{
    +			size, err := m.Min.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *CapacityRequirements) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *CapacityRequirements) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *CapacityRequirements) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Requests) > 0 {
    +		keysForRequests := make([]string, 0, len(m.Requests))
    +		for k := range m.Requests {
    +			keysForRequests = append(keysForRequests, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForRequests)
    +		for iNdEx := len(keysForRequests) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.Requests[QualifiedName(keysForRequests[iNdEx])]
    +			baseI := i
    +			{
    +				size, err := (&v).MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForRequests[iNdEx])
    +			copy(dAtA[i:], keysForRequests[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForRequests[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *Counter) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *Counter) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *Counter) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Value.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *CounterSet) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *CounterSet) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *CounterSet) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Counters) > 0 {
    +		keysForCounters := make([]string, 0, len(m.Counters))
    +		for k := range m.Counters {
    +			keysForCounters = append(keysForCounters, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForCounters)
    +		for iNdEx := len(keysForCounters) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.Counters[string(keysForCounters[iNdEx])]
    +			baseI := i
    +			{
    +				size, err := (&v).MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForCounters[iNdEx])
    +			copy(dAtA[i:], keysForCounters[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForCounters[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *Device) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *Device) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *Device) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.AllowMultipleAllocations != nil {
    +		i--
    +		if *m.AllowMultipleAllocations {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x60
    +	}
    +	if len(m.BindingFailureConditions) > 0 {
    +		for iNdEx := len(m.BindingFailureConditions) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.BindingFailureConditions[iNdEx])
    +			copy(dAtA[i:], m.BindingFailureConditions[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.BindingFailureConditions[iNdEx])))
    +			i--
    +			dAtA[i] = 0x5a
    +		}
    +	}
    +	if len(m.BindingConditions) > 0 {
    +		for iNdEx := len(m.BindingConditions) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.BindingConditions[iNdEx])
    +			copy(dAtA[i:], m.BindingConditions[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.BindingConditions[iNdEx])))
    +			i--
    +			dAtA[i] = 0x52
    +		}
    +	}
    +	if m.BindsToNode != nil {
    +		i--
    +		if *m.BindsToNode {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x48
    +	}
    +	if len(m.Taints) > 0 {
    +		for iNdEx := len(m.Taints) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Taints[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x42
    +		}
    +	}
    +	if m.AllNodes != nil {
    +		i--
    +		if *m.AllNodes {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x38
    +	}
    +	if m.NodeSelector != nil {
    +		{
    +			size, err := m.NodeSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x32
    +	}
    +	if m.NodeName != nil {
    +		i -= len(*m.NodeName)
    +		copy(dAtA[i:], *m.NodeName)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.NodeName)))
    +		i--
    +		dAtA[i] = 0x2a
    +	}
    +	if len(m.ConsumesCounters) > 0 {
    +		for iNdEx := len(m.ConsumesCounters) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.ConsumesCounters[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x22
    +		}
    +	}
    +	if len(m.Capacity) > 0 {
    +		keysForCapacity := make([]string, 0, len(m.Capacity))
    +		for k := range m.Capacity {
    +			keysForCapacity = append(keysForCapacity, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity)
    +		for iNdEx := len(keysForCapacity) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.Capacity[QualifiedName(keysForCapacity[iNdEx])]
    +			baseI := i
    +			{
    +				size, err := (&v).MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForCapacity[iNdEx])
    +			copy(dAtA[i:], keysForCapacity[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForCapacity[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	if len(m.Attributes) > 0 {
    +		keysForAttributes := make([]string, 0, len(m.Attributes))
    +		for k := range m.Attributes {
    +			keysForAttributes = append(keysForAttributes, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForAttributes)
    +		for iNdEx := len(keysForAttributes) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.Attributes[QualifiedName(keysForAttributes[iNdEx])]
    +			baseI := i
    +			{
    +				size, err := (&v).MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForAttributes[iNdEx])
    +			copy(dAtA[i:], keysForAttributes[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForAttributes[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceAllocationConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceAllocationConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceAllocationConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.DeviceConfiguration.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x1a
    +	if len(m.Requests) > 0 {
    +		for iNdEx := len(m.Requests) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Requests[iNdEx])
    +			copy(dAtA[i:], m.Requests[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Requests[iNdEx])))
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.Source)
    +	copy(dAtA[i:], m.Source)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Source)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceAllocationResult) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceAllocationResult) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceAllocationResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Config) > 0 {
    +		for iNdEx := len(m.Config) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Config[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if len(m.Results) > 0 {
    +		for iNdEx := len(m.Results) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Results[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceAttribute) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceAttribute) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceAttribute) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.VersionValue != nil {
    +		i -= len(*m.VersionValue)
    +		copy(dAtA[i:], *m.VersionValue)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.VersionValue)))
    +		i--
    +		dAtA[i] = 0x2a
    +	}
    +	if m.StringValue != nil {
    +		i -= len(*m.StringValue)
    +		copy(dAtA[i:], *m.StringValue)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.StringValue)))
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	if m.BoolValue != nil {
    +		i--
    +		if *m.BoolValue {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x18
    +	}
    +	if m.IntValue != nil {
    +		i = encodeVarintGenerated(dAtA, i, uint64(*m.IntValue))
    +		i--
    +		dAtA[i] = 0x10
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceCapacity) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceCapacity) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceCapacity) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.RequestPolicy != nil {
    +		{
    +			size, err := m.RequestPolicy.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	{
    +		size, err := m.Value.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClaim) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClaim) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClaim) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Config) > 0 {
    +		for iNdEx := len(m.Config) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Config[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	if len(m.Constraints) > 0 {
    +		for iNdEx := len(m.Constraints) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Constraints[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if len(m.Requests) > 0 {
    +		for iNdEx := len(m.Requests) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Requests[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClaimConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClaimConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClaimConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.DeviceConfiguration.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	if len(m.Requests) > 0 {
    +		for iNdEx := len(m.Requests) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Requests[iNdEx])
    +			copy(dAtA[i:], m.Requests[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Requests[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClass) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClass) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClass) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClassConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClassConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClassConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.DeviceConfiguration.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClassList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClassList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClassList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceClassSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceClassSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceClassSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.ExtendedResourceName != nil {
    +		i -= len(*m.ExtendedResourceName)
    +		copy(dAtA[i:], *m.ExtendedResourceName)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ExtendedResourceName)))
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	if len(m.Config) > 0 {
    +		for iNdEx := len(m.Config) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Config[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if len(m.Selectors) > 0 {
    +		for iNdEx := len(m.Selectors) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Selectors[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.Opaque != nil {
    +		{
    +			size, err := m.Opaque.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceConstraint) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceConstraint) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceConstraint) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.DistinctAttribute != nil {
    +		i -= len(*m.DistinctAttribute)
    +		copy(dAtA[i:], *m.DistinctAttribute)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.DistinctAttribute)))
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	if m.MatchAttribute != nil {
    +		i -= len(*m.MatchAttribute)
    +		copy(dAtA[i:], *m.MatchAttribute)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.MatchAttribute)))
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	if len(m.Requests) > 0 {
    +		for iNdEx := len(m.Requests) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.Requests[iNdEx])
    +			copy(dAtA[i:], m.Requests[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.Requests[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +		}
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceCounterConsumption) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceCounterConsumption) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceCounterConsumption) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Counters) > 0 {
    +		keysForCounters := make([]string, 0, len(m.Counters))
    +		for k := range m.Counters {
    +			keysForCounters = append(keysForCounters, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForCounters)
    +		for iNdEx := len(keysForCounters) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.Counters[string(keysForCounters[iNdEx])]
    +			baseI := i
    +			{
    +				size, err := (&v).MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForCounters[iNdEx])
    +			copy(dAtA[i:], keysForCounters[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForCounters[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.CounterSet)
    +	copy(dAtA[i:], m.CounterSet)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.CounterSet)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceRequest) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceRequest) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.FirstAvailable) > 0 {
    +		for iNdEx := len(m.FirstAvailable) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.FirstAvailable[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	if m.Exactly != nil {
    +		{
    +			size, err := m.Exactly.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x12
    +	}
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceRequestAllocationResult) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceRequestAllocationResult) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceRequestAllocationResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.ConsumedCapacity) > 0 {
    +		keysForConsumedCapacity := make([]string, 0, len(m.ConsumedCapacity))
    +		for k := range m.ConsumedCapacity {
    +			keysForConsumedCapacity = append(keysForConsumedCapacity, string(k))
    +		}
    +		github_com_gogo_protobuf_sortkeys.Strings(keysForConsumedCapacity)
    +		for iNdEx := len(keysForConsumedCapacity) - 1; iNdEx >= 0; iNdEx-- {
    +			v := m.ConsumedCapacity[QualifiedName(keysForConsumedCapacity[iNdEx])]
    +			baseI := i
    +			{
    +				size, err := (&v).MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +			i -= len(keysForConsumedCapacity[iNdEx])
    +			copy(dAtA[i:], keysForConsumedCapacity[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(keysForConsumedCapacity[iNdEx])))
    +			i--
    +			dAtA[i] = 0xa
    +			i = encodeVarintGenerated(dAtA, i, uint64(baseI-i))
    +			i--
    +			dAtA[i] = 0x52
    +		}
    +	}
    +	if m.ShareID != nil {
    +		i -= len(*m.ShareID)
    +		copy(dAtA[i:], *m.ShareID)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ShareID)))
    +		i--
    +		dAtA[i] = 0x4a
    +	}
    +	if len(m.BindingFailureConditions) > 0 {
    +		for iNdEx := len(m.BindingFailureConditions) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.BindingFailureConditions[iNdEx])
    +			copy(dAtA[i:], m.BindingFailureConditions[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.BindingFailureConditions[iNdEx])))
    +			i--
    +			dAtA[i] = 0x42
    +		}
    +	}
    +	if len(m.BindingConditions) > 0 {
    +		for iNdEx := len(m.BindingConditions) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.BindingConditions[iNdEx])
    +			copy(dAtA[i:], m.BindingConditions[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.BindingConditions[iNdEx])))
    +			i--
    +			dAtA[i] = 0x3a
    +		}
    +	}
    +	if len(m.Tolerations) > 0 {
    +		for iNdEx := len(m.Tolerations) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Tolerations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x32
    +		}
    +	}
    +	if m.AdminAccess != nil {
    +		i--
    +		if *m.AdminAccess {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x28
    +	}
    +	i -= len(m.Device)
    +	copy(dAtA[i:], m.Device)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Device)))
    +	i--
    +	dAtA[i] = 0x22
    +	i -= len(m.Pool)
    +	copy(dAtA[i:], m.Pool)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Pool)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.Driver)
    +	copy(dAtA[i:], m.Driver)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Request)
    +	copy(dAtA[i:], m.Request)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Request)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceSelector) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceSelector) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceSelector) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.CEL != nil {
    +		{
    +			size, err := m.CEL.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceSubRequest) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceSubRequest) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceSubRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.Capacity != nil {
    +		{
    +			size, err := m.Capacity.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x3a
    +	}
    +	if len(m.Tolerations) > 0 {
    +		for iNdEx := len(m.Tolerations) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Tolerations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x32
    +		}
    +	}
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.Count))
    +	i--
    +	dAtA[i] = 0x28
    +	i -= len(m.AllocationMode)
    +	copy(dAtA[i:], m.AllocationMode)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.AllocationMode)))
    +	i--
    +	dAtA[i] = 0x22
    +	if len(m.Selectors) > 0 {
    +		for iNdEx := len(m.Selectors) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Selectors[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x1a
    +		}
    +	}
    +	i -= len(m.DeviceClassName)
    +	copy(dAtA[i:], m.DeviceClassName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.DeviceClassName)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceTaint) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceTaint) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceTaint) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.TimeAdded != nil {
    +		{
    +			size, err := m.TimeAdded.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	i -= len(m.Effect)
    +	copy(dAtA[i:], m.Effect)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Effect)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.Value)
    +	copy(dAtA[i:], m.Value)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Value)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Key)
    +	copy(dAtA[i:], m.Key)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *DeviceToleration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *DeviceToleration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *DeviceToleration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.TolerationSeconds != nil {
    +		i = encodeVarintGenerated(dAtA, i, uint64(*m.TolerationSeconds))
    +		i--
    +		dAtA[i] = 0x28
    +	}
    +	i -= len(m.Effect)
    +	copy(dAtA[i:], m.Effect)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Effect)))
    +	i--
    +	dAtA[i] = 0x22
    +	i -= len(m.Value)
    +	copy(dAtA[i:], m.Value)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Value)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.Operator)
    +	copy(dAtA[i:], m.Operator)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Operator)))
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Key)
    +	copy(dAtA[i:], m.Key)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ExactDeviceRequest) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ExactDeviceRequest) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ExactDeviceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if m.Capacity != nil {
    +		{
    +			size, err := m.Capacity.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x3a
    +	}
    +	if len(m.Tolerations) > 0 {
    +		for iNdEx := len(m.Tolerations) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Tolerations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x32
    +		}
    +	}
    +	if m.AdminAccess != nil {
    +		i--
    +		if *m.AdminAccess {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x28
    +	}
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.Count))
    +	i--
    +	dAtA[i] = 0x20
    +	i -= len(m.AllocationMode)
    +	copy(dAtA[i:], m.AllocationMode)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.AllocationMode)))
    +	i--
    +	dAtA[i] = 0x1a
    +	if len(m.Selectors) > 0 {
    +		for iNdEx := len(m.Selectors) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Selectors[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.DeviceClassName)
    +	copy(dAtA[i:], m.DeviceClassName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.DeviceClassName)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *NetworkDeviceData) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *NetworkDeviceData) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *NetworkDeviceData) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.HardwareAddress)
    +	copy(dAtA[i:], m.HardwareAddress)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.HardwareAddress)))
    +	i--
    +	dAtA[i] = 0x1a
    +	if len(m.IPs) > 0 {
    +		for iNdEx := len(m.IPs) - 1; iNdEx >= 0; iNdEx-- {
    +			i -= len(m.IPs[iNdEx])
    +			copy(dAtA[i:], m.IPs[iNdEx])
    +			i = encodeVarintGenerated(dAtA, i, uint64(len(m.IPs[iNdEx])))
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	i -= len(m.InterfaceName)
    +	copy(dAtA[i:], m.InterfaceName)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.InterfaceName)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *OpaqueDeviceConfiguration) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *OpaqueDeviceConfiguration) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *OpaqueDeviceConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Parameters.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Driver)
    +	copy(dAtA[i:], m.Driver)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaim) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaim) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaim) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x1a
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimConsumerReference) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimConsumerReference) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimConsumerReference) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i -= len(m.UID)
    +	copy(dAtA[i:], m.UID)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.UID)))
    +	i--
    +	dAtA[i] = 0x2a
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0x22
    +	i -= len(m.Resource)
    +	copy(dAtA[i:], m.Resource)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Resource)))
    +	i--
    +	dAtA[i] = 0x1a
    +	i -= len(m.APIGroup)
    +	copy(dAtA[i:], m.APIGroup)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.APIGroup)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Devices.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimStatus) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimStatus) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Devices) > 0 {
    +		for iNdEx := len(m.Devices) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Devices[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x22
    +		}
    +	}
    +	if len(m.ReservedFor) > 0 {
    +		for iNdEx := len(m.ReservedFor) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.ReservedFor[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	if m.Allocation != nil {
    +		{
    +			size, err := m.Allocation.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0xa
    +	}
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimTemplate) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimTemplate) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimTemplate) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimTemplateList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimTemplateList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimTemplateList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceClaimTemplateSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceClaimTemplateSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceClaimTemplateSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourcePool) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourcePool) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourcePool) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.ResourceSliceCount))
    +	i--
    +	dAtA[i] = 0x18
    +	i = encodeVarintGenerated(dAtA, i, uint64(m.Generation))
    +	i--
    +	dAtA[i] = 0x10
    +	i -= len(m.Name)
    +	copy(dAtA[i:], m.Name)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceSlice) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceSlice) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceSlice) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	{
    +		size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	{
    +		size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceSliceList) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceSliceList) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceSliceList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.Items) > 0 {
    +		for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x12
    +		}
    +	}
    +	{
    +		size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func (m *ResourceSliceSpec) Marshal() (dAtA []byte, err error) {
    +	size := m.Size()
    +	dAtA = make([]byte, size)
    +	n, err := m.MarshalToSizedBuffer(dAtA[:size])
    +	if err != nil {
    +		return nil, err
    +	}
    +	return dAtA[:n], nil
    +}
    +
    +func (m *ResourceSliceSpec) MarshalTo(dAtA []byte) (int, error) {
    +	size := m.Size()
    +	return m.MarshalToSizedBuffer(dAtA[:size])
    +}
    +
    +func (m *ResourceSliceSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
    +	i := len(dAtA)
    +	_ = i
    +	var l int
    +	_ = l
    +	if len(m.SharedCounters) > 0 {
    +		for iNdEx := len(m.SharedCounters) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.SharedCounters[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x42
    +		}
    +	}
    +	if m.PerDeviceNodeSelection != nil {
    +		i--
    +		if *m.PerDeviceNodeSelection {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x38
    +	}
    +	if len(m.Devices) > 0 {
    +		for iNdEx := len(m.Devices) - 1; iNdEx >= 0; iNdEx-- {
    +			{
    +				size, err := m.Devices[iNdEx].MarshalToSizedBuffer(dAtA[:i])
    +				if err != nil {
    +					return 0, err
    +				}
    +				i -= size
    +				i = encodeVarintGenerated(dAtA, i, uint64(size))
    +			}
    +			i--
    +			dAtA[i] = 0x32
    +		}
    +	}
    +	if m.AllNodes != nil {
    +		i--
    +		if *m.AllNodes {
    +			dAtA[i] = 1
    +		} else {
    +			dAtA[i] = 0
    +		}
    +		i--
    +		dAtA[i] = 0x28
    +	}
    +	if m.NodeSelector != nil {
    +		{
    +			size, err := m.NodeSelector.MarshalToSizedBuffer(dAtA[:i])
    +			if err != nil {
    +				return 0, err
    +			}
    +			i -= size
    +			i = encodeVarintGenerated(dAtA, i, uint64(size))
    +		}
    +		i--
    +		dAtA[i] = 0x22
    +	}
    +	if m.NodeName != nil {
    +		i -= len(*m.NodeName)
    +		copy(dAtA[i:], *m.NodeName)
    +		i = encodeVarintGenerated(dAtA, i, uint64(len(*m.NodeName)))
    +		i--
    +		dAtA[i] = 0x1a
    +	}
    +	{
    +		size, err := m.Pool.MarshalToSizedBuffer(dAtA[:i])
    +		if err != nil {
    +			return 0, err
    +		}
    +		i -= size
    +		i = encodeVarintGenerated(dAtA, i, uint64(size))
    +	}
    +	i--
    +	dAtA[i] = 0x12
    +	i -= len(m.Driver)
    +	copy(dAtA[i:], m.Driver)
    +	i = encodeVarintGenerated(dAtA, i, uint64(len(m.Driver)))
    +	i--
    +	dAtA[i] = 0xa
    +	return len(dAtA) - i, nil
    +}
    +
    +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
    +	offset -= sovGenerated(v)
    +	base := offset
    +	for v >= 1<<7 {
    +		dAtA[offset] = uint8(v&0x7f | 0x80)
    +		v >>= 7
    +		offset++
    +	}
    +	dAtA[offset] = uint8(v)
    +	return base
    +}
    +func (m *AllocatedDeviceStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Driver)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Pool)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Device)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Conditions) > 0 {
    +		for _, e := range m.Conditions {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.Data != nil {
    +		l = m.Data.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.NetworkData != nil {
    +		l = m.NetworkData.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.ShareID != nil {
    +		l = len(*m.ShareID)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *AllocationResult) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.Devices.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.NodeSelector != nil {
    +		l = m.NodeSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.AllocationTimestamp != nil {
    +		l = m.AllocationTimestamp.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *CELDeviceSelector) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Expression)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *CapacityRequestPolicy) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.Default != nil {
    +		l = m.Default.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.ValidValues) > 0 {
    +		for _, e := range m.ValidValues {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.ValidRange != nil {
    +		l = m.ValidRange.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *CapacityRequestPolicyRange) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.Min != nil {
    +		l = m.Min.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.Max != nil {
    +		l = m.Max.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.Step != nil {
    +		l = m.Step.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *CapacityRequirements) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Requests) > 0 {
    +		for k, v := range m.Requests {
    +			_ = k
    +			_ = v
    +			l = v.Size()
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *Counter) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.Value.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *CounterSet) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Counters) > 0 {
    +		for k, v := range m.Counters {
    +			_ = k
    +			_ = v
    +			l = v.Size()
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *Device) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Attributes) > 0 {
    +		for k, v := range m.Attributes {
    +			_ = k
    +			_ = v
    +			l = v.Size()
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	if len(m.Capacity) > 0 {
    +		for k, v := range m.Capacity {
    +			_ = k
    +			_ = v
    +			l = v.Size()
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	if len(m.ConsumesCounters) > 0 {
    +		for _, e := range m.ConsumesCounters {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.NodeName != nil {
    +		l = len(*m.NodeName)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.NodeSelector != nil {
    +		l = m.NodeSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.AllNodes != nil {
    +		n += 2
    +	}
    +	if len(m.Taints) > 0 {
    +		for _, e := range m.Taints {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.BindsToNode != nil {
    +		n += 2
    +	}
    +	if len(m.BindingConditions) > 0 {
    +		for _, s := range m.BindingConditions {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.BindingFailureConditions) > 0 {
    +		for _, s := range m.BindingFailureConditions {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.AllowMultipleAllocations != nil {
    +		n += 2
    +	}
    +	return n
    +}
    +
    +func (m *DeviceAllocationConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Source)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Requests) > 0 {
    +		for _, s := range m.Requests {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = m.DeviceConfiguration.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceAllocationResult) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Results) > 0 {
    +		for _, e := range m.Results {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Config) > 0 {
    +		for _, e := range m.Config {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceAttribute) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.IntValue != nil {
    +		n += 1 + sovGenerated(uint64(*m.IntValue))
    +	}
    +	if m.BoolValue != nil {
    +		n += 2
    +	}
    +	if m.StringValue != nil {
    +		l = len(*m.StringValue)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.VersionValue != nil {
    +		l = len(*m.VersionValue)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceCapacity) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.Value.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.RequestPolicy != nil {
    +		l = m.RequestPolicy.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceClaim) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Requests) > 0 {
    +		for _, e := range m.Requests {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Constraints) > 0 {
    +		for _, e := range m.Constraints {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Config) > 0 {
    +		for _, e := range m.Config {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceClaimConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Requests) > 0 {
    +		for _, s := range m.Requests {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = m.DeviceConfiguration.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceClass) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceClassConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.DeviceConfiguration.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *DeviceClassList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceClassSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Selectors) > 0 {
    +		for _, e := range m.Selectors {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Config) > 0 {
    +		for _, e := range m.Config {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.ExtendedResourceName != nil {
    +		l = len(*m.ExtendedResourceName)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.Opaque != nil {
    +		l = m.Opaque.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceConstraint) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if len(m.Requests) > 0 {
    +		for _, s := range m.Requests {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.MatchAttribute != nil {
    +		l = len(*m.MatchAttribute)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.DistinctAttribute != nil {
    +		l = len(*m.DistinctAttribute)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceCounterConsumption) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.CounterSet)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Counters) > 0 {
    +		for k, v := range m.Counters {
    +			_ = k
    +			_ = v
    +			l = v.Size()
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceRequest) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.Exactly != nil {
    +		l = m.Exactly.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.FirstAvailable) > 0 {
    +		for _, e := range m.FirstAvailable {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceRequestAllocationResult) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Request)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Driver)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Pool)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Device)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.AdminAccess != nil {
    +		n += 2
    +	}
    +	if len(m.Tolerations) > 0 {
    +		for _, e := range m.Tolerations {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.BindingConditions) > 0 {
    +		for _, s := range m.BindingConditions {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.BindingFailureConditions) > 0 {
    +		for _, s := range m.BindingFailureConditions {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.ShareID != nil {
    +		l = len(*m.ShareID)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.ConsumedCapacity) > 0 {
    +		for k, v := range m.ConsumedCapacity {
    +			_ = k
    +			_ = v
    +			l = v.Size()
    +			mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l))
    +			n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *DeviceSelector) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.CEL != nil {
    +		l = m.CEL.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceSubRequest) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.DeviceClassName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Selectors) > 0 {
    +		for _, e := range m.Selectors {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = len(m.AllocationMode)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	n += 1 + sovGenerated(uint64(m.Count))
    +	if len(m.Tolerations) > 0 {
    +		for _, e := range m.Tolerations {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.Capacity != nil {
    +		l = m.Capacity.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceTaint) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Key)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Value)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Effect)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.TimeAdded != nil {
    +		l = m.TimeAdded.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *DeviceToleration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Key)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Operator)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Value)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Effect)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.TolerationSeconds != nil {
    +		n += 1 + sovGenerated(uint64(*m.TolerationSeconds))
    +	}
    +	return n
    +}
    +
    +func (m *ExactDeviceRequest) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.DeviceClassName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Selectors) > 0 {
    +		for _, e := range m.Selectors {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = len(m.AllocationMode)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	n += 1 + sovGenerated(uint64(m.Count))
    +	if m.AdminAccess != nil {
    +		n += 2
    +	}
    +	if len(m.Tolerations) > 0 {
    +		for _, e := range m.Tolerations {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.Capacity != nil {
    +		l = m.Capacity.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	return n
    +}
    +
    +func (m *NetworkDeviceData) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.InterfaceName)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.IPs) > 0 {
    +		for _, s := range m.IPs {
    +			l = len(s)
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	l = len(m.HardwareAddress)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *OpaqueDeviceConfiguration) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Driver)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Parameters.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaim) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Status.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaimConsumerReference) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.APIGroup)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Resource)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = len(m.UID)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaimList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ResourceClaimSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.Devices.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaimStatus) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	if m.Allocation != nil {
    +		l = m.Allocation.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if len(m.ReservedFor) > 0 {
    +		for _, e := range m.ReservedFor {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if len(m.Devices) > 0 {
    +		for _, e := range m.Devices {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ResourceClaimTemplate) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceClaimTemplateList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ResourceClaimTemplateSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourcePool) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Name)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	n += 1 + sovGenerated(uint64(m.Generation))
    +	n += 1 + sovGenerated(uint64(m.ResourceSliceCount))
    +	return n
    +}
    +
    +func (m *ResourceSlice) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ObjectMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Spec.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	return n
    +}
    +
    +func (m *ResourceSliceList) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = m.ListMeta.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if len(m.Items) > 0 {
    +		for _, e := range m.Items {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func (m *ResourceSliceSpec) Size() (n int) {
    +	if m == nil {
    +		return 0
    +	}
    +	var l int
    +	_ = l
    +	l = len(m.Driver)
    +	n += 1 + l + sovGenerated(uint64(l))
    +	l = m.Pool.Size()
    +	n += 1 + l + sovGenerated(uint64(l))
    +	if m.NodeName != nil {
    +		l = len(*m.NodeName)
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.NodeSelector != nil {
    +		l = m.NodeSelector.Size()
    +		n += 1 + l + sovGenerated(uint64(l))
    +	}
    +	if m.AllNodes != nil {
    +		n += 2
    +	}
    +	if len(m.Devices) > 0 {
    +		for _, e := range m.Devices {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	if m.PerDeviceNodeSelection != nil {
    +		n += 2
    +	}
    +	if len(m.SharedCounters) > 0 {
    +		for _, e := range m.SharedCounters {
    +			l = e.Size()
    +			n += 1 + l + sovGenerated(uint64(l))
    +		}
    +	}
    +	return n
    +}
    +
    +func sovGenerated(x uint64) (n int) {
    +	return (math_bits.Len64(x|1) + 6) / 7
    +}
    +func sozGenerated(x uint64) (n int) {
    +	return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
    +}
    +func (this *AllocatedDeviceStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForConditions := "[]Condition{"
    +	for _, f := range this.Conditions {
    +		repeatedStringForConditions += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForConditions += "}"
    +	s := strings.Join([]string{`&AllocatedDeviceStatus{`,
    +		`Driver:` + fmt.Sprintf("%v", this.Driver) + `,`,
    +		`Pool:` + fmt.Sprintf("%v", this.Pool) + `,`,
    +		`Device:` + fmt.Sprintf("%v", this.Device) + `,`,
    +		`Conditions:` + repeatedStringForConditions + `,`,
    +		`Data:` + strings.Replace(fmt.Sprintf("%v", this.Data), "RawExtension", "runtime.RawExtension", 1) + `,`,
    +		`NetworkData:` + strings.Replace(this.NetworkData.String(), "NetworkDeviceData", "NetworkDeviceData", 1) + `,`,
    +		`ShareID:` + valueToStringGenerated(this.ShareID) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *AllocationResult) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&AllocationResult{`,
    +		`Devices:` + strings.Replace(strings.Replace(this.Devices.String(), "DeviceAllocationResult", "DeviceAllocationResult", 1), `&`, ``, 1) + `,`,
    +		`NodeSelector:` + strings.Replace(fmt.Sprintf("%v", this.NodeSelector), "NodeSelector", "v11.NodeSelector", 1) + `,`,
    +		`AllocationTimestamp:` + strings.Replace(fmt.Sprintf("%v", this.AllocationTimestamp), "Time", "v1.Time", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *CELDeviceSelector) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&CELDeviceSelector{`,
    +		`Expression:` + fmt.Sprintf("%v", this.Expression) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *CapacityRequestPolicy) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForValidValues := "[]Quantity{"
    +	for _, f := range this.ValidValues {
    +		repeatedStringForValidValues += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForValidValues += "}"
    +	s := strings.Join([]string{`&CapacityRequestPolicy{`,
    +		`Default:` + strings.Replace(fmt.Sprintf("%v", this.Default), "Quantity", "resource.Quantity", 1) + `,`,
    +		`ValidValues:` + repeatedStringForValidValues + `,`,
    +		`ValidRange:` + strings.Replace(this.ValidRange.String(), "CapacityRequestPolicyRange", "CapacityRequestPolicyRange", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *CapacityRequestPolicyRange) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&CapacityRequestPolicyRange{`,
    +		`Min:` + strings.Replace(fmt.Sprintf("%v", this.Min), "Quantity", "resource.Quantity", 1) + `,`,
    +		`Max:` + strings.Replace(fmt.Sprintf("%v", this.Max), "Quantity", "resource.Quantity", 1) + `,`,
    +		`Step:` + strings.Replace(fmt.Sprintf("%v", this.Step), "Quantity", "resource.Quantity", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *CapacityRequirements) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	keysForRequests := make([]string, 0, len(this.Requests))
    +	for k := range this.Requests {
    +		keysForRequests = append(keysForRequests, string(k))
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForRequests)
    +	mapStringForRequests := "map[QualifiedName]resource.Quantity{"
    +	for _, k := range keysForRequests {
    +		mapStringForRequests += fmt.Sprintf("%v: %v,", k, this.Requests[QualifiedName(k)])
    +	}
    +	mapStringForRequests += "}"
    +	s := strings.Join([]string{`&CapacityRequirements{`,
    +		`Requests:` + mapStringForRequests + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Counter) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&Counter{`,
    +		`Value:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Value), "Quantity", "resource.Quantity", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *CounterSet) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	keysForCounters := make([]string, 0, len(this.Counters))
    +	for k := range this.Counters {
    +		keysForCounters = append(keysForCounters, k)
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForCounters)
    +	mapStringForCounters := "map[string]Counter{"
    +	for _, k := range keysForCounters {
    +		mapStringForCounters += fmt.Sprintf("%v: %v,", k, this.Counters[k])
    +	}
    +	mapStringForCounters += "}"
    +	s := strings.Join([]string{`&CounterSet{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Counters:` + mapStringForCounters + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *Device) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForConsumesCounters := "[]DeviceCounterConsumption{"
    +	for _, f := range this.ConsumesCounters {
    +		repeatedStringForConsumesCounters += strings.Replace(strings.Replace(f.String(), "DeviceCounterConsumption", "DeviceCounterConsumption", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConsumesCounters += "}"
    +	repeatedStringForTaints := "[]DeviceTaint{"
    +	for _, f := range this.Taints {
    +		repeatedStringForTaints += fmt.Sprintf("%v", f) + ","
    +	}
    +	repeatedStringForTaints += "}"
    +	keysForAttributes := make([]string, 0, len(this.Attributes))
    +	for k := range this.Attributes {
    +		keysForAttributes = append(keysForAttributes, string(k))
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForAttributes)
    +	mapStringForAttributes := "map[QualifiedName]DeviceAttribute{"
    +	for _, k := range keysForAttributes {
    +		mapStringForAttributes += fmt.Sprintf("%v: %v,", k, this.Attributes[QualifiedName(k)])
    +	}
    +	mapStringForAttributes += "}"
    +	keysForCapacity := make([]string, 0, len(this.Capacity))
    +	for k := range this.Capacity {
    +		keysForCapacity = append(keysForCapacity, string(k))
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity)
    +	mapStringForCapacity := "map[QualifiedName]DeviceCapacity{"
    +	for _, k := range keysForCapacity {
    +		mapStringForCapacity += fmt.Sprintf("%v: %v,", k, this.Capacity[QualifiedName(k)])
    +	}
    +	mapStringForCapacity += "}"
    +	s := strings.Join([]string{`&Device{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Attributes:` + mapStringForAttributes + `,`,
    +		`Capacity:` + mapStringForCapacity + `,`,
    +		`ConsumesCounters:` + repeatedStringForConsumesCounters + `,`,
    +		`NodeName:` + valueToStringGenerated(this.NodeName) + `,`,
    +		`NodeSelector:` + strings.Replace(fmt.Sprintf("%v", this.NodeSelector), "NodeSelector", "v11.NodeSelector", 1) + `,`,
    +		`AllNodes:` + valueToStringGenerated(this.AllNodes) + `,`,
    +		`Taints:` + repeatedStringForTaints + `,`,
    +		`BindsToNode:` + valueToStringGenerated(this.BindsToNode) + `,`,
    +		`BindingConditions:` + fmt.Sprintf("%v", this.BindingConditions) + `,`,
    +		`BindingFailureConditions:` + fmt.Sprintf("%v", this.BindingFailureConditions) + `,`,
    +		`AllowMultipleAllocations:` + valueToStringGenerated(this.AllowMultipleAllocations) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceAllocationConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceAllocationConfiguration{`,
    +		`Source:` + fmt.Sprintf("%v", this.Source) + `,`,
    +		`Requests:` + fmt.Sprintf("%v", this.Requests) + `,`,
    +		`DeviceConfiguration:` + strings.Replace(strings.Replace(this.DeviceConfiguration.String(), "DeviceConfiguration", "DeviceConfiguration", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceAllocationResult) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForResults := "[]DeviceRequestAllocationResult{"
    +	for _, f := range this.Results {
    +		repeatedStringForResults += strings.Replace(strings.Replace(f.String(), "DeviceRequestAllocationResult", "DeviceRequestAllocationResult", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForResults += "}"
    +	repeatedStringForConfig := "[]DeviceAllocationConfiguration{"
    +	for _, f := range this.Config {
    +		repeatedStringForConfig += strings.Replace(strings.Replace(f.String(), "DeviceAllocationConfiguration", "DeviceAllocationConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConfig += "}"
    +	s := strings.Join([]string{`&DeviceAllocationResult{`,
    +		`Results:` + repeatedStringForResults + `,`,
    +		`Config:` + repeatedStringForConfig + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceAttribute) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceAttribute{`,
    +		`IntValue:` + valueToStringGenerated(this.IntValue) + `,`,
    +		`BoolValue:` + valueToStringGenerated(this.BoolValue) + `,`,
    +		`StringValue:` + valueToStringGenerated(this.StringValue) + `,`,
    +		`VersionValue:` + valueToStringGenerated(this.VersionValue) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceCapacity) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceCapacity{`,
    +		`Value:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Value), "Quantity", "resource.Quantity", 1), `&`, ``, 1) + `,`,
    +		`RequestPolicy:` + strings.Replace(this.RequestPolicy.String(), "CapacityRequestPolicy", "CapacityRequestPolicy", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClaim) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForRequests := "[]DeviceRequest{"
    +	for _, f := range this.Requests {
    +		repeatedStringForRequests += strings.Replace(strings.Replace(f.String(), "DeviceRequest", "DeviceRequest", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForRequests += "}"
    +	repeatedStringForConstraints := "[]DeviceConstraint{"
    +	for _, f := range this.Constraints {
    +		repeatedStringForConstraints += strings.Replace(strings.Replace(f.String(), "DeviceConstraint", "DeviceConstraint", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConstraints += "}"
    +	repeatedStringForConfig := "[]DeviceClaimConfiguration{"
    +	for _, f := range this.Config {
    +		repeatedStringForConfig += strings.Replace(strings.Replace(f.String(), "DeviceClaimConfiguration", "DeviceClaimConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConfig += "}"
    +	s := strings.Join([]string{`&DeviceClaim{`,
    +		`Requests:` + repeatedStringForRequests + `,`,
    +		`Constraints:` + repeatedStringForConstraints + `,`,
    +		`Config:` + repeatedStringForConfig + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClaimConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceClaimConfiguration{`,
    +		`Requests:` + fmt.Sprintf("%v", this.Requests) + `,`,
    +		`DeviceConfiguration:` + strings.Replace(strings.Replace(this.DeviceConfiguration.String(), "DeviceConfiguration", "DeviceConfiguration", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClass) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceClass{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "DeviceClassSpec", "DeviceClassSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClassConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceClassConfiguration{`,
    +		`DeviceConfiguration:` + strings.Replace(strings.Replace(this.DeviceConfiguration.String(), "DeviceConfiguration", "DeviceConfiguration", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClassList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]DeviceClass{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "DeviceClass", "DeviceClass", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&DeviceClassList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceClassSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForSelectors := "[]DeviceSelector{"
    +	for _, f := range this.Selectors {
    +		repeatedStringForSelectors += strings.Replace(strings.Replace(f.String(), "DeviceSelector", "DeviceSelector", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForSelectors += "}"
    +	repeatedStringForConfig := "[]DeviceClassConfiguration{"
    +	for _, f := range this.Config {
    +		repeatedStringForConfig += strings.Replace(strings.Replace(f.String(), "DeviceClassConfiguration", "DeviceClassConfiguration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForConfig += "}"
    +	s := strings.Join([]string{`&DeviceClassSpec{`,
    +		`Selectors:` + repeatedStringForSelectors + `,`,
    +		`Config:` + repeatedStringForConfig + `,`,
    +		`ExtendedResourceName:` + valueToStringGenerated(this.ExtendedResourceName) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceConfiguration{`,
    +		`Opaque:` + strings.Replace(this.Opaque.String(), "OpaqueDeviceConfiguration", "OpaqueDeviceConfiguration", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceConstraint) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceConstraint{`,
    +		`Requests:` + fmt.Sprintf("%v", this.Requests) + `,`,
    +		`MatchAttribute:` + valueToStringGenerated(this.MatchAttribute) + `,`,
    +		`DistinctAttribute:` + valueToStringGenerated(this.DistinctAttribute) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceCounterConsumption) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	keysForCounters := make([]string, 0, len(this.Counters))
    +	for k := range this.Counters {
    +		keysForCounters = append(keysForCounters, k)
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForCounters)
    +	mapStringForCounters := "map[string]Counter{"
    +	for _, k := range keysForCounters {
    +		mapStringForCounters += fmt.Sprintf("%v: %v,", k, this.Counters[k])
    +	}
    +	mapStringForCounters += "}"
    +	s := strings.Join([]string{`&DeviceCounterConsumption{`,
    +		`CounterSet:` + fmt.Sprintf("%v", this.CounterSet) + `,`,
    +		`Counters:` + mapStringForCounters + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceRequest) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForFirstAvailable := "[]DeviceSubRequest{"
    +	for _, f := range this.FirstAvailable {
    +		repeatedStringForFirstAvailable += strings.Replace(strings.Replace(f.String(), "DeviceSubRequest", "DeviceSubRequest", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForFirstAvailable += "}"
    +	s := strings.Join([]string{`&DeviceRequest{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Exactly:` + strings.Replace(this.Exactly.String(), "ExactDeviceRequest", "ExactDeviceRequest", 1) + `,`,
    +		`FirstAvailable:` + repeatedStringForFirstAvailable + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceRequestAllocationResult) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForTolerations := "[]DeviceToleration{"
    +	for _, f := range this.Tolerations {
    +		repeatedStringForTolerations += strings.Replace(strings.Replace(f.String(), "DeviceToleration", "DeviceToleration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForTolerations += "}"
    +	keysForConsumedCapacity := make([]string, 0, len(this.ConsumedCapacity))
    +	for k := range this.ConsumedCapacity {
    +		keysForConsumedCapacity = append(keysForConsumedCapacity, string(k))
    +	}
    +	github_com_gogo_protobuf_sortkeys.Strings(keysForConsumedCapacity)
    +	mapStringForConsumedCapacity := "map[QualifiedName]resource.Quantity{"
    +	for _, k := range keysForConsumedCapacity {
    +		mapStringForConsumedCapacity += fmt.Sprintf("%v: %v,", k, this.ConsumedCapacity[QualifiedName(k)])
    +	}
    +	mapStringForConsumedCapacity += "}"
    +	s := strings.Join([]string{`&DeviceRequestAllocationResult{`,
    +		`Request:` + fmt.Sprintf("%v", this.Request) + `,`,
    +		`Driver:` + fmt.Sprintf("%v", this.Driver) + `,`,
    +		`Pool:` + fmt.Sprintf("%v", this.Pool) + `,`,
    +		`Device:` + fmt.Sprintf("%v", this.Device) + `,`,
    +		`AdminAccess:` + valueToStringGenerated(this.AdminAccess) + `,`,
    +		`Tolerations:` + repeatedStringForTolerations + `,`,
    +		`BindingConditions:` + fmt.Sprintf("%v", this.BindingConditions) + `,`,
    +		`BindingFailureConditions:` + fmt.Sprintf("%v", this.BindingFailureConditions) + `,`,
    +		`ShareID:` + valueToStringGenerated(this.ShareID) + `,`,
    +		`ConsumedCapacity:` + mapStringForConsumedCapacity + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceSelector) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceSelector{`,
    +		`CEL:` + strings.Replace(this.CEL.String(), "CELDeviceSelector", "CELDeviceSelector", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceSubRequest) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForSelectors := "[]DeviceSelector{"
    +	for _, f := range this.Selectors {
    +		repeatedStringForSelectors += strings.Replace(strings.Replace(f.String(), "DeviceSelector", "DeviceSelector", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForSelectors += "}"
    +	repeatedStringForTolerations := "[]DeviceToleration{"
    +	for _, f := range this.Tolerations {
    +		repeatedStringForTolerations += strings.Replace(strings.Replace(f.String(), "DeviceToleration", "DeviceToleration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForTolerations += "}"
    +	s := strings.Join([]string{`&DeviceSubRequest{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`DeviceClassName:` + fmt.Sprintf("%v", this.DeviceClassName) + `,`,
    +		`Selectors:` + repeatedStringForSelectors + `,`,
    +		`AllocationMode:` + fmt.Sprintf("%v", this.AllocationMode) + `,`,
    +		`Count:` + fmt.Sprintf("%v", this.Count) + `,`,
    +		`Tolerations:` + repeatedStringForTolerations + `,`,
    +		`Capacity:` + strings.Replace(this.Capacity.String(), "CapacityRequirements", "CapacityRequirements", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *DeviceToleration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&DeviceToleration{`,
    +		`Key:` + fmt.Sprintf("%v", this.Key) + `,`,
    +		`Operator:` + fmt.Sprintf("%v", this.Operator) + `,`,
    +		`Value:` + fmt.Sprintf("%v", this.Value) + `,`,
    +		`Effect:` + fmt.Sprintf("%v", this.Effect) + `,`,
    +		`TolerationSeconds:` + valueToStringGenerated(this.TolerationSeconds) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ExactDeviceRequest) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForSelectors := "[]DeviceSelector{"
    +	for _, f := range this.Selectors {
    +		repeatedStringForSelectors += strings.Replace(strings.Replace(f.String(), "DeviceSelector", "DeviceSelector", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForSelectors += "}"
    +	repeatedStringForTolerations := "[]DeviceToleration{"
    +	for _, f := range this.Tolerations {
    +		repeatedStringForTolerations += strings.Replace(strings.Replace(f.String(), "DeviceToleration", "DeviceToleration", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForTolerations += "}"
    +	s := strings.Join([]string{`&ExactDeviceRequest{`,
    +		`DeviceClassName:` + fmt.Sprintf("%v", this.DeviceClassName) + `,`,
    +		`Selectors:` + repeatedStringForSelectors + `,`,
    +		`AllocationMode:` + fmt.Sprintf("%v", this.AllocationMode) + `,`,
    +		`Count:` + fmt.Sprintf("%v", this.Count) + `,`,
    +		`AdminAccess:` + valueToStringGenerated(this.AdminAccess) + `,`,
    +		`Tolerations:` + repeatedStringForTolerations + `,`,
    +		`Capacity:` + strings.Replace(this.Capacity.String(), "CapacityRequirements", "CapacityRequirements", 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *NetworkDeviceData) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&NetworkDeviceData{`,
    +		`InterfaceName:` + fmt.Sprintf("%v", this.InterfaceName) + `,`,
    +		`IPs:` + fmt.Sprintf("%v", this.IPs) + `,`,
    +		`HardwareAddress:` + fmt.Sprintf("%v", this.HardwareAddress) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *OpaqueDeviceConfiguration) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&OpaqueDeviceConfiguration{`,
    +		`Driver:` + fmt.Sprintf("%v", this.Driver) + `,`,
    +		`Parameters:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Parameters), "RawExtension", "runtime.RawExtension", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaim) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaim{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceClaimSpec", "ResourceClaimSpec", 1), `&`, ``, 1) + `,`,
    +		`Status:` + strings.Replace(strings.Replace(this.Status.String(), "ResourceClaimStatus", "ResourceClaimStatus", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimConsumerReference) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaimConsumerReference{`,
    +		`APIGroup:` + fmt.Sprintf("%v", this.APIGroup) + `,`,
    +		`Resource:` + fmt.Sprintf("%v", this.Resource) + `,`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`UID:` + fmt.Sprintf("%v", this.UID) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ResourceClaim{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ResourceClaim", "ResourceClaim", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ResourceClaimList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaimSpec{`,
    +		`Devices:` + strings.Replace(strings.Replace(this.Devices.String(), "DeviceClaim", "DeviceClaim", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimStatus) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForReservedFor := "[]ResourceClaimConsumerReference{"
    +	for _, f := range this.ReservedFor {
    +		repeatedStringForReservedFor += strings.Replace(strings.Replace(f.String(), "ResourceClaimConsumerReference", "ResourceClaimConsumerReference", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForReservedFor += "}"
    +	repeatedStringForDevices := "[]AllocatedDeviceStatus{"
    +	for _, f := range this.Devices {
    +		repeatedStringForDevices += strings.Replace(strings.Replace(f.String(), "AllocatedDeviceStatus", "AllocatedDeviceStatus", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForDevices += "}"
    +	s := strings.Join([]string{`&ResourceClaimStatus{`,
    +		`Allocation:` + strings.Replace(this.Allocation.String(), "AllocationResult", "AllocationResult", 1) + `,`,
    +		`ReservedFor:` + repeatedStringForReservedFor + `,`,
    +		`Devices:` + repeatedStringForDevices + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimTemplate) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaimTemplate{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceClaimTemplateSpec", "ResourceClaimTemplateSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimTemplateList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ResourceClaimTemplate{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ResourceClaimTemplate", "ResourceClaimTemplate", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ResourceClaimTemplateList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceClaimTemplateSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceClaimTemplateSpec{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceClaimSpec", "ResourceClaimSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourcePool) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourcePool{`,
    +		`Name:` + fmt.Sprintf("%v", this.Name) + `,`,
    +		`Generation:` + fmt.Sprintf("%v", this.Generation) + `,`,
    +		`ResourceSliceCount:` + fmt.Sprintf("%v", this.ResourceSliceCount) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceSlice) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	s := strings.Join([]string{`&ResourceSlice{`,
    +		`ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
    +		`Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ResourceSliceSpec", "ResourceSliceSpec", 1), `&`, ``, 1) + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceSliceList) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForItems := "[]ResourceSlice{"
    +	for _, f := range this.Items {
    +		repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ResourceSlice", "ResourceSlice", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForItems += "}"
    +	s := strings.Join([]string{`&ResourceSliceList{`,
    +		`ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`,
    +		`Items:` + repeatedStringForItems + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func (this *ResourceSliceSpec) String() string {
    +	if this == nil {
    +		return "nil"
    +	}
    +	repeatedStringForDevices := "[]Device{"
    +	for _, f := range this.Devices {
    +		repeatedStringForDevices += strings.Replace(strings.Replace(f.String(), "Device", "Device", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForDevices += "}"
    +	repeatedStringForSharedCounters := "[]CounterSet{"
    +	for _, f := range this.SharedCounters {
    +		repeatedStringForSharedCounters += strings.Replace(strings.Replace(f.String(), "CounterSet", "CounterSet", 1), `&`, ``, 1) + ","
    +	}
    +	repeatedStringForSharedCounters += "}"
    +	s := strings.Join([]string{`&ResourceSliceSpec{`,
    +		`Driver:` + fmt.Sprintf("%v", this.Driver) + `,`,
    +		`Pool:` + strings.Replace(strings.Replace(this.Pool.String(), "ResourcePool", "ResourcePool", 1), `&`, ``, 1) + `,`,
    +		`NodeName:` + valueToStringGenerated(this.NodeName) + `,`,
    +		`NodeSelector:` + strings.Replace(fmt.Sprintf("%v", this.NodeSelector), "NodeSelector", "v11.NodeSelector", 1) + `,`,
    +		`AllNodes:` + valueToStringGenerated(this.AllNodes) + `,`,
    +		`Devices:` + repeatedStringForDevices + `,`,
    +		`PerDeviceNodeSelection:` + valueToStringGenerated(this.PerDeviceNodeSelection) + `,`,
    +		`SharedCounters:` + repeatedStringForSharedCounters + `,`,
    +		`}`,
    +	}, "")
    +	return s
    +}
    +func valueToStringGenerated(v interface{}) string {
    +	rv := reflect.ValueOf(v)
    +	if rv.IsNil() {
    +		return "nil"
    +	}
    +	pv := reflect.Indirect(rv).Interface()
    +	return fmt.Sprintf("*%v", pv)
    +}
    +func (m *AllocatedDeviceStatus) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: AllocatedDeviceStatus: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: AllocatedDeviceStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Driver = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Pool = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Device", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Device = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Conditions", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Conditions = append(m.Conditions, v1.Condition{})
    +			if err := m.Conditions[len(m.Conditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Data == nil {
    +				m.Data = &runtime.RawExtension{}
    +			}
    +			if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NetworkData", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NetworkData == nil {
    +				m.NetworkData = &NetworkDeviceData{}
    +			}
    +			if err := m.NetworkData.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ShareID", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.ShareID = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *AllocationResult) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: AllocationResult: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: AllocationResult: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Devices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NodeSelector == nil {
    +				m.NodeSelector = &v11.NodeSelector{}
    +			}
    +			if err := m.NodeSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AllocationTimestamp", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.AllocationTimestamp == nil {
    +				m.AllocationTimestamp = &v1.Time{}
    +			}
    +			if err := m.AllocationTimestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *CELDeviceSelector) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: CELDeviceSelector: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: CELDeviceSelector: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Expression", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Expression = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *CapacityRequestPolicy) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: CapacityRequestPolicy: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: CapacityRequestPolicy: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Default", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Default == nil {
    +				m.Default = &resource.Quantity{}
    +			}
    +			if err := m.Default.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ValidValues", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ValidValues = append(m.ValidValues, resource.Quantity{})
    +			if err := m.ValidValues[len(m.ValidValues)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ValidRange", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ValidRange == nil {
    +				m.ValidRange = &CapacityRequestPolicyRange{}
    +			}
    +			if err := m.ValidRange.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *CapacityRequestPolicyRange) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: CapacityRequestPolicyRange: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: CapacityRequestPolicyRange: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Min", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Min == nil {
    +				m.Min = &resource.Quantity{}
    +			}
    +			if err := m.Min.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Max", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Max == nil {
    +				m.Max = &resource.Quantity{}
    +			}
    +			if err := m.Max.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Step", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Step == nil {
    +				m.Step = &resource.Quantity{}
    +			}
    +			if err := m.Step.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *CapacityRequirements) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: CapacityRequirements: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: CapacityRequirements: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Requests == nil {
    +				m.Requests = make(map[QualifiedName]resource.Quantity)
    +			}
    +			var mapkey QualifiedName
    +			mapvalue := &resource.Quantity{}
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = QualifiedName(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var mapmsglen int
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						mapmsglen |= int(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					if mapmsglen < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postmsgIndex := iNdEx + mapmsglen
    +					if postmsgIndex < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postmsgIndex > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = &resource.Quantity{}
    +					if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
    +						return err
    +					}
    +					iNdEx = postmsgIndex
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.Requests[QualifiedName(mapkey)] = *mapvalue
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *Counter) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: Counter: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: Counter: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *CounterSet) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: CounterSet: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: CounterSet: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Counters", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Counters == nil {
    +				m.Counters = make(map[string]Counter)
    +			}
    +			var mapkey string
    +			mapvalue := &Counter{}
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var mapmsglen int
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						mapmsglen |= int(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					if mapmsglen < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postmsgIndex := iNdEx + mapmsglen
    +					if postmsgIndex < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postmsgIndex > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = &Counter{}
    +					if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
    +						return err
    +					}
    +					iNdEx = postmsgIndex
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.Counters[mapkey] = *mapvalue
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *Device) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: Device: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: Device: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Attributes == nil {
    +				m.Attributes = make(map[QualifiedName]DeviceAttribute)
    +			}
    +			var mapkey QualifiedName
    +			mapvalue := &DeviceAttribute{}
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = QualifiedName(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var mapmsglen int
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						mapmsglen |= int(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					if mapmsglen < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postmsgIndex := iNdEx + mapmsglen
    +					if postmsgIndex < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postmsgIndex > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = &DeviceAttribute{}
    +					if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
    +						return err
    +					}
    +					iNdEx = postmsgIndex
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.Attributes[QualifiedName(mapkey)] = *mapvalue
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Capacity == nil {
    +				m.Capacity = make(map[QualifiedName]DeviceCapacity)
    +			}
    +			var mapkey QualifiedName
    +			mapvalue := &DeviceCapacity{}
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = QualifiedName(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var mapmsglen int
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						mapmsglen |= int(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					if mapmsglen < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postmsgIndex := iNdEx + mapmsglen
    +					if postmsgIndex < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postmsgIndex > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = &DeviceCapacity{}
    +					if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
    +						return err
    +					}
    +					iNdEx = postmsgIndex
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.Capacity[QualifiedName(mapkey)] = *mapvalue
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ConsumesCounters", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ConsumesCounters = append(m.ConsumesCounters, DeviceCounterConsumption{})
    +			if err := m.ConsumesCounters[len(m.ConsumesCounters)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.NodeName = &s
    +			iNdEx = postIndex
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NodeSelector == nil {
    +				m.NodeSelector = &v11.NodeSelector{}
    +			}
    +			if err := m.NodeSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AllNodes", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.AllNodes = &b
    +		case 8:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Taints", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Taints = append(m.Taints, DeviceTaint{})
    +			if err := m.Taints[len(m.Taints)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 9:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field BindsToNode", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.BindsToNode = &b
    +		case 10:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field BindingConditions", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.BindingConditions = append(m.BindingConditions, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 11:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field BindingFailureConditions", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.BindingFailureConditions = append(m.BindingFailureConditions, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 12:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AllowMultipleAllocations", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.AllowMultipleAllocations = &b
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceAllocationConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceAllocationConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceAllocationConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Source = AllocationConfigSource(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requests = append(m.Requests, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceConfiguration", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.DeviceConfiguration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceAllocationResult) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceAllocationResult: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceAllocationResult: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Results", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Results = append(m.Results, DeviceRequestAllocationResult{})
    +			if err := m.Results[len(m.Results)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Config = append(m.Config, DeviceAllocationConfiguration{})
    +			if err := m.Config[len(m.Config)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceAttribute) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceAttribute: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceAttribute: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field IntValue", wireType)
    +			}
    +			var v int64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.IntValue = &v
    +		case 3:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field BoolValue", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.BoolValue = &b
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field StringValue", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.StringValue = &s
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field VersionValue", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.VersionValue = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceCapacity) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceCapacity: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceCapacity: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Value.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field RequestPolicy", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.RequestPolicy == nil {
    +				m.RequestPolicy = &CapacityRequestPolicy{}
    +			}
    +			if err := m.RequestPolicy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClaim) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClaim: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClaim: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requests = append(m.Requests, DeviceRequest{})
    +			if err := m.Requests[len(m.Requests)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Constraints", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Constraints = append(m.Constraints, DeviceConstraint{})
    +			if err := m.Constraints[len(m.Constraints)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Config = append(m.Config, DeviceClaimConfiguration{})
    +			if err := m.Config[len(m.Config)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClaimConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClaimConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClaimConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requests = append(m.Requests, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceConfiguration", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.DeviceConfiguration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClass) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClass: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClass: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClassConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClassConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClassConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceConfiguration", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.DeviceConfiguration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClassList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClassList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClassList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, DeviceClass{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceClassSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceClassSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceClassSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Selectors", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Selectors = append(m.Selectors, DeviceSelector{})
    +			if err := m.Selectors[len(m.Selectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Config", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Config = append(m.Config, DeviceClassConfiguration{})
    +			if err := m.Config[len(m.Config)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ExtendedResourceName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.ExtendedResourceName = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Opaque", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Opaque == nil {
    +				m.Opaque = &OpaqueDeviceConfiguration{}
    +			}
    +			if err := m.Opaque.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceConstraint) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceConstraint: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceConstraint: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Requests", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Requests = append(m.Requests, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field MatchAttribute", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := FullyQualifiedName(dAtA[iNdEx:postIndex])
    +			m.MatchAttribute = &s
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DistinctAttribute", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := FullyQualifiedName(dAtA[iNdEx:postIndex])
    +			m.DistinctAttribute = &s
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceCounterConsumption) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceCounterConsumption: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceCounterConsumption: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field CounterSet", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.CounterSet = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Counters", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Counters == nil {
    +				m.Counters = make(map[string]Counter)
    +			}
    +			var mapkey string
    +			mapvalue := &Counter{}
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var mapmsglen int
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						mapmsglen |= int(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					if mapmsglen < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postmsgIndex := iNdEx + mapmsglen
    +					if postmsgIndex < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postmsgIndex > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = &Counter{}
    +					if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
    +						return err
    +					}
    +					iNdEx = postmsgIndex
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.Counters[mapkey] = *mapvalue
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceRequest) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceRequest: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceRequest: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Exactly", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Exactly == nil {
    +				m.Exactly = &ExactDeviceRequest{}
    +			}
    +			if err := m.Exactly.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field FirstAvailable", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.FirstAvailable = append(m.FirstAvailable, DeviceSubRequest{})
    +			if err := m.FirstAvailable[len(m.FirstAvailable)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceRequestAllocationResult) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceRequestAllocationResult: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceRequestAllocationResult: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Request", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Request = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Driver = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Pool = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Device", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Device = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AdminAccess", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.AdminAccess = &b
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Tolerations", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Tolerations = append(m.Tolerations, DeviceToleration{})
    +			if err := m.Tolerations[len(m.Tolerations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field BindingConditions", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.BindingConditions = append(m.BindingConditions, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 8:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field BindingFailureConditions", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.BindingFailureConditions = append(m.BindingFailureConditions, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 9:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ShareID", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex])
    +			m.ShareID = &s
    +			iNdEx = postIndex
    +		case 10:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ConsumedCapacity", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.ConsumedCapacity == nil {
    +				m.ConsumedCapacity = make(map[QualifiedName]resource.Quantity)
    +			}
    +			var mapkey QualifiedName
    +			mapvalue := &resource.Quantity{}
    +			for iNdEx < postIndex {
    +				entryPreIndex := iNdEx
    +				var wire uint64
    +				for shift := uint(0); ; shift += 7 {
    +					if shift >= 64 {
    +						return ErrIntOverflowGenerated
    +					}
    +					if iNdEx >= l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					b := dAtA[iNdEx]
    +					iNdEx++
    +					wire |= uint64(b&0x7F) << shift
    +					if b < 0x80 {
    +						break
    +					}
    +				}
    +				fieldNum := int32(wire >> 3)
    +				if fieldNum == 1 {
    +					var stringLenmapkey uint64
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						stringLenmapkey |= uint64(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					intStringLenmapkey := int(stringLenmapkey)
    +					if intStringLenmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postStringIndexmapkey := iNdEx + intStringLenmapkey
    +					if postStringIndexmapkey < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postStringIndexmapkey > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapkey = QualifiedName(dAtA[iNdEx:postStringIndexmapkey])
    +					iNdEx = postStringIndexmapkey
    +				} else if fieldNum == 2 {
    +					var mapmsglen int
    +					for shift := uint(0); ; shift += 7 {
    +						if shift >= 64 {
    +							return ErrIntOverflowGenerated
    +						}
    +						if iNdEx >= l {
    +							return io.ErrUnexpectedEOF
    +						}
    +						b := dAtA[iNdEx]
    +						iNdEx++
    +						mapmsglen |= int(b&0x7F) << shift
    +						if b < 0x80 {
    +							break
    +						}
    +					}
    +					if mapmsglen < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					postmsgIndex := iNdEx + mapmsglen
    +					if postmsgIndex < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if postmsgIndex > l {
    +						return io.ErrUnexpectedEOF
    +					}
    +					mapvalue = &resource.Quantity{}
    +					if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
    +						return err
    +					}
    +					iNdEx = postmsgIndex
    +				} else {
    +					iNdEx = entryPreIndex
    +					skippy, err := skipGenerated(dAtA[iNdEx:])
    +					if err != nil {
    +						return err
    +					}
    +					if (skippy < 0) || (iNdEx+skippy) < 0 {
    +						return ErrInvalidLengthGenerated
    +					}
    +					if (iNdEx + skippy) > postIndex {
    +						return io.ErrUnexpectedEOF
    +					}
    +					iNdEx += skippy
    +				}
    +			}
    +			m.ConsumedCapacity[QualifiedName(mapkey)] = *mapvalue
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceSelector) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceSelector: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceSelector: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field CEL", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.CEL == nil {
    +				m.CEL = &CELDeviceSelector{}
    +			}
    +			if err := m.CEL.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceSubRequest) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceSubRequest: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceSubRequest: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceClassName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.DeviceClassName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Selectors", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Selectors = append(m.Selectors, DeviceSelector{})
    +			if err := m.Selectors[len(m.Selectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AllocationMode", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.AllocationMode = DeviceAllocationMode(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Count", wireType)
    +			}
    +			m.Count = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.Count |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Tolerations", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Tolerations = append(m.Tolerations, DeviceToleration{})
    +			if err := m.Tolerations[len(m.Tolerations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Capacity == nil {
    +				m.Capacity = &CapacityRequirements{}
    +			}
    +			if err := m.Capacity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceTaint) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceTaint: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceTaint: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Key = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Value = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Effect", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Effect = DeviceTaintEffect(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field TimeAdded", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.TimeAdded == nil {
    +				m.TimeAdded = &v1.Time{}
    +			}
    +			if err := m.TimeAdded.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *DeviceToleration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: DeviceToleration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: DeviceToleration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Key = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Operator = DeviceTolerationOperator(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Value = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Effect", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Effect = DeviceTaintEffect(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field TolerationSeconds", wireType)
    +			}
    +			var v int64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			m.TolerationSeconds = &v
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ExactDeviceRequest) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ExactDeviceRequest: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ExactDeviceRequest: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field DeviceClassName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.DeviceClassName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Selectors", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Selectors = append(m.Selectors, DeviceSelector{})
    +			if err := m.Selectors[len(m.Selectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AllocationMode", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.AllocationMode = DeviceAllocationMode(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Count", wireType)
    +			}
    +			m.Count = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.Count |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		case 5:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AdminAccess", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.AdminAccess = &b
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Tolerations", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Tolerations = append(m.Tolerations, DeviceToleration{})
    +			if err := m.Tolerations[len(m.Tolerations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Capacity == nil {
    +				m.Capacity = &CapacityRequirements{}
    +			}
    +			if err := m.Capacity.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *NetworkDeviceData) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: NetworkDeviceData: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: NetworkDeviceData: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field InterfaceName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.InterfaceName = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field IPs", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.IPs = append(m.IPs, string(dAtA[iNdEx:postIndex]))
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field HardwareAddress", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.HardwareAddress = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *OpaqueDeviceConfiguration) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: OpaqueDeviceConfiguration: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: OpaqueDeviceConfiguration: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Driver = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Parameters.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaim) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaim: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaim: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimConsumerReference) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimConsumerReference: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimConsumerReference: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field APIGroup", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.APIGroup = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Resource", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Resource = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.UID = k8s_io_apimachinery_pkg_types.UID(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, ResourceClaim{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Devices.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimStatus) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimStatus: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimStatus: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Allocation", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.Allocation == nil {
    +				m.Allocation = &AllocationResult{}
    +			}
    +			if err := m.Allocation.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ReservedFor", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.ReservedFor = append(m.ReservedFor, ResourceClaimConsumerReference{})
    +			if err := m.ReservedFor[len(m.ReservedFor)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Devices = append(m.Devices, AllocatedDeviceStatus{})
    +			if err := m.Devices[len(m.Devices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimTemplate) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimTemplate: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimTemplate: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimTemplateList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimTemplateList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimTemplateList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, ResourceClaimTemplate{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceClaimTemplateSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceClaimTemplateSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceClaimTemplateSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourcePool) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourcePool: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourcePool: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Name = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Generation", wireType)
    +			}
    +			m.Generation = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.Generation |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		case 3:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ResourceSliceCount", wireType)
    +			}
    +			m.ResourceSliceCount = 0
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				m.ResourceSliceCount |= int64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceSlice) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceSlice: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceSlice: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceSliceList) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceSliceList: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceSliceList: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Items = append(m.Items, ResourceSlice{})
    +			if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func (m *ResourceSliceSpec) Unmarshal(dAtA []byte) error {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	for iNdEx < l {
    +		preIndex := iNdEx
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= uint64(b&0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		fieldNum := int32(wire >> 3)
    +		wireType := int(wire & 0x7)
    +		if wireType == 4 {
    +			return fmt.Errorf("proto: ResourceSliceSpec: wiretype end group for non-group")
    +		}
    +		if fieldNum <= 0 {
    +			return fmt.Errorf("proto: ResourceSliceSpec: illegal tag %d (wire type %d)", fieldNum, wire)
    +		}
    +		switch fieldNum {
    +		case 1:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Driver", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Driver = string(dAtA[iNdEx:postIndex])
    +			iNdEx = postIndex
    +		case 2:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if err := m.Pool.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 3:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeName", wireType)
    +			}
    +			var stringLen uint64
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				stringLen |= uint64(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			intStringLen := int(stringLen)
    +			if intStringLen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + intStringLen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			s := string(dAtA[iNdEx:postIndex])
    +			m.NodeName = &s
    +			iNdEx = postIndex
    +		case 4:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field NodeSelector", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			if m.NodeSelector == nil {
    +				m.NodeSelector = &v11.NodeSelector{}
    +			}
    +			if err := m.NodeSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 5:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field AllNodes", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.AllNodes = &b
    +		case 6:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field Devices", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.Devices = append(m.Devices, Device{})
    +			if err := m.Devices[len(m.Devices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		case 7:
    +			if wireType != 0 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field PerDeviceNodeSelection", wireType)
    +			}
    +			var v int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				v |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			b := bool(v != 0)
    +			m.PerDeviceNodeSelection = &b
    +		case 8:
    +			if wireType != 2 {
    +				return fmt.Errorf("proto: wrong wireType = %d for field SharedCounters", wireType)
    +			}
    +			var msglen int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				msglen |= int(b&0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if msglen < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			postIndex := iNdEx + msglen
    +			if postIndex < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if postIndex > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			m.SharedCounters = append(m.SharedCounters, CounterSet{})
    +			if err := m.SharedCounters[len(m.SharedCounters)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
    +				return err
    +			}
    +			iNdEx = postIndex
    +		default:
    +			iNdEx = preIndex
    +			skippy, err := skipGenerated(dAtA[iNdEx:])
    +			if err != nil {
    +				return err
    +			}
    +			if (skippy < 0) || (iNdEx+skippy) < 0 {
    +				return ErrInvalidLengthGenerated
    +			}
    +			if (iNdEx + skippy) > l {
    +				return io.ErrUnexpectedEOF
    +			}
    +			iNdEx += skippy
    +		}
    +	}
    +
    +	if iNdEx > l {
    +		return io.ErrUnexpectedEOF
    +	}
    +	return nil
    +}
    +func skipGenerated(dAtA []byte) (n int, err error) {
    +	l := len(dAtA)
    +	iNdEx := 0
    +	depth := 0
    +	for iNdEx < l {
    +		var wire uint64
    +		for shift := uint(0); ; shift += 7 {
    +			if shift >= 64 {
    +				return 0, ErrIntOverflowGenerated
    +			}
    +			if iNdEx >= l {
    +				return 0, io.ErrUnexpectedEOF
    +			}
    +			b := dAtA[iNdEx]
    +			iNdEx++
    +			wire |= (uint64(b) & 0x7F) << shift
    +			if b < 0x80 {
    +				break
    +			}
    +		}
    +		wireType := int(wire & 0x7)
    +		switch wireType {
    +		case 0:
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				iNdEx++
    +				if dAtA[iNdEx-1] < 0x80 {
    +					break
    +				}
    +			}
    +		case 1:
    +			iNdEx += 8
    +		case 2:
    +			var length int
    +			for shift := uint(0); ; shift += 7 {
    +				if shift >= 64 {
    +					return 0, ErrIntOverflowGenerated
    +				}
    +				if iNdEx >= l {
    +					return 0, io.ErrUnexpectedEOF
    +				}
    +				b := dAtA[iNdEx]
    +				iNdEx++
    +				length |= (int(b) & 0x7F) << shift
    +				if b < 0x80 {
    +					break
    +				}
    +			}
    +			if length < 0 {
    +				return 0, ErrInvalidLengthGenerated
    +			}
    +			iNdEx += length
    +		case 3:
    +			depth++
    +		case 4:
    +			if depth == 0 {
    +				return 0, ErrUnexpectedEndOfGroupGenerated
    +			}
    +			depth--
    +		case 5:
    +			iNdEx += 4
    +		default:
    +			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
    +		}
    +		if iNdEx < 0 {
    +			return 0, ErrInvalidLengthGenerated
    +		}
    +		if depth == 0 {
    +			return iNdEx, nil
    +		}
    +	}
    +	return 0, io.ErrUnexpectedEOF
    +}
    +
    +var (
    +	ErrInvalidLengthGenerated        = fmt.Errorf("proto: negative length found during unmarshaling")
    +	ErrIntOverflowGenerated          = fmt.Errorf("proto: integer overflow")
    +	ErrUnexpectedEndOfGroupGenerated = fmt.Errorf("proto: unexpected end of group")
    +)
    diff --git a/vendor/k8s.io/api/resource/v1/generated.proto b/vendor/k8s.io/api/resource/v1/generated.proto
    new file mode 100644
    index 0000000000..816a430c26
    --- /dev/null
    +++ b/vendor/k8s.io/api/resource/v1/generated.proto
    @@ -0,0 +1,1589 @@
    +/*
    +Copyright The Kubernetes Authors.
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +*/
    +
    +
    +// This file was autogenerated by go-to-protobuf. Do not edit it manually!
    +
    +syntax = "proto2";
    +
    +package k8s.io.api.resource.v1;
    +
    +import "k8s.io/api/core/v1/generated.proto";
    +import "k8s.io/apimachinery/pkg/api/resource/generated.proto";
    +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/generated.proto";
    +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
    +
    +// Package-wide variables from generator "generated".
    +option go_package = "k8s.io/api/resource/v1";
    +
    +// AllocatedDeviceStatus contains the status of an allocated device, if the
    +// driver chooses to report it. This may include driver-specific information.
    +//
    +// The combination of Driver, Pool, Device, and ShareID must match the corresponding key
    +// in Status.Allocation.Devices.
    +message AllocatedDeviceStatus {
    +  // Driver specifies the name of the DRA driver whose kubelet
    +  // plugin should be invoked to process the allocation once the claim is
    +  // needed on a node.
    +  //
    +  // Must be a DNS subdomain and should end with a DNS domain owned by the
    +  // vendor of the driver.
    +  //
    +  // +required
    +  optional string driver = 1;
    +
    +  // This name together with the driver name and the device name field
    +  // identify which device was allocated (`//`).
    +  //
    +  // Must not be longer than 253 characters and may contain one or more
    +  // DNS sub-domains separated by slashes.
    +  //
    +  // +required
    +  optional string pool = 2;
    +
    +  // Device references one device instance via its name in the driver's
    +  // resource pool. It must be a DNS label.
    +  //
    +  // +required
    +  optional string device = 3;
    +
    +  // ShareID uniquely identifies an individual allocation share of the device.
    +  //
    +  // +optional
    +  // +featureGate=DRAConsumableCapacity
    +  optional string shareID = 7;
    +
    +  // Conditions contains the latest observation of the device's state.
    +  // If the device has been configured according to the class and claim
    +  // config references, the `Ready` condition should be True.
    +  //
    +  // Must not contain more than 8 entries.
    +  //
    +  // +optional
    +  // +listType=map
    +  // +listMapKey=type
    +  repeated .k8s.io.apimachinery.pkg.apis.meta.v1.Condition conditions = 4;
    +
    +  // Data contains arbitrary driver-specific data.
    +  //
    +  // The length of the raw data must be smaller or equal to 10 Ki.
    +  //
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.runtime.RawExtension data = 5;
    +
    +  // NetworkData contains network-related information specific to the device.
    +  //
    +  // +optional
    +  optional NetworkDeviceData networkData = 6;
    +}
    +
    +// AllocationResult contains attributes of an allocated resource.
    +message AllocationResult {
    +  // Devices is the result of allocating devices.
    +  //
    +  // +optional
    +  optional DeviceAllocationResult devices = 1;
    +
    +  // NodeSelector defines where the allocated resources are available. If
    +  // unset, they are available everywhere.
    +  //
    +  // +optional
    +  optional .k8s.io.api.core.v1.NodeSelector nodeSelector = 3;
    +
    +  // AllocationTimestamp stores the time when the resources were allocated.
    +  // This field is not guaranteed to be set, in which case that time is unknown.
    +  //
    +  // This is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
    +  // feature gate.
    +  //
    +  // +optional
    +  // +featureGate=DRADeviceBindingConditions,DRAResourceClaimDeviceStatus
    +  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time allocationTimestamp = 5;
    +}
    +
    +// CELDeviceSelector contains a CEL expression for selecting a device.
    +message CELDeviceSelector {
    +  // Expression is a CEL expression which evaluates a single device. It
    +  // must evaluate to true when the device under consideration satisfies
    +  // the desired criteria, and false when it does not. Any other result
    +  // is an error and causes allocation of devices to abort.
    +  //
    +  // The expression's input is an object named "device", which carries
    +  // the following properties:
    +  //  - driver (string): the name of the driver which defines this device.
    +  //  - attributes (map[string]object): the device's attributes, grouped by prefix
    +  //    (e.g. device.attributes["dra.example.com"] evaluates to an object with all
    +  //    of the attributes which were prefixed by "dra.example.com".
    +  //  - capacity (map[string]object): the device's capacities, grouped by prefix.
    +  //  - allowMultipleAllocations (bool): the allowMultipleAllocations property of the device
    +  //    (v1.34+ with the DRAConsumableCapacity feature enabled).
    +  //
    +  // Example: Consider a device with driver="dra.example.com", which exposes
    +  // two attributes named "model" and "ext.example.com/family" and which
    +  // exposes one capacity named "modules". This input to this expression
    +  // would have the following fields:
    +  //
    +  //     device.driver
    +  //     device.attributes["dra.example.com"].model
    +  //     device.attributes["ext.example.com"].family
    +  //     device.capacity["dra.example.com"].modules
    +  //
    +  // The device.driver field can be used to check for a specific driver,
    +  // either as a high-level precondition (i.e. you only want to consider
    +  // devices from this driver) or as part of a multi-clause expression
    +  // that is meant to consider devices from different drivers.
    +  //
    +  // The value type of each attribute is defined by the device
    +  // definition, and users who write these expressions must consult the
    +  // documentation for their specific drivers. The value type of each
    +  // capacity is Quantity.
    +  //
    +  // If an unknown prefix is used as a lookup in either device.attributes
    +  // or device.capacity, an empty map will be returned. Any reference to
    +  // an unknown field will cause an evaluation error and allocation to
    +  // abort.
    +  //
    +  // A robust expression should check for the existence of attributes
    +  // before referencing them.
    +  //
    +  // For ease of use, the cel.bind() function is enabled, and can be used
    +  // to simplify expressions that access multiple attributes with the
    +  // same domain. For example:
    +  //
    +  //     cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
    +  //
    +  // The length of the expression must be smaller or equal to 10 Ki. The
    +  // cost of evaluating it is also limited based on the estimated number
    +  // of logical steps.
    +  //
    +  // +required
    +  optional string expression = 1;
    +}
    +
    +// CapacityRequestPolicy defines how requests consume device capacity.
    +//
    +// Must not set more than one ValidRequestValues.
    +message CapacityRequestPolicy {
    +  // Default specifies how much of this capacity is consumed by a request
    +  // that does not contain an entry for it in DeviceRequest's Capacity.
    +  //
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity default = 1;
    +
    +  // ValidValues defines a set of acceptable quantity values in consuming requests.
    +  //
    +  // Must not contain more than 10 entries.
    +  // Must be sorted in ascending order.
    +  //
    +  // If this field is set,
    +  // Default must be defined and it must be included in ValidValues list.
    +  //
    +  // If the requested amount does not match any valid value but smaller than some valid values,
    +  // the scheduler calculates the smallest valid value that is greater than or equal to the request.
    +  // That is: min(ceil(requestedValue) ∈ validValues), where requestedValue ≤ max(validValues).
    +  //
    +  // If the requested amount exceeds all valid values, the request violates the policy,
    +  // and this device cannot be allocated.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  // +oneOf=ValidRequestValues
    +  repeated .k8s.io.apimachinery.pkg.api.resource.Quantity validValues = 3;
    +
    +  // ValidRange defines an acceptable quantity value range in consuming requests.
    +  //
    +  // If this field is set,
    +  // Default must be defined and it must fall within the defined ValidRange.
    +  //
    +  // If the requested amount does not fall within the defined range, the request violates the policy,
    +  // and this device cannot be allocated.
    +  //
    +  // If the request doesn't contain this capacity entry, Default value is used.
    +  //
    +  // +optional
    +  // +oneOf=ValidRequestValues
    +  optional CapacityRequestPolicyRange validRange = 4;
    +}
    +
    +// CapacityRequestPolicyRange defines a valid range for consumable capacity values.
    +//
    +//   - If the requested amount is less than Min, it is rounded up to the Min value.
    +//   - If Step is set and the requested amount is between Min and Max but not aligned with Step,
    +//     it will be rounded up to the next value equal to Min + (n * Step).
    +//   - If Step is not set, the requested amount is used as-is if it falls within the range Min to Max (if set).
    +//   - If the requested or rounded amount exceeds Max (if set), the request does not satisfy the policy,
    +//     and the device cannot be allocated.
    +message CapacityRequestPolicyRange {
    +  // Min specifies the minimum capacity allowed for a consumption request.
    +  //
    +  // Min must be greater than or equal to zero,
    +  // and less than or equal to the capacity value.
    +  // requestPolicy.default must be more than or equal to the minimum.
    +  //
    +  // +required
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity min = 1;
    +
    +  // Max defines the upper limit for capacity that can be requested.
    +  //
    +  // Max must be less than or equal to the capacity value.
    +  // Min and requestPolicy.default must be less than or equal to the maximum.
    +  //
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity max = 2;
    +
    +  // Step defines the step size between valid capacity amounts within the range.
    +  //
    +  // Max (if set) and requestPolicy.default must be a multiple of Step.
    +  // Min + Step must be less than or equal to the capacity value.
    +  //
    +  // +optional
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity step = 3;
    +}
    +
    +// CapacityRequirements defines the capacity requirements for a specific device request.
    +message CapacityRequirements {
    +  // Requests represent individual device resource requests for distinct resources,
    +  // all of which must be provided by the device.
    +  //
    +  // This value is used as an additional filtering condition against the available capacity on the device.
    +  // This is semantically equivalent to a CEL selector with
    +  // `device.capacity[]..compareTo(quantity()) >= 0`.
    +  // For example, device.capacity['test-driver.cdi.k8s.io'].counters.compareTo(quantity('2')) >= 0.
    +  //
    +  // When a requestPolicy is defined, the requested amount is adjusted upward
    +  // to the nearest valid value based on the policy.
    +  // If the requested amount cannot be adjusted to a valid value—because it exceeds what the requestPolicy allows—
    +  // the device is considered ineligible for allocation.
    +  //
    +  // For any capacity that is not explicitly requested:
    +  // - If no requestPolicy is set, the default consumed capacity is equal to the full device capacity
    +  //   (i.e., the whole device is claimed).
    +  // - If a requestPolicy is set, the default consumed capacity is determined according to that policy.
    +  //
    +  // If the device allows multiple allocation,
    +  // the aggregated amount across all requests must not exceed the capacity value.
    +  // The consumed capacity, which may be adjusted based on the requestPolicy if defined,
    +  // is recorded in the resource claim’s status.devices[*].consumedCapacity field.
    +  //
    +  // +optional
    +  map requests = 1;
    +}
    +
    +// Counter describes a quantity associated with a device.
    +message Counter {
    +  // Value defines how much of a certain device counter is available.
    +  //
    +  // +required
    +  optional .k8s.io.apimachinery.pkg.api.resource.Quantity value = 1;
    +}
    +
    +// CounterSet defines a named set of counters
    +// that are available to be used by devices defined in the
    +// ResourceSlice.
    +//
    +// The counters are not allocatable by themselves, but
    +// can be referenced by devices. When a device is allocated,
    +// the portion of counters it uses will no longer be available for use
    +// by other devices.
    +message CounterSet {
    +  // Name defines the name of the counter set.
    +  // It must be a DNS label.
    +  //
    +  // +required
    +  optional string name = 1;
    +
    +  // Counters defines the set of counters for this CounterSet
    +  // The name of each counter must be unique in that set and must be a DNS label.
    +  //
    +  // The maximum number of counters in all sets is 32.
    +  //
    +  // +required
    +  map counters = 2;
    +}
    +
    +// Device represents one individual hardware instance that can be selected based
    +// on its attributes. Besides the name, exactly one field must be set.
    +message Device {
    +  // Name is unique identifier among all devices managed by
    +  // the driver in the pool. It must be a DNS label.
    +  //
    +  // +required
    +  optional string name = 1;
    +
    +  // Attributes defines the set of attributes for this device.
    +  // The name of each attribute must be unique in that set.
    +  //
    +  // The maximum number of attributes and capacities combined is 32.
    +  //
    +  // +optional
    +  map attributes = 2;
    +
    +  // Capacity defines the set of capacities for this device.
    +  // The name of each capacity must be unique in that set.
    +  //
    +  // The maximum number of attributes and capacities combined is 32.
    +  //
    +  // +optional
    +  map capacity = 3;
    +
    +  // ConsumesCounters defines a list of references to sharedCounters
    +  // and the set of counters that the device will
    +  // consume from those counter sets.
    +  //
    +  // There can only be a single entry per counterSet.
    +  //
    +  // The total number of device counter consumption entries
    +  // must be <= 32. In addition, the total number in the
    +  // entire ResourceSlice must be <= 1024 (for example,
    +  // 64 devices with 16 counters each).
    +  //
    +  // +optional
    +  // +listType=atomic
    +  // +featureGate=DRAPartitionableDevices
    +  repeated DeviceCounterConsumption consumesCounters = 4;
    +
    +  // NodeName identifies the node where the device is available.
    +  //
    +  // Must only be set if Spec.PerDeviceNodeSelection is set to true.
    +  // At most one of NodeName, NodeSelector and AllNodes can be set.
    +  //
    +  // +optional
    +  // +oneOf=DeviceNodeSelection
    +  // +featureGate=DRAPartitionableDevices
    +  optional string nodeName = 5;
    +
    +  // NodeSelector defines the nodes where the device is available.
    +  //
    +  // Must use exactly one term.
    +  //
    +  // Must only be set if Spec.PerDeviceNodeSelection is set to true.
    +  // At most one of NodeName, NodeSelector and AllNodes can be set.
    +  //
    +  // +optional
    +  // +oneOf=DeviceNodeSelection
    +  // +featureGate=DRAPartitionableDevices
    +  optional .k8s.io.api.core.v1.NodeSelector nodeSelector = 6;
    +
    +  // AllNodes indicates that all nodes have access to the device.
    +  //
    +  // Must only be set if Spec.PerDeviceNodeSelection is set to true.
    +  // At most one of NodeName, NodeSelector and AllNodes can be set.
    +  //
    +  // +optional
    +  // +oneOf=DeviceNodeSelection
    +  // +featureGate=DRAPartitionableDevices
    +  optional bool allNodes = 7;
    +
    +  // If specified, these are the driver-defined taints.
    +  //
    +  // The maximum number of taints is 4.
    +  //
    +  // This is an alpha field and requires enabling the DRADeviceTaints
    +  // feature gate.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  // +featureGate=DRADeviceTaints
    +  repeated DeviceTaint taints = 8;
    +
    +  // BindsToNode indicates if the usage of an allocation involving this device
    +  // has to be limited to exactly the node that was chosen when allocating the claim.
    +  // If set to true, the scheduler will set the ResourceClaim.Status.Allocation.NodeSelector
    +  // to match the node where the allocation was made.
    +  //
    +  // This is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
    +  // feature gates.
    +  //
    +  // +optional
    +  // +featureGate=DRADeviceBindingConditions,DRAResourceClaimDeviceStatus
    +  optional bool bindsToNode = 9;
    +
    +  // BindingConditions defines the conditions for proceeding with binding.
    +  // All of these conditions must be set in the per-device status
    +  // conditions with a value of True to proceed with binding the pod to the node
    +  // while scheduling the pod.
    +  //
    +  // The maximum number of binding conditions is 4.
    +  //
    +  // The conditions must be a valid condition type string.
    +  //
    +  // This is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
    +  // feature gates.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  // +featureGate=DRADeviceBindingConditions,DRAResourceClaimDeviceStatus
    +  repeated string bindingConditions = 10;
    +
    +  // BindingFailureConditions defines the conditions for binding failure.
    +  // They may be set in the per-device status conditions.
    +  // If any is set to "True", a binding failure occurred.
    +  //
    +  // The maximum number of binding failure conditions is 4.
    +  //
    +  // The conditions must be a valid condition type string.
    +  //
    +  // This is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus
    +  // feature gates.
    +  //
    +  // +optional
    +  // +listType=atomic
    +  // +featureGate=DRADeviceBindingConditions,DRAResourceClaimDeviceStatus
    +  repeated string bindingFailureConditions = 11;
    +
    +  // AllowMultipleAllocations marks whether the device is allowed to be allocated to multiple DeviceRequests.
    +  //
    +  // If AllowMultipleAllocations is set to true, the device can be allocated more than once,
    +  // and all of its capacity is consumable, regardless of whether the requestPolicy is defined or not.
    +  //
    +  // +optional
    +  // +featureGate=DRAConsumableCapacity
    +  optional bool allowMultipleAllocations = 12;
    +}
    +
    +// DeviceAllocationConfiguration gets embedded in an AllocationResult.
    +message DeviceAllocationConfiguration {
    +  // Source records whether the configuration comes from a class and thus
    +  // is not something that a normal user would have been able to set
    +  // or from a claim.
    +  //
    +  // +required
    +  optional string source = 1;
    +
    +  // Requests lists the names of requests where the configuration applies.
    +  // If empty, its applies to all requests.
    +  //
    +  // References to subrequests must include the name of the main request
    +  // and may include the subrequest using the format 
    [/]. If just + // the main request is given, the configuration applies to all subrequests. + // + // +optional + // +listType=atomic + repeated string requests = 2; + + optional DeviceConfiguration deviceConfiguration = 3; +} + +// DeviceAllocationResult is the result of allocating devices. +message DeviceAllocationResult { + // Results lists all allocated devices. + // + // +optional + // +listType=atomic + repeated DeviceRequestAllocationResult results = 1; + + // This field is a combination of all the claim and class configuration parameters. + // Drivers can distinguish between those based on a flag. + // + // This includes configuration parameters for drivers which have no allocated + // devices in the result because it is up to the drivers which configuration + // parameters they support. They can silently ignore unknown configuration + // parameters. + // + // +optional + // +listType=atomic + repeated DeviceAllocationConfiguration config = 2; +} + +// DeviceAttribute must have exactly one field set. +message DeviceAttribute { + // IntValue is a number. + // + // +optional + // +oneOf=ValueType + optional int64 int = 2; + + // BoolValue is a true/false value. + // + // +optional + // +oneOf=ValueType + optional bool bool = 3; + + // StringValue is a string. Must not be longer than 64 characters. + // + // +optional + // +oneOf=ValueType + optional string string = 4; + + // VersionValue is a semantic version according to semver.org spec 2.0.0. + // Must not be longer than 64 characters. + // + // +optional + // +oneOf=ValueType + optional string version = 5; +} + +// DeviceCapacity describes a quantity associated with a device. +message DeviceCapacity { + // Value defines how much of a certain capacity that device has. + // + // This field reflects the fixed total capacity and does not change. + // The consumed amount is tracked separately by scheduler + // and does not affect this value. + // + // +required + optional .k8s.io.apimachinery.pkg.api.resource.Quantity value = 1; + + // RequestPolicy defines how this DeviceCapacity must be consumed + // when the device is allowed to be shared by multiple allocations. + // + // The Device must have allowMultipleAllocations set to true in order to set a requestPolicy. + // + // If unset, capacity requests are unconstrained: + // requests can consume any amount of capacity, as long as the total consumed + // across all allocations does not exceed the device's defined capacity. + // If request is also unset, default is the full capacity value. + // + // +optional + // +featureGate=DRAConsumableCapacity + optional CapacityRequestPolicy requestPolicy = 2; +} + +// DeviceClaim defines how to request devices with a ResourceClaim. +message DeviceClaim { + // Requests represent individual requests for distinct devices which + // must all be satisfied. If empty, nothing needs to be allocated. + // + // +optional + // +listType=atomic + repeated DeviceRequest requests = 1; + + // These constraints must be satisfied by the set of devices that get + // allocated for the claim. + // + // +optional + // +listType=atomic + repeated DeviceConstraint constraints = 2; + + // This field holds configuration for multiple potential drivers which + // could satisfy requests in this claim. It is ignored while allocating + // the claim. + // + // +optional + // +listType=atomic + repeated DeviceClaimConfiguration config = 3; +} + +// DeviceClaimConfiguration is used for configuration parameters in DeviceClaim. +message DeviceClaimConfiguration { + // Requests lists the names of requests where the configuration applies. + // If empty, it applies to all requests. + // + // References to subrequests must include the name of the main request + // and may include the subrequest using the format
    [/]. If just + // the main request is given, the configuration applies to all subrequests. + // + // +optional + // +listType=atomic + repeated string requests = 1; + + optional DeviceConfiguration deviceConfiguration = 2; +} + +// DeviceClass is a vendor- or admin-provided resource that contains +// device configuration and selectors. It can be referenced in +// the device requests of a claim to apply these presets. +// Cluster scoped. +// +// This is an alpha type and requires enabling the DynamicResourceAllocation +// feature gate. +message DeviceClass { + // Standard object metadata + // +optional + optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec defines what can be allocated and how to configure it. + // + // This is mutable. Consumers have to be prepared for classes changing + // at any time, either because they get updated or replaced. Claim + // allocations are done once based on whatever was set in classes at + // the time of allocation. + // + // Changing the spec automatically increments the metadata.generation number. + optional DeviceClassSpec spec = 2; +} + +// DeviceClassConfiguration is used in DeviceClass. +message DeviceClassConfiguration { + optional DeviceConfiguration deviceConfiguration = 1; +} + +// DeviceClassList is a collection of classes. +message DeviceClassList { + // Standard list metadata + // +optional + optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of resource classes. + repeated DeviceClass items = 2; +} + +// DeviceClassSpec is used in a [DeviceClass] to define what can be allocated +// and how to configure it. +message DeviceClassSpec { + // Each selector must be satisfied by a device which is claimed via this class. + // + // +optional + // +listType=atomic + repeated DeviceSelector selectors = 1; + + // Config defines configuration parameters that apply to each device that is claimed via this class. + // Some classses may potentially be satisfied by multiple drivers, so each instance of a vendor + // configuration applies to exactly one driver. + // + // They are passed to the driver, but are not considered while allocating the claim. + // + // +optional + // +listType=atomic + repeated DeviceClassConfiguration config = 2; + + // ExtendedResourceName is the extended resource name for the devices of this class. + // The devices of this class can be used to satisfy a pod's extended resource requests. + // It has the same format as the name of a pod's extended resource. + // It should be unique among all the device classes in a cluster. + // If two device classes have the same name, then the class created later + // is picked to satisfy a pod's extended resource requests. + // If two classes are created at the same time, then the name of the class + // lexicographically sorted first is picked. + // + // This is an alpha field. + // +optional + // +featureGate=DRAExtendedResource + optional string extendedResourceName = 4; +} + +// DeviceConfiguration must have exactly one field set. It gets embedded +// inline in some other structs which have other fields, so field names must +// not conflict with those. +message DeviceConfiguration { + // Opaque provides driver-specific configuration parameters. + // + // +optional + // +oneOf=ConfigurationType + optional OpaqueDeviceConfiguration opaque = 1; +} + +// DeviceConstraint must have exactly one field set besides Requests. +message DeviceConstraint { + // Requests is a list of the one or more requests in this claim which + // must co-satisfy this constraint. If a request is fulfilled by + // multiple devices, then all of the devices must satisfy the + // constraint. If this is not specified, this constraint applies to all + // requests in this claim. + // + // References to subrequests must include the name of the main request + // and may include the subrequest using the format
    [/]. If just + // the main request is given, the constraint applies to all subrequests. + // + // +optional + // +listType=atomic + repeated string requests = 1; + + // MatchAttribute requires that all devices in question have this + // attribute and that its type and value are the same across those + // devices. + // + // For example, if you specified "dra.example.com/numa" (a hypothetical example!), + // then only devices in the same NUMA node will be chosen. A device which + // does not have that attribute will not be chosen. All devices should + // use a value of the same type for this attribute because that is part of + // its specification, but if one device doesn't, then it also will not be + // chosen. + // + // Must include the domain qualifier. + // + // +optional + // +oneOf=ConstraintType + optional string matchAttribute = 2; + + // DistinctAttribute requires that all devices in question have this + // attribute and that its type and value are unique across those devices. + // + // This acts as the inverse of MatchAttribute. + // + // This constraint is used to avoid allocating multiple requests to the same device + // by ensuring attribute-level differentiation. + // + // This is useful for scenarios where resource requests must be fulfilled by separate physical devices. + // For example, a container requests two network interfaces that must be allocated from two different physical NICs. + // + // +optional + // +oneOf=ConstraintType + // +featureGate=DRAConsumableCapacity + optional string distinctAttribute = 3; +} + +// DeviceCounterConsumption defines a set of counters that +// a device will consume from a CounterSet. +message DeviceCounterConsumption { + // CounterSet is the name of the set from which the + // counters defined will be consumed. + // + // +required + optional string counterSet = 1; + + // Counters defines the counters that will be consumed by the device. + // + // The maximum number counters in a device is 32. + // In addition, the maximum number of all counters + // in all devices is 1024 (for example, 64 devices with + // 16 counters each). + // + // +required + map counters = 2; +} + +// DeviceRequest is a request for devices required for a claim. +// This is typically a request for a single resource like a device, but can +// also ask for several identical devices. With FirstAvailable it is also +// possible to provide a prioritized list of requests. +message DeviceRequest { + // Name can be used to reference this request in a pod.spec.containers[].resources.claims + // entry and in a constraint of the claim. + // + // References using the name in the DeviceRequest will uniquely + // identify a request when the Exactly field is set. When the + // FirstAvailable field is set, a reference to the name of the + // DeviceRequest will match whatever subrequest is chosen by the + // scheduler. + // + // Must be a DNS label. + // + // +required + optional string name = 1; + + // Exactly specifies the details for a single request that must + // be met exactly for the request to be satisfied. + // + // One of Exactly or FirstAvailable must be set. + // + // +optional + // +oneOf=deviceRequestType + optional ExactDeviceRequest exactly = 2; + + // FirstAvailable contains subrequests, of which exactly one will be + // selected by the scheduler. It tries to + // satisfy them in the order in which they are listed here. So if + // there are two entries in the list, the scheduler will only check + // the second one if it determines that the first one can not be used. + // + // DRA does not yet implement scoring, so the scheduler will + // select the first set of devices that satisfies all the + // requests in the claim. And if the requirements can + // be satisfied on more than one node, other scheduling features + // will determine which node is chosen. This means that the set of + // devices allocated to a claim might not be the optimal set + // available to the cluster. Scoring will be implemented later. + // + // +optional + // +oneOf=deviceRequestType + // +listType=atomic + // +featureGate=DRAPrioritizedList + repeated DeviceSubRequest firstAvailable = 3; +} + +// DeviceRequestAllocationResult contains the allocation result for one request. +message DeviceRequestAllocationResult { + // Request is the name of the request in the claim which caused this + // device to be allocated. If it references a subrequest in the + // firstAvailable list on a DeviceRequest, this field must + // include both the name of the main request and the subrequest + // using the format
    /. + // + // Multiple devices may have been allocated per request. + // + // +required + optional string request = 1; + + // Driver specifies the name of the DRA driver whose kubelet + // plugin should be invoked to process the allocation once the claim is + // needed on a node. + // + // Must be a DNS subdomain and should end with a DNS domain owned by the + // vendor of the driver. + // + // +required + optional string driver = 2; + + // This name together with the driver name and the device name field + // identify which device was allocated (`//`). + // + // Must not be longer than 253 characters and may contain one or more + // DNS sub-domains separated by slashes. + // + // +required + optional string pool = 3; + + // Device references one device instance via its name in the driver's + // resource pool. It must be a DNS label. + // + // +required + optional string device = 4; + + // AdminAccess indicates that this device was allocated for + // administrative access. See the corresponding request field + // for a definition of mode. + // + // This is an alpha field and requires enabling the DRAAdminAccess + // feature gate. Admin access is disabled if this field is unset or + // set to false, otherwise it is enabled. + // + // +optional + // +featureGate=DRAAdminAccess + optional bool adminAccess = 5; + + // A copy of all tolerations specified in the request at the time + // when the device got allocated. + // + // The maximum number of tolerations is 16. + // + // This is an alpha field and requires enabling the DRADeviceTaints + // feature gate. + // + // +optional + // +listType=atomic + // +featureGate=DRADeviceTaints + repeated DeviceToleration tolerations = 6; + + // BindingConditions contains a copy of the BindingConditions + // from the corresponding ResourceSlice at the time of allocation. + // + // This is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus + // feature gates. + // + // +optional + // +listType=atomic + // +featureGate=DRADeviceBindingConditions,DRAResourceClaimDeviceStatus + repeated string bindingConditions = 7; + + // BindingFailureConditions contains a copy of the BindingFailureConditions + // from the corresponding ResourceSlice at the time of allocation. + // + // This is an alpha field and requires enabling the DRADeviceBindingConditions and DRAResourceClaimDeviceStatus + // feature gates. + // + // +optional + // +listType=atomic + // +featureGate=DRADeviceBindingConditions,DRAResourceClaimDeviceStatus + repeated string bindingFailureConditions = 8; + + // ShareID uniquely identifies an individual allocation share of the device, + // used when the device supports multiple simultaneous allocations. + // It serves as an additional map key to differentiate concurrent shares + // of the same device. + // + // +optional + // +featureGate=DRAConsumableCapacity + optional string shareID = 9; + + // ConsumedCapacity tracks the amount of capacity consumed per device as part of the claim request. + // The consumed amount may differ from the requested amount: it is rounded up to the nearest valid + // value based on the device’s requestPolicy if applicable (i.e., may not be less than the requested amount). + // + // The total consumed capacity for each device must not exceed the DeviceCapacity's Value. + // + // This field is populated only for devices that allow multiple allocations. + // All capacity entries are included, even if the consumed amount is zero. + // + // +optional + // +featureGate=DRAConsumableCapacity + map consumedCapacity = 10; +} + +// DeviceSelector must have exactly one field set. +message DeviceSelector { + // CEL contains a CEL expression for selecting a device. + // + // +optional + // +oneOf=SelectorType + optional CELDeviceSelector cel = 1; +} + +// DeviceSubRequest describes a request for device provided in the +// claim.spec.devices.requests[].firstAvailable array. Each +// is typically a request for a single resource like a device, but can +// also ask for several identical devices. +// +// DeviceSubRequest is similar to ExactDeviceRequest, but doesn't expose the +// AdminAccess field as that one is only supported when requesting a +// specific device. +message DeviceSubRequest { + // Name can be used to reference this subrequest in the list of constraints + // or the list of configurations for the claim. References must use the + // format
    /. + // + // Must be a DNS label. + // + // +required + optional string name = 1; + + // DeviceClassName references a specific DeviceClass, which can define + // additional configuration and selectors to be inherited by this + // subrequest. + // + // A class is required. Which classes are available depends on the cluster. + // + // Administrators may use this to restrict which devices may get + // requested by only installing classes with selectors for permitted + // devices. If users are free to request anything without restrictions, + // then administrators can create an empty DeviceClass for users + // to reference. + // + // +required + optional string deviceClassName = 2; + + // Selectors define criteria which must be satisfied by a specific + // device in order for that device to be considered for this + // subrequest. All selectors must be satisfied for a device to be + // considered. + // + // +optional + // +listType=atomic + repeated DeviceSelector selectors = 3; + + // AllocationMode and its related fields define how devices are allocated + // to satisfy this subrequest. Supported values are: + // + // - ExactCount: This request is for a specific number of devices. + // This is the default. The exact number is provided in the + // count field. + // + // - All: This subrequest is for all of the matching devices in a pool. + // Allocation will fail if some devices are already allocated, + // unless adminAccess is requested. + // + // If AllocationMode is not specified, the default mode is ExactCount. If + // the mode is ExactCount and count is not specified, the default count is + // one. Any other subrequests must specify this field. + // + // More modes may get added in the future. Clients must refuse to handle + // requests with unknown modes. + // + // +optional + optional string allocationMode = 4; + + // Count is used only when the count mode is "ExactCount". Must be greater than zero. + // If AllocationMode is ExactCount and this field is not specified, the default is one. + // + // +optional + // +oneOf=AllocationMode + optional int64 count = 5; + + // If specified, the request's tolerations. + // + // Tolerations for NoSchedule are required to allocate a + // device which has a taint with that effect. The same applies + // to NoExecute. + // + // In addition, should any of the allocated devices get tainted + // with NoExecute after allocation and that effect is not tolerated, + // then all pods consuming the ResourceClaim get deleted to evict + // them. The scheduler will not let new pods reserve the claim while + // it has these tainted devices. Once all pods are evicted, the + // claim will get deallocated. + // + // The maximum number of tolerations is 16. + // + // This is an alpha field and requires enabling the DRADeviceTaints + // feature gate. + // + // +optional + // +listType=atomic + // +featureGate=DRADeviceTaints + repeated DeviceToleration tolerations = 6; + + // Capacity define resource requirements against each capacity. + // + // If this field is unset and the device supports multiple allocations, + // the default value will be applied to each capacity according to requestPolicy. + // For the capacity that has no requestPolicy, default is the full capacity value. + // + // Applies to each device allocation. + // If Count > 1, + // the request fails if there aren't enough devices that meet the requirements. + // If AllocationMode is set to All, + // the request fails if there are devices that otherwise match the request, + // and have this capacity, with a value >= the requested amount, but which cannot be allocated to this request. + // + // +optional + // +featureGate=DRAConsumableCapacity + optional CapacityRequirements capacity = 7; +} + +// The device this taint is attached to has the "effect" on +// any claim which does not tolerate the taint and, through the claim, +// to pods using the claim. +// +// +protobuf.options.(gogoproto.goproto_stringer)=false +message DeviceTaint { + // The taint key to be applied to a device. + // Must be a label name. + // + // +required + optional string key = 1; + + // The taint value corresponding to the taint key. + // Must be a label value. + // + // +optional + optional string value = 2; + + // The effect of the taint on claims that do not tolerate the taint + // and through such claims on the pods using them. + // Valid effects are NoSchedule and NoExecute. PreferNoSchedule as used for + // nodes is not valid here. + // + // +required + optional string effect = 3; + + // TimeAdded represents the time at which the taint was added. + // Added automatically during create or update if not set. + // + // +optional + optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4; +} + +// The ResourceClaim this DeviceToleration is attached to tolerates any taint that matches +// the triple using the matching operator . +message DeviceToleration { + // Key is the taint key that the toleration applies to. Empty means match all taint keys. + // If the key is empty, operator must be Exists; this combination means to match all values and all keys. + // Must be a label name. + // + // +optional + optional string key = 1; + + // Operator represents a key's relationship to the value. + // Valid operators are Exists and Equal. Defaults to Equal. + // Exists is equivalent to wildcard for value, so that a ResourceClaim can + // tolerate all taints of a particular category. + // + // +optional + // +default="Equal" + optional string operator = 2; + + // Value is the taint value the toleration matches to. + // If the operator is Exists, the value must be empty, otherwise just a regular string. + // Must be a label value. + // + // +optional + optional string value = 3; + + // Effect indicates the taint effect to match. Empty means match all taint effects. + // When specified, allowed values are NoSchedule and NoExecute. + // + // +optional + optional string effect = 4; + + // TolerationSeconds represents the period of time the toleration (which must be + // of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + // it is not set, which means tolerate the taint forever (do not evict). Zero and + // negative values will be treated as 0 (evict immediately) by the system. + // If larger than zero, the time when the pod needs to be evicted is calculated as