From 7e0a9a7f4e70e4cc6f5dd49917d18101a8e1a25c Mon Sep 17 00:00:00 2001 From: Cici Huang <8658046+cici37@users.noreply.github.com> Date: Mon, 24 Jul 2023 17:56:03 -0700 Subject: [PATCH] Use statusReason for reason under x-kubernetes-validations (#119544) * Change reason field format * Auto update * Address comments * Auto update * Update the test --- api/openapi-spec/swagger.json | 2 +- ...pis__apiextensions.k8s.io__v1_openapi.json | 2 +- pkg/generated/openapi/zz_generated.openapi.go | 6 +- .../apis/apiextensions/types_jsonschema.go | 24 +- .../apis/apiextensions/v1/conversion_test.go | 2 + .../pkg/apis/apiextensions/v1/generated.pb.go | 396 +++++++++-------- .../pkg/apis/apiextensions/v1/generated.proto | 2 +- .../apis/apiextensions/v1/types_jsonschema.go | 24 +- .../v1/zz_generated.conversion.go | 5 +- .../apiextensions/v1/zz_generated.deepcopy.go | 3 +- .../apiextensions/v1beta1/generated.pb.go | 400 +++++++++--------- .../apiextensions/v1beta1/generated.proto | 2 +- .../apiextensions/v1beta1/types_jsonschema.go | 24 +- .../v1beta1/zz_generated.conversion.go | 5 +- .../v1beta1/zz_generated.deepcopy.go | 3 +- .../apiextensions/validation/validation.go | 8 +- .../validation/validation_test.go | 34 +- .../apiextensions/zz_generated.deepcopy.go | 3 +- .../pkg/apiserver/schema/cel/validation.go | 8 +- .../apiserver/schema/cel/validation_test.go | 6 +- .../generated/openapi/zz_generated.openapi.go | 6 +- 21 files changed, 520 insertions(+), 445 deletions(-) diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 02ac9dc7c71..d4f1423ba87 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -15751,7 +15751,7 @@ "type": "string" }, "reason": { - "description": "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value.", + "description": "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.", "type": "string" }, "rule": { diff --git a/api/openapi-spec/v3/apis__apiextensions.k8s.io__v1_openapi.json b/api/openapi-spec/v3/apis__apiextensions.k8s.io__v1_openapi.json index 5b1559abfeb..740f8772e15 100644 --- a/api/openapi-spec/v3/apis__apiextensions.k8s.io__v1_openapi.json +++ b/api/openapi-spec/v3/apis__apiextensions.k8s.io__v1_openapi.json @@ -774,7 +774,7 @@ "type": "string" }, "reason": { - "description": "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value.", + "description": "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.", "type": "string" }, "rule": { diff --git a/pkg/generated/openapi/zz_generated.openapi.go b/pkg/generated/openapi/zz_generated.openapi.go index 6489fdb6304..5b349eaec35 100644 --- a/pkg/generated/openapi/zz_generated.openapi.go +++ b/pkg/generated/openapi/zz_generated.openapi.go @@ -47653,9 +47653,10 @@ func schema_pkg_apis_apiextensions_v1_ValidationRule(ref common.ReferenceCallbac }, "reason": { SchemaProps: spec.SchemaProps{ - Description: "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value.", + Description: "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.\n\nPossible enum values:\n - `\"FieldValueDuplicate\"` is used to report collisions of values that must be unique (e.g. unique IDs).\n - `\"FieldValueForbidden\"` is used to report valid (as per formatting rules) values which would be accepted under some conditions, but which are not permitted by the current conditions (such as security policy).\n - `\"FieldValueInvalid\"` is used to report malformed values (e.g. failed regex match, too long, out of bounds).\n - `\"FieldValueRequired\"` is used to report required values that are not provided (e.g. empty strings, null values, or empty arrays).", Type: []string{"string"}, Format: "", + Enum: []interface{}{"FieldValueDuplicate", "FieldValueForbidden", "FieldValueInvalid", "FieldValueRequired"}, }, }, "fieldPath": { @@ -49065,9 +49066,10 @@ func schema_pkg_apis_apiextensions_v1beta1_ValidationRule(ref common.ReferenceCa }, "reason": { SchemaProps: spec.SchemaProps{ - Description: "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value.", + Description: "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.\n\nPossible enum values:\n - `\"FieldValueDuplicate\"` is used to report collisions of values that must be unique (e.g. unique IDs).\n - `\"FieldValueForbidden\"` is used to report valid (as per formatting rules) values which would be accepted under some conditions, but which are not permitted by the current conditions (such as security policy).\n - `\"FieldValueInvalid\"` is used to report malformed values (e.g. failed regex match, too long, out of bounds).\n - `\"FieldValueRequired\"` is used to report required values that are not provided (e.g. empty strings, null values, or empty arrays).", Type: []string{"string"}, Format: "", + Enum: []interface{}{"FieldValueDuplicate", "FieldValueForbidden", "FieldValueInvalid", "FieldValueRequired"}, }, }, "fieldPath": { diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types_jsonschema.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types_jsonschema.go index 03b64c9a6ce..cc1c7437fcd 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types_jsonschema.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/types_jsonschema.go @@ -16,8 +16,24 @@ limitations under the License. package apiextensions -import ( - "k8s.io/apimachinery/pkg/util/validation/field" +// FieldValueErrorReason is a machine-readable value providing more detail about why a field failed the validation. +// +enum +type FieldValueErrorReason string + +const ( + // FieldValueRequired is used to report required values that are not + // provided (e.g. empty strings, null values, or empty arrays). + FieldValueRequired FieldValueErrorReason = "FieldValueRequired" + // FieldValueDuplicate is used to report collisions of values that must be + // unique (e.g. unique IDs). + FieldValueDuplicate FieldValueErrorReason = "FieldValueDuplicate" + // FieldValueInvalid is used to report malformed values (e.g. failed regex + // match, too long, out of bounds). + FieldValueInvalid FieldValueErrorReason = "FieldValueInvalid" + // FieldValueForbidden is used to report valid (as per formatting rules) + // values which would be accepted under some conditions, but which are not + // permitted by the current conditions (such as security policy). + FieldValueForbidden FieldValueErrorReason = "FieldValueForbidden" ) // JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). @@ -216,9 +232,9 @@ type ValidationRule struct { // The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. // The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate". // If not set, default to use "FieldValueInvalid". - // All future added reasons must be accepted by clients when reading this value. + // All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. // +optional - Reason *field.ErrorType + Reason *FieldValueErrorReason // fieldPath represents the field path returned when the validation fails. // It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field. // e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo` diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/conversion_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/conversion_test.go index 5098de52dc5..ab64ece6428 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/conversion_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/conversion_test.go @@ -719,6 +719,8 @@ func assertEqualTypes(t *testing.T, path []string, a, b reflect.Type) { aElemType := a.Elem() bElemType := b.Elem() assertEqualTypes(t, path, aElemType, bElemType) + case reflect.String: + // string types are equal default: fatalTypeError(t, path, a, b, "unhandled kind") diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.pb.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.pb.go index 82ec2fc7fa2..75a573a2d25 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.pb.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.pb.go @@ -35,7 +35,6 @@ import ( strings "strings" k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types" - k8s_io_apimachinery_pkg_util_validation_field "k8s.io/apimachinery/pkg/util/validation/field" ) // Reference imports to suppress errors if they are not otherwise used. @@ -815,203 +814,202 @@ func init() { } var fileDescriptor_f5a35c9667703937 = []byte{ - // 3126 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xdf, 0x6f, 0x5c, 0x47, - 0xf5, 0xcf, 0x5d, 0x7b, 0xed, 0xf5, 0xd8, 0x49, 0xec, 0x49, 0xec, 0xef, 0x8d, 0x9b, 0x78, 0x9d, - 0xed, 0xb7, 0xf9, 0xba, 0x6d, 0xba, 0x6e, 0xfd, 0x6d, 0x69, 0xa8, 0x10, 0xc8, 0x6b, 0x3b, 0xad, - 0x1b, 0x3b, 0xb6, 0x66, 0x93, 0xd4, 0x6d, 0x81, 0xf6, 0x7a, 0xef, 0x78, 0x7d, 0xeb, 0xfb, 0x2b, - 0x33, 0xf7, 0xae, 0x6d, 0x09, 0xa4, 0x0a, 0x54, 0x01, 0x95, 0xa0, 0x3c, 0xa0, 0xf2, 0x84, 0x10, - 0x42, 0x7d, 0x80, 0x07, 0x78, 0x2b, 0xff, 0x42, 0x5f, 0x90, 0xfa, 0x84, 0x2a, 0x21, 0xad, 0xe8, - 0xf2, 0x0f, 0x20, 0x01, 0x42, 0xf8, 0x01, 0xa1, 0xf9, 0x71, 0xe7, 0xce, 0xde, 0xdd, 0x4d, 0x22, - 0x7b, 0xdd, 0xbe, 0xed, 0x9e, 0x73, 0xe6, 0x7c, 0xce, 0x9c, 0x39, 0x73, 0xe6, 0xcc, 0xb9, 0x03, - 0xac, 0xbd, 0x1b, 0xb4, 0xec, 0x04, 0xf3, 0x7b, 0xf1, 0x36, 0x26, 0x3e, 0x8e, 0x30, 0x9d, 0x6f, - 0x60, 0xdf, 0x0e, 0xc8, 0xbc, 0x64, 0x58, 0xa1, 0x83, 0x0f, 0x22, 0xec, 0x53, 0x27, 0xf0, 0xe9, - 0x33, 0x56, 0xe8, 0x50, 0x4c, 0x1a, 0x98, 0xcc, 0x87, 0x7b, 0x75, 0xc6, 0xa3, 0xed, 0x02, 0xf3, - 0x8d, 0xe7, 0xe6, 0xeb, 0xd8, 0xc7, 0xc4, 0x8a, 0xb0, 0x5d, 0x0e, 0x49, 0x10, 0x05, 0xf0, 0x86, - 0xd0, 0x54, 0x6e, 0x13, 0x7c, 0x4b, 0x69, 0x2a, 0x87, 0x7b, 0x75, 0xc6, 0xa3, 0xed, 0x02, 0xe5, - 0xc6, 0x73, 0xd3, 0xcf, 0xd4, 0x9d, 0x68, 0x37, 0xde, 0x2e, 0xd7, 0x02, 0x6f, 0xbe, 0x1e, 0xd4, - 0x83, 0x79, 0xae, 0x70, 0x3b, 0xde, 0xe1, 0xff, 0xf8, 0x1f, 0xfe, 0x4b, 0x00, 0x4d, 0x3f, 0x9f, - 0x9a, 0xec, 0x59, 0xb5, 0x5d, 0xc7, 0xc7, 0xe4, 0x30, 0xb5, 0xd3, 0xc3, 0x91, 0xd5, 0xc5, 0xbc, - 0xe9, 0xf9, 0x5e, 0xa3, 0x48, 0xec, 0x47, 0x8e, 0x87, 0x3b, 0x06, 0x7c, 0xe5, 0x61, 0x03, 0x68, - 0x6d, 0x17, 0x7b, 0x56, 0x76, 0x5c, 0xe9, 0xc8, 0x00, 0x13, 0x4b, 0x81, 0xdf, 0xc0, 0x84, 0x4d, - 0x10, 0xe1, 0xfb, 0x31, 0xa6, 0x11, 0xac, 0x80, 0x81, 0xd8, 0xb1, 0x4d, 0x63, 0xd6, 0x98, 0x1b, - 0xa9, 0x3c, 0xfb, 0x49, 0xb3, 0x78, 0xa6, 0xd5, 0x2c, 0x0e, 0xdc, 0x5d, 0x5d, 0x3e, 0x6a, 0x16, - 0xaf, 0xf6, 0x42, 0x8a, 0x0e, 0x43, 0x4c, 0xcb, 0x77, 0x57, 0x97, 0x11, 0x1b, 0x0c, 0x5f, 0x06, - 0x13, 0x36, 0xa6, 0x0e, 0xc1, 0xf6, 0xe2, 0xe6, 0xea, 0x3d, 0xa1, 0xdf, 0xcc, 0x71, 0x8d, 0x97, - 0xa4, 0xc6, 0x89, 0xe5, 0xac, 0x00, 0xea, 0x1c, 0x03, 0xb7, 0xc0, 0x70, 0xb0, 0xfd, 0x0e, 0xae, - 0x45, 0xd4, 0x1c, 0x98, 0x1d, 0x98, 0x1b, 0x5d, 0x78, 0xa6, 0x9c, 0x2e, 0x9e, 0x32, 0x81, 0xaf, - 0x98, 0x9c, 0x6c, 0x19, 0x59, 0xfb, 0x2b, 0xc9, 0xa2, 0x55, 0xce, 0x4b, 0xb4, 0xe1, 0x0d, 0xa1, - 0x05, 0x25, 0xea, 0x4a, 0xbf, 0xce, 0x01, 0xa8, 0x4f, 0x9e, 0x86, 0x81, 0x4f, 0x71, 0x5f, 0x66, - 0x4f, 0xc1, 0x78, 0x8d, 0x6b, 0x8e, 0xb0, 0x2d, 0x71, 0xcd, 0xdc, 0x71, 0xac, 0x37, 0x25, 0xfe, - 0xf8, 0x52, 0x46, 0x1d, 0xea, 0x00, 0x80, 0x77, 0xc0, 0x10, 0xc1, 0x34, 0x76, 0x23, 0x73, 0x60, - 0xd6, 0x98, 0x1b, 0x5d, 0xb8, 0xde, 0x13, 0x8a, 0x87, 0x36, 0x0b, 0xbe, 0x72, 0xe3, 0xb9, 0x72, - 0x35, 0xb2, 0xa2, 0x98, 0x56, 0xce, 0x49, 0xa4, 0x21, 0xc4, 0x75, 0x20, 0xa9, 0xab, 0xf4, 0x1f, - 0x03, 0x8c, 0xeb, 0x5e, 0x6a, 0x38, 0x78, 0x1f, 0x12, 0x30, 0x4c, 0x44, 0xb0, 0x70, 0x3f, 0x8d, - 0x2e, 0xdc, 0x2a, 0x1f, 0x77, 0x47, 0x95, 0x3b, 0xe2, 0xaf, 0x32, 0xca, 0x96, 0x4b, 0xfe, 0x41, - 0x09, 0x10, 0x6c, 0x80, 0x02, 0x91, 0x6b, 0xc4, 0x03, 0x69, 0x74, 0x61, 0xad, 0x3f, 0xa0, 0x42, - 0x67, 0x65, 0xac, 0xd5, 0x2c, 0x16, 0x92, 0x7f, 0x48, 0x61, 0x95, 0x7e, 0x99, 0x03, 0x33, 0x4b, - 0x31, 0x8d, 0x02, 0x0f, 0x61, 0x1a, 0xc4, 0xa4, 0x86, 0x97, 0x02, 0x37, 0xf6, 0xfc, 0x65, 0xbc, - 0xe3, 0xf8, 0x4e, 0xc4, 0x62, 0x74, 0x16, 0x0c, 0xfa, 0x96, 0x87, 0x65, 0xcc, 0x8c, 0x49, 0x4f, - 0x0e, 0xde, 0xb6, 0x3c, 0x8c, 0x38, 0x87, 0x49, 0xb0, 0x10, 0x91, 0x3b, 0x40, 0x49, 0xdc, 0x39, - 0x0c, 0x31, 0xe2, 0x1c, 0x78, 0x0d, 0x0c, 0xed, 0x04, 0xc4, 0xb3, 0xc4, 0xea, 0x8d, 0xa4, 0xeb, - 0x71, 0x93, 0x53, 0x91, 0xe4, 0xc2, 0x17, 0xc0, 0xa8, 0x8d, 0x69, 0x8d, 0x38, 0x21, 0x83, 0x36, - 0x07, 0xb9, 0xf0, 0x05, 0x29, 0x3c, 0xba, 0x9c, 0xb2, 0x90, 0x2e, 0x07, 0xaf, 0x83, 0x42, 0x48, - 0x9c, 0x80, 0x38, 0xd1, 0xa1, 0x99, 0x9f, 0x35, 0xe6, 0xf2, 0x95, 0x71, 0x39, 0xa6, 0xb0, 0x29, - 0xe9, 0x48, 0x49, 0x30, 0xe9, 0x77, 0x68, 0xe0, 0x6f, 0x5a, 0xd1, 0xae, 0x39, 0xc4, 0x11, 0x94, - 0xf4, 0xab, 0xd5, 0x8d, 0xdb, 0x8c, 0x8e, 0x94, 0x44, 0xe9, 0x4f, 0x06, 0x30, 0xb3, 0x1e, 0x4a, - 0xdc, 0x0b, 0x6f, 0x82, 0x02, 0x8d, 0x58, 0xce, 0xa9, 0x1f, 0x4a, 0xff, 0x3c, 0x95, 0xa8, 0xaa, - 0x4a, 0xfa, 0x51, 0xb3, 0x38, 0x95, 0x8e, 0x48, 0xa8, 0xdc, 0x37, 0x6a, 0x2c, 0x0b, 0xb9, 0x7d, - 0xbc, 0xbd, 0x1b, 0x04, 0x7b, 0x72, 0xf5, 0x4f, 0x10, 0x72, 0xaf, 0x09, 0x45, 0x29, 0xa6, 0x08, - 0x39, 0x49, 0x46, 0x09, 0x50, 0xe9, 0xdf, 0xb9, 0xec, 0xc4, 0xb4, 0x45, 0x7f, 0x1b, 0x14, 0xd8, - 0x16, 0xb2, 0xad, 0xc8, 0x92, 0x9b, 0xe0, 0xd9, 0x47, 0xdb, 0x70, 0x62, 0xbf, 0xae, 0xe3, 0xc8, - 0xaa, 0x40, 0xe9, 0x0a, 0x90, 0xd2, 0x90, 0xd2, 0x0a, 0x0f, 0xc0, 0x20, 0x0d, 0x71, 0x4d, 0xce, - 0xf7, 0xde, 0x09, 0xa2, 0xbd, 0xc7, 0x1c, 0xaa, 0x21, 0xae, 0xa5, 0xc1, 0xc8, 0xfe, 0x21, 0x8e, - 0x08, 0xdf, 0x35, 0xc0, 0x10, 0xe5, 0x79, 0x41, 0xe6, 0x92, 0xad, 0x53, 0x00, 0xcf, 0xe4, 0x1d, - 0xf1, 0x1f, 0x49, 0xdc, 0xd2, 0x3f, 0x72, 0xe0, 0x6a, 0xaf, 0xa1, 0x4b, 0x81, 0x6f, 0x8b, 0x45, - 0x58, 0x95, 0xfb, 0x4a, 0x44, 0xd6, 0x0b, 0xfa, 0xbe, 0x3a, 0x6a, 0x16, 0x9f, 0x78, 0xa8, 0x02, - 0x6d, 0x03, 0x7e, 0x55, 0x4d, 0x59, 0x6c, 0xd2, 0xab, 0xed, 0x86, 0x1d, 0x35, 0x8b, 0xe7, 0xd5, - 0xb0, 0x76, 0x5b, 0x61, 0x03, 0x40, 0xd7, 0xa2, 0xd1, 0x1d, 0x62, 0xf9, 0x54, 0xa8, 0x75, 0x3c, - 0x2c, 0x3d, 0xf7, 0xd4, 0xa3, 0x05, 0x05, 0x1b, 0x51, 0x99, 0x96, 0x90, 0x70, 0xad, 0x43, 0x1b, - 0xea, 0x82, 0xc0, 0x72, 0x06, 0xc1, 0x16, 0x55, 0x69, 0x40, 0xcb, 0xe1, 0x8c, 0x8a, 0x24, 0x17, - 0x3e, 0x09, 0x86, 0x3d, 0x4c, 0xa9, 0x55, 0xc7, 0x7c, 0xef, 0x8f, 0xa4, 0x87, 0xe2, 0xba, 0x20, - 0xa3, 0x84, 0x5f, 0xfa, 0xa7, 0x01, 0x2e, 0xf7, 0xf2, 0xda, 0x9a, 0x43, 0x23, 0xf8, 0xcd, 0x8e, - 0xb0, 0x2f, 0x3f, 0xda, 0x0c, 0xd9, 0x68, 0x1e, 0xf4, 0x2a, 0x95, 0x24, 0x14, 0x2d, 0xe4, 0xf7, - 0x41, 0xde, 0x89, 0xb0, 0x97, 0x9c, 0x96, 0xa8, 0xff, 0x61, 0x57, 0x39, 0x2b, 0xe1, 0xf3, 0xab, - 0x0c, 0x08, 0x09, 0xbc, 0xd2, 0x47, 0x39, 0x70, 0xa5, 0xd7, 0x10, 0x96, 0xc7, 0x29, 0x73, 0x76, - 0xe8, 0xc6, 0xc4, 0x72, 0x65, 0xb0, 0x29, 0x67, 0x6f, 0x72, 0x2a, 0x92, 0x5c, 0x96, 0x3b, 0xa9, - 0xe3, 0xd7, 0x63, 0xd7, 0x22, 0x32, 0x92, 0xd4, 0x84, 0xab, 0x92, 0x8e, 0x94, 0x04, 0x2c, 0x03, - 0x40, 0x77, 0x03, 0x12, 0x71, 0x0c, 0x5e, 0xe1, 0x8c, 0x54, 0xce, 0xb1, 0x8c, 0x50, 0x55, 0x54, - 0xa4, 0x49, 0xb0, 0x83, 0x64, 0xcf, 0xf1, 0x6d, 0xb9, 0xe0, 0x6a, 0xef, 0xde, 0x72, 0x7c, 0x1b, - 0x71, 0x0e, 0xc3, 0x77, 0x1d, 0x1a, 0x31, 0x8a, 0x5c, 0xed, 0x36, 0x87, 0x73, 0x49, 0x25, 0xc1, - 0xf0, 0x6b, 0x2c, 0xc1, 0x06, 0xc4, 0xc1, 0xd4, 0x1c, 0x4a, 0xf1, 0x97, 0x14, 0x15, 0x69, 0x12, - 0xa5, 0x3f, 0x0f, 0xf6, 0x8e, 0x0f, 0x96, 0x40, 0xe0, 0xe3, 0x20, 0x5f, 0x27, 0x41, 0x1c, 0x4a, - 0x2f, 0x29, 0x6f, 0xbf, 0xcc, 0x88, 0x48, 0xf0, 0xe0, 0x77, 0x40, 0xde, 0x97, 0x13, 0x66, 0x11, - 0xf4, 0x5a, 0xff, 0x97, 0x99, 0x7b, 0x2b, 0x45, 0x17, 0x8e, 0x14, 0xa0, 0xf0, 0x79, 0x90, 0xa7, - 0xb5, 0x20, 0xc4, 0xd2, 0x89, 0x33, 0x89, 0x50, 0x95, 0x11, 0x8f, 0x9a, 0xc5, 0xb3, 0x89, 0x3a, - 0x4e, 0x40, 0x42, 0x18, 0xfe, 0xc0, 0x00, 0x05, 0x79, 0x5c, 0x50, 0x73, 0x98, 0x87, 0xe7, 0xeb, - 0xfd, 0xb7, 0x5b, 0x96, 0xbd, 0xe9, 0x9a, 0x49, 0x02, 0x45, 0x0a, 0x1c, 0x7e, 0xcf, 0x00, 0xa0, - 0xa6, 0xce, 0x2e, 0x73, 0x84, 0xfb, 0xb0, 0x6f, 0x5b, 0x45, 0x3b, 0x15, 0x45, 0x20, 0xa4, 0xa5, - 0x92, 0x86, 0x0a, 0xab, 0x60, 0x32, 0x24, 0x98, 0xeb, 0xbe, 0xeb, 0xef, 0xf9, 0xc1, 0xbe, 0x7f, - 0xd3, 0xc1, 0xae, 0x4d, 0x4d, 0x30, 0x6b, 0xcc, 0x15, 0x2a, 0x57, 0xa4, 0xfd, 0x93, 0x9b, 0xdd, - 0x84, 0x50, 0xf7, 0xb1, 0xa5, 0xf7, 0x06, 0xb2, 0xb5, 0x56, 0xf6, 0xbc, 0x80, 0x1f, 0x88, 0xc9, - 0x8b, 0x3c, 0x4c, 0x4d, 0x83, 0x2f, 0xc4, 0x9b, 0xfd, 0x5f, 0x08, 0x95, 0xeb, 0xd3, 0x43, 0x5a, - 0x91, 0x28, 0xd2, 0x4c, 0x80, 0x3f, 0x33, 0xc0, 0x59, 0xab, 0x56, 0xc3, 0x61, 0x84, 0x6d, 0xb1, - 0x8d, 0x73, 0xa7, 0x1b, 0xd5, 0x93, 0xd2, 0xa0, 0xb3, 0x8b, 0x3a, 0x2a, 0x6a, 0x37, 0x02, 0xbe, - 0x04, 0xce, 0xd1, 0x28, 0x20, 0xd8, 0x4e, 0x22, 0x48, 0x66, 0x17, 0xd8, 0x6a, 0x16, 0xcf, 0x55, - 0xdb, 0x38, 0x28, 0x23, 0x59, 0xfa, 0x34, 0x0f, 0x8a, 0x0f, 0x89, 0xd0, 0x47, 0x28, 0x7a, 0xaf, - 0x81, 0x21, 0x3e, 0x53, 0x9b, 0x3b, 0xa4, 0xa0, 0x1d, 0xf5, 0x9c, 0x8a, 0x24, 0x97, 0x1d, 0x4f, - 0x0c, 0x9f, 0x1d, 0x4f, 0x03, 0x5c, 0x50, 0x1d, 0x4f, 0x55, 0x41, 0x46, 0x09, 0x1f, 0x2e, 0x00, - 0x60, 0xe3, 0x90, 0x60, 0x96, 0x91, 0x6c, 0x73, 0x98, 0x4b, 0xab, 0xf5, 0x59, 0x56, 0x1c, 0xa4, - 0x49, 0xc1, 0x9b, 0x00, 0x26, 0xff, 0x9c, 0xc0, 0x7f, 0xcd, 0x22, 0xbe, 0xe3, 0xd7, 0xcd, 0x02, - 0x37, 0x7b, 0x8a, 0x9d, 0xb6, 0xcb, 0x1d, 0x5c, 0xd4, 0x65, 0x04, 0x6c, 0x80, 0x21, 0x71, 0x8d, - 0xe6, 0x79, 0xa3, 0x8f, 0x3b, 0xee, 0x9e, 0xe5, 0x3a, 0x36, 0x87, 0xaa, 0x00, 0xee, 0x1e, 0x8e, - 0x82, 0x24, 0x1a, 0x7c, 0xdf, 0x00, 0x63, 0x34, 0xde, 0x26, 0x52, 0x9a, 0xf2, 0xac, 0x3e, 0xba, - 0x70, 0xa7, 0x5f, 0xf0, 0x55, 0x4d, 0x77, 0x65, 0xbc, 0xd5, 0x2c, 0x8e, 0xe9, 0x14, 0xd4, 0x86, - 0x0d, 0x3f, 0x36, 0x80, 0x69, 0xd9, 0x22, 0xf4, 0x2d, 0x77, 0x93, 0x38, 0x7e, 0x84, 0x89, 0xb8, - 0x10, 0x89, 0xe3, 0xa3, 0x8f, 0xb5, 0x62, 0xf6, 0x9e, 0x55, 0x99, 0x95, 0x2b, 0x6d, 0x2e, 0xf6, - 0xb0, 0x00, 0xf5, 0xb4, 0xad, 0xf4, 0x2f, 0x23, 0x9b, 0x5a, 0xb4, 0x59, 0x56, 0x6b, 0x96, 0x8b, - 0xe1, 0x32, 0x18, 0x67, 0xd5, 0x2f, 0xc2, 0xa1, 0xeb, 0xd4, 0x2c, 0xca, 0x6f, 0x3f, 0x22, 0xba, - 0xd5, 0x35, 0xbc, 0x9a, 0xe1, 0xa3, 0x8e, 0x11, 0xf0, 0x55, 0x00, 0x45, 0x59, 0xd8, 0xa6, 0x47, - 0x54, 0x02, 0xaa, 0xc0, 0xab, 0x76, 0x48, 0xa0, 0x2e, 0xa3, 0xe0, 0x12, 0x98, 0x70, 0xad, 0x6d, - 0xec, 0x56, 0xb1, 0x8b, 0x6b, 0x51, 0x40, 0xb8, 0x2a, 0x71, 0x3f, 0x9c, 0x6c, 0x35, 0x8b, 0x13, - 0x6b, 0x59, 0x26, 0xea, 0x94, 0x2f, 0x5d, 0xcd, 0xee, 0x65, 0x7d, 0xe2, 0xa2, 0xd8, 0xfe, 0x30, - 0x07, 0xa6, 0x7b, 0x07, 0x05, 0xfc, 0xae, 0x2a, 0x8d, 0x45, 0xc5, 0xf7, 0xfa, 0x29, 0x84, 0x9e, - 0xbc, 0x0e, 0x80, 0xce, 0xab, 0x00, 0x3c, 0x64, 0xe7, 0xb5, 0xe5, 0x26, 0xd7, 0xfe, 0xad, 0xd3, - 0x40, 0x67, 0xfa, 0x2b, 0x23, 0xa2, 0x0a, 0xb0, 0x5c, 0x7e, 0xe8, 0x5b, 0x2e, 0x2e, 0x7d, 0xd4, - 0x71, 0xb5, 0x4d, 0x37, 0x2b, 0xfc, 0xa1, 0x01, 0xce, 0x07, 0x21, 0xf6, 0x17, 0x37, 0x57, 0xef, - 0xfd, 0xbf, 0xd8, 0xb4, 0xd2, 0x41, 0xab, 0xc7, 0x37, 0x91, 0xdd, 0xaf, 0x85, 0xae, 0x4d, 0x12, - 0x84, 0xb4, 0x72, 0xa1, 0xd5, 0x2c, 0x9e, 0xdf, 0x68, 0x47, 0x41, 0x59, 0xd8, 0x92, 0x07, 0x26, - 0x57, 0x0e, 0x22, 0x4c, 0x7c, 0xcb, 0x5d, 0x0e, 0x6a, 0xb1, 0x87, 0xfd, 0x48, 0xd8, 0x98, 0x69, - 0x17, 0x18, 0x8f, 0xd8, 0x2e, 0xb8, 0x02, 0x06, 0x62, 0xe2, 0xca, 0xa8, 0x1d, 0x55, 0x4d, 0x30, - 0xb4, 0x86, 0x18, 0xbd, 0x74, 0x15, 0x0c, 0x32, 0x3b, 0xe1, 0x25, 0x30, 0x40, 0xac, 0x7d, 0xae, - 0x75, 0xac, 0x32, 0xcc, 0x44, 0x90, 0xb5, 0x8f, 0x18, 0xad, 0xf4, 0xb7, 0x59, 0x70, 0x3e, 0x33, - 0x17, 0x38, 0x0d, 0x72, 0xaa, 0xb3, 0x06, 0xa4, 0xd2, 0xdc, 0xea, 0x32, 0xca, 0x39, 0x36, 0x7c, - 0x51, 0x65, 0x57, 0x01, 0x5a, 0x54, 0x87, 0x05, 0xa7, 0xb2, 0xb2, 0x2c, 0x55, 0xc7, 0x0c, 0x49, - 0xd2, 0x23, 0xb3, 0x01, 0xef, 0xc8, 0x5d, 0x21, 0x6c, 0xc0, 0x3b, 0x88, 0xd1, 0x8e, 0xdb, 0x2b, - 0x49, 0x9a, 0x35, 0xf9, 0x47, 0x68, 0xd6, 0x0c, 0x3d, 0xb0, 0x59, 0xf3, 0x38, 0xc8, 0x47, 0x4e, - 0xe4, 0x62, 0x7e, 0x52, 0x69, 0xc5, 0xf0, 0x1d, 0x46, 0x44, 0x82, 0x07, 0x31, 0x18, 0xb6, 0xf1, - 0x8e, 0x15, 0xbb, 0x11, 0x3f, 0x94, 0x46, 0x17, 0xbe, 0x7e, 0xb2, 0xe8, 0x11, 0xcd, 0x8c, 0x65, - 0xa1, 0x12, 0x25, 0xba, 0xe1, 0x13, 0x60, 0xd8, 0xb3, 0x0e, 0x1c, 0x2f, 0xf6, 0x78, 0xc5, 0x68, - 0x08, 0xb1, 0x75, 0x41, 0x42, 0x09, 0x8f, 0x25, 0x41, 0x7c, 0x50, 0x73, 0x63, 0xea, 0x34, 0xb0, - 0x64, 0xca, 0x92, 0x4e, 0x25, 0xc1, 0x95, 0x0c, 0x1f, 0x75, 0x8c, 0xe0, 0x60, 0x8e, 0xcf, 0x07, - 0x8f, 0x6a, 0x60, 0x82, 0x84, 0x12, 0x5e, 0x3b, 0x98, 0x94, 0x1f, 0xeb, 0x05, 0x26, 0x07, 0x77, - 0x8c, 0x80, 0x4f, 0x83, 0x11, 0xcf, 0x3a, 0x58, 0xc3, 0x7e, 0x3d, 0xda, 0x35, 0xcf, 0xce, 0x1a, - 0x73, 0x03, 0x95, 0xb3, 0xad, 0x66, 0x71, 0x64, 0x3d, 0x21, 0xa2, 0x94, 0xcf, 0x85, 0x1d, 0x5f, - 0x0a, 0x9f, 0xd3, 0x84, 0x13, 0x22, 0x4a, 0xf9, 0xac, 0x32, 0x09, 0xad, 0x88, 0xed, 0x2b, 0xf3, - 0x7c, 0xfb, 0xc5, 0x79, 0x53, 0x90, 0x51, 0xc2, 0x87, 0x73, 0xa0, 0xe0, 0x59, 0x07, 0xfc, 0x4e, - 0x69, 0x8e, 0x73, 0xb5, 0xbc, 0xa1, 0xb8, 0x2e, 0x69, 0x48, 0x71, 0xb9, 0xa4, 0xe3, 0x0b, 0xc9, - 0x09, 0x4d, 0x52, 0xd2, 0x90, 0xe2, 0xb2, 0xf8, 0x8d, 0x7d, 0xe7, 0x7e, 0x8c, 0x85, 0x30, 0xe4, - 0x9e, 0x51, 0xf1, 0x7b, 0x37, 0x65, 0x21, 0x5d, 0x8e, 0xdd, 0xe9, 0xbc, 0xd8, 0x8d, 0x9c, 0xd0, - 0xc5, 0x1b, 0x3b, 0xe6, 0x05, 0xee, 0x7f, 0x5e, 0xca, 0xaf, 0x2b, 0x2a, 0xd2, 0x24, 0xe0, 0xdb, - 0x60, 0x10, 0xfb, 0xb1, 0x67, 0x5e, 0xe4, 0xc7, 0xf7, 0x49, 0xa3, 0x4f, 0xed, 0x97, 0x15, 0x3f, - 0xf6, 0x10, 0xd7, 0x0c, 0x5f, 0x04, 0x67, 0x3d, 0xeb, 0x80, 0x25, 0x01, 0x4c, 0x22, 0x76, 0xd1, - 0x9c, 0xe4, 0xf3, 0x9e, 0x60, 0x45, 0xec, 0xba, 0xce, 0x40, 0xed, 0x72, 0x7c, 0xa0, 0xe3, 0x6b, - 0x03, 0xa7, 0xb4, 0x81, 0x3a, 0x03, 0xb5, 0xcb, 0x31, 0x27, 0x13, 0x7c, 0x3f, 0x76, 0x08, 0xb6, - 0xcd, 0xff, 0xe1, 0x75, 0xaf, 0xec, 0xef, 0x0a, 0x1a, 0x52, 0x5c, 0x78, 0x3f, 0x69, 0x39, 0x98, - 0x7c, 0xf3, 0x6d, 0xf6, 0x2d, 0x75, 0x6f, 0x90, 0x45, 0x42, 0xac, 0x43, 0x71, 0xaa, 0xe8, 0xcd, - 0x06, 0xe8, 0x83, 0xbc, 0xe5, 0xba, 0x1b, 0x3b, 0xe6, 0x25, 0xee, 0xf1, 0x3e, 0x9e, 0x16, 0x2a, - 0xc3, 0x2c, 0x32, 0xfd, 0x48, 0xc0, 0x30, 0xbc, 0xc0, 0x67, 0xb1, 0x30, 0x7d, 0x6a, 0x78, 0x1b, - 0x4c, 0x3f, 0x12, 0x30, 0x7c, 0x7e, 0xfe, 0xe1, 0xc6, 0x8e, 0xf9, 0xd8, 0xe9, 0xcd, 0x8f, 0xe9, - 0x47, 0x02, 0x06, 0xda, 0x60, 0xc0, 0x0f, 0x22, 0xf3, 0x72, 0xbf, 0xcf, 0x5e, 0x7e, 0x9a, 0xdc, - 0x0e, 0x22, 0xc4, 0xd4, 0xc3, 0x1f, 0x1b, 0x00, 0x84, 0x69, 0x24, 0x5e, 0x39, 0x69, 0x0b, 0x20, - 0x83, 0x56, 0x4e, 0xa3, 0x77, 0xc5, 0x8f, 0xc8, 0x61, 0x7a, 0xaf, 0xd1, 0xa2, 0x5c, 0x33, 0x00, - 0xfe, 0xc2, 0x00, 0x17, 0xf5, 0x72, 0x57, 0x59, 0x36, 0xc3, 0xfd, 0xb0, 0xd1, 0xc7, 0x40, 0xae, - 0x04, 0x81, 0x5b, 0x31, 0x5b, 0xcd, 0xe2, 0xc5, 0xc5, 0x2e, 0x80, 0xa8, 0xab, 0x19, 0xf0, 0x37, - 0x06, 0x98, 0x90, 0xd9, 0x51, 0x33, 0xae, 0xc8, 0xdd, 0xf6, 0x76, 0x1f, 0xdd, 0x96, 0x85, 0x10, - 0xde, 0x53, 0x5f, 0x19, 0x3b, 0xf8, 0xa8, 0xd3, 0x2a, 0xf8, 0x7b, 0x03, 0x8c, 0xd9, 0x38, 0xc4, - 0xbe, 0x8d, 0xfd, 0x1a, 0x33, 0x73, 0xf6, 0xa4, 0x7d, 0x85, 0xac, 0x99, 0xcb, 0x9a, 0x76, 0x61, - 0x61, 0x59, 0x5a, 0x38, 0xa6, 0xb3, 0x8e, 0x9a, 0xc5, 0xa9, 0x74, 0xa8, 0xce, 0x41, 0x6d, 0x06, - 0xc2, 0x9f, 0x18, 0xe0, 0x7c, 0xea, 0x76, 0x71, 0x40, 0x5c, 0x3d, 0x9d, 0x85, 0xe7, 0x25, 0xe8, - 0x62, 0x3b, 0x16, 0xca, 0x82, 0xc3, 0xdf, 0x1a, 0xac, 0xda, 0x4a, 0xee, 0x6a, 0xd4, 0x2c, 0x71, - 0x0f, 0xbe, 0xd1, 0x4f, 0x0f, 0x2a, 0xe5, 0xc2, 0x81, 0xd7, 0xd3, 0x4a, 0x4e, 0x71, 0x8e, 0x9a, - 0xc5, 0x49, 0xdd, 0x7f, 0x8a, 0x81, 0x74, 0xe3, 0xe0, 0x7b, 0x06, 0x18, 0xc3, 0x69, 0xc1, 0x4c, - 0xcd, 0xc7, 0x4f, 0xea, 0xba, 0xae, 0xe5, 0xb7, 0xb8, 0x4e, 0x6b, 0x2c, 0x8a, 0xda, 0x60, 0x59, - 0xed, 0x87, 0x0f, 0x2c, 0x2f, 0x74, 0xb1, 0xf9, 0xbf, 0xfd, 0xab, 0xfd, 0x56, 0x84, 0x4a, 0x94, - 0xe8, 0x86, 0xd7, 0x41, 0xc1, 0x8f, 0x5d, 0xd7, 0xda, 0x76, 0xb1, 0xf9, 0x04, 0xaf, 0x22, 0x54, - 0x7f, 0xf1, 0xb6, 0xa4, 0x23, 0x25, 0x01, 0x77, 0xc0, 0xec, 0xc1, 0x2d, 0xf5, 0xf8, 0xa2, 0x6b, - 0x03, 0xcf, 0xbc, 0xc6, 0xb5, 0x4c, 0xb7, 0x9a, 0xc5, 0xa9, 0xad, 0xee, 0x2d, 0xbe, 0x87, 0xea, - 0x80, 0x6f, 0x82, 0xc7, 0x34, 0x99, 0x15, 0x6f, 0x1b, 0xdb, 0x36, 0xb6, 0x93, 0x8b, 0x96, 0xf9, - 0x7f, 0x1c, 0x42, 0xed, 0xe3, 0xad, 0xac, 0x00, 0x7a, 0xd0, 0x68, 0xb8, 0x06, 0xa6, 0x34, 0xf6, - 0xaa, 0x1f, 0x6d, 0x90, 0x6a, 0x44, 0x1c, 0xbf, 0x6e, 0xce, 0x71, 0xbd, 0x17, 0x93, 0xdd, 0xb7, - 0xa5, 0xf1, 0x50, 0x8f, 0x31, 0xf0, 0x95, 0x36, 0x6d, 0xfc, 0xc3, 0x85, 0x15, 0xde, 0xc2, 0x87, - 0xd4, 0x7c, 0x92, 0x17, 0x17, 0x7c, 0x9d, 0xb7, 0x34, 0x3a, 0xea, 0x21, 0x0f, 0xbf, 0x01, 0x2e, - 0x64, 0x38, 0xec, 0x5e, 0x61, 0x3e, 0x25, 0x2e, 0x08, 0xac, 0x12, 0xdd, 0x4a, 0x88, 0xa8, 0x9b, - 0x24, 0xfc, 0x1a, 0x80, 0x1a, 0x79, 0xdd, 0x0a, 0xf9, 0xf8, 0xa7, 0xc5, 0x5d, 0x85, 0xad, 0xe8, - 0x96, 0xa4, 0xa1, 0x2e, 0x72, 0xf0, 0x43, 0xa3, 0x6d, 0x26, 0xe9, 0x6d, 0x96, 0x9a, 0xd7, 0xf9, - 0x86, 0x7d, 0xe5, 0xf8, 0x01, 0x98, 0x2a, 0x43, 0xb1, 0x8b, 0x35, 0x0f, 0x6b, 0x28, 0xa8, 0x07, - 0xfa, 0x34, 0xbb, 0x4c, 0x67, 0x72, 0x38, 0x1c, 0x07, 0x03, 0x7b, 0x58, 0x7e, 0x36, 0x46, 0xec, - 0x27, 0x7c, 0x0b, 0xe4, 0x1b, 0x96, 0x1b, 0x27, 0xad, 0x80, 0xfe, 0x9d, 0xf5, 0x48, 0xe8, 0x7d, - 0x29, 0x77, 0xc3, 0x98, 0xfe, 0xc0, 0x00, 0x53, 0xdd, 0x4f, 0x95, 0x2f, 0xcb, 0xa2, 0x9f, 0x1b, - 0x60, 0xa2, 0xe3, 0x00, 0xe9, 0x62, 0x8c, 0xdb, 0x6e, 0xcc, 0xbd, 0x3e, 0x9e, 0x04, 0x62, 0x23, - 0xf0, 0x8a, 0x56, 0xb7, 0xec, 0x47, 0x06, 0x18, 0xcf, 0x26, 0xe6, 0x2f, 0xc9, 0x4b, 0xa5, 0xf7, - 0x73, 0x60, 0xaa, 0x7b, 0x0d, 0x0e, 0x3d, 0xd5, 0x5d, 0xe8, 0x7b, 0x83, 0xa6, 0x5b, 0xcb, 0xf6, - 0x5d, 0x03, 0x8c, 0xbe, 0xa3, 0xe4, 0x92, 0xaf, 0x99, 0xfd, 0xec, 0x0a, 0x25, 0x47, 0x5f, 0xca, - 0xa0, 0x48, 0x87, 0x2c, 0xfd, 0xce, 0x00, 0x93, 0x5d, 0x8f, 0x73, 0x78, 0x0d, 0x0c, 0x59, 0xae, - 0x1b, 0xec, 0x8b, 0x6e, 0x9e, 0xd6, 0x96, 0x5f, 0xe4, 0x54, 0x24, 0xb9, 0x9a, 0xcf, 0x72, 0x5f, - 0x80, 0xcf, 0x4a, 0x7f, 0x30, 0xc0, 0xe5, 0x07, 0x45, 0xdd, 0x17, 0xbd, 0x86, 0x73, 0xa0, 0x20, - 0x8b, 0xed, 0x43, 0xbe, 0x7e, 0x32, 0xbb, 0xca, 0x8c, 0xc0, 0x5f, 0xcb, 0x88, 0x5f, 0xa5, 0x5f, - 0x19, 0x60, 0xbc, 0x8a, 0x49, 0xc3, 0xa9, 0x61, 0x84, 0x77, 0x30, 0xc1, 0x7e, 0x0d, 0xc3, 0x79, - 0x30, 0xc2, 0xbf, 0x36, 0x86, 0x56, 0x2d, 0xf9, 0x46, 0x32, 0x21, 0x1d, 0x3d, 0x72, 0x3b, 0x61, - 0xa0, 0x54, 0x46, 0x7d, 0x4f, 0xc9, 0xf5, 0xfc, 0x9e, 0x72, 0x19, 0x0c, 0x86, 0x69, 0x03, 0xb8, - 0xc0, 0xb8, 0xbc, 0xe7, 0xcb, 0xa9, 0x9c, 0x1b, 0x90, 0x88, 0x77, 0xb9, 0xf2, 0x92, 0x1b, 0x90, - 0x08, 0x71, 0x6a, 0xe9, 0xe3, 0x1c, 0x38, 0xd7, 0x9e, 0x9f, 0x19, 0x20, 0x89, 0xdd, 0x8e, 0x0f, - 0x38, 0x8c, 0x87, 0x38, 0x47, 0x7f, 0x37, 0x90, 0x7b, 0xf0, 0xbb, 0x01, 0xf8, 0x32, 0x98, 0x90, - 0x3f, 0x57, 0x0e, 0x42, 0x82, 0x29, 0xff, 0x32, 0x39, 0xd0, 0xfe, 0xde, 0x6f, 0x3d, 0x2b, 0x80, - 0x3a, 0xc7, 0xc0, 0x6f, 0x65, 0xde, 0x34, 0xac, 0xa4, 0xef, 0x19, 0x8e, 0x9a, 0xc5, 0x17, 0x7b, - 0x3d, 0xc0, 0x8b, 0x23, 0xc7, 0x9d, 0x6f, 0xa8, 0x09, 0xce, 0xef, 0xb0, 0x12, 0xa3, 0xbc, 0x42, - 0x48, 0x40, 0xf8, 0x59, 0x98, 0x3c, 0x85, 0x98, 0x07, 0x23, 0x9c, 0xc5, 0x3b, 0xe9, 0xf9, 0xf6, - 0x65, 0xb9, 0x99, 0x30, 0x50, 0x2a, 0x53, 0xfa, 0xa3, 0x01, 0x2e, 0x24, 0xef, 0x85, 0x5c, 0x07, - 0xfb, 0xd1, 0x52, 0xe0, 0xef, 0x38, 0x75, 0x78, 0x49, 0x74, 0x48, 0xb5, 0xb6, 0x63, 0xd2, 0x1d, - 0x85, 0xf7, 0xc1, 0x30, 0x15, 0xe1, 0x20, 0x23, 0xf5, 0xd5, 0xe3, 0x47, 0x6a, 0x36, 0xae, 0x44, - 0x81, 0x97, 0x50, 0x13, 0x1c, 0x16, 0xac, 0x35, 0xab, 0x12, 0xfb, 0xb6, 0xec, 0x92, 0x8f, 0x89, - 0x60, 0x5d, 0x5a, 0x14, 0x34, 0xa4, 0xb8, 0xa5, 0xbf, 0x1b, 0x60, 0xa2, 0xe3, 0xfd, 0x13, 0xfc, - 0xbe, 0x01, 0xc6, 0x6a, 0xda, 0xf4, 0xe4, 0x96, 0x5f, 0x3f, 0xf9, 0x1b, 0x2b, 0x4d, 0xa9, 0xa8, - 0x92, 0x74, 0x0a, 0x6a, 0x03, 0x85, 0x5b, 0xc0, 0xac, 0x65, 0x9e, 0x1a, 0x66, 0x3e, 0x5e, 0x5e, - 0x6e, 0x35, 0x8b, 0xe6, 0x52, 0x0f, 0x19, 0xd4, 0x73, 0x74, 0xe5, 0xdb, 0x9f, 0x7c, 0x3e, 0x73, - 0xe6, 0xd3, 0xcf, 0x67, 0xce, 0x7c, 0xf6, 0xf9, 0xcc, 0x99, 0x77, 0x5b, 0x33, 0xc6, 0x27, 0xad, - 0x19, 0xe3, 0xd3, 0xd6, 0x8c, 0xf1, 0x59, 0x6b, 0xc6, 0xf8, 0x4b, 0x6b, 0xc6, 0xf8, 0xe9, 0x5f, - 0x67, 0xce, 0xbc, 0x71, 0xe3, 0xb8, 0x0f, 0x8c, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xab, 0x86, - 0x4f, 0xde, 0xb4, 0x2c, 0x00, 0x00, + // 3111 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xdd, 0x6f, 0x5c, 0x47, + 0x15, 0xcf, 0x5d, 0x7b, 0xed, 0xf5, 0xd8, 0x89, 0xed, 0x49, 0x6c, 0x6e, 0xdc, 0xc4, 0xeb, 0x6c, + 0x68, 0x70, 0xdb, 0x74, 0xdd, 0x9a, 0x96, 0x86, 0x82, 0x40, 0x5e, 0xdb, 0x69, 0xdd, 0xd8, 0xb1, + 0x35, 0x9b, 0xa4, 0x6e, 0x8b, 0x68, 0xaf, 0xf7, 0x8e, 0xd7, 0xb7, 0xbe, 0x5f, 0x99, 0xb9, 0xd7, + 0x1f, 0x12, 0x48, 0x15, 0xa8, 0x02, 0x2a, 0x41, 0x79, 0xa8, 0xca, 0x13, 0x42, 0x08, 0xf5, 0x01, + 0x1e, 0xe0, 0x0d, 0xfe, 0x85, 0xbe, 0x20, 0xf5, 0x09, 0x55, 0x42, 0x5a, 0xd1, 0xe5, 0x1f, 0x40, + 0x02, 0x84, 0xf0, 0x03, 0x42, 0xf3, 0x71, 0xe7, 0xce, 0xde, 0xdd, 0x4d, 0x22, 0x7b, 0xdd, 0xbe, + 0xed, 0x9e, 0x73, 0xe6, 0xfc, 0xce, 0x9c, 0x39, 0x73, 0xe6, 0xcc, 0xb9, 0x03, 0xac, 0xdd, 0x1b, + 0xb4, 0xec, 0x04, 0x73, 0xbb, 0xf1, 0x16, 0x26, 0x3e, 0x8e, 0x30, 0x9d, 0xdb, 0xc3, 0xbe, 0x1d, + 0x90, 0x39, 0xc9, 0xb0, 0x42, 0x07, 0x1f, 0x44, 0xd8, 0xa7, 0x4e, 0xe0, 0xd3, 0xa7, 0xad, 0xd0, + 0xa1, 0x98, 0xec, 0x61, 0x32, 0x17, 0xee, 0xd6, 0x19, 0x8f, 0xb6, 0x0a, 0xcc, 0xed, 0x3d, 0x3b, + 0x57, 0xc7, 0x3e, 0x26, 0x56, 0x84, 0xed, 0x72, 0x48, 0x82, 0x28, 0x80, 0x37, 0x84, 0xa6, 0x72, + 0x8b, 0xe0, 0x9b, 0x4a, 0x53, 0x39, 0xdc, 0xad, 0x33, 0x1e, 0x6d, 0x15, 0x28, 0xef, 0x3d, 0x3b, + 0xf5, 0x74, 0xdd, 0x89, 0x76, 0xe2, 0xad, 0x72, 0x2d, 0xf0, 0xe6, 0xea, 0x41, 0x3d, 0x98, 0xe3, + 0x0a, 0xb7, 0xe2, 0x6d, 0xfe, 0x8f, 0xff, 0xe1, 0xbf, 0x04, 0xd0, 0xd4, 0x73, 0xa9, 0xc9, 0x9e, + 0x55, 0xdb, 0x71, 0x7c, 0x4c, 0x0e, 0x53, 0x3b, 0x3d, 0x1c, 0x59, 0x1d, 0xcc, 0x9b, 0x9a, 0xeb, + 0x36, 0x8a, 0xc4, 0x7e, 0xe4, 0x78, 0xb8, 0x6d, 0xc0, 0xd7, 0x1e, 0x36, 0x80, 0xd6, 0x76, 0xb0, + 0x67, 0x65, 0xc7, 0x95, 0x8e, 0x0c, 0x30, 0xbe, 0x18, 0xf8, 0x7b, 0x98, 0xb0, 0x09, 0x22, 0x7c, + 0x3f, 0xc6, 0x34, 0x82, 0x15, 0xd0, 0x17, 0x3b, 0xb6, 0x69, 0xcc, 0x18, 0xb3, 0x43, 0x95, 0x67, + 0x3e, 0x6e, 0x14, 0xcf, 0x34, 0x1b, 0xc5, 0xbe, 0xbb, 0x2b, 0x4b, 0x47, 0x8d, 0xe2, 0x95, 0x6e, + 0x48, 0xd1, 0x61, 0x88, 0x69, 0xf9, 0xee, 0xca, 0x12, 0x62, 0x83, 0xe1, 0x4b, 0x60, 0xdc, 0xc6, + 0xd4, 0x21, 0xd8, 0x5e, 0xd8, 0x58, 0xb9, 0x27, 0xf4, 0x9b, 0x39, 0xae, 0xf1, 0xa2, 0xd4, 0x38, + 0xbe, 0x94, 0x15, 0x40, 0xed, 0x63, 0xe0, 0x26, 0x18, 0x0c, 0xb6, 0xde, 0xc6, 0xb5, 0x88, 0x9a, + 0x7d, 0x33, 0x7d, 0xb3, 0xc3, 0xf3, 0x4f, 0x97, 0xd3, 0xc5, 0x53, 0x26, 0xf0, 0x15, 0x93, 0x93, + 0x2d, 0x23, 0x6b, 0x7f, 0x39, 0x59, 0xb4, 0xca, 0xa8, 0x44, 0x1b, 0x5c, 0x17, 0x5a, 0x50, 0xa2, + 0xae, 0xf4, 0x9b, 0x1c, 0x80, 0xfa, 0xe4, 0x69, 0x18, 0xf8, 0x14, 0xf7, 0x64, 0xf6, 0x14, 0x8c, + 0xd5, 0xb8, 0xe6, 0x08, 0xdb, 0x12, 0xd7, 0xcc, 0x1d, 0xc7, 0x7a, 0x53, 0xe2, 0x8f, 0x2d, 0x66, + 0xd4, 0xa1, 0x36, 0x00, 0x78, 0x07, 0x0c, 0x10, 0x4c, 0x63, 0x37, 0x32, 0xfb, 0x66, 0x8c, 0xd9, + 0xe1, 0xf9, 0xeb, 0x5d, 0xa1, 0x78, 0x68, 0xb3, 0xe0, 0x2b, 0xef, 0x3d, 0x5b, 0xae, 0x46, 0x56, + 0x14, 0xd3, 0xca, 0x39, 0x89, 0x34, 0x80, 0xb8, 0x0e, 0x24, 0x75, 0x95, 0xfe, 0x67, 0x80, 0x31, + 0xdd, 0x4b, 0x7b, 0x0e, 0xde, 0x87, 0x04, 0x0c, 0x12, 0x11, 0x2c, 0xdc, 0x4f, 0xc3, 0xf3, 0xb7, + 0xca, 0xc7, 0xdd, 0x51, 0xe5, 0xb6, 0xf8, 0xab, 0x0c, 0xb3, 0xe5, 0x92, 0x7f, 0x50, 0x02, 0x04, + 0xf7, 0x40, 0x81, 0xc8, 0x35, 0xe2, 0x81, 0x34, 0x3c, 0xbf, 0xda, 0x1b, 0x50, 0xa1, 0xb3, 0x32, + 0xd2, 0x6c, 0x14, 0x0b, 0xc9, 0x3f, 0xa4, 0xb0, 0x4a, 0xbf, 0xca, 0x81, 0xe9, 0xc5, 0x98, 0x46, + 0x81, 0x87, 0x30, 0x0d, 0x62, 0x52, 0xc3, 0x8b, 0x81, 0x1b, 0x7b, 0xfe, 0x12, 0xde, 0x76, 0x7c, + 0x27, 0x62, 0x31, 0x3a, 0x03, 0xfa, 0x7d, 0xcb, 0xc3, 0x32, 0x66, 0x46, 0xa4, 0x27, 0xfb, 0x6f, + 0x5b, 0x1e, 0x46, 0x9c, 0xc3, 0x24, 0x58, 0x88, 0xc8, 0x1d, 0xa0, 0x24, 0xee, 0x1c, 0x86, 0x18, + 0x71, 0x0e, 0xbc, 0x06, 0x06, 0xb6, 0x03, 0xe2, 0x59, 0x62, 0xf5, 0x86, 0xd2, 0xf5, 0xb8, 0xc9, + 0xa9, 0x48, 0x72, 0xe1, 0xf3, 0x60, 0xd8, 0xc6, 0xb4, 0x46, 0x9c, 0x90, 0x41, 0x9b, 0xfd, 0x5c, + 0xf8, 0xbc, 0x14, 0x1e, 0x5e, 0x4a, 0x59, 0x48, 0x97, 0x83, 0xd7, 0x41, 0x21, 0x24, 0x4e, 0x40, + 0x9c, 0xe8, 0xd0, 0xcc, 0xcf, 0x18, 0xb3, 0xf9, 0xca, 0x98, 0x1c, 0x53, 0xd8, 0x90, 0x74, 0xa4, + 0x24, 0x98, 0xf4, 0xdb, 0x34, 0xf0, 0x37, 0xac, 0x68, 0xc7, 0x1c, 0xe0, 0x08, 0x4a, 0xfa, 0x95, + 0xea, 0xfa, 0x6d, 0x46, 0x47, 0x4a, 0xa2, 0xf4, 0x17, 0x03, 0x98, 0x59, 0x0f, 0x25, 0xee, 0x85, + 0x37, 0x41, 0x81, 0x46, 0x2c, 0xe7, 0xd4, 0x0f, 0xa5, 0x7f, 0x9e, 0x4c, 0x54, 0x55, 0x25, 0xfd, + 0xa8, 0x51, 0x9c, 0x4c, 0x47, 0x24, 0x54, 0xee, 0x1b, 0x35, 0x96, 0x85, 0xdc, 0x3e, 0xde, 0xda, + 0x09, 0x82, 0x5d, 0xb9, 0xfa, 0x27, 0x08, 0xb9, 0x57, 0x85, 0xa2, 0x14, 0x53, 0x84, 0x9c, 0x24, + 0xa3, 0x04, 0xa8, 0xf4, 0xdf, 0x5c, 0x76, 0x62, 0xda, 0xa2, 0xbf, 0x05, 0x0a, 0x6c, 0x0b, 0xd9, + 0x56, 0x64, 0xc9, 0x4d, 0xf0, 0xcc, 0xa3, 0x6d, 0x38, 0xb1, 0x5f, 0xd7, 0x70, 0x64, 0x55, 0xa0, + 0x74, 0x05, 0x48, 0x69, 0x48, 0x69, 0x85, 0x07, 0xa0, 0x9f, 0x86, 0xb8, 0x26, 0xe7, 0x7b, 0xef, + 0x04, 0xd1, 0xde, 0x65, 0x0e, 0xd5, 0x10, 0xd7, 0xd2, 0x60, 0x64, 0xff, 0x10, 0x47, 0x84, 0xef, + 0x18, 0x60, 0x80, 0xf2, 0xbc, 0x20, 0x73, 0xc9, 0xe6, 0x29, 0x80, 0x67, 0xf2, 0x8e, 0xf8, 0x8f, + 0x24, 0x6e, 0xe9, 0x5f, 0x39, 0x70, 0xa5, 0xdb, 0xd0, 0xc5, 0xc0, 0xb7, 0xc5, 0x22, 0xac, 0xc8, + 0x7d, 0x25, 0x22, 0xeb, 0x79, 0x7d, 0x5f, 0x1d, 0x35, 0x8a, 0x8f, 0x3f, 0x54, 0x81, 0xb6, 0x01, + 0xbf, 0xae, 0xa6, 0x2c, 0x36, 0xe9, 0x95, 0x56, 0xc3, 0x8e, 0x1a, 0xc5, 0x51, 0x35, 0xac, 0xd5, + 0x56, 0xb8, 0x07, 0xa0, 0x6b, 0xd1, 0xe8, 0x0e, 0xb1, 0x7c, 0x2a, 0xd4, 0x3a, 0x1e, 0x96, 0x9e, + 0x7b, 0xf2, 0xd1, 0x82, 0x82, 0x8d, 0xa8, 0x4c, 0x49, 0x48, 0xb8, 0xda, 0xa6, 0x0d, 0x75, 0x40, + 0x60, 0x39, 0x83, 0x60, 0x8b, 0xaa, 0x34, 0xa0, 0xe5, 0x70, 0x46, 0x45, 0x92, 0x0b, 0x9f, 0x00, + 0x83, 0x1e, 0xa6, 0xd4, 0xaa, 0x63, 0xbe, 0xf7, 0x87, 0xd2, 0x43, 0x71, 0x4d, 0x90, 0x51, 0xc2, + 0x2f, 0xfd, 0xdb, 0x00, 0x97, 0xba, 0x79, 0x6d, 0xd5, 0xa1, 0x11, 0xfc, 0x4e, 0x5b, 0xd8, 0x97, + 0x1f, 0x6d, 0x86, 0x6c, 0x34, 0x0f, 0x7a, 0x95, 0x4a, 0x12, 0x8a, 0x16, 0xf2, 0xfb, 0x20, 0xef, + 0x44, 0xd8, 0x4b, 0x4e, 0x4b, 0xd4, 0xfb, 0xb0, 0xab, 0x9c, 0x95, 0xf0, 0xf9, 0x15, 0x06, 0x84, + 0x04, 0x5e, 0xe9, 0xa3, 0x1c, 0xb8, 0xdc, 0x6d, 0x08, 0xcb, 0xe3, 0x94, 0x39, 0x3b, 0x74, 0x63, + 0x62, 0xb9, 0x32, 0xd8, 0x94, 0xb3, 0x37, 0x38, 0x15, 0x49, 0x2e, 0xcb, 0x9d, 0xd4, 0xf1, 0xeb, + 0xb1, 0x6b, 0x11, 0x19, 0x49, 0x6a, 0xc2, 0x55, 0x49, 0x47, 0x4a, 0x02, 0x96, 0x01, 0xa0, 0x3b, + 0x01, 0x89, 0x38, 0x06, 0xaf, 0x70, 0x86, 0x2a, 0xe7, 0x58, 0x46, 0xa8, 0x2a, 0x2a, 0xd2, 0x24, + 0xd8, 0x41, 0xb2, 0xeb, 0xf8, 0xb6, 0x5c, 0x70, 0xb5, 0x77, 0x6f, 0x39, 0xbe, 0x8d, 0x38, 0x87, + 0xe1, 0xbb, 0x0e, 0x8d, 0x18, 0x45, 0xae, 0x76, 0x8b, 0xc3, 0xb9, 0xa4, 0x92, 0x60, 0xf8, 0x35, + 0x96, 0x60, 0x03, 0xe2, 0x60, 0x6a, 0x0e, 0xa4, 0xf8, 0x8b, 0x8a, 0x8a, 0x34, 0x89, 0xd2, 0x5f, + 0xfb, 0xbb, 0xc7, 0x07, 0x4b, 0x20, 0xf0, 0x2a, 0xc8, 0xd7, 0x49, 0x10, 0x87, 0xd2, 0x4b, 0xca, + 0xdb, 0x2f, 0x31, 0x22, 0x12, 0x3c, 0xf8, 0x3d, 0x90, 0xf7, 0xe5, 0x84, 0x59, 0x04, 0xbd, 0xda, + 0xfb, 0x65, 0xe6, 0xde, 0x4a, 0xd1, 0x85, 0x23, 0x05, 0x28, 0x7c, 0x0e, 0xe4, 0x69, 0x2d, 0x08, + 0xb1, 0x74, 0xe2, 0x74, 0x22, 0x54, 0x65, 0xc4, 0xa3, 0x46, 0xf1, 0x6c, 0xa2, 0x8e, 0x13, 0x90, + 0x10, 0x86, 0x3f, 0x32, 0x40, 0x41, 0x1e, 0x17, 0xd4, 0x1c, 0xe4, 0xe1, 0xf9, 0x5a, 0xef, 0xed, + 0x96, 0x65, 0x6f, 0xba, 0x66, 0x92, 0x40, 0x91, 0x02, 0x87, 0x3f, 0x30, 0x00, 0xa8, 0xa9, 0xb3, + 0xcb, 0x1c, 0xe2, 0x3e, 0xec, 0xd9, 0x56, 0xd1, 0x4e, 0x45, 0x11, 0x08, 0x69, 0xa9, 0xa4, 0xa1, + 0xc2, 0x2a, 0x98, 0x08, 0x09, 0xe6, 0xba, 0xef, 0xfa, 0xbb, 0x7e, 0xb0, 0xef, 0xdf, 0x74, 0xb0, + 0x6b, 0x53, 0x13, 0xcc, 0x18, 0xb3, 0x85, 0xca, 0x65, 0x69, 0xff, 0xc4, 0x46, 0x27, 0x21, 0xd4, + 0x79, 0x6c, 0xe9, 0xdd, 0xbe, 0x6c, 0xad, 0x95, 0x3d, 0x2f, 0xe0, 0xfb, 0x62, 0xf2, 0x22, 0x0f, + 0x53, 0xd3, 0xe0, 0x0b, 0xf1, 0x46, 0xef, 0x17, 0x42, 0xe5, 0xfa, 0xf4, 0x90, 0x56, 0x24, 0x8a, + 0x34, 0x13, 0xe0, 0x07, 0x06, 0x38, 0x6b, 0xd5, 0x6a, 0x38, 0x8c, 0xb0, 0x2d, 0xb6, 0x71, 0xee, + 0x74, 0xa3, 0x7a, 0x42, 0x1a, 0x74, 0x76, 0x41, 0x47, 0x45, 0xad, 0x46, 0xc0, 0x17, 0xc1, 0x39, + 0x1a, 0x05, 0x04, 0xdb, 0x49, 0x04, 0xc9, 0xec, 0x02, 0x9b, 0x8d, 0xe2, 0xb9, 0x6a, 0x0b, 0x07, + 0x65, 0x24, 0x4b, 0x9f, 0xe4, 0x41, 0xf1, 0x21, 0x11, 0xfa, 0x08, 0x45, 0xef, 0x35, 0x30, 0xc0, + 0x67, 0x6a, 0x73, 0x87, 0x14, 0xb4, 0xa3, 0x9e, 0x53, 0x91, 0xe4, 0xb2, 0xe3, 0x89, 0xe1, 0xb3, + 0xe3, 0xa9, 0x8f, 0x0b, 0xaa, 0xe3, 0xa9, 0x2a, 0xc8, 0x28, 0xe1, 0xc3, 0x79, 0x00, 0x6c, 0x1c, + 0x12, 0xcc, 0x32, 0x92, 0x6d, 0x0e, 0x72, 0x69, 0xb5, 0x3e, 0x4b, 0x8a, 0x83, 0x34, 0x29, 0x78, + 0x13, 0xc0, 0xe4, 0x9f, 0x13, 0xf8, 0xaf, 0x5a, 0xc4, 0x77, 0xfc, 0xba, 0x59, 0xe0, 0x66, 0x4f, + 0xb2, 0xd3, 0x76, 0xa9, 0x8d, 0x8b, 0x3a, 0x8c, 0x80, 0x7b, 0x60, 0x40, 0x5c, 0xa3, 0x79, 0xde, + 0xe8, 0xe1, 0x8e, 0xbb, 0x67, 0xb9, 0x8e, 0xcd, 0xa1, 0x2a, 0x80, 0xbb, 0x87, 0xa3, 0x20, 0x89, + 0x06, 0xdf, 0x33, 0xc0, 0x08, 0x8d, 0xb7, 0x88, 0x94, 0xa6, 0x3c, 0xab, 0x0f, 0xcf, 0xdf, 0xe9, + 0x15, 0x7c, 0x55, 0xd3, 0x5d, 0x19, 0x6b, 0x36, 0x8a, 0x23, 0x3a, 0x05, 0xb5, 0x60, 0xc3, 0x3f, + 0x1a, 0xc0, 0xb4, 0x6c, 0x11, 0xfa, 0x96, 0xbb, 0x41, 0x1c, 0x3f, 0xc2, 0x44, 0x5c, 0x88, 0xc4, + 0xf1, 0xd1, 0xc3, 0x5a, 0x31, 0x7b, 0xcf, 0xaa, 0xcc, 0xc8, 0x95, 0x36, 0x17, 0xba, 0x58, 0x80, + 0xba, 0xda, 0x56, 0xfa, 0x8f, 0x91, 0x4d, 0x2d, 0xda, 0x2c, 0xab, 0x35, 0xcb, 0xc5, 0x70, 0x09, + 0x8c, 0xb1, 0xea, 0x17, 0xe1, 0xd0, 0x75, 0x6a, 0x16, 0xe5, 0xb7, 0x1f, 0x11, 0xdd, 0xea, 0x1a, + 0x5e, 0xcd, 0xf0, 0x51, 0xdb, 0x08, 0xf8, 0x0a, 0x80, 0xa2, 0x2c, 0x6c, 0xd1, 0x23, 0x2a, 0x01, + 0x55, 0xe0, 0x55, 0xdb, 0x24, 0x50, 0x87, 0x51, 0x70, 0x11, 0x8c, 0xbb, 0xd6, 0x16, 0x76, 0xab, + 0xd8, 0xc5, 0xb5, 0x28, 0x20, 0x5c, 0x95, 0xb8, 0x1f, 0x4e, 0x34, 0x1b, 0xc5, 0xf1, 0xd5, 0x2c, + 0x13, 0xb5, 0xcb, 0x97, 0xae, 0x64, 0xf7, 0xb2, 0x3e, 0x71, 0x51, 0x6c, 0x7f, 0x98, 0x03, 0x53, + 0xdd, 0x83, 0x02, 0x7e, 0x5f, 0x95, 0xc6, 0xa2, 0xe2, 0x7b, 0xed, 0x14, 0x42, 0x4f, 0x5e, 0x07, + 0x40, 0xfb, 0x55, 0x00, 0x1e, 0xb2, 0xf3, 0xda, 0x72, 0x93, 0x6b, 0xff, 0xe6, 0x69, 0xa0, 0x33, + 0xfd, 0x95, 0x21, 0x51, 0x05, 0x58, 0x2e, 0x3f, 0xf4, 0x2d, 0x17, 0x97, 0x3e, 0x6a, 0xbb, 0xda, + 0xa6, 0x9b, 0x15, 0xfe, 0xd8, 0x00, 0xa3, 0x41, 0x88, 0xfd, 0x85, 0x8d, 0x95, 0x7b, 0x5f, 0x15, + 0x9b, 0x56, 0x3a, 0x68, 0xe5, 0xf8, 0x26, 0xb2, 0xfb, 0xb5, 0xd0, 0xb5, 0x41, 0x82, 0x90, 0x56, + 0xce, 0x37, 0x1b, 0xc5, 0xd1, 0xf5, 0x56, 0x14, 0x94, 0x85, 0x2d, 0x79, 0x60, 0x62, 0xf9, 0x20, + 0xc2, 0xc4, 0xb7, 0xdc, 0xa5, 0xa0, 0x16, 0x7b, 0xd8, 0x8f, 0x84, 0x8d, 0x99, 0x76, 0x81, 0xf1, + 0x88, 0xed, 0x82, 0xcb, 0xa0, 0x2f, 0x26, 0xae, 0x8c, 0xda, 0x61, 0xd5, 0x04, 0x43, 0xab, 0x88, + 0xd1, 0x4b, 0x57, 0x40, 0x3f, 0xb3, 0x13, 0x5e, 0x04, 0x7d, 0xc4, 0xda, 0xe7, 0x5a, 0x47, 0x2a, + 0x83, 0x4c, 0x04, 0x59, 0xfb, 0x88, 0xd1, 0x4a, 0xff, 0x98, 0x01, 0xa3, 0x99, 0xb9, 0xc0, 0x29, + 0x90, 0x53, 0x9d, 0x35, 0x20, 0x95, 0xe6, 0x56, 0x96, 0x50, 0xce, 0xb1, 0xe1, 0x0b, 0x2a, 0xbb, + 0x0a, 0xd0, 0xa2, 0x3a, 0x2c, 0x38, 0x95, 0x95, 0x65, 0xa9, 0x3a, 0x66, 0x48, 0x92, 0x1e, 0x99, + 0x0d, 0x78, 0x5b, 0xee, 0x0a, 0x61, 0x03, 0xde, 0x46, 0x8c, 0x76, 0xdc, 0x5e, 0x49, 0xd2, 0xac, + 0xc9, 0x3f, 0x42, 0xb3, 0x66, 0xe0, 0x81, 0xcd, 0x9a, 0xab, 0x20, 0x1f, 0x39, 0x91, 0x8b, 0xf9, + 0x49, 0xa5, 0x15, 0xc3, 0x77, 0x18, 0x11, 0x09, 0x1e, 0xc4, 0x60, 0xd0, 0xc6, 0xdb, 0x56, 0xec, + 0x46, 0xfc, 0x50, 0x1a, 0x9e, 0xff, 0xd6, 0xc9, 0xa2, 0x47, 0x34, 0x33, 0x96, 0x84, 0x4a, 0x94, + 0xe8, 0x86, 0x8f, 0x83, 0x41, 0xcf, 0x3a, 0x70, 0xbc, 0xd8, 0xe3, 0x15, 0xa3, 0x21, 0xc4, 0xd6, + 0x04, 0x09, 0x25, 0x3c, 0x96, 0x04, 0xf1, 0x41, 0xcd, 0x8d, 0xa9, 0xb3, 0x87, 0x25, 0x53, 0x96, + 0x74, 0x2a, 0x09, 0x2e, 0x67, 0xf8, 0xa8, 0x6d, 0x04, 0x07, 0x73, 0x7c, 0x3e, 0x78, 0x58, 0x03, + 0x13, 0x24, 0x94, 0xf0, 0x5a, 0xc1, 0xa4, 0xfc, 0x48, 0x37, 0x30, 0x39, 0xb8, 0x6d, 0x04, 0x7c, + 0x0a, 0x0c, 0x79, 0xd6, 0xc1, 0x2a, 0xf6, 0xeb, 0xd1, 0x8e, 0x79, 0x76, 0xc6, 0x98, 0xed, 0xab, + 0x9c, 0x6d, 0x36, 0x8a, 0x43, 0x6b, 0x09, 0x11, 0xa5, 0x7c, 0x2e, 0xec, 0xf8, 0x52, 0xf8, 0x9c, + 0x26, 0x9c, 0x10, 0x51, 0xca, 0x67, 0x95, 0x49, 0x68, 0x45, 0x6c, 0x5f, 0x99, 0xa3, 0xad, 0x17, + 0xe7, 0x0d, 0x41, 0x46, 0x09, 0x1f, 0xce, 0x82, 0x82, 0x67, 0x1d, 0xf0, 0x3b, 0xa5, 0x39, 0xc6, + 0xd5, 0xf2, 0x86, 0xe2, 0x9a, 0xa4, 0x21, 0xc5, 0xe5, 0x92, 0x8e, 0x2f, 0x24, 0xc7, 0x35, 0x49, + 0x49, 0x43, 0x8a, 0xcb, 0xe2, 0x37, 0xf6, 0x9d, 0xfb, 0x31, 0x16, 0xc2, 0x90, 0x7b, 0x46, 0xc5, + 0xef, 0xdd, 0x94, 0x85, 0x74, 0x39, 0x76, 0xa7, 0xf3, 0x62, 0x37, 0x72, 0x42, 0x17, 0xaf, 0x6f, + 0x9b, 0xe7, 0xb9, 0xff, 0x79, 0x29, 0xbf, 0xa6, 0xa8, 0x48, 0x93, 0x80, 0x6f, 0x81, 0x7e, 0xec, + 0xc7, 0x9e, 0x79, 0x81, 0x1f, 0xdf, 0x27, 0x8d, 0x3e, 0xb5, 0x5f, 0x96, 0xfd, 0xd8, 0x43, 0x5c, + 0x33, 0x7c, 0x01, 0x9c, 0xf5, 0xac, 0x03, 0x96, 0x04, 0x30, 0x89, 0xd8, 0x45, 0x73, 0x82, 0xcf, + 0x7b, 0x9c, 0x15, 0xb1, 0x6b, 0x3a, 0x03, 0xb5, 0xca, 0xf1, 0x81, 0x8e, 0xaf, 0x0d, 0x9c, 0xd4, + 0x06, 0xea, 0x0c, 0xd4, 0x2a, 0xc7, 0x9c, 0x4c, 0xf0, 0xfd, 0xd8, 0x21, 0xd8, 0x36, 0xbf, 0xc4, + 0xeb, 0x5e, 0xd9, 0xdf, 0x15, 0x34, 0xa4, 0xb8, 0xf0, 0x7e, 0xd2, 0x72, 0x30, 0xf9, 0xe6, 0xdb, + 0xe8, 0x59, 0xea, 0x5e, 0x27, 0x0b, 0x84, 0x58, 0x87, 0xe2, 0x54, 0xd1, 0x9b, 0x0d, 0xd0, 0x07, + 0x79, 0xcb, 0x75, 0xd7, 0xb7, 0xcd, 0x8b, 0xdc, 0xe3, 0x3d, 0x3c, 0x2d, 0x54, 0x86, 0x59, 0x60, + 0xfa, 0x91, 0x80, 0x61, 0x78, 0x81, 0xcf, 0x62, 0x61, 0xea, 0xd4, 0xf0, 0xd6, 0x99, 0x7e, 0x24, + 0x60, 0xf8, 0xfc, 0xfc, 0xc3, 0xf5, 0x6d, 0xf3, 0xb1, 0xd3, 0x9b, 0x1f, 0xd3, 0x8f, 0x04, 0x0c, + 0xb4, 0x41, 0x9f, 0x1f, 0x44, 0xe6, 0xa5, 0x5e, 0x9f, 0xbd, 0xfc, 0x34, 0xb9, 0x1d, 0x44, 0x88, + 0xa9, 0x87, 0x3f, 0x35, 0x00, 0x08, 0xd3, 0x48, 0xbc, 0x7c, 0xd2, 0x16, 0x40, 0x06, 0xad, 0x9c, + 0x46, 0xef, 0xb2, 0x1f, 0x91, 0xc3, 0xf4, 0x5e, 0xa3, 0x45, 0xb9, 0x66, 0x00, 0xfc, 0xa5, 0x01, + 0x2e, 0xe8, 0xe5, 0xae, 0xb2, 0x6c, 0x9a, 0xfb, 0x61, 0xbd, 0x87, 0x81, 0x5c, 0x09, 0x02, 0xb7, + 0x62, 0x36, 0x1b, 0xc5, 0x0b, 0x0b, 0x1d, 0x00, 0x51, 0x47, 0x33, 0xe0, 0x6f, 0x0d, 0x30, 0x2e, + 0xb3, 0xa3, 0x66, 0x5c, 0x91, 0xbb, 0xed, 0xad, 0x1e, 0xba, 0x2d, 0x0b, 0x21, 0xbc, 0xa7, 0xbe, + 0x32, 0xb6, 0xf1, 0x51, 0xbb, 0x55, 0xf0, 0x0f, 0x06, 0x18, 0xb1, 0x71, 0x88, 0x7d, 0x1b, 0xfb, + 0x35, 0x66, 0xe6, 0xcc, 0x49, 0xfb, 0x0a, 0x59, 0x33, 0x97, 0x34, 0xed, 0xc2, 0xc2, 0xb2, 0xb4, + 0x70, 0x44, 0x67, 0x1d, 0x35, 0x8a, 0x93, 0xe9, 0x50, 0x9d, 0x83, 0x5a, 0x0c, 0x84, 0x3f, 0x33, + 0xc0, 0x68, 0xea, 0x76, 0x71, 0x40, 0x5c, 0x39, 0x9d, 0x85, 0xe7, 0x25, 0xe8, 0x42, 0x2b, 0x16, + 0xca, 0x82, 0xc3, 0xdf, 0x19, 0xac, 0xda, 0x4a, 0xee, 0x6a, 0xd4, 0x2c, 0x71, 0x0f, 0xbe, 0xde, + 0x4b, 0x0f, 0x2a, 0xe5, 0xc2, 0x81, 0xd7, 0xd3, 0x4a, 0x4e, 0x71, 0x8e, 0x1a, 0xc5, 0x09, 0xdd, + 0x7f, 0x8a, 0x81, 0x74, 0xe3, 0xe0, 0xbb, 0x06, 0x18, 0xc1, 0x69, 0xc1, 0x4c, 0xcd, 0xab, 0x27, + 0x75, 0x5d, 0xc7, 0xf2, 0x5b, 0x5c, 0xa7, 0x35, 0x16, 0x45, 0x2d, 0xb0, 0xac, 0xf6, 0xc3, 0x07, + 0x96, 0x17, 0xba, 0xd8, 0xfc, 0x72, 0xef, 0x6a, 0xbf, 0x65, 0xa1, 0x12, 0x25, 0xba, 0xe1, 0x75, + 0x50, 0xf0, 0x63, 0xd7, 0xb5, 0xb6, 0x5c, 0x6c, 0x3e, 0xce, 0xab, 0x08, 0xd5, 0x5f, 0xbc, 0x2d, + 0xe9, 0x48, 0x49, 0xc0, 0x6d, 0x30, 0x73, 0x70, 0x4b, 0x3d, 0xbe, 0xe8, 0xd8, 0xc0, 0x33, 0xaf, + 0x71, 0x2d, 0x53, 0xcd, 0x46, 0x71, 0x72, 0xb3, 0x73, 0x8b, 0xef, 0xa1, 0x3a, 0xe0, 0x1b, 0xe0, + 0x31, 0x4d, 0x66, 0xd9, 0xdb, 0xc2, 0xb6, 0x8d, 0xed, 0xe4, 0xa2, 0x65, 0x7e, 0x85, 0x43, 0xa8, + 0x7d, 0xbc, 0x99, 0x15, 0x40, 0x0f, 0x1a, 0x0d, 0x57, 0xc1, 0xa4, 0xc6, 0x5e, 0xf1, 0xa3, 0x75, + 0x52, 0x8d, 0x88, 0xe3, 0xd7, 0xcd, 0x59, 0xae, 0xf7, 0x42, 0xb2, 0xfb, 0x36, 0x35, 0x1e, 0xea, + 0x32, 0x06, 0xbe, 0xdc, 0xa2, 0x8d, 0x7f, 0xb8, 0xb0, 0xc2, 0x5b, 0xf8, 0x90, 0x9a, 0x4f, 0xf0, + 0xe2, 0x82, 0xaf, 0xf3, 0xa6, 0x46, 0x47, 0x5d, 0xe4, 0xe1, 0xb7, 0xc1, 0xf9, 0x0c, 0x87, 0xdd, + 0x2b, 0xcc, 0x27, 0xc5, 0x05, 0x81, 0x55, 0xa2, 0x9b, 0x09, 0x11, 0x75, 0x92, 0x84, 0xdf, 0x04, + 0x50, 0x23, 0xaf, 0x59, 0x21, 0x1f, 0xff, 0x94, 0xb8, 0xab, 0xb0, 0x15, 0xdd, 0x94, 0x34, 0xd4, + 0x41, 0x0e, 0x7e, 0x68, 0xb4, 0xcc, 0x24, 0xbd, 0xcd, 0x52, 0xf3, 0x3a, 0xdf, 0xb0, 0x2f, 0x1f, + 0x3f, 0x00, 0x53, 0x65, 0x28, 0x76, 0xb1, 0xe6, 0x61, 0x0d, 0x05, 0x75, 0x41, 0x9f, 0x62, 0x97, + 0xe9, 0x4c, 0x0e, 0x87, 0x63, 0xa0, 0x6f, 0x17, 0xcb, 0xcf, 0xc6, 0x88, 0xfd, 0x84, 0x6f, 0x82, + 0xfc, 0x9e, 0xe5, 0xc6, 0x49, 0x2b, 0xa0, 0x77, 0x67, 0x3d, 0x12, 0x7a, 0x5f, 0xcc, 0xdd, 0x30, + 0xa6, 0xde, 0x37, 0xc0, 0x64, 0xe7, 0x53, 0xe5, 0x8b, 0xb2, 0xe8, 0x17, 0x06, 0x18, 0x6f, 0x3b, + 0x40, 0x3a, 0x18, 0xe3, 0xb6, 0x1a, 0x73, 0xaf, 0x87, 0x27, 0x81, 0xd8, 0x08, 0xbc, 0xa2, 0xd5, + 0x2d, 0xfb, 0x89, 0x01, 0xc6, 0xb2, 0x89, 0xf9, 0x0b, 0xf2, 0x52, 0xe9, 0xbd, 0x1c, 0x98, 0xec, + 0x5c, 0x83, 0x43, 0x4f, 0x75, 0x17, 0x7a, 0xde, 0xa0, 0xe9, 0xd4, 0xb2, 0x7d, 0xc7, 0x00, 0xc3, + 0x6f, 0x2b, 0xb9, 0xe4, 0x6b, 0x66, 0x2f, 0xbb, 0x42, 0xc9, 0xd1, 0x97, 0x32, 0x28, 0xd2, 0x21, + 0x4b, 0xbf, 0x37, 0xc0, 0x44, 0xc7, 0xe3, 0x1c, 0x5e, 0x03, 0x03, 0x96, 0xeb, 0x06, 0xfb, 0xa2, + 0x9b, 0xa7, 0xb5, 0xe5, 0x17, 0x38, 0x15, 0x49, 0xae, 0xe6, 0xb3, 0xdc, 0xe7, 0xe0, 0xb3, 0xd2, + 0x9f, 0x0c, 0x70, 0xe9, 0x41, 0x51, 0xf7, 0x79, 0xaf, 0xe1, 0x2c, 0x28, 0xc8, 0x62, 0xfb, 0x90, + 0xaf, 0x9f, 0xcc, 0xae, 0x32, 0x23, 0xf0, 0xd7, 0x32, 0xe2, 0x57, 0xe9, 0xd7, 0x06, 0x18, 0xab, + 0x62, 0xb2, 0xe7, 0xd4, 0x30, 0xc2, 0xdb, 0x98, 0x60, 0xbf, 0x86, 0xe1, 0x1c, 0x18, 0xe2, 0x5f, + 0x1b, 0x43, 0xab, 0x96, 0x7c, 0x23, 0x19, 0x97, 0x8e, 0x1e, 0xba, 0x9d, 0x30, 0x50, 0x2a, 0xa3, + 0xbe, 0xa7, 0xe4, 0xba, 0x7e, 0x4f, 0xb9, 0x04, 0xfa, 0xc3, 0xb4, 0x01, 0x5c, 0x60, 0x5c, 0xde, + 0xf3, 0xe5, 0x54, 0xce, 0x0d, 0x48, 0xc4, 0xbb, 0x5c, 0x79, 0xc9, 0x0d, 0x48, 0x84, 0x38, 0xb5, + 0xf4, 0x41, 0x0e, 0x9c, 0x6b, 0xcd, 0xcf, 0x0c, 0x90, 0xc4, 0x6e, 0xdb, 0x07, 0x1c, 0xc6, 0x43, + 0x9c, 0xa3, 0xbf, 0x1b, 0xc8, 0x3d, 0xf8, 0xdd, 0x00, 0x7c, 0x09, 0x8c, 0xcb, 0x9f, 0xcb, 0x07, + 0x21, 0xc1, 0x94, 0x7f, 0x99, 0xec, 0x6b, 0x7d, 0xef, 0xb7, 0x96, 0x15, 0x40, 0xed, 0x63, 0xe0, + 0x37, 0x32, 0x6f, 0x1a, 0xae, 0xa6, 0xef, 0x19, 0x58, 0x6d, 0xc7, 0x4b, 0x87, 0x7b, 0x6c, 0xcb, + 0x2f, 0x13, 0x12, 0x90, 0xcc, 0x43, 0x87, 0x39, 0x30, 0xb4, 0xcd, 0x04, 0x78, 0x9f, 0x3c, 0xdf, + 0xea, 0xf4, 0x9b, 0x09, 0x03, 0xa5, 0x32, 0xa5, 0x3f, 0x1b, 0xe0, 0x7c, 0xf2, 0x1a, 0xc8, 0x75, + 0xb0, 0x1f, 0x2d, 0x06, 0xfe, 0xb6, 0x53, 0x87, 0x17, 0x45, 0xff, 0x53, 0x6b, 0x2a, 0x26, 0xbd, + 0x4f, 0x78, 0x1f, 0x0c, 0x52, 0xb1, 0xd8, 0x32, 0x0e, 0x5f, 0x39, 0x7e, 0x1c, 0x66, 0xa3, 0x46, + 0x94, 0x6f, 0x09, 0x35, 0xc1, 0x61, 0xa1, 0x58, 0xb3, 0x2a, 0xb1, 0x6f, 0xcb, 0x1e, 0xf8, 0x88, + 0x08, 0xc5, 0xc5, 0x05, 0x41, 0x43, 0x8a, 0x5b, 0xfa, 0xa7, 0x01, 0xc6, 0xdb, 0x5e, 0x37, 0xc1, + 0x1f, 0x1a, 0x60, 0xa4, 0xa6, 0x4d, 0x4f, 0x6e, 0xe8, 0xb5, 0x93, 0xbf, 0xa0, 0xd2, 0x94, 0x8a, + 0x1a, 0x48, 0xa7, 0xa0, 0x16, 0x50, 0xb8, 0x09, 0xcc, 0x5a, 0xe6, 0x21, 0x61, 0xe6, 0xd3, 0xe4, + 0xa5, 0x66, 0xa3, 0x68, 0x2e, 0x76, 0x91, 0x41, 0x5d, 0x47, 0x57, 0xbe, 0xfb, 0xf1, 0x67, 0xd3, + 0x67, 0x3e, 0xf9, 0x6c, 0xfa, 0xcc, 0xa7, 0x9f, 0x4d, 0x9f, 0x79, 0xa7, 0x39, 0x6d, 0x7c, 0xdc, + 0x9c, 0x36, 0x3e, 0x69, 0x4e, 0x1b, 0x9f, 0x36, 0xa7, 0x8d, 0xbf, 0x35, 0xa7, 0x8d, 0x9f, 0xff, + 0x7d, 0xfa, 0xcc, 0xeb, 0x37, 0x8e, 0xfb, 0x7c, 0xf8, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x1d, + 0x01, 0xc1, 0x04, 0x92, 0x2c, 0x00, 0x00, } func (m *ConversionRequest) Marshal() (dAtA []byte, err error) { @@ -8975,7 +8973,7 @@ func (m *ValidationRule) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - s := k8s_io_apimachinery_pkg_util_validation_field.ErrorType(dAtA[iNdEx:postIndex]) + s := FieldValueErrorReason(dAtA[iNdEx:postIndex]) m.Reason = &s iNdEx = postIndex case 5: diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto index 4b831ba715a..578d018a7b1 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/generated.proto @@ -683,7 +683,7 @@ message ValidationRule { // The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. // The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate". // If not set, default to use "FieldValueInvalid". - // All future added reasons must be accepted by clients when reading this value. + // All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. // +optional optional string reason = 4; diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/types_jsonschema.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/types_jsonschema.go index 60da0f3d47f..1c90d464a9d 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/types_jsonschema.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/types_jsonschema.go @@ -16,8 +16,24 @@ limitations under the License. package v1 -import ( - "k8s.io/apimachinery/pkg/util/validation/field" +// FieldValueErrorReason is a machine-readable value providing more detail about why a field failed the validation. +// +enum +type FieldValueErrorReason string + +const ( + // FieldValueRequired is used to report required values that are not + // provided (e.g. empty strings, null values, or empty arrays). + FieldValueRequired FieldValueErrorReason = "FieldValueRequired" + // FieldValueDuplicate is used to report collisions of values that must be + // unique (e.g. unique IDs). + FieldValueDuplicate FieldValueErrorReason = "FieldValueDuplicate" + // FieldValueInvalid is used to report malformed values (e.g. failed regex + // match, too long, out of bounds). + FieldValueInvalid FieldValueErrorReason = "FieldValueInvalid" + // FieldValueForbidden is used to report valid (as per formatting rules) + // values which would be accepted under some conditions, but which are not + // permitted by the current conditions (such as security policy). + FieldValueForbidden FieldValueErrorReason = "FieldValueForbidden" ) // JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). @@ -255,9 +271,9 @@ type ValidationRule struct { // The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. // The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate". // If not set, default to use "FieldValueInvalid". - // All future added reasons must be accepted by clients when reading this value. + // All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. // +optional - Reason *field.ErrorType `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + Reason *FieldValueErrorReason `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` // fieldPath represents the field path returned when the validation fails. // It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field. // e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo` diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.conversion.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.conversion.go index bac828aa352..0a82e4d8c3f 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.conversion.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.conversion.go @@ -28,7 +28,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" - field "k8s.io/apimachinery/pkg/util/validation/field" ) func init() { @@ -1260,7 +1259,7 @@ func autoConvert_v1_ValidationRule_To_apiextensions_ValidationRule(in *Validatio out.Rule = in.Rule out.Message = in.Message out.MessageExpression = in.MessageExpression - out.Reason = (*field.ErrorType)(unsafe.Pointer(in.Reason)) + out.Reason = (*apiextensions.FieldValueErrorReason)(unsafe.Pointer(in.Reason)) out.FieldPath = in.FieldPath return nil } @@ -1274,7 +1273,7 @@ func autoConvert_apiextensions_ValidationRule_To_v1_ValidationRule(in *apiextens out.Rule = in.Rule out.Message = in.Message out.MessageExpression = in.MessageExpression - out.Reason = (*field.ErrorType)(unsafe.Pointer(in.Reason)) + out.Reason = (*FieldValueErrorReason)(unsafe.Pointer(in.Reason)) out.FieldPath = in.FieldPath return nil } diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.deepcopy.go index 3ae26f701b6..b4347b8db19 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.deepcopy.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/zz_generated.deepcopy.go @@ -23,7 +23,6 @@ package v1 import ( runtime "k8s.io/apimachinery/pkg/runtime" - field "k8s.io/apimachinery/pkg/util/validation/field" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -617,7 +616,7 @@ func (in *ValidationRule) DeepCopyInto(out *ValidationRule) { *out = *in if in.Reason != nil { in, out := &in.Reason, &out.Reason - *out = new(field.ErrorType) + *out = new(FieldValueErrorReason) **out = **in } return diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go index 686bf7bca88..981f6adbdbc 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go @@ -35,7 +35,6 @@ import ( strings "strings" k8s_io_apimachinery_pkg_types "k8s.io/apimachinery/pkg/types" - k8s_io_apimachinery_pkg_util_validation_field "k8s.io/apimachinery/pkg/util/validation/field" ) // Reference imports to suppress errors if they are not otherwise used. @@ -786,205 +785,204 @@ func init() { } var fileDescriptor_98a4cc6918394e53 = []byte{ - // 3159 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcd, 0x73, 0x23, 0x47, - 0xd9, 0xdf, 0x91, 0x2c, 0x5b, 0x6e, 0x7b, 0x77, 0xed, 0xde, 0xb5, 0x33, 0xeb, 0x6c, 0x2c, 0xaf, - 0xf2, 0x66, 0x5f, 0x27, 0xd9, 0x48, 0xc9, 0xbe, 0xc9, 0x9b, 0x90, 0x22, 0x45, 0x59, 0xb6, 0x37, - 0x38, 0x59, 0xaf, 0x4d, 0x6b, 0x37, 0x31, 0xe4, 0x73, 0xac, 0x69, 0x69, 0x27, 0x1e, 0xcd, 0xcc, - 0x76, 0xcf, 0xc8, 0x76, 0x05, 0x28, 0x3e, 0x2a, 0x05, 0x45, 0x01, 0xa1, 0x48, 0x2e, 0x14, 0x70, - 0x08, 0x14, 0x17, 0x0e, 0x70, 0x80, 0xe2, 0x02, 0x7f, 0x40, 0x8e, 0x29, 0x8a, 0x43, 0x0e, 0x94, - 0x20, 0xe2, 0xca, 0x91, 0x2a, 0xaa, 0x7c, 0xa2, 0xfa, 0x63, 0x7a, 0x5a, 0x23, 0x69, 0x77, 0x2b, - 0x96, 0xb2, 0xdc, 0xa4, 0xe7, 0xeb, 0xf7, 0xcc, 0xd3, 0x4f, 0x3f, 0xfd, 0xf4, 0x33, 0x03, 0xea, - 0x7b, 0xcf, 0xd0, 0x92, 0xe3, 0x97, 0xf7, 0xa2, 0x5d, 0x4c, 0x3c, 0x1c, 0x62, 0x5a, 0x6e, 0x61, - 0xcf, 0xf6, 0x49, 0x59, 0x32, 0xac, 0xc0, 0xc1, 0x07, 0x21, 0xf6, 0xa8, 0xe3, 0x7b, 0xf4, 0x31, - 0x2b, 0x70, 0x28, 0x26, 0x2d, 0x4c, 0xca, 0xc1, 0x5e, 0x83, 0xf1, 0x68, 0xb7, 0x40, 0xb9, 0xf5, - 0xc4, 0x2e, 0x0e, 0xad, 0x27, 0xca, 0x0d, 0xec, 0x61, 0x62, 0x85, 0xd8, 0x2e, 0x05, 0xc4, 0x0f, - 0x7d, 0xf8, 0x9c, 0x30, 0x57, 0xea, 0x92, 0x7e, 0x43, 0x99, 0x2b, 0x05, 0x7b, 0x0d, 0xc6, 0xa3, - 0xdd, 0x02, 0x25, 0x69, 0x6e, 0xe1, 0xb1, 0x86, 0x13, 0xde, 0x8c, 0x76, 0x4b, 0x35, 0xbf, 0x59, - 0x6e, 0xf8, 0x0d, 0xbf, 0xcc, 0xad, 0xee, 0x46, 0x75, 0xfe, 0x8f, 0xff, 0xe1, 0xbf, 0x04, 0xda, - 0xc2, 0x93, 0x89, 0xf3, 0x4d, 0xab, 0x76, 0xd3, 0xf1, 0x30, 0x39, 0x4c, 0x3c, 0x6e, 0xe2, 0xd0, - 0x2a, 0xb7, 0x7a, 0x7c, 0x5c, 0x28, 0x0f, 0xd2, 0x22, 0x91, 0x17, 0x3a, 0x4d, 0xdc, 0xa3, 0xf0, - 0xff, 0x77, 0x52, 0xa0, 0xb5, 0x9b, 0xb8, 0x69, 0xa5, 0xf5, 0x8a, 0x47, 0x06, 0x98, 0x5d, 0xf5, - 0xbd, 0x16, 0x26, 0xec, 0x29, 0x11, 0xbe, 0x15, 0x61, 0x1a, 0xc2, 0x0a, 0xc8, 0x46, 0x8e, 0x6d, - 0x1a, 0x4b, 0xc6, 0xf2, 0x64, 0xe5, 0xf1, 0x0f, 0xdb, 0x85, 0x13, 0x9d, 0x76, 0x21, 0x7b, 0x63, - 0x63, 0xed, 0xa8, 0x5d, 0xb8, 0x30, 0x08, 0x29, 0x3c, 0x0c, 0x30, 0x2d, 0xdd, 0xd8, 0x58, 0x43, - 0x4c, 0x19, 0x3e, 0x0f, 0x66, 0x6d, 0x4c, 0x1d, 0x82, 0xed, 0x95, 0xed, 0x8d, 0x97, 0x84, 0x7d, - 0x33, 0xc3, 0x2d, 0x9e, 0x93, 0x16, 0x67, 0xd7, 0xd2, 0x02, 0xa8, 0x57, 0x07, 0xee, 0x80, 0x09, - 0x7f, 0xf7, 0x2d, 0x5c, 0x0b, 0xa9, 0x99, 0x5d, 0xca, 0x2e, 0x4f, 0x5d, 0x7e, 0xac, 0x94, 0xac, - 0xa0, 0x72, 0x81, 0x2f, 0x9b, 0x7c, 0xd8, 0x12, 0xb2, 0xf6, 0xd7, 0xe3, 0x95, 0xab, 0x9c, 0x96, - 0x68, 0x13, 0x5b, 0xc2, 0x0a, 0x8a, 0xcd, 0x15, 0x7f, 0x99, 0x01, 0x50, 0x7f, 0x78, 0x1a, 0xf8, - 0x1e, 0xc5, 0x43, 0x79, 0x7a, 0x0a, 0x66, 0x6a, 0xdc, 0x72, 0x88, 0x6d, 0x89, 0x6b, 0x66, 0x3e, - 0x8d, 0xf7, 0xa6, 0xc4, 0x9f, 0x59, 0x4d, 0x99, 0x43, 0x3d, 0x00, 0xf0, 0x3a, 0x18, 0x27, 0x98, - 0x46, 0x6e, 0x68, 0x66, 0x97, 0x8c, 0xe5, 0xa9, 0xcb, 0x97, 0x06, 0x42, 0xf1, 0xfc, 0x66, 0xc9, - 0x57, 0x6a, 0x3d, 0x51, 0xaa, 0x86, 0x56, 0x18, 0xd1, 0xca, 0x29, 0x89, 0x34, 0x8e, 0xb8, 0x0d, - 0x24, 0x6d, 0x15, 0xbf, 0x9b, 0x01, 0x33, 0x7a, 0x94, 0x5a, 0x0e, 0xde, 0x87, 0xfb, 0x60, 0x82, - 0x88, 0x64, 0xe1, 0x71, 0x9a, 0xba, 0xbc, 0x5d, 0x3a, 0xd6, 0xb6, 0x2a, 0xf5, 0x24, 0x61, 0x65, - 0x8a, 0xad, 0x99, 0xfc, 0x83, 0x62, 0x34, 0xf8, 0x36, 0xc8, 0x13, 0xb9, 0x50, 0x3c, 0x9b, 0xa6, - 0x2e, 0x7f, 0x69, 0x88, 0xc8, 0xc2, 0x70, 0x65, 0xba, 0xd3, 0x2e, 0xe4, 0xe3, 0x7f, 0x48, 0x01, - 0x16, 0xdf, 0xcb, 0x80, 0xc5, 0xd5, 0x88, 0x86, 0x7e, 0x13, 0x61, 0xea, 0x47, 0xa4, 0x86, 0x57, - 0x7d, 0x37, 0x6a, 0x7a, 0x6b, 0xb8, 0xee, 0x78, 0x4e, 0xc8, 0xb2, 0x75, 0x09, 0x8c, 0x79, 0x56, - 0x13, 0xcb, 0xec, 0x99, 0x96, 0x31, 0x1d, 0xbb, 0x66, 0x35, 0x31, 0xe2, 0x1c, 0x26, 0xc1, 0x92, - 0x45, 0xee, 0x05, 0x25, 0x71, 0xfd, 0x30, 0xc0, 0x88, 0x73, 0xe0, 0x45, 0x30, 0x5e, 0xf7, 0x49, - 0xd3, 0x12, 0xeb, 0x38, 0x99, 0xac, 0xcc, 0x15, 0x4e, 0x45, 0x92, 0x0b, 0x9f, 0x02, 0x53, 0x36, - 0xa6, 0x35, 0xe2, 0x04, 0x0c, 0xda, 0x1c, 0xe3, 0xc2, 0x67, 0xa4, 0xf0, 0xd4, 0x5a, 0xc2, 0x42, - 0xba, 0x1c, 0xbc, 0x04, 0xf2, 0x01, 0x71, 0x7c, 0xe2, 0x84, 0x87, 0x66, 0x6e, 0xc9, 0x58, 0xce, - 0x55, 0x66, 0xa4, 0x4e, 0x7e, 0x5b, 0xd2, 0x91, 0x92, 0x80, 0x4b, 0x20, 0xff, 0x42, 0x75, 0xeb, - 0xda, 0xb6, 0x15, 0xde, 0x34, 0xc7, 0x39, 0xc2, 0x18, 0x93, 0x46, 0x8a, 0x5a, 0xfc, 0x6b, 0x06, - 0x98, 0xe9, 0xa8, 0xc4, 0x21, 0x85, 0x57, 0x40, 0x9e, 0x86, 0xac, 0xe2, 0x34, 0x0e, 0x65, 0x4c, - 0x1e, 0x89, 0xc1, 0xaa, 0x92, 0x7e, 0xd4, 0x2e, 0xcc, 0x27, 0x1a, 0x31, 0x95, 0xc7, 0x43, 0xe9, - 0xc2, 0x9f, 0x1b, 0xe0, 0xcc, 0x3e, 0xde, 0xbd, 0xe9, 0xfb, 0x7b, 0xab, 0xae, 0x83, 0xbd, 0x70, - 0xd5, 0xf7, 0xea, 0x4e, 0x43, 0xe6, 0x00, 0x3a, 0x66, 0x0e, 0xbc, 0xdc, 0x6b, 0xb9, 0x72, 0x5f, - 0xa7, 0x5d, 0x38, 0xd3, 0x87, 0x81, 0xfa, 0xf9, 0x01, 0x77, 0x80, 0x59, 0x4b, 0x6d, 0x12, 0x59, - 0xc0, 0x44, 0xd9, 0x9a, 0xac, 0x9c, 0xef, 0xb4, 0x0b, 0xe6, 0xea, 0x00, 0x19, 0x34, 0x50, 0xbb, - 0xf8, 0xed, 0x6c, 0x3a, 0xbc, 0x5a, 0xba, 0xbd, 0x09, 0xf2, 0x6c, 0x1b, 0xdb, 0x56, 0x68, 0xc9, - 0x8d, 0xf8, 0xf8, 0xdd, 0x6d, 0x7a, 0x51, 0x33, 0x36, 0x71, 0x68, 0x55, 0xa0, 0x5c, 0x10, 0x90, - 0xd0, 0x90, 0xb2, 0x0a, 0xbf, 0x06, 0xc6, 0x68, 0x80, 0x6b, 0x32, 0xd0, 0xaf, 0x1c, 0x77, 0xb3, - 0x0d, 0x78, 0x90, 0x6a, 0x80, 0x6b, 0xc9, 0x5e, 0x60, 0xff, 0x10, 0x87, 0x85, 0xef, 0x18, 0x60, - 0x9c, 0xf2, 0x02, 0x25, 0x8b, 0xda, 0x6b, 0xa3, 0xf2, 0x20, 0x55, 0x05, 0xc5, 0x7f, 0x24, 0xc1, - 0x8b, 0xff, 0xca, 0x80, 0x0b, 0x83, 0x54, 0x57, 0x7d, 0xcf, 0x16, 0xcb, 0xb1, 0x21, 0xf7, 0xb6, - 0xc8, 0xf4, 0xa7, 0xf4, 0xbd, 0x7d, 0xd4, 0x2e, 0x3c, 0x74, 0x47, 0x03, 0x5a, 0x11, 0xf8, 0x9c, - 0x7a, 0x6e, 0x51, 0x28, 0x2e, 0x74, 0x3b, 0x76, 0xd4, 0x2e, 0x9c, 0x56, 0x6a, 0xdd, 0xbe, 0xc2, - 0x16, 0x80, 0xae, 0x45, 0xc3, 0xeb, 0xc4, 0xf2, 0xa8, 0x30, 0xeb, 0x34, 0xb1, 0x0c, 0xdf, 0x23, - 0x77, 0x97, 0x1e, 0x4c, 0xa3, 0xb2, 0x20, 0x21, 0xe1, 0xd5, 0x1e, 0x6b, 0xa8, 0x0f, 0x02, 0xab, - 0x5b, 0x04, 0x5b, 0x54, 0x95, 0x22, 0xed, 0x44, 0x61, 0x54, 0x24, 0xb9, 0xf0, 0x61, 0x30, 0xd1, - 0xc4, 0x94, 0x5a, 0x0d, 0xcc, 0xeb, 0xcf, 0x64, 0x72, 0x44, 0x6f, 0x0a, 0x32, 0x8a, 0xf9, 0xac, - 0x3f, 0x39, 0x3f, 0x28, 0x6a, 0x57, 0x1d, 0x1a, 0xc2, 0x57, 0x7b, 0x36, 0x40, 0xe9, 0xee, 0x9e, - 0x90, 0x69, 0xf3, 0xf4, 0x57, 0xc5, 0x2f, 0xa6, 0x68, 0xc9, 0xff, 0x55, 0x90, 0x73, 0x42, 0xdc, - 0x8c, 0xcf, 0xee, 0x97, 0x47, 0x94, 0x7b, 0x95, 0x93, 0xd2, 0x87, 0xdc, 0x06, 0x43, 0x43, 0x02, - 0xb4, 0xf8, 0xab, 0x0c, 0x78, 0x60, 0x90, 0x0a, 0x3b, 0x50, 0x28, 0x8b, 0x78, 0xe0, 0x46, 0xc4, - 0x72, 0x65, 0xc6, 0xa9, 0x88, 0x6f, 0x73, 0x2a, 0x92, 0x5c, 0x56, 0xf2, 0xa9, 0xe3, 0x35, 0x22, - 0xd7, 0x22, 0x32, 0x9d, 0xd4, 0x53, 0x57, 0x25, 0x1d, 0x29, 0x09, 0x58, 0x02, 0x80, 0xde, 0xf4, - 0x49, 0xc8, 0x31, 0x64, 0xf5, 0x3a, 0xc5, 0x0a, 0x44, 0x55, 0x51, 0x91, 0x26, 0xc1, 0x4e, 0xb4, - 0x3d, 0xc7, 0xb3, 0xe5, 0xaa, 0xab, 0x5d, 0xfc, 0xa2, 0xe3, 0xd9, 0x88, 0x73, 0x18, 0xbe, 0xeb, - 0xd0, 0x90, 0x51, 0xe4, 0x92, 0x77, 0x45, 0x9d, 0x4b, 0x2a, 0x09, 0x86, 0x5f, 0x63, 0x55, 0xdf, - 0x27, 0x0e, 0xa6, 0xe6, 0x78, 0x82, 0xbf, 0xaa, 0xa8, 0x48, 0x93, 0x28, 0xfe, 0x33, 0x3f, 0x38, - 0x49, 0x58, 0x29, 0x81, 0x0f, 0x82, 0x5c, 0x83, 0xf8, 0x51, 0x20, 0xa3, 0xa4, 0xa2, 0xfd, 0x3c, - 0x23, 0x22, 0xc1, 0x63, 0x59, 0xd9, 0xea, 0x6a, 0x53, 0x55, 0x56, 0xc6, 0xcd, 0x69, 0xcc, 0x87, - 0xdf, 0x34, 0x40, 0xce, 0x93, 0xc1, 0x61, 0x29, 0xf7, 0xea, 0x88, 0xf2, 0x82, 0x87, 0x37, 0x71, - 0x57, 0x44, 0x5e, 0x20, 0xc3, 0x27, 0x41, 0x8e, 0xd6, 0xfc, 0x00, 0xcb, 0xa8, 0x2f, 0xc6, 0x42, - 0x55, 0x46, 0x3c, 0x6a, 0x17, 0x4e, 0xc6, 0xe6, 0x38, 0x01, 0x09, 0x61, 0xf8, 0x1d, 0x03, 0x80, - 0x96, 0xe5, 0x3a, 0xb6, 0xc5, 0x5b, 0x86, 0x1c, 0x77, 0x7f, 0xb8, 0x69, 0xfd, 0x92, 0x32, 0x2f, - 0x16, 0x2d, 0xf9, 0x8f, 0x34, 0x68, 0xf8, 0xae, 0x01, 0xa6, 0x69, 0xb4, 0x4b, 0xa4, 0x16, 0xe5, - 0xcd, 0xc5, 0xd4, 0xe5, 0x2f, 0x0f, 0xd5, 0x97, 0xaa, 0x06, 0x50, 0x99, 0xe9, 0xb4, 0x0b, 0xd3, - 0x3a, 0x05, 0x75, 0x39, 0x00, 0xbf, 0x6f, 0x80, 0x7c, 0x2b, 0x3e, 0xb3, 0x27, 0xf8, 0x86, 0x7f, - 0x7d, 0x44, 0x0b, 0x2b, 0x33, 0x2a, 0xd9, 0x05, 0xaa, 0x0f, 0x50, 0x1e, 0xc0, 0x3f, 0x1a, 0xc0, - 0xb4, 0x6c, 0x51, 0xe0, 0x2d, 0x77, 0x9b, 0x38, 0x5e, 0x88, 0x89, 0xe8, 0x37, 0xa9, 0x99, 0xe7, - 0xee, 0x0d, 0xf7, 0x2c, 0x4c, 0xf7, 0xb2, 0x95, 0x25, 0xe9, 0x9d, 0xb9, 0x32, 0xc0, 0x0d, 0x34, - 0xd0, 0x41, 0x9e, 0x68, 0x49, 0x4b, 0x63, 0x4e, 0x8e, 0x20, 0xd1, 0x92, 0x5e, 0x4a, 0x56, 0x87, - 0xa4, 0x83, 0xd2, 0xa0, 0xe1, 0x16, 0x98, 0x0b, 0x08, 0xe6, 0x00, 0x37, 0xbc, 0x3d, 0xcf, 0xdf, - 0xf7, 0xae, 0x38, 0xd8, 0xb5, 0xa9, 0x09, 0x96, 0x8c, 0xe5, 0x7c, 0xe5, 0x5c, 0xa7, 0x5d, 0x98, - 0xdb, 0xee, 0x27, 0x80, 0xfa, 0xeb, 0x15, 0xdf, 0xcd, 0xa6, 0x6f, 0x01, 0xe9, 0x2e, 0x02, 0xbe, - 0x2f, 0x9e, 0x5e, 0xc4, 0x86, 0x9a, 0x06, 0x5f, 0xad, 0x37, 0x47, 0x94, 0x4c, 0xaa, 0x0d, 0x48, - 0x3a, 0x39, 0x45, 0xa2, 0x48, 0xf3, 0x03, 0xfe, 0xc4, 0x00, 0x27, 0xad, 0x5a, 0x0d, 0x07, 0x21, - 0xb6, 0x45, 0x71, 0xcf, 0x7c, 0x06, 0xf5, 0x6b, 0x4e, 0x7a, 0x75, 0x72, 0x45, 0x87, 0x46, 0xdd, - 0x9e, 0xc0, 0x67, 0xc1, 0x29, 0x1a, 0xfa, 0x04, 0xdb, 0xa9, 0xb6, 0x19, 0x76, 0xda, 0x85, 0x53, - 0xd5, 0x2e, 0x0e, 0x4a, 0x49, 0x16, 0xff, 0x96, 0x03, 0x85, 0x3b, 0x6c, 0xb5, 0xbb, 0xb8, 0x98, - 0x5d, 0x04, 0xe3, 0xfc, 0x71, 0x6d, 0x1e, 0x95, 0xbc, 0xd6, 0x0a, 0x72, 0x2a, 0x92, 0x5c, 0x76, - 0x50, 0x30, 0x7c, 0xd6, 0xbe, 0x64, 0xb9, 0xa0, 0x3a, 0x28, 0xaa, 0x82, 0x8c, 0x62, 0x3e, 0xbc, - 0x0c, 0x80, 0x8d, 0x03, 0x82, 0xd9, 0x61, 0x65, 0x9b, 0x13, 0x5c, 0x5a, 0x2d, 0xd2, 0x9a, 0xe2, - 0x20, 0x4d, 0x0a, 0x5e, 0x01, 0x30, 0xfe, 0xe7, 0xf8, 0xde, 0xcb, 0x16, 0xf1, 0x1c, 0xaf, 0x61, - 0xe6, 0xb9, 0xdb, 0xf3, 0xac, 0x1b, 0x5b, 0xeb, 0xe1, 0xa2, 0x3e, 0x1a, 0xf0, 0x6d, 0x30, 0x2e, - 0x86, 0x3e, 0xfc, 0x84, 0x18, 0x61, 0x95, 0x07, 0x3c, 0x46, 0x1c, 0x0a, 0x49, 0xc8, 0xde, 0xea, - 0x9e, 0xbb, 0xd7, 0xd5, 0xfd, 0xb6, 0xe5, 0x74, 0xfc, 0xbf, 0xbc, 0x9c, 0x16, 0xff, 0x6d, 0xa4, - 0x6b, 0x8e, 0xf6, 0xa8, 0xd5, 0x9a, 0xe5, 0x62, 0xb8, 0x06, 0x66, 0xd8, 0x8d, 0x09, 0xe1, 0xc0, - 0x75, 0x6a, 0x16, 0xe5, 0x17, 0x76, 0x91, 0xec, 0x6a, 0x86, 0x54, 0x4d, 0xf1, 0x51, 0x8f, 0x06, - 0x7c, 0x01, 0x40, 0x71, 0x8b, 0xe8, 0xb2, 0x23, 0x1a, 0x22, 0x75, 0x1f, 0xa8, 0xf6, 0x48, 0xa0, - 0x3e, 0x5a, 0x70, 0x15, 0xcc, 0xba, 0xd6, 0x2e, 0x76, 0xab, 0xd8, 0xc5, 0xb5, 0xd0, 0x27, 0xdc, - 0x94, 0x18, 0x69, 0xcc, 0x75, 0xda, 0x85, 0xd9, 0xab, 0x69, 0x26, 0xea, 0x95, 0x2f, 0x5e, 0x48, - 0x6f, 0x6d, 0xfd, 0xc1, 0xc5, 0xdd, 0xec, 0x83, 0x0c, 0x58, 0x18, 0x9c, 0x19, 0xf0, 0x5b, 0xc9, - 0x15, 0x52, 0xdc, 0x10, 0x5e, 0x1f, 0x55, 0x16, 0xca, 0x3b, 0x24, 0xe8, 0xbd, 0x3f, 0xc2, 0xaf, - 0xb3, 0x76, 0xcd, 0x72, 0xe3, 0xa1, 0xd5, 0x6b, 0x23, 0x73, 0x81, 0x81, 0x54, 0x26, 0x45, 0x27, - 0x68, 0xb9, 0xbc, 0xf1, 0xb3, 0x5c, 0x5c, 0xfc, 0xb5, 0x91, 0x9e, 0x22, 0x24, 0x3b, 0x18, 0xfe, - 0xc0, 0x00, 0xa7, 0xfd, 0x00, 0x7b, 0x2b, 0xdb, 0x1b, 0x2f, 0xfd, 0x9f, 0xd8, 0xc9, 0x32, 0x54, - 0xd7, 0x8e, 0xe9, 0xe7, 0x0b, 0xd5, 0xad, 0x6b, 0xc2, 0xe0, 0x36, 0xf1, 0x03, 0x5a, 0x39, 0xd3, - 0x69, 0x17, 0x4e, 0x6f, 0x75, 0x43, 0xa1, 0x34, 0x76, 0xb1, 0x09, 0xe6, 0xd6, 0x0f, 0x42, 0x4c, - 0x3c, 0xcb, 0x5d, 0xf3, 0x6b, 0x51, 0x13, 0x7b, 0xa1, 0x70, 0x34, 0x35, 0xf1, 0x32, 0xee, 0x72, - 0xe2, 0xf5, 0x00, 0xc8, 0x46, 0xc4, 0x95, 0x59, 0x3c, 0xa5, 0x26, 0xba, 0xe8, 0x2a, 0x62, 0xf4, - 0xe2, 0x05, 0x30, 0xc6, 0xfc, 0x84, 0xe7, 0x40, 0x96, 0x58, 0xfb, 0xdc, 0xea, 0x74, 0x65, 0x82, - 0x89, 0x20, 0x6b, 0x1f, 0x31, 0x5a, 0xf1, 0x2f, 0x17, 0xc0, 0xe9, 0xd4, 0xb3, 0xc0, 0x05, 0x90, - 0x51, 0x63, 0x62, 0x20, 0x8d, 0x66, 0x36, 0xd6, 0x50, 0xc6, 0xb1, 0xe1, 0xd3, 0xaa, 0xf8, 0x0a, - 0xd0, 0x82, 0x3a, 0x4b, 0x38, 0x95, 0xf5, 0xe7, 0x89, 0x39, 0xe6, 0x48, 0x5c, 0x38, 0x99, 0x0f, - 0xb8, 0x2e, 0x77, 0x89, 0xf0, 0x01, 0xd7, 0x11, 0xa3, 0x7d, 0xda, 0x71, 0x5f, 0x3c, 0x6f, 0xcc, - 0xdd, 0xc5, 0xbc, 0x71, 0xfc, 0xb6, 0xf3, 0xc6, 0x07, 0x41, 0x2e, 0x74, 0x42, 0x17, 0xf3, 0x83, - 0x4c, 0xbb, 0x46, 0x5d, 0x67, 0x44, 0x24, 0x78, 0xf0, 0x2d, 0x30, 0x61, 0xe3, 0xba, 0x15, 0xb9, - 0x21, 0x3f, 0xb3, 0xa6, 0x2e, 0xaf, 0x0e, 0x21, 0x85, 0xc4, 0x30, 0x78, 0x4d, 0xd8, 0x45, 0x31, - 0x00, 0x7c, 0x08, 0x4c, 0x34, 0xad, 0x03, 0xa7, 0x19, 0x35, 0x79, 0x83, 0x69, 0x08, 0xb1, 0x4d, - 0x41, 0x42, 0x31, 0x8f, 0x55, 0x46, 0x7c, 0x50, 0x73, 0x23, 0xea, 0xb4, 0xb0, 0x64, 0xca, 0xe6, - 0x4f, 0x55, 0xc6, 0xf5, 0x14, 0x1f, 0xf5, 0x68, 0x70, 0x30, 0xc7, 0xe3, 0xca, 0x53, 0x1a, 0x98, - 0x20, 0xa1, 0x98, 0xd7, 0x0d, 0x26, 0xe5, 0xa7, 0x07, 0x81, 0x49, 0xe5, 0x1e, 0x0d, 0xf8, 0x28, - 0x98, 0x6c, 0x5a, 0x07, 0x57, 0xb1, 0xd7, 0x08, 0x6f, 0x9a, 0x27, 0x97, 0x8c, 0xe5, 0x6c, 0xe5, - 0x64, 0xa7, 0x5d, 0x98, 0xdc, 0x8c, 0x89, 0x28, 0xe1, 0x73, 0x61, 0xc7, 0x93, 0xc2, 0xa7, 0x34, - 0xe1, 0x98, 0x88, 0x12, 0x3e, 0xeb, 0x5e, 0x02, 0x2b, 0x64, 0x9b, 0xcb, 0x3c, 0xdd, 0x7d, 0xcd, - 0xdd, 0x16, 0x64, 0x14, 0xf3, 0xe1, 0x32, 0xc8, 0x37, 0xad, 0x03, 0x3e, 0x92, 0x30, 0x67, 0xb8, - 0x59, 0x3e, 0x18, 0xdf, 0x94, 0x34, 0xa4, 0xb8, 0x5c, 0xd2, 0xf1, 0x84, 0xe4, 0xac, 0x26, 0x29, - 0x69, 0x48, 0x71, 0x59, 0x12, 0x47, 0x9e, 0x73, 0x2b, 0xc2, 0x42, 0x18, 0xf2, 0xc8, 0xa8, 0x24, - 0xbe, 0x91, 0xb0, 0x90, 0x2e, 0x07, 0x4b, 0x00, 0x34, 0x23, 0x37, 0x74, 0x02, 0x17, 0x6f, 0xd5, - 0xcd, 0x33, 0x3c, 0xfe, 0xbc, 0xe9, 0xdf, 0x54, 0x54, 0xa4, 0x49, 0x40, 0x0c, 0xc6, 0xb0, 0x17, - 0x35, 0xcd, 0xb3, 0xfc, 0x60, 0x1f, 0x4a, 0x0a, 0xaa, 0x9d, 0xb3, 0xee, 0x45, 0x4d, 0xc4, 0xcd, - 0xc3, 0xa7, 0xc1, 0xc9, 0xa6, 0x75, 0xc0, 0xca, 0x01, 0x26, 0xa1, 0x83, 0xa9, 0x39, 0xc7, 0x1f, - 0x7e, 0x96, 0x75, 0xbb, 0x9b, 0x3a, 0x03, 0x75, 0xcb, 0x71, 0x45, 0xc7, 0xd3, 0x14, 0xe7, 0x35, - 0x45, 0x9d, 0x81, 0xba, 0xe5, 0x58, 0xa4, 0x09, 0xbe, 0x15, 0x39, 0x04, 0xdb, 0xe6, 0x7d, 0xbc, - 0x41, 0x96, 0x2f, 0x2b, 0x04, 0x0d, 0x29, 0x2e, 0x6c, 0xc5, 0xb3, 0x2b, 0x93, 0x6f, 0xc3, 0x1b, - 0xc3, 0xad, 0xe4, 0x5b, 0x64, 0x85, 0x10, 0xeb, 0x50, 0x9c, 0x34, 0xfa, 0xd4, 0x0a, 0x52, 0x90, - 0xb3, 0x5c, 0x77, 0xab, 0x6e, 0x9e, 0xe3, 0xb1, 0x1f, 0xf6, 0x09, 0xa2, 0xaa, 0xce, 0x0a, 0x03, - 0x41, 0x02, 0x8b, 0x81, 0xfa, 0x1e, 0x4b, 0x8d, 0x85, 0xd1, 0x82, 0x6e, 0x31, 0x10, 0x24, 0xb0, - 0xf8, 0x93, 0x7a, 0x87, 0x5b, 0x75, 0xf3, 0xfe, 0x11, 0x3f, 0x29, 0x03, 0x41, 0x02, 0x0b, 0x3a, - 0x20, 0xeb, 0xf9, 0xa1, 0x79, 0x7e, 0x24, 0xc7, 0x33, 0x3f, 0x70, 0xae, 0xf9, 0x21, 0x62, 0x18, - 0xf0, 0xc7, 0x06, 0x00, 0x41, 0x92, 0xa2, 0x0f, 0x0c, 0x65, 0x24, 0x92, 0x82, 0x2c, 0x25, 0xb9, - 0xbd, 0xee, 0x85, 0xe4, 0x30, 0xb9, 0x1e, 0x69, 0x7b, 0x40, 0xf3, 0x02, 0xfe, 0xc2, 0x00, 0x67, - 0xf5, 0x36, 0x59, 0xb9, 0xb7, 0xc8, 0x23, 0x72, 0x7d, 0xd8, 0x69, 0x5e, 0xf1, 0x7d, 0xb7, 0x62, - 0x76, 0xda, 0x85, 0xb3, 0x2b, 0x7d, 0x50, 0x51, 0x5f, 0x5f, 0xe0, 0x6f, 0x0c, 0x30, 0x2b, 0xab, - 0xa8, 0xe6, 0x61, 0x81, 0x07, 0x10, 0x0f, 0x3b, 0x80, 0x69, 0x1c, 0x11, 0x47, 0xf5, 0x92, 0xbd, - 0x87, 0x8f, 0x7a, 0x5d, 0x83, 0xbf, 0x37, 0xc0, 0xb4, 0x8d, 0x03, 0xec, 0xd9, 0xd8, 0xab, 0x31, - 0x5f, 0x97, 0x86, 0x32, 0xb2, 0x48, 0xfb, 0xba, 0xa6, 0x41, 0x08, 0x37, 0x4b, 0xd2, 0xcd, 0x69, - 0x9d, 0x75, 0xd4, 0x2e, 0xcc, 0x27, 0xaa, 0x3a, 0x07, 0x75, 0x79, 0x09, 0xdf, 0x33, 0xc0, 0xe9, - 0x64, 0x01, 0xc4, 0x91, 0x72, 0x61, 0x84, 0x79, 0xc0, 0xdb, 0xd7, 0x95, 0x6e, 0x40, 0x94, 0xf6, - 0x00, 0xfe, 0xd6, 0x60, 0x9d, 0x5a, 0x7c, 0xef, 0xa3, 0x66, 0x91, 0xc7, 0xf2, 0x8d, 0xa1, 0xc7, - 0x52, 0x21, 0x88, 0x50, 0x5e, 0x4a, 0x5a, 0x41, 0xc5, 0x39, 0x6a, 0x17, 0xe6, 0xf4, 0x48, 0x2a, - 0x06, 0xd2, 0x3d, 0x84, 0xdf, 0x33, 0xc0, 0x34, 0x4e, 0x3a, 0x6e, 0x6a, 0x3e, 0x38, 0x94, 0x20, - 0xf6, 0x6d, 0xe2, 0xc5, 0x4d, 0x5d, 0x63, 0x51, 0xd4, 0x85, 0xcd, 0x3a, 0x48, 0x7c, 0x60, 0x35, - 0x03, 0x17, 0x9b, 0xff, 0x33, 0xe4, 0x0e, 0x72, 0x5d, 0xd8, 0x45, 0x31, 0x00, 0xbc, 0x04, 0xf2, - 0x5e, 0xe4, 0xba, 0xd6, 0xae, 0x8b, 0xcd, 0x87, 0x78, 0x2f, 0xa2, 0x46, 0xb2, 0xd7, 0x24, 0x1d, - 0x29, 0x09, 0x58, 0x07, 0x4b, 0x07, 0x2f, 0xaa, 0xcf, 0x93, 0xfa, 0x0e, 0x0d, 0xcd, 0x8b, 0xdc, - 0xca, 0x42, 0xa7, 0x5d, 0x98, 0xdf, 0xe9, 0x3f, 0x56, 0xbc, 0xa3, 0x0d, 0xf8, 0x0a, 0xb8, 0x5f, - 0x93, 0x59, 0x6f, 0xee, 0x62, 0xdb, 0xc6, 0x76, 0x7c, 0x71, 0x33, 0xff, 0x57, 0x0c, 0x2e, 0xe3, - 0x0d, 0xbe, 0x93, 0x16, 0x40, 0xb7, 0xd3, 0x86, 0x57, 0xc1, 0xbc, 0xc6, 0xde, 0xf0, 0xc2, 0x2d, - 0x52, 0x0d, 0x89, 0xe3, 0x35, 0xcc, 0x65, 0x6e, 0xf7, 0x6c, 0xbc, 0x23, 0x77, 0x34, 0x1e, 0x1a, - 0xa0, 0x03, 0xbf, 0xd8, 0x65, 0x8d, 0xbf, 0x42, 0xb3, 0x82, 0x17, 0xf1, 0x21, 0x35, 0x1f, 0xe6, - 0xdd, 0x09, 0x5f, 0xec, 0x1d, 0x8d, 0x8e, 0x06, 0xc8, 0xc3, 0x2f, 0x80, 0x33, 0x29, 0x0e, 0xbb, - 0xa2, 0x98, 0x8f, 0x88, 0xbb, 0x06, 0xeb, 0x67, 0x77, 0x62, 0x22, 0xea, 0x27, 0x09, 0x3f, 0x0f, - 0xa0, 0x46, 0xde, 0xb4, 0x02, 0xae, 0xff, 0xa8, 0xb8, 0xf6, 0xb0, 0x15, 0xdd, 0x91, 0x34, 0xd4, - 0x47, 0x0e, 0xfe, 0xd4, 0xe8, 0x7a, 0x92, 0xe4, 0x76, 0x4c, 0xcd, 0x4b, 0x7c, 0xff, 0x6e, 0x1e, - 0x33, 0x0b, 0xb5, 0xf7, 0x20, 0x91, 0x8b, 0xb5, 0x30, 0x6b, 0x50, 0x68, 0x80, 0x0b, 0x0b, 0xec, - 0x86, 0x9e, 0xaa, 0xf0, 0x70, 0x06, 0x64, 0xf7, 0xb0, 0xfc, 0xaa, 0x02, 0xb1, 0x9f, 0xd0, 0x06, - 0xb9, 0x96, 0xe5, 0x46, 0xf1, 0x90, 0x61, 0xc8, 0xdd, 0x01, 0x12, 0xc6, 0x9f, 0xcd, 0x3c, 0x63, - 0x2c, 0xbc, 0x6f, 0x80, 0xf9, 0xfe, 0x07, 0xcf, 0x3d, 0x75, 0xeb, 0x67, 0x06, 0x98, 0xed, 0x39, - 0x63, 0xfa, 0x78, 0x74, 0xab, 0xdb, 0xa3, 0x57, 0x86, 0x7d, 0x58, 0x88, 0xcd, 0xc1, 0x3b, 0x64, - 0xdd, 0xbd, 0x1f, 0x1a, 0x60, 0x26, 0x5d, 0xb6, 0xef, 0x65, 0xbc, 0x8a, 0xef, 0x67, 0xc0, 0x7c, - 0xff, 0xc6, 0x1e, 0x12, 0x35, 0xc1, 0x18, 0xcd, 0x24, 0xa8, 0xdf, 0xd4, 0xf8, 0x1d, 0x03, 0x4c, - 0xbd, 0xa5, 0xe4, 0xe2, 0xb7, 0xee, 0x43, 0x9f, 0x41, 0xc5, 0xe7, 0x64, 0xc2, 0xa0, 0x48, 0xc7, - 0x2d, 0xfe, 0xce, 0x00, 0x73, 0x7d, 0x1b, 0x00, 0x78, 0x11, 0x8c, 0x5b, 0xae, 0xeb, 0xef, 0x8b, - 0x51, 0xa2, 0xf6, 0x8e, 0x60, 0x85, 0x53, 0x91, 0xe4, 0x6a, 0xd1, 0xcb, 0x7c, 0x56, 0xd1, 0x2b, - 0xfe, 0xc9, 0x00, 0xe7, 0x6f, 0x97, 0x89, 0xf7, 0x64, 0x49, 0x97, 0x41, 0x5e, 0x36, 0xef, 0x87, - 0x7c, 0x39, 0x65, 0x29, 0x96, 0x45, 0x83, 0x7f, 0x68, 0x26, 0x7e, 0x15, 0x3f, 0x30, 0xc0, 0x4c, - 0x15, 0x93, 0x96, 0x53, 0xc3, 0x08, 0xd7, 0x31, 0xc1, 0x5e, 0x0d, 0xc3, 0x32, 0x98, 0xe4, 0xaf, - 0xbb, 0x03, 0xab, 0x16, 0xbf, 0xba, 0x99, 0x95, 0x21, 0x9f, 0xbc, 0x16, 0x33, 0x50, 0x22, 0xa3, - 0x5e, 0xf3, 0x64, 0x06, 0xbe, 0xe6, 0x39, 0x0f, 0xc6, 0x82, 0x64, 0x10, 0x9d, 0x67, 0x5c, 0x3e, - 0x7b, 0xe6, 0x54, 0xce, 0xf5, 0x49, 0xc8, 0xa7, 0x6b, 0x39, 0xc9, 0xf5, 0x49, 0x88, 0x38, 0xb5, - 0xf8, 0x87, 0x0c, 0x38, 0xd5, 0x5d, 0xc7, 0x19, 0x20, 0x89, 0xdc, 0x9e, 0xf7, 0x4a, 0x8c, 0x87, - 0x38, 0x47, 0xff, 0xdc, 0x25, 0x73, 0xfb, 0xcf, 0x5d, 0xe0, 0xf3, 0x60, 0x56, 0xfe, 0x5c, 0x3f, - 0x08, 0x08, 0xa6, 0xfc, 0xdd, 0x69, 0xb6, 0xfb, 0xa3, 0xd9, 0xcd, 0xb4, 0x00, 0xea, 0xd5, 0x81, - 0xaf, 0xa5, 0x3e, 0xc5, 0x59, 0x4f, 0x3e, 0xc3, 0x39, 0x6a, 0x17, 0x9e, 0x1e, 0xf4, 0x15, 0x6b, - 0x14, 0x3a, 0x6e, 0x39, 0x79, 0x49, 0x5f, 0xae, 0xb3, 0x7e, 0xa4, 0xb4, 0x4e, 0x88, 0x4f, 0xf8, - 0xc1, 0x19, 0x7f, 0xc1, 0x53, 0x06, 0x93, 0x9c, 0xc5, 0x27, 0xfa, 0xb9, 0xee, 0x65, 0xb9, 0x12, - 0x33, 0x50, 0x22, 0x53, 0xfc, 0xb3, 0x01, 0xfa, 0x7d, 0x4b, 0x07, 0xcf, 0x89, 0xc9, 0xac, 0x36, - 0xee, 0x8c, 0xa7, 0xb2, 0xb0, 0x05, 0x26, 0xa8, 0x48, 0x07, 0x99, 0xae, 0x5b, 0xc7, 0x4c, 0xd7, - 0x74, 0x72, 0x89, 0x96, 0x30, 0xa6, 0xc6, 0x60, 0x2c, 0x63, 0x6b, 0x56, 0x25, 0xf2, 0x6c, 0x39, - 0xac, 0x9f, 0x16, 0x19, 0xbb, 0xba, 0x22, 0x68, 0x48, 0x71, 0x2b, 0xb5, 0x0f, 0x3f, 0x59, 0x3c, - 0xf1, 0xd1, 0x27, 0x8b, 0x27, 0x3e, 0xfe, 0x64, 0xf1, 0xc4, 0x37, 0x3a, 0x8b, 0xc6, 0x87, 0x9d, - 0x45, 0xe3, 0xa3, 0xce, 0xa2, 0xf1, 0x71, 0x67, 0xd1, 0xf8, 0x7b, 0x67, 0xd1, 0xf8, 0xd1, 0x3f, - 0x16, 0x4f, 0x7c, 0xe5, 0xb9, 0x63, 0x7d, 0xbe, 0xfe, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3b, - 0xf5, 0xa4, 0xa4, 0x17, 0x2f, 0x00, 0x00, + // 3144 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcd, 0x73, 0x1c, 0x47, + 0xd9, 0xf7, 0xec, 0x6a, 0xa5, 0x55, 0x4b, 0xb6, 0xa5, 0xb6, 0xa5, 0x8c, 0x15, 0x47, 0x2b, 0xaf, + 0xdf, 0xf8, 0x55, 0x12, 0x67, 0x95, 0xf8, 0x4d, 0xde, 0x84, 0x40, 0x8a, 0xd2, 0x4a, 0x72, 0x50, + 0x62, 0x59, 0xa2, 0xd7, 0x76, 0x04, 0xf9, 0x1c, 0xed, 0xf4, 0xae, 0x26, 0x9a, 0x9d, 0x19, 0x77, + 0xcf, 0xac, 0xa4, 0x0a, 0x50, 0x7c, 0x54, 0x0a, 0x8a, 0x02, 0x42, 0x91, 0x5c, 0x28, 0xe0, 0x10, + 0x28, 0x2e, 0x1c, 0xe0, 0x00, 0x37, 0xf8, 0x03, 0x72, 0x4c, 0x51, 0x1c, 0x72, 0xa0, 0x16, 0xb2, + 0x5c, 0x39, 0x52, 0x45, 0x95, 0x4e, 0x54, 0x7f, 0x4c, 0x4f, 0xef, 0xec, 0xae, 0xed, 0x8a, 0x76, + 0x63, 0x6e, 0xbb, 0xcf, 0xd7, 0xef, 0x99, 0xa7, 0x9f, 0x7e, 0xfa, 0xe9, 0x67, 0x06, 0xd4, 0xf6, + 0x9e, 0xa5, 0x25, 0xc7, 0x5f, 0xda, 0x8b, 0x76, 0x30, 0xf1, 0x70, 0x88, 0xe9, 0x52, 0x13, 0x7b, + 0xb6, 0x4f, 0x96, 0x24, 0xc3, 0x0a, 0x1c, 0x7c, 0x10, 0x62, 0x8f, 0x3a, 0xbe, 0x47, 0x1f, 0xb7, + 0x02, 0x87, 0x62, 0xd2, 0xc4, 0x64, 0x29, 0xd8, 0xab, 0x33, 0x1e, 0xed, 0x14, 0x58, 0x6a, 0x3e, + 0xb9, 0x83, 0x43, 0xeb, 0xc9, 0xa5, 0x3a, 0xf6, 0x30, 0xb1, 0x42, 0x6c, 0x97, 0x02, 0xe2, 0x87, + 0x3e, 0x7c, 0x5e, 0x98, 0x2b, 0x75, 0x48, 0xbf, 0xa1, 0xcc, 0x95, 0x82, 0xbd, 0x3a, 0xe3, 0xd1, + 0x4e, 0x81, 0x92, 0x34, 0x37, 0xf7, 0x78, 0xdd, 0x09, 0x77, 0xa3, 0x9d, 0x52, 0xd5, 0x6f, 0x2c, + 0xd5, 0xfd, 0xba, 0xbf, 0xc4, 0xad, 0xee, 0x44, 0x35, 0xfe, 0x8f, 0xff, 0xe1, 0xbf, 0x04, 0xda, + 0xdc, 0x53, 0x89, 0xf3, 0x0d, 0xab, 0xba, 0xeb, 0x78, 0x98, 0x1c, 0x26, 0x1e, 0x37, 0x70, 0x68, + 0x2d, 0x35, 0xbb, 0x7c, 0x9c, 0x5b, 0xea, 0xa7, 0x45, 0x22, 0x2f, 0x74, 0x1a, 0xb8, 0x4b, 0xe1, + 0xff, 0xef, 0xa6, 0x40, 0xab, 0xbb, 0xb8, 0x61, 0xa5, 0xf5, 0x8a, 0x47, 0x06, 0x98, 0x5e, 0xf1, + 0xbd, 0x26, 0x26, 0xec, 0x29, 0x11, 0xbe, 0x1d, 0x61, 0x1a, 0xc2, 0x32, 0xc8, 0x46, 0x8e, 0x6d, + 0x1a, 0x0b, 0xc6, 0xe2, 0x78, 0xf9, 0x89, 0x0f, 0x5b, 0x85, 0x13, 0xed, 0x56, 0x21, 0x7b, 0x73, + 0x7d, 0xf5, 0xa8, 0x55, 0xb8, 0xd0, 0x0f, 0x29, 0x3c, 0x0c, 0x30, 0x2d, 0xdd, 0x5c, 0x5f, 0x45, + 0x4c, 0x19, 0xbe, 0x00, 0xa6, 0x6d, 0x4c, 0x1d, 0x82, 0xed, 0xe5, 0xad, 0xf5, 0x5b, 0xc2, 0xbe, + 0x99, 0xe1, 0x16, 0xcf, 0x49, 0x8b, 0xd3, 0xab, 0x69, 0x01, 0xd4, 0xad, 0x03, 0xb7, 0xc1, 0x98, + 0xbf, 0xf3, 0x16, 0xae, 0x86, 0xd4, 0xcc, 0x2e, 0x64, 0x17, 0x27, 0xae, 0x3c, 0x5e, 0x4a, 0x56, + 0x50, 0xb9, 0xc0, 0x97, 0x4d, 0x3e, 0x6c, 0x09, 0x59, 0xfb, 0x6b, 0xf1, 0xca, 0x95, 0x4f, 0x4b, + 0xb4, 0xb1, 0x4d, 0x61, 0x05, 0xc5, 0xe6, 0x8a, 0xbf, 0xca, 0x00, 0xa8, 0x3f, 0x3c, 0x0d, 0x7c, + 0x8f, 0xe2, 0x81, 0x3c, 0x3d, 0x05, 0x53, 0x55, 0x6e, 0x39, 0xc4, 0xb6, 0xc4, 0x35, 0x33, 0x9f, + 0xc6, 0x7b, 0x53, 0xe2, 0x4f, 0xad, 0xa4, 0xcc, 0xa1, 0x2e, 0x00, 0x78, 0x03, 0x8c, 0x12, 0x4c, + 0x23, 0x37, 0x34, 0xb3, 0x0b, 0xc6, 0xe2, 0xc4, 0x95, 0xcb, 0x7d, 0xa1, 0x78, 0x7e, 0xb3, 0xe4, + 0x2b, 0x35, 0x9f, 0x2c, 0x55, 0x42, 0x2b, 0x8c, 0x68, 0xf9, 0x94, 0x44, 0x1a, 0x45, 0xdc, 0x06, + 0x92, 0xb6, 0x8a, 0xdf, 0xcb, 0x80, 0x29, 0x3d, 0x4a, 0x4d, 0x07, 0xef, 0xc3, 0x7d, 0x30, 0x46, + 0x44, 0xb2, 0xf0, 0x38, 0x4d, 0x5c, 0xd9, 0x2a, 0x1d, 0x6b, 0x5b, 0x95, 0xba, 0x92, 0xb0, 0x3c, + 0xc1, 0xd6, 0x4c, 0xfe, 0x41, 0x31, 0x1a, 0x7c, 0x1b, 0xe4, 0x89, 0x5c, 0x28, 0x9e, 0x4d, 0x13, + 0x57, 0xbe, 0x3c, 0x40, 0x64, 0x61, 0xb8, 0x3c, 0xd9, 0x6e, 0x15, 0xf2, 0xf1, 0x3f, 0xa4, 0x00, + 0x8b, 0xef, 0x65, 0xc0, 0xfc, 0x4a, 0x44, 0x43, 0xbf, 0x81, 0x30, 0xf5, 0x23, 0x52, 0xc5, 0x2b, + 0xbe, 0x1b, 0x35, 0xbc, 0x55, 0x5c, 0x73, 0x3c, 0x27, 0x64, 0xd9, 0xba, 0x00, 0x46, 0x3c, 0xab, + 0x81, 0x65, 0xf6, 0x4c, 0xca, 0x98, 0x8e, 0x5c, 0xb7, 0x1a, 0x18, 0x71, 0x0e, 0x93, 0x60, 0xc9, + 0x22, 0xf7, 0x82, 0x92, 0xb8, 0x71, 0x18, 0x60, 0xc4, 0x39, 0xf0, 0x12, 0x18, 0xad, 0xf9, 0xa4, + 0x61, 0x89, 0x75, 0x1c, 0x4f, 0x56, 0xe6, 0x2a, 0xa7, 0x22, 0xc9, 0x85, 0x4f, 0x83, 0x09, 0x1b, + 0xd3, 0x2a, 0x71, 0x02, 0x06, 0x6d, 0x8e, 0x70, 0xe1, 0x33, 0x52, 0x78, 0x62, 0x35, 0x61, 0x21, + 0x5d, 0x0e, 0x5e, 0x06, 0xf9, 0x80, 0x38, 0x3e, 0x71, 0xc2, 0x43, 0x33, 0xb7, 0x60, 0x2c, 0xe6, + 0xca, 0x53, 0x52, 0x27, 0xbf, 0x25, 0xe9, 0x48, 0x49, 0xc0, 0x05, 0x90, 0x7f, 0xb1, 0xb2, 0x79, + 0x7d, 0xcb, 0x0a, 0x77, 0xcd, 0x51, 0x8e, 0x30, 0xc2, 0xa4, 0x91, 0xa2, 0x16, 0xff, 0x9a, 0x01, + 0x66, 0x3a, 0x2a, 0x71, 0x48, 0xe1, 0x55, 0x90, 0xa7, 0x21, 0xab, 0x38, 0xf5, 0x43, 0x19, 0x93, + 0x47, 0x63, 0xb0, 0x8a, 0xa4, 0x1f, 0xb5, 0x0a, 0xb3, 0x89, 0x46, 0x4c, 0xe5, 0xf1, 0x50, 0xba, + 0xf0, 0x17, 0x06, 0x38, 0xb3, 0x8f, 0x77, 0x76, 0x7d, 0x7f, 0x6f, 0xc5, 0x75, 0xb0, 0x17, 0xae, + 0xf8, 0x5e, 0xcd, 0xa9, 0xcb, 0x1c, 0x40, 0xc7, 0xcc, 0x81, 0x97, 0xbb, 0x2d, 0x97, 0x1f, 0x68, + 0xb7, 0x0a, 0x67, 0x7a, 0x30, 0x50, 0x2f, 0x3f, 0xe0, 0x36, 0x30, 0xab, 0xa9, 0x4d, 0x22, 0x0b, + 0x98, 0x28, 0x5b, 0xe3, 0xe5, 0xf3, 0xed, 0x56, 0xc1, 0x5c, 0xe9, 0x23, 0x83, 0xfa, 0x6a, 0x17, + 0xbf, 0x93, 0x4d, 0x87, 0x57, 0x4b, 0xb7, 0x37, 0x41, 0x9e, 0x6d, 0x63, 0xdb, 0x0a, 0x2d, 0xb9, + 0x11, 0x9f, 0xb8, 0xb7, 0x4d, 0x2f, 0x6a, 0xc6, 0x06, 0x0e, 0xad, 0x32, 0x94, 0x0b, 0x02, 0x12, + 0x1a, 0x52, 0x56, 0xe1, 0xd7, 0xc1, 0x08, 0x0d, 0x70, 0x55, 0x06, 0xfa, 0x95, 0xe3, 0x6e, 0xb6, + 0x3e, 0x0f, 0x52, 0x09, 0x70, 0x35, 0xd9, 0x0b, 0xec, 0x1f, 0xe2, 0xb0, 0xf0, 0x1d, 0x03, 0x8c, + 0x52, 0x5e, 0xa0, 0x64, 0x51, 0x7b, 0x6d, 0x58, 0x1e, 0xa4, 0xaa, 0xa0, 0xf8, 0x8f, 0x24, 0x78, + 0xf1, 0x5f, 0x19, 0x70, 0xa1, 0x9f, 0xea, 0x8a, 0xef, 0xd9, 0x62, 0x39, 0xd6, 0xe5, 0xde, 0x16, + 0x99, 0xfe, 0xb4, 0xbe, 0xb7, 0x8f, 0x5a, 0x85, 0x87, 0xef, 0x6a, 0x40, 0x2b, 0x02, 0x9f, 0x53, + 0xcf, 0x2d, 0x0a, 0xc5, 0x85, 0x4e, 0xc7, 0x8e, 0x5a, 0x85, 0xd3, 0x4a, 0xad, 0xd3, 0x57, 0xd8, + 0x04, 0xd0, 0xb5, 0x68, 0x78, 0x83, 0x58, 0x1e, 0x15, 0x66, 0x9d, 0x06, 0x96, 0xe1, 0x7b, 0xf4, + 0xde, 0xd2, 0x83, 0x69, 0x94, 0xe7, 0x24, 0x24, 0xbc, 0xd6, 0x65, 0x0d, 0xf5, 0x40, 0x60, 0x75, + 0x8b, 0x60, 0x8b, 0xaa, 0x52, 0xa4, 0x9d, 0x28, 0x8c, 0x8a, 0x24, 0x17, 0x3e, 0x02, 0xc6, 0x1a, + 0x98, 0x52, 0xab, 0x8e, 0x79, 0xfd, 0x19, 0x4f, 0x8e, 0xe8, 0x0d, 0x41, 0x46, 0x31, 0x9f, 0xf5, + 0x27, 0xe7, 0xfb, 0x45, 0xed, 0x9a, 0x43, 0x43, 0xf8, 0x6a, 0xd7, 0x06, 0x28, 0xdd, 0xdb, 0x13, + 0x32, 0x6d, 0x9e, 0xfe, 0xaa, 0xf8, 0xc5, 0x14, 0x2d, 0xf9, 0xbf, 0x06, 0x72, 0x4e, 0x88, 0x1b, + 0xf1, 0xd9, 0xfd, 0xf2, 0x90, 0x72, 0xaf, 0x7c, 0x52, 0xfa, 0x90, 0x5b, 0x67, 0x68, 0x48, 0x80, + 0x16, 0x7f, 0x9d, 0x01, 0x0f, 0xf5, 0x53, 0x61, 0x07, 0x0a, 0x65, 0x11, 0x0f, 0xdc, 0x88, 0x58, + 0xae, 0xcc, 0x38, 0x15, 0xf1, 0x2d, 0x4e, 0x45, 0x92, 0xcb, 0x4a, 0x3e, 0x75, 0xbc, 0x7a, 0xe4, + 0x5a, 0x44, 0xa6, 0x93, 0x7a, 0xea, 0x8a, 0xa4, 0x23, 0x25, 0x01, 0x4b, 0x00, 0xd0, 0x5d, 0x9f, + 0x84, 0x1c, 0x43, 0x56, 0xaf, 0x53, 0xac, 0x40, 0x54, 0x14, 0x15, 0x69, 0x12, 0xec, 0x44, 0xdb, + 0x73, 0x3c, 0x5b, 0xae, 0xba, 0xda, 0xc5, 0x2f, 0x39, 0x9e, 0x8d, 0x38, 0x87, 0xe1, 0xbb, 0x0e, + 0x0d, 0x19, 0x45, 0x2e, 0x79, 0x47, 0xd4, 0xb9, 0xa4, 0x92, 0x60, 0xf8, 0x55, 0x56, 0xf5, 0x7d, + 0xe2, 0x60, 0x6a, 0x8e, 0x26, 0xf8, 0x2b, 0x8a, 0x8a, 0x34, 0x89, 0xe2, 0x3f, 0xf3, 0xfd, 0x93, + 0x84, 0x95, 0x12, 0x78, 0x11, 0xe4, 0xea, 0xc4, 0x8f, 0x02, 0x19, 0x25, 0x15, 0xed, 0x17, 0x18, + 0x11, 0x09, 0x1e, 0xcb, 0xca, 0x66, 0x47, 0x9b, 0xaa, 0xb2, 0x32, 0x6e, 0x4e, 0x63, 0x3e, 0xfc, + 0x96, 0x01, 0x72, 0x9e, 0x0c, 0x0e, 0x4b, 0xb9, 0x57, 0x87, 0x94, 0x17, 0x3c, 0xbc, 0x89, 0xbb, + 0x22, 0xf2, 0x02, 0x19, 0x3e, 0x05, 0x72, 0xb4, 0xea, 0x07, 0x58, 0x46, 0x7d, 0x3e, 0x16, 0xaa, + 0x30, 0xe2, 0x51, 0xab, 0x70, 0x32, 0x36, 0xc7, 0x09, 0x48, 0x08, 0xc3, 0xef, 0x1a, 0x00, 0x34, + 0x2d, 0xd7, 0xb1, 0x2d, 0xde, 0x32, 0xe4, 0xb8, 0xfb, 0x83, 0x4d, 0xeb, 0x5b, 0xca, 0xbc, 0x58, + 0xb4, 0xe4, 0x3f, 0xd2, 0xa0, 0xe1, 0xbb, 0x06, 0x98, 0xa4, 0xd1, 0x0e, 0x91, 0x5a, 0x94, 0x37, + 0x17, 0x13, 0x57, 0xbe, 0x32, 0x50, 0x5f, 0x2a, 0x1a, 0x40, 0x79, 0xaa, 0xdd, 0x2a, 0x4c, 0xea, + 0x14, 0xd4, 0xe1, 0x00, 0xfc, 0x81, 0x01, 0xf2, 0xcd, 0xf8, 0xcc, 0x1e, 0xe3, 0x1b, 0xfe, 0xf5, + 0x21, 0x2d, 0xac, 0xcc, 0xa8, 0x64, 0x17, 0xa8, 0x3e, 0x40, 0x79, 0x00, 0xff, 0x68, 0x00, 0xd3, + 0xb2, 0x45, 0x81, 0xb7, 0xdc, 0x2d, 0xe2, 0x78, 0x21, 0x26, 0xa2, 0xdf, 0xa4, 0x66, 0x9e, 0xbb, + 0x37, 0xd8, 0xb3, 0x30, 0xdd, 0xcb, 0x96, 0x17, 0xa4, 0x77, 0xe6, 0x72, 0x1f, 0x37, 0x50, 0x5f, + 0x07, 0x79, 0xa2, 0x25, 0x2d, 0x8d, 0x39, 0x3e, 0x84, 0x44, 0x4b, 0x7a, 0x29, 0x59, 0x1d, 0x92, + 0x0e, 0x4a, 0x83, 0x86, 0x9b, 0x60, 0x26, 0x20, 0x98, 0x03, 0xdc, 0xf4, 0xf6, 0x3c, 0x7f, 0xdf, + 0xbb, 0xea, 0x60, 0xd7, 0xa6, 0x26, 0x58, 0x30, 0x16, 0xf3, 0xe5, 0x73, 0xed, 0x56, 0x61, 0x66, + 0xab, 0x97, 0x00, 0xea, 0xad, 0x57, 0x7c, 0x37, 0x9b, 0xbe, 0x05, 0xa4, 0xbb, 0x08, 0xf8, 0xbe, + 0x78, 0x7a, 0x11, 0x1b, 0x6a, 0x1a, 0x7c, 0xb5, 0xde, 0x1c, 0x52, 0x32, 0xa9, 0x36, 0x20, 0xe9, + 0xe4, 0x14, 0x89, 0x22, 0xcd, 0x0f, 0xf8, 0x53, 0x03, 0x9c, 0xb4, 0xaa, 0x55, 0x1c, 0x84, 0xd8, + 0x16, 0xc5, 0x3d, 0xf3, 0x19, 0xd4, 0xaf, 0x19, 0xe9, 0xd5, 0xc9, 0x65, 0x1d, 0x1a, 0x75, 0x7a, + 0x02, 0x9f, 0x03, 0xa7, 0x68, 0xe8, 0x13, 0x6c, 0xa7, 0xda, 0x66, 0xd8, 0x6e, 0x15, 0x4e, 0x55, + 0x3a, 0x38, 0x28, 0x25, 0x59, 0xfc, 0x5b, 0x0e, 0x14, 0xee, 0xb2, 0xd5, 0xee, 0xe1, 0x62, 0x76, + 0x09, 0x8c, 0xf2, 0xc7, 0xb5, 0x79, 0x54, 0xf2, 0x5a, 0x2b, 0xc8, 0xa9, 0x48, 0x72, 0xd9, 0x41, + 0xc1, 0xf0, 0x59, 0xfb, 0x92, 0xe5, 0x82, 0xea, 0xa0, 0xa8, 0x08, 0x32, 0x8a, 0xf9, 0xf0, 0x0a, + 0x00, 0x36, 0x0e, 0x08, 0x66, 0x87, 0x95, 0x6d, 0x8e, 0x71, 0x69, 0xb5, 0x48, 0xab, 0x8a, 0x83, + 0x34, 0x29, 0x78, 0x15, 0xc0, 0xf8, 0x9f, 0xe3, 0x7b, 0x2f, 0x5b, 0xc4, 0x73, 0xbc, 0xba, 0x99, + 0xe7, 0x6e, 0xcf, 0xb2, 0x6e, 0x6c, 0xb5, 0x8b, 0x8b, 0x7a, 0x68, 0xc0, 0xb7, 0xc1, 0xa8, 0x18, + 0xfa, 0xf0, 0x13, 0x62, 0x88, 0x55, 0x1e, 0xf0, 0x18, 0x71, 0x28, 0x24, 0x21, 0xbb, 0xab, 0x7b, + 0xee, 0x7e, 0x57, 0xf7, 0x3b, 0x96, 0xd3, 0xd1, 0xff, 0xf2, 0x72, 0x5a, 0xfc, 0xb7, 0x91, 0xae, + 0x39, 0xda, 0xa3, 0x56, 0xaa, 0x96, 0x8b, 0xe1, 0x2a, 0x98, 0x62, 0x37, 0x26, 0x84, 0x03, 0xd7, + 0xa9, 0x5a, 0x94, 0x5f, 0xd8, 0x45, 0xb2, 0xab, 0x19, 0x52, 0x25, 0xc5, 0x47, 0x5d, 0x1a, 0xf0, + 0x45, 0x00, 0xc5, 0x2d, 0xa2, 0xc3, 0x8e, 0x68, 0x88, 0xd4, 0x7d, 0xa0, 0xd2, 0x25, 0x81, 0x7a, + 0x68, 0xc1, 0x15, 0x30, 0xed, 0x5a, 0x3b, 0xd8, 0xad, 0x60, 0x17, 0x57, 0x43, 0x9f, 0x70, 0x53, + 0x62, 0xa4, 0x31, 0xd3, 0x6e, 0x15, 0xa6, 0xaf, 0xa5, 0x99, 0xa8, 0x5b, 0xbe, 0x78, 0x21, 0xbd, + 0xb5, 0xf5, 0x07, 0x17, 0x77, 0xb3, 0x0f, 0x32, 0x60, 0xae, 0x7f, 0x66, 0xc0, 0x6f, 0x27, 0x57, + 0x48, 0x71, 0x43, 0x78, 0x7d, 0x58, 0x59, 0x28, 0xef, 0x90, 0xa0, 0xfb, 0xfe, 0x08, 0xbf, 0xc1, + 0xda, 0x35, 0xcb, 0x8d, 0x87, 0x56, 0xaf, 0x0d, 0xcd, 0x05, 0x06, 0x52, 0x1e, 0x17, 0x9d, 0xa0, + 0xe5, 0xf2, 0xc6, 0xcf, 0x72, 0x71, 0xf1, 0x37, 0x46, 0x7a, 0x8a, 0x90, 0xec, 0x60, 0xf8, 0x43, + 0x03, 0x9c, 0xf6, 0x03, 0xec, 0x2d, 0x6f, 0xad, 0xdf, 0xfa, 0x3f, 0xb1, 0x93, 0x65, 0xa8, 0xae, + 0x1f, 0xd3, 0xcf, 0x17, 0x2b, 0x9b, 0xd7, 0x85, 0xc1, 0x2d, 0xe2, 0x07, 0xb4, 0x7c, 0xa6, 0xdd, + 0x2a, 0x9c, 0xde, 0xec, 0x84, 0x42, 0x69, 0xec, 0x62, 0x03, 0xcc, 0xac, 0x1d, 0x84, 0x98, 0x78, + 0x96, 0xbb, 0xea, 0x57, 0xa3, 0x06, 0xf6, 0x42, 0xe1, 0x68, 0x6a, 0xe2, 0x65, 0xdc, 0xe3, 0xc4, + 0xeb, 0x21, 0x90, 0x8d, 0x88, 0x2b, 0xb3, 0x78, 0x42, 0x4d, 0x74, 0xd1, 0x35, 0xc4, 0xe8, 0xc5, + 0x0b, 0x60, 0x84, 0xf9, 0x09, 0xcf, 0x81, 0x2c, 0xb1, 0xf6, 0xb9, 0xd5, 0xc9, 0xf2, 0x18, 0x13, + 0x41, 0xd6, 0x3e, 0x62, 0xb4, 0xe2, 0x5f, 0x2e, 0x80, 0xd3, 0xa9, 0x67, 0x81, 0x73, 0x20, 0xa3, + 0xc6, 0xc4, 0x40, 0x1a, 0xcd, 0xac, 0xaf, 0xa2, 0x8c, 0x63, 0xc3, 0x67, 0x54, 0xf1, 0x15, 0xa0, + 0x05, 0x75, 0x96, 0x70, 0x2a, 0xeb, 0xcf, 0x13, 0x73, 0xcc, 0x91, 0xb8, 0x70, 0x32, 0x1f, 0x70, + 0x4d, 0xee, 0x12, 0xe1, 0x03, 0xae, 0x21, 0x46, 0xfb, 0xb4, 0xe3, 0xbe, 0x78, 0xde, 0x98, 0xbb, + 0x87, 0x79, 0xe3, 0xe8, 0x1d, 0xe7, 0x8d, 0x17, 0x41, 0x2e, 0x74, 0x42, 0x17, 0xf3, 0x83, 0x4c, + 0xbb, 0x46, 0xdd, 0x60, 0x44, 0x24, 0x78, 0xf0, 0x2d, 0x30, 0x66, 0xe3, 0x9a, 0x15, 0xb9, 0x21, + 0x3f, 0xb3, 0x26, 0xae, 0xac, 0x0c, 0x20, 0x85, 0xc4, 0x30, 0x78, 0x55, 0xd8, 0x45, 0x31, 0x00, + 0x7c, 0x18, 0x8c, 0x35, 0xac, 0x03, 0xa7, 0x11, 0x35, 0x78, 0x83, 0x69, 0x08, 0xb1, 0x0d, 0x41, + 0x42, 0x31, 0x8f, 0x55, 0x46, 0x7c, 0x50, 0x75, 0x23, 0xea, 0x34, 0xb1, 0x64, 0xca, 0xe6, 0x4f, + 0x55, 0xc6, 0xb5, 0x14, 0x1f, 0x75, 0x69, 0x70, 0x30, 0xc7, 0xe3, 0xca, 0x13, 0x1a, 0x98, 0x20, + 0xa1, 0x98, 0xd7, 0x09, 0x26, 0xe5, 0x27, 0xfb, 0x81, 0x49, 0xe5, 0x2e, 0x0d, 0xf8, 0x18, 0x18, + 0x6f, 0x58, 0x07, 0xd7, 0xb0, 0x57, 0x0f, 0x77, 0xcd, 0x93, 0x0b, 0xc6, 0x62, 0xb6, 0x7c, 0xb2, + 0xdd, 0x2a, 0x8c, 0x6f, 0xc4, 0x44, 0x94, 0xf0, 0xb9, 0xb0, 0xe3, 0x49, 0xe1, 0x53, 0x9a, 0x70, + 0x4c, 0x44, 0x09, 0x9f, 0x75, 0x2f, 0x81, 0x15, 0xb2, 0xcd, 0x65, 0x9e, 0xee, 0xbc, 0xe6, 0x6e, + 0x09, 0x32, 0x8a, 0xf9, 0x70, 0x11, 0xe4, 0x1b, 0xd6, 0x01, 0x1f, 0x49, 0x98, 0x53, 0xdc, 0x2c, + 0x1f, 0x8c, 0x6f, 0x48, 0x1a, 0x52, 0x5c, 0x2e, 0xe9, 0x78, 0x42, 0x72, 0x5a, 0x93, 0x94, 0x34, + 0xa4, 0xb8, 0x2c, 0x89, 0x23, 0xcf, 0xb9, 0x1d, 0x61, 0x21, 0x0c, 0x79, 0x64, 0x54, 0x12, 0xdf, + 0x4c, 0x58, 0x48, 0x97, 0x83, 0x25, 0x00, 0x1a, 0x91, 0x1b, 0x3a, 0x81, 0x8b, 0x37, 0x6b, 0xe6, + 0x19, 0x1e, 0x7f, 0xde, 0xf4, 0x6f, 0x28, 0x2a, 0xd2, 0x24, 0x20, 0x06, 0x23, 0xd8, 0x8b, 0x1a, + 0xe6, 0x59, 0x7e, 0xb0, 0x0f, 0x24, 0x05, 0xd5, 0xce, 0x59, 0xf3, 0xa2, 0x06, 0xe2, 0xe6, 0xe1, + 0x33, 0xe0, 0x64, 0xc3, 0x3a, 0x60, 0xe5, 0x00, 0x93, 0xd0, 0xc1, 0xd4, 0x9c, 0xe1, 0x0f, 0x3f, + 0xcd, 0xba, 0xdd, 0x0d, 0x9d, 0x81, 0x3a, 0xe5, 0xb8, 0xa2, 0xe3, 0x69, 0x8a, 0xb3, 0x9a, 0xa2, + 0xce, 0x40, 0x9d, 0x72, 0x2c, 0xd2, 0x04, 0xdf, 0x8e, 0x1c, 0x82, 0x6d, 0xf3, 0x01, 0xde, 0x20, + 0xcb, 0x97, 0x15, 0x82, 0x86, 0x14, 0x17, 0x36, 0xe3, 0xd9, 0x95, 0xc9, 0xb7, 0xe1, 0xcd, 0xc1, + 0x56, 0xf2, 0x4d, 0xb2, 0x4c, 0x88, 0x75, 0x28, 0x4e, 0x1a, 0x7d, 0x6a, 0x05, 0x29, 0xc8, 0x59, + 0xae, 0xbb, 0x59, 0x33, 0xcf, 0xf1, 0xd8, 0x0f, 0xfa, 0x04, 0x51, 0x55, 0x67, 0x99, 0x81, 0x20, + 0x81, 0xc5, 0x40, 0x7d, 0x8f, 0xa5, 0xc6, 0xdc, 0x70, 0x41, 0x37, 0x19, 0x08, 0x12, 0x58, 0xfc, + 0x49, 0xbd, 0xc3, 0xcd, 0x9a, 0xf9, 0xe0, 0x90, 0x9f, 0x94, 0x81, 0x20, 0x81, 0x05, 0x1d, 0x90, + 0xf5, 0xfc, 0xd0, 0x3c, 0x3f, 0x94, 0xe3, 0x99, 0x1f, 0x38, 0xd7, 0xfd, 0x10, 0x31, 0x0c, 0xf8, + 0x13, 0x03, 0x80, 0x20, 0x49, 0xd1, 0x87, 0x06, 0x32, 0x12, 0x49, 0x41, 0x96, 0x92, 0xdc, 0x5e, + 0xf3, 0x42, 0x72, 0x98, 0x5c, 0x8f, 0xb4, 0x3d, 0xa0, 0x79, 0x01, 0x7f, 0x69, 0x80, 0xb3, 0x7a, + 0x9b, 0xac, 0xdc, 0x9b, 0xe7, 0x11, 0xb9, 0x31, 0xe8, 0x34, 0x2f, 0xfb, 0xbe, 0x5b, 0x36, 0xdb, + 0xad, 0xc2, 0xd9, 0xe5, 0x1e, 0xa8, 0xa8, 0xa7, 0x2f, 0xf0, 0xb7, 0x06, 0x98, 0x96, 0x55, 0x54, + 0xf3, 0xb0, 0xc0, 0x03, 0x88, 0x07, 0x1d, 0xc0, 0x34, 0x8e, 0x88, 0xa3, 0x7a, 0xc9, 0xde, 0xc5, + 0x47, 0xdd, 0xae, 0xc1, 0x3f, 0x18, 0x60, 0xd2, 0xc6, 0x01, 0xf6, 0x6c, 0xec, 0x55, 0x99, 0xaf, + 0x0b, 0x03, 0x19, 0x59, 0xa4, 0x7d, 0x5d, 0xd5, 0x20, 0x84, 0x9b, 0x25, 0xe9, 0xe6, 0xa4, 0xce, + 0x3a, 0x6a, 0x15, 0x66, 0x13, 0x55, 0x9d, 0x83, 0x3a, 0xbc, 0x84, 0xef, 0x19, 0xe0, 0x74, 0xb2, + 0x00, 0xe2, 0x48, 0xb9, 0x30, 0xc4, 0x3c, 0xe0, 0xed, 0xeb, 0x72, 0x27, 0x20, 0x4a, 0x7b, 0x00, + 0x7f, 0x67, 0xb0, 0x4e, 0x2d, 0xbe, 0xf7, 0x51, 0xb3, 0xc8, 0x63, 0xf9, 0xc6, 0xc0, 0x63, 0xa9, + 0x10, 0x44, 0x28, 0x2f, 0x27, 0xad, 0xa0, 0xe2, 0x1c, 0xb5, 0x0a, 0x33, 0x7a, 0x24, 0x15, 0x03, + 0xe9, 0x1e, 0xc2, 0xef, 0x1b, 0x60, 0x12, 0x27, 0x1d, 0x37, 0x35, 0x2f, 0x0e, 0x24, 0x88, 0x3d, + 0x9b, 0x78, 0x71, 0x53, 0xd7, 0x58, 0x14, 0x75, 0x60, 0xb3, 0x0e, 0x12, 0x1f, 0x58, 0x8d, 0xc0, + 0xc5, 0xe6, 0xff, 0x0c, 0xb8, 0x83, 0x5c, 0x13, 0x76, 0x51, 0x0c, 0x00, 0x2f, 0x83, 0xbc, 0x17, + 0xb9, 0xae, 0xb5, 0xe3, 0x62, 0xf3, 0x61, 0xde, 0x8b, 0xa8, 0x91, 0xec, 0x75, 0x49, 0x47, 0x4a, + 0x02, 0xd6, 0xc0, 0xc2, 0xc1, 0x4b, 0xea, 0xf3, 0xa4, 0x9e, 0x43, 0x43, 0xf3, 0x12, 0xb7, 0x32, + 0xd7, 0x6e, 0x15, 0x66, 0xb7, 0x7b, 0x8f, 0x15, 0xef, 0x6a, 0x03, 0xbe, 0x02, 0x1e, 0xd4, 0x64, + 0xd6, 0x1a, 0x3b, 0xd8, 0xb6, 0xb1, 0x1d, 0x5f, 0xdc, 0xcc, 0xff, 0x15, 0x83, 0xcb, 0x78, 0x83, + 0x6f, 0xa7, 0x05, 0xd0, 0x9d, 0xb4, 0xe1, 0x35, 0x30, 0xab, 0xb1, 0xd7, 0xbd, 0x70, 0x93, 0x54, + 0x42, 0xe2, 0x78, 0x75, 0x73, 0x91, 0xdb, 0x3d, 0x1b, 0xef, 0xc8, 0x6d, 0x8d, 0x87, 0xfa, 0xe8, + 0xc0, 0x2f, 0x75, 0x58, 0xe3, 0xaf, 0xd0, 0xac, 0xe0, 0x25, 0x7c, 0x48, 0xcd, 0x47, 0x78, 0x77, + 0xc2, 0x17, 0x7b, 0x5b, 0xa3, 0xa3, 0x3e, 0xf2, 0xf0, 0x8b, 0xe0, 0x4c, 0x8a, 0xc3, 0xae, 0x28, + 0xe6, 0xa3, 0xe2, 0xae, 0xc1, 0xfa, 0xd9, 0xed, 0x98, 0x88, 0x7a, 0x49, 0xc2, 0x2f, 0x00, 0xa8, + 0x91, 0x37, 0xac, 0x80, 0xeb, 0x3f, 0x26, 0xae, 0x3d, 0x6c, 0x45, 0xb7, 0x25, 0x0d, 0xf5, 0x90, + 0x83, 0x3f, 0x33, 0x3a, 0x9e, 0x24, 0xb9, 0x1d, 0x53, 0xf3, 0x32, 0xdf, 0xbf, 0x1b, 0xc7, 0xcc, + 0x42, 0xed, 0x3d, 0x48, 0xe4, 0x62, 0x2d, 0xcc, 0x1a, 0x14, 0xea, 0xe3, 0xc2, 0x1c, 0xbb, 0xa1, + 0xa7, 0x2a, 0x3c, 0x9c, 0x02, 0xd9, 0x3d, 0x2c, 0xbf, 0xaa, 0x40, 0xec, 0x27, 0xb4, 0x41, 0xae, + 0x69, 0xb9, 0x51, 0x3c, 0x64, 0x18, 0x70, 0x77, 0x80, 0x84, 0xf1, 0xe7, 0x32, 0xcf, 0x1a, 0x73, + 0xef, 0x1b, 0x60, 0xb6, 0xf7, 0xc1, 0x73, 0x5f, 0xdd, 0xfa, 0xb9, 0x01, 0xa6, 0xbb, 0xce, 0x98, + 0x1e, 0x1e, 0xdd, 0xee, 0xf4, 0xe8, 0x95, 0x41, 0x1f, 0x16, 0x62, 0x73, 0xf0, 0x0e, 0x59, 0x77, + 0xef, 0x47, 0x06, 0x98, 0x4a, 0x97, 0xed, 0xfb, 0x19, 0xaf, 0xe2, 0xfb, 0x19, 0x30, 0xdb, 0xbb, + 0xb1, 0x87, 0x44, 0x4d, 0x30, 0x86, 0x33, 0x09, 0xea, 0x35, 0x35, 0x7e, 0xc7, 0x00, 0x13, 0x6f, + 0x29, 0xb9, 0xf8, 0xad, 0xfb, 0xc0, 0x67, 0x50, 0xf1, 0x39, 0x99, 0x30, 0x28, 0xd2, 0x71, 0x8b, + 0xbf, 0x37, 0xc0, 0x4c, 0xcf, 0x06, 0x00, 0x5e, 0x02, 0xa3, 0x96, 0xeb, 0xfa, 0xfb, 0x62, 0x94, + 0xa8, 0xbd, 0x23, 0x58, 0xe6, 0x54, 0x24, 0xb9, 0x5a, 0xf4, 0x32, 0x9f, 0x55, 0xf4, 0x8a, 0x7f, + 0x32, 0xc0, 0xf9, 0x3b, 0x65, 0xe2, 0x7d, 0x59, 0xd2, 0x45, 0x90, 0x97, 0xcd, 0xfb, 0x21, 0x5f, + 0x4e, 0x59, 0x8a, 0x65, 0xd1, 0xe0, 0x1f, 0x9a, 0x89, 0x5f, 0xc5, 0x0f, 0x0c, 0x30, 0x55, 0xc1, + 0xa4, 0xe9, 0x54, 0x31, 0xc2, 0x35, 0x4c, 0xb0, 0x57, 0xc5, 0x70, 0x09, 0x8c, 0xf3, 0xd7, 0xdd, + 0x81, 0x55, 0x8d, 0x5f, 0xdd, 0x4c, 0xcb, 0x90, 0x8f, 0x5f, 0x8f, 0x19, 0x28, 0x91, 0x51, 0xaf, + 0x79, 0x32, 0x7d, 0x5f, 0xf3, 0x9c, 0x07, 0x23, 0x41, 0x32, 0x88, 0xce, 0x33, 0x2e, 0x9f, 0x3d, + 0x73, 0x2a, 0xe7, 0xfa, 0x24, 0xe4, 0xd3, 0xb5, 0x9c, 0xe4, 0xfa, 0x24, 0x44, 0x9c, 0xca, 0xf6, + 0xcb, 0xa9, 0xce, 0x3a, 0xce, 0x00, 0x49, 0xe4, 0x76, 0xbd, 0x57, 0x62, 0x3c, 0xc4, 0x39, 0xfa, + 0xe7, 0x2e, 0x99, 0x3b, 0x7f, 0xee, 0x02, 0x5f, 0x00, 0xd3, 0xf2, 0xe7, 0xda, 0x41, 0x40, 0x30, + 0xe5, 0xef, 0x4e, 0xb3, 0x9d, 0x1f, 0xcd, 0x6e, 0xa4, 0x05, 0x50, 0xb7, 0x0e, 0xfc, 0x7c, 0xea, + 0x53, 0x9c, 0x8b, 0xc9, 0x67, 0x38, 0xac, 0x25, 0xe4, 0x7d, 0xc6, 0x2d, 0x56, 0x06, 0xd6, 0x08, + 0xf1, 0x49, 0xea, 0xfb, 0x9c, 0x25, 0x30, 0x5e, 0x63, 0x02, 0x7c, 0x5e, 0x9f, 0xeb, 0x0c, 0xfa, + 0xd5, 0x98, 0x81, 0x12, 0x99, 0xe2, 0x9f, 0x0d, 0xd0, 0xeb, 0x4b, 0x39, 0x78, 0x4e, 0xcc, 0x5d, + 0xb5, 0x61, 0x66, 0x3c, 0x73, 0x85, 0x4d, 0x30, 0x46, 0xc5, 0x62, 0xcb, 0x64, 0xdc, 0x3c, 0x66, + 0x32, 0xa6, 0x53, 0x47, 0x34, 0x7c, 0x31, 0x35, 0x06, 0x63, 0xf9, 0x58, 0xb5, 0xca, 0x91, 0x67, + 0xcb, 0x51, 0xfc, 0xa4, 0xc8, 0xc7, 0x95, 0x65, 0x41, 0x43, 0x8a, 0x5b, 0xae, 0x7e, 0xf8, 0xc9, + 0xfc, 0x89, 0x8f, 0x3e, 0x99, 0x3f, 0xf1, 0xf1, 0x27, 0xf3, 0x27, 0xbe, 0xd9, 0x9e, 0x37, 0x3e, + 0x6c, 0xcf, 0x1b, 0x1f, 0xb5, 0xe7, 0x8d, 0x8f, 0xdb, 0xf3, 0xc6, 0xdf, 0xdb, 0xf3, 0xc6, 0x8f, + 0xff, 0x31, 0x7f, 0xe2, 0xab, 0xcf, 0x1f, 0xeb, 0xe3, 0xf4, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, + 0xde, 0xe9, 0x15, 0xbf, 0xf5, 0x2e, 0x00, 0x00, } func (m *ConversionRequest) Marshal() (dAtA []byte, err error) { @@ -9133,7 +9131,7 @@ func (m *ValidationRule) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - s := k8s_io_apimachinery_pkg_util_validation_field.ErrorType(dAtA[iNdEx:postIndex]) + s := FieldValueErrorReason(dAtA[iNdEx:postIndex]) m.Reason = &s iNdEx = postIndex case 5: diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto index f353cb9cf3f..7cfb9c4dd5d 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto @@ -735,7 +735,7 @@ message ValidationRule { // The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. // The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate". // If not set, default to use "FieldValueInvalid". - // All future added reasons must be accepted by clients when reading this value. + // All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. // +optional optional string reason = 4; diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go index 9b0e327a9cd..59a0932276d 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types_jsonschema.go @@ -16,8 +16,24 @@ limitations under the License. package v1beta1 -import ( - "k8s.io/apimachinery/pkg/util/validation/field" +// FieldValueErrorReason is a machine-readable value providing more detail about why a field failed the validation. +// +enum +type FieldValueErrorReason string + +const ( + // FieldValueRequired is used to report required values that are not + // provided (e.g. empty strings, null values, or empty arrays). + FieldValueRequired FieldValueErrorReason = "FieldValueRequired" + // FieldValueDuplicate is used to report collisions of values that must be + // unique (e.g. unique IDs). + FieldValueDuplicate FieldValueErrorReason = "FieldValueDuplicate" + // FieldValueInvalid is used to report malformed values (e.g. failed regex + // match, too long, out of bounds). + FieldValueInvalid FieldValueErrorReason = "FieldValueInvalid" + // FieldValueForbidden is used to report valid (as per formatting rules) + // values which would be accepted under some conditions, but which are not + // permitted by the current conditions (such as security policy). + FieldValueForbidden FieldValueErrorReason = "FieldValueForbidden" ) // JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). @@ -255,9 +271,9 @@ type ValidationRule struct { // The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. // The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate". // If not set, default to use "FieldValueInvalid". - // All future added reasons must be accepted by clients when reading this value. + // All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. // +optional - Reason *field.ErrorType `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` + Reason *FieldValueErrorReason `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` // fieldPath represents the field path returned when the validation fails. // It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field. // e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo` diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go index 29840965f94..65c023f06ad 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go @@ -28,7 +28,6 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" - field "k8s.io/apimachinery/pkg/util/validation/field" ) func init() { @@ -1308,7 +1307,7 @@ func autoConvert_v1beta1_ValidationRule_To_apiextensions_ValidationRule(in *Vali out.Rule = in.Rule out.Message = in.Message out.MessageExpression = in.MessageExpression - out.Reason = (*field.ErrorType)(unsafe.Pointer(in.Reason)) + out.Reason = (*apiextensions.FieldValueErrorReason)(unsafe.Pointer(in.Reason)) out.FieldPath = in.FieldPath return nil } @@ -1322,7 +1321,7 @@ func autoConvert_apiextensions_ValidationRule_To_v1beta1_ValidationRule(in *apie out.Rule = in.Rule out.Message = in.Message out.MessageExpression = in.MessageExpression - out.Reason = (*field.ErrorType)(unsafe.Pointer(in.Reason)) + out.Reason = (*FieldValueErrorReason)(unsafe.Pointer(in.Reason)) out.FieldPath = in.FieldPath return nil } diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go index fc868e87d2d..9eeef6ca460 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.deepcopy.go @@ -23,7 +23,6 @@ package v1beta1 import ( runtime "k8s.io/apimachinery/pkg/runtime" - field "k8s.io/apimachinery/pkg/util/validation/field" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -642,7 +641,7 @@ func (in *ValidationRule) DeepCopyInto(out *ValidationRule) { *out = *in if in.Reason != nil { in, out := &in.Reason, &out.Reason - *out = new(field.ErrorType) + *out = new(FieldValueErrorReason) **out = **in } return diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go index d804b9b87fb..d9d9fd8a7cc 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go @@ -63,10 +63,10 @@ const ( ) var supportedValidationReason = sets.NewString( - string(field.ErrorTypeInvalid), - string(field.ErrorTypeForbidden), - string(field.ErrorTypeRequired), - string(field.ErrorTypeDuplicate), + string(apiextensions.FieldValueRequired), + string(apiextensions.FieldValueForbidden), + string(apiextensions.FieldValueInvalid), + string(apiextensions.FieldValueDuplicate), ) // ValidateCustomResourceDefinition statically validates diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation_test.go index 13b328a3c7c..e074195fc3a 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation_test.go @@ -4090,8 +4090,8 @@ func TestValidateCustomResourceDefinition(t *testing.T) { XValidations: apiextensions.ValidationRules{ { Rule: "self.a > 0", - Reason: func() *field.ErrorType { - r := field.ErrorTypeInternal + Reason: func() *apiextensions.FieldValueErrorReason { + r := apiextensions.FieldValueErrorReason("InternalError") return &r }(), FieldPath: ".a", @@ -4100,6 +4100,36 @@ func TestValidateCustomResourceDefinition(t *testing.T) { Properties: map[string]apiextensions.JSONSchemaProps{ "a": { Type: "number", + XValidations: apiextensions.ValidationRules{ + { + Rule: "true", + Reason: func() *apiextensions.FieldValueErrorReason { + r := apiextensions.FieldValueRequired + return &r + }(), + }, + { + Rule: "true", + Reason: func() *apiextensions.FieldValueErrorReason { + r := apiextensions.FieldValueInvalid + return &r + }(), + }, + { + Rule: "true", + Reason: func() *apiextensions.FieldValueErrorReason { + r := apiextensions.FieldValueDuplicate + return &r + }(), + }, + { + Rule: "true", + Reason: func() *apiextensions.FieldValueErrorReason { + r := apiextensions.FieldValueForbidden + return &r + }(), + }, + }, }, }, }, diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go index 7599b8b3556..f8a5ffbfbb0 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/zz_generated.deepcopy.go @@ -23,7 +23,6 @@ package apiextensions import ( runtime "k8s.io/apimachinery/pkg/runtime" - field "k8s.io/apimachinery/pkg/util/validation/field" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -534,7 +533,7 @@ func (in *ValidationRule) DeepCopyInto(out *ValidationRule) { *out = *in if in.Reason != nil { in, out := &in.Reason, &out.Reason - *out = new(field.ErrorType) + *out = new(FieldValueErrorReason) **out = **in } return diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/cel/validation.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/cel/validation.go index 60e0de8ac90..3f3905bf8a8 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/cel/validation.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/cel/validation.go @@ -436,16 +436,16 @@ func ValidFieldPath(jsonPath string, schema *schema.Structural) (validFieldPath return validFieldPath, nil } -func fieldErrorForReason(fldPath *field.Path, value interface{}, detail string, reason *field.ErrorType) *field.Error { +func fieldErrorForReason(fldPath *field.Path, value interface{}, detail string, reason *apiextensions.FieldValueErrorReason) *field.Error { if reason == nil { return field.Invalid(fldPath, value, detail) } switch *reason { - case field.ErrorTypeForbidden: + case apiextensions.FieldValueForbidden: return field.Forbidden(fldPath, detail) - case field.ErrorTypeRequired: + case apiextensions.FieldValueRequired: return field.Required(fldPath, detail) - case field.ErrorTypeDuplicate: + case apiextensions.FieldValueDuplicate: return field.Duplicate(fldPath, value) default: return field.Invalid(fldPath, value, detail) diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/cel/validation_test.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/cel/validation_test.go index 2ea8d38dbcf..6a63a64ce16 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/cel/validation_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/schema/cel/validation_test.go @@ -2592,8 +2592,8 @@ func TestMessageExpression(t *testing.T) { } func TestReasonAndFldPath(t *testing.T) { - forbiddenReason := func() *field.ErrorType { - r := field.ErrorTypeForbidden + forbiddenReason := func() *apiextensions.FieldValueErrorReason { + r := apiextensions.FieldValueForbidden return &r }() tests := []struct { @@ -3313,7 +3313,7 @@ func withRuleMessageAndMessageExpression(s schema.Structural, rule, message, mes return s } -func withReasonAndFldPath(s schema.Structural, rule, jsonPath string, reason *field.ErrorType) schema.Structural { +func withReasonAndFldPath(s schema.Structural, rule, jsonPath string, reason *apiextensions.FieldValueErrorReason) schema.Structural { s.Extensions.XValidations = apiextensions.ValidationRules{ { Rule: rule, diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/generated/openapi/zz_generated.openapi.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/generated/openapi/zz_generated.openapi.go index 39dd5b9c1ce..d6378df7ac3 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/generated/openapi/zz_generated.openapi.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/generated/openapi/zz_generated.openapi.go @@ -2360,9 +2360,10 @@ func schema_pkg_apis_apiextensions_v1_ValidationRule(ref common.ReferenceCallbac }, "reason": { SchemaProps: spec.SchemaProps{ - Description: "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value.", + Description: "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.\n\nPossible enum values:\n - `\"FieldValueDuplicate\"` is used to report collisions of values that must be unique (e.g. unique IDs).\n - `\"FieldValueForbidden\"` is used to report valid (as per formatting rules) values which would be accepted under some conditions, but which are not permitted by the current conditions (such as security policy).\n - `\"FieldValueInvalid\"` is used to report malformed values (e.g. failed regex match, too long, out of bounds).\n - `\"FieldValueRequired\"` is used to report required values that are not provided (e.g. empty strings, null values, or empty arrays).", Type: []string{"string"}, Format: "", + Enum: []interface{}{"FieldValueDuplicate", "FieldValueForbidden", "FieldValueInvalid", "FieldValueRequired"}, }, }, "fieldPath": { @@ -3772,9 +3773,10 @@ func schema_pkg_apis_apiextensions_v1beta1_ValidationRule(ref common.ReferenceCa }, "reason": { SchemaProps: spec.SchemaProps{ - Description: "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value.", + Description: "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\". If not set, default to use \"FieldValueInvalid\". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid.\n\nPossible enum values:\n - `\"FieldValueDuplicate\"` is used to report collisions of values that must be unique (e.g. unique IDs).\n - `\"FieldValueForbidden\"` is used to report valid (as per formatting rules) values which would be accepted under some conditions, but which are not permitted by the current conditions (such as security policy).\n - `\"FieldValueInvalid\"` is used to report malformed values (e.g. failed regex match, too long, out of bounds).\n - `\"FieldValueRequired\"` is used to report required values that are not provided (e.g. empty strings, null values, or empty arrays).", Type: []string{"string"}, Format: "", + Enum: []interface{}{"FieldValueDuplicate", "FieldValueForbidden", "FieldValueInvalid", "FieldValueRequired"}, }, }, "fieldPath": {