diff --git a/buf.lock b/buf.lock index 63ca731..362b4eb 100644 --- a/buf.lock +++ b/buf.lock @@ -1,23 +1,23 @@ # Generated by buf. DO NOT EDIT. version: v1 deps: + - remote: buf.build + owner: bufbuild + repository: protovalidate + commit: e097f827e65240ac9fd4b1158849a8fc + digest: shake256:f19252436fd9ded945631e2ffaaed28247a92c9015ccf55ae99db9fb3d9600c4fdb00fd2d3bd7701026ec2fd4715c5129e6ae517c25a59ba690020cfe80bf8ad - remote: buf.build owner: cerbos repository: cerbos-api - commit: 3a968f3781184293af7de5bfadfc538d - digest: shake256:2a0e3424cd2e3faa529fe6c087a2a9434a4f863f33a6ec3847baaf9b96de75c009c6b147de519c7e407db8ad742569008cb2e7116281f04682922dbfe4ca95c1 - - remote: buf.build - owner: envoyproxy - repository: protoc-gen-validate - commit: 6607b10f00ed4a3d98f906807131c44a - digest: shake256:acc7b2ededb2f88d296862943a003b157bdb68ec93ed13dcd8566b2d06e47993ea6daf12013b9655658aaf6bbdb141cf65bfe400ce2870f4654b0a5b45e57c09 + commit: f68054407be34c5f9de72b58253186b2 + digest: shake256:34807b5aa37ddd25985d781c0ff91f4e6c130eb265d84f785f2e23185660a8192cb7107fad21c1bc51ed92b04ab59ce1ef036ea459d058de01a1907f4ce6aec3 - remote: buf.build owner: googleapis repository: googleapis - commit: cc916c31859748a68fd229a3c8d7a2e8 - digest: shake256:469b049d0eb04203d5272062636c078decefc96fec69739159c25d85349c50c34c7706918a8b216c5c27f76939df48452148cff8c5c3ae77fa6ba5c25c1b8bf8 + commit: b30c5775bfb3485d9da2e87b26590ac9 + digest: shake256:9d0caaf056949a0e1c883b9849d8a2fa66e22f18a2a48f867d1a8c700aa22abee50ad3ef0d8171637457cadc43c584998bdf3adac55da0f9e4614c72686b057d - remote: buf.build owner: grpc-ecosystem repository: grpc-gateway - commit: 11c9972ea0fd4c95a2c38d29bb1dc817 - digest: shake256:9c7ce822dff52ad28714465396fbe98e879409677a61687b7dd9bb3d1484aa5d1704c013698b24f34c5d51023dbff47287ecd9676271953c25e646b42ebb76c5 + commit: 3f42134f4c564983838425bc43c7a65f + digest: shake256:3d11d4c0fe5e05fda0131afefbce233940e27f0c31c5d4e385686aea58ccd30f72053f61af432fa83f1fc11cda57f5f18ca3da26a29064f73c5a0d076bba8d92 diff --git a/proto/buf/validate/expression.proto b/proto/buf/validate/expression.proto new file mode 100644 index 0000000..72ce36d --- /dev/null +++ b/proto/buf/validate/expression.proto @@ -0,0 +1,92 @@ +// Copyright 2023 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package buf.validate; + +option go_package = "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"; +option java_multiple_files = true; +option java_outer_classname = "ExpressionProto"; +option java_package = "build.buf.validate"; + +// `Constraint` represents a validation rule written in the Common Expression +// Language (CEL) syntax. Each Constraint includes a unique identifier, an +// optional error message, and the CEL expression to evaluate. For more +// information on CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md). +// +// ```proto +// message Foo { +// option (buf.validate.message).cel = { +// id: "foo.bar" +// message: "bar must be greater than 0" +// expression: "this.bar > 0" +// }; +// int32 bar = 1; +// } +// ``` +message Constraint { + // `id` is a string that serves as a machine-readable name for this Constraint. + // It should be unique within its scope, which could be either a message or a field. + string id = 1; + + // `message` is an optional field that provides a human-readable error message + // for this Constraint when the CEL expression evaluates to false. If a + // non-empty message is provided, any strings resulting from the CEL + // expression evaluation are ignored. + string message = 2; + + // `expression` is the actual CEL expression that will be evaluated for + // validation. This string must resolve to either a boolean or a string + // value. If the expression evaluates to false or a non-empty string, the + // validation is considered failed, and the message is rejected. + string expression = 3; +} + +// `Violations` is a collection of `Violation` messages. This message type is returned by +// protovalidate when a proto message fails to meet the requirements set by the `Constraint` validation rules. +// Each individual violation is represented by a `Violation` message. +message Violations { + // `violations` is a repeated field that contains all the `Violation` messages corresponding to the violations detected. + repeated Violation violations = 1; +} + +// `Violation` represents a single instance where a validation rule, expressed +// as a `Constraint`, was not met. It provides information about the field that +// caused the violation, the specific constraint that wasn't fulfilled, and a +// human-readable error message. +// +// ```json +// { +// "fieldPath": "bar", +// "constraintId": "foo.bar", +// "message": "bar must be greater than 0" +// } +// ``` +message Violation { + // `field_path` is a machine-readable identifier that points to the specific field that failed the validation. + // This could be a nested field, in which case the path will include all the parent fields leading to the actual field that caused the violation. + string field_path = 1; + + // `constraint_id` is the unique identifier of the `Constraint` that was not fulfilled. + // This is the same `id` that was specified in the `Constraint` message, allowing easy tracing of which rule was violated. + string constraint_id = 2; + + // `message` is a human-readable error message that describes the nature of the violation. + // This can be the default error message from the violated `Constraint`, or it can be a custom message that gives more context about the violation. + string message = 3; + + // `for_key` indicates whether the violation was caused by a map key, rather than a value. + bool for_key = 4; +} diff --git a/proto/buf/validate/priv/private.proto b/proto/buf/validate/priv/private.proto new file mode 100644 index 0000000..ddaf938 --- /dev/null +++ b/proto/buf/validate/priv/private.proto @@ -0,0 +1,41 @@ +// Copyright 2023 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package buf.validate.priv; + +import "google/protobuf/descriptor.proto"; + +option go_package = "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate/priv"; +option java_multiple_files = true; +option java_outer_classname = "PrivateProto"; +option java_package = "build.buf.validate.priv"; + +extend google.protobuf.FieldOptions { + // Do not use. Internal to protovalidate library + optional FieldConstraints field = 1160; +} + +// Do not use. Internal to protovalidate library +message FieldConstraints { + repeated Constraint cel = 1; +} + +// Do not use. Internal to protovalidate library +message Constraint { + string id = 1; + string message = 2; + string expression = 3; +} diff --git a/proto/buf/validate/validate.proto b/proto/buf/validate/validate.proto new file mode 100644 index 0000000..6d11ea6 --- /dev/null +++ b/proto/buf/validate/validate.proto @@ -0,0 +1,3812 @@ +// Copyright 2023 Buf Technologies, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package buf.validate; + +import "buf/validate/expression.proto"; +import "buf/validate/priv/private.proto"; +import "google/protobuf/descriptor.proto"; +import "google/protobuf/duration.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"; +option java_multiple_files = true; +option java_outer_classname = "ValidateProto"; +option java_package = "build.buf.validate"; + +// MessageOptions is an extension to google.protobuf.MessageOptions. It allows +// the addition of validation rules at the message level. These rules can be +// applied to incoming messages to ensure they meet certain criteria before +// being processed. +extend google.protobuf.MessageOptions { + // Rules specify the validations to be performed on this message. By default, + // no validation is performed against a message. + optional MessageConstraints message = 1159; +} + +// OneofOptions is an extension to google.protobuf.OneofOptions. It allows +// the addition of validation rules on a oneof. These rules can be +// applied to incoming messages to ensure they meet certain criteria before +// being processed. +extend google.protobuf.OneofOptions { + // Rules specify the validations to be performed on this oneof. By default, + // no validation is performed against a oneof. + optional OneofConstraints oneof = 1159; +} + +// FieldOptions is an extension to google.protobuf.FieldOptions. It allows +// the addition of validation rules at the field level. These rules can be +// applied to incoming messages to ensure they meet certain criteria before +// being processed. +extend google.protobuf.FieldOptions { + // Rules specify the validations to be performed on this field. By default, + // no validation is performed against a field. + optional FieldConstraints field = 1159; +} + +// MessageConstraints represents validation rules that are applied to the entire message. +// It includes disabling options and a list of Constraint messages representing Common Expression Language (CEL) validation rules. +message MessageConstraints { + // `disabled` is a boolean flag that, when set to true, nullifies any validation rules for this message. + // This includes any fields within the message that would otherwise support validation. + // + // ```proto + // message MyMessage { + // // validation will be bypassed for this message + // option (buf.validate.message).disabled = true; + // } + // ``` + optional bool disabled = 1; + + // `cel` is a repeated field of type Constraint. Each Constraint specifies a validation rule to be applied to this message. + // These constraints are written in Common Expression Language (CEL) syntax. For more information on + // CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md). + // + // + // ```proto + // message MyMessage { + // // The field `foo` must be greater than 42. + // option (buf.validate.message).cel = { + // id: "my_message.value", + // message: "value must be greater than 42", + // expression: "this.foo > 42", + // }; + // optional int32 foo = 1; + // } + // ``` + repeated Constraint cel = 3; +} + +// The `OneofConstraints` message type enables you to manage constraints for +// oneof fields in your protobuf messages. +message OneofConstraints { + // If `required` is true, exactly one field of the oneof must be present. A + // validation error is returned if no fields in the oneof are present. The + // field itself may still be a default value; further constraints + // should be placed on the fields themselves to ensure they are valid values, + // such as `min_len` or `gt`. + // + // ```proto + // message MyMessage { + // oneof value { + // // Either `a` or `b` must be set. If `a` is set, it must also be + // // non-empty; whereas if `b` is set, it can still be an empty string. + // option (buf.validate.oneof).required = true; + // string a = 1 [(buf.validate.field).string.min_len = 1]; + // string b = 2; + // } + // } + // ``` + optional bool required = 1; +} + +// FieldRules encapsulates the rules for each type of field. Depending on the +// field, the correct set should be used to ensure proper validations. +message FieldConstraints { + // `cel` is a repeated field used to represent a textual expression + // in the Common Expression Language (CEL) syntax. For more information on + // CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md). + // + // ```proto + // message MyMessage { + // // The field `value` must be greater than 42. + // optional int32 value = 1 [(buf.validate.field).cel = { + // id: "my_message.value", + // message: "value must be greater than 42", + // expression: "this > 42", + // }]; + // } + // ``` + repeated Constraint cel = 23; + // `skipped` is an optional boolean attribute that specifies that the + // validation rules of this field should not be evaluated. If skipped is set to + // true, any validation rules set for the field will be ignored. + // + // ```proto + // message MyMessage { + // // The field `value` must not be set. + // optional MyOtherMessage value = 1 [(buf.validate.field).skipped = true]; + // } + // ``` + bool skipped = 24; + // If `required` is true, the field must be populated. Field presence can be + // described as "serialized in the wire format," which follows the following rules: + // + // - the following "nullable" fields must be explicitly set to be considered present: + // - singular message fields (may be their empty value) + // - member fields of a oneof (may be their default value) + // - proto3 optional fields (may be their default value) + // - proto2 scalar fields + // - proto3 scalar fields must be non-zero to be considered present + // - repeated and map fields must be non-empty to be considered present + // + // ```proto + // message MyMessage { + // // The field `value` must be set to a non-null value. + // optional MyOtherMessage value = 1 [(buf.validate.field).required = true]; + // } + // ``` + bool required = 25; + // If `ignore_empty` is true and applied to a non-nullable field (see + // `required` for more details), validation is skipped on the field if it is + // the default or empty value. Adding `ignore_empty` to a "nullable" field is + // a noop as these unset fields already skip validation (with the exception + // of `required`). + // + // ```proto + // message MyRepeated { + // // The field `value` min_len rule is only applied if the field isn't empty. + // repeated string value = 1 [ + // (buf.validate.field).ignore_empty = true, + // (buf.validate.field).min_len = 5 + // ]; + // } + // ``` + bool ignore_empty = 26; + oneof type { + // Scalar Field Types + FloatRules float = 1; + DoubleRules double = 2; + Int32Rules int32 = 3; + Int64Rules int64 = 4; + UInt32Rules uint32 = 5; + UInt64Rules uint64 = 6; + SInt32Rules sint32 = 7; + SInt64Rules sint64 = 8; + Fixed32Rules fixed32 = 9; + Fixed64Rules fixed64 = 10; + SFixed32Rules sfixed32 = 11; + SFixed64Rules sfixed64 = 12; + BoolRules bool = 13; + StringRules string = 14; + BytesRules bytes = 15; + + // Complex Field Types + EnumRules enum = 16; + RepeatedRules repeated = 18; + MapRules map = 19; + + // Well-Known Field Types + AnyRules any = 20; + DurationRules duration = 21; + TimestampRules timestamp = 22; + } +} + +// FloatRules describes the constraints applied to `float` values. These +// rules may also be applied to the `google.protobuf.FloatValue` Well-Known-Type. +message FloatRules { + // `const` requires the field value to exactly match the specified value. If + // the field value doesn't match, an error message is generated. + // + // ```proto + // message MyFloat { + // // value must equal 42.0 + // float value = 1 [(buf.validate.field).float.const = 42.0]; + // } + // ``` + optional float const = 1 [(priv.field).cel = { + id: "float.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + + oneof less_than { + // `lt` requires the field value to be less than the specified value (field < + // value). If the field value is equal to or greater than the specified value, + // an error message is generated. + // + // ```proto + // message MyFloat { + // // value must be less than 10.0 + // float value = 1 [(buf.validate.field).float.lt = 10.0]; + // } + // ``` + float lt = 2 [(priv.field).cel = { + id: "float.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` requires the field value to be less than or equal to the specified + // value (field <= value). If the field value is greater than the specified + // value, an error message is generated. + // + // ```proto + // message MyFloat { + // // value must be less than or equal to 10.0 + // float value = 1 [(buf.validate.field).float.lte = 10.0]; + // } + // ``` + float lte = 3 [(priv.field).cel = { + id: "float.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + + oneof greater_than { + // `gt` requires the field value to be greater than the specified value + // (exclusive). If the value of `gt` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyFloat { + // // value must be greater than 5.0 [float.gt] + // float value = 1 [(buf.validate.field).float.gt = 5.0]; + // + // // value must be greater than 5 and less than 10.0 [float.gt_lt] + // float other_value = 2 [(buf.validate.field).float = { gt: 5.0, lt: 10.0 }]; + // + // // value must be greater than 10 or less than 5.0 [float.gt_lt_exclusive] + // float another_value = 3 [(buf.validate.field).float = { gt: 10.0, lt: 5.0 }]; + // } + // ``` + float gt = 4 [ + (priv.field).cel = { + id: "float.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "float.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this.isNan() || this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "float.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (this.isNan() || (rules.lt <= this && this <= rules.gt))" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "float.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this.isNan() || this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "float.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (this.isNan() || (rules.lte < this && this <= rules.gt))" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the field value to be greater than or equal to the specified + // value (exclusive). If the value of `gte` is larger than a specified `lt` + // or `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyFloat { + // // value must be greater than or equal to 5.0 [float.gte] + // float value = 1 [(buf.validate.field).float.gte = 5.0]; + // + // // value must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt] + // float other_value = 2 [(buf.validate.field).float = { gte: 5.0, lt: 10.0 }]; + // + // // value must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive] + // float another_value = 3 [(buf.validate.field).float = { gte: 10.0, lt: 5.0 }]; + // } + // ``` + float gte = 5 [ + (priv.field).cel = { + id: "float.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "float.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this.isNan() || this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "float.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (this.isNan() || (rules.lt <= this && this < rules.gte))" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "float.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this.isNan() || this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "float.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (this.isNan() || (rules.lte < this && this < rules.gte))" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + + // `in` requires the field value to be equal to one of the specified values. + // If the field value isn't one of the specified values, an error message + // is generated. + // + // ```proto + // message MyFloat { + // // value must be in list [1.0, 2.0, 3.0] + // repeated float value = 1 (buf.validate.field).float = { in: [1.0, 2.0, 3.0] }; + // } + // ``` + repeated float in = 6 [(priv.field).cel = { + id: "float.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `in` requires the field value to not be equal to any of the specified + // values. If the field value is one of the specified values, an error + // message is generated. + // + // ```proto + // message MyFloat { + // // value must not be in list [1.0, 2.0, 3.0] + // repeated float value = 1 (buf.validate.field).float = { not_in: [1.0, 2.0, 3.0] }; + // } + // ``` + repeated float not_in = 7 [(priv.field).cel = { + id: "float.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; + + // `finite` requires the field value to be finite. If the field value is + // infinite or NaN, an error message is generated. + bool finite = 8 [(priv.field).cel = { + id: "float.finite", + expression: "this.isNan() || this.isInf() ? 'value must be finite' : ''", + }]; +} + +// DoubleRules describes the constraints applied to `double` values. These +// rules may also be applied to the `google.protobuf.DoubleValue` Well-Known-Type. +message DoubleRules { + // `const` requires the field value to exactly match the specified value. If + // the field value doesn't match, an error message is generated. + // + // ```proto + // message MyDouble { + // // value must equal 42.0 + // double value = 1 [(buf.validate.field).double.const = 42.0]; + // } + // ``` + optional double const = 1 [(priv.field).cel = { + id: "double.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // `lt` requires the field value to be less than the specified value (field < + // value). If the field value is equal to or greater than the specified + // value, an error message is generated. + // + // ```proto + // message MyDouble { + // // value must be less than 10.0 + // double value = 1 [(buf.validate.field).double.lt = 10.0]; + // } + // ``` + double lt = 2 [(priv.field).cel = { + id: "double.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && (this.isNan() || this >= rules.lt)" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` requires the field value to be less than or equal to the specified value + // (field <= value). If the field value is greater than the specified value, + // an error message is generated. + // + // ```proto + // message MyDouble { + // // value must be less than or equal to 10.0 + // double value = 1 [(buf.validate.field).double.lte = 10.0]; + // } + // ``` + double lte = 3 [(priv.field).cel = { + id: "double.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && (this.isNan() || this > rules.lte)" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + oneof greater_than { + // `gt` requires the field value to be greater than the specified value + // (exclusive). If the value of `gt` is larger than a specified `lt` or `lte`, + // the range is reversed, and the field value must be outside the specified + // range. If the field value doesn't meet the required conditions, an error + // message is generated. + // + // ```proto + // message MyDouble { + // // value must be greater than 5.0 [double.gt] + // double value = 1 [(buf.validate.field).double.gt = 5.0]; + // + // // value must be greater than 5 and less than 10.0 [double.gt_lt] + // double other_value = 2 [(buf.validate.field).double = { gt: 5.0, lt: 10.0 }]; + // + // // value must be greater than 10 or less than 5.0 [double.gt_lt_exclusive] + // double another_value = 3 [(buf.validate.field).double = { gt: 10.0, lt: 5.0 }]; + // } + // ``` + double gt = 4 [ + (priv.field).cel = { + id: "double.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && (this.isNan() || this <= rules.gt)" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "double.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this.isNan() || this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "double.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (this.isNan() || (rules.lt <= this && this <= rules.gt))" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "double.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this.isNan() || this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "double.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (this.isNan() || (rules.lte < this && this <= rules.gt))" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the field value to be greater than or equal to the specified + // value (exclusive). If the value of `gte` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyDouble { + // // value must be greater than or equal to 5.0 [double.gte] + // double value = 1 [(buf.validate.field).double.gte = 5.0]; + // + // // value must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt] + // double other_value = 2 [(buf.validate.field).double = { gte: 5.0, lt: 10.0 }]; + // + // // value must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive] + // double another_value = 3 [(buf.validate.field).double = { gte: 10.0, lt: 5.0 }]; + // } + // ``` + double gte = 5 [ + (priv.field).cel = { + id: "double.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && (this.isNan() || this < rules.gte)" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "double.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this.isNan() || this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "double.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (this.isNan() || (rules.lt <= this && this < rules.gte))" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "double.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this.isNan() || this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "double.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (this.isNan() || (rules.lte < this && this < rules.gte))" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + // `in` requires the field value to be equal to one of the specified values. + // If the field value isn't one of the specified values, an error message is + // generated. + // + // ```proto + // message MyDouble { + // // value must be in list [1.0, 2.0, 3.0] + // repeated double value = 1 (buf.validate.field).double = { in: [1.0, 2.0, 3.0] }; + // } + // ``` + repeated double in = 6 [(priv.field).cel = { + id: "double.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` requires the field value to not be equal to any of the specified + // values. If the field value is one of the specified values, an error + // message is generated. + // + // ```proto + // message MyDouble { + // // value must not be in list [1.0, 2.0, 3.0] + // repeated double value = 1 (buf.validate.field).double = { not_in: [1.0, 2.0, 3.0] }; + // } + // ``` + repeated double not_in = 7 [(priv.field).cel = { + id: "double.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; + + // `finite` requires the field value to be finite. If the field value is + // infinite or NaN, an error message is generated. + bool finite = 8 [(priv.field).cel = { + id: "double.finite", + expression: "this.isNan() || this.isInf() ? 'value must be finite' : ''", + }]; +} + +// Int32Rules describes the constraints applied to `int32` values. These +// rules may also be applied to the `google.protobuf.Int32Value` Well-Known-Type. +message Int32Rules { + // `const` requires the field value to exactly match the specified value. If + // the field value doesn't match, an error message is generated. + // + // ```proto + // message MyInt32 { + // // value must equal 42 + // int32 value = 1 [(buf.validate.field).int32.const = 42]; + // } + // ``` + optional int32 const = 1 [(priv.field).cel = { + id: "int32.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // `lt` requires the field value to be less than the specified value (field + // < value). If the field value is equal to or greater than the specified + // value, an error message is generated. + // + // ```proto + // message MyInt32 { + // // value must be less than 10 + // int32 value = 1 [(buf.validate.field).int32.lt = 10]; + // } + // ``` + int32 lt = 2 [(priv.field).cel = { + id: "int32.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` requires the field value to be less than or equal to the specified + // value (field <= value). If the field value is greater than the specified + // value, an error message is generated. + // + // ```proto + // message MyInt32 { + // // value must be less than or equal to 10 + // int32 value = 1 [(buf.validate.field).int32.lte = 10]; + // } + // ``` + int32 lte = 3 [(priv.field).cel = { + id: "int32.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && this > rules.lte" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + oneof greater_than { + // `gt` requires the field value to be greater than the specified value + // (exclusive). If the value of `gt` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyInt32 { + // // value must be greater than 5 [int32.gt] + // int32 value = 1 [(buf.validate.field).int32.gt = 5]; + // + // // value must be greater than 5 and less than 10 [int32.gt_lt] + // int32 other_value = 2 [(buf.validate.field).int32 = { gt: 5, lt: 10 }]; + // + // // value must be greater than 10 or less than 5 [int32.gt_lt_exclusive] + // int32 another_value = 3 [(buf.validate.field).int32 = { gt: 10, lt: 5 }]; + // } + // ``` + int32 gt = 4 [ + (priv.field).cel = { + id: "int32.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "int32.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "int32.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "int32.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "int32.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the field value to be greater than or equal to the specified value + // (exclusive). If the value of `gte` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyInt32 { + // // value must be greater than or equal to 5 [int32.gte] + // int32 value = 1 [(buf.validate.field).int32.gte = 5]; + // + // // value must be greater than or equal to 5 and less than 10 [int32.gte_lt] + // int32 other_value = 2 [(buf.validate.field).int32 = { gte: 5, lt: 10 }]; + // + // // value must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive] + // int32 another_value = 3 [(buf.validate.field).int32 = { gte: 10, lt: 5 }]; + // } + // ``` + int32 gte = 5 [ + (priv.field).cel = { + id: "int32.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && this < rules.gte" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "int32.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "int32.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "int32.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "int32.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + + // `in` requires the field value to be equal to one of the specified values. + // If the field value isn't one of the specified values, an error message is + // generated. + // + // ```proto + // message MyInt32 { + // // value must be in list [1, 2, 3] + // repeated int32 value = 1 (buf.validate.field).int32 = { in: [1, 2, 3] }; + // } + // ``` + repeated int32 in = 6 [(priv.field).cel = { + id: "int32.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` requires the field value to not be equal to any of the specified + // values. If the field value is one of the specified values, an error message + // is generated. + // + // ```proto + // message MyInt32 { + // // value must not be in list [1, 2, 3] + // repeated int32 value = 1 (buf.validate.field).int32 = { not_in: [1, 2, 3] }; + // } + // ``` + repeated int32 not_in = 7 [(priv.field).cel = { + id: "int32.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; +} + +// Int64Rules describes the constraints applied to `int64` values. These +// rules may also be applied to the `google.protobuf.Int64Value` Well-Known-Type. +message Int64Rules { + // `const` requires the field value to exactly match the specified value. If + // the field value doesn't match, an error message is generated. + // + // ```proto + // message MyInt64 { + // // value must equal 42 + // int64 value = 1 [(buf.validate.field).int64.const = 42]; + // } + // ``` + optional int64 const = 1 [(priv.field).cel = { + id: "int64.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // `lt` requires the field value to be less than the specified value (field < + // value). If the field value is equal to or greater than the specified value, + // an error message is generated. + // + // ```proto + // message MyInt64 { + // // value must be less than 10 + // int64 value = 1 [(buf.validate.field).int64.lt = 10]; + // } + // ``` + int64 lt = 2 [(priv.field).cel = { + id: "int64.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` requires the field value to be less than or equal to the specified + // value (field <= value). If the field value is greater than the specified + // value, an error message is generated. + // + // ```proto + // message MyInt64 { + // // value must be less than or equal to 10 + // int64 value = 1 [(buf.validate.field).int64.lte = 10]; + // } + // ``` + int64 lte = 3 [(priv.field).cel = { + id: "int64.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && this > rules.lte" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + oneof greater_than { + // `gt` requires the field value to be greater than the specified value + // (exclusive). If the value of `gt` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyInt64 { + // // value must be greater than 5 [int64.gt] + // int64 value = 1 [(buf.validate.field).int64.gt = 5]; + // + // // value must be greater than 5 and less than 10 [int64.gt_lt] + // int64 other_value = 2 [(buf.validate.field).int64 = { gt: 5, lt: 10 }]; + // + // // value must be greater than 10 or less than 5 [int64.gt_lt_exclusive] + // int64 another_value = 3 [(buf.validate.field).int64 = { gt: 10, lt: 5 }]; + // } + // ``` + int64 gt = 4 [ + (priv.field).cel = { + id: "int64.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "int64.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "int64.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "int64.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "int64.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the field value to be greater than or equal to the specified + // value (exclusive). If the value of `gte` is larger than a specified `lt` + // or `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyInt64 { + // // value must be greater than or equal to 5 [int64.gte] + // int64 value = 1 [(buf.validate.field).int64.gte = 5]; + // + // // value must be greater than or equal to 5 and less than 10 [int64.gte_lt] + // int64 other_value = 2 [(buf.validate.field).int64 = { gte: 5, lt: 10 }]; + // + // // value must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive] + // int64 another_value = 3 [(buf.validate.field).int64 = { gte: 10, lt: 5 }]; + // } + // ``` + int64 gte = 5 [ + (priv.field).cel = { + id: "int64.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && this < rules.gte" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "int64.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "int64.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "int64.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "int64.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + + // `in` requires the field value to be equal to one of the specified values. + // If the field value isn't one of the specified values, an error message is + // generated. + // + // ```proto + // message MyInt64 { + // // value must be in list [1, 2, 3] + // repeated int64 value = 1 (buf.validate.field).int64 = { in: [1, 2, 3] }; + // } + // ``` + repeated int64 in = 6 [(priv.field).cel = { + id: "int64.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` requires the field value to not be equal to any of the specified + // values. If the field value is one of the specified values, an error + // message is generated. + // + // ```proto + // message MyInt64 { + // // value must not be in list [1, 2, 3] + // repeated int64 value = 1 (buf.validate.field).int64 = { not_in: [1, 2, 3] }; + // } + // ``` + repeated int64 not_in = 7 [(priv.field).cel = { + id: "int64.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; +} + +// UInt32Rules describes the constraints applied to `uint32` values. These +// rules may also be applied to the `google.protobuf.UInt32Value` Well-Known-Type. +message UInt32Rules { + // `const` requires the field value to exactly match the specified value. If + // the field value doesn't match, an error message is generated. + // + // ```proto + // message MyUInt32 { + // // value must equal 42 + // uint32 value = 1 [(buf.validate.field).uint32.const = 42]; + // } + // ``` + optional uint32 const = 1 [(priv.field).cel = { + id: "uint32.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // `lt` requires the field value to be less than the specified value (field < + // value). If the field value is equal to or greater than the specified value, + // an error message is generated. + // + // ```proto + // message MyUInt32 { + // // value must be less than 10 + // uint32 value = 1 [(buf.validate.field).uint32.lt = 10]; + // } + // ``` + uint32 lt = 2 [(priv.field).cel = { + id: "uint32.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` requires the field value to be less than or equal to the specified + // value (field <= value). If the field value is greater than the specified + // value, an error message is generated. + // + // ```proto + // message MyUInt32 { + // // value must be less than or equal to 10 + // uint32 value = 1 [(buf.validate.field).uint32.lte = 10]; + // } + // ``` + uint32 lte = 3 [(priv.field).cel = { + id: "uint32.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && this > rules.lte" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + oneof greater_than { + // `gt` requires the field value to be greater than the specified value + // (exclusive). If the value of `gt` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyUInt32 { + // // value must be greater than 5 [uint32.gt] + // uint32 value = 1 [(buf.validate.field).uint32.gt = 5]; + // + // // value must be greater than 5 and less than 10 [uint32.gt_lt] + // uint32 other_value = 2 [(buf.validate.field).uint32 = { gt: 5, lt: 10 }]; + // + // // value must be greater than 10 or less than 5 [uint32.gt_lt_exclusive] + // uint32 another_value = 3 [(buf.validate.field).uint32 = { gt: 10, lt: 5 }]; + // } + // ``` + uint32 gt = 4 [ + (priv.field).cel = { + id: "uint32.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "uint32.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "uint32.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "uint32.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "uint32.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the field value to be greater than or equal to the specified + // value (exclusive). If the value of `gte` is larger than a specified `lt` + // or `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyUInt32 { + // // value must be greater than or equal to 5 [uint32.gte] + // uint32 value = 1 [(buf.validate.field).uint32.gte = 5]; + // + // // value must be greater than or equal to 5 and less than 10 [uint32.gte_lt] + // uint32 other_value = 2 [(buf.validate.field).uint32 = { gte: 5, lt: 10 }]; + // + // // value must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive] + // uint32 another_value = 3 [(buf.validate.field).uint32 = { gte: 10, lt: 5 }]; + // } + // ``` + uint32 gte = 5 [ + (priv.field).cel = { + id: "uint32.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && this < rules.gte" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "uint32.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "uint32.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "uint32.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "uint32.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + + // `in` requires the field value to be equal to one of the specified values. + // If the field value isn't one of the specified values, an error message is + // generated. + // + // ```proto + // message MyUInt32 { + // // value must be in list [1, 2, 3] + // repeated uint32 value = 1 (buf.validate.field).uint32 = { in: [1, 2, 3] }; + // } + // ``` + repeated uint32 in = 6 [(priv.field).cel = { + id: "uint32.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` requires the field value to not be equal to any of the specified + // values. If the field value is one of the specified values, an error + // message is generated. + // + // ```proto + // message MyUInt32 { + // // value must not be in list [1, 2, 3] + // repeated uint32 value = 1 (buf.validate.field).uint32 = { not_in: [1, 2, 3] }; + // } + // ``` + repeated uint32 not_in = 7 [(priv.field).cel = { + id: "uint32.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; +} + +// UInt64Rules describes the constraints applied to `uint64` values. These +// rules may also be applied to the `google.protobuf.UInt64Value` Well-Known-Type. +message UInt64Rules { + // `const` requires the field value to exactly match the specified value. If + // the field value doesn't match, an error message is generated. + // + // ```proto + // message MyUInt64 { + // // value must equal 42 + // uint64 value = 1 [(buf.validate.field).uint64.const = 42]; + // } + // ``` + optional uint64 const = 1 [(priv.field).cel = { + id: "uint64.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // `lt` requires the field value to be less than the specified value (field < + // value). If the field value is equal to or greater than the specified value, + // an error message is generated. + // + // ```proto + // message MyUInt64 { + // // value must be less than 10 + // uint64 value = 1 [(buf.validate.field).uint64.lt = 10]; + // } + // ``` + uint64 lt = 2 [(priv.field).cel = { + id: "uint64.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` requires the field value to be less than or equal to the specified + // value (field <= value). If the field value is greater than the specified + // value, an error message is generated. + // + // ```proto + // message MyUInt64 { + // // value must be less than or equal to 10 + // uint64 value = 1 [(buf.validate.field).uint64.lte = 10]; + // } + // ``` + uint64 lte = 3 [(priv.field).cel = { + id: "uint64.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && this > rules.lte" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + oneof greater_than { + // `gt` requires the field value to be greater than the specified value + // (exclusive). If the value of `gt` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyUInt64 { + // // value must be greater than 5 [uint64.gt] + // uint64 value = 1 [(buf.validate.field).uint64.gt = 5]; + // + // // value must be greater than 5 and less than 10 [uint64.gt_lt] + // uint64 other_value = 2 [(buf.validate.field).uint64 = { gt: 5, lt: 10 }]; + // + // // value must be greater than 10 or less than 5 [uint64.gt_lt_exclusive] + // uint64 another_value = 3 [(buf.validate.field).uint64 = { gt: 10, lt: 5 }]; + // } + // ``` + uint64 gt = 4 [ + (priv.field).cel = { + id: "uint64.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "uint64.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "uint64.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "uint64.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "uint64.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the field value to be greater than or equal to the specified + // value (exclusive). If the value of `gte` is larger than a specified `lt` + // or `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyUInt64 { + // // value must be greater than or equal to 5 [uint64.gte] + // uint64 value = 1 [(buf.validate.field).uint64.gte = 5]; + // + // // value must be greater than or equal to 5 and less than 10 [uint64.gte_lt] + // uint64 other_value = 2 [(buf.validate.field).uint64 = { gte: 5, lt: 10 }]; + // + // // value must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive] + // uint64 another_value = 3 [(buf.validate.field).uint64 = { gte: 10, lt: 5 }]; + // } + // ``` + uint64 gte = 5 [ + (priv.field).cel = { + id: "uint64.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && this < rules.gte" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "uint64.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "uint64.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "uint64.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "uint64.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + // `in` requires the field value to be equal to one of the specified values. + // If the field value isn't one of the specified values, an error message is + // generated. + // + // ```proto + // message MyUInt64 { + // // value must be in list [1, 2, 3] + // repeated uint64 value = 1 (buf.validate.field).uint64 = { in: [1, 2, 3] }; + // } + // ``` + repeated uint64 in = 6 [(priv.field).cel = { + id: "uint64.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` requires the field value to not be equal to any of the specified + // values. If the field value is one of the specified values, an error + // message is generated. + // + // ```proto + // message MyUInt64 { + // // value must not be in list [1, 2, 3] + // repeated uint64 value = 1 (buf.validate.field).uint64 = { not_in: [1, 2, 3] }; + // } + // ``` + repeated uint64 not_in = 7 [(priv.field).cel = { + id: "uint64.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; +} + +// SInt32Rules describes the constraints applied to `sint32` values. +message SInt32Rules { + // `const` requires the field value to exactly match the specified value. If + // the field value doesn't match, an error message is generated. + // + // ```proto + // message MySInt32 { + // // value must equal 42 + // sint32 value = 1 [(buf.validate.field).sint32.const = 42]; + // } + // ``` + optional sint32 const = 1 [(priv.field).cel = { + id: "sint32.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // `lt` requires the field value to be less than the specified value (field + // < value). If the field value is equal to or greater than the specified + // value, an error message is generated. + // + // ```proto + // message MySInt32 { + // // value must be less than 10 + // sint32 value = 1 [(buf.validate.field).sint32.lt = 10]; + // } + // ``` + sint32 lt = 2 [(priv.field).cel = { + id: "sint32.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` requires the field value to be less than or equal to the specified + // value (field <= value). If the field value is greater than the specified + // value, an error message is generated. + // + // ```proto + // message MySInt32 { + // // value must be less than or equal to 10 + // sint32 value = 1 [(buf.validate.field).sint32.lte = 10]; + // } + // ``` + sint32 lte = 3 [(priv.field).cel = { + id: "sint32.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && this > rules.lte" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + oneof greater_than { + // `gt` requires the field value to be greater than the specified value + // (exclusive). If the value of `gt` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MySInt32 { + // // value must be greater than 5 [sint32.gt] + // sint32 value = 1 [(buf.validate.field).sint32.gt = 5]; + // + // // value must be greater than 5 and less than 10 [sint32.gt_lt] + // sint32 other_value = 2 [(buf.validate.field).sint32 = { gt: 5, lt: 10 }]; + // + // // value must be greater than 10 or less than 5 [sint32.gt_lt_exclusive] + // sint32 another_value = 3 [(buf.validate.field).sint32 = { gt: 10, lt: 5 }]; + // } + // ``` + sint32 gt = 4 [ + (priv.field).cel = { + id: "sint32.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "sint32.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sint32.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sint32.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "sint32.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the field value to be greater than or equal to the specified + // value (exclusive). If the value of `gte` is larger than a specified `lt` + // or `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MySInt32 { + // // value must be greater than or equal to 5 [sint32.gte] + // sint32 value = 1 [(buf.validate.field).sint32.gte = 5]; + // + // // value must be greater than or equal to 5 and less than 10 [sint32.gte_lt] + // sint32 other_value = 2 [(buf.validate.field).sint32 = { gte: 5, lt: 10 }]; + // + // // value must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive] + // sint32 another_value = 3 [(buf.validate.field).sint32 = { gte: 10, lt: 5 }]; + // } + // ``` + sint32 gte = 5 [ + (priv.field).cel = { + id: "sint32.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && this < rules.gte" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "sint32.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sint32.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sint32.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "sint32.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + + // `in` requires the field value to be equal to one of the specified values. + // If the field value isn't one of the specified values, an error message is + // generated. + // + // ```proto + // message MySInt32 { + // // value must be in list [1, 2, 3] + // repeated sint32 value = 1 (buf.validate.field).sint32 = { in: [1, 2, 3] }; + // } + // ``` + repeated sint32 in = 6 [(priv.field).cel = { + id: "sint32.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` requires the field value to not be equal to any of the specified + // values. If the field value is one of the specified values, an error + // message is generated. + // + // ```proto + // message MySInt32 { + // // value must not be in list [1, 2, 3] + // repeated sint32 value = 1 (buf.validate.field).sint32 = { not_in: [1, 2, 3] }; + // } + // ``` + repeated sint32 not_in = 7 [(priv.field).cel = { + id: "sint32.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; +} + +// SInt64Rules describes the constraints applied to `sint64` values. +message SInt64Rules { + // `const` requires the field value to exactly match the specified value. If + // the field value doesn't match, an error message is generated. + // + // ```proto + // message MySInt64 { + // // value must equal 42 + // sint64 value = 1 [(buf.validate.field).sint64.const = 42]; + // } + // ``` + optional sint64 const = 1 [(priv.field).cel = { + id: "sint64.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // `lt` requires the field value to be less than the specified value (field + // < value). If the field value is equal to or greater than the specified + // value, an error message is generated. + // + // ```proto + // message MySInt64 { + // // value must be less than 10 + // sint64 value = 1 [(buf.validate.field).sint64.lt = 10]; + // } + // ``` + sint64 lt = 2 [(priv.field).cel = { + id: "sint64.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` requires the field value to be less than or equal to the specified + // value (field <= value). If the field value is greater than the specified + // value, an error message is generated. + // + // ```proto + // message MySInt64 { + // // value must be less than or equal to 10 + // sint64 value = 1 [(buf.validate.field).sint64.lte = 10]; + // } + // ``` + sint64 lte = 3 [(priv.field).cel = { + id: "sint64.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && this > rules.lte" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + oneof greater_than { + // `gt` requires the field value to be greater than the specified value + // (exclusive). If the value of `gt` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MySInt64 { + // // value must be greater than 5 [sint64.gt] + // sint64 value = 1 [(buf.validate.field).sint64.gt = 5]; + // + // // value must be greater than 5 and less than 10 [sint64.gt_lt] + // sint64 other_value = 2 [(buf.validate.field).sint64 = { gt: 5, lt: 10 }]; + // + // // value must be greater than 10 or less than 5 [sint64.gt_lt_exclusive] + // sint64 another_value = 3 [(buf.validate.field).sint64 = { gt: 10, lt: 5 }]; + // } + // ``` + sint64 gt = 4 [ + (priv.field).cel = { + id: "sint64.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "sint64.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sint64.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sint64.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "sint64.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the field value to be greater than or equal to the specified + // value (exclusive). If the value of `gte` is larger than a specified `lt` + // or `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MySInt64 { + // // value must be greater than or equal to 5 [sint64.gte] + // sint64 value = 1 [(buf.validate.field).sint64.gte = 5]; + // + // // value must be greater than or equal to 5 and less than 10 [sint64.gte_lt] + // sint64 other_value = 2 [(buf.validate.field).sint64 = { gte: 5, lt: 10 }]; + // + // // value must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive] + // sint64 another_value = 3 [(buf.validate.field).sint64 = { gte: 10, lt: 5 }]; + // } + // ``` + sint64 gte = 5 [ + (priv.field).cel = { + id: "sint64.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && this < rules.gte" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "sint64.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sint64.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sint64.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "sint64.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + + // `in` requires the field value to be equal to one of the specified values. + // If the field value isn't one of the specified values, an error message + // is generated. + // + // ```proto + // message MySInt64 { + // // value must be in list [1, 2, 3] + // repeated sint64 value = 1 (buf.validate.field).sint64 = { in: [1, 2, 3] }; + // } + // ``` + repeated sint64 in = 6 [(priv.field).cel = { + id: "sint64.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` requires the field value to not be equal to any of the specified + // values. If the field value is one of the specified values, an error + // message is generated. + // + // ```proto + // message MySInt64 { + // // value must not be in list [1, 2, 3] + // repeated sint64 value = 1 (buf.validate.field).sint64 = { not_in: [1, 2, 3] }; + // } + // ``` + repeated sint64 not_in = 7 [(priv.field).cel = { + id: "sint64.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; +} + +// Fixed32Rules describes the constraints applied to `fixed32` values. +message Fixed32Rules { + // `const` requires the field value to exactly match the specified value. + // If the field value doesn't match, an error message is generated. + // + // ```proto + // message MyFixed32 { + // // value must equal 42 + // fixed32 value = 1 [(buf.validate.field).fixed32.const = 42]; + // } + // ``` + optional fixed32 const = 1 [(priv.field).cel = { + id: "fixed32.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // `lt` requires the field value to be less than the specified value (field < + // value). If the field value is equal to or greater than the specified value, + // an error message is generated. + // + // ```proto + // message MyFixed32 { + // // value must be less than 10 + // fixed32 value = 1 [(buf.validate.field).fixed32.lt = 10]; + // } + // ``` + fixed32 lt = 2 [(priv.field).cel = { + id: "fixed32.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` requires the field value to be less than or equal to the specified + // value (field <= value). If the field value is greater than the specified + // value, an error message is generated. + // + // ```proto + // message MyFixed32 { + // // value must be less than or equal to 10 + // fixed32 value = 1 [(buf.validate.field).fixed32.lte = 10]; + // } + // ``` + fixed32 lte = 3 [(priv.field).cel = { + id: "fixed32.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && this > rules.lte" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + oneof greater_than { + // `gt` requires the field value to be greater than the specified value + // (exclusive). If the value of `gt` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyFixed32 { + // // value must be greater than 5 [fixed32.gt] + // fixed32 value = 1 [(buf.validate.field).fixed32.gt = 5]; + // + // // value must be greater than 5 and less than 10 [fixed32.gt_lt] + // fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gt: 5, lt: 10 }]; + // + // // value must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive] + // fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gt: 10, lt: 5 }]; + // } + // ``` + fixed32 gt = 4 [ + (priv.field).cel = { + id: "fixed32.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "fixed32.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "fixed32.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "fixed32.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "fixed32.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the field value to be greater than or equal to the specified + // value (exclusive). If the value of `gte` is larger than a specified `lt` + // or `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyFixed32 { + // // value must be greater than or equal to 5 [fixed32.gte] + // fixed32 value = 1 [(buf.validate.field).fixed32.gte = 5]; + // + // // value must be greater than or equal to 5 and less than 10 [fixed32.gte_lt] + // fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gte: 5, lt: 10 }]; + // + // // value must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive] + // fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gte: 10, lt: 5 }]; + // } + // ``` + fixed32 gte = 5 [ + (priv.field).cel = { + id: "fixed32.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && this < rules.gte" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "fixed32.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "fixed32.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "fixed32.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "fixed32.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + + // `in` requires the field value to be equal to one of the specified values. + // If the field value isn't one of the specified values, an error message + // is generated. + // + // ```proto + // message MyFixed32 { + // // value must be in list [1, 2, 3] + // repeated fixed32 value = 1 (buf.validate.field).fixed32 = { in: [1, 2, 3] }; + // } + // ``` + repeated fixed32 in = 6 [(priv.field).cel = { + id: "fixed32.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` requires the field value to not be equal to any of the specified + // values. If the field value is one of the specified values, an error + // message is generated. + // + // ```proto + // message MyFixed32 { + // // value must not be in list [1, 2, 3] + // repeated fixed32 value = 1 (buf.validate.field).fixed32 = { not_in: [1, 2, 3] }; + // } + // ``` + repeated fixed32 not_in = 7 [(priv.field).cel = { + id: "fixed32.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; +} + +// Fixed64Rules describes the constraints applied to `fixed64` values. +message Fixed64Rules { + // `const` requires the field value to exactly match the specified value. If + // the field value doesn't match, an error message is generated. + // + // ```proto + // message MyFixed64 { + // // value must equal 42 + // fixed64 value = 1 [(buf.validate.field).fixed64.const = 42]; + // } + // ``` + optional fixed64 const = 1 [(priv.field).cel = { + id: "fixed64.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // `lt` requires the field value to be less than the specified value (field < + // value). If the field value is equal to or greater than the specified value, + // an error message is generated. + // + // ```proto + // message MyFixed64 { + // // value must be less than 10 + // fixed64 value = 1 [(buf.validate.field).fixed64.lt = 10]; + // } + // ``` + fixed64 lt = 2 [(priv.field).cel = { + id: "fixed64.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` requires the field value to be less than or equal to the specified + // value (field <= value). If the field value is greater than the specified + // value, an error message is generated. + // + // ```proto + // message MyFixed64 { + // // value must be less than or equal to 10 + // fixed64 value = 1 [(buf.validate.field).fixed64.lte = 10]; + // } + // ``` + fixed64 lte = 3 [(priv.field).cel = { + id: "fixed64.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && this > rules.lte" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + oneof greater_than { + // `gt` requires the field value to be greater than the specified value + // (exclusive). If the value of `gt` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyFixed64 { + // // value must be greater than 5 [fixed64.gt] + // fixed64 value = 1 [(buf.validate.field).fixed64.gt = 5]; + // + // // value must be greater than 5 and less than 10 [fixed64.gt_lt] + // fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gt: 5, lt: 10 }]; + // + // // value must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive] + // fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gt: 10, lt: 5 }]; + // } + // ``` + fixed64 gt = 4 [ + (priv.field).cel = { + id: "fixed64.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "fixed64.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "fixed64.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "fixed64.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "fixed64.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the field value to be greater than or equal to the specified + // value (exclusive). If the value of `gte` is larger than a specified `lt` + // or `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyFixed64 { + // // value must be greater than or equal to 5 [fixed64.gte] + // fixed64 value = 1 [(buf.validate.field).fixed64.gte = 5]; + // + // // value must be greater than or equal to 5 and less than 10 [fixed64.gte_lt] + // fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gte: 5, lt: 10 }]; + // + // // value must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive] + // fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gte: 10, lt: 5 }]; + // } + // ``` + fixed64 gte = 5 [ + (priv.field).cel = { + id: "fixed64.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && this < rules.gte" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "fixed64.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "fixed64.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "fixed64.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "fixed64.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + + // `in` requires the field value to be equal to one of the specified values. + // If the field value isn't one of the specified values, an error message is + // generated. + // + // ```proto + // message MyFixed64 { + // // value must be in list [1, 2, 3] + // repeated fixed64 value = 1 (buf.validate.field).fixed64 = { in: [1, 2, 3] }; + // } + // ``` + repeated fixed64 in = 6 [(priv.field).cel = { + id: "fixed64.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` requires the field value to not be equal to any of the specified + // values. If the field value is one of the specified values, an error + // message is generated. + // + // ```proto + // message MyFixed64 { + // // value must not be in list [1, 2, 3] + // repeated fixed64 value = 1 (buf.validate.field).fixed64 = { not_in: [1, 2, 3] }; + // } + // ``` + repeated fixed64 not_in = 7 [(priv.field).cel = { + id: "fixed64.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; +} + +// SFixed32Rules describes the constraints applied to `fixed32` values. +message SFixed32Rules { + // `const` requires the field value to exactly match the specified value. If + // the field value doesn't match, an error message is generated. + // + // ```proto + // message MySFixed32 { + // // value must equal 42 + // sfixed32 value = 1 [(buf.validate.field).sfixed32.const = 42]; + // } + // ``` + optional sfixed32 const = 1 [(priv.field).cel = { + id: "sfixed32.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // `lt` requires the field value to be less than the specified value (field < + // value). If the field value is equal to or greater than the specified value, + // an error message is generated. + // + // ```proto + // message MySFixed32 { + // // value must be less than 10 + // sfixed32 value = 1 [(buf.validate.field).sfixed32.lt = 10]; + // } + // ``` + sfixed32 lt = 2 [(priv.field).cel = { + id: "sfixed32.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` requires the field value to be less than or equal to the specified + // value (field <= value). If the field value is greater than the specified + // value, an error message is generated. + // + // ```proto + // message MySFixed32 { + // // value must be less than or equal to 10 + // sfixed32 value = 1 [(buf.validate.field).sfixed32.lte = 10]; + // } + // ``` + sfixed32 lte = 3 [(priv.field).cel = { + id: "sfixed32.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && this > rules.lte" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + oneof greater_than { + // `gt` requires the field value to be greater than the specified value + // (exclusive). If the value of `gt` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MySFixed32 { + // // value must be greater than 5 [sfixed32.gt] + // sfixed32 value = 1 [(buf.validate.field).sfixed32.gt = 5]; + // + // // value must be greater than 5 and less than 10 [sfixed32.gt_lt] + // sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gt: 5, lt: 10 }]; + // + // // value must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive] + // sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gt: 10, lt: 5 }]; + // } + // ``` + sfixed32 gt = 4 [ + (priv.field).cel = { + id: "sfixed32.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "sfixed32.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sfixed32.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sfixed32.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "sfixed32.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the field value to be greater than or equal to the specified + // value (exclusive). If the value of `gte` is larger than a specified `lt` + // or `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MySFixed32 { + // // value must be greater than or equal to 5 [sfixed32.gte] + // sfixed32 value = 1 [(buf.validate.field).sfixed32.gte = 5]; + // + // // value must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt] + // sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gte: 5, lt: 10 }]; + // + // // value must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive] + // sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gte: 10, lt: 5 }]; + // } + // ``` + sfixed32 gte = 5 [ + (priv.field).cel = { + id: "sfixed32.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && this < rules.gte" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "sfixed32.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sfixed32.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sfixed32.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "sfixed32.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + + // `in` requires the field value to be equal to one of the specified values. + // If the field value isn't one of the specified values, an error message is + // generated. + // + // ```proto + // message MySFixed32 { + // // value must be in list [1, 2, 3] + // repeated sfixed32 value = 1 (buf.validate.field).sfixed32 = { in: [1, 2, 3] }; + // } + // ``` + repeated sfixed32 in = 6 [(priv.field).cel = { + id: "sfixed32.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` requires the field value to not be equal to any of the specified + // values. If the field value is one of the specified values, an error + // message is generated. + // + // ```proto + // message MySFixed32 { + // // value must not be in list [1, 2, 3] + // repeated sfixed32 value = 1 (buf.validate.field).sfixed32 = { not_in: [1, 2, 3] }; + // } + // ``` + repeated sfixed32 not_in = 7 [(priv.field).cel = { + id: "sfixed32.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; +} + +// SFixed64Rules describes the constraints applied to `fixed64` values. +message SFixed64Rules { + // `const` requires the field value to exactly match the specified value. If + // the field value doesn't match, an error message is generated. + // + // ```proto + // message MySFixed64 { + // // value must equal 42 + // sfixed64 value = 1 [(buf.validate.field).sfixed64.const = 42]; + // } + // ``` + optional sfixed64 const = 1 [(priv.field).cel = { + id: "sfixed64.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // `lt` requires the field value to be less than the specified value (field < + // value). If the field value is equal to or greater than the specified value, + // an error message is generated. + // + // ```proto + // message MySFixed64 { + // // value must be less than 10 + // sfixed64 value = 1 [(buf.validate.field).sfixed64.lt = 10]; + // } + // ``` + sfixed64 lt = 2 [(priv.field).cel = { + id: "sfixed64.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` requires the field value to be less than or equal to the specified + // value (field <= value). If the field value is greater than the specified + // value, an error message is generated. + // + // ```proto + // message MySFixed64 { + // // value must be less than or equal to 10 + // sfixed64 value = 1 [(buf.validate.field).sfixed64.lte = 10]; + // } + // ``` + sfixed64 lte = 3 [(priv.field).cel = { + id: "sfixed64.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && this > rules.lte" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + oneof greater_than { + // `gt` requires the field value to be greater than the specified value + // (exclusive). If the value of `gt` is larger than a specified `lt` or + // `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MySFixed64 { + // // value must be greater than 5 [sfixed64.gt] + // sfixed64 value = 1 [(buf.validate.field).sfixed64.gt = 5]; + // + // // value must be greater than 5 and less than 10 [sfixed64.gt_lt] + // sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gt: 5, lt: 10 }]; + // + // // value must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive] + // sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gt: 10, lt: 5 }]; + // } + // ``` + sfixed64 gt = 4 [ + (priv.field).cel = { + id: "sfixed64.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "sfixed64.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sfixed64.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sfixed64.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "sfixed64.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the field value to be greater than or equal to the specified + // value (exclusive). If the value of `gte` is larger than a specified `lt` + // or `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MySFixed64 { + // // value must be greater than or equal to 5 [sfixed64.gte] + // sfixed64 value = 1 [(buf.validate.field).sfixed64.gte = 5]; + // + // // value must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt] + // sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gte: 5, lt: 10 }]; + // + // // value must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive] + // sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gte: 10, lt: 5 }]; + // } + // ``` + sfixed64 gte = 5 [ + (priv.field).cel = { + id: "sfixed64.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && this < rules.gte" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "sfixed64.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sfixed64.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "sfixed64.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "sfixed64.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + + // `in` requires the field value to be equal to one of the specified values. + // If the field value isn't one of the specified values, an error message is + // generated. + // + // ```proto + // message MySFixed64 { + // // value must be in list [1, 2, 3] + // repeated sfixed64 value = 1 (buf.validate.field).sfixed64 = { in: [1, 2, 3] }; + // } + // ``` + repeated sfixed64 in = 6 [(priv.field).cel = { + id: "sfixed64.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` requires the field value to not be equal to any of the specified + // values. If the field value is one of the specified values, an error + // message is generated. + // + // ```proto + // message MySFixed64 { + // // value must not be in list [1, 2, 3] + // repeated sfixed64 value = 1 (buf.validate.field).sfixed64 = { not_in: [1, 2, 3] }; + // } + // ``` + repeated sfixed64 not_in = 7 [(priv.field).cel = { + id: "sfixed64.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; +} + +// BoolRules describes the constraints applied to `bool` values. These rules +// may also be applied to the `google.protobuf.BoolValue` Well-Known-Type. +message BoolRules { + // `const` requires the field value to exactly match the specified boolean value. + // If the field value doesn't match, an error message is generated. + // + // ```proto + // message MyBool { + // // value must equal true + // bool value = 1 [(buf.validate.field).bool.const = true]; + // } + // ``` + optional bool const = 1 [(priv.field).cel = { + id: "bool.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; +} + +// StringRules describes the constraints applied to `string` values These +// rules may also be applied to the `google.protobuf.StringValue` Well-Known-Type. +message StringRules { + // `const` requires the field value to exactly match the specified value. If + // the field value doesn't match, an error message is generated. + // + // ```proto + // message MyString { + // // value must equal `hello` + // string value = 1 [(buf.validate.field).string.const = "hello"]; + // } + // ``` + optional string const = 1 [(priv.field).cel = { + id: "string.const", + expression: "this != rules.const ? 'value must equal `%s`'.format([rules.const]) : ''" + }]; + + // `len` dictates that the field value must have the specified + // number of characters (Unicode code points), which may differ from the number + // of bytes in the string. If the field value does not meet the specified + // length, an error message will be generated. + // + // ```proto + // message MyString { + // // value length must be 5 characters + // string value = 1 [(buf.validate.field).string.len = 5]; + // } + // ``` + optional uint64 len = 19 [(priv.field).cel = { + id: "string.len", + expression: "uint(this.size()) != rules.len ? 'value length must be %s characters'.format([rules.len]) : ''" + }]; + + // `min_len` specifies that the field value must have at least the specified + // number of characters (Unicode code points), which may differ from the number + // of bytes in the string. If the field value contains fewer characters, an error + // message will be generated. + // + // ```proto + // message MyString { + // // value length must be at least 3 characters + // string value = 1 [(buf.validate.field).string.min_len = 3]; + // } + // ``` + optional uint64 min_len = 2 [(priv.field).cel = { + id: "string.min_len", + expression: "uint(this.size()) < rules.min_len ? 'value length must be at least %s characters'.format([rules.min_len]) : ''" + }]; + + // `max_len` specifies that the field value must have no more than the specified + // number of characters (Unicode code points), which may differ from the + // number of bytes in the string. If the field value contains more characters, + // an error message will be generated. + // + // ```proto + // message MyString { + // // value length must be at most 10 characters + // string value = 1 [(buf.validate.field).string.max_len = 10]; + // } + // ``` + optional uint64 max_len = 3 [(priv.field).cel = { + id: "string.max_len", + expression: "uint(this.size()) > rules.max_len ? 'value length must be at most %s characters'.format([rules.max_len]) : ''" + }]; + + // `len_bytes` dictates that the field value must have the specified number of + // bytes. If the field value does not match the specified length in bytes, + // an error message will be generated. + // + // ```proto + // message MyString { + // // value length must be 6 bytes + // string value = 1 [(buf.validate.field).string.len_bytes = 6]; + // } + // ``` + optional uint64 len_bytes = 20 [(priv.field).cel = { + id: "string.len_bytes", + expression: "uint(bytes(this).size()) != rules.len_bytes ? 'value length must be %s bytes'.format([rules.len_bytes]) : ''" + }]; + + // `min_bytes` specifies that the field value must have at least the specified + // number of bytes. If the field value contains fewer bytes, an error message + // will be generated. + // + // ```proto + // message MyString { + // // value length must be at least 4 bytes + // string value = 1 [(buf.validate.field).string.min_bytes = 4]; + // } + // + // ``` + optional uint64 min_bytes = 4 [(priv.field).cel = { + id: "string.min_bytes", + expression: "uint(bytes(this).size()) < rules.min_bytes ? 'value length must be at least %s bytes'.format([rules.min_bytes]) : ''" + }]; + + // `max_bytes` specifies that the field value must have no more than the + //specified number of bytes. If the field value contains more bytes, an + // error message will be generated. + // + // ```proto + // message MyString { + // // value length must be at most 8 bytes + // string value = 1 [(buf.validate.field).string.max_bytes = 8]; + // } + // ``` + optional uint64 max_bytes = 5 [(priv.field).cel = { + id: "string.max_bytes", + expression: "uint(bytes(this).size()) > rules.max_bytes ? 'value length must be at most %s bytes'.format([rules.max_bytes]) : ''", + }]; + + // `pattern` specifies that the field value must match the specified + // regular expression (RE2 syntax), with the expression provided without any + // delimiters. If the field value doesn't match the regular expression, an + // error message will be generated. + // + // ```proto + // message MyString { + // // value does not match regex pattern `^[a-zA-Z]//$` + // string value = 1 [(buf.validate.field).string.pattern = "^[a-zA-Z]//$"]; + // } + // ``` + optional string pattern = 6 [(priv.field).cel = { + id: "string.pattern", + expression: "!this.matches(rules.pattern) ? 'value does not match regex pattern `%s`'.format([rules.pattern]) : ''" + }]; + + // `prefix` specifies that the field value must have the + //specified substring at the beginning of the string. If the field value + // doesn't start with the specified prefix, an error message will be + // generated. + // + // ```proto + // message MyString { + // // value does not have prefix `pre` + // string value = 1 [(buf.validate.field).string.prefix = "pre"]; + // } + // ``` + optional string prefix = 7 [(priv.field).cel = { + id: "string.prefix", + expression: "!this.startsWith(rules.prefix) ? 'value does not have prefix `%s`'.format([rules.prefix]) : ''" + }]; + + // `suffix` specifies that the field value must have the + //specified substring at the end of the string. If the field value doesn't + // end with the specified suffix, an error message will be generated. + // + // ```proto + // message MyString { + // // value does not have suffix `post` + // string value = 1 [(buf.validate.field).string.suffix = "post"]; + // } + // ``` + optional string suffix = 8 [(priv.field).cel = { + id: "string.suffix", + expression: "!this.endsWith(rules.suffix) ? 'value does not have suffix `%s`'.format([rules.suffix]) : ''" + }]; + + // `contains` specifies that the field value must have the + //specified substring anywhere in the string. If the field value doesn't + // contain the specified substring, an error message will be generated. + // + // ```proto + // message MyString { + // // value does not contain substring `inside`. + // string value = 1 [(buf.validate.field).string.contains = "inside"]; + // } + // ``` + optional string contains = 9 [(priv.field).cel = { + id: "string.contains", + expression: "!this.contains(rules.contains) ? 'value does not contain substring `%s`'.format([rules.contains]) : ''" + }]; + + // `not_contains` specifies that the field value must not have the + //specified substring anywhere in the string. If the field value contains + // the specified substring, an error message will be generated. + // + // ```proto + // message MyString { + // // value contains substring `inside`. + // string value = 1 [(buf.validate.field).string.not_contains = "inside"]; + // } + // ``` + optional string not_contains = 23 [(priv.field).cel = { + id: "string.not_contains", + expression: "this.contains(rules.not_contains) ? 'value contains substring `%s`'.format([rules.not_contains]) : ''" + }]; + + // `in` specifies that the field value must be equal to one of the specified + // values. If the field value isn't one of the specified values, an error + // message will be generated. + // + // ```proto + // message MyString { + // // value must be in list ["apple", "banana"] + // repeated string value = 1 [(buf.validate.field).string.in = "apple", (buf.validate.field).string.in = "banana"]; + // } + // ``` + repeated string in = 10 [(priv.field).cel = { + id: "string.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''" + }]; + + // `not_in` specifies that the field value cannot be equal to any + // of the specified values. If the field value is one of the specified values, + // an error message will be generated. + // ```proto + // message MyString { + // // value must not be in list ["orange", "grape"] + // repeated string value = 1 [(buf.validate.field).string.not_in = "orange", (buf.validate.field).string.not_in = "grape"]; + // } + // ``` + repeated string not_in = 11 [(priv.field).cel = { + id: "string.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + }]; + + // `WellKnown` rules provide advanced constraints against common string + // patterns + oneof well_known { + // `email` specifies that the field value must be a valid email address + // (addr-spec only) as defined by [RFC 5322](https://tools.ietf.org/html/rfc5322#section-3.4.1). + // If the field value isn't a valid email address, an error message will be generated. + // + // ```proto + // message MyString { + // // value must be a valid email address + // string value = 1 [(buf.validate.field).string.email = true]; + // } + // ``` + bool email = 12 [(priv.field).cel = { + id: "string.email", + message: "value must be a valid email address", + expression: "this.isEmail()" + }]; + + // `hostname` specifies that the field value must be a valid + // hostname as defined by [RFC 1034](https://tools.ietf.org/html/rfc1034#section-3.5). This constraint doesn't support + // internationalized domain names (IDNs). If the field value isn't a + // valid hostname, an error message will be generated. + // + // ```proto + // message MyString { + // // value must be a valid hostname + // string value = 1 [(buf.validate.field).string.hostname = true]; + // } + // ``` + bool hostname = 13 [(priv.field).cel = { + id: "string.hostname", + message: "value must be a valid hostname", + expression: "this.isHostname()", + }]; + + // `ip` specifies that the field value must be a valid IP + // (v4 or v6) address, without surrounding square brackets for IPv6 addresses. + // If the field value isn't a valid IP address, an error message will be + // generated. + // + // ```proto + // message MyString { + // // value must be a valid IP address + // string value = 1 [(buf.validate.field).string.ip = true]; + // } + // ``` + bool ip = 14 [(priv.field).cel = { + id: "string.ip", + message: "value must be a valid IP address", + expression: "this.isIp()", + }]; + + // `ipv4` specifies that the field value must be a valid IPv4 + // address. If the field value isn't a valid IPv4 address, an error message + // will be generated. + // + // ```proto + // message MyString { + // // value must be a valid IPv4 address + // string value = 1 [(buf.validate.field).string.ipv4 = true]; + // } + // ``` + bool ipv4 = 15 [(priv.field).cel = { + id: "string.ipv4", + message: "value must be a valid IPv4 address", + expression: "this.isIp(4)" + }]; + + // `ipv6` specifies that the field value must be a valid + // IPv6 address, without surrounding square brackets. If the field value is + // not a valid IPv6 address, an error message will be generated. + // + // ```proto + // message MyString { + // // value must be a valid IPv6 address + // string value = 1 [(buf.validate.field).string.ipv6 = true]; + // } + // ``` + bool ipv6 = 16 [(priv.field).cel = { + id: "string.ipv6", + message: "value must be a valid IPv6 address", + expression: "this.isIp(6)", + }]; + + // `uri` specifies that the field value must be a valid, + // absolute URI as defined by [RFC 3986](https://tools.ietf.org/html/rfc3986#section-3). If the field value isn't a valid, + // absolute URI, an error message will be generated. + // + // ```proto + // message MyString { + // // value must be a valid URI + // string value = 1 [(buf.validate.field).string.uri = true]; + // } + // ``` + bool uri = 17 [(priv.field).cel = { + id: "string.uri", + message: "value must be a valid URI", + expression: "this.isUri()", + }]; + + // `uri_ref` specifies that the field value must be a valid URI + // as defined by [RFC 3986](https://tools.ietf.org/html/rfc3986#section-3) and may be either relative or absolute. If the + // field value isn't a valid URI, an error message will be generated. + // + // ```proto + // message MyString { + // // value must be a valid URI + // string value = 1 [(buf.validate.field).string.uri_ref = true]; + // } + // ``` + bool uri_ref = 18 [(priv.field).cel = { + id: "string.uri_ref", + message: "value must be a valid URI", + expression: "this.isUriRef()", + }]; + + // `address` specifies that the field value must be either a valid hostname + // as defined by [RFC 1034](https://tools.ietf.org/html/rfc1034#section-3.5) + // (which doesn't support internationalized domain names or IDNs) or a valid + // IP (v4 or v6). If the field value isn't a valid hostname or IP, an error + // message will be generated. + // + // ```proto + // message MyString { + // // value must be a valid hostname, or ip address + // string value = 1 [(buf.validate.field).string.address = true]; + // } + // ``` + bool address = 21 [(priv.field).cel = { + id: "string.address", + message: "value must be a valid hostname, or ip address", + expression: "this.isHostname() || this.isIp()", + }]; + + // `uuid` specifies that the field value must be a valid UUID as defined by + // [RFC 4122](https://tools.ietf.org/html/rfc4122#section-4.1.2). If the + // field value isn't a valid UUID, an error message will be generated. + // + // ```proto + // message MyString { + // // value must be a valid UUID + // string value = 1 [(buf.validate.field).string.uuid = true]; + // } + // ``` + bool uuid = 22 [(priv.field).cel = { + id: "string.uuid", + expression: "!this.matches('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$') ? 'value must be a valid UUID' : ''" + }]; + + // `ip_with_prefixlen` specifies that the field value must be a valid IP (v4 or v6) + // address with prefix length. If the field value isn't a valid IP with prefix + // length, an error message will be generated. + // + // + // ```proto + // message MyString { + // // value must be a valid IP with prefix length + // string value = 1 [(buf.validate.field).string.ip_with_prefixlen = true]; + // } + // ``` + bool ip_with_prefixlen = 26 [(priv.field).cel = { + id: "string.ip_with_prefixlen", + message: "value must be a valid IP prefix", + expression: "this.isIpPrefix()", + }]; + + // `ipv4_with_prefixlen` specifies that the field value must be a valid + // IPv4 address with prefix. + // If the field value isn't a valid IPv4 address with prefix length, + // an error message will be generated. + // + // ```proto + // message MyString { + // // value must be a valid IPv4 address with prefix lentgh + // string value = 1 [(buf.validate.field).string.ipv4_with_prefixlen = true]; + // } + // ``` + bool ipv4_with_prefixlen = 27 [(priv.field).cel = { + id: "string.ipv4_with_prefixlen", + message: "value must be a valid IPv4 address with prefix length", + expression: "this.isIpPrefix(4)" + }]; + + // `ipv6_with_prefixlen` specifies that the field value must be a valid + // IPv6 address with prefix length. + // If the field value is not a valid IPv6 address with prefix length, + // an error message will be generated. + // + // ```proto + // message MyString { + // // value must be a valid IPv6 address prefix length + // string value = 1 [(buf.validate.field).string.ipv6_with_prefixlen = true]; + // } + // ``` + bool ipv6_with_prefixlen = 28 [(priv.field).cel = { + id: "string.ipv6_with_prefixlen", + message: "value must be a valid IPv6 address with prefix length", + expression: "this.isIpPrefix(6)", + }]; + + // `ip_prefix` specifies that the field value must be a valid IP (v4 or v6) prefix. + // If the field value isn't a valid IP prefix, an error message will be + // generated. The prefix must have all zeros for the masked bits of the prefix (e.g., + // `127.0.0.0/16`, not `127.0.0.1/16`). + // + // ```proto + // message MyString { + // // value must be a valid IP prefix + // string value = 1 [(buf.validate.field).string.ip_prefix = true]; + // } + // ``` + bool ip_prefix = 29 [(priv.field).cel = { + id: "string.ip_prefix", + message: "value must be a valid IP prefix", + expression: "this.isIpPrefix(true)", + }]; + + // `ipv4_prefix` specifies that the field value must be a valid IPv4 + // prefix. If the field value isn't a valid IPv4 prefix, an error message + // will be generated. The prefix must have all zeros for the masked bits of + // the prefix (e.g., `127.0.0.0/16`, not `127.0.0.1/16`). + // + // ```proto + // message MyString { + // // value must be a valid IPv4 prefix + // string value = 1 [(buf.validate.field).string.ipv4_prefix = true]; + // } + // ``` + bool ipv4_prefix = 30 [(priv.field).cel = { + id: "string.ipv4_prefix", + message: "value must be a valid IPv4 prefix", + expression: "this.isIpPrefix(4, true)" + }]; + + // `ipv6_prefix` specifies that the field value must be a valid IPv6 prefix. + // If the field value is not a valid IPv6 prefix, an error message will be + // generated. The prefix must have all zeros for the masked bits of the prefix + // (e.g., `2001:db8::/48`, not `2001:db8::1/48`). + // + // ```proto + // message MyString { + // // value must be a valid IPv6 prefix + // string value = 1 [(buf.validate.field).string.ipv6_prefix = true]; + // } + // ``` + bool ipv6_prefix = 31 [(priv.field).cel = { + id: "string.ipv6_prefix", + message: "value must be a valid IPv6 prefix", + expression: "this.isIpPrefix(6, true)", + }]; + + // `well_known_regex` specifies a common well-known pattern + // defined as a regex. If the field value doesn't match the well-known + // regex, an error message will be generated. + // + // ```proto + // message MyString { + // // value must be a valid HTTP header value + // string value = 1 [(buf.validate.field).string.well_known_regex = 2]; + // } + // ``` + // + // #### KnownRegex + // + // `well_known_regex` contains some well-known patterns. + // + // | Name | Number | Description | + // |-------------------------------|--------|-------------------------------------------| + // | KNOWN_REGEX_UNSPECIFIED | 0 | | + // | KNOWN_REGEX_HTTP_HEADER_NAME | 1 | HTTP header name as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2) | + // | KNOWN_REGEX_HTTP_HEADER_VALUE | 2 | HTTP header value as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2.4) | + KnownRegex well_known_regex = 24 [ + (priv.field).cel = { + id: "string.well_known_regex.header_name" + expression: + "rules.well_known_regex == 1 && !this.matches(!has(rules.strict) || rules.strict ?" + "'^:?[0-9a-zA-Z!#$%&\\'*+-.^_|~\\x60]+$' :" + "'^[^\\u0000\\u000A\\u000D]+$') ? 'value must be a valid HTTP header name' : ''", + }, + (priv.field).cel = { + id: "string.well_known_regex.header_value", + expression: + "rules.well_known_regex == 2 && !this.matches(!has(rules.strict) || rules.strict ?" + "'^[^\\u0000-\\u0008\\u000A-\\u001F\\u007F]*$' :" + "'^[^\\u0000\\u000A\\u000D]*$') ? 'value must be a valid HTTP header value' : ''", + } + ]; + } + + // This applies to regexes `HTTP_HEADER_NAME` and `HTTP_HEADER_VALUE` to + // enable strict header validation. By default, this is true, and HTTP header + // validations are [RFC-compliant](https://tools.ietf.org/html/rfc7230#section-3). Setting to false will enable looser + // validations that only disallow `\r\n\0` characters, which can be used to + // bypass header matching rules. + // + // ```proto + // message MyString { + // // The field `value` must have be a valid HTTP headers, but not enforced with strict rules. + // string value = 1 [(buf.validate.field).string.strict = false]; + // } + // ``` + optional bool strict = 25; +} + +// WellKnownRegex contain some well-known patterns. +enum KnownRegex { + KNOWN_REGEX_UNSPECIFIED = 0; + + // HTTP header name as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2). + KNOWN_REGEX_HTTP_HEADER_NAME = 1; + + // HTTP header value as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2.4). + KNOWN_REGEX_HTTP_HEADER_VALUE = 2; +} + +// BytesRules describe the constraints applied to `bytes` values. These rules +// may also be applied to the `google.protobuf.BytesValue` Well-Known-Type. +message BytesRules { + // `const` requires the field value to exactly match the specified bytes + // value. If the field value doesn't match, an error message is generated. + // + // ```proto + // message MyBytes { + // // value must be "\x01\x02\x03\x04" + // bytes value = 1 [(buf.validate.field).bytes.const = "\x01\x02\x03\x04"]; + // } + // ``` + optional bytes const = 1 [(priv.field).cel = { + id: "bytes.const", + expression: "this != rules.const ? 'value must be %x'.format([rules.const]) : ''" + }]; + + // `len` requires the field value to have the specified length in bytes. + // If the field value doesn't match, an error message is generated. + // + // ```proto + // message MyBytes { + // // value length must be 4 bytes. + // optional bytes value = 1 [(buf.validate.field).bytes.len = 4]; + // } + // ``` + optional uint64 len = 13 [(priv.field).cel = { + id: "bytes.len", + expression: "uint(this.size()) != rules.len ? 'value length must be %s bytes'.format([rules.len]) : ''" + }]; + + // `min_len` requires the field value to have at least the specified minimum + // length in bytes. + // If the field value doesn't meet the requirement, an error message is generated. + // + // ```proto + // message MyBytes { + // // value length must be at least 2 bytes. + // optional bytes value = 1 [(buf.validate.field).bytes.min_len = 2]; + // } + // ``` + optional uint64 min_len = 2 [(priv.field).cel = { + id: "bytes.min_len", + expression: "uint(this.size()) < rules.min_len ? 'value length must be at least %s bytes'.format([rules.min_len]) : ''" + }]; + + // `max_len` requires the field value to have at most the specified maximum + // length in bytes. + // If the field value exceeds the requirement, an error message is generated. + // + // ```proto + // message MyBytes { + // // value must be at most 6 bytes. + // optional bytes value = 1 [(buf.validate.field).bytes.max_len = 6]; + // } + // ``` + optional uint64 max_len = 3 [(priv.field).cel = { + id: "bytes.max_len", + expression: "uint(this.size()) > rules.max_len ? 'value must be at most %s bytes'.format([rules.max_len]) : ''" + }]; + + // `pattern` requires the field value to match the specified regular + // expression ([RE2 syntax](https://github.com/google/re2/wiki/Syntax)). + // The value of the field must be valid UTF-8 or validation will fail with a + // runtime error. + // If the field value doesn't match the pattern, an error message is generated. + // + // ```proto + // message MyBytes { + // // value must match regex pattern "^[a-zA-Z0-9]+$". + // optional bytes value = 1 [(buf.validate.field).bytes.pattern = "^[a-zA-Z0-9]+$"]; + // } + // ``` + optional string pattern = 4 [(priv.field).cel = { + id: "bytes.pattern", + expression: "!string(this).matches(rules.pattern) ? 'value must match regex pattern `%s`'.format([rules.pattern]) : ''" + }]; + + // `prefix` requires the field value to have the specified bytes at the + // beginning of the string. + // If the field value doesn't meet the requirement, an error message is generated. + // + // ```proto + // message MyBytes { + // // value does not have prefix \x01\x02 + // optional bytes value = 1 [(buf.validate.field).bytes.prefix = "\x01\x02"]; + // } + // ``` + optional bytes prefix = 5 [(priv.field).cel = { + id: "bytes.prefix", + expression: "!this.startsWith(rules.prefix) ? 'value does not have prefix %x'.format([rules.prefix]) : ''" + }]; + + // `suffix` requires the field value to have the specified bytes at the end + // of the string. + // If the field value doesn't meet the requirement, an error message is generated. + // + // ```proto + // message MyBytes { + // // value does not have suffix \x03\x04 + // optional bytes value = 1 [(buf.validate.field).bytes.suffix = "\x03\x04"]; + // } + // ``` + optional bytes suffix = 6 [(priv.field).cel = { + id: "bytes.suffix", + expression: "!this.endsWith(rules.suffix) ? 'value does not have suffix %x'.format([rules.suffix]) : ''" + }]; + + // `contains` requires the field value to have the specified bytes anywhere in + // the string. + // If the field value doesn't meet the requirement, an error message is generated. + // + // ```protobuf + // message MyBytes { + // // value does not contain \x02\x03 + // optional bytes value = 1 [(buf.validate.field).bytes.contains = "\x02\x03"]; + // } + // ``` + optional bytes contains = 7 [(priv.field).cel = { + id: "bytes.contains", + expression: "!this.contains(rules.contains) ? 'value does not contain %x'.format([rules.contains]) : ''" + }]; + + // `in` requires the field value to be equal to one of the specified + // values. If the field value doesn't match any of the specified values, an + // error message is generated. + // + // ```protobuf + // message MyBytes { + // // value must in ["\x01\x02", "\x02\x03", "\x03\x04"] + // optional bytes value = 1 [(buf.validate.field).bytes.in = {"\x01\x02", "\x02\x03", "\x03\x04"}]; + // } + // ``` + repeated bytes in = 8 [(priv.field).cel = { + id: "bytes.in", + expression: "dyn(rules)['in'].size() > 0 && !(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''" + }]; + + // `not_in` requires the field value to be not equal to any of the specified + // values. + // If the field value matches any of the specified values, an error message is + // generated. + // + // ```proto + // message MyBytes { + // // value must not in ["\x01\x02", "\x02\x03", "\x03\x04"] + // optional bytes value = 1 [(buf.validate.field).bytes.not_in = {"\x01\x02", "\x02\x03", "\x03\x04"}]; + // } + // ``` + repeated bytes not_in = 9 [(priv.field).cel = { + id: "bytes.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''" + }]; + + // WellKnown rules provide advanced constraints against common byte + // patterns + oneof well_known { + // `ip` ensures that the field `value` is a valid IP address (v4 or v6) in byte format. + // If the field value doesn't meet this constraint, an error message is generated. + // + // ```proto + // message MyBytes { + // // value must be a valid IP address + // optional bytes value = 1 [(buf.validate.field).bytes.ip = true]; + // } + // ``` + bool ip = 10 [(priv.field).cel = { + id: "bytes.ip", + expression: "this.size() != 4 && this.size() != 16 ? 'value must be a valid IP address' : ''" + }]; + + // `ipv4` ensures that the field `value` is a valid IPv4 address in byte format. + // If the field value doesn't meet this constraint, an error message is generated. + // + // ```proto + // message MyBytes { + // // value must be a valid IPv4 address + // optional bytes value = 1 [(buf.validate.field).bytes.ipv4 = true]; + // } + // ``` + bool ipv4 = 11 [(priv.field).cel = { + id: "bytes.ipv4", + expression: "this.size() != 4 ? 'value must be a valid IPv4 address' : ''" + }]; + + // `ipv6` ensures that the field `value` is a valid IPv6 address in byte format. + // If the field value doesn't meet this constraint, an error message is generated. + // ```proto + // message MyBytes { + // // value must be a valid IPv6 address + // optional bytes value = 1 [(buf.validate.field).bytes.ipv6 = true]; + // } + // ``` + bool ipv6 = 12 [(priv.field).cel = { + id: "bytes.ipv6", + expression: "this.size() != 16 ? 'value must be a valid IPv6 address' : ''" + }]; + } +} + +// EnumRules describe the constraints applied to `enum` values. +message EnumRules { + // `const` requires the field value to exactly match the specified enum value. + // If the field value doesn't match, an error message is generated. + // + // ```proto + // enum MyEnum { + // MY_ENUM_UNSPECIFIED = 0; + // MY_ENUM_VALUE1 = 1; + // MY_ENUM_VALUE2 = 2; + // } + // + // message MyMessage { + // // The field `value` must be exactly MY_ENUM_VALUE1. + // MyEnum value = 1 [(buf.validate.field).enum.const = 1]; + // } + // ``` + optional int32 const = 1 [(priv.field).cel = { + id: "enum.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + + // `defined_only` requires the field value to be one of the defined values for + // this enum, failing on any undefined value. + // + // ```proto + // enum MyEnum { + // MY_ENUM_UNSPECIFIED = 0; + // MY_ENUM_VALUE1 = 1; + // MY_ENUM_VALUE2 = 2; + // } + // + // message MyMessage { + // // The field `value` must be a defined value of MyEnum. + // MyEnum value = 1 [(buf.validate.field).enum.defined_only = true]; + // } + // ``` + optional bool defined_only = 2; + + // `in` requires the field value to be equal to one of the + //specified enum values. If the field value doesn't match any of the + //specified values, an error message is generated. + // + // ```proto + // enum MyEnum { + // MY_ENUM_UNSPECIFIED = 0; + // MY_ENUM_VALUE1 = 1; + // MY_ENUM_VALUE2 = 2; + // } + // + // message MyMessage { + // // The field `value` must be equal to one of the specified values. + // MyEnum value = 1 [(buf.validate.field).enum = { in: [1, 2]}]; + // } + // ``` + repeated int32 in = 3 [(priv.field).cel = { + id: "enum.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` requires the field value to be not equal to any of the + //specified enum values. If the field value matches one of the specified + // values, an error message is generated. + // + // ```proto + // enum MyEnum { + // MY_ENUM_UNSPECIFIED = 0; + // MY_ENUM_VALUE1 = 1; + // MY_ENUM_VALUE2 = 2; + // } + // + // message MyMessage { + // // The field `value` must not be equal to any of the specified values. + // MyEnum value = 1 [(buf.validate.field).enum = { not_in: [1, 2]}]; + // } + // ``` + repeated int32 not_in = 4 [(priv.field).cel = { + id: "enum.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; +} + +// RepeatedRules describe the constraints applied to `repeated` values. +message RepeatedRules { + // `min_items` requires that this field must contain at least the specified + // minimum number of items. + // + // Note that `min_items = 1` is equivalent to setting a field as `required`. + // + // ```proto + // message MyRepeated { + // // value must contain at least 2 items + // repeated string value = 1 [(buf.validate.field).repeated.min_items = 2]; + // } + // ``` + optional uint64 min_items = 1 [(priv.field).cel = { + id: "repeated.min_items" + expression: "uint(this.size()) < rules.min_items ? 'value must contain at least %d item(s)'.format([rules.min_items]) : ''" + }]; + + // `max_items` denotes that this field must not exceed a + // certain number of items as the upper limit. If the field contains more + // items than specified, an error message will be generated, requiring the + // field to maintain no more than the specified number of items. + // + // ```proto + // message MyRepeated { + // // value must contain no more than 3 item(s) + // repeated string value = 1 [(buf.validate.field).repeated.max_items = 3]; + // } + // ``` + optional uint64 max_items = 2 [(priv.field).cel = { + id: "repeated.max_items" + expression: "uint(this.size()) > rules.max_items ? 'value must contain no more than %s item(s)'.format([rules.max_items]) : ''" + }]; + + // `unique` indicates that all elements in this field must + // be unique. This constraint is strictly applicable to scalar and enum + // types, with message types not being supported. + // + // ```proto + // message MyRepeated { + // // repeated value must contain unique items + // repeated string value = 1 [(buf.validate.field).repeated.unique = true]; + // } + // ``` + optional bool unique = 3 [(priv.field).cel = { + id: "repeated.unique" + message: "repeated value must contain unique items" + expression: "this.unique()" + }]; + + // `items` details the constraints to be applied to each item + // in the field. Even for repeated message fields, validation is executed + // against each item unless skip is explicitly specified. + // + // ```proto + // message MyRepeated { + // // The items in the field `value` must follow the specified constraints. + // repeated string value = 1 [(buf.validate.field).repeated.items = { + // string: { + // min_len: 3 + // max_len: 10 + // } + // }]; + // } + // ``` + optional FieldConstraints items = 4; +} + +// MapRules describe the constraints applied to `map` values. +message MapRules { + //Specifies the minimum number of key-value pairs allowed. If the field has + // fewer key-value pairs than specified, an error message is generated. + // + // ```proto + // message MyMap { + // // The field `value` must have at least 2 key-value pairs. + // map value = 1 [(buf.validate.field).map.min_pairs = 2]; + // } + // ``` + optional uint64 min_pairs = 1 [(priv.field).cel = { + id: "map.min_pairs" + expression: "uint(this.size()) < rules.min_pairs ? 'map must be at least %d entries'.format([rules.min_pairs]) : ''" + }]; + + //Specifies the maximum number of key-value pairs allowed. If the field has + // more key-value pairs than specified, an error message is generated. + // + // ```proto + // message MyMap { + // // The field `value` must have at most 3 key-value pairs. + // map value = 1 [(buf.validate.field).map.max_pairs = 3]; + // } + // ``` + optional uint64 max_pairs = 2 [(priv.field).cel = { + id: "map.max_pairs" + expression: "uint(this.size()) > rules.max_pairs ? 'map must be at most %d entries'.format([rules.max_pairs]) : ''" + }]; + + //Specifies the constraints to be applied to each key in the field. + // + // ```proto + // message MyMap { + // // The keys in the field `value` must follow the specified constraints. + // map value = 1 [(buf.validate.field).map.keys = { + // string: { + // min_len: 3 + // max_len: 10 + // } + // }]; + // } + // ``` + optional FieldConstraints keys = 4; + + //Specifies the constraints to be applied to the value of each key in the + // field. Message values will still have their validations evaluated unless + //skip is specified here. + // + // ```proto + // message MyMap { + // // The values in the field `value` must follow the specified constraints. + // map value = 1 [(buf.validate.field).map.values = { + // string: { + // min_len: 5 + // max_len: 20 + // } + // }]; + // } + // ``` + optional FieldConstraints values = 5; +} + +// AnyRules describe constraints applied exclusively to the `google.protobuf.Any` well-known type. +message AnyRules { + // `in` requires the field's `type_url` to be equal to one of the + //specified values. If it doesn't match any of the specified values, an error + // message is generated. + // + // ```proto + // message MyAny { + // // The `value` field must have a `type_url` equal to one of the specified values. + // google.protobuf.Any value = 1 [(buf.validate.field).any.in = ["type.googleapis.com/MyType1", "type.googleapis.com/MyType2"]]; + // } + // ``` + repeated string in = 2; + + // requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated. + // + // ```proto + // message MyAny { + // // The field `value` must not have a `type_url` equal to any of the specified values. + // google.protobuf.Any value = 1 [(buf.validate.field).any.not_in = ["type.googleapis.com/ForbiddenType1", "type.googleapis.com/ForbiddenType2"]]; + // } + // ``` + repeated string not_in = 3; +} + +// DurationRules describe the constraints applied exclusively to the `google.protobuf.Duration` well-known type. +message DurationRules { + // `const` dictates that the field must match the specified value of the `google.protobuf.Duration` type exactly. + // If the field's value deviates from the specified value, an error message + // will be generated. + // + // ```proto + // message MyDuration { + // // value must equal 5s + // google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = "5s"]; + // } + // ``` + optional google.protobuf.Duration const = 2 [(priv.field).cel = { + id: "duration.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // `lt` stipulates that the field must be less than the specified value of the `google.protobuf.Duration` type, + // exclusive. If the field's value is greater than or equal to the specified + // value, an error message will be generated. + // + // ```proto + // message MyDuration { + // // value must be less than 5s + // google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = "5s"]; + // } + // ``` + google.protobuf.Duration lt = 3 [(priv.field).cel = { + id: "duration.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // `lte` indicates that the field must be less than or equal to the specified + // value of the `google.protobuf.Duration` type, inclusive. If the field's value is greater than the specified value, + // an error message will be generated. + // + // ```proto + // message MyDuration { + // // value must be less than or equal to 10s + // google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = "10s"]; + // } + // ``` + google.protobuf.Duration lte = 4 [(priv.field).cel = { + id: "duration.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && this > rules.lte" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + } + oneof greater_than { + // `gt` requires the duration field value to be greater than the specified + // value (exclusive). If the value of `gt` is larger than a specified `lt` + // or `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyDuration { + // // duration must be greater than 5s [duration.gt] + // google.protobuf.Duration value = 1 [(buf.validate.field).duration.gt = { seconds: 5 }]; + // + // // duration must be greater than 5s and less than 10s [duration.gt_lt] + // google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gt: { seconds: 5 }, lt: { seconds: 10 } }]; + // + // // duration must be greater than 10s or less than 5s [duration.gt_lt_exclusive] + // google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gt: { seconds: 10 }, lt: { seconds: 5 } }]; + // } + // ``` + google.protobuf.Duration gt = 5 [ + (priv.field).cel = { + id: "duration.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "duration.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "duration.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "duration.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "duration.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the duration field value to be greater than or equal to the + // specified value (exclusive). If the value of `gte` is larger than a + // specified `lt` or `lte`, the range is reversed, and the field value must + // be outside the specified range. If the field value doesn't meet the + // required conditions, an error message is generated. + // + // ```proto + // message MyDuration { + // // duration must be greater than or equal to 5s [duration.gte] + // google.protobuf.Duration value = 1 [(buf.validate.field).duration.gte = { seconds: 5 }]; + // + // // duration must be greater than or equal to 5s and less than 10s [duration.gte_lt] + // google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gte: { seconds: 5 }, lt: { seconds: 10 } }]; + // + // // duration must be greater than or equal to 10s or less than 5s [duration.gte_lt_exclusive] + // google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gte: { seconds: 10 }, lt: { seconds: 5 } }]; + // } + // ``` + google.protobuf.Duration gte = 6 [ + (priv.field).cel = { + id: "duration.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && this < rules.gte" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "duration.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "duration.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "duration.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "duration.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + } + + // `in` asserts that the field must be equal to one of the specified values of the `google.protobuf.Duration` type. + // If the field's value doesn't correspond to any of the specified values, + // an error message will be generated. + // + // ```proto + // message MyDuration { + // // value must be in list [1s, 2s, 3s] + // google.protobuf.Duration value = 1 [(buf.validate.field).duration.in = ["1s", "2s", "3s"]]; + // } + // ``` + repeated google.protobuf.Duration in = 7 [(priv.field).cel = { + id: "duration.in", + expression: "!(this in dyn(rules)['in']) ? 'value must be in list %s'.format([dyn(rules)['in']]) : ''", + }]; + + // `not_in` denotes that the field must not be equal to + // any of the specified values of the `google.protobuf.Duration` type. + // If the field's value matches any of these values, an error message will be + // generated. + // + // ```proto + // message MyDuration { + // // value must not be in list [1s, 2s, 3s] + // google.protobuf.Duration value = 1 [(buf.validate.field).duration.not_in = ["1s", "2s", "3s"]]; + // } + // ``` + repeated google.protobuf.Duration not_in = 8 [(priv.field).cel = { + id: "duration.not_in", + expression: "this in rules.not_in ? 'value must not be in list %s'.format([rules.not_in]) : ''", + }]; +} + +// TimestampRules describe the constraints applied exclusively to the `google.protobuf.Timestamp` well-known type. +message TimestampRules { + // `const` dictates that this field, of the `google.protobuf.Timestamp` type, must exactly match the specified value. If the field value doesn't correspond to the specified timestamp, an error message will be generated. + // + // ```proto + // message MyTimestamp { + // // value must equal 2023-05-03T10:00:00Z + // google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.const = {seconds: 1727998800}]; + // } + // ``` + optional google.protobuf.Timestamp const = 2 [(priv.field).cel = { + id: "timestamp.const", + expression: "this != rules.const ? 'value must equal %s'.format([rules.const]) : ''", + }]; + oneof less_than { + // requires the duration field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated. + // + // ```proto + // message MyDuration { + // // duration must be less than 'P3D' [duration.lt] + // google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 259200 }]; + // } + // ``` + google.protobuf.Timestamp lt = 3 [(priv.field).cel = { + id: "timestamp.lt", + expression: + "!has(rules.gte) && !has(rules.gt) && this >= rules.lt" + "? 'value must be less than %s'.format([rules.lt]) : ''" + }]; + + // requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated. + // + // ```proto + // message MyTimestamp { + // // timestamp must be less than or equal to '2023-05-14T00:00:00Z' [timestamp.lte] + // google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lte = { seconds: 1678867200 }]; + // } + // ``` + google.protobuf.Timestamp lte = 4 [(priv.field).cel = { + id: "timestamp.lte", + expression: + "!has(rules.gte) && !has(rules.gt) && this > rules.lte" + "? 'value must be less than or equal to %s'.format([rules.lte]) : ''" + }]; + + // `lt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be less than the current time. `lt_now` can only be used with the `within` rule. + // + // ```proto + // message MyTimestamp { + // // value must be less than now + // google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.lt_now = true]; + // } + // ``` + bool lt_now = 7 [(priv.field).cel = { + id: "timestamp.lt_now", + expression: "this > now ? 'value must be less than now' : ''" + }]; + } + oneof greater_than { + // `gt` requires the timestamp field value to be greater than the specified + // value (exclusive). If the value of `gt` is larger than a specified `lt` + // or `lte`, the range is reversed, and the field value must be outside the + // specified range. If the field value doesn't meet the required conditions, + // an error message is generated. + // + // ```proto + // message MyTimestamp { + // // timestamp must be greater than '2023-01-01T00:00:00Z' [timestamp.gt] + // google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gt = { seconds: 1672444800 }]; + // + // // timestamp must be greater than '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gt_lt] + // google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gt: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }]; + // + // // timestamp must be greater than '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gt_lt_exclusive] + // google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gt: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }]; + // } + // ``` + google.protobuf.Timestamp gt = 5 [ + (priv.field).cel = { + id: "timestamp.gt", + expression: + "!has(rules.lt) && !has(rules.lte) && this <= rules.gt" + "? 'value must be greater than %s'.format([rules.gt]) : ''" + }, + (priv.field).cel = { + id: "timestamp.gt_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gt && (this >= rules.lt || this <= rules.gt)" + "? 'value must be greater than %s and less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "timestamp.gt_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gt && (rules.lt <= this && this <= rules.gt)" + "? 'value must be greater than %s or less than %s'.format([rules.gt, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "timestamp.gt_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gt && (this > rules.lte || this <= rules.gt)" + "? 'value must be greater than %s and less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "timestamp.gt_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gt && (rules.lte < this && this <= rules.gt)" + "? 'value must be greater than %s or less than or equal to %s'.format([rules.gt, rules.lte]) : ''" + } + ]; + + // `gte` requires the timestamp field value to be greater than or equal to the + // specified value (exclusive). If the value of `gte` is larger than a + // specified `lt` or `lte`, the range is reversed, and the field value + // must be outside the specified range. If the field value doesn't meet + // the required conditions, an error message is generated. + // + // ```proto + // message MyTimestamp { + // // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' [timestamp.gte] + // google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gte = { seconds: 1672444800 }]; + // + // // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gte_lt] + // google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gte: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }]; + // + // // timestamp must be greater than or equal to '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gte_lt_exclusive] + // google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gte: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }]; + // } + // ``` + google.protobuf.Timestamp gte = 6 [ + (priv.field).cel = { + id: "timestamp.gte", + expression: + "!has(rules.lt) && !has(rules.lte) && this < rules.gte" + "? 'value must be greater than or equal to %s'.format([rules.gte]) : ''" + }, + (priv.field).cel = { + id: "timestamp.gte_lt", + expression: + "has(rules.lt) && rules.lt >= rules.gte && (this >= rules.lt || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "timestamp.gte_lt_exclusive", + expression: + "has(rules.lt) && rules.lt < rules.gte && (rules.lt <= this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than %s'.format([rules.gte, rules.lt]) : ''" + }, + (priv.field).cel = { + id: "timestamp.gte_lte", + expression: + "has(rules.lte) && rules.lte >= rules.gte && (this > rules.lte || this < rules.gte)" + "? 'value must be greater than or equal to %s and less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + }, + (priv.field).cel = { + id: "timestamp.gte_lte_exclusive", + expression: + "has(rules.lte) && rules.lte < rules.gte && (rules.lte < this && this < rules.gte)" + "? 'value must be greater than or equal to %s or less than or equal to %s'.format([rules.gte, rules.lte]) : ''" + } + ]; + + // `gt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be greater than the current time. `gt_now` can only be used with the `within` rule. + // + // ```proto + // message MyTimestamp { + // // value must be greater than now + // google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.gt_now = true]; + // } + // ``` + bool gt_now = 8 [(priv.field).cel = { + id: "timestamp.gt_now", + expression: "this < now ? 'value must be greater than now' : ''" + }]; + } + + // `within` specifies that this field, of the `google.protobuf.Timestamp` type, must be within the specified duration of the current time. If the field value isn't within the duration, an error message is generated. + // + // ```proto + // message MyTimestamp { + // // value must be within 1 hour of now + // google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.within = {seconds: 3600}]; + // } + // ``` + optional google.protobuf.Duration within = 9 [(priv.field).cel = { + id: "timestamp.within", + expression: "this < now-rules.within || this > now+rules.within ? 'value must be within %s of now'.format([rules.within]) : ''" + }]; +} diff --git a/proto/cerbos/audit/v1/audit.proto b/proto/cerbos/audit/v1/audit.proto index 8e64675..1927598 100644 --- a/proto/cerbos/audit/v1/audit.proto +++ b/proto/cerbos/audit/v1/audit.proto @@ -1,4 +1,4 @@ -// Copyright 2021-2023 Zenauth Ltd. +// Copyright 2021-2024 Zenauth Ltd. // SPDX-License-Identifier: Apache-2.0 syntax = "proto3"; @@ -6,6 +6,7 @@ syntax = "proto3"; package cerbos.audit.v1; import "cerbos/engine/v1/engine.proto"; +import "cerbos/policy/v1/policy.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Cerbos.Api.V1.Audit"; @@ -48,6 +49,7 @@ message DecisionLogEntry { PlanResources plan_resources = 8; } map metadata = 15; + AuditTrail audit_trail = 16; } message MetaValues { @@ -60,3 +62,7 @@ message Peer { string user_agent = 3; string forwarded_for = 4; } + +message AuditTrail { + map effective_policies = 1; +} diff --git a/proto/cerbos/effect/v1/effect.proto b/proto/cerbos/effect/v1/effect.proto index 00fd3ce..97c37a8 100644 --- a/proto/cerbos/effect/v1/effect.proto +++ b/proto/cerbos/effect/v1/effect.proto @@ -1,4 +1,4 @@ -// Copyright 2021-2023 Zenauth Ltd. +// Copyright 2021-2024 Zenauth Ltd. // SPDX-License-Identifier: Apache-2.0 syntax = "proto3"; diff --git a/proto/cerbos/engine/v1/engine.proto b/proto/cerbos/engine/v1/engine.proto index 35f4562..022b818 100644 --- a/proto/cerbos/engine/v1/engine.proto +++ b/proto/cerbos/engine/v1/engine.proto @@ -1,17 +1,17 @@ -// Copyright 2021-2023 Zenauth Ltd. +// Copyright 2021-2024 Zenauth Ltd. // SPDX-License-Identifier: Apache-2.0 syntax = "proto3"; package cerbos.engine.v1; +import "buf/validate/validate.proto"; import "cerbos/effect/v1/effect.proto"; import "cerbos/schema/v1/schema.proto"; import "google/api/expr/v1alpha1/checked.proto"; import "google/api/field_behavior.proto"; import "google/protobuf/struct.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; -import "validate/validate.proto"; option csharp_namespace = "Cerbos.Api.V1.Engine"; option go_package = "github.com/cerbos/cerbos/api/genpb/cerbos/engine/v1;enginev1"; @@ -20,25 +20,19 @@ option java_package = "dev.cerbos.api.v1.engine"; message PlanResourcesInput { message Resource { string kind = 1 [ - (validate.rules).string = { - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-/]*(\\:[[:alpha:]][[:word:]\\@\\.\\-/]*)*$", - min_len: 1 - }, + (buf.validate.field).string = {min_len: 1}, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Resource kind." example: "\"album:object\"" - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" } ]; - map attr = 2 [ - (validate.rules).map.no_sparse = true, - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Key-value pairs of contextual data about the resource that are known at a time of the request."} - ]; + map attr = 2 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Key-value pairs of contextual data about the resource that are known at a time of the request."}]; string policy_version = 3 [ - (validate.rules).string.pattern = "^[[:word:]]*$", + (buf.validate.field).string = {pattern: "^[[:word:]]*$"}, (google.api.field_behavior) = OPTIONAL, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "The policy version to use to evaluate this request. If not specified, will default to the server-configured default version.", @@ -48,7 +42,7 @@ message PlanResourcesInput { ]; string scope = 4 [ - (validate.rules).string.pattern = "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$", + (buf.validate.field).string = {pattern: "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$"}, (google.api.field_behavior) = OPTIONAL, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "A dot-separated scope that describes the hierarchy this resource belongs to. This is used for determining policy inheritance." @@ -132,15 +126,15 @@ message PlanResourcesOutput { message CheckInput { string request_id = 1; Resource resource = 2 [ - (validate.rules).message.required = true, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; Principal principal = 3 [ - (validate.rules).message.required = true, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; repeated string actions = 4 [ - (validate.rules).repeated = { + (buf.validate.field).repeated = { unique: true, items { string {min_len: 1} @@ -179,19 +173,16 @@ message OutputEntry { message Resource { string kind = 1 [ - (validate.rules).string = { - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-/]*(\\:[[:alpha:]][[:word:]\\@\\.\\-/]*)*$", - min_len: 1 - }, + (buf.validate.field).required = true, + (buf.validate.field).string = {min_len: 1}, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Name of the resource kind being accessed.", example: "\"album:photo\"", - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" } ]; string policy_version = 2 [ - (validate.rules).string.pattern = "^[[:word:]]*$", + (buf.validate.field).string = {pattern: "^[[:word:]]*$"}, (google.api.field_behavior) = OPTIONAL, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "The policy version to use to evaluate this request. If not specified, will default to the server-configured default version." @@ -200,7 +191,8 @@ message Resource { } ]; string id = 3 [ - (validate.rules).string = {min_len: 1}, + (buf.validate.field).required = true, + (buf.validate.field).string = {min_len: 1}, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "ID of the resource instance" @@ -208,14 +200,17 @@ message Resource { } ]; map attr = 4 [ - (validate.rules).map.no_sparse = true, + (buf.validate.field).map.keys = { + string: {min_len: 1} + }, + (buf.validate.field).map.values.required = true, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Kay-value pairs of contextual data about this resource that should be used during policy evaluation." example: "{\"owner\": \"bugs_bunny\"}" } ]; string scope = 5 [ - (validate.rules).string.pattern = "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$", + (buf.validate.field).string = {pattern: "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$"}, (google.api.field_behavior) = OPTIONAL, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "A dot-separated scope that describes the hierarchy this resource belongs to. This is used for determining policy inheritance." @@ -230,7 +225,8 @@ message Principal { json_schema: {description: "A person or application attempting to perform the actions on the set of resources."} }; string id = 1 [ - (validate.rules).string = {min_len: 1}, + (buf.validate.field).required = true, + (buf.validate.field).string = {min_len: 1}, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "ID of the principal" @@ -238,7 +234,7 @@ message Principal { } ]; string policy_version = 2 [ - (validate.rules).string.pattern = "^[[:word:]]*$", + (buf.validate.field).string = {pattern: "^[[:word:]]*$"}, (google.api.field_behavior) = OPTIONAL, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "The policy version to use to evaluate this request. If not specified, will default to the server-configured default version." @@ -247,31 +243,34 @@ message Principal { } ]; repeated string roles = 3 [ - (validate.rules).repeated = { + (buf.validate.field).repeated = { unique: true, min_items: 1, items { - string {pattern: "^[[:word:]\\-\\.]+$"} + string {min_len: 1} } }, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Roles assigned to this principal from your identity management system." min_items: 1 - pattern: "^[[:word:]\\-\\.]+$" unique_items: true example: "[\"user\"]" } ]; map attr = 4 [ - (validate.rules).map.no_sparse = true, + (buf.validate.field).map.keys = { + string: {min_len: 1} + }, + (buf.validate.field).map.values.required = true, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Key-value pairs of contextual data about this principal that should be used during policy evaluation." example: "{\"beta_tester\": true}" } ]; string scope = 5 [ - (validate.rules).string.pattern = "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$", + (buf.validate.field).string = {pattern: "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$"}, (google.api.field_behavior) = OPTIONAL, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "A dot-separated scope that describes the hierarchy this principal belongs to. This is used for determining policy inheritance." @@ -346,3 +345,27 @@ message Trace { repeated Component components = 1; Event event = 2; } + +// Data from the request, provided to expressions as the top-level `request` variable. +message Request { + message Principal { + string id = 1; + repeated string roles = 2; + map attr = 3; + } + + message Resource { + string kind = 1; + string id = 2; + map attr = 3; + } + + Principal principal = 1; + Resource resource = 2; + AuxData aux_data = 3; +} + +// Data from the runtime, provided to expressions as the top-level `runtime` variable. +message Runtime { + repeated string effective_derived_roles = 1; +} diff --git a/proto/cerbos/policy/v1/policy.proto b/proto/cerbos/policy/v1/policy.proto index 551dccd..46a999b 100644 --- a/proto/cerbos/policy/v1/policy.proto +++ b/proto/cerbos/policy/v1/policy.proto @@ -1,28 +1,31 @@ -// Copyright 2021-2023 Zenauth Ltd. +// Copyright 2021-2024 Zenauth Ltd. // SPDX-License-Identifier: Apache-2.0 syntax = "proto3"; package cerbos.policy.v1; +import "buf/validate/validate.proto"; import "cerbos/effect/v1/effect.proto"; import "cerbos/engine/v1/engine.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; -import "validate/validate.proto"; option csharp_namespace = "Cerbos.Api.V1.Policy"; option go_package = "github.com/cerbos/cerbos/api/genpb/cerbos/policy/v1;policyv1"; option java_package = "dev.cerbos.api.v1.policy"; message Policy { - string api_version = 1 [(validate.rules).string.const = "api.cerbos.dev/v1"]; + string api_version = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string.const = "api.cerbos.dev/v1" + ]; bool disabled = 2; string description = 3; Metadata metadata = 4; oneof policy_type { - option (validate.required) = true; + option (buf.validate.oneof).required = true; ResourcePolicy resource_policy = 5; PrincipalPolicy principal_policy = 6; DerivedRoles derived_roles = 7; @@ -32,123 +35,167 @@ message Policy { string json_schema = 9 [json_name = "$schema"]; } +message SourceAttributes { + map attributes = 1; +} + message Metadata { string source_file = 1; map annotations = 2; google.protobuf.UInt64Value hash = 3; string store_identifer = 4 [deprecated = true]; string store_identifier = 5; + SourceAttributes source_attributes = 6; } message ResourcePolicy { - string resource = 1 [(validate.rules).string = { - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-/]*(\\:[[:alpha:]][[:word:]\\@\\.\\-/]*)*$", - min_len: 1 - }]; - string version = 2 [(validate.rules).string.pattern = "^[[:word:]]+$"]; - repeated string import_derived_roles = 3 [(validate.rules).repeated = { + string resource = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string = {min_len: 1} + ]; + string version = 2 [ + (buf.validate.field).required = true, + (buf.validate.field).string = {pattern: "^[[:word:]]+$"} + ]; + repeated string import_derived_roles = 3 [(buf.validate.field).repeated = { unique: true, items { string {pattern: "^[[:word:]\\-\\.]+$"} } }]; repeated ResourceRule rules = 4; - string scope = 5 [(validate.rules).string.pattern = "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$"]; + string scope = 5 [(buf.validate.field).string.pattern = "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$"]; Schemas schemas = 6; Variables variables = 7; } message ResourceRule { - repeated string actions = 1 [(validate.rules).repeated = { - min_items: 1, - unique: true, - items { - string {min_len: 1} - } - }]; - repeated string derived_roles = 2 [(validate.rules).repeated = { + repeated string actions = 1 [ + (buf.validate.field).repeated = { + min_items: 1, + unique: true, + items { + string {min_len: 1} + } + }, + (buf.validate.field).required = true + ]; + repeated string derived_roles = 2 [(buf.validate.field).repeated = { unique: true, items { string {pattern: "^[[:word:]\\-\\.]+$"} } }]; - repeated string roles = 3 [(validate.rules).repeated = { + repeated string roles = 3 [(buf.validate.field).repeated = { unique: true, items { - string {pattern: "^([[:word:]\\-\\.]+|\\*)$"} + string {min_len: 1} } }]; Condition condition = 4; - cerbos.effect.v1.Effect effect = 5 [(validate.rules).enum = { - in: [ - 1, - 2 - ] - }]; - string name = 6 [(validate.rules).string.pattern = "^([[:alpha:]][[:word:]\\@\\.\\-]*)*$"]; + cerbos.effect.v1.Effect effect = 5 [ + (buf.validate.field).enum = { + in: [ + 1, + 2 + ] + }, + (buf.validate.field).required = true + ]; + string name = 6 [(buf.validate.field).string.pattern = "^([[:alpha:]][[:word:]\\@\\.\\-]*)*$"]; Output output = 7; } message PrincipalPolicy { - string principal = 1 [(validate.rules).string = { - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$", - min_len: 1 - }]; - string version = 2 [(validate.rules).string.pattern = "^[[:word:]]+$"]; + string principal = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string = {min_len: 1} + ]; + string version = 2 [ + (buf.validate.field).required = true, + (buf.validate.field).string.pattern = "^[[:word:]]+$" + ]; repeated PrincipalRule rules = 3; - string scope = 4 [(validate.rules).string.pattern = "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$"]; + string scope = 4 [(buf.validate.field).string.pattern = "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$"]; Variables variables = 5; } message PrincipalRule { message Action { - string action = 1 [(validate.rules).string.min_len = 1]; + string action = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string = {min_len: 1} + ]; Condition condition = 2; - cerbos.effect.v1.Effect effect = 3 [(validate.rules).enum = { - in: [ - 1, - 2 - ] - }]; - string name = 4 [(validate.rules).string.pattern = "^([[:alpha:]][[:word:]\\@\\.\\-]*)*$"]; + cerbos.effect.v1.Effect effect = 3 [ + (buf.validate.field).enum = { + in: [ + 1, + 2 + ] + }, + (buf.validate.field).required = true + ]; + string name = 4 [(buf.validate.field).string.pattern = "^([[:alpha:]][[:word:]\\@\\.\\-]*)*$"]; Output output = 5; } - string resource = 1 [(validate.rules).string = {min_len: 1}]; - repeated Action actions = 2 [(validate.rules).repeated.min_items = 1]; + string resource = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string = {min_len: 1} + ]; + repeated Action actions = 2 [ + (buf.validate.field).required = true, + (buf.validate.field).repeated.min_items = 1 + ]; } message DerivedRoles { - string name = 1 [(validate.rules).string = { - pattern: "^[[:word:]\\-\\.]+$", - min_len: 1 - }]; - repeated RoleDef definitions = 2 [(validate.rules).repeated.min_items = 1]; + string name = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string = { + pattern: "^[[:word:]\\-\\.]+$", + min_len: 1 + } + ]; + repeated RoleDef definitions = 2 [ + (buf.validate.field).repeated.min_items = 1, + (buf.validate.field).required = true + ]; Variables variables = 3; } message RoleDef { - string name = 1 [(validate.rules).string.pattern = "^[[:word:]\\-\\.]+$"]; - repeated string parent_roles = 2 [(validate.rules).repeated = { - unique: true, - min_items: 1, - items { - string {pattern: "^([[:word:]\\-\\.]+|\\*)$"} - } - }]; + string name = 1 [ + (buf.validate.field).string.pattern = "^[[:word:]\\-\\.]+$", + (buf.validate.field).required = true + ]; + repeated string parent_roles = 2 [ + (buf.validate.field).repeated = { + unique: true, + min_items: 1, + items { + string {min_len: 1} + } + }, + (buf.validate.field).required = true + ]; Condition condition = 3; } message ExportVariables { - string name = 1 [(validate.rules).string = { - pattern: "^[[:word:]\\-\\.]+$", - min_len: 1 - }]; + string name = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string = { + pattern: "^[[:word:]\\-\\.]+$", + min_len: 1 + } + ]; map definitions = 2; } message Variables { - repeated string import = 1 [(validate.rules).repeated = { + repeated string import = 1 [(buf.validate.field).repeated = { unique: true, items { string {pattern: "^[[:word:]\\-\\.]+$"} @@ -159,7 +206,7 @@ message Variables { message Condition { oneof condition { - option (validate.required) = true; + option (buf.validate.oneof).required = true; Match match = 1; string script = 2; } @@ -167,11 +214,14 @@ message Condition { message Match { message ExprList { - repeated Match of = 1 [(validate.rules).repeated = {min_items: 1}]; + repeated Match of = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).repeated = {min_items: 1} + ]; } oneof op { - option (validate.required) = true; + option (buf.validate.oneof).required = true; ExprList all = 1; ExprList any = 2; ExprList none = 3; @@ -185,17 +235,23 @@ message Output { message Schemas { message IgnoreWhen { - repeated string actions = 1 [(validate.rules).repeated = { - unique: true, - min_items: 1, - items { - string {min_len: 1} - } - }]; + repeated string actions = 1 [ + (buf.validate.field).repeated = { + unique: true, + min_items: 1, + items { + string {min_len: 1} + } + }, + (buf.validate.field).required = true + ]; } message Schema { - string ref = 1 [(validate.rules).string = {min_len: 1}]; + string ref = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string = {min_len: 1} + ]; IgnoreWhen ignore_when = 2; } @@ -222,14 +278,22 @@ message TestFixture { message TestOptions { google.protobuf.Timestamp now = 1; + bool lenient_scope_search = 2; + map globals = 3; } message TestSuite { - string name = 1 [(validate.rules).string.min_len = 1]; + string name = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1 + ]; string description = 2; bool skip = 3; string skip_reason = 4; - repeated TestTable tests = 5 [(validate.rules).repeated.min_items = 1]; + repeated TestTable tests = 5 [ + (buf.validate.field).repeated.min_items = 1, + (buf.validate.field).required = true + ]; map principals = 6; map resources = 7; map aux_data = 8; @@ -239,78 +303,136 @@ message TestSuite { message TestTable { message Input { - repeated string principals = 1 [(validate.rules).repeated = { - min_items: 1, - unique: true, - items: { - string: {min_len: 1} - } - }]; - repeated string resources = 2 [(validate.rules).repeated = { - min_items: 1, - unique: true, - items: { - string: {min_len: 1} - } - }]; - repeated string actions = 3 [(validate.rules).repeated = { - min_items: 1, - unique: true, - items: { - string: {min_len: 1} - } - }]; + repeated string principals = 1 [ + (buf.validate.field).repeated = { + min_items: 1, + unique: true, + items: { + string: {min_len: 1} + } + }, + (buf.validate.field).required = true + ]; + repeated string resources = 2 [ + (buf.validate.field).repeated = { + min_items: 1, + unique: true, + items: { + string: {min_len: 1} + } + }, + (buf.validate.field).required = true + ]; + repeated string actions = 3 [ + (buf.validate.field).repeated = { + min_items: 1, + unique: true, + items: { + string: {min_len: 1} + } + }, + (buf.validate.field).required = true + ]; string aux_data = 4; } message OutputExpectations { - string action = 1 [(validate.rules).string.min_len = 1]; - repeated cerbos.engine.v1.OutputEntry expected = 2 [(validate.rules).repeated.min_items = 1]; + string action = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1 + ]; + repeated cerbos.engine.v1.OutputEntry expected = 2 [ + (buf.validate.field).repeated.min_items = 1, + (buf.validate.field).required = true + ]; } message Expectation { - string principal = 1 [(validate.rules).string.min_len = 1]; - string resource = 2 [(validate.rules).string.min_len = 1]; - map actions = 3 [(validate.rules).map = { - min_pairs: 1, - keys: { - string: {min_len: 1} - } - }]; + string principal = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1 + ]; + string resource = 2 [ + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1 + ]; + map actions = 3 [ + (buf.validate.field).map = { + min_pairs: 1, + keys: { + string: {min_len: 1} + }, + values: { + enum: { + in: [ + 1, + 2 + ] + } + } + }, + (buf.validate.field).required = true + ]; repeated OutputExpectations outputs = 4; } - string name = 1 [(validate.rules).string.min_len = 1]; + string name = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1 + ]; string description = 2; bool skip = 3; string skip_reason = 4; - Input input = 5 [(validate.rules).message.required = true]; - repeated Expectation expected = 6 [(validate.rules).repeated.min_items = 1]; + Input input = 5 [(buf.validate.field).required = true]; + repeated Expectation expected = 6 [ + (buf.validate.field).repeated.min_items = 1, + (buf.validate.field).required = true + ]; TestOptions options = 7; } message Test { message TestName { - string test_table_name = 1 [(validate.rules).string.min_len = 1]; - string principal_key = 2 [(validate.rules).string.min_len = 1]; - string resource_key = 3 [(validate.rules).string.min_len = 1]; + string test_table_name = 1 [ + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1 + ]; + string principal_key = 2 [ + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1 + ]; + string resource_key = 3 [ + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1 + ]; } message OutputEntries { map entries = 1; } - TestName name = 1 [(validate.rules).message.required = true]; + TestName name = 1 [(buf.validate.field).required = true]; string description = 2; bool skip = 3; string skip_reason = 4; - cerbos.engine.v1.CheckInput input = 5 [(validate.rules).message.required = true]; - map expected = 6 [(validate.rules).map = { - min_pairs: 1, - keys: { - string: {min_len: 1} - } - }]; + cerbos.engine.v1.CheckInput input = 5 [(buf.validate.field).required = true]; + map expected = 6 [ + (buf.validate.field).map = { + min_pairs: 1, + keys: { + string: {min_len: 1} + }, + values: { + enum: { + in: [ + 1, + 2 + ] + } + } + }, + (buf.validate.field).required = true + ]; TestOptions options = 7; map expected_outputs = 8; } @@ -370,6 +492,7 @@ message TestResults { oneof outcome { Failure failure = 2; string error = 3; + Success success = 5; } repeated cerbos.engine.v1.Trace engine_trace = 4; } @@ -397,6 +520,11 @@ message TestResults { repeated OutputFailure outputs = 3; } + message Success { + cerbos.effect.v1.Effect effect = 1; + repeated cerbos.engine.v1.OutputEntry outputs = 2; + } + repeated Suite suites = 1; Summary summary = 2; } diff --git a/proto/cerbos/request/v1/request.proto b/proto/cerbos/request/v1/request.proto index eb3cc2a..e567594 100644 --- a/proto/cerbos/request/v1/request.proto +++ b/proto/cerbos/request/v1/request.proto @@ -1,10 +1,11 @@ -// Copyright 2021-2023 Zenauth Ltd. +// Copyright 2021-2024 Zenauth Ltd. // SPDX-License-Identifier: Apache-2.0 syntax = "proto3"; package cerbos.request.v1; +import "buf/validate/validate.proto"; import "cerbos/engine/v1/engine.proto"; import "cerbos/policy/v1/policy.proto"; import "cerbos/schema/v1/schema.proto"; @@ -13,7 +14,6 @@ import "google/protobuf/duration.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; -import "validate/validate.proto"; option csharp_namespace = "Cerbos.Api.V1.Request"; option go_package = "github.com/cerbos/cerbos/api/genpb/cerbos/request/v1;requestv1"; @@ -30,7 +30,8 @@ message PlanResourcesRequest { }]; string action = 2 [ - (validate.rules).string.min_len = 1, + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Action to be applied to each resource in the list." @@ -39,12 +40,12 @@ message PlanResourcesRequest { ]; cerbos.engine.v1.Principal principal = 3 [ - (validate.rules).message.required = true, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; cerbos.engine.v1.PlanResourcesInput.Resource resource = 4 [ - (validate.rules).message.required = true, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; @@ -64,13 +65,14 @@ message CheckResourceSetRequest { example: "\"c2db17b8-4f9f-4fb1-acfd-9162a02be42b\"" }]; repeated string actions = 2 [ - (validate.rules).repeated = { + (buf.validate.field).repeated = { unique: true, min_items: 1, items { string {min_len: 1} } }, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of actions being performed on the set of resources." @@ -80,11 +82,11 @@ message CheckResourceSetRequest { } ]; cerbos.engine.v1.Principal principal = 3 [ - (validate.rules).message.required = true, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; ResourceSet resource = 4 [ - (validate.rules).message.required = true, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; bool include_meta = 5 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Opt to receive request processing metadata in the response."}]; @@ -97,19 +99,16 @@ message ResourceSet { }; string kind = 1 [ - (validate.rules).string = { - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-/]*(\\:[[:alpha:]][[:word:]\\@\\.\\-/]*)*$", - min_len: 1 - }, + (buf.validate.field).required = true, + (buf.validate.field).string = {min_len: 1}, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Resource kind." example: "\"album:object\"" - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" } ]; string policy_version = 2 [ - (validate.rules).string.pattern = "^[[:word:]]*$", + (buf.validate.field).string.pattern = "^[[:word:]]*$", (google.api.field_behavior) = OPTIONAL, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "The policy version to use to evaluate this request. If not specified, will default to the server-configured default version.", @@ -118,10 +117,8 @@ message ResourceSet { } ]; map instances = 3 [ - (validate.rules).map = { - min_pairs: 1, - no_sparse: true - }, + (buf.validate.field).map = {min_pairs: 1}, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Set of resource instances to check. Each instance must be keyed by an application-specific unique identifier.", @@ -130,7 +127,7 @@ message ResourceSet { } ]; string scope = 4 [ - (validate.rules).string.pattern = "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$", + (buf.validate.field).string.pattern = "^([[:alnum:]][[:word:]\\-]*(\\.[[:word:]\\-]*)*)*$", (google.api.field_behavior) = OPTIONAL, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "A dot-separated scope that describes the hierarchy these resources belong to. This is used for determining policy inheritance." @@ -144,10 +141,7 @@ message AttributesMap { json_schema: {description: "Unique identifier for the resource instance."} }; - map attr = 1 [ - (validate.rules).map.no_sparse = true, - (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Key-value pairs of contextual data about this instance that should be used during policy evaluation."} - ]; + map attr = 1 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Key-value pairs of contextual data about this instance that should be used during policy evaluation."}]; } // Deprecated. See CheckResourcesRequest. @@ -158,13 +152,14 @@ message CheckResourceBatchRequest { message BatchEntry { repeated string actions = 1 [ - (validate.rules).repeated = { + (buf.validate.field).repeated = { unique: true, min_items: 1, items { string {min_len: 1} } }, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of actions being performed on the resource." @@ -174,7 +169,7 @@ message CheckResourceBatchRequest { } ]; cerbos.engine.v1.Resource resource = 2 [ - (validate.rules).message.required = true, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; } @@ -184,11 +179,12 @@ message CheckResourceBatchRequest { example: "\"c2db17b8-4f9f-4fb1-acfd-9162a02be42b\"" }]; cerbos.engine.v1.Principal principal = 2 [ - (validate.rules).message.required = true, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; repeated BatchEntry resources = 3 [ - (validate.rules).repeated = {min_items: 1}, + (buf.validate.field).repeated = {min_items: 1}, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of resources and actions." @@ -208,13 +204,14 @@ message CheckResourcesRequest { message ResourceEntry { repeated string actions = 1 [ - (validate.rules).repeated = { + (buf.validate.field).repeated = { unique: true, min_items: 1, items { string {min_len: 1} } }, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of actions being performed on the resource." @@ -224,7 +221,7 @@ message CheckResourcesRequest { } ]; cerbos.engine.v1.Resource resource = 2 [ - (validate.rules).message.required = true, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; } @@ -235,11 +232,12 @@ message CheckResourcesRequest { }]; bool include_meta = 2 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Add request processing metadata to the response."}]; cerbos.engine.v1.Principal principal = 3 [ - (validate.rules).message.required = true, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; repeated ResourceEntry resources = 4 [ - (validate.rules).repeated = {min_items: 1}, + (buf.validate.field).repeated = {min_items: 1}, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of resources and actions." @@ -262,7 +260,8 @@ message AuxData { }; string token = 1 [ - (validate.rules).string = {min_len: 1}, + (buf.validate.field).required = true, + (buf.validate.field).string = {min_len: 1}, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "JWT from the original request" @@ -296,15 +295,17 @@ message AuxData { message File { string file_name = 1 [ - (validate.rules).string.min_len = 1, + (buf.validate.field).required = true, + (buf.validate.field).string.min_len = 1, (google.api.field_behavior) = REQUIRED ]; bytes contents = 2 [ - (validate.rules).bytes = { + (buf.validate.field).bytes = { min_len: 1, max_len: 1048576 }, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; } @@ -317,10 +318,11 @@ message PlaygroundValidateRequest { string playground_id = 1; repeated File files = 2 [ - (validate.rules).repeated = { + (buf.validate.field).repeated = { min_items: 1, max_items: 30 }, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of files." @@ -338,10 +340,11 @@ message PlaygroundTestRequest { string playground_id = 1; repeated File files = 2 [ - (validate.rules).repeated = { + (buf.validate.field).repeated = { min_items: 1, max_items: 30 }, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of files." @@ -359,10 +362,11 @@ message PlaygroundEvaluateRequest { string playground_id = 1; repeated File files = 2 [ - (validate.rules).repeated = { + (buf.validate.field).repeated = { min_items: 1, max_items: 30 }, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of files." @@ -372,17 +376,17 @@ message PlaygroundEvaluateRequest { ]; cerbos.engine.v1.Principal principal = 3 [ - (validate.rules).message.required = true, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; cerbos.engine.v1.Resource resource = 4 [ - (validate.rules).message.required = true, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED ]; repeated string actions = 5 [ - (validate.rules).repeated = { + (buf.validate.field).repeated = { unique: true, min_items: 1, max_items: 50, @@ -390,6 +394,7 @@ message PlaygroundEvaluateRequest { string {min_len: 1} } }, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of actions being performed on the resource." @@ -410,10 +415,11 @@ message PlaygroundProxyRequest { string playground_id = 1; repeated File files = 2 [ - (validate.rules).repeated = { + (buf.validate.field).repeated = { min_items: 1, max_items: 30 }, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of files." @@ -423,7 +429,7 @@ message PlaygroundProxyRequest { ]; oneof proxy_request { - option (validate.required) = true; + option (buf.validate.oneof).required = true; CheckResourceSetRequest check_resource_set = 3; CheckResourceBatchRequest check_resource_batch = 4; PlanResourcesRequest plan_resources = 5; @@ -437,10 +443,11 @@ message AddOrUpdatePolicyRequest { }; repeated cerbos.policy.v1.Policy policies = 1 [ - (validate.rules).repeated = { + (buf.validate.field).repeated = { min_items: 1, max_items: 10 }, + (buf.validate.field).required = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of policies." @@ -463,10 +470,8 @@ message ListAuditLogEntriesRequest { }; google.protobuf.Timestamp start = 1 [ - (validate.rules).timestamp = { - required: true, - lt_now: true, - }, + (buf.validate.field).required = true, + (buf.validate.field).timestamp.lt_now = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Start date in ISO 8601 format." @@ -474,10 +479,8 @@ message ListAuditLogEntriesRequest { } ]; google.protobuf.Timestamp end = 2 [ - (validate.rules).timestamp = { - required: true, - lt_now: true, - }, + (buf.validate.field).required = true, + (buf.validate.field).timestamp.lt_now = true, (google.api.field_behavior) = REQUIRED, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "End date in ISO 8601 format." @@ -487,12 +490,13 @@ message ListAuditLogEntriesRequest { } Kind kind = 1 [ - (validate.rules).enum = { + (buf.validate.field).enum = { in: [ 1, 2 ] }, + (buf.validate.field).required = true, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Kind of log entry" enum: [ @@ -502,9 +506,10 @@ message ListAuditLogEntriesRequest { } ]; oneof filter { - option (validate.required) = true; + option (buf.validate.oneof).required = true; uint32 tail = 2 [ - (validate.rules).uint32.lte = 1000, + (buf.validate.field).uint32.gte = 1, + (buf.validate.field).uint32.lte = 1000, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Last N entries." minimum: 1 @@ -514,7 +519,7 @@ message ListAuditLogEntriesRequest { TimeRange between = 3; google.protobuf.Duration since = 4 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Entries since N hours/minutes ago"}]; string lookup = 5 [ - (validate.rules).string = {pattern: "^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$"}, + (buf.validate.field).string = {pattern: "^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$"}, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "By Call ID" pattern: "^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{26}$" @@ -557,7 +562,7 @@ message GetPolicyRequest { }; repeated string id = 1 [ (google.api.field_behavior) = REQUIRED, - (validate.rules).repeated = { + (buf.validate.field).repeated = { unique: true, min_items: 1, max_items: 25, @@ -568,6 +573,7 @@ message GetPolicyRequest { } } }, + (buf.validate.field).required = true, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "For blob, disk, git stores use file name (.yaml). For mysql, postgres, sqlite3 use id (..) of the policy" example: "\"principal.sarah.vdefault\"" @@ -581,7 +587,7 @@ message DisablePolicyRequest { }; repeated string id = 1 [ (google.api.field_behavior) = REQUIRED, - (validate.rules).repeated = { + (buf.validate.field).repeated = { unique: true, min_items: 1, max_items: 25, @@ -592,6 +598,7 @@ message DisablePolicyRequest { } } }, + (buf.validate.field).required = true, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Unique identifier for the policy" example: "\"principal.sarah.vdefault\"" @@ -605,7 +612,7 @@ message EnablePolicyRequest { }; repeated string id = 1 [ (google.api.field_behavior) = REQUIRED, - (validate.rules).repeated = { + (buf.validate.field).repeated = { unique: true, min_items: 1, max_items: 25, @@ -616,6 +623,7 @@ message EnablePolicyRequest { } } }, + (buf.validate.field).required = true, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Unique identifier for the policy" example: "\"principal.sarah.vdefault\"" @@ -630,10 +638,11 @@ message AddOrUpdateSchemaRequest { repeated cerbos.schema.v1.Schema schemas = 1 [ (google.api.field_behavior) = REQUIRED, - (validate.rules).repeated = { + (buf.validate.field).repeated = { min_items: 1, max_items: 10 }, + (buf.validate.field).required = true, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "List of schemas." min_items: 1 @@ -654,7 +663,7 @@ message GetSchemaRequest { }; repeated string id = 1 [ (google.api.field_behavior) = REQUIRED, - (validate.rules).repeated = { + (buf.validate.field).repeated = { unique: true, min_items: 1, max_items: 25, @@ -665,6 +674,7 @@ message GetSchemaRequest { } } }, + (buf.validate.field).required = true, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Unique identifier for the schema" example: "\"principal.json\"" @@ -678,7 +688,7 @@ message DeleteSchemaRequest { }; repeated string id = 1 [ (google.api.field_behavior) = REQUIRED, - (validate.rules).repeated = { + (buf.validate.field).repeated = { unique: true, min_items: 1, max_items: 25, @@ -689,6 +699,7 @@ message DeleteSchemaRequest { } } }, + (buf.validate.field).required = true, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Unique identifier for the schema" example: "\"principal.json\"" diff --git a/proto/cerbos/response/v1/response.proto b/proto/cerbos/response/v1/response.proto index 7da19e3..9c236f6 100644 --- a/proto/cerbos/response/v1/response.proto +++ b/proto/cerbos/response/v1/response.proto @@ -1,4 +1,4 @@ -// Copyright 2021-2023 Zenauth Ltd. +// Copyright 2021-2024 Zenauth Ltd. // SPDX-License-Identifier: Apache-2.0 syntax = "proto3"; @@ -48,7 +48,6 @@ message PlanResourcesResponse { string resource_kind = 3 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Resource kind." example: "\"album:object\"" - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" }]; string policy_version = 4 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { @@ -61,6 +60,8 @@ message PlanResourcesResponse { Meta meta = 6 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Optional metadata about the request evaluation process"}]; repeated cerbos.schema.v1.ValidationError validation_errors = 7 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "List of validation errors (if schema validation is enabled)"}]; + + string cerbos_call_id = 8 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Audit log call ID associated with this request"}]; } // Deprecated. See CheckResourcesResponse. @@ -166,7 +167,6 @@ message CheckResourcesResponse { string kind = 2 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "Name of the resource kind being accessed.", example: "\"album:photo\"", - pattern: "^[[:alpha:]][[:word:]\\@\\.\\-]*(\\:[[:alpha:]][[:word:]\\@\\.\\-]*)*$" }]; string policy_version = 3 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "The policy version to use to evaluate this request. If not specified, will default to the server-configured default version." @@ -233,6 +233,7 @@ message CheckResourcesResponse { description: "Result for each resource" example: "[{\"resource\": {\"Id\":\"XX125\", \"kind\":\"album:object\"}, \"actions\":{\"view\":\"EFFECT_ALLOW\",\"comment\":\"EFFECT_DENY\"}}]" }]; + string cerbos_call_id = 3 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "Audit log call ID associated with this request"}]; } message PlaygroundFailure { diff --git a/proto/cerbos/schema/v1/schema.proto b/proto/cerbos/schema/v1/schema.proto index e19a7a1..853a002 100644 --- a/proto/cerbos/schema/v1/schema.proto +++ b/proto/cerbos/schema/v1/schema.proto @@ -1,13 +1,13 @@ -// Copyright 2021-2023 Zenauth Ltd. +// Copyright 2021-2024 Zenauth Ltd. // SPDX-License-Identifier: Apache-2.0 syntax = "proto3"; package cerbos.schema.v1; +import "buf/validate/validate.proto"; import "google/api/field_behavior.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; -import "validate/validate.proto"; option csharp_namespace = "Cerbos.Api.V1.Schema"; option go_package = "github.com/cerbos/cerbos/api/genpb/cerbos/schema/v1;schemav1"; @@ -28,7 +28,8 @@ message ValidationError { message Schema { string id = 1 [ (google.api.field_behavior) = REQUIRED, - (validate.rules).string = { + (buf.validate.field).required = true, + (buf.validate.field).string = { min_len: 1, max_len: 255 }, @@ -39,7 +40,8 @@ message Schema { ]; bytes definition = 2 [ (google.api.field_behavior) = REQUIRED, - (validate.rules).bytes = {min_len: 10}, + (buf.validate.field).bytes = {min_len: 10}, + (buf.validate.field).required = true, (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { description: "JSON schema definition" example: "{\"type\":\"object\", \"properties\":{}}" diff --git a/proto/cerbos/svc/v1/svc.proto b/proto/cerbos/svc/v1/svc.proto index 918f478..6269932 100644 --- a/proto/cerbos/svc/v1/svc.proto +++ b/proto/cerbos/svc/v1/svc.proto @@ -1,4 +1,4 @@ -// Copyright 2021-2023 Zenauth Ltd. +// Copyright 2021-2024 Zenauth Ltd. // SPDX-License-Identifier: Apache-2.0 syntax = "proto3"; diff --git a/proto/cerbos/telemetry/v1/telemetry.proto b/proto/cerbos/telemetry/v1/telemetry.proto index e971e21..2854ac9 100644 --- a/proto/cerbos/telemetry/v1/telemetry.proto +++ b/proto/cerbos/telemetry/v1/telemetry.proto @@ -1,4 +1,4 @@ -// Copyright 2021-2023 Zenauth Ltd. +// Copyright 2021-2024 Zenauth Ltd. // SPDX-License-Identifier: Apache-2.0 syntax = "proto3"; diff --git a/proto/google/api/field_behavior.proto b/proto/google/api/field_behavior.proto index 1a3a2f2..344cb0b 100644 --- a/proto/google/api/field_behavior.proto +++ b/proto/google/api/field_behavior.proto @@ -87,4 +87,18 @@ enum FieldBehavior { // a non-empty value will be returned. The user will not be aware of what // non-empty value to expect. NON_EMPTY_DEFAULT = 7; + + // Denotes that the field in a resource (a message annotated with + // google.api.resource) is used in the resource name to uniquely identify the + // resource. For AIP-compliant APIs, this should only be applied to the + // `name` field on the resource. + // + // This behavior should not be applied to references to other resources within + // the message. + // + // The identifier field of resources often have different field behavior + // depending on the request it is embedded in (e.g. for Create methods name + // is optional and unused, while for Update methods it is required). Instead + // of method-specific annotations, only `IDENTIFIER` is required. + IDENTIFIER = 8; } diff --git a/proto/protoc-gen-openapiv2/options/openapiv2.proto b/proto/protoc-gen-openapiv2/options/openapiv2.proto index 34ddb52..9a17f02 100644 --- a/proto/protoc-gen-openapiv2/options/openapiv2.proto +++ b/proto/protoc-gen-openapiv2/options/openapiv2.proto @@ -34,7 +34,7 @@ enum Scheme { // }; // license: { // name: "BSD 3-Clause License"; -// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE.txt"; +// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE"; // }; // }; // schemes: HTTPS; @@ -309,7 +309,7 @@ message Response { // }; // license: { // name: "BSD 3-Clause License"; -// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE.txt"; +// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE"; // }; // }; // ... @@ -377,7 +377,7 @@ message Contact { // ... // license: { // name: "BSD 3-Clause License"; -// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE.txt"; +// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE"; // }; // ... // }; diff --git a/proto/validate/validate.proto b/proto/validate/validate.proto deleted file mode 100644 index 705d382..0000000 --- a/proto/validate/validate.proto +++ /dev/null @@ -1,862 +0,0 @@ -syntax = "proto2"; -package validate; - -option go_package = "github.com/envoyproxy/protoc-gen-validate/validate"; -option java_package = "io.envoyproxy.pgv.validate"; - -import "google/protobuf/descriptor.proto"; -import "google/protobuf/duration.proto"; -import "google/protobuf/timestamp.proto"; - -// Validation rules applied at the message level -extend google.protobuf.MessageOptions { - // Disabled nullifies any validation rules for this message, including any - // message fields associated with it that do support validation. - optional bool disabled = 1071; - // Ignore skips generation of validation methods for this message. - optional bool ignored = 1072; -} - -// Validation rules applied at the oneof level -extend google.protobuf.OneofOptions { - // Required ensures that exactly one the field options in a oneof is set; - // validation fails if no fields in the oneof are set. - optional bool required = 1071; -} - -// Validation rules applied at the field level -extend google.protobuf.FieldOptions { - // Rules specify the validations to be performed on this field. By default, - // no validation is performed against a field. - optional FieldRules rules = 1071; -} - -// FieldRules encapsulates the rules for each type of field. Depending on the -// field, the correct set should be used to ensure proper validations. -message FieldRules { - optional MessageRules message = 17; - oneof type { - // Scalar Field Types - FloatRules float = 1; - DoubleRules double = 2; - Int32Rules int32 = 3; - Int64Rules int64 = 4; - UInt32Rules uint32 = 5; - UInt64Rules uint64 = 6; - SInt32Rules sint32 = 7; - SInt64Rules sint64 = 8; - Fixed32Rules fixed32 = 9; - Fixed64Rules fixed64 = 10; - SFixed32Rules sfixed32 = 11; - SFixed64Rules sfixed64 = 12; - BoolRules bool = 13; - StringRules string = 14; - BytesRules bytes = 15; - - // Complex Field Types - EnumRules enum = 16; - RepeatedRules repeated = 18; - MapRules map = 19; - - // Well-Known Field Types - AnyRules any = 20; - DurationRules duration = 21; - TimestampRules timestamp = 22; - } -} - -// FloatRules describes the constraints applied to `float` values -message FloatRules { - // Const specifies that this field must be exactly the specified value - optional float const = 1; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional float lt = 2; - - // Lte specifies that this field must be less than or equal to the - // specified value, inclusive - optional float lte = 3; - - // Gt specifies that this field must be greater than the specified value, - // exclusive. If the value of Gt is larger than a specified Lt or Lte, the - // range is reversed. - optional float gt = 4; - - // Gte specifies that this field must be greater than or equal to the - // specified value, inclusive. If the value of Gte is larger than a - // specified Lt or Lte, the range is reversed. - optional float gte = 5; - - // In specifies that this field must be equal to one of the specified - // values - repeated float in = 6; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated float not_in = 7; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 8; -} - -// DoubleRules describes the constraints applied to `double` values -message DoubleRules { - // Const specifies that this field must be exactly the specified value - optional double const = 1; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional double lt = 2; - - // Lte specifies that this field must be less than or equal to the - // specified value, inclusive - optional double lte = 3; - - // Gt specifies that this field must be greater than the specified value, - // exclusive. If the value of Gt is larger than a specified Lt or Lte, the - // range is reversed. - optional double gt = 4; - - // Gte specifies that this field must be greater than or equal to the - // specified value, inclusive. If the value of Gte is larger than a - // specified Lt or Lte, the range is reversed. - optional double gte = 5; - - // In specifies that this field must be equal to one of the specified - // values - repeated double in = 6; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated double not_in = 7; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 8; -} - -// Int32Rules describes the constraints applied to `int32` values -message Int32Rules { - // Const specifies that this field must be exactly the specified value - optional int32 const = 1; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional int32 lt = 2; - - // Lte specifies that this field must be less than or equal to the - // specified value, inclusive - optional int32 lte = 3; - - // Gt specifies that this field must be greater than the specified value, - // exclusive. If the value of Gt is larger than a specified Lt or Lte, the - // range is reversed. - optional int32 gt = 4; - - // Gte specifies that this field must be greater than or equal to the - // specified value, inclusive. If the value of Gte is larger than a - // specified Lt or Lte, the range is reversed. - optional int32 gte = 5; - - // In specifies that this field must be equal to one of the specified - // values - repeated int32 in = 6; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated int32 not_in = 7; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 8; -} - -// Int64Rules describes the constraints applied to `int64` values -message Int64Rules { - // Const specifies that this field must be exactly the specified value - optional int64 const = 1; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional int64 lt = 2; - - // Lte specifies that this field must be less than or equal to the - // specified value, inclusive - optional int64 lte = 3; - - // Gt specifies that this field must be greater than the specified value, - // exclusive. If the value of Gt is larger than a specified Lt or Lte, the - // range is reversed. - optional int64 gt = 4; - - // Gte specifies that this field must be greater than or equal to the - // specified value, inclusive. If the value of Gte is larger than a - // specified Lt or Lte, the range is reversed. - optional int64 gte = 5; - - // In specifies that this field must be equal to one of the specified - // values - repeated int64 in = 6; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated int64 not_in = 7; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 8; -} - -// UInt32Rules describes the constraints applied to `uint32` values -message UInt32Rules { - // Const specifies that this field must be exactly the specified value - optional uint32 const = 1; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional uint32 lt = 2; - - // Lte specifies that this field must be less than or equal to the - // specified value, inclusive - optional uint32 lte = 3; - - // Gt specifies that this field must be greater than the specified value, - // exclusive. If the value of Gt is larger than a specified Lt or Lte, the - // range is reversed. - optional uint32 gt = 4; - - // Gte specifies that this field must be greater than or equal to the - // specified value, inclusive. If the value of Gte is larger than a - // specified Lt or Lte, the range is reversed. - optional uint32 gte = 5; - - // In specifies that this field must be equal to one of the specified - // values - repeated uint32 in = 6; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated uint32 not_in = 7; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 8; -} - -// UInt64Rules describes the constraints applied to `uint64` values -message UInt64Rules { - // Const specifies that this field must be exactly the specified value - optional uint64 const = 1; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional uint64 lt = 2; - - // Lte specifies that this field must be less than or equal to the - // specified value, inclusive - optional uint64 lte = 3; - - // Gt specifies that this field must be greater than the specified value, - // exclusive. If the value of Gt is larger than a specified Lt or Lte, the - // range is reversed. - optional uint64 gt = 4; - - // Gte specifies that this field must be greater than or equal to the - // specified value, inclusive. If the value of Gte is larger than a - // specified Lt or Lte, the range is reversed. - optional uint64 gte = 5; - - // In specifies that this field must be equal to one of the specified - // values - repeated uint64 in = 6; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated uint64 not_in = 7; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 8; -} - -// SInt32Rules describes the constraints applied to `sint32` values -message SInt32Rules { - // Const specifies that this field must be exactly the specified value - optional sint32 const = 1; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional sint32 lt = 2; - - // Lte specifies that this field must be less than or equal to the - // specified value, inclusive - optional sint32 lte = 3; - - // Gt specifies that this field must be greater than the specified value, - // exclusive. If the value of Gt is larger than a specified Lt or Lte, the - // range is reversed. - optional sint32 gt = 4; - - // Gte specifies that this field must be greater than or equal to the - // specified value, inclusive. If the value of Gte is larger than a - // specified Lt or Lte, the range is reversed. - optional sint32 gte = 5; - - // In specifies that this field must be equal to one of the specified - // values - repeated sint32 in = 6; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated sint32 not_in = 7; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 8; -} - -// SInt64Rules describes the constraints applied to `sint64` values -message SInt64Rules { - // Const specifies that this field must be exactly the specified value - optional sint64 const = 1; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional sint64 lt = 2; - - // Lte specifies that this field must be less than or equal to the - // specified value, inclusive - optional sint64 lte = 3; - - // Gt specifies that this field must be greater than the specified value, - // exclusive. If the value of Gt is larger than a specified Lt or Lte, the - // range is reversed. - optional sint64 gt = 4; - - // Gte specifies that this field must be greater than or equal to the - // specified value, inclusive. If the value of Gte is larger than a - // specified Lt or Lte, the range is reversed. - optional sint64 gte = 5; - - // In specifies that this field must be equal to one of the specified - // values - repeated sint64 in = 6; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated sint64 not_in = 7; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 8; -} - -// Fixed32Rules describes the constraints applied to `fixed32` values -message Fixed32Rules { - // Const specifies that this field must be exactly the specified value - optional fixed32 const = 1; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional fixed32 lt = 2; - - // Lte specifies that this field must be less than or equal to the - // specified value, inclusive - optional fixed32 lte = 3; - - // Gt specifies that this field must be greater than the specified value, - // exclusive. If the value of Gt is larger than a specified Lt or Lte, the - // range is reversed. - optional fixed32 gt = 4; - - // Gte specifies that this field must be greater than or equal to the - // specified value, inclusive. If the value of Gte is larger than a - // specified Lt or Lte, the range is reversed. - optional fixed32 gte = 5; - - // In specifies that this field must be equal to one of the specified - // values - repeated fixed32 in = 6; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated fixed32 not_in = 7; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 8; -} - -// Fixed64Rules describes the constraints applied to `fixed64` values -message Fixed64Rules { - // Const specifies that this field must be exactly the specified value - optional fixed64 const = 1; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional fixed64 lt = 2; - - // Lte specifies that this field must be less than or equal to the - // specified value, inclusive - optional fixed64 lte = 3; - - // Gt specifies that this field must be greater than the specified value, - // exclusive. If the value of Gt is larger than a specified Lt or Lte, the - // range is reversed. - optional fixed64 gt = 4; - - // Gte specifies that this field must be greater than or equal to the - // specified value, inclusive. If the value of Gte is larger than a - // specified Lt or Lte, the range is reversed. - optional fixed64 gte = 5; - - // In specifies that this field must be equal to one of the specified - // values - repeated fixed64 in = 6; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated fixed64 not_in = 7; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 8; -} - -// SFixed32Rules describes the constraints applied to `sfixed32` values -message SFixed32Rules { - // Const specifies that this field must be exactly the specified value - optional sfixed32 const = 1; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional sfixed32 lt = 2; - - // Lte specifies that this field must be less than or equal to the - // specified value, inclusive - optional sfixed32 lte = 3; - - // Gt specifies that this field must be greater than the specified value, - // exclusive. If the value of Gt is larger than a specified Lt or Lte, the - // range is reversed. - optional sfixed32 gt = 4; - - // Gte specifies that this field must be greater than or equal to the - // specified value, inclusive. If the value of Gte is larger than a - // specified Lt or Lte, the range is reversed. - optional sfixed32 gte = 5; - - // In specifies that this field must be equal to one of the specified - // values - repeated sfixed32 in = 6; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated sfixed32 not_in = 7; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 8; -} - -// SFixed64Rules describes the constraints applied to `sfixed64` values -message SFixed64Rules { - // Const specifies that this field must be exactly the specified value - optional sfixed64 const = 1; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional sfixed64 lt = 2; - - // Lte specifies that this field must be less than or equal to the - // specified value, inclusive - optional sfixed64 lte = 3; - - // Gt specifies that this field must be greater than the specified value, - // exclusive. If the value of Gt is larger than a specified Lt or Lte, the - // range is reversed. - optional sfixed64 gt = 4; - - // Gte specifies that this field must be greater than or equal to the - // specified value, inclusive. If the value of Gte is larger than a - // specified Lt or Lte, the range is reversed. - optional sfixed64 gte = 5; - - // In specifies that this field must be equal to one of the specified - // values - repeated sfixed64 in = 6; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated sfixed64 not_in = 7; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 8; -} - -// BoolRules describes the constraints applied to `bool` values -message BoolRules { - // Const specifies that this field must be exactly the specified value - optional bool const = 1; -} - -// StringRules describe the constraints applied to `string` values -message StringRules { - // Const specifies that this field must be exactly the specified value - optional string const = 1; - - // Len specifies that this field must be the specified number of - // characters (Unicode code points). Note that the number of - // characters may differ from the number of bytes in the string. - optional uint64 len = 19; - - // MinLen specifies that this field must be the specified number of - // characters (Unicode code points) at a minimum. Note that the number of - // characters may differ from the number of bytes in the string. - optional uint64 min_len = 2; - - // MaxLen specifies that this field must be the specified number of - // characters (Unicode code points) at a maximum. Note that the number of - // characters may differ from the number of bytes in the string. - optional uint64 max_len = 3; - - // LenBytes specifies that this field must be the specified number of bytes - optional uint64 len_bytes = 20; - - // MinBytes specifies that this field must be the specified number of bytes - // at a minimum - optional uint64 min_bytes = 4; - - // MaxBytes specifies that this field must be the specified number of bytes - // at a maximum - optional uint64 max_bytes = 5; - - // Pattern specifes that this field must match against the specified - // regular expression (RE2 syntax). The included expression should elide - // any delimiters. - optional string pattern = 6; - - // Prefix specifies that this field must have the specified substring at - // the beginning of the string. - optional string prefix = 7; - - // Suffix specifies that this field must have the specified substring at - // the end of the string. - optional string suffix = 8; - - // Contains specifies that this field must have the specified substring - // anywhere in the string. - optional string contains = 9; - - // NotContains specifies that this field cannot have the specified substring - // anywhere in the string. - optional string not_contains = 23; - - // In specifies that this field must be equal to one of the specified - // values - repeated string in = 10; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated string not_in = 11; - - // WellKnown rules provide advanced constraints against common string - // patterns - oneof well_known { - // Email specifies that the field must be a valid email address as - // defined by RFC 5322 - bool email = 12; - - // Hostname specifies that the field must be a valid hostname as - // defined by RFC 1034. This constraint does not support - // internationalized domain names (IDNs). - bool hostname = 13; - - // Ip specifies that the field must be a valid IP (v4 or v6) address. - // Valid IPv6 addresses should not include surrounding square brackets. - bool ip = 14; - - // Ipv4 specifies that the field must be a valid IPv4 address. - bool ipv4 = 15; - - // Ipv6 specifies that the field must be a valid IPv6 address. Valid - // IPv6 addresses should not include surrounding square brackets. - bool ipv6 = 16; - - // Uri specifies that the field must be a valid, absolute URI as defined - // by RFC 3986 - bool uri = 17; - - // UriRef specifies that the field must be a valid URI as defined by RFC - // 3986 and may be relative or absolute. - bool uri_ref = 18; - - // Address specifies that the field must be either a valid hostname as - // defined by RFC 1034 (which does not support internationalized domain - // names or IDNs), or it can be a valid IP (v4 or v6). - bool address = 21; - - // Uuid specifies that the field must be a valid UUID as defined by - // RFC 4122 - bool uuid = 22; - - // WellKnownRegex specifies a common well known pattern defined as a regex. - KnownRegex well_known_regex = 24; - } - - // This applies to regexes HTTP_HEADER_NAME and HTTP_HEADER_VALUE to enable - // strict header validation. - // By default, this is true, and HTTP header validations are RFC-compliant. - // Setting to false will enable a looser validations that only disallows - // \r\n\0 characters, which can be used to bypass header matching rules. - optional bool strict = 25 [default = true]; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 26; -} - -// WellKnownRegex contain some well-known patterns. -enum KnownRegex { - UNKNOWN = 0; - - // HTTP header name as defined by RFC 7230. - HTTP_HEADER_NAME = 1; - - // HTTP header value as defined by RFC 7230. - HTTP_HEADER_VALUE = 2; -} - -// BytesRules describe the constraints applied to `bytes` values -message BytesRules { - // Const specifies that this field must be exactly the specified value - optional bytes const = 1; - - // Len specifies that this field must be the specified number of bytes - optional uint64 len = 13; - - // MinLen specifies that this field must be the specified number of bytes - // at a minimum - optional uint64 min_len = 2; - - // MaxLen specifies that this field must be the specified number of bytes - // at a maximum - optional uint64 max_len = 3; - - // Pattern specifes that this field must match against the specified - // regular expression (RE2 syntax). The included expression should elide - // any delimiters. - optional string pattern = 4; - - // Prefix specifies that this field must have the specified bytes at the - // beginning of the string. - optional bytes prefix = 5; - - // Suffix specifies that this field must have the specified bytes at the - // end of the string. - optional bytes suffix = 6; - - // Contains specifies that this field must have the specified bytes - // anywhere in the string. - optional bytes contains = 7; - - // In specifies that this field must be equal to one of the specified - // values - repeated bytes in = 8; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated bytes not_in = 9; - - // WellKnown rules provide advanced constraints against common byte - // patterns - oneof well_known { - // Ip specifies that the field must be a valid IP (v4 or v6) address in - // byte format - bool ip = 10; - - // Ipv4 specifies that the field must be a valid IPv4 address in byte - // format - bool ipv4 = 11; - - // Ipv6 specifies that the field must be a valid IPv6 address in byte - // format - bool ipv6 = 12; - } - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 14; -} - -// EnumRules describe the constraints applied to enum values -message EnumRules { - // Const specifies that this field must be exactly the specified value - optional int32 const = 1; - - // DefinedOnly specifies that this field must be only one of the defined - // values for this enum, failing on any undefined value. - optional bool defined_only = 2; - - // In specifies that this field must be equal to one of the specified - // values - repeated int32 in = 3; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated int32 not_in = 4; -} - -// MessageRules describe the constraints applied to embedded message values. -// For message-type fields, validation is performed recursively. -message MessageRules { - // Skip specifies that the validation rules of this field should not be - // evaluated - optional bool skip = 1; - - // Required specifies that this field must be set - optional bool required = 2; -} - -// RepeatedRules describe the constraints applied to `repeated` values -message RepeatedRules { - // MinItems specifies that this field must have the specified number of - // items at a minimum - optional uint64 min_items = 1; - - // MaxItems specifies that this field must have the specified number of - // items at a maximum - optional uint64 max_items = 2; - - // Unique specifies that all elements in this field must be unique. This - // contraint is only applicable to scalar and enum types (messages are not - // supported). - optional bool unique = 3; - - // Items specifies the contraints to be applied to each item in the field. - // Repeated message fields will still execute validation against each item - // unless skip is specified here. - optional FieldRules items = 4; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 5; -} - -// MapRules describe the constraints applied to `map` values -message MapRules { - // MinPairs specifies that this field must have the specified number of - // KVs at a minimum - optional uint64 min_pairs = 1; - - // MaxPairs specifies that this field must have the specified number of - // KVs at a maximum - optional uint64 max_pairs = 2; - - // NoSparse specifies values in this field cannot be unset. This only - // applies to map's with message value types. - optional bool no_sparse = 3; - - // Keys specifies the constraints to be applied to each key in the field. - optional FieldRules keys = 4; - - // Values specifies the constraints to be applied to the value of each key - // in the field. Message values will still have their validations evaluated - // unless skip is specified here. - optional FieldRules values = 5; - - // IgnoreEmpty specifies that the validation rules of this field should be - // evaluated only if the field is not empty - optional bool ignore_empty = 6; -} - -// AnyRules describe constraints applied exclusively to the -// `google.protobuf.Any` well-known type -message AnyRules { - // Required specifies that this field must be set - optional bool required = 1; - - // In specifies that this field's `type_url` must be equal to one of the - // specified values. - repeated string in = 2; - - // NotIn specifies that this field's `type_url` must not be equal to any of - // the specified values. - repeated string not_in = 3; -} - -// DurationRules describe the constraints applied exclusively to the -// `google.protobuf.Duration` well-known type -message DurationRules { - // Required specifies that this field must be set - optional bool required = 1; - - // Const specifies that this field must be exactly the specified value - optional google.protobuf.Duration const = 2; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional google.protobuf.Duration lt = 3; - - // Lt specifies that this field must be less than the specified value, - // inclusive - optional google.protobuf.Duration lte = 4; - - // Gt specifies that this field must be greater than the specified value, - // exclusive - optional google.protobuf.Duration gt = 5; - - // Gte specifies that this field must be greater than the specified value, - // inclusive - optional google.protobuf.Duration gte = 6; - - // In specifies that this field must be equal to one of the specified - // values - repeated google.protobuf.Duration in = 7; - - // NotIn specifies that this field cannot be equal to one of the specified - // values - repeated google.protobuf.Duration not_in = 8; -} - -// TimestampRules describe the constraints applied exclusively to the -// `google.protobuf.Timestamp` well-known type -message TimestampRules { - // Required specifies that this field must be set - optional bool required = 1; - - // Const specifies that this field must be exactly the specified value - optional google.protobuf.Timestamp const = 2; - - // Lt specifies that this field must be less than the specified value, - // exclusive - optional google.protobuf.Timestamp lt = 3; - - // Lte specifies that this field must be less than the specified value, - // inclusive - optional google.protobuf.Timestamp lte = 4; - - // Gt specifies that this field must be greater than the specified value, - // exclusive - optional google.protobuf.Timestamp gt = 5; - - // Gte specifies that this field must be greater than the specified value, - // inclusive - optional google.protobuf.Timestamp gte = 6; - - // LtNow specifies that this must be less than the current time. LtNow - // can only be used with the Within rule. - optional bool lt_now = 7; - - // GtNow specifies that this must be greater than the current time. GtNow - // can only be used with the Within rule. - optional bool gt_now = 8; - - // Within specifies that this field must be within this duration of the - // current time. This constraint can be used alone or with the LtNow and - // GtNow rules. - optional google.protobuf.Duration within = 9; -} diff --git a/src/Sdk/Buf/Validate/Expression.g.cs b/src/Sdk/Buf/Validate/Expression.g.cs new file mode 100644 index 0000000..5b76565 --- /dev/null +++ b/src/Sdk/Buf/Validate/Expression.g.cs @@ -0,0 +1,865 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: buf/validate/expression.proto +// +#pragma warning disable 1591, 0612, 3021, 8981 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace Buf.Validate { + + /// Holder for reflection information generated from buf/validate/expression.proto + public static partial class ExpressionReflection { + + #region Descriptor + /// File descriptor for buf/validate/expression.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static ExpressionReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "Ch1idWYvdmFsaWRhdGUvZXhwcmVzc2lvbi5wcm90bxIMYnVmLnZhbGlkYXRl", + "IlYKCkNvbnN0cmFpbnQSDgoCaWQYASABKAlSAmlkEhgKB21lc3NhZ2UYAiAB", + "KAlSB21lc3NhZ2USHgoKZXhwcmVzc2lvbhgDIAEoCVIKZXhwcmVzc2lvbiJF", + "CgpWaW9sYXRpb25zEjcKCnZpb2xhdGlvbnMYASADKAsyFy5idWYudmFsaWRh", + "dGUuVmlvbGF0aW9uUgp2aW9sYXRpb25zIoIBCglWaW9sYXRpb24SHQoKZmll", + "bGRfcGF0aBgBIAEoCVIJZmllbGRQYXRoEiMKDWNvbnN0cmFpbnRfaWQYAiAB", + "KAlSDGNvbnN0cmFpbnRJZBIYCgdtZXNzYWdlGAMgASgJUgdtZXNzYWdlEhcK", + "B2Zvcl9rZXkYBCABKAhSBmZvcktleUJwChJidWlsZC5idWYudmFsaWRhdGVC", + "D0V4cHJlc3Npb25Qcm90b1ABWkdidWYuYnVpbGQvZ2VuL2dvL2J1ZmJ1aWxk", + "L3Byb3RvdmFsaWRhdGUvcHJvdG9jb2xidWZmZXJzL2dvL2J1Zi92YWxpZGF0", + "ZWIGcHJvdG8z")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { }, + new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.Constraint), global::Buf.Validate.Constraint.Parser, new[]{ "Id", "Message", "Expression" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.Violations), global::Buf.Validate.Violations.Parser, new[]{ "Violations_" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.Violation), global::Buf.Validate.Violation.Parser, new[]{ "FieldPath", "ConstraintId", "Message", "ForKey" }, null, null, null, null) + })); + } + #endregion + + } + #region Messages + /// + /// `Constraint` represents a validation rule written in the Common Expression + /// Language (CEL) syntax. Each Constraint includes a unique identifier, an + /// optional error message, and the CEL expression to evaluate. For more + /// information on CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md). + /// + /// ```proto + /// message Foo { + /// option (buf.validate.message).cel = { + /// id: "foo.bar" + /// message: "bar must be greater than 0" + /// expression: "this.bar > 0" + /// }; + /// int32 bar = 1; + /// } + /// ``` + /// + public sealed partial class Constraint : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Constraint()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ExpressionReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Constraint() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Constraint(Constraint other) : this() { + id_ = other.id_; + message_ = other.message_; + expression_ = other.expression_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Constraint Clone() { + return new Constraint(this); + } + + /// Field number for the "id" field. + public const int IdFieldNumber = 1; + private string id_ = ""; + /// + /// `id` is a string that serves as a machine-readable name for this Constraint. + /// It should be unique within its scope, which could be either a message or a field. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Id { + get { return id_; } + set { + id_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "message" field. + public const int MessageFieldNumber = 2; + private string message_ = ""; + /// + /// `message` is an optional field that provides a human-readable error message + /// for this Constraint when the CEL expression evaluates to false. If a + /// non-empty message is provided, any strings resulting from the CEL + /// expression evaluation are ignored. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Message { + get { return message_; } + set { + message_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "expression" field. + public const int ExpressionFieldNumber = 3; + private string expression_ = ""; + /// + /// `expression` is the actual CEL expression that will be evaluated for + /// validation. This string must resolve to either a boolean or a string + /// value. If the expression evaluates to false or a non-empty string, the + /// validation is considered failed, and the message is rejected. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Expression { + get { return expression_; } + set { + expression_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Constraint); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Constraint other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Id != other.Id) return false; + if (Message != other.Message) return false; + if (Expression != other.Expression) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (Id.Length != 0) hash ^= Id.GetHashCode(); + if (Message.Length != 0) hash ^= Message.GetHashCode(); + if (Expression.Length != 0) hash ^= Expression.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (Id.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Id); + } + if (Message.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Message); + } + if (Expression.Length != 0) { + output.WriteRawTag(26); + output.WriteString(Expression); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (Id.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Id); + } + if (Message.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Message); + } + if (Expression.Length != 0) { + output.WriteRawTag(26); + output.WriteString(Expression); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (Id.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Id); + } + if (Message.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Message); + } + if (Expression.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Expression); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Constraint other) { + if (other == null) { + return; + } + if (other.Id.Length != 0) { + Id = other.Id; + } + if (other.Message.Length != 0) { + Message = other.Message; + } + if (other.Expression.Length != 0) { + Expression = other.Expression; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Id = input.ReadString(); + break; + } + case 18: { + Message = input.ReadString(); + break; + } + case 26: { + Expression = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Id = input.ReadString(); + break; + } + case 18: { + Message = input.ReadString(); + break; + } + case 26: { + Expression = input.ReadString(); + break; + } + } + } + } + #endif + + } + + /// + /// `Violations` is a collection of `Violation` messages. This message type is returned by + /// protovalidate when a proto message fails to meet the requirements set by the `Constraint` validation rules. + /// Each individual violation is represented by a `Violation` message. + /// + public sealed partial class Violations : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Violations()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ExpressionReflection.Descriptor.MessageTypes[1]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Violations() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Violations(Violations other) : this() { + violations_ = other.violations_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Violations Clone() { + return new Violations(this); + } + + /// Field number for the "violations" field. + public const int Violations_FieldNumber = 1; + private static readonly pb::FieldCodec _repeated_violations_codec + = pb::FieldCodec.ForMessage(10, global::Buf.Validate.Violation.Parser); + private readonly pbc::RepeatedField violations_ = new pbc::RepeatedField(); + /// + /// `violations` is a repeated field that contains all the `Violation` messages corresponding to the violations detected. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Violations_ { + get { return violations_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Violations); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Violations other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if(!violations_.Equals(other.violations_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + hash ^= violations_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + violations_.WriteTo(output, _repeated_violations_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + violations_.WriteTo(ref output, _repeated_violations_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + size += violations_.CalculateSize(_repeated_violations_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Violations other) { + if (other == null) { + return; + } + violations_.Add(other.violations_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + violations_.AddEntriesFrom(input, _repeated_violations_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + violations_.AddEntriesFrom(ref input, _repeated_violations_codec); + break; + } + } + } + } + #endif + + } + + /// + /// `Violation` represents a single instance where a validation rule, expressed + /// as a `Constraint`, was not met. It provides information about the field that + /// caused the violation, the specific constraint that wasn't fulfilled, and a + /// human-readable error message. + /// + /// ```json + /// { + /// "fieldPath": "bar", + /// "constraintId": "foo.bar", + /// "message": "bar must be greater than 0" + /// } + /// ``` + /// + public sealed partial class Violation : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Violation()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ExpressionReflection.Descriptor.MessageTypes[2]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Violation() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Violation(Violation other) : this() { + fieldPath_ = other.fieldPath_; + constraintId_ = other.constraintId_; + message_ = other.message_; + forKey_ = other.forKey_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Violation Clone() { + return new Violation(this); + } + + /// Field number for the "field_path" field. + public const int FieldPathFieldNumber = 1; + private string fieldPath_ = ""; + /// + /// `field_path` is a machine-readable identifier that points to the specific field that failed the validation. + /// This could be a nested field, in which case the path will include all the parent fields leading to the actual field that caused the violation. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string FieldPath { + get { return fieldPath_; } + set { + fieldPath_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "constraint_id" field. + public const int ConstraintIdFieldNumber = 2; + private string constraintId_ = ""; + /// + /// `constraint_id` is the unique identifier of the `Constraint` that was not fulfilled. + /// This is the same `id` that was specified in the `Constraint` message, allowing easy tracing of which rule was violated. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string ConstraintId { + get { return constraintId_; } + set { + constraintId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "message" field. + public const int MessageFieldNumber = 3; + private string message_ = ""; + /// + /// `message` is a human-readable error message that describes the nature of the violation. + /// This can be the default error message from the violated `Constraint`, or it can be a custom message that gives more context about the violation. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Message { + get { return message_; } + set { + message_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "for_key" field. + public const int ForKeyFieldNumber = 4; + private bool forKey_; + /// + /// `for_key` indicates whether the violation was caused by a map key, rather than a value. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool ForKey { + get { return forKey_; } + set { + forKey_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Violation); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Violation other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (FieldPath != other.FieldPath) return false; + if (ConstraintId != other.ConstraintId) return false; + if (Message != other.Message) return false; + if (ForKey != other.ForKey) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (FieldPath.Length != 0) hash ^= FieldPath.GetHashCode(); + if (ConstraintId.Length != 0) hash ^= ConstraintId.GetHashCode(); + if (Message.Length != 0) hash ^= Message.GetHashCode(); + if (ForKey != false) hash ^= ForKey.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (FieldPath.Length != 0) { + output.WriteRawTag(10); + output.WriteString(FieldPath); + } + if (ConstraintId.Length != 0) { + output.WriteRawTag(18); + output.WriteString(ConstraintId); + } + if (Message.Length != 0) { + output.WriteRawTag(26); + output.WriteString(Message); + } + if (ForKey != false) { + output.WriteRawTag(32); + output.WriteBool(ForKey); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (FieldPath.Length != 0) { + output.WriteRawTag(10); + output.WriteString(FieldPath); + } + if (ConstraintId.Length != 0) { + output.WriteRawTag(18); + output.WriteString(ConstraintId); + } + if (Message.Length != 0) { + output.WriteRawTag(26); + output.WriteString(Message); + } + if (ForKey != false) { + output.WriteRawTag(32); + output.WriteBool(ForKey); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (FieldPath.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(FieldPath); + } + if (ConstraintId.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ConstraintId); + } + if (Message.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Message); + } + if (ForKey != false) { + size += 1 + 1; + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Violation other) { + if (other == null) { + return; + } + if (other.FieldPath.Length != 0) { + FieldPath = other.FieldPath; + } + if (other.ConstraintId.Length != 0) { + ConstraintId = other.ConstraintId; + } + if (other.Message.Length != 0) { + Message = other.Message; + } + if (other.ForKey != false) { + ForKey = other.ForKey; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + FieldPath = input.ReadString(); + break; + } + case 18: { + ConstraintId = input.ReadString(); + break; + } + case 26: { + Message = input.ReadString(); + break; + } + case 32: { + ForKey = input.ReadBool(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + FieldPath = input.ReadString(); + break; + } + case 18: { + ConstraintId = input.ReadString(); + break; + } + case 26: { + Message = input.ReadString(); + break; + } + case 32: { + ForKey = input.ReadBool(); + break; + } + } + } + } + #endif + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/src/Sdk/Buf/Validate/Priv/Private.g.cs b/src/Sdk/Buf/Validate/Priv/Private.g.cs new file mode 100644 index 0000000..78edaf2 --- /dev/null +++ b/src/Sdk/Buf/Validate/Priv/Private.g.cs @@ -0,0 +1,509 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: buf/validate/priv/private.proto +// +#pragma warning disable 1591, 0612, 3021, 8981 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace Buf.Validate.Priv { + + /// Holder for reflection information generated from buf/validate/priv/private.proto + public static partial class PrivateReflection { + + #region Descriptor + /// File descriptor for buf/validate/priv/private.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static PrivateReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "Ch9idWYvdmFsaWRhdGUvcHJpdi9wcml2YXRlLnByb3RvEhFidWYudmFsaWRh", + "dGUucHJpdhogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8iQwoQ", + "RmllbGRDb25zdHJhaW50cxIvCgNjZWwYASADKAsyHS5idWYudmFsaWRhdGUu", + "cHJpdi5Db25zdHJhaW50UgNjZWwiVgoKQ29uc3RyYWludBIOCgJpZBgBIAEo", + "CVICaWQSGAoHbWVzc2FnZRgCIAEoCVIHbWVzc2FnZRIeCgpleHByZXNzaW9u", + "GAMgASgJUgpleHByZXNzaW9uOlwKBWZpZWxkEh0uZ29vZ2xlLnByb3RvYnVm", + "LkZpZWxkT3B0aW9ucxiICSABKAsyIy5idWYudmFsaWRhdGUucHJpdi5GaWVs", + "ZENvbnN0cmFpbnRzUgVmaWVsZIgBAUJ3ChdidWlsZC5idWYudmFsaWRhdGUu", + "cHJpdkIMUHJpdmF0ZVByb3RvUAFaTGJ1Zi5idWlsZC9nZW4vZ28vYnVmYnVp", + "bGQvcHJvdG92YWxpZGF0ZS9wcm90b2NvbGJ1ZmZlcnMvZ28vYnVmL3ZhbGlk", + "YXRlL3ByaXZiBnByb3RvMw==")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor, }, + new pbr::GeneratedClrTypeInfo(null, new pb::Extension[] { PrivateExtensions.Field }, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.Priv.FieldConstraints), global::Buf.Validate.Priv.FieldConstraints.Parser, new[]{ "Cel" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.Priv.Constraint), global::Buf.Validate.Priv.Constraint.Parser, new[]{ "Id", "Message", "Expression" }, null, null, null, null) + })); + } + #endregion + + } + /// Holder for extension identifiers generated from the top level of buf/validate/priv/private.proto + public static partial class PrivateExtensions { + /// + /// Do not use. Internal to protovalidate library + /// + public static readonly pb::Extension Field = + new pb::Extension(1160, pb::FieldCodec.ForMessage(9282, global::Buf.Validate.Priv.FieldConstraints.Parser)); + } + + #region Messages + /// + /// Do not use. Internal to protovalidate library + /// + public sealed partial class FieldConstraints : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FieldConstraints()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.Priv.PrivateReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public FieldConstraints() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public FieldConstraints(FieldConstraints other) : this() { + cel_ = other.cel_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public FieldConstraints Clone() { + return new FieldConstraints(this); + } + + /// Field number for the "cel" field. + public const int CelFieldNumber = 1; + private static readonly pb::FieldCodec _repeated_cel_codec + = pb::FieldCodec.ForMessage(10, global::Buf.Validate.Priv.Constraint.Parser); + private readonly pbc::RepeatedField cel_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Cel { + get { return cel_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as FieldConstraints); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(FieldConstraints other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if(!cel_.Equals(other.cel_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + hash ^= cel_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + cel_.WriteTo(output, _repeated_cel_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + cel_.WriteTo(ref output, _repeated_cel_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + size += cel_.CalculateSize(_repeated_cel_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(FieldConstraints other) { + if (other == null) { + return; + } + cel_.Add(other.cel_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + cel_.AddEntriesFrom(input, _repeated_cel_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + cel_.AddEntriesFrom(ref input, _repeated_cel_codec); + break; + } + } + } + } + #endif + + } + + /// + /// Do not use. Internal to protovalidate library + /// + public sealed partial class Constraint : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Constraint()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.Priv.PrivateReflection.Descriptor.MessageTypes[1]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Constraint() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Constraint(Constraint other) : this() { + id_ = other.id_; + message_ = other.message_; + expression_ = other.expression_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Constraint Clone() { + return new Constraint(this); + } + + /// Field number for the "id" field. + public const int IdFieldNumber = 1; + private string id_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Id { + get { return id_; } + set { + id_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "message" field. + public const int MessageFieldNumber = 2; + private string message_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Message { + get { return message_; } + set { + message_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "expression" field. + public const int ExpressionFieldNumber = 3; + private string expression_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Expression { + get { return expression_; } + set { + expression_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Constraint); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Constraint other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Id != other.Id) return false; + if (Message != other.Message) return false; + if (Expression != other.Expression) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (Id.Length != 0) hash ^= Id.GetHashCode(); + if (Message.Length != 0) hash ^= Message.GetHashCode(); + if (Expression.Length != 0) hash ^= Expression.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (Id.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Id); + } + if (Message.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Message); + } + if (Expression.Length != 0) { + output.WriteRawTag(26); + output.WriteString(Expression); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (Id.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Id); + } + if (Message.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Message); + } + if (Expression.Length != 0) { + output.WriteRawTag(26); + output.WriteString(Expression); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (Id.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Id); + } + if (Message.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Message); + } + if (Expression.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Expression); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Constraint other) { + if (other == null) { + return; + } + if (other.Id.Length != 0) { + Id = other.Id; + } + if (other.Message.Length != 0) { + Message = other.Message; + } + if (other.Expression.Length != 0) { + Expression = other.Expression; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Id = input.ReadString(); + break; + } + case 18: { + Message = input.ReadString(); + break; + } + case 26: { + Expression = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Id = input.ReadString(); + break; + } + case 18: { + Message = input.ReadString(); + break; + } + case 26: { + Expression = input.ReadString(); + break; + } + } + } + } + #endif + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/src/Sdk/Buf/Validate/Validate.g.cs b/src/Sdk/Buf/Validate/Validate.g.cs new file mode 100644 index 0000000..0b776cd --- /dev/null +++ b/src/Sdk/Buf/Validate/Validate.g.cs @@ -0,0 +1,17026 @@ +// +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: buf/validate/validate.proto +// +#pragma warning disable 1591, 0612, 3021, 8981 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace Buf.Validate { + + /// Holder for reflection information generated from buf/validate/validate.proto + public static partial class ValidateReflection { + + #region Descriptor + /// File descriptor for buf/validate/validate.proto + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static ValidateReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZRod", + "YnVmL3ZhbGlkYXRlL2V4cHJlc3Npb24ucHJvdG8aH2J1Zi92YWxpZGF0ZS9w", + "cml2L3ByaXZhdGUucHJvdG8aIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9y", + "LnByb3RvGh5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8aH2dvb2ds", + "ZS9wcm90b2J1Zi90aW1lc3RhbXAucHJvdG8ibgoSTWVzc2FnZUNvbnN0cmFp", + "bnRzEh8KCGRpc2FibGVkGAEgASgISABSCGRpc2FibGVkiAEBEioKA2NlbBgD", + "IAMoCzIYLmJ1Zi52YWxpZGF0ZS5Db25zdHJhaW50UgNjZWxCCwoJX2Rpc2Fi", + "bGVkIkAKEE9uZW9mQ29uc3RyYWludHMSHwoIcmVxdWlyZWQYASABKAhIAFII", + "cmVxdWlyZWSIAQFCCwoJX3JlcXVpcmVkIvUJChBGaWVsZENvbnN0cmFpbnRz", + "EioKA2NlbBgXIAMoCzIYLmJ1Zi52YWxpZGF0ZS5Db25zdHJhaW50UgNjZWwS", + "GAoHc2tpcHBlZBgYIAEoCFIHc2tpcHBlZBIaCghyZXF1aXJlZBgZIAEoCFII", + "cmVxdWlyZWQSIQoMaWdub3JlX2VtcHR5GBogASgIUgtpZ25vcmVFbXB0eRIw", + "CgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSABSBWZs", + "b2F0EjMKBmRvdWJsZRgCIAEoCzIZLmJ1Zi52YWxpZGF0ZS5Eb3VibGVSdWxl", + "c0gAUgZkb3VibGUSMAoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50", + "MzJSdWxlc0gAUgVpbnQzMhIwCgVpbnQ2NBgEIAEoCzIYLmJ1Zi52YWxpZGF0", + "ZS5JbnQ2NFJ1bGVzSABSBWludDY0EjMKBnVpbnQzMhgFIAEoCzIZLmJ1Zi52", + "YWxpZGF0ZS5VSW50MzJSdWxlc0gAUgZ1aW50MzISMwoGdWludDY0GAYgASgL", + "MhkuYnVmLnZhbGlkYXRlLlVJbnQ2NFJ1bGVzSABSBnVpbnQ2NBIzCgZzaW50", + "MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIAFIGc2ludDMy", + "EjMKBnNpbnQ2NBgIIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50NjRSdWxlc0gA", + "UgZzaW50NjQSNgoHZml4ZWQzMhgJIAEoCzIaLmJ1Zi52YWxpZGF0ZS5GaXhl", + "ZDMyUnVsZXNIAFIHZml4ZWQzMhI2CgdmaXhlZDY0GAogASgLMhouYnVmLnZh", + "bGlkYXRlLkZpeGVkNjRSdWxlc0gAUgdmaXhlZDY0EjkKCHNmaXhlZDMyGAsg", + "ASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDMyUnVsZXNIAFIIc2ZpeGVkMzIS", + "OQoIc2ZpeGVkNjQYDCABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkNjRSdWxl", + "c0gAUghzZml4ZWQ2NBItCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJv", + "b2xSdWxlc0gAUgRib29sEjMKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0", + "ZS5TdHJpbmdSdWxlc0gAUgZzdHJpbmcSMAoFYnl0ZXMYDyABKAsyGC5idWYu", + "dmFsaWRhdGUuQnl0ZXNSdWxlc0gAUgVieXRlcxItCgRlbnVtGBAgASgLMhcu", + "YnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAUgRlbnVtEjkKCHJlcGVhdGVkGBIg", + "ASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIAFIIcmVwZWF0ZWQS", + "KgoDbWFwGBMgASgLMhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzSABSA21hcBIq", + "CgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIAFIDYW55EjkK", + "CGR1cmF0aW9uGBUgASgLMhsuYnVmLnZhbGlkYXRlLkR1cmF0aW9uUnVsZXNI", + "AFIIZHVyYXRpb24SPAoJdGltZXN0YW1wGBYgASgLMhwuYnVmLnZhbGlkYXRl", + "LlRpbWVzdGFtcFJ1bGVzSABSCXRpbWVzdGFtcEIGCgR0eXBlIqIXCgpGbG9h", + "dFJ1bGVzEnUKBWNvbnN0GAEgASgCQlrCSFcKVQoLZmxvYXQuY29uc3QaRnRo", + "aXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9y", + "bWF0KFtydWxlcy5jb25zdF0pIDogJydIAlIFY29uc3SIAQESowEKAmx0GAIg", + "ASgCQpABwkiMAQqJAQoIZmxvYXQubHQafSFoYXMocnVsZXMuZ3RlKSAmJiAh", + "aGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVs", + "ZXMubHQpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChb", + "cnVsZXMubHRdKSA6ICcnSABSAmx0ErQBCgNsdGUYAyABKAJCnwHCSJsBCpgB", + "CglmbG9hdC5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5n", + "dCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3Zh", + "bHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQo", + "W3J1bGVzLmx0ZV0pIDogJydIAFIDbHRlEvMHCgJndBgEIAEoAkLgB8JI3AcK", + "jQEKCGZsb2F0Lmd0GoABIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5s", + "dGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2", + "YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5n", + "dF0pIDogJycKwwEKC2Zsb2F0Lmd0X2x0GrMBaGFzKHJ1bGVzLmx0KSAmJiBy", + "dWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMg", + "Pj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0", + "IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQo", + "W3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzQEKFWZsb2F0Lmd0X2x0X2V4", + "Y2x1c2l2ZRqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5n", + "dCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRo", + "aXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFu", + "ICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMu", + "bHRdKSA6ICcnCtMBCgxmbG9hdC5ndF9sdGUawgFoYXMocnVsZXMubHRlKSAm", + "JiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0", + "aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUg", + "bXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVh", + "bCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrd", + "AQoWZmxvYXQuZ3RfbHRlX2V4Y2x1c2l2ZRrCAWhhcyhydWxlcy5sdGUpICYm", + "IHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1", + "bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUg", + "bXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFs", + "IHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAFS", + "Amd0Er8ICgNndGUYBSABKAJCqgjCSKYICpsBCglmbG9hdC5ndGUajQEhaGFz", + "KHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4o", + "KSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRl", + "ciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDog", + "JycK0gEKDGZsb2F0Lmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMu", + "bHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBy", + "dWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUg", + "Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMn", + "LmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3AEKFmZsb2F0", + "Lmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0", + "IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9", + "IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBn", + "cmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5m", + "b3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuIBCg1mbG9hdC5n", + "dGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVz", + "Lmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwg", + "dGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhh", + "biBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVz", + "Jy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrsAQoXZmxv", + "YXQuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxl", + "cy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMu", + "bHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0", + "IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4g", + "b3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVd", + "KSA6ICcnSAFSA2d0ZRJ5CgJpbhgGIAMoAkJpwkhmCmQKCGZsb2F0LmluGlgh", + "KHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBp", + "biBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnUgJp", + "bhJ9CgZub3RfaW4YByADKAJCZsJIYwphCgxmbG9hdC5ub3RfaW4aUXRoaXMg", + "aW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3Qg", + "JXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJ1IFbm90SW4SZwoGZmlu", + "aXRlGAggASgIQk/CSEwKSgoMZmxvYXQuZmluaXRlGjp0aGlzLmlzTmFuKCkg", + "fHwgdGhpcy5pc0luZigpID8gJ3ZhbHVlIG11c3QgYmUgZmluaXRlJyA6ICcn", + "UgZmaW5pdGVCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbkIICgZfY29u", + "c3QisxcKC0RvdWJsZVJ1bGVzEnYKBWNvbnN0GAEgASgBQlvCSFgKVgoMZG91", + "YmxlLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3Qg", + "ZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnSAJSBWNvbnN0", + "iAEBEqQBCgJsdBgCIAEoAUKRAcJIjQEKigEKCWRvdWJsZS5sdBp9IWhhcyhy", + "dWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkg", + "fHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhh", + "biAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIAFICbHQStQEKA2x0ZRgD", + "IAEoAUKgAcJInAEKmQEKCmRvdWJsZS5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkg", + "JiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4g", + "cnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFs", + "IHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIAFIDbHRlEvgHCgJn", + "dBgEIAEoAULlB8JI4QcKjgEKCWRvdWJsZS5ndBqAASFoYXMocnVsZXMubHQp", + "ICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMg", + "PD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMn", + "LmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsQBCgxkb3VibGUuZ3RfbHQaswFo", + "YXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlz", + "LmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVz", + "Lmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNz", + "IHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrO", + "AQoWZG91YmxlLmd0X2x0X2V4Y2x1c2l2ZRqzAWhhcyhydWxlcy5sdCkgJiYg", + "cnVsZXMubHQgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxl", + "cy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11", + "c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0", + "KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCtQBCg1kb3VibGUuZ3RfbHRl", + "GsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYm", + "ICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9", + "IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFu", + "ZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3Qs", + "IHJ1bGVzLmx0ZV0pIDogJycK3gEKF2RvdWJsZS5ndF9sdGVfZXhjbHVzaXZl", + "GsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYg", + "KHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9", + "IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBv", + "ciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3Qs", + "IHJ1bGVzLmx0ZV0pIDogJydIAVICZ3QSxAgKA2d0ZRgFIAEoAUKvCMJIqwgK", + "nAEKCmRvdWJsZS5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVz", + "Lmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8g", + "J3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5m", + "b3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0wEKDWRvdWJsZS5ndGVfbHQawQFo", + "YXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhp", + "cy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVz", + "Lmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0", + "byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVs", + "ZXMubHRdKSA6ICcnCt0BChdkb3VibGUuZ3RlX2x0X2V4Y2x1c2l2ZRrBAWhh", + "cyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHRoaXMu", + "aXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMu", + "Z3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0", + "byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxl", + "cy5sdF0pIDogJycK4wEKDmRvdWJsZS5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0", + "ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigp", + "IHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2", + "YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQg", + "bGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwg", + "cnVsZXMubHRlXSkgOiAnJwrtAQoYZG91YmxlLmd0ZV9sdGVfZXhjbHVzaXZl", + "GtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYm", + "ICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8", + "IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3Ig", + "ZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3Jt", + "YXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBUgNndGUSegoCaW4Y", + "BiADKAFCasJIZwplCglkb3VibGUuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMp", + "WydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChb", + "ZHluKHJ1bGVzKVsnaW4nXV0pIDogJydSAmluEn4KBm5vdF9pbhgHIAMoAUJn", + "wkhkCmIKDWRvdWJsZS5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8g", + "J3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMu", + "bm90X2luXSkgOiAnJ1IFbm90SW4SaAoGZmluaXRlGAggASgIQlDCSE0KSwoN", + "ZG91YmxlLmZpbml0ZRo6dGhpcy5pc05hbigpIHx8IHRoaXMuaXNJbmYoKSA/", + "ICd2YWx1ZSBtdXN0IGJlIGZpbml0ZScgOiAnJ1IGZmluaXRlQgsKCWxlc3Nf", + "dGhhbkIOCgxncmVhdGVyX3RoYW5CCAoGX2NvbnN0IuIUCgpJbnQzMlJ1bGVz", + "EnUKBWNvbnN0GAEgASgFQlrCSFcKVQoLaW50MzIuY29uc3QaRnRoaXMgIT0g", + "cnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFty", + "dWxlcy5jb25zdF0pIDogJydIAlIFY29uc3SIAQESjgEKAmx0GAIgASgFQnzC", + "SHkKdwoIaW50MzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVz", + "Lmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNz", + "IHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSABSAmx0EqEBCgNs", + "dGUYAyABKAVCjAHCSIgBCoUBCglpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3Rl", + "KSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFs", + "dWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChb", + "cnVsZXMubHRlXSkgOiAnJ0gAUgNsdGUSmwcKAmd0GAQgASgFQogHwkiEBwp6", + "CghpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUp", + "ICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIg", + "dGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKswEKC2ludDMyLmd0", + "X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAm", + "JiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3Zh", + "bHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMn", + "LmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq7AQoVaW50MzIu", + "Z3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8", + "IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVs", + "ZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVz", + "cyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycK", + "wwEKDGludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0", + "ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9", + "IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFu", + "ZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3Qs", + "IHJ1bGVzLmx0ZV0pIDogJycKywEKFmludDMyLmd0X2x0ZV9leGNsdXNpdmUa", + "sAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAo", + "cnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVl", + "IG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVh", + "bCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gB", + "UgJndBLoBwoDZ3RlGAUgASgFQtMHwkjPBwqIAQoJaW50MzIuZ3RlGnshaGFz", + "KHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVz", + "Lmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRv", + "ICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDMyLmd0ZV9s", + "dBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYm", + "ICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFs", + "dWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxl", + "c3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAn", + "JwrKAQoWaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkg", + "JiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMg", + "JiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIg", + "dGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChb", + "cnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDMyLmd0ZV9sdGUa", + "wAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYm", + "ICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFs", + "dWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxl", + "c3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1", + "bGVzLmx0ZV0pIDogJycK2gEKF2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4B", + "aGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChy", + "dWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUg", + "bXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0", + "aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMu", + "bHRlXSkgOiAnJ0gBUgNndGUSeQoCaW4YBiADKAVCacJIZgpkCghpbnQzMi5p", + "bhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3Qg", + "YmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAn", + "J1ICaW4SfQoGbm90X2luGAcgAygFQmbCSGMKYQoMaW50MzIubm90X2luGlF0", + "aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBs", + "aXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJydSBW5vdEluQgsK", + "CWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW5CCAoGX2NvbnN0IuIUCgpJbnQ2", + "NFJ1bGVzEnUKBWNvbnN0GAEgASgDQlrCSFcKVQoLaW50NjQuY29uc3QaRnRo", + "aXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9y", + "bWF0KFtydWxlcy5jb25zdF0pIDogJydIAlIFY29uc3SIAQESjgEKAmx0GAIg", + "ASgDQnzCSHkKdwoIaW50NjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFz", + "KHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBi", + "ZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSABSAmx0", + "EqEBCgNsdGUYAyABKANCjAHCSIgBCoUBCglpbnQ2NC5sdGUaeCFoYXMocnVs", + "ZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRl", + "PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZv", + "cm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAUgNsdGUSmwcKAmd0GAQgASgDQogH", + "wkiEBwp6CghpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxl", + "cy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdy", + "ZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKswEKC2lu", + "dDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxl", + "cy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0", + "KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRo", + "YW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq7AQoV", + "aW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxl", + "cy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMg", + "PD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMg", + "b3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0p", + "IDogJycKwwEKDGludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1", + "bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0", + "aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFu", + "ICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVs", + "ZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKywEKFmludDY0Lmd0X2x0ZV9leGNs", + "dXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5n", + "dCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8g", + "J3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBv", + "ciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkg", + "OiAnJ0gBUgJndBLoBwoDZ3RlGAUgASgDQtMHwkjPBwqIAQoJaW50NjQuZ3Rl", + "GnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8", + "IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVx", + "dWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDY0", + "Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMu", + "Z3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUp", + "PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMg", + "YW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0", + "XSkgOiAnJwrKAQoWaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxl", + "cy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9", + "IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdy", + "ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZv", + "cm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDY0Lmd0", + "ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMu", + "Z3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUp", + "PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMg", + "YW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5n", + "dGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDY0Lmd0ZV9sdGVfZXhjbHVz", + "aXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3Rl", + "ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAn", + "dmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3Ig", + "bGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwg", + "cnVsZXMubHRlXSkgOiAnJ0gBUgNndGUSeQoCaW4YBiADKANCacJIZgpkCghp", + "bnQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVl", + "IG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbidd", + "XSkgOiAnJ1ICaW4SfQoGbm90X2luGAcgAygDQmbCSGMKYQoMaW50NjQubm90", + "X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBi", + "ZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJydSBW5v", + "dEluQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW5CCAoGX2NvbnN0IvIU", + "CgtVSW50MzJSdWxlcxJ2CgVjb25zdBgBIAEoDUJbwkhYClYKDHVpbnQzMi5j", + "b25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFs", + "ICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJ0gCUgVjb25zdIgBARKP", + "AQoCbHQYAiABKA1CfcJIegp4Cgl1aW50MzIubHQaayFoYXMocnVsZXMuZ3Rl", + "KSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFs", + "dWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6", + "ICcnSABSAmx0EqIBCgNsdGUYAyABKA1CjQHCSIkBCoYBCgp1aW50MzIubHRl", + "GnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+", + "IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFs", + "IHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIAFIDbHRlEqAHCgJn", + "dBgEIAEoDUKNB8JIiQcKewoJdWludDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAm", + "JiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVl", + "IG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkg", + "OiAnJwq0AQoMdWludDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxl", + "cy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlz", + "IDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVz", + "IGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0", + "XSkgOiAnJwq8AQoWdWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxl", + "cy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0g", + "dGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3Jl", + "YXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5n", + "dCwgcnVsZXMubHRdKSA6ICcnCsQBCg11aW50MzIuZ3RfbHRlGrIBaGFzKHJ1", + "bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4g", + "cnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBi", + "ZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAl", + "cycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrMAQoXdWlu", + "dDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxl", + "cy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlz", + "IDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVz", + "IG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5n", + "dCwgcnVsZXMubHRlXSkgOiAnJ0gBUgJndBLtBwoDZ3RlGAUgASgNQtgHwkjU", + "BwqJAQoKdWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxl", + "cy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdy", + "ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVd", + "KSA6ICcnCsMBCg11aW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBy", + "dWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwg", + "dGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhh", + "biBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1", + "bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50MzIuZ3RlX2x0X2V4", + "Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5n", + "dGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/", + "ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBv", + "ciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0p", + "IDogJycK0wEKDnVpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYg", + "cnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8", + "fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0", + "aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8g", + "JXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1", + "aW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBy", + "dWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYg", + "dGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhh", + "biBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMn", + "LmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAFSA2d0ZRJ6", + "CgJpbhgGIAMoDUJqwkhnCmUKCXVpbnQzMi5pbhpYISh0aGlzIGluIGR5bihy", + "dWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9y", + "bWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJ1ICaW4SfgoGbm90X2luGAcg", + "AygNQmfCSGQKYgoNdWludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3Rf", + "aW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFty", + "dWxlcy5ub3RfaW5dKSA6ICcnUgVub3RJbkILCglsZXNzX3RoYW5CDgoMZ3Jl", + "YXRlcl90aGFuQggKBl9jb25zdCLyFAoLVUludDY0UnVsZXMSdgoFY29uc3QY", + "ASABKARCW8JIWApWCgx1aW50NjQuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29u", + "c3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25z", + "dF0pIDogJydIAlIFY29uc3SIAQESjwEKAmx0GAIgASgEQn3CSHoKeAoJdWlu", + "dDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYg", + "dGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVz", + "Jy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAUgJsdBKiAQoDbHRlGAMgASgE", + "Qo0BwkiJAQqGAQoKdWludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFo", + "YXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0", + "IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5s", + "dGVdKSA6ICcnSABSA2x0ZRKgBwoCZ3QYBCABKARCjQfCSIkHCnsKCXVpbnQ2", + "NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRo", + "aXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAl", + "cycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHVpbnQ2NC5ndF9sdBqj", + "AWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRo", + "aXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBt", + "dXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3Jt", + "YXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnVpbnQ2NC5ndF9s", + "dF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVs", + "ZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5n", + "dCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRo", + "YW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoN", + "dWludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+", + "PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1", + "bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBs", + "ZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1", + "bGVzLmx0ZV0pIDogJycKzAEKF3VpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGrAB", + "aGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1", + "bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBt", + "dXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwg", + "dG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIAVIC", + "Z3QS7QcKA2d0ZRgFIAEoBELYB8JI1AcKiQEKCnVpbnQ2NC5ndGUaeyFoYXMo", + "cnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMu", + "Z3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8g", + "JXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDY0Lmd0ZV9s", + "dBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYm", + "ICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFs", + "dWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxl", + "c3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAn", + "JwrLAQoXdWludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQp", + "ICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlz", + "ICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVy", + "IHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQo", + "W3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50NjQuZ3RlX2x0", + "ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUg", + "JiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2", + "YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQg", + "bGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwg", + "cnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDY0Lmd0ZV9sdGVfZXhjbHVzaXZl", + "Gr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYm", + "IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFs", + "dWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVz", + "cyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVs", + "ZXMubHRlXSkgOiAnJ0gBUgNndGUSegoCaW4YBiADKARCasJIZwplCgl1aW50", + "NjQuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBt", + "dXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0p", + "IDogJydSAmluEn4KBm5vdF9pbhgHIAMoBEJnwkhkCmIKDXVpbnQ2NC5ub3Rf", + "aW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJl", + "IGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJ1IFbm90", + "SW5CCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbkIICgZfY29uc3Qi8hQK", + "C1NJbnQzMlJ1bGVzEnYKBWNvbnN0GAEgASgRQlvCSFgKVgoMc2ludDMyLmNv", + "bnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwg", + "JXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnSAJSBWNvbnN0iAEBEo8B", + "CgJsdBgCIAEoEUJ9wkh6CngKCXNpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUp", + "ICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1", + "ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDog", + "JydIAFICbHQSogEKA2x0ZRgDIAEoEUKNAcJIiQEKhgEKCnNpbnQzMi5sdGUa", + "eCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4g", + "cnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwg", + "dG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAUgNsdGUSoAcKAmd0", + "GAQgASgRQo0HwkiJBwp7CglzaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYm", + "ICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUg", + "bXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6", + "ICcnCrQBCgxzaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVz", + "Lmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMg", + "PD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMg", + "YW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRd", + "KSA6ICcnCrwBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVz", + "Lmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0", + "aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVh", + "dGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0", + "LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQzMi5ndF9sdGUasgFoYXMocnVs", + "ZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBy", + "dWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJl", + "IGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVz", + "Jy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50", + "MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVz", + "Lmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMg", + "PD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMg", + "b3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0", + "LCBydWxlcy5sdGVdKSA6ICcnSAFSAmd0Eu0HCgNndGUYBSABKBFC2AfCSNQH", + "CokBCgpzaW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVz", + "Lmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3Jl", + "YXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0p", + "IDogJycKwwEKDXNpbnQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1", + "bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0", + "aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFu", + "IG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVs", + "ZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKywEKF3NpbnQzMi5ndGVfbHRfZXhj", + "bHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0", + "ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8g", + "J3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9y", + "IGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkg", + "OiAnJwrTAQoOc2ludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBy", + "dWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8", + "IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRo", + "YW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAl", + "cycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2wEKGHNp", + "bnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1", + "bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0", + "aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFu", + "IG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycu", + "Zm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIAVIDZ3RlEnoK", + "AmluGAYgAygRQmrCSGcKZQoJc2ludDMyLmluGlghKHRoaXMgaW4gZHluKHJ1", + "bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3Jt", + "YXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnUgJpbhJ+CgZub3RfaW4YByAD", + "KBFCZ8JIZApiCg1zaW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9p", + "biA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1", + "bGVzLm5vdF9pbl0pIDogJydSBW5vdEluQgsKCWxlc3NfdGhhbkIOCgxncmVh", + "dGVyX3RoYW5CCAoGX2NvbnN0IvIUCgtTSW50NjRSdWxlcxJ2CgVjb25zdBgB", + "IAEoEkJbwkhYClYKDHNpbnQ2NC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25z", + "dCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0", + "XSkgOiAnJ0gCUgVjb25zdIgBARKPAQoCbHQYAiABKBJCfcJIegp4CglzaW50", + "NjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0", + "aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMn", + "LmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSABSAmx0EqIBCgNsdGUYAyABKBJC", + "jQHCSIkBCoYBCgpzaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhh", + "cyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3Qg", + "YmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0", + "ZV0pIDogJydIAFIDbHRlEqAHCgJndBgEIAEoEkKNB8JIiQcKewoJc2ludDY0", + "Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhp", + "cyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVz", + "Jy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq0AQoMc2ludDY0Lmd0X2x0GqMB", + "aGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhp", + "cyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11", + "c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1h", + "dChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq8AQoWc2ludDY0Lmd0X2x0", + "X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxl", + "cy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0", + "KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhh", + "biAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsQBCg1z", + "aW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49", + "IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVs", + "ZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxl", + "c3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVs", + "ZXMubHRlXSkgOiAnJwrMAQoXc2ludDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFo", + "YXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVs", + "ZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11", + "c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0", + "byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBUgJn", + "dBLtBwoDZ3RlGAUgASgSQtgHwkjUBwqJAQoKc2ludDY0Lmd0ZRp7IWhhcyhy", + "dWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5n", + "dGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAl", + "cycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50NjQuZ3RlX2x0", + "GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYg", + "KHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1", + "ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVz", + "cyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcn", + "CssBChdzaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkg", + "JiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMg", + "JiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIg", + "dGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChb", + "cnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQ2NC5ndGVfbHRl", + "GsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAm", + "JiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3Zh", + "bHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBs", + "ZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBy", + "dWxlcy5sdGVdKSA6ICcnCtsBChhzaW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUa", + "vgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYg", + "KHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1", + "ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNz", + "IHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxl", + "cy5sdGVdKSA6ICcnSAFSA2d0ZRJ6CgJpbhgGIAMoEkJqwkhnCmUKCXNpbnQ2", + "NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11", + "c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkg", + "OiAnJ1ICaW4SfgoGbm90X2luGAcgAygSQmfCSGQKYgoNc2ludDY0Lm5vdF9p", + "bhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUg", + "aW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnUgVub3RJ", + "bkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuQggKBl9jb25zdCKCFQoM", + "Rml4ZWQzMlJ1bGVzEncKBWNvbnN0GAEgASgHQlzCSFkKVwoNZml4ZWQzMi5j", + "b25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFs", + "ICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJ0gCUgVjb25zdIgBARKQ", + "AQoCbHQYAiABKAdCfsJIewp5CgpmaXhlZDMyLmx0GmshaGFzKHJ1bGVzLmd0", + "ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3Zh", + "bHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkg", + "OiAnJ0gAUgJsdBKjAQoDbHRlGAMgASgHQo4BwkiKAQqHAQoLZml4ZWQzMi5s", + "dGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlz", + "ID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1", + "YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAUgNsdGUSpQcK", + "Amd0GAQgASgHQpIHwkiOBwp8CgpmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0", + "KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3Zh", + "bHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0", + "XSkgOiAnJwq1AQoNZml4ZWQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYg", + "cnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwg", + "dGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhh", + "biAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxl", + "cy5sdF0pIDogJycKvQEKF2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFz", + "KHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5s", + "dCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBi", + "ZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1", + "bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkMzIuZ3RfbHRlGrIB", + "aGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0", + "aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUg", + "bXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVh", + "bCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrN", + "AQoYZml4ZWQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkg", + "JiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMg", + "JiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIg", + "dGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChb", + "cnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIAVICZ3QS8gcKA2d0ZRgFIAEo", + "B0LdB8JI2QcKigEKC2ZpeGVkMzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAh", + "aGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11", + "c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1", + "bGVzLmd0ZV0pIDogJycKxAEKDmZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVz", + "Lmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVs", + "ZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdy", + "ZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5m", + "b3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCswBChhmaXhlZDMy", + "Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0", + "IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBy", + "dWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1", + "YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwg", + "cnVsZXMubHRdKSA6ICcnCtQBCg9maXhlZDMyLmd0ZV9sdGUawAFoYXMocnVs", + "ZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4g", + "cnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBi", + "ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBv", + "ciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0p", + "IDogJycK3AEKGWZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVs", + "ZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0", + "ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJl", + "IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3Ig", + "ZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6", + "ICcnSAFSA2d0ZRJ7CgJpbhgGIAMoB0JrwkhoCmYKCmZpeGVkMzIuaW4aWCEo", + "dGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGlu", + "IGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJydSAmlu", + "En8KBm5vdF9pbhgHIAMoB0JowkhlCmMKDmZpeGVkMzIubm90X2luGlF0aGlz", + "IGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0", + "ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJydSBW5vdEluQgsKCWxl", + "c3NfdGhhbkIOCgxncmVhdGVyX3RoYW5CCAoGX2NvbnN0IoIVCgxGaXhlZDY0", + "UnVsZXMSdwoFY29uc3QYASABKAZCXMJIWQpXCg1maXhlZDY0LmNvbnN0GkZ0", + "aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZv", + "cm1hdChbcnVsZXMuY29uc3RdKSA6ICcnSAJSBWNvbnN0iAEBEpABCgJsdBgC", + "IAEoBkJ+wkh7CnkKCmZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAh", + "aGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVz", + "dCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSABS", + "Amx0EqMBCgNsdGUYAyABKAZCjgHCSIoBCocBCgtmaXhlZDY0Lmx0ZRp4IWhh", + "cyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxl", + "cy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAl", + "cycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSABSA2x0ZRKlBwoCZ3QYBCAB", + "KAZCkgfCSI4HCnwKCmZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFo", + "YXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVz", + "dCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcn", + "CrUBCg1maXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5s", + "dCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9", + "IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFu", + "ZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkg", + "OiAnJwq9AQoXZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMu", + "bHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRo", + "aXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0", + "ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3Qs", + "IHJ1bGVzLmx0XSkgOiAnJwrFAQoOZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVs", + "ZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBy", + "dWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJl", + "IGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVz", + "Jy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs0BChhmaXhl", + "ZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxl", + "cy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlz", + "IDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVz", + "IG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5n", + "dCwgcnVsZXMubHRlXSkgOiAnJ0gBUgJndBLyBwoDZ3RlGAUgASgGQt0HwkjZ", + "BwqKAQoLZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVs", + "ZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBn", + "cmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3Rl", + "XSkgOiAnJwrEAQoOZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYm", + "IHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8", + "fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0", + "aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChb", + "cnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKGGZpeGVkNjQuZ3RlX2x0", + "X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxl", + "cy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0", + "ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAl", + "cyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5s", + "dF0pIDogJycK1AEKD2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUp", + "ICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5s", + "dGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0", + "ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFs", + "IHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrc", + "AQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUp", + "ICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhp", + "cyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRl", + "ciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0", + "byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIAVID", + "Z3RlEnsKAmluGAYgAygGQmvCSGgKZgoKZml4ZWQ2NC5pbhpYISh0aGlzIGlu", + "IGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAl", + "cycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJ1ICaW4SfwoGbm90", + "X2luGAcgAygGQmjCSGUKYwoOZml4ZWQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVs", + "ZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZv", + "cm1hdChbcnVsZXMubm90X2luXSkgOiAnJ1IFbm90SW5CCwoJbGVzc190aGFu", + "Qg4KDGdyZWF0ZXJfdGhhbkIICgZfY29uc3QikxUKDVNGaXhlZDMyUnVsZXMS", + "eAoFY29uc3QYASABKA9CXcJIWgpYCg5zZml4ZWQzMi5jb25zdBpGdGhpcyAh", + "PSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQo", + "W3J1bGVzLmNvbnN0XSkgOiAnJ0gCUgVjb25zdIgBARKRAQoCbHQYAiABKA9C", + "f8JIfAp6CgtzZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMo", + "cnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJl", + "IGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIAFICbHQS", + "pAEKA2x0ZRgDIAEoD0KPAcJIiwEKiAEKDHNmaXhlZDMyLmx0ZRp4IWhhcyhy", + "dWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5s", + "dGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycu", + "Zm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSABSA2x0ZRKqBwoCZ3QYBCABKA9C", + "lwfCSJMHCn0KC3NmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFz", + "KHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3Qg", + "YmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2", + "AQoOc2ZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0", + "ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0g", + "cnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5k", + "IGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6", + "ICcnCr4BChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMu", + "bHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRo", + "aXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0", + "ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3Qs", + "IHJ1bGVzLmx0XSkgOiAnJwrGAQoPc2ZpeGVkMzIuZ3RfbHRlGrIBaGFzKHJ1", + "bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4g", + "cnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBi", + "ZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAl", + "cycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZc2Zp", + "eGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1", + "bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRo", + "aXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4g", + "JXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVz", + "Lmd0LCBydWxlcy5sdGVdKSA6ICcnSAFSAmd0EvcHCgNndGUYBSABKA9C4gfC", + "SN4HCosBCgxzZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMo", + "cnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBi", + "ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMu", + "Z3RlXSkgOiAnJwrFAQoPc2ZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0", + "KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMu", + "bHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0", + "ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3Jt", + "YXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQzMi5n", + "dGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8", + "IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVs", + "ZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFs", + "IHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1", + "bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxl", + "cy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBy", + "dWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJl", + "IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9y", + "IGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkg", + "OiAnJwrdAQoac2ZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVs", + "ZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0", + "ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJl", + "IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3Ig", + "ZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6", + "ICcnSAFSA2d0ZRJ8CgJpbhgGIAMoD0JswkhpCmcKC3NmaXhlZDMyLmluGlgh", + "KHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBp", + "biBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnUgJp", + "bhKAAQoGbm90X2luGAcgAygPQmnCSGYKZAoPc2ZpeGVkMzIubm90X2luGlF0", + "aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBs", + "aXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJydSBW5vdEluQgsK", + "CWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW5CCAoGX2NvbnN0IpMVCg1TRml4", + "ZWQ2NFJ1bGVzEngKBWNvbnN0GAEgASgQQl3CSFoKWAoOc2ZpeGVkNjQuY29u", + "c3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAl", + "cycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJydIAlIFY29uc3SIAQESkQEK", + "Amx0GAIgASgQQn/CSHwKegoLc2ZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3Rl", + "KSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFs", + "dWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6", + "ICcnSABSAmx0EqQBCgNsdGUYAyABKBBCjwHCSIsBCogBCgxzZml4ZWQ2NC5s", + "dGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlz", + "ID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1", + "YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAUgNsdGUSqgcK", + "Amd0GAQgASgQQpcHwkiTBwp9CgtzZml4ZWQ2NC5ndBpuIWhhcyhydWxlcy5s", + "dCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2", + "YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5n", + "dF0pIDogJycKtgEKDnNmaXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAm", + "JiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8", + "fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0", + "aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1", + "bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEB", + "aGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxl", + "cy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVz", + "dCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQo", + "W3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDY0Lmd0X2x0", + "ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAm", + "JiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3Zh", + "bHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3Ig", + "ZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDog", + "JycKzgEKGXNmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMu", + "bHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwg", + "dGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3Jl", + "YXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9y", + "bWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBUgJndBL3BwoDZ3Rl", + "GAUgASgQQuIHwkjeBwqLAQoMc2ZpeGVkNjQuZ3RlGnshaGFzKHJ1bGVzLmx0", + "KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3Zh", + "bHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3Jt", + "YXQoW3J1bGVzLmd0ZV0pIDogJycKxQEKD3NmaXhlZDY0Lmd0ZV9sdBqxAWhh", + "cyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlz", + "ID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVz", + "dCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhh", + "biAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoZ", + "c2ZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYg", + "cnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYg", + "dGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhh", + "biBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVs", + "ZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1QEKEHNmaXhlZDY0Lmd0ZV9sdGUa", + "wAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYm", + "ICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFs", + "dWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxl", + "c3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1", + "bGVzLmx0ZV0pIDogJycK3QEKGnNmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZl", + "Gr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYm", + "IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFs", + "dWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVz", + "cyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVs", + "ZXMubHRlXSkgOiAnJ0gBUgNndGUSfAoCaW4YBiADKBBCbMJIaQpnCgtzZml4", + "ZWQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVl", + "IG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbidd", + "XSkgOiAnJ1ICaW4SgAEKBm5vdF9pbhgHIAMoEEJpwkhmCmQKD3NmaXhlZDY0", + "Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBu", + "b3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcn", + "UgVub3RJbkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuQggKBl9jb25z", + "dCKLAQoJQm9vbFJ1bGVzEnQKBWNvbnN0GAEgASgIQlnCSFYKVAoKYm9vbC5j", + "b25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFs", + "ICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJ0gAUgVjb25zdIgBAUII", + "CgZfY29uc3Qi6CQKC1N0cmluZ1J1bGVzEngKBWNvbnN0GAEgASgJQl3CSFoK", + "WAoMc3RyaW5nLmNvbnN0Gkh0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVl", + "IG11c3QgZXF1YWwgYCVzYCcuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJydI", + "AVIFY29uc3SIAQESiAEKA2xlbhgTIAEoBEJxwkhuCmwKCnN0cmluZy5sZW4a", + "XnVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICd2YWx1ZSBsZW5n", + "dGggbXVzdCBiZSAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLmxlbl0p", + "IDogJydIAlIDbGVuiAEBEqYBCgdtaW5fbGVuGAIgASgEQocBwkiDAQqAAQoO", + "c3RyaW5nLm1pbl9sZW4abnVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWlu", + "X2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBjaGFy", + "YWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1pbl9sZW5dKSA6ICcnSANSBm1pbkxl", + "bogBARKkAQoHbWF4X2xlbhgDIAEoBEKFAcJIgQEKfwoOc3RyaW5nLm1heF9s", + "ZW4abXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1", + "ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGNoYXJhY3RlcnMnLmZvcm1h", + "dChbcnVsZXMubWF4X2xlbl0pIDogJydIBFIGbWF4TGVuiAEBEqoBCglsZW5f", + "Ynl0ZXMYFCABKARChwHCSIMBCoABChBzdHJpbmcubGVuX2J5dGVzGmx1aW50", + "KGJ5dGVzKHRoaXMpLnNpemUoKSkgIT0gcnVsZXMubGVuX2J5dGVzID8gJ3Zh", + "bHVlIGxlbmd0aCBtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxl", + "bl9ieXRlc10pIDogJydIBVIIbGVuQnl0ZXOIAQESsgEKCW1pbl9ieXRlcxgE", + "IAEoBEKPAcJIiwEKiAEKEHN0cmluZy5taW5fYnl0ZXMadHVpbnQoYnl0ZXMo", + "dGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICd2YWx1ZSBsZW5n", + "dGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5t", + "aW5fYnl0ZXNdKSA6ICcnSAZSCG1pbkJ5dGVziAEBErEBCgltYXhfYnl0ZXMY", + "BSABKARCjgHCSIoBCocBChBzdHJpbmcubWF4X2J5dGVzGnN1aW50KGJ5dGVz", + "KHRoaXMpLnNpemUoKSkgPiBydWxlcy5tYXhfYnl0ZXMgPyAndmFsdWUgbGVu", + "Z3RoIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5t", + "YXhfYnl0ZXNdKSA6ICcnSAdSCG1heEJ5dGVziAEBEpsBCgdwYXR0ZXJuGAYg", + "ASgJQnzCSHkKdwoOc3RyaW5nLnBhdHRlcm4aZSF0aGlzLm1hdGNoZXMocnVs", + "ZXMucGF0dGVybikgPyAndmFsdWUgZG9lcyBub3QgbWF0Y2ggcmVnZXggcGF0", + "dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnSAhSB3Bh", + "dHRlcm6IAQESkQEKBnByZWZpeBgHIAEoCUJ0wkhxCm8KDXN0cmluZy5wcmVm", + "aXgaXiF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBk", + "b2VzIG5vdCBoYXZlIHByZWZpeCBgJXNgJy5mb3JtYXQoW3J1bGVzLnByZWZp", + "eF0pIDogJydICVIGcHJlZml4iAEBEo8BCgZzdWZmaXgYCCABKAlCcsJIbwpt", + "Cg1zdHJpbmcuc3VmZml4GlwhdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgp", + "ID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4IGAlc2AnLmZvcm1hdChb", + "cnVsZXMuc3VmZml4XSkgOiAnJ0gKUgZzdWZmaXiIAQESnwEKCGNvbnRhaW5z", + "GAkgASgJQn7CSHsKeQoPc3RyaW5nLmNvbnRhaW5zGmYhdGhpcy5jb250YWlu", + "cyhydWxlcy5jb250YWlucykgPyAndmFsdWUgZG9lcyBub3QgY29udGFpbiBz", + "dWJzdHJpbmcgYCVzYCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJydI", + "C1IIY29udGFpbnOIAQESqgEKDG5vdF9jb250YWlucxgXIAEoCUKBAcJIfgp8", + "ChNzdHJpbmcubm90X2NvbnRhaW5zGmV0aGlzLmNvbnRhaW5zKHJ1bGVzLm5v", + "dF9jb250YWlucykgPyAndmFsdWUgY29udGFpbnMgc3Vic3RyaW5nIGAlc2An", + "LmZvcm1hdChbcnVsZXMubm90X2NvbnRhaW5zXSkgOiAnJ0gMUgtub3RDb250", + "YWluc4gBARJ6CgJpbhgKIAMoCUJqwkhnCmUKCXN0cmluZy5pbhpYISh0aGlz", + "IGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlz", + "dCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJ1ICaW4SfgoG", + "bm90X2luGAsgAygJQmfCSGQKYgoNc3RyaW5nLm5vdF9pbhpRdGhpcyBpbiBy", + "dWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycu", + "Zm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnUgVub3RJbhJgCgVlbWFpbBgM", + "IAEoCEJIwkhFCkMKDHN0cmluZy5lbWFpbBIjdmFsdWUgbXVzdCBiZSBhIHZh", + "bGlkIGVtYWlsIGFkZHJlc3MaDnRoaXMuaXNFbWFpbCgpSABSBWVtYWlsEmcK", + "CGhvc3RuYW1lGA0gASgIQknCSEYKRAoPc3RyaW5nLmhvc3RuYW1lEh52YWx1", + "ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdG5hbWUaEXRoaXMuaXNIb3N0bmFtZSgp", + "SABSCGhvc3RuYW1lElEKAmlwGA4gASgIQj/CSDwKOgoJc3RyaW5nLmlwEiB2", + "YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxoLdGhpcy5pc0lwKClI", + "AFICaXASWgoEaXB2NBgPIAEoCEJEwkhBCj8KC3N0cmluZy5pcHY0EiJ2YWx1", + "ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGgx0aGlzLmlzSXAoNClI", + "AFIEaXB2NBJaCgRpcHY2GBAgASgIQkTCSEEKPwoLc3RyaW5nLmlwdjYSInZh", + "bHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaDHRoaXMuaXNJcCg2", + "KUgAUgRpcHY2Ek4KA3VyaRgRIAEoCEI6wkg3CjUKCnN0cmluZy51cmkSGXZh", + "bHVlIG11c3QgYmUgYSB2YWxpZCBVUkkaDHRoaXMuaXNVcmkoKUgAUgN1cmkS", + "XAoHdXJpX3JlZhgSIAEoCEJBwkg+CjwKDnN0cmluZy51cmlfcmVmEhl2YWx1", + "ZSBtdXN0IGJlIGEgdmFsaWQgVVJJGg90aGlzLmlzVXJpUmVmKClIAFIGdXJp", + "UmVmEoIBCgdhZGRyZXNzGBUgASgIQmbCSGMKYQoOc3RyaW5nLmFkZHJlc3MS", + "LXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0bmFtZSwgb3IgaXAgYWRkcmVz", + "cxogdGhpcy5pc0hvc3RuYW1lKCkgfHwgdGhpcy5pc0lwKClIAFIHYWRkcmVz", + "cxKwAQoEdXVpZBgWIAEoCEKZAcJIlQEKkgEKC3N0cmluZy51dWlkGoIBIXRo", + "aXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsw", + "LTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQn", + "KSA/ICd2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRCcgOiAnJ0gAUgR1dWlk", + "EoEBChFpcF93aXRoX3ByZWZpeGxlbhgaIAEoCEJTwkhQCk4KGHN0cmluZy5p", + "cF93aXRoX3ByZWZpeGxlbhIfdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIHBy", + "ZWZpeBoRdGhpcy5pc0lwUHJlZml4KClIAFIPaXBXaXRoUHJlZml4bGVuEp4B", + "ChNpcHY0X3dpdGhfcHJlZml4bGVuGBsgASgIQmzCSGkKZwoac3RyaW5nLmlw", + "djRfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0", + "IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGhJ0aGlzLmlzSXBQcmVmaXgo", + "NClIAFIRaXB2NFdpdGhQcmVmaXhsZW4SngEKE2lwdjZfd2l0aF9wcmVmaXhs", + "ZW4YHCABKAhCbMJIaQpnChpzdHJpbmcuaXB2Nl93aXRoX3ByZWZpeGxlbhI1", + "dmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcyB3aXRoIHByZWZp", + "eCBsZW5ndGgaEnRoaXMuaXNJcFByZWZpeCg2KUgAUhFpcHY2V2l0aFByZWZp", + "eGxlbhJuCglpcF9wcmVmaXgYHSABKAhCT8JITApKChBzdHJpbmcuaXBfcHJl", + "Zml4Eh92YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgcHJlZml4GhV0aGlzLmlz", + "SXBQcmVmaXgodHJ1ZSlIAFIIaXBQcmVmaXgSeQoLaXB2NF9wcmVmaXgYHiAB", + "KAhCVsJIUwpRChJzdHJpbmcuaXB2NF9wcmVmaXgSIXZhbHVlIG11c3QgYmUg", + "YSB2YWxpZCBJUHY0IHByZWZpeBoYdGhpcy5pc0lwUHJlZml4KDQsIHRydWUp", + "SABSCmlwdjRQcmVmaXgSeQoLaXB2Nl9wcmVmaXgYHyABKAhCVsJIUwpRChJz", + "dHJpbmcuaXB2Nl9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2", + "IHByZWZpeBoYdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpSABSCmlwdjZQcmVm", + "aXgSrAQKEHdlbGxfa25vd25fcmVnZXgYGCABKA4yGC5idWYudmFsaWRhdGUu", + "S25vd25SZWdleELlA8JI4QMK6wEKI3N0cmluZy53ZWxsX2tub3duX3JlZ2V4", + "LmhlYWRlcl9uYW1lGsMBcnVsZXMud2VsbF9rbm93bl9yZWdleCA9PSAxICYm", + "ICF0aGlzLm1hdGNoZXMoIWhhcyhydWxlcy5zdHJpY3QpIHx8IHJ1bGVzLnN0", + "cmljdCA/J146P1swLTlhLXpBLVohIyQlJlwnKistLl5ffH5ceDYwXSskJyA6", + "J15bXlx1MDAwMFx1MDAwQVx1MDAwRF0rJCcpID8gJ3ZhbHVlIG11c3QgYmUg", + "YSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lJyA6ICcnCvABCiRzdHJpbmcud2Vs", + "bF9rbm93bl9yZWdleC5oZWFkZXJfdmFsdWUaxwFydWxlcy53ZWxsX2tub3du", + "X3JlZ2V4ID09IDIgJiYgIXRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmlj", + "dCkgfHwgcnVsZXMuc3RyaWN0ID8nXlteXHUwMDAwLVx1MDAwOFx1MDAwQS1c", + "dTAwMUZcdTAwN0ZdKiQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSokJykg", + "PyAndmFsdWUgbXVzdCBiZSBhIHZhbGlkIEhUVFAgaGVhZGVyIHZhbHVlJyA6", + "ICcnSABSDndlbGxLbm93blJlZ2V4EhsKBnN0cmljdBgZIAEoCEgNUgZzdHJp", + "Y3SIAQFCDAoKd2VsbF9rbm93bkIICgZfY29uc3RCBgoEX2xlbkIKCghfbWlu", + "X2xlbkIKCghfbWF4X2xlbkIMCgpfbGVuX2J5dGVzQgwKCl9taW5fYnl0ZXNC", + "DAoKX21heF9ieXRlc0IKCghfcGF0dGVybkIJCgdfcHJlZml4QgkKB19zdWZm", + "aXhCCwoJX2NvbnRhaW5zQg8KDV9ub3RfY29udGFpbnNCCQoHX3N0cmljdCLa", + "DgoKQnl0ZXNSdWxlcxJyCgVjb25zdBgBIAEoDEJXwkhUClIKC2J5dGVzLmNv", + "bnN0GkN0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgYmUgJXgn", + "LmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnSAFSBWNvbnN0iAEBEoIBCgNs", + "ZW4YDSABKARCa8JIaApmCglieXRlcy5sZW4aWXVpbnQodGhpcy5zaXplKCkp", + "ICE9IHJ1bGVzLmxlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBieXRl", + "cycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnSAJSA2xlbogBARKdAQoHbWlu", + "X2xlbhgCIAEoBEJ/wkh8CnoKDWJ5dGVzLm1pbl9sZW4aaXVpbnQodGhpcy5z", + "aXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBi", + "ZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkg", + "OiAnJ0gDUgZtaW5MZW6IAQESlQEKB21heF9sZW4YAyABKARCd8JIdApyCg1i", + "eXRlcy5tYXhfbGVuGmF1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9s", + "ZW4gPyAndmFsdWUgbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQo", + "W3J1bGVzLm1heF9sZW5dKSA6ICcnSARSBm1heExlbogBARKeAQoHcGF0dGVy", + "bhgEIAEoCUJ/wkh8CnoKDWJ5dGVzLnBhdHRlcm4aaSFzdHJpbmcodGhpcyku", + "bWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBtdXN0IG1hdGNoIHJl", + "Z2V4IHBhdHRlcm4gYCVzYCcuZm9ybWF0KFtydWxlcy5wYXR0ZXJuXSkgOiAn", + "J0gFUgdwYXR0ZXJuiAEBEo4BCgZwcmVmaXgYBSABKAxCccJIbgpsCgxieXRl", + "cy5wcmVmaXgaXCF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2", + "YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCAleCcuZm9ybWF0KFtydWxlcy5w", + "cmVmaXhdKSA6ICcnSAZSBnByZWZpeIgBARKMAQoGc3VmZml4GAYgASgMQm/C", + "SGwKagoMYnl0ZXMuc3VmZml4GlohdGhpcy5lbmRzV2l0aChydWxlcy5zdWZm", + "aXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4ICV4Jy5mb3JtYXQo", + "W3J1bGVzLnN1ZmZpeF0pIDogJydIB1IGc3VmZml4iAEBEpIBCghjb250YWlu", + "cxgHIAEoDEJxwkhuCmwKDmJ5dGVzLmNvbnRhaW5zGlohdGhpcy5jb250YWlu", + "cyhydWxlcy5jb250YWlucykgPyAndmFsdWUgZG9lcyBub3QgY29udGFpbiAl", + "eCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJydICFIIY29udGFpbnOI", + "AQESmwEKAmluGAggAygMQooBwkiGAQqDAQoIYnl0ZXMuaW4ad2R5bihydWxl", + "cylbJ2luJ10uc2l6ZSgpID4gMCAmJiAhKHRoaXMgaW4gZHluKHJ1bGVzKVsn", + "aW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5", + "bihydWxlcylbJ2luJ11dKSA6ICcnUgJpbhJ9CgZub3RfaW4YCSADKAxCZsJI", + "YwphCgxieXRlcy5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3Zh", + "bHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90", + "X2luXSkgOiAnJ1IFbm90SW4ScgoCaXAYCiABKAhCYMJIXQpbCghieXRlcy5p", + "cBpPdGhpcy5zaXplKCkgIT0gNCAmJiB0aGlzLnNpemUoKSAhPSAxNiA/ICd2", + "YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcycgOiAnJ0gAUgJpcBJl", + "CgRpcHY0GAsgASgIQk/CSEwKSgoKYnl0ZXMuaXB2NBo8dGhpcy5zaXplKCkg", + "IT0gNCA/ICd2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzJyA6", + "ICcnSABSBGlwdjQSZgoEaXB2NhgMIAEoCEJQwkhNCksKCmJ5dGVzLmlwdjYa", + "PXRoaXMuc2l6ZSgpICE9IDE2ID8gJ3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJ", + "UHY2IGFkZHJlc3MnIDogJydIAFIEaXB2NkIMCgp3ZWxsX2tub3duQggKBl9j", + "b25zdEIGCgRfbGVuQgoKCF9taW5fbGVuQgoKCF9tYXhfbGVuQgoKCF9wYXR0", + "ZXJuQgkKB19wcmVmaXhCCQoHX3N1ZmZpeEILCglfY29udGFpbnMivAMKCUVu", + "dW1SdWxlcxJ0CgVjb25zdBgBIAEoBUJZwkhWClQKCmVudW0uY29uc3QaRnRo", + "aXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9y", + "bWF0KFtydWxlcy5jb25zdF0pIDogJydIAFIFY29uc3SIAQESJgoMZGVmaW5l", + "ZF9vbmx5GAIgASgISAFSC2RlZmluZWRPbmx5iAEBEngKAmluGAMgAygFQmjC", + "SGUKYwoHZW51bS5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8g", + "J3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMp", + "WydpbiddXSkgOiAnJ1ICaW4SfAoGbm90X2luGAQgAygFQmXCSGIKYAoLZW51", + "bS5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qg", + "bm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAn", + "J1IFbm90SW5CCAoGX2NvbnN0Qg8KDV9kZWZpbmVkX29ubHkizQQKDVJlcGVh", + "dGVkUnVsZXMSrQEKCW1pbl9pdGVtcxgBIAEoBEKKAcJIhgEKgwEKEnJlcGVh", + "dGVkLm1pbl9pdGVtcxptdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5f", + "aXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIGF0IGxlYXN0ICVkIGl0ZW0o", + "cyknLmZvcm1hdChbcnVsZXMubWluX2l0ZW1zXSkgOiAnJ0gAUghtaW5JdGVt", + "c4gBARKxAQoJbWF4X2l0ZW1zGAIgASgEQo4BwkiKAQqHAQoScmVwZWF0ZWQu", + "bWF4X2l0ZW1zGnF1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9pdGVt", + "cyA/ICd2YWx1ZSBtdXN0IGNvbnRhaW4gbm8gbW9yZSB0aGFuICVzIGl0ZW0o", + "cyknLmZvcm1hdChbcnVsZXMubWF4X2l0ZW1zXSkgOiAnJ0gBUghtYXhJdGVt", + "c4gBARJsCgZ1bmlxdWUYAyABKAhCT8JITApKCg9yZXBlYXRlZC51bmlxdWUS", + "KHJlcGVhdGVkIHZhbHVlIG11c3QgY29udGFpbiB1bmlxdWUgaXRlbXMaDXRo", + "aXMudW5pcXVlKClIAlIGdW5pcXVliAEBEjkKBWl0ZW1zGAQgASgLMh4uYnVm", + "LnZhbGlkYXRlLkZpZWxkQ29uc3RyYWludHNIA1IFaXRlbXOIAQFCDAoKX21p", + "bl9pdGVtc0IMCgpfbWF4X2l0ZW1zQgkKB191bmlxdWVCCAoGX2l0ZW1zIvED", + "CghNYXBSdWxlcxKeAQoJbWluX3BhaXJzGAEgASgEQnzCSHkKdwoNbWFwLm1p", + "bl9wYWlycxpmdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fcGFpcnMg", + "PyAnbWFwIG11c3QgYmUgYXQgbGVhc3QgJWQgZW50cmllcycuZm9ybWF0KFty", + "dWxlcy5taW5fcGFpcnNdKSA6ICcnSABSCG1pblBhaXJziAEBEp0BCgltYXhf", + "cGFpcnMYAiABKARCe8JIeAp2Cg1tYXAubWF4X3BhaXJzGmV1aW50KHRoaXMu", + "c2l6ZSgpKSA+IHJ1bGVzLm1heF9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBt", + "b3N0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWF4X3BhaXJzXSkgOiAn", + "J0gBUghtYXhQYWlyc4gBARI3CgRrZXlzGAQgASgLMh4uYnVmLnZhbGlkYXRl", + "LkZpZWxkQ29uc3RyYWludHNIAlIEa2V5c4gBARI7CgZ2YWx1ZXMYBSABKAsy", + "Hi5idWYudmFsaWRhdGUuRmllbGRDb25zdHJhaW50c0gDUgZ2YWx1ZXOIAQFC", + "DAoKX21pbl9wYWlyc0IMCgpfbWF4X3BhaXJzQgcKBV9rZXlzQgkKB192YWx1", + "ZXMiMQoIQW55UnVsZXMSDgoCaW4YAiADKAlSAmluEhUKBm5vdF9pbhgDIAMo", + "CVIFbm90SW4i0hYKDUR1cmF0aW9uUnVsZXMSkwEKBWNvbnN0GAIgASgLMhku", + "Z29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQl3CSFoKWAoOZHVyYXRpb24uY29u", + "c3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAl", + "cycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJydIAlIFY29uc3SIAQESrAEK", + "Amx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQn/CSHwKegoL", + "ZHVyYXRpb24ubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0", + "KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRo", + "YW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSABSAmx0Er8BCgNsdGUY", + "BCABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CjwHCSIsBCogBCgxk", + "dXJhdGlvbi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0", + "KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRo", + "YW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gA", + "UgNsdGUSxQcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9u", + "QpcHwkiTBwp9CgtkdXJhdGlvbi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhh", + "cyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0", + "IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycK", + "tgEKDmR1cmF0aW9uLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5s", + "dCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9", + "IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFu", + "ZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkg", + "OiAnJwq+AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVz", + "Lmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0", + "aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVh", + "dGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0", + "LCBydWxlcy5sdF0pIDogJycKxgEKD2R1cmF0aW9uLmd0X2x0ZRqyAWhhcyhy", + "dWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+", + "IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3Qg", + "YmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8g", + "JXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGWR1", + "cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBy", + "dWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0", + "aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFu", + "ICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxl", + "cy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBUgJndBKSCAoDZ3RlGAYgASgLMhku", + "Z29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQuIHwkjeBwqLAQoMZHVyYXRpb24u", + "Z3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhp", + "cyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9y", + "IGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxQEKD2R1", + "cmF0aW9uLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0g", + "cnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxl", + "cy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwg", + "dG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1", + "bGVzLmx0XSkgOiAnJwrNAQoZZHVyYXRpb24uZ3RlX2x0X2V4Y2x1c2l2ZRqv", + "AWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1", + "bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBt", + "dXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRo", + "YW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1QEK", + "EGR1cmF0aW9uLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5s", + "dGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMg", + "PCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3Ig", + "ZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9y", + "bWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3QEKGmR1cmF0aW9u", + "Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMu", + "bHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMg", + "PCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3Ig", + "ZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3Jt", + "YXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBUgNndGUSlwEKAmlu", + "GAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQmzCSGkKZwoLZHVy", + "YXRpb24uaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1", + "ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4n", + "XV0pIDogJydSAmluEpsBCgZub3RfaW4YCCADKAsyGS5nb29nbGUucHJvdG9i", + "dWYuRHVyYXRpb25CacJIZgpkCg9kdXJhdGlvbi5ub3RfaW4aUXRoaXMgaW4g", + "cnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMn", + "LmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJ1IFbm90SW5CCwoJbGVzc190", + "aGFuQg4KDGdyZWF0ZXJfdGhhbkIICgZfY29uc3QiyhcKDlRpbWVzdGFtcFJ1", + "bGVzEpUBCgVjb25zdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3Rh", + "bXBCXsJIWwpZCg90aW1lc3RhbXAuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29u", + "c3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25z", + "dF0pIDogJydIAlIFY29uc3SIAQESrwEKAmx0GAMgASgLMhouZ29vZ2xlLnBy", + "b3RvYnVmLlRpbWVzdGFtcEKAAcJIfQp7Cgx0aW1lc3RhbXAubHQaayFoYXMo", + "cnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVz", + "Lmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVs", + "ZXMubHRdKSA6ICcnSABSAmx0EsEBCgNsdGUYBCABKAsyGi5nb29nbGUucHJv", + "dG9idWYuVGltZXN0YW1wQpABwkiMAQqJAQoNdGltZXN0YW1wLmx0ZRp4IWhh", + "cyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxl", + "cy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAl", + "cycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSABSA2x0ZRJhCgZsdF9ub3cY", + "ByABKAhCSMJIRQpDChB0aW1lc3RhbXAubHRfbm93Gi90aGlzID4gbm93ID8g", + "J3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG5vdycgOiAnJ0gAUgVsdE5vdxLL", + "BwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpwHwkiY", + "Bwp+Cgx0aW1lc3RhbXAuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVs", + "ZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBn", + "cmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrcBCg90", + "aW1lc3RhbXAuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49", + "IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVs", + "ZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxl", + "c3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcn", + "Cr8BChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0", + "KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlz", + "ICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVy", + "IHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBy", + "dWxlcy5sdF0pIDogJycKxwEKEHRpbWVzdGFtcC5ndF9sdGUasgFoYXMocnVs", + "ZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBy", + "dWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJl", + "IGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVz", + "Jy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs8BChp0aW1l", + "c3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1", + "bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRo", + "aXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4g", + "JXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVz", + "Lmd0LCBydWxlcy5sdGVdKSA6ICcnSAFSAmd0EpgICgNndGUYBiABKAsyGi5n", + "b29nbGUucHJvdG9idWYuVGltZXN0YW1wQucHwkjjBwqMAQoNdGltZXN0YW1w", + "Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRo", + "aXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBv", + "ciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsYBChB0", + "aW1lc3RhbXAuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+", + "PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1", + "bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVh", + "bCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwg", + "cnVsZXMubHRdKSA6ICcnCs4BChp0aW1lc3RhbXAuZ3RlX2x0X2V4Y2x1c2l2", + "ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYg", + "KHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1", + "ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNz", + "IHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK", + "1gEKEXRpbWVzdGFtcC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVs", + "ZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0", + "aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFu", + "IG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMn", + "LmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt4BCht0aW1l", + "c3RhbXAuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBy", + "dWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYg", + "dGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhh", + "biBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMn", + "LmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAFSA2d0ZRJk", + "CgZndF9ub3cYCCABKAhCS8JISApGChB0aW1lc3RhbXAuZ3Rfbm93GjJ0aGlz", + "IDwgbm93ID8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAn", + "J0gBUgVndE5vdxLFAQoGd2l0aGluGAkgASgLMhkuZ29vZ2xlLnByb3RvYnVm", + "LkR1cmF0aW9uQowBwkiIAQqFAQoQdGltZXN0YW1wLndpdGhpbhpxdGhpcyA8", + "IG5vdy1ydWxlcy53aXRoaW4gfHwgdGhpcyA+IG5vdytydWxlcy53aXRoaW4g", + "PyAndmFsdWUgbXVzdCBiZSB3aXRoaW4gJXMgb2Ygbm93Jy5mb3JtYXQoW3J1", + "bGVzLndpdGhpbl0pIDogJydIA1IGd2l0aGluiAEBQgsKCWxlc3NfdGhhbkIO", + "CgxncmVhdGVyX3RoYW5CCAoGX2NvbnN0QgkKB193aXRoaW4qbgoKS25vd25S", + "ZWdleBIbChdLTk9XTl9SRUdFWF9VTlNQRUNJRklFRBAAEiAKHEtOT1dOX1JF", + "R0VYX0hUVFBfSEVBREVSX05BTUUQARIhCh1LTk9XTl9SRUdFWF9IVFRQX0hF", + "QURFUl9WQUxVRRACOl8KB21lc3NhZ2USHy5nb29nbGUucHJvdG9idWYuTWVz", + "c2FnZU9wdGlvbnMYhwkgASgLMiAuYnVmLnZhbGlkYXRlLk1lc3NhZ2VDb25z", + "dHJhaW50c1IHbWVzc2FnZYgBATpXCgVvbmVvZhIdLmdvb2dsZS5wcm90b2J1", + "Zi5PbmVvZk9wdGlvbnMYhwkgASgLMh4uYnVmLnZhbGlkYXRlLk9uZW9mQ29u", + "c3RyYWludHNSBW9uZW9miAEBOlcKBWZpZWxkEh0uZ29vZ2xlLnByb3RvYnVm", + "LkZpZWxkT3B0aW9ucxiHCSABKAsyHi5idWYudmFsaWRhdGUuRmllbGRDb25z", + "dHJhaW50c1IFZmllbGSIAQFCbgoSYnVpbGQuYnVmLnZhbGlkYXRlQg1WYWxp", + "ZGF0ZVByb3RvUAFaR2J1Zi5idWlsZC9nZW4vZ28vYnVmYnVpbGQvcHJvdG92", + "YWxpZGF0ZS9wcm90b2NvbGJ1ZmZlcnMvZ28vYnVmL3ZhbGlkYXRlYgZwcm90", + "bzM=")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { global::Buf.Validate.ExpressionReflection.Descriptor, global::Buf.Validate.Priv.PrivateReflection.Descriptor, global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, }, + new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Buf.Validate.KnownRegex), }, new pb::Extension[] { ValidateExtensions.Message, ValidateExtensions.Oneof, ValidateExtensions.Field }, new pbr::GeneratedClrTypeInfo[] { + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.MessageConstraints), global::Buf.Validate.MessageConstraints.Parser, new[]{ "Disabled", "Cel" }, new[]{ "Disabled" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.OneofConstraints), global::Buf.Validate.OneofConstraints.Parser, new[]{ "Required" }, new[]{ "Required" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.FieldConstraints), global::Buf.Validate.FieldConstraints.Parser, new[]{ "Cel", "Skipped", "Required", "IgnoreEmpty", "Float", "Double", "Int32", "Int64", "Uint32", "Uint64", "Sint32", "Sint64", "Fixed32", "Fixed64", "Sfixed32", "Sfixed64", "Bool", "String", "Bytes", "Enum", "Repeated", "Map", "Any", "Duration", "Timestamp" }, new[]{ "Type" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.FloatRules), global::Buf.Validate.FloatRules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn", "Finite" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.DoubleRules), global::Buf.Validate.DoubleRules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn", "Finite" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.Int32Rules), global::Buf.Validate.Int32Rules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.Int64Rules), global::Buf.Validate.Int64Rules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.UInt32Rules), global::Buf.Validate.UInt32Rules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.UInt64Rules), global::Buf.Validate.UInt64Rules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.SInt32Rules), global::Buf.Validate.SInt32Rules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.SInt64Rules), global::Buf.Validate.SInt64Rules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.Fixed32Rules), global::Buf.Validate.Fixed32Rules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.Fixed64Rules), global::Buf.Validate.Fixed64Rules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.SFixed32Rules), global::Buf.Validate.SFixed32Rules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.SFixed64Rules), global::Buf.Validate.SFixed64Rules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.BoolRules), global::Buf.Validate.BoolRules.Parser, new[]{ "Const" }, new[]{ "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.StringRules), global::Buf.Validate.StringRules.Parser, new[]{ "Const", "Len", "MinLen", "MaxLen", "LenBytes", "MinBytes", "MaxBytes", "Pattern", "Prefix", "Suffix", "Contains", "NotContains", "In", "NotIn", "Email", "Hostname", "Ip", "Ipv4", "Ipv6", "Uri", "UriRef", "Address", "Uuid", "IpWithPrefixlen", "Ipv4WithPrefixlen", "Ipv6WithPrefixlen", "IpPrefix", "Ipv4Prefix", "Ipv6Prefix", "WellKnownRegex", "Strict" }, new[]{ "WellKnown", "Const", "Len", "MinLen", "MaxLen", "LenBytes", "MinBytes", "MaxBytes", "Pattern", "Prefix", "Suffix", "Contains", "NotContains", "Strict" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.BytesRules), global::Buf.Validate.BytesRules.Parser, new[]{ "Const", "Len", "MinLen", "MaxLen", "Pattern", "Prefix", "Suffix", "Contains", "In", "NotIn", "Ip", "Ipv4", "Ipv6" }, new[]{ "WellKnown", "Const", "Len", "MinLen", "MaxLen", "Pattern", "Prefix", "Suffix", "Contains" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.EnumRules), global::Buf.Validate.EnumRules.Parser, new[]{ "Const", "DefinedOnly", "In", "NotIn" }, new[]{ "Const", "DefinedOnly" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.RepeatedRules), global::Buf.Validate.RepeatedRules.Parser, new[]{ "MinItems", "MaxItems", "Unique", "Items" }, new[]{ "MinItems", "MaxItems", "Unique", "Items" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.MapRules), global::Buf.Validate.MapRules.Parser, new[]{ "MinPairs", "MaxPairs", "Keys", "Values" }, new[]{ "MinPairs", "MaxPairs", "Keys", "Values" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.AnyRules), global::Buf.Validate.AnyRules.Parser, new[]{ "In", "NotIn" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.DurationRules), global::Buf.Validate.DurationRules.Parser, new[]{ "Const", "Lt", "Lte", "Gt", "Gte", "In", "NotIn" }, new[]{ "LessThan", "GreaterThan", "Const" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Buf.Validate.TimestampRules), global::Buf.Validate.TimestampRules.Parser, new[]{ "Const", "Lt", "Lte", "LtNow", "Gt", "Gte", "GtNow", "Within" }, new[]{ "LessThan", "GreaterThan", "Const", "Within" }, null, null, null) + })); + } + #endregion + + } + /// Holder for extension identifiers generated from the top level of buf/validate/validate.proto + public static partial class ValidateExtensions { + /// + /// Rules specify the validations to be performed on this message. By default, + /// no validation is performed against a message. + /// + public static readonly pb::Extension Message = + new pb::Extension(1159, pb::FieldCodec.ForMessage(9274, global::Buf.Validate.MessageConstraints.Parser)); + /// + /// Rules specify the validations to be performed on this oneof. By default, + /// no validation is performed against a oneof. + /// + public static readonly pb::Extension Oneof = + new pb::Extension(1159, pb::FieldCodec.ForMessage(9274, global::Buf.Validate.OneofConstraints.Parser)); + /// + /// Rules specify the validations to be performed on this field. By default, + /// no validation is performed against a field. + /// + public static readonly pb::Extension Field = + new pb::Extension(1159, pb::FieldCodec.ForMessage(9274, global::Buf.Validate.FieldConstraints.Parser)); + } + + #region Enums + /// + /// WellKnownRegex contain some well-known patterns. + /// + public enum KnownRegex { + [pbr::OriginalName("KNOWN_REGEX_UNSPECIFIED")] Unspecified = 0, + /// + /// HTTP header name as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2). + /// + [pbr::OriginalName("KNOWN_REGEX_HTTP_HEADER_NAME")] HttpHeaderName = 1, + /// + /// HTTP header value as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2.4). + /// + [pbr::OriginalName("KNOWN_REGEX_HTTP_HEADER_VALUE")] HttpHeaderValue = 2, + } + + #endregion + + #region Messages + /// + /// MessageConstraints represents validation rules that are applied to the entire message. + /// It includes disabling options and a list of Constraint messages representing Common Expression Language (CEL) validation rules. + /// + public sealed partial class MessageConstraints : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MessageConstraints()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public MessageConstraints() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public MessageConstraints(MessageConstraints other) : this() { + _hasBits0 = other._hasBits0; + disabled_ = other.disabled_; + cel_ = other.cel_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public MessageConstraints Clone() { + return new MessageConstraints(this); + } + + /// Field number for the "disabled" field. + public const int DisabledFieldNumber = 1; + private readonly static bool DisabledDefaultValue = false; + + private bool disabled_; + /// + /// `disabled` is a boolean flag that, when set to true, nullifies any validation rules for this message. + /// This includes any fields within the message that would otherwise support validation. + /// + /// ```proto + /// message MyMessage { + /// // validation will be bypassed for this message + /// option (buf.validate.message).disabled = true; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Disabled { + get { if ((_hasBits0 & 1) != 0) { return disabled_; } else { return DisabledDefaultValue; } } + set { + _hasBits0 |= 1; + disabled_ = value; + } + } + /// Gets whether the "disabled" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasDisabled { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "disabled" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearDisabled() { + _hasBits0 &= ~1; + } + + /// Field number for the "cel" field. + public const int CelFieldNumber = 3; + private static readonly pb::FieldCodec _repeated_cel_codec + = pb::FieldCodec.ForMessage(26, global::Buf.Validate.Constraint.Parser); + private readonly pbc::RepeatedField cel_ = new pbc::RepeatedField(); + /// + /// `cel` is a repeated field of type Constraint. Each Constraint specifies a validation rule to be applied to this message. + /// These constraints are written in Common Expression Language (CEL) syntax. For more information on + /// CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md). + /// + /// ```proto + /// message MyMessage { + /// // The field `foo` must be greater than 42. + /// option (buf.validate.message).cel = { + /// id: "my_message.value", + /// message: "value must be greater than 42", + /// expression: "this.foo > 42", + /// }; + /// optional int32 foo = 1; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Cel { + get { return cel_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as MessageConstraints); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(MessageConstraints other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Disabled != other.Disabled) return false; + if(!cel_.Equals(other.cel_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasDisabled) hash ^= Disabled.GetHashCode(); + hash ^= cel_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasDisabled) { + output.WriteRawTag(8); + output.WriteBool(Disabled); + } + cel_.WriteTo(output, _repeated_cel_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasDisabled) { + output.WriteRawTag(8); + output.WriteBool(Disabled); + } + cel_.WriteTo(ref output, _repeated_cel_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasDisabled) { + size += 1 + 1; + } + size += cel_.CalculateSize(_repeated_cel_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(MessageConstraints other) { + if (other == null) { + return; + } + if (other.HasDisabled) { + Disabled = other.Disabled; + } + cel_.Add(other.cel_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Disabled = input.ReadBool(); + break; + } + case 26: { + cel_.AddEntriesFrom(input, _repeated_cel_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Disabled = input.ReadBool(); + break; + } + case 26: { + cel_.AddEntriesFrom(ref input, _repeated_cel_codec); + break; + } + } + } + } + #endif + + } + + /// + /// The `OneofConstraints` message type enables you to manage constraints for + /// oneof fields in your protobuf messages. + /// + public sealed partial class OneofConstraints : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OneofConstraints()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[1]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OneofConstraints() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OneofConstraints(OneofConstraints other) : this() { + _hasBits0 = other._hasBits0; + required_ = other.required_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public OneofConstraints Clone() { + return new OneofConstraints(this); + } + + /// Field number for the "required" field. + public const int RequiredFieldNumber = 1; + private readonly static bool RequiredDefaultValue = false; + + private bool required_; + /// + /// If `required` is true, exactly one field of the oneof must be present. A + /// validation error is returned if no fields in the oneof are present. The + /// field itself may still be a default value; further constraints + /// should be placed on the fields themselves to ensure they are valid values, + /// such as `min_len` or `gt`. + /// + /// ```proto + /// message MyMessage { + /// oneof value { + /// // Either `a` or `b` must be set. If `a` is set, it must also be + /// // non-empty; whereas if `b` is set, it can still be an empty string. + /// option (buf.validate.oneof).required = true; + /// string a = 1 [(buf.validate.field).string.min_len = 1]; + /// string b = 2; + /// } + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Required { + get { if ((_hasBits0 & 1) != 0) { return required_; } else { return RequiredDefaultValue; } } + set { + _hasBits0 |= 1; + required_ = value; + } + } + /// Gets whether the "required" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasRequired { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "required" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearRequired() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as OneofConstraints); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(OneofConstraints other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Required != other.Required) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasRequired) hash ^= Required.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasRequired) { + output.WriteRawTag(8); + output.WriteBool(Required); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasRequired) { + output.WriteRawTag(8); + output.WriteBool(Required); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasRequired) { + size += 1 + 1; + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(OneofConstraints other) { + if (other == null) { + return; + } + if (other.HasRequired) { + Required = other.Required; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Required = input.ReadBool(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Required = input.ReadBool(); + break; + } + } + } + } + #endif + + } + + /// + /// FieldRules encapsulates the rules for each type of field. Depending on the + /// field, the correct set should be used to ensure proper validations. + /// + public sealed partial class FieldConstraints : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FieldConstraints()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[2]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public FieldConstraints() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public FieldConstraints(FieldConstraints other) : this() { + cel_ = other.cel_.Clone(); + skipped_ = other.skipped_; + required_ = other.required_; + ignoreEmpty_ = other.ignoreEmpty_; + switch (other.TypeCase) { + case TypeOneofCase.Float: + Float = other.Float.Clone(); + break; + case TypeOneofCase.Double: + Double = other.Double.Clone(); + break; + case TypeOneofCase.Int32: + Int32 = other.Int32.Clone(); + break; + case TypeOneofCase.Int64: + Int64 = other.Int64.Clone(); + break; + case TypeOneofCase.Uint32: + Uint32 = other.Uint32.Clone(); + break; + case TypeOneofCase.Uint64: + Uint64 = other.Uint64.Clone(); + break; + case TypeOneofCase.Sint32: + Sint32 = other.Sint32.Clone(); + break; + case TypeOneofCase.Sint64: + Sint64 = other.Sint64.Clone(); + break; + case TypeOneofCase.Fixed32: + Fixed32 = other.Fixed32.Clone(); + break; + case TypeOneofCase.Fixed64: + Fixed64 = other.Fixed64.Clone(); + break; + case TypeOneofCase.Sfixed32: + Sfixed32 = other.Sfixed32.Clone(); + break; + case TypeOneofCase.Sfixed64: + Sfixed64 = other.Sfixed64.Clone(); + break; + case TypeOneofCase.Bool: + Bool = other.Bool.Clone(); + break; + case TypeOneofCase.String: + String = other.String.Clone(); + break; + case TypeOneofCase.Bytes: + Bytes = other.Bytes.Clone(); + break; + case TypeOneofCase.Enum: + Enum = other.Enum.Clone(); + break; + case TypeOneofCase.Repeated: + Repeated = other.Repeated.Clone(); + break; + case TypeOneofCase.Map: + Map = other.Map.Clone(); + break; + case TypeOneofCase.Any: + Any = other.Any.Clone(); + break; + case TypeOneofCase.Duration: + Duration = other.Duration.Clone(); + break; + case TypeOneofCase.Timestamp: + Timestamp = other.Timestamp.Clone(); + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public FieldConstraints Clone() { + return new FieldConstraints(this); + } + + /// Field number for the "cel" field. + public const int CelFieldNumber = 23; + private static readonly pb::FieldCodec _repeated_cel_codec + = pb::FieldCodec.ForMessage(186, global::Buf.Validate.Constraint.Parser); + private readonly pbc::RepeatedField cel_ = new pbc::RepeatedField(); + /// + /// `cel` is a repeated field used to represent a textual expression + /// in the Common Expression Language (CEL) syntax. For more information on + /// CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md). + /// + /// ```proto + /// message MyMessage { + /// // The field `value` must be greater than 42. + /// optional int32 value = 1 [(buf.validate.field).cel = { + /// id: "my_message.value", + /// message: "value must be greater than 42", + /// expression: "this > 42", + /// }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Cel { + get { return cel_; } + } + + /// Field number for the "skipped" field. + public const int SkippedFieldNumber = 24; + private bool skipped_; + /// + /// `skipped` is an optional boolean attribute that specifies that the + /// validation rules of this field should not be evaluated. If skipped is set to + /// true, any validation rules set for the field will be ignored. + /// + /// ```proto + /// message MyMessage { + /// // The field `value` must not be set. + /// optional MyOtherMessage value = 1 [(buf.validate.field).skipped = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Skipped { + get { return skipped_; } + set { + skipped_ = value; + } + } + + /// Field number for the "required" field. + public const int RequiredFieldNumber = 25; + private bool required_; + /// + /// If `required` is true, the field must be populated. Field presence can be + /// described as "serialized in the wire format," which follows the following rules: + /// + /// - the following "nullable" fields must be explicitly set to be considered present: + /// - singular message fields (may be their empty value) + /// - member fields of a oneof (may be their default value) + /// - proto3 optional fields (may be their default value) + /// - proto2 scalar fields + /// - proto3 scalar fields must be non-zero to be considered present + /// - repeated and map fields must be non-empty to be considered present + /// + /// ```proto + /// message MyMessage { + /// // The field `value` must be set to a non-null value. + /// optional MyOtherMessage value = 1 [(buf.validate.field).required = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Required { + get { return required_; } + set { + required_ = value; + } + } + + /// Field number for the "ignore_empty" field. + public const int IgnoreEmptyFieldNumber = 26; + private bool ignoreEmpty_; + /// + /// If `ignore_empty` is true and applied to a non-nullable field (see + /// `required` for more details), validation is skipped on the field if it is + /// the default or empty value. Adding `ignore_empty` to a "nullable" field is + /// a noop as these unset fields already skip validation (with the exception + /// of `required`). + /// + /// ```proto + /// message MyRepeated { + /// // The field `value` min_len rule is only applied if the field isn't empty. + /// repeated string value = 1 [ + /// (buf.validate.field).ignore_empty = true, + /// (buf.validate.field).min_len = 5 + /// ]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool IgnoreEmpty { + get { return ignoreEmpty_; } + set { + ignoreEmpty_ = value; + } + } + + /// Field number for the "float" field. + public const int FloatFieldNumber = 1; + /// + /// Scalar Field Types + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.FloatRules Float { + get { return typeCase_ == TypeOneofCase.Float ? (global::Buf.Validate.FloatRules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Float; + } + } + + /// Field number for the "double" field. + public const int DoubleFieldNumber = 2; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.DoubleRules Double { + get { return typeCase_ == TypeOneofCase.Double ? (global::Buf.Validate.DoubleRules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Double; + } + } + + /// Field number for the "int32" field. + public const int Int32FieldNumber = 3; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.Int32Rules Int32 { + get { return typeCase_ == TypeOneofCase.Int32 ? (global::Buf.Validate.Int32Rules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Int32; + } + } + + /// Field number for the "int64" field. + public const int Int64FieldNumber = 4; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.Int64Rules Int64 { + get { return typeCase_ == TypeOneofCase.Int64 ? (global::Buf.Validate.Int64Rules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Int64; + } + } + + /// Field number for the "uint32" field. + public const int Uint32FieldNumber = 5; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.UInt32Rules Uint32 { + get { return typeCase_ == TypeOneofCase.Uint32 ? (global::Buf.Validate.UInt32Rules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Uint32; + } + } + + /// Field number for the "uint64" field. + public const int Uint64FieldNumber = 6; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.UInt64Rules Uint64 { + get { return typeCase_ == TypeOneofCase.Uint64 ? (global::Buf.Validate.UInt64Rules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Uint64; + } + } + + /// Field number for the "sint32" field. + public const int Sint32FieldNumber = 7; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.SInt32Rules Sint32 { + get { return typeCase_ == TypeOneofCase.Sint32 ? (global::Buf.Validate.SInt32Rules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Sint32; + } + } + + /// Field number for the "sint64" field. + public const int Sint64FieldNumber = 8; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.SInt64Rules Sint64 { + get { return typeCase_ == TypeOneofCase.Sint64 ? (global::Buf.Validate.SInt64Rules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Sint64; + } + } + + /// Field number for the "fixed32" field. + public const int Fixed32FieldNumber = 9; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.Fixed32Rules Fixed32 { + get { return typeCase_ == TypeOneofCase.Fixed32 ? (global::Buf.Validate.Fixed32Rules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Fixed32; + } + } + + /// Field number for the "fixed64" field. + public const int Fixed64FieldNumber = 10; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.Fixed64Rules Fixed64 { + get { return typeCase_ == TypeOneofCase.Fixed64 ? (global::Buf.Validate.Fixed64Rules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Fixed64; + } + } + + /// Field number for the "sfixed32" field. + public const int Sfixed32FieldNumber = 11; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.SFixed32Rules Sfixed32 { + get { return typeCase_ == TypeOneofCase.Sfixed32 ? (global::Buf.Validate.SFixed32Rules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Sfixed32; + } + } + + /// Field number for the "sfixed64" field. + public const int Sfixed64FieldNumber = 12; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.SFixed64Rules Sfixed64 { + get { return typeCase_ == TypeOneofCase.Sfixed64 ? (global::Buf.Validate.SFixed64Rules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Sfixed64; + } + } + + /// Field number for the "bool" field. + public const int BoolFieldNumber = 13; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.BoolRules Bool { + get { return typeCase_ == TypeOneofCase.Bool ? (global::Buf.Validate.BoolRules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Bool; + } + } + + /// Field number for the "string" field. + public const int StringFieldNumber = 14; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.StringRules String { + get { return typeCase_ == TypeOneofCase.String ? (global::Buf.Validate.StringRules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.String; + } + } + + /// Field number for the "bytes" field. + public const int BytesFieldNumber = 15; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.BytesRules Bytes { + get { return typeCase_ == TypeOneofCase.Bytes ? (global::Buf.Validate.BytesRules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Bytes; + } + } + + /// Field number for the "enum" field. + public const int EnumFieldNumber = 16; + /// + /// Complex Field Types + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.EnumRules Enum { + get { return typeCase_ == TypeOneofCase.Enum ? (global::Buf.Validate.EnumRules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Enum; + } + } + + /// Field number for the "repeated" field. + public const int RepeatedFieldNumber = 18; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.RepeatedRules Repeated { + get { return typeCase_ == TypeOneofCase.Repeated ? (global::Buf.Validate.RepeatedRules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Repeated; + } + } + + /// Field number for the "map" field. + public const int MapFieldNumber = 19; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.MapRules Map { + get { return typeCase_ == TypeOneofCase.Map ? (global::Buf.Validate.MapRules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Map; + } + } + + /// Field number for the "any" field. + public const int AnyFieldNumber = 20; + /// + /// Well-Known Field Types + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.AnyRules Any { + get { return typeCase_ == TypeOneofCase.Any ? (global::Buf.Validate.AnyRules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Any; + } + } + + /// Field number for the "duration" field. + public const int DurationFieldNumber = 21; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.DurationRules Duration { + get { return typeCase_ == TypeOneofCase.Duration ? (global::Buf.Validate.DurationRules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Duration; + } + } + + /// Field number for the "timestamp" field. + public const int TimestampFieldNumber = 22; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.TimestampRules Timestamp { + get { return typeCase_ == TypeOneofCase.Timestamp ? (global::Buf.Validate.TimestampRules) type_ : null; } + set { + type_ = value; + typeCase_ = value == null ? TypeOneofCase.None : TypeOneofCase.Timestamp; + } + } + + private object type_; + /// Enum of possible cases for the "type" oneof. + public enum TypeOneofCase { + None = 0, + Float = 1, + Double = 2, + Int32 = 3, + Int64 = 4, + Uint32 = 5, + Uint64 = 6, + Sint32 = 7, + Sint64 = 8, + Fixed32 = 9, + Fixed64 = 10, + Sfixed32 = 11, + Sfixed64 = 12, + Bool = 13, + String = 14, + Bytes = 15, + Enum = 16, + Repeated = 18, + Map = 19, + Any = 20, + Duration = 21, + Timestamp = 22, + } + private TypeOneofCase typeCase_ = TypeOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public TypeOneofCase TypeCase { + get { return typeCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearType() { + typeCase_ = TypeOneofCase.None; + type_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as FieldConstraints); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(FieldConstraints other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if(!cel_.Equals(other.cel_)) return false; + if (Skipped != other.Skipped) return false; + if (Required != other.Required) return false; + if (IgnoreEmpty != other.IgnoreEmpty) return false; + if (!object.Equals(Float, other.Float)) return false; + if (!object.Equals(Double, other.Double)) return false; + if (!object.Equals(Int32, other.Int32)) return false; + if (!object.Equals(Int64, other.Int64)) return false; + if (!object.Equals(Uint32, other.Uint32)) return false; + if (!object.Equals(Uint64, other.Uint64)) return false; + if (!object.Equals(Sint32, other.Sint32)) return false; + if (!object.Equals(Sint64, other.Sint64)) return false; + if (!object.Equals(Fixed32, other.Fixed32)) return false; + if (!object.Equals(Fixed64, other.Fixed64)) return false; + if (!object.Equals(Sfixed32, other.Sfixed32)) return false; + if (!object.Equals(Sfixed64, other.Sfixed64)) return false; + if (!object.Equals(Bool, other.Bool)) return false; + if (!object.Equals(String, other.String)) return false; + if (!object.Equals(Bytes, other.Bytes)) return false; + if (!object.Equals(Enum, other.Enum)) return false; + if (!object.Equals(Repeated, other.Repeated)) return false; + if (!object.Equals(Map, other.Map)) return false; + if (!object.Equals(Any, other.Any)) return false; + if (!object.Equals(Duration, other.Duration)) return false; + if (!object.Equals(Timestamp, other.Timestamp)) return false; + if (TypeCase != other.TypeCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + hash ^= cel_.GetHashCode(); + if (Skipped != false) hash ^= Skipped.GetHashCode(); + if (Required != false) hash ^= Required.GetHashCode(); + if (IgnoreEmpty != false) hash ^= IgnoreEmpty.GetHashCode(); + if (typeCase_ == TypeOneofCase.Float) hash ^= Float.GetHashCode(); + if (typeCase_ == TypeOneofCase.Double) hash ^= Double.GetHashCode(); + if (typeCase_ == TypeOneofCase.Int32) hash ^= Int32.GetHashCode(); + if (typeCase_ == TypeOneofCase.Int64) hash ^= Int64.GetHashCode(); + if (typeCase_ == TypeOneofCase.Uint32) hash ^= Uint32.GetHashCode(); + if (typeCase_ == TypeOneofCase.Uint64) hash ^= Uint64.GetHashCode(); + if (typeCase_ == TypeOneofCase.Sint32) hash ^= Sint32.GetHashCode(); + if (typeCase_ == TypeOneofCase.Sint64) hash ^= Sint64.GetHashCode(); + if (typeCase_ == TypeOneofCase.Fixed32) hash ^= Fixed32.GetHashCode(); + if (typeCase_ == TypeOneofCase.Fixed64) hash ^= Fixed64.GetHashCode(); + if (typeCase_ == TypeOneofCase.Sfixed32) hash ^= Sfixed32.GetHashCode(); + if (typeCase_ == TypeOneofCase.Sfixed64) hash ^= Sfixed64.GetHashCode(); + if (typeCase_ == TypeOneofCase.Bool) hash ^= Bool.GetHashCode(); + if (typeCase_ == TypeOneofCase.String) hash ^= String.GetHashCode(); + if (typeCase_ == TypeOneofCase.Bytes) hash ^= Bytes.GetHashCode(); + if (typeCase_ == TypeOneofCase.Enum) hash ^= Enum.GetHashCode(); + if (typeCase_ == TypeOneofCase.Repeated) hash ^= Repeated.GetHashCode(); + if (typeCase_ == TypeOneofCase.Map) hash ^= Map.GetHashCode(); + if (typeCase_ == TypeOneofCase.Any) hash ^= Any.GetHashCode(); + if (typeCase_ == TypeOneofCase.Duration) hash ^= Duration.GetHashCode(); + if (typeCase_ == TypeOneofCase.Timestamp) hash ^= Timestamp.GetHashCode(); + hash ^= (int) typeCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (typeCase_ == TypeOneofCase.Float) { + output.WriteRawTag(10); + output.WriteMessage(Float); + } + if (typeCase_ == TypeOneofCase.Double) { + output.WriteRawTag(18); + output.WriteMessage(Double); + } + if (typeCase_ == TypeOneofCase.Int32) { + output.WriteRawTag(26); + output.WriteMessage(Int32); + } + if (typeCase_ == TypeOneofCase.Int64) { + output.WriteRawTag(34); + output.WriteMessage(Int64); + } + if (typeCase_ == TypeOneofCase.Uint32) { + output.WriteRawTag(42); + output.WriteMessage(Uint32); + } + if (typeCase_ == TypeOneofCase.Uint64) { + output.WriteRawTag(50); + output.WriteMessage(Uint64); + } + if (typeCase_ == TypeOneofCase.Sint32) { + output.WriteRawTag(58); + output.WriteMessage(Sint32); + } + if (typeCase_ == TypeOneofCase.Sint64) { + output.WriteRawTag(66); + output.WriteMessage(Sint64); + } + if (typeCase_ == TypeOneofCase.Fixed32) { + output.WriteRawTag(74); + output.WriteMessage(Fixed32); + } + if (typeCase_ == TypeOneofCase.Fixed64) { + output.WriteRawTag(82); + output.WriteMessage(Fixed64); + } + if (typeCase_ == TypeOneofCase.Sfixed32) { + output.WriteRawTag(90); + output.WriteMessage(Sfixed32); + } + if (typeCase_ == TypeOneofCase.Sfixed64) { + output.WriteRawTag(98); + output.WriteMessage(Sfixed64); + } + if (typeCase_ == TypeOneofCase.Bool) { + output.WriteRawTag(106); + output.WriteMessage(Bool); + } + if (typeCase_ == TypeOneofCase.String) { + output.WriteRawTag(114); + output.WriteMessage(String); + } + if (typeCase_ == TypeOneofCase.Bytes) { + output.WriteRawTag(122); + output.WriteMessage(Bytes); + } + if (typeCase_ == TypeOneofCase.Enum) { + output.WriteRawTag(130, 1); + output.WriteMessage(Enum); + } + if (typeCase_ == TypeOneofCase.Repeated) { + output.WriteRawTag(146, 1); + output.WriteMessage(Repeated); + } + if (typeCase_ == TypeOneofCase.Map) { + output.WriteRawTag(154, 1); + output.WriteMessage(Map); + } + if (typeCase_ == TypeOneofCase.Any) { + output.WriteRawTag(162, 1); + output.WriteMessage(Any); + } + if (typeCase_ == TypeOneofCase.Duration) { + output.WriteRawTag(170, 1); + output.WriteMessage(Duration); + } + if (typeCase_ == TypeOneofCase.Timestamp) { + output.WriteRawTag(178, 1); + output.WriteMessage(Timestamp); + } + cel_.WriteTo(output, _repeated_cel_codec); + if (Skipped != false) { + output.WriteRawTag(192, 1); + output.WriteBool(Skipped); + } + if (Required != false) { + output.WriteRawTag(200, 1); + output.WriteBool(Required); + } + if (IgnoreEmpty != false) { + output.WriteRawTag(208, 1); + output.WriteBool(IgnoreEmpty); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (typeCase_ == TypeOneofCase.Float) { + output.WriteRawTag(10); + output.WriteMessage(Float); + } + if (typeCase_ == TypeOneofCase.Double) { + output.WriteRawTag(18); + output.WriteMessage(Double); + } + if (typeCase_ == TypeOneofCase.Int32) { + output.WriteRawTag(26); + output.WriteMessage(Int32); + } + if (typeCase_ == TypeOneofCase.Int64) { + output.WriteRawTag(34); + output.WriteMessage(Int64); + } + if (typeCase_ == TypeOneofCase.Uint32) { + output.WriteRawTag(42); + output.WriteMessage(Uint32); + } + if (typeCase_ == TypeOneofCase.Uint64) { + output.WriteRawTag(50); + output.WriteMessage(Uint64); + } + if (typeCase_ == TypeOneofCase.Sint32) { + output.WriteRawTag(58); + output.WriteMessage(Sint32); + } + if (typeCase_ == TypeOneofCase.Sint64) { + output.WriteRawTag(66); + output.WriteMessage(Sint64); + } + if (typeCase_ == TypeOneofCase.Fixed32) { + output.WriteRawTag(74); + output.WriteMessage(Fixed32); + } + if (typeCase_ == TypeOneofCase.Fixed64) { + output.WriteRawTag(82); + output.WriteMessage(Fixed64); + } + if (typeCase_ == TypeOneofCase.Sfixed32) { + output.WriteRawTag(90); + output.WriteMessage(Sfixed32); + } + if (typeCase_ == TypeOneofCase.Sfixed64) { + output.WriteRawTag(98); + output.WriteMessage(Sfixed64); + } + if (typeCase_ == TypeOneofCase.Bool) { + output.WriteRawTag(106); + output.WriteMessage(Bool); + } + if (typeCase_ == TypeOneofCase.String) { + output.WriteRawTag(114); + output.WriteMessage(String); + } + if (typeCase_ == TypeOneofCase.Bytes) { + output.WriteRawTag(122); + output.WriteMessage(Bytes); + } + if (typeCase_ == TypeOneofCase.Enum) { + output.WriteRawTag(130, 1); + output.WriteMessage(Enum); + } + if (typeCase_ == TypeOneofCase.Repeated) { + output.WriteRawTag(146, 1); + output.WriteMessage(Repeated); + } + if (typeCase_ == TypeOneofCase.Map) { + output.WriteRawTag(154, 1); + output.WriteMessage(Map); + } + if (typeCase_ == TypeOneofCase.Any) { + output.WriteRawTag(162, 1); + output.WriteMessage(Any); + } + if (typeCase_ == TypeOneofCase.Duration) { + output.WriteRawTag(170, 1); + output.WriteMessage(Duration); + } + if (typeCase_ == TypeOneofCase.Timestamp) { + output.WriteRawTag(178, 1); + output.WriteMessage(Timestamp); + } + cel_.WriteTo(ref output, _repeated_cel_codec); + if (Skipped != false) { + output.WriteRawTag(192, 1); + output.WriteBool(Skipped); + } + if (Required != false) { + output.WriteRawTag(200, 1); + output.WriteBool(Required); + } + if (IgnoreEmpty != false) { + output.WriteRawTag(208, 1); + output.WriteBool(IgnoreEmpty); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + size += cel_.CalculateSize(_repeated_cel_codec); + if (Skipped != false) { + size += 2 + 1; + } + if (Required != false) { + size += 2 + 1; + } + if (IgnoreEmpty != false) { + size += 2 + 1; + } + if (typeCase_ == TypeOneofCase.Float) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Float); + } + if (typeCase_ == TypeOneofCase.Double) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Double); + } + if (typeCase_ == TypeOneofCase.Int32) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Int32); + } + if (typeCase_ == TypeOneofCase.Int64) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Int64); + } + if (typeCase_ == TypeOneofCase.Uint32) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Uint32); + } + if (typeCase_ == TypeOneofCase.Uint64) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Uint64); + } + if (typeCase_ == TypeOneofCase.Sint32) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sint32); + } + if (typeCase_ == TypeOneofCase.Sint64) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sint64); + } + if (typeCase_ == TypeOneofCase.Fixed32) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Fixed32); + } + if (typeCase_ == TypeOneofCase.Fixed64) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Fixed64); + } + if (typeCase_ == TypeOneofCase.Sfixed32) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sfixed32); + } + if (typeCase_ == TypeOneofCase.Sfixed64) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sfixed64); + } + if (typeCase_ == TypeOneofCase.Bool) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Bool); + } + if (typeCase_ == TypeOneofCase.String) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(String); + } + if (typeCase_ == TypeOneofCase.Bytes) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Bytes); + } + if (typeCase_ == TypeOneofCase.Enum) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(Enum); + } + if (typeCase_ == TypeOneofCase.Repeated) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(Repeated); + } + if (typeCase_ == TypeOneofCase.Map) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(Map); + } + if (typeCase_ == TypeOneofCase.Any) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(Any); + } + if (typeCase_ == TypeOneofCase.Duration) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(Duration); + } + if (typeCase_ == TypeOneofCase.Timestamp) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(Timestamp); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(FieldConstraints other) { + if (other == null) { + return; + } + cel_.Add(other.cel_); + if (other.Skipped != false) { + Skipped = other.Skipped; + } + if (other.Required != false) { + Required = other.Required; + } + if (other.IgnoreEmpty != false) { + IgnoreEmpty = other.IgnoreEmpty; + } + switch (other.TypeCase) { + case TypeOneofCase.Float: + if (Float == null) { + Float = new global::Buf.Validate.FloatRules(); + } + Float.MergeFrom(other.Float); + break; + case TypeOneofCase.Double: + if (Double == null) { + Double = new global::Buf.Validate.DoubleRules(); + } + Double.MergeFrom(other.Double); + break; + case TypeOneofCase.Int32: + if (Int32 == null) { + Int32 = new global::Buf.Validate.Int32Rules(); + } + Int32.MergeFrom(other.Int32); + break; + case TypeOneofCase.Int64: + if (Int64 == null) { + Int64 = new global::Buf.Validate.Int64Rules(); + } + Int64.MergeFrom(other.Int64); + break; + case TypeOneofCase.Uint32: + if (Uint32 == null) { + Uint32 = new global::Buf.Validate.UInt32Rules(); + } + Uint32.MergeFrom(other.Uint32); + break; + case TypeOneofCase.Uint64: + if (Uint64 == null) { + Uint64 = new global::Buf.Validate.UInt64Rules(); + } + Uint64.MergeFrom(other.Uint64); + break; + case TypeOneofCase.Sint32: + if (Sint32 == null) { + Sint32 = new global::Buf.Validate.SInt32Rules(); + } + Sint32.MergeFrom(other.Sint32); + break; + case TypeOneofCase.Sint64: + if (Sint64 == null) { + Sint64 = new global::Buf.Validate.SInt64Rules(); + } + Sint64.MergeFrom(other.Sint64); + break; + case TypeOneofCase.Fixed32: + if (Fixed32 == null) { + Fixed32 = new global::Buf.Validate.Fixed32Rules(); + } + Fixed32.MergeFrom(other.Fixed32); + break; + case TypeOneofCase.Fixed64: + if (Fixed64 == null) { + Fixed64 = new global::Buf.Validate.Fixed64Rules(); + } + Fixed64.MergeFrom(other.Fixed64); + break; + case TypeOneofCase.Sfixed32: + if (Sfixed32 == null) { + Sfixed32 = new global::Buf.Validate.SFixed32Rules(); + } + Sfixed32.MergeFrom(other.Sfixed32); + break; + case TypeOneofCase.Sfixed64: + if (Sfixed64 == null) { + Sfixed64 = new global::Buf.Validate.SFixed64Rules(); + } + Sfixed64.MergeFrom(other.Sfixed64); + break; + case TypeOneofCase.Bool: + if (Bool == null) { + Bool = new global::Buf.Validate.BoolRules(); + } + Bool.MergeFrom(other.Bool); + break; + case TypeOneofCase.String: + if (String == null) { + String = new global::Buf.Validate.StringRules(); + } + String.MergeFrom(other.String); + break; + case TypeOneofCase.Bytes: + if (Bytes == null) { + Bytes = new global::Buf.Validate.BytesRules(); + } + Bytes.MergeFrom(other.Bytes); + break; + case TypeOneofCase.Enum: + if (Enum == null) { + Enum = new global::Buf.Validate.EnumRules(); + } + Enum.MergeFrom(other.Enum); + break; + case TypeOneofCase.Repeated: + if (Repeated == null) { + Repeated = new global::Buf.Validate.RepeatedRules(); + } + Repeated.MergeFrom(other.Repeated); + break; + case TypeOneofCase.Map: + if (Map == null) { + Map = new global::Buf.Validate.MapRules(); + } + Map.MergeFrom(other.Map); + break; + case TypeOneofCase.Any: + if (Any == null) { + Any = new global::Buf.Validate.AnyRules(); + } + Any.MergeFrom(other.Any); + break; + case TypeOneofCase.Duration: + if (Duration == null) { + Duration = new global::Buf.Validate.DurationRules(); + } + Duration.MergeFrom(other.Duration); + break; + case TypeOneofCase.Timestamp: + if (Timestamp == null) { + Timestamp = new global::Buf.Validate.TimestampRules(); + } + Timestamp.MergeFrom(other.Timestamp); + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + global::Buf.Validate.FloatRules subBuilder = new global::Buf.Validate.FloatRules(); + if (typeCase_ == TypeOneofCase.Float) { + subBuilder.MergeFrom(Float); + } + input.ReadMessage(subBuilder); + Float = subBuilder; + break; + } + case 18: { + global::Buf.Validate.DoubleRules subBuilder = new global::Buf.Validate.DoubleRules(); + if (typeCase_ == TypeOneofCase.Double) { + subBuilder.MergeFrom(Double); + } + input.ReadMessage(subBuilder); + Double = subBuilder; + break; + } + case 26: { + global::Buf.Validate.Int32Rules subBuilder = new global::Buf.Validate.Int32Rules(); + if (typeCase_ == TypeOneofCase.Int32) { + subBuilder.MergeFrom(Int32); + } + input.ReadMessage(subBuilder); + Int32 = subBuilder; + break; + } + case 34: { + global::Buf.Validate.Int64Rules subBuilder = new global::Buf.Validate.Int64Rules(); + if (typeCase_ == TypeOneofCase.Int64) { + subBuilder.MergeFrom(Int64); + } + input.ReadMessage(subBuilder); + Int64 = subBuilder; + break; + } + case 42: { + global::Buf.Validate.UInt32Rules subBuilder = new global::Buf.Validate.UInt32Rules(); + if (typeCase_ == TypeOneofCase.Uint32) { + subBuilder.MergeFrom(Uint32); + } + input.ReadMessage(subBuilder); + Uint32 = subBuilder; + break; + } + case 50: { + global::Buf.Validate.UInt64Rules subBuilder = new global::Buf.Validate.UInt64Rules(); + if (typeCase_ == TypeOneofCase.Uint64) { + subBuilder.MergeFrom(Uint64); + } + input.ReadMessage(subBuilder); + Uint64 = subBuilder; + break; + } + case 58: { + global::Buf.Validate.SInt32Rules subBuilder = new global::Buf.Validate.SInt32Rules(); + if (typeCase_ == TypeOneofCase.Sint32) { + subBuilder.MergeFrom(Sint32); + } + input.ReadMessage(subBuilder); + Sint32 = subBuilder; + break; + } + case 66: { + global::Buf.Validate.SInt64Rules subBuilder = new global::Buf.Validate.SInt64Rules(); + if (typeCase_ == TypeOneofCase.Sint64) { + subBuilder.MergeFrom(Sint64); + } + input.ReadMessage(subBuilder); + Sint64 = subBuilder; + break; + } + case 74: { + global::Buf.Validate.Fixed32Rules subBuilder = new global::Buf.Validate.Fixed32Rules(); + if (typeCase_ == TypeOneofCase.Fixed32) { + subBuilder.MergeFrom(Fixed32); + } + input.ReadMessage(subBuilder); + Fixed32 = subBuilder; + break; + } + case 82: { + global::Buf.Validate.Fixed64Rules subBuilder = new global::Buf.Validate.Fixed64Rules(); + if (typeCase_ == TypeOneofCase.Fixed64) { + subBuilder.MergeFrom(Fixed64); + } + input.ReadMessage(subBuilder); + Fixed64 = subBuilder; + break; + } + case 90: { + global::Buf.Validate.SFixed32Rules subBuilder = new global::Buf.Validate.SFixed32Rules(); + if (typeCase_ == TypeOneofCase.Sfixed32) { + subBuilder.MergeFrom(Sfixed32); + } + input.ReadMessage(subBuilder); + Sfixed32 = subBuilder; + break; + } + case 98: { + global::Buf.Validate.SFixed64Rules subBuilder = new global::Buf.Validate.SFixed64Rules(); + if (typeCase_ == TypeOneofCase.Sfixed64) { + subBuilder.MergeFrom(Sfixed64); + } + input.ReadMessage(subBuilder); + Sfixed64 = subBuilder; + break; + } + case 106: { + global::Buf.Validate.BoolRules subBuilder = new global::Buf.Validate.BoolRules(); + if (typeCase_ == TypeOneofCase.Bool) { + subBuilder.MergeFrom(Bool); + } + input.ReadMessage(subBuilder); + Bool = subBuilder; + break; + } + case 114: { + global::Buf.Validate.StringRules subBuilder = new global::Buf.Validate.StringRules(); + if (typeCase_ == TypeOneofCase.String) { + subBuilder.MergeFrom(String); + } + input.ReadMessage(subBuilder); + String = subBuilder; + break; + } + case 122: { + global::Buf.Validate.BytesRules subBuilder = new global::Buf.Validate.BytesRules(); + if (typeCase_ == TypeOneofCase.Bytes) { + subBuilder.MergeFrom(Bytes); + } + input.ReadMessage(subBuilder); + Bytes = subBuilder; + break; + } + case 130: { + global::Buf.Validate.EnumRules subBuilder = new global::Buf.Validate.EnumRules(); + if (typeCase_ == TypeOneofCase.Enum) { + subBuilder.MergeFrom(Enum); + } + input.ReadMessage(subBuilder); + Enum = subBuilder; + break; + } + case 146: { + global::Buf.Validate.RepeatedRules subBuilder = new global::Buf.Validate.RepeatedRules(); + if (typeCase_ == TypeOneofCase.Repeated) { + subBuilder.MergeFrom(Repeated); + } + input.ReadMessage(subBuilder); + Repeated = subBuilder; + break; + } + case 154: { + global::Buf.Validate.MapRules subBuilder = new global::Buf.Validate.MapRules(); + if (typeCase_ == TypeOneofCase.Map) { + subBuilder.MergeFrom(Map); + } + input.ReadMessage(subBuilder); + Map = subBuilder; + break; + } + case 162: { + global::Buf.Validate.AnyRules subBuilder = new global::Buf.Validate.AnyRules(); + if (typeCase_ == TypeOneofCase.Any) { + subBuilder.MergeFrom(Any); + } + input.ReadMessage(subBuilder); + Any = subBuilder; + break; + } + case 170: { + global::Buf.Validate.DurationRules subBuilder = new global::Buf.Validate.DurationRules(); + if (typeCase_ == TypeOneofCase.Duration) { + subBuilder.MergeFrom(Duration); + } + input.ReadMessage(subBuilder); + Duration = subBuilder; + break; + } + case 178: { + global::Buf.Validate.TimestampRules subBuilder = new global::Buf.Validate.TimestampRules(); + if (typeCase_ == TypeOneofCase.Timestamp) { + subBuilder.MergeFrom(Timestamp); + } + input.ReadMessage(subBuilder); + Timestamp = subBuilder; + break; + } + case 186: { + cel_.AddEntriesFrom(input, _repeated_cel_codec); + break; + } + case 192: { + Skipped = input.ReadBool(); + break; + } + case 200: { + Required = input.ReadBool(); + break; + } + case 208: { + IgnoreEmpty = input.ReadBool(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + global::Buf.Validate.FloatRules subBuilder = new global::Buf.Validate.FloatRules(); + if (typeCase_ == TypeOneofCase.Float) { + subBuilder.MergeFrom(Float); + } + input.ReadMessage(subBuilder); + Float = subBuilder; + break; + } + case 18: { + global::Buf.Validate.DoubleRules subBuilder = new global::Buf.Validate.DoubleRules(); + if (typeCase_ == TypeOneofCase.Double) { + subBuilder.MergeFrom(Double); + } + input.ReadMessage(subBuilder); + Double = subBuilder; + break; + } + case 26: { + global::Buf.Validate.Int32Rules subBuilder = new global::Buf.Validate.Int32Rules(); + if (typeCase_ == TypeOneofCase.Int32) { + subBuilder.MergeFrom(Int32); + } + input.ReadMessage(subBuilder); + Int32 = subBuilder; + break; + } + case 34: { + global::Buf.Validate.Int64Rules subBuilder = new global::Buf.Validate.Int64Rules(); + if (typeCase_ == TypeOneofCase.Int64) { + subBuilder.MergeFrom(Int64); + } + input.ReadMessage(subBuilder); + Int64 = subBuilder; + break; + } + case 42: { + global::Buf.Validate.UInt32Rules subBuilder = new global::Buf.Validate.UInt32Rules(); + if (typeCase_ == TypeOneofCase.Uint32) { + subBuilder.MergeFrom(Uint32); + } + input.ReadMessage(subBuilder); + Uint32 = subBuilder; + break; + } + case 50: { + global::Buf.Validate.UInt64Rules subBuilder = new global::Buf.Validate.UInt64Rules(); + if (typeCase_ == TypeOneofCase.Uint64) { + subBuilder.MergeFrom(Uint64); + } + input.ReadMessage(subBuilder); + Uint64 = subBuilder; + break; + } + case 58: { + global::Buf.Validate.SInt32Rules subBuilder = new global::Buf.Validate.SInt32Rules(); + if (typeCase_ == TypeOneofCase.Sint32) { + subBuilder.MergeFrom(Sint32); + } + input.ReadMessage(subBuilder); + Sint32 = subBuilder; + break; + } + case 66: { + global::Buf.Validate.SInt64Rules subBuilder = new global::Buf.Validate.SInt64Rules(); + if (typeCase_ == TypeOneofCase.Sint64) { + subBuilder.MergeFrom(Sint64); + } + input.ReadMessage(subBuilder); + Sint64 = subBuilder; + break; + } + case 74: { + global::Buf.Validate.Fixed32Rules subBuilder = new global::Buf.Validate.Fixed32Rules(); + if (typeCase_ == TypeOneofCase.Fixed32) { + subBuilder.MergeFrom(Fixed32); + } + input.ReadMessage(subBuilder); + Fixed32 = subBuilder; + break; + } + case 82: { + global::Buf.Validate.Fixed64Rules subBuilder = new global::Buf.Validate.Fixed64Rules(); + if (typeCase_ == TypeOneofCase.Fixed64) { + subBuilder.MergeFrom(Fixed64); + } + input.ReadMessage(subBuilder); + Fixed64 = subBuilder; + break; + } + case 90: { + global::Buf.Validate.SFixed32Rules subBuilder = new global::Buf.Validate.SFixed32Rules(); + if (typeCase_ == TypeOneofCase.Sfixed32) { + subBuilder.MergeFrom(Sfixed32); + } + input.ReadMessage(subBuilder); + Sfixed32 = subBuilder; + break; + } + case 98: { + global::Buf.Validate.SFixed64Rules subBuilder = new global::Buf.Validate.SFixed64Rules(); + if (typeCase_ == TypeOneofCase.Sfixed64) { + subBuilder.MergeFrom(Sfixed64); + } + input.ReadMessage(subBuilder); + Sfixed64 = subBuilder; + break; + } + case 106: { + global::Buf.Validate.BoolRules subBuilder = new global::Buf.Validate.BoolRules(); + if (typeCase_ == TypeOneofCase.Bool) { + subBuilder.MergeFrom(Bool); + } + input.ReadMessage(subBuilder); + Bool = subBuilder; + break; + } + case 114: { + global::Buf.Validate.StringRules subBuilder = new global::Buf.Validate.StringRules(); + if (typeCase_ == TypeOneofCase.String) { + subBuilder.MergeFrom(String); + } + input.ReadMessage(subBuilder); + String = subBuilder; + break; + } + case 122: { + global::Buf.Validate.BytesRules subBuilder = new global::Buf.Validate.BytesRules(); + if (typeCase_ == TypeOneofCase.Bytes) { + subBuilder.MergeFrom(Bytes); + } + input.ReadMessage(subBuilder); + Bytes = subBuilder; + break; + } + case 130: { + global::Buf.Validate.EnumRules subBuilder = new global::Buf.Validate.EnumRules(); + if (typeCase_ == TypeOneofCase.Enum) { + subBuilder.MergeFrom(Enum); + } + input.ReadMessage(subBuilder); + Enum = subBuilder; + break; + } + case 146: { + global::Buf.Validate.RepeatedRules subBuilder = new global::Buf.Validate.RepeatedRules(); + if (typeCase_ == TypeOneofCase.Repeated) { + subBuilder.MergeFrom(Repeated); + } + input.ReadMessage(subBuilder); + Repeated = subBuilder; + break; + } + case 154: { + global::Buf.Validate.MapRules subBuilder = new global::Buf.Validate.MapRules(); + if (typeCase_ == TypeOneofCase.Map) { + subBuilder.MergeFrom(Map); + } + input.ReadMessage(subBuilder); + Map = subBuilder; + break; + } + case 162: { + global::Buf.Validate.AnyRules subBuilder = new global::Buf.Validate.AnyRules(); + if (typeCase_ == TypeOneofCase.Any) { + subBuilder.MergeFrom(Any); + } + input.ReadMessage(subBuilder); + Any = subBuilder; + break; + } + case 170: { + global::Buf.Validate.DurationRules subBuilder = new global::Buf.Validate.DurationRules(); + if (typeCase_ == TypeOneofCase.Duration) { + subBuilder.MergeFrom(Duration); + } + input.ReadMessage(subBuilder); + Duration = subBuilder; + break; + } + case 178: { + global::Buf.Validate.TimestampRules subBuilder = new global::Buf.Validate.TimestampRules(); + if (typeCase_ == TypeOneofCase.Timestamp) { + subBuilder.MergeFrom(Timestamp); + } + input.ReadMessage(subBuilder); + Timestamp = subBuilder; + break; + } + case 186: { + cel_.AddEntriesFrom(ref input, _repeated_cel_codec); + break; + } + case 192: { + Skipped = input.ReadBool(); + break; + } + case 200: { + Required = input.ReadBool(); + break; + } + case 208: { + IgnoreEmpty = input.ReadBool(); + break; + } + } + } + } + #endif + + } + + /// + /// FloatRules describes the constraints applied to `float` values. These + /// rules may also be applied to the `google.protobuf.FloatValue` Well-Known-Type. + /// + public sealed partial class FloatRules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FloatRules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[3]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public FloatRules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public FloatRules(FloatRules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + finite_ = other.finite_; + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public FloatRules Clone() { + return new FloatRules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static float ConstDefaultValue = 0F; + + private float const_; + /// + /// `const` requires the field value to exactly match the specified value. If + /// the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MyFloat { + /// // value must equal 42.0 + /// float value = 1 [(buf.validate.field).float.const = 42.0]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public float Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 2; + /// + /// `lt` requires the field value to be less than the specified value (field < + /// value). If the field value is equal to or greater than the specified value, + /// an error message is generated. + /// + /// ```proto + /// message MyFloat { + /// // value must be less than 10.0 + /// float value = 1 [(buf.validate.field).float.lt = 10.0]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public float Lt { + get { return HasLt ? (float) lessThan_ : 0F; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lt; + } + } + /// Gets whether the "lt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLt { + get { return lessThanCase_ == LessThanOneofCase.Lt; } + } + /// Clears the value of the oneof if it's currently set to "lt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLt() { + if (HasLt) { + ClearLessThan(); + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 3; + /// + /// `lte` requires the field value to be less than or equal to the specified + /// value (field <= value). If the field value is greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MyFloat { + /// // value must be less than or equal to 10.0 + /// float value = 1 [(buf.validate.field).float.lte = 10.0]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public float Lte { + get { return HasLte ? (float) lessThan_ : 0F; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lte; + } + } + /// Gets whether the "lte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLte { + get { return lessThanCase_ == LessThanOneofCase.Lte; } + } + /// Clears the value of the oneof if it's currently set to "lte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLte() { + if (HasLte) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 4; + /// + /// `gt` requires the field value to be greater than the specified value + /// (exclusive). If the value of `gt` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyFloat { + /// // value must be greater than 5.0 [float.gt] + /// float value = 1 [(buf.validate.field).float.gt = 5.0]; + /// + /// // value must be greater than 5 and less than 10.0 [float.gt_lt] + /// float other_value = 2 [(buf.validate.field).float = { gt: 5.0, lt: 10.0 }]; + /// + /// // value must be greater than 10 or less than 5.0 [float.gt_lt_exclusive] + /// float another_value = 3 [(buf.validate.field).float = { gt: 10.0, lt: 5.0 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public float Gt { + get { return HasGt ? (float) greaterThan_ : 0F; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gt; + } + } + /// Gets whether the "gt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt; } + } + /// Clears the value of the oneof if it's currently set to "gt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGt() { + if (HasGt) { + ClearGreaterThan(); + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 5; + /// + /// `gte` requires the field value to be greater than or equal to the specified + /// value (exclusive). If the value of `gte` is larger than a specified `lt` + /// or `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyFloat { + /// // value must be greater than or equal to 5.0 [float.gte] + /// float value = 1 [(buf.validate.field).float.gte = 5.0]; + /// + /// // value must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt] + /// float other_value = 2 [(buf.validate.field).float = { gte: 5.0, lt: 10.0 }]; + /// + /// // value must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive] + /// float another_value = 3 [(buf.validate.field).float = { gte: 10.0, lt: 5.0 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public float Gte { + get { return HasGte ? (float) greaterThan_ : 0F; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gte; + } + } + /// Gets whether the "gte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte; } + } + /// Clears the value of the oneof if it's currently set to "gte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGte() { + if (HasGte) { + ClearGreaterThan(); + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 6; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForFloat(50); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified values. + /// If the field value isn't one of the specified values, an error message + /// is generated. + /// + /// ```proto + /// message MyFloat { + /// // value must be in list [1.0, 2.0, 3.0] + /// repeated float value = 1 (buf.validate.field).float = { in: [1.0, 2.0, 3.0] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForFloat(58); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to not be equal to any of the specified + /// values. If the field value is one of the specified values, an error + /// message is generated. + /// + /// ```proto + /// message MyFloat { + /// // value must not be in list [1.0, 2.0, 3.0] + /// repeated float value = 1 (buf.validate.field).float = { not_in: [1.0, 2.0, 3.0] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + /// Field number for the "finite" field. + public const int FiniteFieldNumber = 8; + private bool finite_; + /// + /// `finite` requires the field value to be finite. If the field value is + /// infinite or NaN, an error message is generated. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Finite { + get { return finite_; } + set { + finite_ = value; + } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 2, + Lte = 3, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 4, + Gte = 5, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as FloatRules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(FloatRules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Const, other.Const)) return false; + if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Lt, other.Lt)) return false; + if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Lte, other.Lte)) return false; + if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Gt, other.Gt)) return false; + if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Gte, other.Gte)) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (Finite != other.Finite) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Const); + if (HasLt) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Lt); + if (HasLte) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Lte); + if (HasGt) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Gt); + if (HasGte) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Gte); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + if (Finite != false) hash ^= Finite.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(13); + output.WriteFloat(Const); + } + if (HasLt) { + output.WriteRawTag(21); + output.WriteFloat(Lt); + } + if (HasLte) { + output.WriteRawTag(29); + output.WriteFloat(Lte); + } + if (HasGt) { + output.WriteRawTag(37); + output.WriteFloat(Gt); + } + if (HasGte) { + output.WriteRawTag(45); + output.WriteFloat(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (Finite != false) { + output.WriteRawTag(64); + output.WriteBool(Finite); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(13); + output.WriteFloat(Const); + } + if (HasLt) { + output.WriteRawTag(21); + output.WriteFloat(Lt); + } + if (HasLte) { + output.WriteRawTag(29); + output.WriteFloat(Lte); + } + if (HasGt) { + output.WriteRawTag(37); + output.WriteFloat(Gt); + } + if (HasGte) { + output.WriteRawTag(45); + output.WriteFloat(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (Finite != false) { + output.WriteRawTag(64); + output.WriteBool(Finite); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + 4; + } + if (HasLt) { + size += 1 + 4; + } + if (HasLte) { + size += 1 + 4; + } + if (HasGt) { + size += 1 + 4; + } + if (HasGte) { + size += 1 + 4; + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (Finite != false) { + size += 1 + 1; + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(FloatRules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + if (other.Finite != false) { + Finite = other.Finite; + } + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 13: { + Const = input.ReadFloat(); + break; + } + case 21: { + Lt = input.ReadFloat(); + break; + } + case 29: { + Lte = input.ReadFloat(); + break; + } + case 37: { + Gt = input.ReadFloat(); + break; + } + case 45: { + Gte = input.ReadFloat(); + break; + } + case 50: + case 53: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 58: + case 61: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + case 64: { + Finite = input.ReadBool(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 13: { + Const = input.ReadFloat(); + break; + } + case 21: { + Lt = input.ReadFloat(); + break; + } + case 29: { + Lte = input.ReadFloat(); + break; + } + case 37: { + Gt = input.ReadFloat(); + break; + } + case 45: { + Gte = input.ReadFloat(); + break; + } + case 50: + case 53: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 58: + case 61: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + case 64: { + Finite = input.ReadBool(); + break; + } + } + } + } + #endif + + } + + /// + /// DoubleRules describes the constraints applied to `double` values. These + /// rules may also be applied to the `google.protobuf.DoubleValue` Well-Known-Type. + /// + public sealed partial class DoubleRules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DoubleRules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[4]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DoubleRules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DoubleRules(DoubleRules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + finite_ = other.finite_; + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DoubleRules Clone() { + return new DoubleRules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static double ConstDefaultValue = 0D; + + private double const_; + /// + /// `const` requires the field value to exactly match the specified value. If + /// the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MyDouble { + /// // value must equal 42.0 + /// double value = 1 [(buf.validate.field).double.const = 42.0]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public double Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 2; + /// + /// `lt` requires the field value to be less than the specified value (field < + /// value). If the field value is equal to or greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MyDouble { + /// // value must be less than 10.0 + /// double value = 1 [(buf.validate.field).double.lt = 10.0]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public double Lt { + get { return HasLt ? (double) lessThan_ : 0D; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lt; + } + } + /// Gets whether the "lt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLt { + get { return lessThanCase_ == LessThanOneofCase.Lt; } + } + /// Clears the value of the oneof if it's currently set to "lt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLt() { + if (HasLt) { + ClearLessThan(); + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 3; + /// + /// `lte` requires the field value to be less than or equal to the specified value + /// (field <= value). If the field value is greater than the specified value, + /// an error message is generated. + /// + /// ```proto + /// message MyDouble { + /// // value must be less than or equal to 10.0 + /// double value = 1 [(buf.validate.field).double.lte = 10.0]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public double Lte { + get { return HasLte ? (double) lessThan_ : 0D; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lte; + } + } + /// Gets whether the "lte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLte { + get { return lessThanCase_ == LessThanOneofCase.Lte; } + } + /// Clears the value of the oneof if it's currently set to "lte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLte() { + if (HasLte) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 4; + /// + /// `gt` requires the field value to be greater than the specified value + /// (exclusive). If the value of `gt` is larger than a specified `lt` or `lte`, + /// the range is reversed, and the field value must be outside the specified + /// range. If the field value doesn't meet the required conditions, an error + /// message is generated. + /// + /// ```proto + /// message MyDouble { + /// // value must be greater than 5.0 [double.gt] + /// double value = 1 [(buf.validate.field).double.gt = 5.0]; + /// + /// // value must be greater than 5 and less than 10.0 [double.gt_lt] + /// double other_value = 2 [(buf.validate.field).double = { gt: 5.0, lt: 10.0 }]; + /// + /// // value must be greater than 10 or less than 5.0 [double.gt_lt_exclusive] + /// double another_value = 3 [(buf.validate.field).double = { gt: 10.0, lt: 5.0 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public double Gt { + get { return HasGt ? (double) greaterThan_ : 0D; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gt; + } + } + /// Gets whether the "gt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt; } + } + /// Clears the value of the oneof if it's currently set to "gt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGt() { + if (HasGt) { + ClearGreaterThan(); + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 5; + /// + /// `gte` requires the field value to be greater than or equal to the specified + /// value (exclusive). If the value of `gte` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyDouble { + /// // value must be greater than or equal to 5.0 [double.gte] + /// double value = 1 [(buf.validate.field).double.gte = 5.0]; + /// + /// // value must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt] + /// double other_value = 2 [(buf.validate.field).double = { gte: 5.0, lt: 10.0 }]; + /// + /// // value must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive] + /// double another_value = 3 [(buf.validate.field).double = { gte: 10.0, lt: 5.0 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public double Gte { + get { return HasGte ? (double) greaterThan_ : 0D; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gte; + } + } + /// Gets whether the "gte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte; } + } + /// Clears the value of the oneof if it's currently set to "gte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGte() { + if (HasGte) { + ClearGreaterThan(); + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 6; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForDouble(50); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified values. + /// If the field value isn't one of the specified values, an error message is + /// generated. + /// + /// ```proto + /// message MyDouble { + /// // value must be in list [1.0, 2.0, 3.0] + /// repeated double value = 1 (buf.validate.field).double = { in: [1.0, 2.0, 3.0] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForDouble(58); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to not be equal to any of the specified + /// values. If the field value is one of the specified values, an error + /// message is generated. + /// + /// ```proto + /// message MyDouble { + /// // value must not be in list [1.0, 2.0, 3.0] + /// repeated double value = 1 (buf.validate.field).double = { not_in: [1.0, 2.0, 3.0] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + /// Field number for the "finite" field. + public const int FiniteFieldNumber = 8; + private bool finite_; + /// + /// `finite` requires the field value to be finite. If the field value is + /// infinite or NaN, an error message is generated. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Finite { + get { return finite_; } + set { + finite_ = value; + } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 2, + Lte = 3, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 4, + Gte = 5, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DoubleRules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DoubleRules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(Const, other.Const)) return false; + if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(Lt, other.Lt)) return false; + if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(Lte, other.Lte)) return false; + if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(Gt, other.Gt)) return false; + if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(Gte, other.Gte)) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (Finite != other.Finite) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(Const); + if (HasLt) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(Lt); + if (HasLte) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(Lte); + if (HasGt) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(Gt); + if (HasGte) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(Gte); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + if (Finite != false) hash ^= Finite.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(9); + output.WriteDouble(Const); + } + if (HasLt) { + output.WriteRawTag(17); + output.WriteDouble(Lt); + } + if (HasLte) { + output.WriteRawTag(25); + output.WriteDouble(Lte); + } + if (HasGt) { + output.WriteRawTag(33); + output.WriteDouble(Gt); + } + if (HasGte) { + output.WriteRawTag(41); + output.WriteDouble(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (Finite != false) { + output.WriteRawTag(64); + output.WriteBool(Finite); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(9); + output.WriteDouble(Const); + } + if (HasLt) { + output.WriteRawTag(17); + output.WriteDouble(Lt); + } + if (HasLte) { + output.WriteRawTag(25); + output.WriteDouble(Lte); + } + if (HasGt) { + output.WriteRawTag(33); + output.WriteDouble(Gt); + } + if (HasGte) { + output.WriteRawTag(41); + output.WriteDouble(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (Finite != false) { + output.WriteRawTag(64); + output.WriteBool(Finite); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + 8; + } + if (HasLt) { + size += 1 + 8; + } + if (HasLte) { + size += 1 + 8; + } + if (HasGt) { + size += 1 + 8; + } + if (HasGte) { + size += 1 + 8; + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (Finite != false) { + size += 1 + 1; + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DoubleRules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + if (other.Finite != false) { + Finite = other.Finite; + } + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 9: { + Const = input.ReadDouble(); + break; + } + case 17: { + Lt = input.ReadDouble(); + break; + } + case 25: { + Lte = input.ReadDouble(); + break; + } + case 33: { + Gt = input.ReadDouble(); + break; + } + case 41: { + Gte = input.ReadDouble(); + break; + } + case 50: + case 49: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 58: + case 57: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + case 64: { + Finite = input.ReadBool(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 9: { + Const = input.ReadDouble(); + break; + } + case 17: { + Lt = input.ReadDouble(); + break; + } + case 25: { + Lte = input.ReadDouble(); + break; + } + case 33: { + Gt = input.ReadDouble(); + break; + } + case 41: { + Gte = input.ReadDouble(); + break; + } + case 50: + case 49: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 58: + case 57: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + case 64: { + Finite = input.ReadBool(); + break; + } + } + } + } + #endif + + } + + /// + /// Int32Rules describes the constraints applied to `int32` values. These + /// rules may also be applied to the `google.protobuf.Int32Value` Well-Known-Type. + /// + public sealed partial class Int32Rules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Int32Rules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[5]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Int32Rules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Int32Rules(Int32Rules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Int32Rules Clone() { + return new Int32Rules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static int ConstDefaultValue = 0; + + private int const_; + /// + /// `const` requires the field value to exactly match the specified value. If + /// the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MyInt32 { + /// // value must equal 42 + /// int32 value = 1 [(buf.validate.field).int32.const = 42]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 2; + /// + /// `lt` requires the field value to be less than the specified value (field + /// < value). If the field value is equal to or greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MyInt32 { + /// // value must be less than 10 + /// int32 value = 1 [(buf.validate.field).int32.lt = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Lt { + get { return HasLt ? (int) lessThan_ : 0; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lt; + } + } + /// Gets whether the "lt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLt { + get { return lessThanCase_ == LessThanOneofCase.Lt; } + } + /// Clears the value of the oneof if it's currently set to "lt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLt() { + if (HasLt) { + ClearLessThan(); + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 3; + /// + /// `lte` requires the field value to be less than or equal to the specified + /// value (field <= value). If the field value is greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MyInt32 { + /// // value must be less than or equal to 10 + /// int32 value = 1 [(buf.validate.field).int32.lte = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Lte { + get { return HasLte ? (int) lessThan_ : 0; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lte; + } + } + /// Gets whether the "lte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLte { + get { return lessThanCase_ == LessThanOneofCase.Lte; } + } + /// Clears the value of the oneof if it's currently set to "lte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLte() { + if (HasLte) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 4; + /// + /// `gt` requires the field value to be greater than the specified value + /// (exclusive). If the value of `gt` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyInt32 { + /// // value must be greater than 5 [int32.gt] + /// int32 value = 1 [(buf.validate.field).int32.gt = 5]; + /// + /// // value must be greater than 5 and less than 10 [int32.gt_lt] + /// int32 other_value = 2 [(buf.validate.field).int32 = { gt: 5, lt: 10 }]; + /// + /// // value must be greater than 10 or less than 5 [int32.gt_lt_exclusive] + /// int32 another_value = 3 [(buf.validate.field).int32 = { gt: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Gt { + get { return HasGt ? (int) greaterThan_ : 0; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gt; + } + } + /// Gets whether the "gt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt; } + } + /// Clears the value of the oneof if it's currently set to "gt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGt() { + if (HasGt) { + ClearGreaterThan(); + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 5; + /// + /// `gte` requires the field value to be greater than or equal to the specified value + /// (exclusive). If the value of `gte` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyInt32 { + /// // value must be greater than or equal to 5 [int32.gte] + /// int32 value = 1 [(buf.validate.field).int32.gte = 5]; + /// + /// // value must be greater than or equal to 5 and less than 10 [int32.gte_lt] + /// int32 other_value = 2 [(buf.validate.field).int32 = { gte: 5, lt: 10 }]; + /// + /// // value must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive] + /// int32 another_value = 3 [(buf.validate.field).int32 = { gte: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Gte { + get { return HasGte ? (int) greaterThan_ : 0; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gte; + } + } + /// Gets whether the "gte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte; } + } + /// Clears the value of the oneof if it's currently set to "gte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGte() { + if (HasGte) { + ClearGreaterThan(); + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 6; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForInt32(50); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified values. + /// If the field value isn't one of the specified values, an error message is + /// generated. + /// + /// ```proto + /// message MyInt32 { + /// // value must be in list [1, 2, 3] + /// repeated int32 value = 1 (buf.validate.field).int32 = { in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForInt32(58); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to not be equal to any of the specified + /// values. If the field value is one of the specified values, an error message + /// is generated. + /// + /// ```proto + /// message MyInt32 { + /// // value must not be in list [1, 2, 3] + /// repeated int32 value = 1 (buf.validate.field).int32 = { not_in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 2, + Lte = 3, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 4, + Gte = 5, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Int32Rules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Int32Rules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (Lt != other.Lt) return false; + if (Lte != other.Lte) return false; + if (Gt != other.Gt) return false; + if (Gte != other.Gte) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasLt) hash ^= Lt.GetHashCode(); + if (HasLte) hash ^= Lte.GetHashCode(); + if (HasGt) hash ^= Gt.GetHashCode(); + if (HasGte) hash ^= Gte.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(8); + output.WriteInt32(Const); + } + if (HasLt) { + output.WriteRawTag(16); + output.WriteInt32(Lt); + } + if (HasLte) { + output.WriteRawTag(24); + output.WriteInt32(Lte); + } + if (HasGt) { + output.WriteRawTag(32); + output.WriteInt32(Gt); + } + if (HasGte) { + output.WriteRawTag(40); + output.WriteInt32(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(8); + output.WriteInt32(Const); + } + if (HasLt) { + output.WriteRawTag(16); + output.WriteInt32(Lt); + } + if (HasLte) { + output.WriteRawTag(24); + output.WriteInt32(Lte); + } + if (HasGt) { + output.WriteRawTag(32); + output.WriteInt32(Gt); + } + if (HasGte) { + output.WriteRawTag(40); + output.WriteInt32(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Const); + } + if (HasLt) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Lt); + } + if (HasLte) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Lte); + } + if (HasGt) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Gt); + } + if (HasGte) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Gte); + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Int32Rules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Const = input.ReadInt32(); + break; + } + case 16: { + Lt = input.ReadInt32(); + break; + } + case 24: { + Lte = input.ReadInt32(); + break; + } + case 32: { + Gt = input.ReadInt32(); + break; + } + case 40: { + Gte = input.ReadInt32(); + break; + } + case 50: + case 48: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 58: + case 56: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Const = input.ReadInt32(); + break; + } + case 16: { + Lt = input.ReadInt32(); + break; + } + case 24: { + Lte = input.ReadInt32(); + break; + } + case 32: { + Gt = input.ReadInt32(); + break; + } + case 40: { + Gte = input.ReadInt32(); + break; + } + case 50: + case 48: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 58: + case 56: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// Int64Rules describes the constraints applied to `int64` values. These + /// rules may also be applied to the `google.protobuf.Int64Value` Well-Known-Type. + /// + public sealed partial class Int64Rules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Int64Rules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[6]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Int64Rules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Int64Rules(Int64Rules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Int64Rules Clone() { + return new Int64Rules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static long ConstDefaultValue = 0L; + + private long const_; + /// + /// `const` requires the field value to exactly match the specified value. If + /// the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MyInt64 { + /// // value must equal 42 + /// int64 value = 1 [(buf.validate.field).int64.const = 42]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 2; + /// + /// `lt` requires the field value to be less than the specified value (field < + /// value). If the field value is equal to or greater than the specified value, + /// an error message is generated. + /// + /// ```proto + /// message MyInt64 { + /// // value must be less than 10 + /// int64 value = 1 [(buf.validate.field).int64.lt = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Lt { + get { return HasLt ? (long) lessThan_ : 0L; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lt; + } + } + /// Gets whether the "lt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLt { + get { return lessThanCase_ == LessThanOneofCase.Lt; } + } + /// Clears the value of the oneof if it's currently set to "lt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLt() { + if (HasLt) { + ClearLessThan(); + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 3; + /// + /// `lte` requires the field value to be less than or equal to the specified + /// value (field <= value). If the field value is greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MyInt64 { + /// // value must be less than or equal to 10 + /// int64 value = 1 [(buf.validate.field).int64.lte = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Lte { + get { return HasLte ? (long) lessThan_ : 0L; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lte; + } + } + /// Gets whether the "lte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLte { + get { return lessThanCase_ == LessThanOneofCase.Lte; } + } + /// Clears the value of the oneof if it's currently set to "lte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLte() { + if (HasLte) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 4; + /// + /// `gt` requires the field value to be greater than the specified value + /// (exclusive). If the value of `gt` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyInt64 { + /// // value must be greater than 5 [int64.gt] + /// int64 value = 1 [(buf.validate.field).int64.gt = 5]; + /// + /// // value must be greater than 5 and less than 10 [int64.gt_lt] + /// int64 other_value = 2 [(buf.validate.field).int64 = { gt: 5, lt: 10 }]; + /// + /// // value must be greater than 10 or less than 5 [int64.gt_lt_exclusive] + /// int64 another_value = 3 [(buf.validate.field).int64 = { gt: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Gt { + get { return HasGt ? (long) greaterThan_ : 0L; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gt; + } + } + /// Gets whether the "gt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt; } + } + /// Clears the value of the oneof if it's currently set to "gt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGt() { + if (HasGt) { + ClearGreaterThan(); + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 5; + /// + /// `gte` requires the field value to be greater than or equal to the specified + /// value (exclusive). If the value of `gte` is larger than a specified `lt` + /// or `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyInt64 { + /// // value must be greater than or equal to 5 [int64.gte] + /// int64 value = 1 [(buf.validate.field).int64.gte = 5]; + /// + /// // value must be greater than or equal to 5 and less than 10 [int64.gte_lt] + /// int64 other_value = 2 [(buf.validate.field).int64 = { gte: 5, lt: 10 }]; + /// + /// // value must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive] + /// int64 another_value = 3 [(buf.validate.field).int64 = { gte: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Gte { + get { return HasGte ? (long) greaterThan_ : 0L; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gte; + } + } + /// Gets whether the "gte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte; } + } + /// Clears the value of the oneof if it's currently set to "gte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGte() { + if (HasGte) { + ClearGreaterThan(); + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 6; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForInt64(50); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified values. + /// If the field value isn't one of the specified values, an error message is + /// generated. + /// + /// ```proto + /// message MyInt64 { + /// // value must be in list [1, 2, 3] + /// repeated int64 value = 1 (buf.validate.field).int64 = { in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForInt64(58); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to not be equal to any of the specified + /// values. If the field value is one of the specified values, an error + /// message is generated. + /// + /// ```proto + /// message MyInt64 { + /// // value must not be in list [1, 2, 3] + /// repeated int64 value = 1 (buf.validate.field).int64 = { not_in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 2, + Lte = 3, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 4, + Gte = 5, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Int64Rules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Int64Rules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (Lt != other.Lt) return false; + if (Lte != other.Lte) return false; + if (Gt != other.Gt) return false; + if (Gte != other.Gte) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasLt) hash ^= Lt.GetHashCode(); + if (HasLte) hash ^= Lte.GetHashCode(); + if (HasGt) hash ^= Gt.GetHashCode(); + if (HasGte) hash ^= Gte.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(8); + output.WriteInt64(Const); + } + if (HasLt) { + output.WriteRawTag(16); + output.WriteInt64(Lt); + } + if (HasLte) { + output.WriteRawTag(24); + output.WriteInt64(Lte); + } + if (HasGt) { + output.WriteRawTag(32); + output.WriteInt64(Gt); + } + if (HasGte) { + output.WriteRawTag(40); + output.WriteInt64(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(8); + output.WriteInt64(Const); + } + if (HasLt) { + output.WriteRawTag(16); + output.WriteInt64(Lt); + } + if (HasLte) { + output.WriteRawTag(24); + output.WriteInt64(Lte); + } + if (HasGt) { + output.WriteRawTag(32); + output.WriteInt64(Gt); + } + if (HasGte) { + output.WriteRawTag(40); + output.WriteInt64(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(Const); + } + if (HasLt) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(Lt); + } + if (HasLte) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(Lte); + } + if (HasGt) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(Gt); + } + if (HasGte) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(Gte); + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Int64Rules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Const = input.ReadInt64(); + break; + } + case 16: { + Lt = input.ReadInt64(); + break; + } + case 24: { + Lte = input.ReadInt64(); + break; + } + case 32: { + Gt = input.ReadInt64(); + break; + } + case 40: { + Gte = input.ReadInt64(); + break; + } + case 50: + case 48: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 58: + case 56: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Const = input.ReadInt64(); + break; + } + case 16: { + Lt = input.ReadInt64(); + break; + } + case 24: { + Lte = input.ReadInt64(); + break; + } + case 32: { + Gt = input.ReadInt64(); + break; + } + case 40: { + Gte = input.ReadInt64(); + break; + } + case 50: + case 48: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 58: + case 56: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// UInt32Rules describes the constraints applied to `uint32` values. These + /// rules may also be applied to the `google.protobuf.UInt32Value` Well-Known-Type. + /// + public sealed partial class UInt32Rules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UInt32Rules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[7]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public UInt32Rules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public UInt32Rules(UInt32Rules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public UInt32Rules Clone() { + return new UInt32Rules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static uint ConstDefaultValue = 0; + + private uint const_; + /// + /// `const` requires the field value to exactly match the specified value. If + /// the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MyUInt32 { + /// // value must equal 42 + /// uint32 value = 1 [(buf.validate.field).uint32.const = 42]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 2; + /// + /// `lt` requires the field value to be less than the specified value (field < + /// value). If the field value is equal to or greater than the specified value, + /// an error message is generated. + /// + /// ```proto + /// message MyUInt32 { + /// // value must be less than 10 + /// uint32 value = 1 [(buf.validate.field).uint32.lt = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Lt { + get { return HasLt ? (uint) lessThan_ : 0; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lt; + } + } + /// Gets whether the "lt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLt { + get { return lessThanCase_ == LessThanOneofCase.Lt; } + } + /// Clears the value of the oneof if it's currently set to "lt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLt() { + if (HasLt) { + ClearLessThan(); + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 3; + /// + /// `lte` requires the field value to be less than or equal to the specified + /// value (field <= value). If the field value is greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MyUInt32 { + /// // value must be less than or equal to 10 + /// uint32 value = 1 [(buf.validate.field).uint32.lte = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Lte { + get { return HasLte ? (uint) lessThan_ : 0; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lte; + } + } + /// Gets whether the "lte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLte { + get { return lessThanCase_ == LessThanOneofCase.Lte; } + } + /// Clears the value of the oneof if it's currently set to "lte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLte() { + if (HasLte) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 4; + /// + /// `gt` requires the field value to be greater than the specified value + /// (exclusive). If the value of `gt` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyUInt32 { + /// // value must be greater than 5 [uint32.gt] + /// uint32 value = 1 [(buf.validate.field).uint32.gt = 5]; + /// + /// // value must be greater than 5 and less than 10 [uint32.gt_lt] + /// uint32 other_value = 2 [(buf.validate.field).uint32 = { gt: 5, lt: 10 }]; + /// + /// // value must be greater than 10 or less than 5 [uint32.gt_lt_exclusive] + /// uint32 another_value = 3 [(buf.validate.field).uint32 = { gt: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Gt { + get { return HasGt ? (uint) greaterThan_ : 0; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gt; + } + } + /// Gets whether the "gt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt; } + } + /// Clears the value of the oneof if it's currently set to "gt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGt() { + if (HasGt) { + ClearGreaterThan(); + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 5; + /// + /// `gte` requires the field value to be greater than or equal to the specified + /// value (exclusive). If the value of `gte` is larger than a specified `lt` + /// or `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyUInt32 { + /// // value must be greater than or equal to 5 [uint32.gte] + /// uint32 value = 1 [(buf.validate.field).uint32.gte = 5]; + /// + /// // value must be greater than or equal to 5 and less than 10 [uint32.gte_lt] + /// uint32 other_value = 2 [(buf.validate.field).uint32 = { gte: 5, lt: 10 }]; + /// + /// // value must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive] + /// uint32 another_value = 3 [(buf.validate.field).uint32 = { gte: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Gte { + get { return HasGte ? (uint) greaterThan_ : 0; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gte; + } + } + /// Gets whether the "gte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte; } + } + /// Clears the value of the oneof if it's currently set to "gte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGte() { + if (HasGte) { + ClearGreaterThan(); + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 6; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForUInt32(50); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified values. + /// If the field value isn't one of the specified values, an error message is + /// generated. + /// + /// ```proto + /// message MyUInt32 { + /// // value must be in list [1, 2, 3] + /// repeated uint32 value = 1 (buf.validate.field).uint32 = { in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForUInt32(58); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to not be equal to any of the specified + /// values. If the field value is one of the specified values, an error + /// message is generated. + /// + /// ```proto + /// message MyUInt32 { + /// // value must not be in list [1, 2, 3] + /// repeated uint32 value = 1 (buf.validate.field).uint32 = { not_in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 2, + Lte = 3, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 4, + Gte = 5, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as UInt32Rules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(UInt32Rules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (Lt != other.Lt) return false; + if (Lte != other.Lte) return false; + if (Gt != other.Gt) return false; + if (Gte != other.Gte) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasLt) hash ^= Lt.GetHashCode(); + if (HasLte) hash ^= Lte.GetHashCode(); + if (HasGt) hash ^= Gt.GetHashCode(); + if (HasGte) hash ^= Gte.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(8); + output.WriteUInt32(Const); + } + if (HasLt) { + output.WriteRawTag(16); + output.WriteUInt32(Lt); + } + if (HasLte) { + output.WriteRawTag(24); + output.WriteUInt32(Lte); + } + if (HasGt) { + output.WriteRawTag(32); + output.WriteUInt32(Gt); + } + if (HasGte) { + output.WriteRawTag(40); + output.WriteUInt32(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(8); + output.WriteUInt32(Const); + } + if (HasLt) { + output.WriteRawTag(16); + output.WriteUInt32(Lt); + } + if (HasLte) { + output.WriteRawTag(24); + output.WriteUInt32(Lte); + } + if (HasGt) { + output.WriteRawTag(32); + output.WriteUInt32(Gt); + } + if (HasGte) { + output.WriteRawTag(40); + output.WriteUInt32(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Const); + } + if (HasLt) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Lt); + } + if (HasLte) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Lte); + } + if (HasGt) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Gt); + } + if (HasGte) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Gte); + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(UInt32Rules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Const = input.ReadUInt32(); + break; + } + case 16: { + Lt = input.ReadUInt32(); + break; + } + case 24: { + Lte = input.ReadUInt32(); + break; + } + case 32: { + Gt = input.ReadUInt32(); + break; + } + case 40: { + Gte = input.ReadUInt32(); + break; + } + case 50: + case 48: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 58: + case 56: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Const = input.ReadUInt32(); + break; + } + case 16: { + Lt = input.ReadUInt32(); + break; + } + case 24: { + Lte = input.ReadUInt32(); + break; + } + case 32: { + Gt = input.ReadUInt32(); + break; + } + case 40: { + Gte = input.ReadUInt32(); + break; + } + case 50: + case 48: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 58: + case 56: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// UInt64Rules describes the constraints applied to `uint64` values. These + /// rules may also be applied to the `google.protobuf.UInt64Value` Well-Known-Type. + /// + public sealed partial class UInt64Rules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UInt64Rules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[8]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public UInt64Rules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public UInt64Rules(UInt64Rules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public UInt64Rules Clone() { + return new UInt64Rules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static ulong ConstDefaultValue = 0UL; + + private ulong const_; + /// + /// `const` requires the field value to exactly match the specified value. If + /// the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MyUInt64 { + /// // value must equal 42 + /// uint64 value = 1 [(buf.validate.field).uint64.const = 42]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 2; + /// + /// `lt` requires the field value to be less than the specified value (field < + /// value). If the field value is equal to or greater than the specified value, + /// an error message is generated. + /// + /// ```proto + /// message MyUInt64 { + /// // value must be less than 10 + /// uint64 value = 1 [(buf.validate.field).uint64.lt = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong Lt { + get { return HasLt ? (ulong) lessThan_ : 0UL; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lt; + } + } + /// Gets whether the "lt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLt { + get { return lessThanCase_ == LessThanOneofCase.Lt; } + } + /// Clears the value of the oneof if it's currently set to "lt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLt() { + if (HasLt) { + ClearLessThan(); + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 3; + /// + /// `lte` requires the field value to be less than or equal to the specified + /// value (field <= value). If the field value is greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MyUInt64 { + /// // value must be less than or equal to 10 + /// uint64 value = 1 [(buf.validate.field).uint64.lte = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong Lte { + get { return HasLte ? (ulong) lessThan_ : 0UL; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lte; + } + } + /// Gets whether the "lte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLte { + get { return lessThanCase_ == LessThanOneofCase.Lte; } + } + /// Clears the value of the oneof if it's currently set to "lte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLte() { + if (HasLte) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 4; + /// + /// `gt` requires the field value to be greater than the specified value + /// (exclusive). If the value of `gt` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyUInt64 { + /// // value must be greater than 5 [uint64.gt] + /// uint64 value = 1 [(buf.validate.field).uint64.gt = 5]; + /// + /// // value must be greater than 5 and less than 10 [uint64.gt_lt] + /// uint64 other_value = 2 [(buf.validate.field).uint64 = { gt: 5, lt: 10 }]; + /// + /// // value must be greater than 10 or less than 5 [uint64.gt_lt_exclusive] + /// uint64 another_value = 3 [(buf.validate.field).uint64 = { gt: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong Gt { + get { return HasGt ? (ulong) greaterThan_ : 0UL; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gt; + } + } + /// Gets whether the "gt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt; } + } + /// Clears the value of the oneof if it's currently set to "gt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGt() { + if (HasGt) { + ClearGreaterThan(); + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 5; + /// + /// `gte` requires the field value to be greater than or equal to the specified + /// value (exclusive). If the value of `gte` is larger than a specified `lt` + /// or `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyUInt64 { + /// // value must be greater than or equal to 5 [uint64.gte] + /// uint64 value = 1 [(buf.validate.field).uint64.gte = 5]; + /// + /// // value must be greater than or equal to 5 and less than 10 [uint64.gte_lt] + /// uint64 other_value = 2 [(buf.validate.field).uint64 = { gte: 5, lt: 10 }]; + /// + /// // value must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive] + /// uint64 another_value = 3 [(buf.validate.field).uint64 = { gte: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong Gte { + get { return HasGte ? (ulong) greaterThan_ : 0UL; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gte; + } + } + /// Gets whether the "gte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte; } + } + /// Clears the value of the oneof if it's currently set to "gte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGte() { + if (HasGte) { + ClearGreaterThan(); + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 6; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForUInt64(50); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified values. + /// If the field value isn't one of the specified values, an error message is + /// generated. + /// + /// ```proto + /// message MyUInt64 { + /// // value must be in list [1, 2, 3] + /// repeated uint64 value = 1 (buf.validate.field).uint64 = { in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForUInt64(58); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to not be equal to any of the specified + /// values. If the field value is one of the specified values, an error + /// message is generated. + /// + /// ```proto + /// message MyUInt64 { + /// // value must not be in list [1, 2, 3] + /// repeated uint64 value = 1 (buf.validate.field).uint64 = { not_in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 2, + Lte = 3, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 4, + Gte = 5, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as UInt64Rules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(UInt64Rules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (Lt != other.Lt) return false; + if (Lte != other.Lte) return false; + if (Gt != other.Gt) return false; + if (Gte != other.Gte) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasLt) hash ^= Lt.GetHashCode(); + if (HasLte) hash ^= Lte.GetHashCode(); + if (HasGt) hash ^= Gt.GetHashCode(); + if (HasGte) hash ^= Gte.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(8); + output.WriteUInt64(Const); + } + if (HasLt) { + output.WriteRawTag(16); + output.WriteUInt64(Lt); + } + if (HasLte) { + output.WriteRawTag(24); + output.WriteUInt64(Lte); + } + if (HasGt) { + output.WriteRawTag(32); + output.WriteUInt64(Gt); + } + if (HasGte) { + output.WriteRawTag(40); + output.WriteUInt64(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(8); + output.WriteUInt64(Const); + } + if (HasLt) { + output.WriteRawTag(16); + output.WriteUInt64(Lt); + } + if (HasLte) { + output.WriteRawTag(24); + output.WriteUInt64(Lte); + } + if (HasGt) { + output.WriteRawTag(32); + output.WriteUInt64(Gt); + } + if (HasGte) { + output.WriteRawTag(40); + output.WriteUInt64(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Const); + } + if (HasLt) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Lt); + } + if (HasLte) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Lte); + } + if (HasGt) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Gt); + } + if (HasGte) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Gte); + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(UInt64Rules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Const = input.ReadUInt64(); + break; + } + case 16: { + Lt = input.ReadUInt64(); + break; + } + case 24: { + Lte = input.ReadUInt64(); + break; + } + case 32: { + Gt = input.ReadUInt64(); + break; + } + case 40: { + Gte = input.ReadUInt64(); + break; + } + case 50: + case 48: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 58: + case 56: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Const = input.ReadUInt64(); + break; + } + case 16: { + Lt = input.ReadUInt64(); + break; + } + case 24: { + Lte = input.ReadUInt64(); + break; + } + case 32: { + Gt = input.ReadUInt64(); + break; + } + case 40: { + Gte = input.ReadUInt64(); + break; + } + case 50: + case 48: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 58: + case 56: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// SInt32Rules describes the constraints applied to `sint32` values. + /// + public sealed partial class SInt32Rules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SInt32Rules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[9]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SInt32Rules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SInt32Rules(SInt32Rules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SInt32Rules Clone() { + return new SInt32Rules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static int ConstDefaultValue = 0; + + private int const_; + /// + /// `const` requires the field value to exactly match the specified value. If + /// the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MySInt32 { + /// // value must equal 42 + /// sint32 value = 1 [(buf.validate.field).sint32.const = 42]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 2; + /// + /// `lt` requires the field value to be less than the specified value (field + /// < value). If the field value is equal to or greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MySInt32 { + /// // value must be less than 10 + /// sint32 value = 1 [(buf.validate.field).sint32.lt = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Lt { + get { return HasLt ? (int) lessThan_ : 0; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lt; + } + } + /// Gets whether the "lt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLt { + get { return lessThanCase_ == LessThanOneofCase.Lt; } + } + /// Clears the value of the oneof if it's currently set to "lt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLt() { + if (HasLt) { + ClearLessThan(); + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 3; + /// + /// `lte` requires the field value to be less than or equal to the specified + /// value (field <= value). If the field value is greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MySInt32 { + /// // value must be less than or equal to 10 + /// sint32 value = 1 [(buf.validate.field).sint32.lte = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Lte { + get { return HasLte ? (int) lessThan_ : 0; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lte; + } + } + /// Gets whether the "lte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLte { + get { return lessThanCase_ == LessThanOneofCase.Lte; } + } + /// Clears the value of the oneof if it's currently set to "lte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLte() { + if (HasLte) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 4; + /// + /// `gt` requires the field value to be greater than the specified value + /// (exclusive). If the value of `gt` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MySInt32 { + /// // value must be greater than 5 [sint32.gt] + /// sint32 value = 1 [(buf.validate.field).sint32.gt = 5]; + /// + /// // value must be greater than 5 and less than 10 [sint32.gt_lt] + /// sint32 other_value = 2 [(buf.validate.field).sint32 = { gt: 5, lt: 10 }]; + /// + /// // value must be greater than 10 or less than 5 [sint32.gt_lt_exclusive] + /// sint32 another_value = 3 [(buf.validate.field).sint32 = { gt: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Gt { + get { return HasGt ? (int) greaterThan_ : 0; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gt; + } + } + /// Gets whether the "gt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt; } + } + /// Clears the value of the oneof if it's currently set to "gt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGt() { + if (HasGt) { + ClearGreaterThan(); + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 5; + /// + /// `gte` requires the field value to be greater than or equal to the specified + /// value (exclusive). If the value of `gte` is larger than a specified `lt` + /// or `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MySInt32 { + /// // value must be greater than or equal to 5 [sint32.gte] + /// sint32 value = 1 [(buf.validate.field).sint32.gte = 5]; + /// + /// // value must be greater than or equal to 5 and less than 10 [sint32.gte_lt] + /// sint32 other_value = 2 [(buf.validate.field).sint32 = { gte: 5, lt: 10 }]; + /// + /// // value must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive] + /// sint32 another_value = 3 [(buf.validate.field).sint32 = { gte: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Gte { + get { return HasGte ? (int) greaterThan_ : 0; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gte; + } + } + /// Gets whether the "gte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte; } + } + /// Clears the value of the oneof if it's currently set to "gte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGte() { + if (HasGte) { + ClearGreaterThan(); + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 6; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForSInt32(50); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified values. + /// If the field value isn't one of the specified values, an error message is + /// generated. + /// + /// ```proto + /// message MySInt32 { + /// // value must be in list [1, 2, 3] + /// repeated sint32 value = 1 (buf.validate.field).sint32 = { in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForSInt32(58); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to not be equal to any of the specified + /// values. If the field value is one of the specified values, an error + /// message is generated. + /// + /// ```proto + /// message MySInt32 { + /// // value must not be in list [1, 2, 3] + /// repeated sint32 value = 1 (buf.validate.field).sint32 = { not_in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 2, + Lte = 3, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 4, + Gte = 5, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SInt32Rules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SInt32Rules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (Lt != other.Lt) return false; + if (Lte != other.Lte) return false; + if (Gt != other.Gt) return false; + if (Gte != other.Gte) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasLt) hash ^= Lt.GetHashCode(); + if (HasLte) hash ^= Lte.GetHashCode(); + if (HasGt) hash ^= Gt.GetHashCode(); + if (HasGte) hash ^= Gte.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(8); + output.WriteSInt32(Const); + } + if (HasLt) { + output.WriteRawTag(16); + output.WriteSInt32(Lt); + } + if (HasLte) { + output.WriteRawTag(24); + output.WriteSInt32(Lte); + } + if (HasGt) { + output.WriteRawTag(32); + output.WriteSInt32(Gt); + } + if (HasGte) { + output.WriteRawTag(40); + output.WriteSInt32(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(8); + output.WriteSInt32(Const); + } + if (HasLt) { + output.WriteRawTag(16); + output.WriteSInt32(Lt); + } + if (HasLte) { + output.WriteRawTag(24); + output.WriteSInt32(Lte); + } + if (HasGt) { + output.WriteRawTag(32); + output.WriteSInt32(Gt); + } + if (HasGte) { + output.WriteRawTag(40); + output.WriteSInt32(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Const); + } + if (HasLt) { + size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Lt); + } + if (HasLte) { + size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Lte); + } + if (HasGt) { + size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Gt); + } + if (HasGte) { + size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Gte); + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SInt32Rules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Const = input.ReadSInt32(); + break; + } + case 16: { + Lt = input.ReadSInt32(); + break; + } + case 24: { + Lte = input.ReadSInt32(); + break; + } + case 32: { + Gt = input.ReadSInt32(); + break; + } + case 40: { + Gte = input.ReadSInt32(); + break; + } + case 50: + case 48: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 58: + case 56: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Const = input.ReadSInt32(); + break; + } + case 16: { + Lt = input.ReadSInt32(); + break; + } + case 24: { + Lte = input.ReadSInt32(); + break; + } + case 32: { + Gt = input.ReadSInt32(); + break; + } + case 40: { + Gte = input.ReadSInt32(); + break; + } + case 50: + case 48: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 58: + case 56: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// SInt64Rules describes the constraints applied to `sint64` values. + /// + public sealed partial class SInt64Rules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SInt64Rules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[10]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SInt64Rules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SInt64Rules(SInt64Rules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SInt64Rules Clone() { + return new SInt64Rules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static long ConstDefaultValue = 0L; + + private long const_; + /// + /// `const` requires the field value to exactly match the specified value. If + /// the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MySInt64 { + /// // value must equal 42 + /// sint64 value = 1 [(buf.validate.field).sint64.const = 42]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 2; + /// + /// `lt` requires the field value to be less than the specified value (field + /// < value). If the field value is equal to or greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MySInt64 { + /// // value must be less than 10 + /// sint64 value = 1 [(buf.validate.field).sint64.lt = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Lt { + get { return HasLt ? (long) lessThan_ : 0L; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lt; + } + } + /// Gets whether the "lt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLt { + get { return lessThanCase_ == LessThanOneofCase.Lt; } + } + /// Clears the value of the oneof if it's currently set to "lt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLt() { + if (HasLt) { + ClearLessThan(); + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 3; + /// + /// `lte` requires the field value to be less than or equal to the specified + /// value (field <= value). If the field value is greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MySInt64 { + /// // value must be less than or equal to 10 + /// sint64 value = 1 [(buf.validate.field).sint64.lte = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Lte { + get { return HasLte ? (long) lessThan_ : 0L; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lte; + } + } + /// Gets whether the "lte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLte { + get { return lessThanCase_ == LessThanOneofCase.Lte; } + } + /// Clears the value of the oneof if it's currently set to "lte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLte() { + if (HasLte) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 4; + /// + /// `gt` requires the field value to be greater than the specified value + /// (exclusive). If the value of `gt` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MySInt64 { + /// // value must be greater than 5 [sint64.gt] + /// sint64 value = 1 [(buf.validate.field).sint64.gt = 5]; + /// + /// // value must be greater than 5 and less than 10 [sint64.gt_lt] + /// sint64 other_value = 2 [(buf.validate.field).sint64 = { gt: 5, lt: 10 }]; + /// + /// // value must be greater than 10 or less than 5 [sint64.gt_lt_exclusive] + /// sint64 another_value = 3 [(buf.validate.field).sint64 = { gt: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Gt { + get { return HasGt ? (long) greaterThan_ : 0L; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gt; + } + } + /// Gets whether the "gt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt; } + } + /// Clears the value of the oneof if it's currently set to "gt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGt() { + if (HasGt) { + ClearGreaterThan(); + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 5; + /// + /// `gte` requires the field value to be greater than or equal to the specified + /// value (exclusive). If the value of `gte` is larger than a specified `lt` + /// or `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MySInt64 { + /// // value must be greater than or equal to 5 [sint64.gte] + /// sint64 value = 1 [(buf.validate.field).sint64.gte = 5]; + /// + /// // value must be greater than or equal to 5 and less than 10 [sint64.gte_lt] + /// sint64 other_value = 2 [(buf.validate.field).sint64 = { gte: 5, lt: 10 }]; + /// + /// // value must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive] + /// sint64 another_value = 3 [(buf.validate.field).sint64 = { gte: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Gte { + get { return HasGte ? (long) greaterThan_ : 0L; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gte; + } + } + /// Gets whether the "gte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte; } + } + /// Clears the value of the oneof if it's currently set to "gte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGte() { + if (HasGte) { + ClearGreaterThan(); + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 6; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForSInt64(50); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified values. + /// If the field value isn't one of the specified values, an error message + /// is generated. + /// + /// ```proto + /// message MySInt64 { + /// // value must be in list [1, 2, 3] + /// repeated sint64 value = 1 (buf.validate.field).sint64 = { in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForSInt64(58); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to not be equal to any of the specified + /// values. If the field value is one of the specified values, an error + /// message is generated. + /// + /// ```proto + /// message MySInt64 { + /// // value must not be in list [1, 2, 3] + /// repeated sint64 value = 1 (buf.validate.field).sint64 = { not_in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 2, + Lte = 3, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 4, + Gte = 5, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SInt64Rules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SInt64Rules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (Lt != other.Lt) return false; + if (Lte != other.Lte) return false; + if (Gt != other.Gt) return false; + if (Gte != other.Gte) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasLt) hash ^= Lt.GetHashCode(); + if (HasLte) hash ^= Lte.GetHashCode(); + if (HasGt) hash ^= Gt.GetHashCode(); + if (HasGte) hash ^= Gte.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(8); + output.WriteSInt64(Const); + } + if (HasLt) { + output.WriteRawTag(16); + output.WriteSInt64(Lt); + } + if (HasLte) { + output.WriteRawTag(24); + output.WriteSInt64(Lte); + } + if (HasGt) { + output.WriteRawTag(32); + output.WriteSInt64(Gt); + } + if (HasGte) { + output.WriteRawTag(40); + output.WriteSInt64(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(8); + output.WriteSInt64(Const); + } + if (HasLt) { + output.WriteRawTag(16); + output.WriteSInt64(Lt); + } + if (HasLte) { + output.WriteRawTag(24); + output.WriteSInt64(Lte); + } + if (HasGt) { + output.WriteRawTag(32); + output.WriteSInt64(Gt); + } + if (HasGte) { + output.WriteRawTag(40); + output.WriteSInt64(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + pb::CodedOutputStream.ComputeSInt64Size(Const); + } + if (HasLt) { + size += 1 + pb::CodedOutputStream.ComputeSInt64Size(Lt); + } + if (HasLte) { + size += 1 + pb::CodedOutputStream.ComputeSInt64Size(Lte); + } + if (HasGt) { + size += 1 + pb::CodedOutputStream.ComputeSInt64Size(Gt); + } + if (HasGte) { + size += 1 + pb::CodedOutputStream.ComputeSInt64Size(Gte); + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SInt64Rules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Const = input.ReadSInt64(); + break; + } + case 16: { + Lt = input.ReadSInt64(); + break; + } + case 24: { + Lte = input.ReadSInt64(); + break; + } + case 32: { + Gt = input.ReadSInt64(); + break; + } + case 40: { + Gte = input.ReadSInt64(); + break; + } + case 50: + case 48: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 58: + case 56: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Const = input.ReadSInt64(); + break; + } + case 16: { + Lt = input.ReadSInt64(); + break; + } + case 24: { + Lte = input.ReadSInt64(); + break; + } + case 32: { + Gt = input.ReadSInt64(); + break; + } + case 40: { + Gte = input.ReadSInt64(); + break; + } + case 50: + case 48: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 58: + case 56: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// Fixed32Rules describes the constraints applied to `fixed32` values. + /// + public sealed partial class Fixed32Rules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Fixed32Rules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[11]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Fixed32Rules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Fixed32Rules(Fixed32Rules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Fixed32Rules Clone() { + return new Fixed32Rules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static uint ConstDefaultValue = 0; + + private uint const_; + /// + /// `const` requires the field value to exactly match the specified value. + /// If the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MyFixed32 { + /// // value must equal 42 + /// fixed32 value = 1 [(buf.validate.field).fixed32.const = 42]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 2; + /// + /// `lt` requires the field value to be less than the specified value (field < + /// value). If the field value is equal to or greater than the specified value, + /// an error message is generated. + /// + /// ```proto + /// message MyFixed32 { + /// // value must be less than 10 + /// fixed32 value = 1 [(buf.validate.field).fixed32.lt = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Lt { + get { return HasLt ? (uint) lessThan_ : 0; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lt; + } + } + /// Gets whether the "lt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLt { + get { return lessThanCase_ == LessThanOneofCase.Lt; } + } + /// Clears the value of the oneof if it's currently set to "lt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLt() { + if (HasLt) { + ClearLessThan(); + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 3; + /// + /// `lte` requires the field value to be less than or equal to the specified + /// value (field <= value). If the field value is greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MyFixed32 { + /// // value must be less than or equal to 10 + /// fixed32 value = 1 [(buf.validate.field).fixed32.lte = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Lte { + get { return HasLte ? (uint) lessThan_ : 0; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lte; + } + } + /// Gets whether the "lte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLte { + get { return lessThanCase_ == LessThanOneofCase.Lte; } + } + /// Clears the value of the oneof if it's currently set to "lte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLte() { + if (HasLte) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 4; + /// + /// `gt` requires the field value to be greater than the specified value + /// (exclusive). If the value of `gt` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyFixed32 { + /// // value must be greater than 5 [fixed32.gt] + /// fixed32 value = 1 [(buf.validate.field).fixed32.gt = 5]; + /// + /// // value must be greater than 5 and less than 10 [fixed32.gt_lt] + /// fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gt: 5, lt: 10 }]; + /// + /// // value must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive] + /// fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gt: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Gt { + get { return HasGt ? (uint) greaterThan_ : 0; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gt; + } + } + /// Gets whether the "gt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt; } + } + /// Clears the value of the oneof if it's currently set to "gt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGt() { + if (HasGt) { + ClearGreaterThan(); + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 5; + /// + /// `gte` requires the field value to be greater than or equal to the specified + /// value (exclusive). If the value of `gte` is larger than a specified `lt` + /// or `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyFixed32 { + /// // value must be greater than or equal to 5 [fixed32.gte] + /// fixed32 value = 1 [(buf.validate.field).fixed32.gte = 5]; + /// + /// // value must be greater than or equal to 5 and less than 10 [fixed32.gte_lt] + /// fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gte: 5, lt: 10 }]; + /// + /// // value must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive] + /// fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gte: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public uint Gte { + get { return HasGte ? (uint) greaterThan_ : 0; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gte; + } + } + /// Gets whether the "gte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte; } + } + /// Clears the value of the oneof if it's currently set to "gte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGte() { + if (HasGte) { + ClearGreaterThan(); + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 6; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForFixed32(50); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified values. + /// If the field value isn't one of the specified values, an error message + /// is generated. + /// + /// ```proto + /// message MyFixed32 { + /// // value must be in list [1, 2, 3] + /// repeated fixed32 value = 1 (buf.validate.field).fixed32 = { in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForFixed32(58); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to not be equal to any of the specified + /// values. If the field value is one of the specified values, an error + /// message is generated. + /// + /// ```proto + /// message MyFixed32 { + /// // value must not be in list [1, 2, 3] + /// repeated fixed32 value = 1 (buf.validate.field).fixed32 = { not_in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 2, + Lte = 3, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 4, + Gte = 5, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Fixed32Rules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Fixed32Rules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (Lt != other.Lt) return false; + if (Lte != other.Lte) return false; + if (Gt != other.Gt) return false; + if (Gte != other.Gte) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasLt) hash ^= Lt.GetHashCode(); + if (HasLte) hash ^= Lte.GetHashCode(); + if (HasGt) hash ^= Gt.GetHashCode(); + if (HasGte) hash ^= Gte.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(13); + output.WriteFixed32(Const); + } + if (HasLt) { + output.WriteRawTag(21); + output.WriteFixed32(Lt); + } + if (HasLte) { + output.WriteRawTag(29); + output.WriteFixed32(Lte); + } + if (HasGt) { + output.WriteRawTag(37); + output.WriteFixed32(Gt); + } + if (HasGte) { + output.WriteRawTag(45); + output.WriteFixed32(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(13); + output.WriteFixed32(Const); + } + if (HasLt) { + output.WriteRawTag(21); + output.WriteFixed32(Lt); + } + if (HasLte) { + output.WriteRawTag(29); + output.WriteFixed32(Lte); + } + if (HasGt) { + output.WriteRawTag(37); + output.WriteFixed32(Gt); + } + if (HasGte) { + output.WriteRawTag(45); + output.WriteFixed32(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + 4; + } + if (HasLt) { + size += 1 + 4; + } + if (HasLte) { + size += 1 + 4; + } + if (HasGt) { + size += 1 + 4; + } + if (HasGte) { + size += 1 + 4; + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Fixed32Rules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 13: { + Const = input.ReadFixed32(); + break; + } + case 21: { + Lt = input.ReadFixed32(); + break; + } + case 29: { + Lte = input.ReadFixed32(); + break; + } + case 37: { + Gt = input.ReadFixed32(); + break; + } + case 45: { + Gte = input.ReadFixed32(); + break; + } + case 50: + case 53: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 58: + case 61: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 13: { + Const = input.ReadFixed32(); + break; + } + case 21: { + Lt = input.ReadFixed32(); + break; + } + case 29: { + Lte = input.ReadFixed32(); + break; + } + case 37: { + Gt = input.ReadFixed32(); + break; + } + case 45: { + Gte = input.ReadFixed32(); + break; + } + case 50: + case 53: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 58: + case 61: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// Fixed64Rules describes the constraints applied to `fixed64` values. + /// + public sealed partial class Fixed64Rules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Fixed64Rules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[12]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Fixed64Rules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Fixed64Rules(Fixed64Rules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Fixed64Rules Clone() { + return new Fixed64Rules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static ulong ConstDefaultValue = 0UL; + + private ulong const_; + /// + /// `const` requires the field value to exactly match the specified value. If + /// the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MyFixed64 { + /// // value must equal 42 + /// fixed64 value = 1 [(buf.validate.field).fixed64.const = 42]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 2; + /// + /// `lt` requires the field value to be less than the specified value (field < + /// value). If the field value is equal to or greater than the specified value, + /// an error message is generated. + /// + /// ```proto + /// message MyFixed64 { + /// // value must be less than 10 + /// fixed64 value = 1 [(buf.validate.field).fixed64.lt = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong Lt { + get { return HasLt ? (ulong) lessThan_ : 0UL; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lt; + } + } + /// Gets whether the "lt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLt { + get { return lessThanCase_ == LessThanOneofCase.Lt; } + } + /// Clears the value of the oneof if it's currently set to "lt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLt() { + if (HasLt) { + ClearLessThan(); + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 3; + /// + /// `lte` requires the field value to be less than or equal to the specified + /// value (field <= value). If the field value is greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MyFixed64 { + /// // value must be less than or equal to 10 + /// fixed64 value = 1 [(buf.validate.field).fixed64.lte = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong Lte { + get { return HasLte ? (ulong) lessThan_ : 0UL; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lte; + } + } + /// Gets whether the "lte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLte { + get { return lessThanCase_ == LessThanOneofCase.Lte; } + } + /// Clears the value of the oneof if it's currently set to "lte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLte() { + if (HasLte) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 4; + /// + /// `gt` requires the field value to be greater than the specified value + /// (exclusive). If the value of `gt` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyFixed64 { + /// // value must be greater than 5 [fixed64.gt] + /// fixed64 value = 1 [(buf.validate.field).fixed64.gt = 5]; + /// + /// // value must be greater than 5 and less than 10 [fixed64.gt_lt] + /// fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gt: 5, lt: 10 }]; + /// + /// // value must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive] + /// fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gt: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong Gt { + get { return HasGt ? (ulong) greaterThan_ : 0UL; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gt; + } + } + /// Gets whether the "gt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt; } + } + /// Clears the value of the oneof if it's currently set to "gt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGt() { + if (HasGt) { + ClearGreaterThan(); + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 5; + /// + /// `gte` requires the field value to be greater than or equal to the specified + /// value (exclusive). If the value of `gte` is larger than a specified `lt` + /// or `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyFixed64 { + /// // value must be greater than or equal to 5 [fixed64.gte] + /// fixed64 value = 1 [(buf.validate.field).fixed64.gte = 5]; + /// + /// // value must be greater than or equal to 5 and less than 10 [fixed64.gte_lt] + /// fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gte: 5, lt: 10 }]; + /// + /// // value must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive] + /// fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gte: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong Gte { + get { return HasGte ? (ulong) greaterThan_ : 0UL; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gte; + } + } + /// Gets whether the "gte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte; } + } + /// Clears the value of the oneof if it's currently set to "gte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGte() { + if (HasGte) { + ClearGreaterThan(); + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 6; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForFixed64(50); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified values. + /// If the field value isn't one of the specified values, an error message is + /// generated. + /// + /// ```proto + /// message MyFixed64 { + /// // value must be in list [1, 2, 3] + /// repeated fixed64 value = 1 (buf.validate.field).fixed64 = { in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForFixed64(58); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to not be equal to any of the specified + /// values. If the field value is one of the specified values, an error + /// message is generated. + /// + /// ```proto + /// message MyFixed64 { + /// // value must not be in list [1, 2, 3] + /// repeated fixed64 value = 1 (buf.validate.field).fixed64 = { not_in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 2, + Lte = 3, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 4, + Gte = 5, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Fixed64Rules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Fixed64Rules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (Lt != other.Lt) return false; + if (Lte != other.Lte) return false; + if (Gt != other.Gt) return false; + if (Gte != other.Gte) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasLt) hash ^= Lt.GetHashCode(); + if (HasLte) hash ^= Lte.GetHashCode(); + if (HasGt) hash ^= Gt.GetHashCode(); + if (HasGte) hash ^= Gte.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(9); + output.WriteFixed64(Const); + } + if (HasLt) { + output.WriteRawTag(17); + output.WriteFixed64(Lt); + } + if (HasLte) { + output.WriteRawTag(25); + output.WriteFixed64(Lte); + } + if (HasGt) { + output.WriteRawTag(33); + output.WriteFixed64(Gt); + } + if (HasGte) { + output.WriteRawTag(41); + output.WriteFixed64(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(9); + output.WriteFixed64(Const); + } + if (HasLt) { + output.WriteRawTag(17); + output.WriteFixed64(Lt); + } + if (HasLte) { + output.WriteRawTag(25); + output.WriteFixed64(Lte); + } + if (HasGt) { + output.WriteRawTag(33); + output.WriteFixed64(Gt); + } + if (HasGte) { + output.WriteRawTag(41); + output.WriteFixed64(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + 8; + } + if (HasLt) { + size += 1 + 8; + } + if (HasLte) { + size += 1 + 8; + } + if (HasGt) { + size += 1 + 8; + } + if (HasGte) { + size += 1 + 8; + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Fixed64Rules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 9: { + Const = input.ReadFixed64(); + break; + } + case 17: { + Lt = input.ReadFixed64(); + break; + } + case 25: { + Lte = input.ReadFixed64(); + break; + } + case 33: { + Gt = input.ReadFixed64(); + break; + } + case 41: { + Gte = input.ReadFixed64(); + break; + } + case 50: + case 49: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 58: + case 57: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 9: { + Const = input.ReadFixed64(); + break; + } + case 17: { + Lt = input.ReadFixed64(); + break; + } + case 25: { + Lte = input.ReadFixed64(); + break; + } + case 33: { + Gt = input.ReadFixed64(); + break; + } + case 41: { + Gte = input.ReadFixed64(); + break; + } + case 50: + case 49: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 58: + case 57: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// SFixed32Rules describes the constraints applied to `fixed32` values. + /// + public sealed partial class SFixed32Rules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SFixed32Rules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[13]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SFixed32Rules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SFixed32Rules(SFixed32Rules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SFixed32Rules Clone() { + return new SFixed32Rules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static int ConstDefaultValue = 0; + + private int const_; + /// + /// `const` requires the field value to exactly match the specified value. If + /// the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MySFixed32 { + /// // value must equal 42 + /// sfixed32 value = 1 [(buf.validate.field).sfixed32.const = 42]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 2; + /// + /// `lt` requires the field value to be less than the specified value (field < + /// value). If the field value is equal to or greater than the specified value, + /// an error message is generated. + /// + /// ```proto + /// message MySFixed32 { + /// // value must be less than 10 + /// sfixed32 value = 1 [(buf.validate.field).sfixed32.lt = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Lt { + get { return HasLt ? (int) lessThan_ : 0; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lt; + } + } + /// Gets whether the "lt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLt { + get { return lessThanCase_ == LessThanOneofCase.Lt; } + } + /// Clears the value of the oneof if it's currently set to "lt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLt() { + if (HasLt) { + ClearLessThan(); + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 3; + /// + /// `lte` requires the field value to be less than or equal to the specified + /// value (field <= value). If the field value is greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MySFixed32 { + /// // value must be less than or equal to 10 + /// sfixed32 value = 1 [(buf.validate.field).sfixed32.lte = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Lte { + get { return HasLte ? (int) lessThan_ : 0; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lte; + } + } + /// Gets whether the "lte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLte { + get { return lessThanCase_ == LessThanOneofCase.Lte; } + } + /// Clears the value of the oneof if it's currently set to "lte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLte() { + if (HasLte) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 4; + /// + /// `gt` requires the field value to be greater than the specified value + /// (exclusive). If the value of `gt` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MySFixed32 { + /// // value must be greater than 5 [sfixed32.gt] + /// sfixed32 value = 1 [(buf.validate.field).sfixed32.gt = 5]; + /// + /// // value must be greater than 5 and less than 10 [sfixed32.gt_lt] + /// sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gt: 5, lt: 10 }]; + /// + /// // value must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive] + /// sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gt: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Gt { + get { return HasGt ? (int) greaterThan_ : 0; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gt; + } + } + /// Gets whether the "gt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt; } + } + /// Clears the value of the oneof if it's currently set to "gt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGt() { + if (HasGt) { + ClearGreaterThan(); + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 5; + /// + /// `gte` requires the field value to be greater than or equal to the specified + /// value (exclusive). If the value of `gte` is larger than a specified `lt` + /// or `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MySFixed32 { + /// // value must be greater than or equal to 5 [sfixed32.gte] + /// sfixed32 value = 1 [(buf.validate.field).sfixed32.gte = 5]; + /// + /// // value must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt] + /// sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gte: 5, lt: 10 }]; + /// + /// // value must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive] + /// sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gte: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Gte { + get { return HasGte ? (int) greaterThan_ : 0; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gte; + } + } + /// Gets whether the "gte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte; } + } + /// Clears the value of the oneof if it's currently set to "gte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGte() { + if (HasGte) { + ClearGreaterThan(); + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 6; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForSFixed32(50); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified values. + /// If the field value isn't one of the specified values, an error message is + /// generated. + /// + /// ```proto + /// message MySFixed32 { + /// // value must be in list [1, 2, 3] + /// repeated sfixed32 value = 1 (buf.validate.field).sfixed32 = { in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForSFixed32(58); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to not be equal to any of the specified + /// values. If the field value is one of the specified values, an error + /// message is generated. + /// + /// ```proto + /// message MySFixed32 { + /// // value must not be in list [1, 2, 3] + /// repeated sfixed32 value = 1 (buf.validate.field).sfixed32 = { not_in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 2, + Lte = 3, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 4, + Gte = 5, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SFixed32Rules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SFixed32Rules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (Lt != other.Lt) return false; + if (Lte != other.Lte) return false; + if (Gt != other.Gt) return false; + if (Gte != other.Gte) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasLt) hash ^= Lt.GetHashCode(); + if (HasLte) hash ^= Lte.GetHashCode(); + if (HasGt) hash ^= Gt.GetHashCode(); + if (HasGte) hash ^= Gte.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(13); + output.WriteSFixed32(Const); + } + if (HasLt) { + output.WriteRawTag(21); + output.WriteSFixed32(Lt); + } + if (HasLte) { + output.WriteRawTag(29); + output.WriteSFixed32(Lte); + } + if (HasGt) { + output.WriteRawTag(37); + output.WriteSFixed32(Gt); + } + if (HasGte) { + output.WriteRawTag(45); + output.WriteSFixed32(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(13); + output.WriteSFixed32(Const); + } + if (HasLt) { + output.WriteRawTag(21); + output.WriteSFixed32(Lt); + } + if (HasLte) { + output.WriteRawTag(29); + output.WriteSFixed32(Lte); + } + if (HasGt) { + output.WriteRawTag(37); + output.WriteSFixed32(Gt); + } + if (HasGte) { + output.WriteRawTag(45); + output.WriteSFixed32(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + 4; + } + if (HasLt) { + size += 1 + 4; + } + if (HasLte) { + size += 1 + 4; + } + if (HasGt) { + size += 1 + 4; + } + if (HasGte) { + size += 1 + 4; + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SFixed32Rules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 13: { + Const = input.ReadSFixed32(); + break; + } + case 21: { + Lt = input.ReadSFixed32(); + break; + } + case 29: { + Lte = input.ReadSFixed32(); + break; + } + case 37: { + Gt = input.ReadSFixed32(); + break; + } + case 45: { + Gte = input.ReadSFixed32(); + break; + } + case 50: + case 53: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 58: + case 61: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 13: { + Const = input.ReadSFixed32(); + break; + } + case 21: { + Lt = input.ReadSFixed32(); + break; + } + case 29: { + Lte = input.ReadSFixed32(); + break; + } + case 37: { + Gt = input.ReadSFixed32(); + break; + } + case 45: { + Gte = input.ReadSFixed32(); + break; + } + case 50: + case 53: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 58: + case 61: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// SFixed64Rules describes the constraints applied to `fixed64` values. + /// + public sealed partial class SFixed64Rules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SFixed64Rules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[14]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SFixed64Rules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SFixed64Rules(SFixed64Rules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SFixed64Rules Clone() { + return new SFixed64Rules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static long ConstDefaultValue = 0L; + + private long const_; + /// + /// `const` requires the field value to exactly match the specified value. If + /// the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MySFixed64 { + /// // value must equal 42 + /// sfixed64 value = 1 [(buf.validate.field).sfixed64.const = 42]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 2; + /// + /// `lt` requires the field value to be less than the specified value (field < + /// value). If the field value is equal to or greater than the specified value, + /// an error message is generated. + /// + /// ```proto + /// message MySFixed64 { + /// // value must be less than 10 + /// sfixed64 value = 1 [(buf.validate.field).sfixed64.lt = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Lt { + get { return HasLt ? (long) lessThan_ : 0L; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lt; + } + } + /// Gets whether the "lt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLt { + get { return lessThanCase_ == LessThanOneofCase.Lt; } + } + /// Clears the value of the oneof if it's currently set to "lt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLt() { + if (HasLt) { + ClearLessThan(); + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 3; + /// + /// `lte` requires the field value to be less than or equal to the specified + /// value (field <= value). If the field value is greater than the specified + /// value, an error message is generated. + /// + /// ```proto + /// message MySFixed64 { + /// // value must be less than or equal to 10 + /// sfixed64 value = 1 [(buf.validate.field).sfixed64.lte = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Lte { + get { return HasLte ? (long) lessThan_ : 0L; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.Lte; + } + } + /// Gets whether the "lte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLte { + get { return lessThanCase_ == LessThanOneofCase.Lte; } + } + /// Clears the value of the oneof if it's currently set to "lte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLte() { + if (HasLte) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 4; + /// + /// `gt` requires the field value to be greater than the specified value + /// (exclusive). If the value of `gt` is larger than a specified `lt` or + /// `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MySFixed64 { + /// // value must be greater than 5 [sfixed64.gt] + /// sfixed64 value = 1 [(buf.validate.field).sfixed64.gt = 5]; + /// + /// // value must be greater than 5 and less than 10 [sfixed64.gt_lt] + /// sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gt: 5, lt: 10 }]; + /// + /// // value must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive] + /// sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gt: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Gt { + get { return HasGt ? (long) greaterThan_ : 0L; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gt; + } + } + /// Gets whether the "gt" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt; } + } + /// Clears the value of the oneof if it's currently set to "gt" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGt() { + if (HasGt) { + ClearGreaterThan(); + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 5; + /// + /// `gte` requires the field value to be greater than or equal to the specified + /// value (exclusive). If the value of `gte` is larger than a specified `lt` + /// or `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MySFixed64 { + /// // value must be greater than or equal to 5 [sfixed64.gte] + /// sfixed64 value = 1 [(buf.validate.field).sfixed64.gte = 5]; + /// + /// // value must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt] + /// sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gte: 5, lt: 10 }]; + /// + /// // value must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive] + /// sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gte: 10, lt: 5 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long Gte { + get { return HasGte ? (long) greaterThan_ : 0L; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.Gte; + } + } + /// Gets whether the "gte" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte; } + } + /// Clears the value of the oneof if it's currently set to "gte" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGte() { + if (HasGte) { + ClearGreaterThan(); + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 6; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForSFixed64(50); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified values. + /// If the field value isn't one of the specified values, an error message is + /// generated. + /// + /// ```proto + /// message MySFixed64 { + /// // value must be in list [1, 2, 3] + /// repeated sfixed64 value = 1 (buf.validate.field).sfixed64 = { in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForSFixed64(58); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to not be equal to any of the specified + /// values. If the field value is one of the specified values, an error + /// message is generated. + /// + /// ```proto + /// message MySFixed64 { + /// // value must not be in list [1, 2, 3] + /// repeated sfixed64 value = 1 (buf.validate.field).sfixed64 = { not_in: [1, 2, 3] }; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 2, + Lte = 3, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 4, + Gte = 5, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SFixed64Rules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SFixed64Rules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (Lt != other.Lt) return false; + if (Lte != other.Lte) return false; + if (Gt != other.Gt) return false; + if (Gte != other.Gte) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasLt) hash ^= Lt.GetHashCode(); + if (HasLte) hash ^= Lte.GetHashCode(); + if (HasGt) hash ^= Gt.GetHashCode(); + if (HasGte) hash ^= Gte.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(9); + output.WriteSFixed64(Const); + } + if (HasLt) { + output.WriteRawTag(17); + output.WriteSFixed64(Lt); + } + if (HasLte) { + output.WriteRawTag(25); + output.WriteSFixed64(Lte); + } + if (HasGt) { + output.WriteRawTag(33); + output.WriteSFixed64(Gt); + } + if (HasGte) { + output.WriteRawTag(41); + output.WriteSFixed64(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(9); + output.WriteSFixed64(Const); + } + if (HasLt) { + output.WriteRawTag(17); + output.WriteSFixed64(Lt); + } + if (HasLte) { + output.WriteRawTag(25); + output.WriteSFixed64(Lte); + } + if (HasGt) { + output.WriteRawTag(33); + output.WriteSFixed64(Gt); + } + if (HasGte) { + output.WriteRawTag(41); + output.WriteSFixed64(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + 8; + } + if (HasLt) { + size += 1 + 8; + } + if (HasLte) { + size += 1 + 8; + } + if (HasGt) { + size += 1 + 8; + } + if (HasGte) { + size += 1 + 8; + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SFixed64Rules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt; + break; + case LessThanOneofCase.Lte: + Lte = other.Lte; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt; + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 9: { + Const = input.ReadSFixed64(); + break; + } + case 17: { + Lt = input.ReadSFixed64(); + break; + } + case 25: { + Lte = input.ReadSFixed64(); + break; + } + case 33: { + Gt = input.ReadSFixed64(); + break; + } + case 41: { + Gte = input.ReadSFixed64(); + break; + } + case 50: + case 49: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 58: + case 57: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 9: { + Const = input.ReadSFixed64(); + break; + } + case 17: { + Lt = input.ReadSFixed64(); + break; + } + case 25: { + Lte = input.ReadSFixed64(); + break; + } + case 33: { + Gt = input.ReadSFixed64(); + break; + } + case 41: { + Gte = input.ReadSFixed64(); + break; + } + case 50: + case 49: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 58: + case 57: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// BoolRules describes the constraints applied to `bool` values. These rules + /// may also be applied to the `google.protobuf.BoolValue` Well-Known-Type. + /// + public sealed partial class BoolRules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new BoolRules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[15]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BoolRules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BoolRules(BoolRules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BoolRules Clone() { + return new BoolRules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static bool ConstDefaultValue = false; + + private bool const_; + /// + /// `const` requires the field value to exactly match the specified boolean value. + /// If the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MyBool { + /// // value must equal true + /// bool value = 1 [(buf.validate.field).bool.const = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as BoolRules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(BoolRules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(8); + output.WriteBool(Const); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(8); + output.WriteBool(Const); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + 1; + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(BoolRules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Const = input.ReadBool(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Const = input.ReadBool(); + break; + } + } + } + } + #endif + + } + + /// + /// StringRules describes the constraints applied to `string` values These + /// rules may also be applied to the `google.protobuf.StringValue` Well-Known-Type. + /// + public sealed partial class StringRules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new StringRules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[16]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StringRules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StringRules(StringRules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + len_ = other.len_; + minLen_ = other.minLen_; + maxLen_ = other.maxLen_; + lenBytes_ = other.lenBytes_; + minBytes_ = other.minBytes_; + maxBytes_ = other.maxBytes_; + pattern_ = other.pattern_; + prefix_ = other.prefix_; + suffix_ = other.suffix_; + contains_ = other.contains_; + notContains_ = other.notContains_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + strict_ = other.strict_; + switch (other.WellKnownCase) { + case WellKnownOneofCase.Email: + Email = other.Email; + break; + case WellKnownOneofCase.Hostname: + Hostname = other.Hostname; + break; + case WellKnownOneofCase.Ip: + Ip = other.Ip; + break; + case WellKnownOneofCase.Ipv4: + Ipv4 = other.Ipv4; + break; + case WellKnownOneofCase.Ipv6: + Ipv6 = other.Ipv6; + break; + case WellKnownOneofCase.Uri: + Uri = other.Uri; + break; + case WellKnownOneofCase.UriRef: + UriRef = other.UriRef; + break; + case WellKnownOneofCase.Address: + Address = other.Address; + break; + case WellKnownOneofCase.Uuid: + Uuid = other.Uuid; + break; + case WellKnownOneofCase.IpWithPrefixlen: + IpWithPrefixlen = other.IpWithPrefixlen; + break; + case WellKnownOneofCase.Ipv4WithPrefixlen: + Ipv4WithPrefixlen = other.Ipv4WithPrefixlen; + break; + case WellKnownOneofCase.Ipv6WithPrefixlen: + Ipv6WithPrefixlen = other.Ipv6WithPrefixlen; + break; + case WellKnownOneofCase.IpPrefix: + IpPrefix = other.IpPrefix; + break; + case WellKnownOneofCase.Ipv4Prefix: + Ipv4Prefix = other.Ipv4Prefix; + break; + case WellKnownOneofCase.Ipv6Prefix: + Ipv6Prefix = other.Ipv6Prefix; + break; + case WellKnownOneofCase.WellKnownRegex: + WellKnownRegex = other.WellKnownRegex; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public StringRules Clone() { + return new StringRules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static string ConstDefaultValue = ""; + + private string const_; + /// + /// `const` requires the field value to exactly match the specified value. If + /// the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MyString { + /// // value must equal `hello` + /// string value = 1 [(buf.validate.field).string.const = "hello"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Const { + get { return const_ ?? ConstDefaultValue; } + set { + const_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return const_ != null; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + const_ = null; + } + + /// Field number for the "len" field. + public const int LenFieldNumber = 19; + private readonly static ulong LenDefaultValue = 0UL; + + private ulong len_; + /// + /// `len` dictates that the field value must have the specified + /// number of characters (Unicode code points), which may differ from the number + /// of bytes in the string. If the field value does not meet the specified + /// length, an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value length must be 5 characters + /// string value = 1 [(buf.validate.field).string.len = 5]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong Len { + get { if ((_hasBits0 & 16) != 0) { return len_; } else { return LenDefaultValue; } } + set { + _hasBits0 |= 16; + len_ = value; + } + } + /// Gets whether the "len" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLen { + get { return (_hasBits0 & 16) != 0; } + } + /// Clears the value of the "len" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLen() { + _hasBits0 &= ~16; + } + + /// Field number for the "min_len" field. + public const int MinLenFieldNumber = 2; + private readonly static ulong MinLenDefaultValue = 0UL; + + private ulong minLen_; + /// + /// `min_len` specifies that the field value must have at least the specified + /// number of characters (Unicode code points), which may differ from the number + /// of bytes in the string. If the field value contains fewer characters, an error + /// message will be generated. + /// + /// ```proto + /// message MyString { + /// // value length must be at least 3 characters + /// string value = 1 [(buf.validate.field).string.min_len = 3]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong MinLen { + get { if ((_hasBits0 & 1) != 0) { return minLen_; } else { return MinLenDefaultValue; } } + set { + _hasBits0 |= 1; + minLen_ = value; + } + } + /// Gets whether the "min_len" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasMinLen { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "min_len" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMinLen() { + _hasBits0 &= ~1; + } + + /// Field number for the "max_len" field. + public const int MaxLenFieldNumber = 3; + private readonly static ulong MaxLenDefaultValue = 0UL; + + private ulong maxLen_; + /// + /// `max_len` specifies that the field value must have no more than the specified + /// number of characters (Unicode code points), which may differ from the + /// number of bytes in the string. If the field value contains more characters, + /// an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value length must be at most 10 characters + /// string value = 1 [(buf.validate.field).string.max_len = 10]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong MaxLen { + get { if ((_hasBits0 & 2) != 0) { return maxLen_; } else { return MaxLenDefaultValue; } } + set { + _hasBits0 |= 2; + maxLen_ = value; + } + } + /// Gets whether the "max_len" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasMaxLen { + get { return (_hasBits0 & 2) != 0; } + } + /// Clears the value of the "max_len" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMaxLen() { + _hasBits0 &= ~2; + } + + /// Field number for the "len_bytes" field. + public const int LenBytesFieldNumber = 20; + private readonly static ulong LenBytesDefaultValue = 0UL; + + private ulong lenBytes_; + /// + /// `len_bytes` dictates that the field value must have the specified number of + /// bytes. If the field value does not match the specified length in bytes, + /// an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value length must be 6 bytes + /// string value = 1 [(buf.validate.field).string.len_bytes = 6]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong LenBytes { + get { if ((_hasBits0 & 32) != 0) { return lenBytes_; } else { return LenBytesDefaultValue; } } + set { + _hasBits0 |= 32; + lenBytes_ = value; + } + } + /// Gets whether the "len_bytes" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLenBytes { + get { return (_hasBits0 & 32) != 0; } + } + /// Clears the value of the "len_bytes" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLenBytes() { + _hasBits0 &= ~32; + } + + /// Field number for the "min_bytes" field. + public const int MinBytesFieldNumber = 4; + private readonly static ulong MinBytesDefaultValue = 0UL; + + private ulong minBytes_; + /// + /// `min_bytes` specifies that the field value must have at least the specified + /// number of bytes. If the field value contains fewer bytes, an error message + /// will be generated. + /// + /// ```proto + /// message MyString { + /// // value length must be at least 4 bytes + /// string value = 1 [(buf.validate.field).string.min_bytes = 4]; + /// } + /// + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong MinBytes { + get { if ((_hasBits0 & 4) != 0) { return minBytes_; } else { return MinBytesDefaultValue; } } + set { + _hasBits0 |= 4; + minBytes_ = value; + } + } + /// Gets whether the "min_bytes" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasMinBytes { + get { return (_hasBits0 & 4) != 0; } + } + /// Clears the value of the "min_bytes" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMinBytes() { + _hasBits0 &= ~4; + } + + /// Field number for the "max_bytes" field. + public const int MaxBytesFieldNumber = 5; + private readonly static ulong MaxBytesDefaultValue = 0UL; + + private ulong maxBytes_; + /// + /// `max_bytes` specifies that the field value must have no more than the + ///specified number of bytes. If the field value contains more bytes, an + /// error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value length must be at most 8 bytes + /// string value = 1 [(buf.validate.field).string.max_bytes = 8]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong MaxBytes { + get { if ((_hasBits0 & 8) != 0) { return maxBytes_; } else { return MaxBytesDefaultValue; } } + set { + _hasBits0 |= 8; + maxBytes_ = value; + } + } + /// Gets whether the "max_bytes" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasMaxBytes { + get { return (_hasBits0 & 8) != 0; } + } + /// Clears the value of the "max_bytes" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMaxBytes() { + _hasBits0 &= ~8; + } + + /// Field number for the "pattern" field. + public const int PatternFieldNumber = 6; + private readonly static string PatternDefaultValue = ""; + + private string pattern_; + /// + /// `pattern` specifies that the field value must match the specified + /// regular expression (RE2 syntax), with the expression provided without any + /// delimiters. If the field value doesn't match the regular expression, an + /// error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value does not match regex pattern `^[a-zA-Z]//$` + /// string value = 1 [(buf.validate.field).string.pattern = "^[a-zA-Z]//$"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Pattern { + get { return pattern_ ?? PatternDefaultValue; } + set { + pattern_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "pattern" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPattern { + get { return pattern_ != null; } + } + /// Clears the value of the "pattern" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPattern() { + pattern_ = null; + } + + /// Field number for the "prefix" field. + public const int PrefixFieldNumber = 7; + private readonly static string PrefixDefaultValue = ""; + + private string prefix_; + /// + /// `prefix` specifies that the field value must have the + ///specified substring at the beginning of the string. If the field value + /// doesn't start with the specified prefix, an error message will be + /// generated. + /// + /// ```proto + /// message MyString { + /// // value does not have prefix `pre` + /// string value = 1 [(buf.validate.field).string.prefix = "pre"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Prefix { + get { return prefix_ ?? PrefixDefaultValue; } + set { + prefix_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "prefix" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPrefix { + get { return prefix_ != null; } + } + /// Clears the value of the "prefix" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPrefix() { + prefix_ = null; + } + + /// Field number for the "suffix" field. + public const int SuffixFieldNumber = 8; + private readonly static string SuffixDefaultValue = ""; + + private string suffix_; + /// + /// `suffix` specifies that the field value must have the + ///specified substring at the end of the string. If the field value doesn't + /// end with the specified suffix, an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value does not have suffix `post` + /// string value = 1 [(buf.validate.field).string.suffix = "post"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Suffix { + get { return suffix_ ?? SuffixDefaultValue; } + set { + suffix_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "suffix" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasSuffix { + get { return suffix_ != null; } + } + /// Clears the value of the "suffix" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearSuffix() { + suffix_ = null; + } + + /// Field number for the "contains" field. + public const int ContainsFieldNumber = 9; + private readonly static string ContainsDefaultValue = ""; + + private string contains_; + /// + /// `contains` specifies that the field value must have the + ///specified substring anywhere in the string. If the field value doesn't + /// contain the specified substring, an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value does not contain substring `inside`. + /// string value = 1 [(buf.validate.field).string.contains = "inside"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Contains { + get { return contains_ ?? ContainsDefaultValue; } + set { + contains_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "contains" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasContains { + get { return contains_ != null; } + } + /// Clears the value of the "contains" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearContains() { + contains_ = null; + } + + /// Field number for the "not_contains" field. + public const int NotContainsFieldNumber = 23; + private readonly static string NotContainsDefaultValue = ""; + + private string notContains_; + /// + /// `not_contains` specifies that the field value must not have the + ///specified substring anywhere in the string. If the field value contains + /// the specified substring, an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value contains substring `inside`. + /// string value = 1 [(buf.validate.field).string.not_contains = "inside"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string NotContains { + get { return notContains_ ?? NotContainsDefaultValue; } + set { + notContains_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "not_contains" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasNotContains { + get { return notContains_ != null; } + } + /// Clears the value of the "not_contains" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearNotContains() { + notContains_ = null; + } + + /// Field number for the "in" field. + public const int InFieldNumber = 10; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForString(82); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` specifies that the field value must be equal to one of the specified + /// values. If the field value isn't one of the specified values, an error + /// message will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be in list ["apple", "banana"] + /// repeated string value = 1 [(buf.validate.field).string.in = "apple", (buf.validate.field).string.in = "banana"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 11; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForString(90); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` specifies that the field value cannot be equal to any + /// of the specified values. If the field value is one of the specified values, + /// an error message will be generated. + /// ```proto + /// message MyString { + /// // value must not be in list ["orange", "grape"] + /// repeated string value = 1 [(buf.validate.field).string.not_in = "orange", (buf.validate.field).string.not_in = "grape"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + /// Field number for the "email" field. + public const int EmailFieldNumber = 12; + /// + /// `email` specifies that the field value must be a valid email address + /// (addr-spec only) as defined by [RFC 5322](https://tools.ietf.org/html/rfc5322#section-3.4.1). + /// If the field value isn't a valid email address, an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid email address + /// string value = 1 [(buf.validate.field).string.email = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Email { + get { return HasEmail ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Email; + } + } + /// Gets whether the "email" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasEmail { + get { return wellKnownCase_ == WellKnownOneofCase.Email; } + } + /// Clears the value of the oneof if it's currently set to "email" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearEmail() { + if (HasEmail) { + ClearWellKnown(); + } + } + + /// Field number for the "hostname" field. + public const int HostnameFieldNumber = 13; + /// + /// `hostname` specifies that the field value must be a valid + /// hostname as defined by [RFC 1034](https://tools.ietf.org/html/rfc1034#section-3.5). This constraint doesn't support + /// internationalized domain names (IDNs). If the field value isn't a + /// valid hostname, an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid hostname + /// string value = 1 [(buf.validate.field).string.hostname = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Hostname { + get { return HasHostname ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Hostname; + } + } + /// Gets whether the "hostname" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasHostname { + get { return wellKnownCase_ == WellKnownOneofCase.Hostname; } + } + /// Clears the value of the oneof if it's currently set to "hostname" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearHostname() { + if (HasHostname) { + ClearWellKnown(); + } + } + + /// Field number for the "ip" field. + public const int IpFieldNumber = 14; + /// + /// `ip` specifies that the field value must be a valid IP + /// (v4 or v6) address, without surrounding square brackets for IPv6 addresses. + /// If the field value isn't a valid IP address, an error message will be + /// generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid IP address + /// string value = 1 [(buf.validate.field).string.ip = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Ip { + get { return HasIp ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Ip; + } + } + /// Gets whether the "ip" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIp { + get { return wellKnownCase_ == WellKnownOneofCase.Ip; } + } + /// Clears the value of the oneof if it's currently set to "ip" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIp() { + if (HasIp) { + ClearWellKnown(); + } + } + + /// Field number for the "ipv4" field. + public const int Ipv4FieldNumber = 15; + /// + /// `ipv4` specifies that the field value must be a valid IPv4 + /// address. If the field value isn't a valid IPv4 address, an error message + /// will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid IPv4 address + /// string value = 1 [(buf.validate.field).string.ipv4 = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Ipv4 { + get { return HasIpv4 ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Ipv4; + } + } + /// Gets whether the "ipv4" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIpv4 { + get { return wellKnownCase_ == WellKnownOneofCase.Ipv4; } + } + /// Clears the value of the oneof if it's currently set to "ipv4" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIpv4() { + if (HasIpv4) { + ClearWellKnown(); + } + } + + /// Field number for the "ipv6" field. + public const int Ipv6FieldNumber = 16; + /// + /// `ipv6` specifies that the field value must be a valid + /// IPv6 address, without surrounding square brackets. If the field value is + /// not a valid IPv6 address, an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid IPv6 address + /// string value = 1 [(buf.validate.field).string.ipv6 = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Ipv6 { + get { return HasIpv6 ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Ipv6; + } + } + /// Gets whether the "ipv6" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIpv6 { + get { return wellKnownCase_ == WellKnownOneofCase.Ipv6; } + } + /// Clears the value of the oneof if it's currently set to "ipv6" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIpv6() { + if (HasIpv6) { + ClearWellKnown(); + } + } + + /// Field number for the "uri" field. + public const int UriFieldNumber = 17; + /// + /// `uri` specifies that the field value must be a valid, + /// absolute URI as defined by [RFC 3986](https://tools.ietf.org/html/rfc3986#section-3). If the field value isn't a valid, + /// absolute URI, an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid URI + /// string value = 1 [(buf.validate.field).string.uri = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Uri { + get { return HasUri ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Uri; + } + } + /// Gets whether the "uri" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasUri { + get { return wellKnownCase_ == WellKnownOneofCase.Uri; } + } + /// Clears the value of the oneof if it's currently set to "uri" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearUri() { + if (HasUri) { + ClearWellKnown(); + } + } + + /// Field number for the "uri_ref" field. + public const int UriRefFieldNumber = 18; + /// + /// `uri_ref` specifies that the field value must be a valid URI + /// as defined by [RFC 3986](https://tools.ietf.org/html/rfc3986#section-3) and may be either relative or absolute. If the + /// field value isn't a valid URI, an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid URI + /// string value = 1 [(buf.validate.field).string.uri_ref = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool UriRef { + get { return HasUriRef ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.UriRef; + } + } + /// Gets whether the "uri_ref" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasUriRef { + get { return wellKnownCase_ == WellKnownOneofCase.UriRef; } + } + /// Clears the value of the oneof if it's currently set to "uri_ref" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearUriRef() { + if (HasUriRef) { + ClearWellKnown(); + } + } + + /// Field number for the "address" field. + public const int AddressFieldNumber = 21; + /// + /// `address` specifies that the field value must be either a valid hostname + /// as defined by [RFC 1034](https://tools.ietf.org/html/rfc1034#section-3.5) + /// (which doesn't support internationalized domain names or IDNs) or a valid + /// IP (v4 or v6). If the field value isn't a valid hostname or IP, an error + /// message will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid hostname, or ip address + /// string value = 1 [(buf.validate.field).string.address = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Address { + get { return HasAddress ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Address; + } + } + /// Gets whether the "address" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasAddress { + get { return wellKnownCase_ == WellKnownOneofCase.Address; } + } + /// Clears the value of the oneof if it's currently set to "address" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearAddress() { + if (HasAddress) { + ClearWellKnown(); + } + } + + /// Field number for the "uuid" field. + public const int UuidFieldNumber = 22; + /// + /// `uuid` specifies that the field value must be a valid UUID as defined by + /// [RFC 4122](https://tools.ietf.org/html/rfc4122#section-4.1.2). If the + /// field value isn't a valid UUID, an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid UUID + /// string value = 1 [(buf.validate.field).string.uuid = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Uuid { + get { return HasUuid ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Uuid; + } + } + /// Gets whether the "uuid" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasUuid { + get { return wellKnownCase_ == WellKnownOneofCase.Uuid; } + } + /// Clears the value of the oneof if it's currently set to "uuid" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearUuid() { + if (HasUuid) { + ClearWellKnown(); + } + } + + /// Field number for the "ip_with_prefixlen" field. + public const int IpWithPrefixlenFieldNumber = 26; + /// + /// `ip_with_prefixlen` specifies that the field value must be a valid IP (v4 or v6) + /// address with prefix length. If the field value isn't a valid IP with prefix + /// length, an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid IP with prefix length + /// string value = 1 [(buf.validate.field).string.ip_with_prefixlen = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool IpWithPrefixlen { + get { return HasIpWithPrefixlen ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.IpWithPrefixlen; + } + } + /// Gets whether the "ip_with_prefixlen" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIpWithPrefixlen { + get { return wellKnownCase_ == WellKnownOneofCase.IpWithPrefixlen; } + } + /// Clears the value of the oneof if it's currently set to "ip_with_prefixlen" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIpWithPrefixlen() { + if (HasIpWithPrefixlen) { + ClearWellKnown(); + } + } + + /// Field number for the "ipv4_with_prefixlen" field. + public const int Ipv4WithPrefixlenFieldNumber = 27; + /// + /// `ipv4_with_prefixlen` specifies that the field value must be a valid + /// IPv4 address with prefix. + /// If the field value isn't a valid IPv4 address with prefix length, + /// an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid IPv4 address with prefix lentgh + /// string value = 1 [(buf.validate.field).string.ipv4_with_prefixlen = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Ipv4WithPrefixlen { + get { return HasIpv4WithPrefixlen ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Ipv4WithPrefixlen; + } + } + /// Gets whether the "ipv4_with_prefixlen" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIpv4WithPrefixlen { + get { return wellKnownCase_ == WellKnownOneofCase.Ipv4WithPrefixlen; } + } + /// Clears the value of the oneof if it's currently set to "ipv4_with_prefixlen" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIpv4WithPrefixlen() { + if (HasIpv4WithPrefixlen) { + ClearWellKnown(); + } + } + + /// Field number for the "ipv6_with_prefixlen" field. + public const int Ipv6WithPrefixlenFieldNumber = 28; + /// + /// `ipv6_with_prefixlen` specifies that the field value must be a valid + /// IPv6 address with prefix length. + /// If the field value is not a valid IPv6 address with prefix length, + /// an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid IPv6 address prefix length + /// string value = 1 [(buf.validate.field).string.ipv6_with_prefixlen = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Ipv6WithPrefixlen { + get { return HasIpv6WithPrefixlen ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Ipv6WithPrefixlen; + } + } + /// Gets whether the "ipv6_with_prefixlen" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIpv6WithPrefixlen { + get { return wellKnownCase_ == WellKnownOneofCase.Ipv6WithPrefixlen; } + } + /// Clears the value of the oneof if it's currently set to "ipv6_with_prefixlen" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIpv6WithPrefixlen() { + if (HasIpv6WithPrefixlen) { + ClearWellKnown(); + } + } + + /// Field number for the "ip_prefix" field. + public const int IpPrefixFieldNumber = 29; + /// + /// `ip_prefix` specifies that the field value must be a valid IP (v4 or v6) prefix. + /// If the field value isn't a valid IP prefix, an error message will be + /// generated. The prefix must have all zeros for the masked bits of the prefix (e.g., + /// `127.0.0.0/16`, not `127.0.0.1/16`). + /// + /// ```proto + /// message MyString { + /// // value must be a valid IP prefix + /// string value = 1 [(buf.validate.field).string.ip_prefix = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool IpPrefix { + get { return HasIpPrefix ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.IpPrefix; + } + } + /// Gets whether the "ip_prefix" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIpPrefix { + get { return wellKnownCase_ == WellKnownOneofCase.IpPrefix; } + } + /// Clears the value of the oneof if it's currently set to "ip_prefix" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIpPrefix() { + if (HasIpPrefix) { + ClearWellKnown(); + } + } + + /// Field number for the "ipv4_prefix" field. + public const int Ipv4PrefixFieldNumber = 30; + /// + /// `ipv4_prefix` specifies that the field value must be a valid IPv4 + /// prefix. If the field value isn't a valid IPv4 prefix, an error message + /// will be generated. The prefix must have all zeros for the masked bits of + /// the prefix (e.g., `127.0.0.0/16`, not `127.0.0.1/16`). + /// + /// ```proto + /// message MyString { + /// // value must be a valid IPv4 prefix + /// string value = 1 [(buf.validate.field).string.ipv4_prefix = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Ipv4Prefix { + get { return HasIpv4Prefix ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Ipv4Prefix; + } + } + /// Gets whether the "ipv4_prefix" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIpv4Prefix { + get { return wellKnownCase_ == WellKnownOneofCase.Ipv4Prefix; } + } + /// Clears the value of the oneof if it's currently set to "ipv4_prefix" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIpv4Prefix() { + if (HasIpv4Prefix) { + ClearWellKnown(); + } + } + + /// Field number for the "ipv6_prefix" field. + public const int Ipv6PrefixFieldNumber = 31; + /// + /// `ipv6_prefix` specifies that the field value must be a valid IPv6 prefix. + /// If the field value is not a valid IPv6 prefix, an error message will be + /// generated. The prefix must have all zeros for the masked bits of the prefix + /// (e.g., `2001:db8::/48`, not `2001:db8::1/48`). + /// + /// ```proto + /// message MyString { + /// // value must be a valid IPv6 prefix + /// string value = 1 [(buf.validate.field).string.ipv6_prefix = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Ipv6Prefix { + get { return HasIpv6Prefix ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Ipv6Prefix; + } + } + /// Gets whether the "ipv6_prefix" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIpv6Prefix { + get { return wellKnownCase_ == WellKnownOneofCase.Ipv6Prefix; } + } + /// Clears the value of the oneof if it's currently set to "ipv6_prefix" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIpv6Prefix() { + if (HasIpv6Prefix) { + ClearWellKnown(); + } + } + + /// Field number for the "well_known_regex" field. + public const int WellKnownRegexFieldNumber = 24; + /// + /// `well_known_regex` specifies a common well-known pattern + /// defined as a regex. If the field value doesn't match the well-known + /// regex, an error message will be generated. + /// + /// ```proto + /// message MyString { + /// // value must be a valid HTTP header value + /// string value = 1 [(buf.validate.field).string.well_known_regex = 2]; + /// } + /// ``` + /// + /// #### KnownRegex + /// + /// `well_known_regex` contains some well-known patterns. + /// + /// | Name | Number | Description | + /// |-------------------------------|--------|-------------------------------------------| + /// | KNOWN_REGEX_UNSPECIFIED | 0 | | + /// | KNOWN_REGEX_HTTP_HEADER_NAME | 1 | HTTP header name as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2) | + /// | KNOWN_REGEX_HTTP_HEADER_VALUE | 2 | HTTP header value as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2.4) | + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.KnownRegex WellKnownRegex { + get { return HasWellKnownRegex ? (global::Buf.Validate.KnownRegex) wellKnown_ : global::Buf.Validate.KnownRegex.Unspecified; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.WellKnownRegex; + } + } + /// Gets whether the "well_known_regex" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasWellKnownRegex { + get { return wellKnownCase_ == WellKnownOneofCase.WellKnownRegex; } + } + /// Clears the value of the oneof if it's currently set to "well_known_regex" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearWellKnownRegex() { + if (HasWellKnownRegex) { + ClearWellKnown(); + } + } + + /// Field number for the "strict" field. + public const int StrictFieldNumber = 25; + private readonly static bool StrictDefaultValue = false; + + private bool strict_; + /// + /// This applies to regexes `HTTP_HEADER_NAME` and `HTTP_HEADER_VALUE` to + /// enable strict header validation. By default, this is true, and HTTP header + /// validations are [RFC-compliant](https://tools.ietf.org/html/rfc7230#section-3). Setting to false will enable looser + /// validations that only disallow `\r\n\0` characters, which can be used to + /// bypass header matching rules. + /// + /// ```proto + /// message MyString { + /// // The field `value` must have be a valid HTTP headers, but not enforced with strict rules. + /// string value = 1 [(buf.validate.field).string.strict = false]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Strict { + get { if ((_hasBits0 & 64) != 0) { return strict_; } else { return StrictDefaultValue; } } + set { + _hasBits0 |= 64; + strict_ = value; + } + } + /// Gets whether the "strict" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasStrict { + get { return (_hasBits0 & 64) != 0; } + } + /// Clears the value of the "strict" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearStrict() { + _hasBits0 &= ~64; + } + + private object wellKnown_; + /// Enum of possible cases for the "well_known" oneof. + public enum WellKnownOneofCase { + None = 0, + Email = 12, + Hostname = 13, + Ip = 14, + Ipv4 = 15, + Ipv6 = 16, + Uri = 17, + UriRef = 18, + Address = 21, + Uuid = 22, + IpWithPrefixlen = 26, + Ipv4WithPrefixlen = 27, + Ipv6WithPrefixlen = 28, + IpPrefix = 29, + Ipv4Prefix = 30, + Ipv6Prefix = 31, + WellKnownRegex = 24, + } + private WellKnownOneofCase wellKnownCase_ = WellKnownOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WellKnownOneofCase WellKnownCase { + get { return wellKnownCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearWellKnown() { + wellKnownCase_ = WellKnownOneofCase.None; + wellKnown_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as StringRules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(StringRules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (Len != other.Len) return false; + if (MinLen != other.MinLen) return false; + if (MaxLen != other.MaxLen) return false; + if (LenBytes != other.LenBytes) return false; + if (MinBytes != other.MinBytes) return false; + if (MaxBytes != other.MaxBytes) return false; + if (Pattern != other.Pattern) return false; + if (Prefix != other.Prefix) return false; + if (Suffix != other.Suffix) return false; + if (Contains != other.Contains) return false; + if (NotContains != other.NotContains) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (Email != other.Email) return false; + if (Hostname != other.Hostname) return false; + if (Ip != other.Ip) return false; + if (Ipv4 != other.Ipv4) return false; + if (Ipv6 != other.Ipv6) return false; + if (Uri != other.Uri) return false; + if (UriRef != other.UriRef) return false; + if (Address != other.Address) return false; + if (Uuid != other.Uuid) return false; + if (IpWithPrefixlen != other.IpWithPrefixlen) return false; + if (Ipv4WithPrefixlen != other.Ipv4WithPrefixlen) return false; + if (Ipv6WithPrefixlen != other.Ipv6WithPrefixlen) return false; + if (IpPrefix != other.IpPrefix) return false; + if (Ipv4Prefix != other.Ipv4Prefix) return false; + if (Ipv6Prefix != other.Ipv6Prefix) return false; + if (WellKnownRegex != other.WellKnownRegex) return false; + if (Strict != other.Strict) return false; + if (WellKnownCase != other.WellKnownCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasLen) hash ^= Len.GetHashCode(); + if (HasMinLen) hash ^= MinLen.GetHashCode(); + if (HasMaxLen) hash ^= MaxLen.GetHashCode(); + if (HasLenBytes) hash ^= LenBytes.GetHashCode(); + if (HasMinBytes) hash ^= MinBytes.GetHashCode(); + if (HasMaxBytes) hash ^= MaxBytes.GetHashCode(); + if (HasPattern) hash ^= Pattern.GetHashCode(); + if (HasPrefix) hash ^= Prefix.GetHashCode(); + if (HasSuffix) hash ^= Suffix.GetHashCode(); + if (HasContains) hash ^= Contains.GetHashCode(); + if (HasNotContains) hash ^= NotContains.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + if (HasEmail) hash ^= Email.GetHashCode(); + if (HasHostname) hash ^= Hostname.GetHashCode(); + if (HasIp) hash ^= Ip.GetHashCode(); + if (HasIpv4) hash ^= Ipv4.GetHashCode(); + if (HasIpv6) hash ^= Ipv6.GetHashCode(); + if (HasUri) hash ^= Uri.GetHashCode(); + if (HasUriRef) hash ^= UriRef.GetHashCode(); + if (HasAddress) hash ^= Address.GetHashCode(); + if (HasUuid) hash ^= Uuid.GetHashCode(); + if (HasIpWithPrefixlen) hash ^= IpWithPrefixlen.GetHashCode(); + if (HasIpv4WithPrefixlen) hash ^= Ipv4WithPrefixlen.GetHashCode(); + if (HasIpv6WithPrefixlen) hash ^= Ipv6WithPrefixlen.GetHashCode(); + if (HasIpPrefix) hash ^= IpPrefix.GetHashCode(); + if (HasIpv4Prefix) hash ^= Ipv4Prefix.GetHashCode(); + if (HasIpv6Prefix) hash ^= Ipv6Prefix.GetHashCode(); + if (HasWellKnownRegex) hash ^= WellKnownRegex.GetHashCode(); + if (HasStrict) hash ^= Strict.GetHashCode(); + hash ^= (int) wellKnownCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(10); + output.WriteString(Const); + } + if (HasMinLen) { + output.WriteRawTag(16); + output.WriteUInt64(MinLen); + } + if (HasMaxLen) { + output.WriteRawTag(24); + output.WriteUInt64(MaxLen); + } + if (HasMinBytes) { + output.WriteRawTag(32); + output.WriteUInt64(MinBytes); + } + if (HasMaxBytes) { + output.WriteRawTag(40); + output.WriteUInt64(MaxBytes); + } + if (HasPattern) { + output.WriteRawTag(50); + output.WriteString(Pattern); + } + if (HasPrefix) { + output.WriteRawTag(58); + output.WriteString(Prefix); + } + if (HasSuffix) { + output.WriteRawTag(66); + output.WriteString(Suffix); + } + if (HasContains) { + output.WriteRawTag(74); + output.WriteString(Contains); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (HasEmail) { + output.WriteRawTag(96); + output.WriteBool(Email); + } + if (HasHostname) { + output.WriteRawTag(104); + output.WriteBool(Hostname); + } + if (HasIp) { + output.WriteRawTag(112); + output.WriteBool(Ip); + } + if (HasIpv4) { + output.WriteRawTag(120); + output.WriteBool(Ipv4); + } + if (HasIpv6) { + output.WriteRawTag(128, 1); + output.WriteBool(Ipv6); + } + if (HasUri) { + output.WriteRawTag(136, 1); + output.WriteBool(Uri); + } + if (HasUriRef) { + output.WriteRawTag(144, 1); + output.WriteBool(UriRef); + } + if (HasLen) { + output.WriteRawTag(152, 1); + output.WriteUInt64(Len); + } + if (HasLenBytes) { + output.WriteRawTag(160, 1); + output.WriteUInt64(LenBytes); + } + if (HasAddress) { + output.WriteRawTag(168, 1); + output.WriteBool(Address); + } + if (HasUuid) { + output.WriteRawTag(176, 1); + output.WriteBool(Uuid); + } + if (HasNotContains) { + output.WriteRawTag(186, 1); + output.WriteString(NotContains); + } + if (HasWellKnownRegex) { + output.WriteRawTag(192, 1); + output.WriteEnum((int) WellKnownRegex); + } + if (HasStrict) { + output.WriteRawTag(200, 1); + output.WriteBool(Strict); + } + if (HasIpWithPrefixlen) { + output.WriteRawTag(208, 1); + output.WriteBool(IpWithPrefixlen); + } + if (HasIpv4WithPrefixlen) { + output.WriteRawTag(216, 1); + output.WriteBool(Ipv4WithPrefixlen); + } + if (HasIpv6WithPrefixlen) { + output.WriteRawTag(224, 1); + output.WriteBool(Ipv6WithPrefixlen); + } + if (HasIpPrefix) { + output.WriteRawTag(232, 1); + output.WriteBool(IpPrefix); + } + if (HasIpv4Prefix) { + output.WriteRawTag(240, 1); + output.WriteBool(Ipv4Prefix); + } + if (HasIpv6Prefix) { + output.WriteRawTag(248, 1); + output.WriteBool(Ipv6Prefix); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(10); + output.WriteString(Const); + } + if (HasMinLen) { + output.WriteRawTag(16); + output.WriteUInt64(MinLen); + } + if (HasMaxLen) { + output.WriteRawTag(24); + output.WriteUInt64(MaxLen); + } + if (HasMinBytes) { + output.WriteRawTag(32); + output.WriteUInt64(MinBytes); + } + if (HasMaxBytes) { + output.WriteRawTag(40); + output.WriteUInt64(MaxBytes); + } + if (HasPattern) { + output.WriteRawTag(50); + output.WriteString(Pattern); + } + if (HasPrefix) { + output.WriteRawTag(58); + output.WriteString(Prefix); + } + if (HasSuffix) { + output.WriteRawTag(66); + output.WriteString(Suffix); + } + if (HasContains) { + output.WriteRawTag(74); + output.WriteString(Contains); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (HasEmail) { + output.WriteRawTag(96); + output.WriteBool(Email); + } + if (HasHostname) { + output.WriteRawTag(104); + output.WriteBool(Hostname); + } + if (HasIp) { + output.WriteRawTag(112); + output.WriteBool(Ip); + } + if (HasIpv4) { + output.WriteRawTag(120); + output.WriteBool(Ipv4); + } + if (HasIpv6) { + output.WriteRawTag(128, 1); + output.WriteBool(Ipv6); + } + if (HasUri) { + output.WriteRawTag(136, 1); + output.WriteBool(Uri); + } + if (HasUriRef) { + output.WriteRawTag(144, 1); + output.WriteBool(UriRef); + } + if (HasLen) { + output.WriteRawTag(152, 1); + output.WriteUInt64(Len); + } + if (HasLenBytes) { + output.WriteRawTag(160, 1); + output.WriteUInt64(LenBytes); + } + if (HasAddress) { + output.WriteRawTag(168, 1); + output.WriteBool(Address); + } + if (HasUuid) { + output.WriteRawTag(176, 1); + output.WriteBool(Uuid); + } + if (HasNotContains) { + output.WriteRawTag(186, 1); + output.WriteString(NotContains); + } + if (HasWellKnownRegex) { + output.WriteRawTag(192, 1); + output.WriteEnum((int) WellKnownRegex); + } + if (HasStrict) { + output.WriteRawTag(200, 1); + output.WriteBool(Strict); + } + if (HasIpWithPrefixlen) { + output.WriteRawTag(208, 1); + output.WriteBool(IpWithPrefixlen); + } + if (HasIpv4WithPrefixlen) { + output.WriteRawTag(216, 1); + output.WriteBool(Ipv4WithPrefixlen); + } + if (HasIpv6WithPrefixlen) { + output.WriteRawTag(224, 1); + output.WriteBool(Ipv6WithPrefixlen); + } + if (HasIpPrefix) { + output.WriteRawTag(232, 1); + output.WriteBool(IpPrefix); + } + if (HasIpv4Prefix) { + output.WriteRawTag(240, 1); + output.WriteBool(Ipv4Prefix); + } + if (HasIpv6Prefix) { + output.WriteRawTag(248, 1); + output.WriteBool(Ipv6Prefix); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Const); + } + if (HasLen) { + size += 2 + pb::CodedOutputStream.ComputeUInt64Size(Len); + } + if (HasMinLen) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(MinLen); + } + if (HasMaxLen) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(MaxLen); + } + if (HasLenBytes) { + size += 2 + pb::CodedOutputStream.ComputeUInt64Size(LenBytes); + } + if (HasMinBytes) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(MinBytes); + } + if (HasMaxBytes) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(MaxBytes); + } + if (HasPattern) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Pattern); + } + if (HasPrefix) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Prefix); + } + if (HasSuffix) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Suffix); + } + if (HasContains) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Contains); + } + if (HasNotContains) { + size += 2 + pb::CodedOutputStream.ComputeStringSize(NotContains); + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (HasEmail) { + size += 1 + 1; + } + if (HasHostname) { + size += 1 + 1; + } + if (HasIp) { + size += 1 + 1; + } + if (HasIpv4) { + size += 1 + 1; + } + if (HasIpv6) { + size += 2 + 1; + } + if (HasUri) { + size += 2 + 1; + } + if (HasUriRef) { + size += 2 + 1; + } + if (HasAddress) { + size += 2 + 1; + } + if (HasUuid) { + size += 2 + 1; + } + if (HasIpWithPrefixlen) { + size += 2 + 1; + } + if (HasIpv4WithPrefixlen) { + size += 2 + 1; + } + if (HasIpv6WithPrefixlen) { + size += 2 + 1; + } + if (HasIpPrefix) { + size += 2 + 1; + } + if (HasIpv4Prefix) { + size += 2 + 1; + } + if (HasIpv6Prefix) { + size += 2 + 1; + } + if (HasWellKnownRegex) { + size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) WellKnownRegex); + } + if (HasStrict) { + size += 2 + 1; + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(StringRules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + if (other.HasLen) { + Len = other.Len; + } + if (other.HasMinLen) { + MinLen = other.MinLen; + } + if (other.HasMaxLen) { + MaxLen = other.MaxLen; + } + if (other.HasLenBytes) { + LenBytes = other.LenBytes; + } + if (other.HasMinBytes) { + MinBytes = other.MinBytes; + } + if (other.HasMaxBytes) { + MaxBytes = other.MaxBytes; + } + if (other.HasPattern) { + Pattern = other.Pattern; + } + if (other.HasPrefix) { + Prefix = other.Prefix; + } + if (other.HasSuffix) { + Suffix = other.Suffix; + } + if (other.HasContains) { + Contains = other.Contains; + } + if (other.HasNotContains) { + NotContains = other.NotContains; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + if (other.HasStrict) { + Strict = other.Strict; + } + switch (other.WellKnownCase) { + case WellKnownOneofCase.Email: + Email = other.Email; + break; + case WellKnownOneofCase.Hostname: + Hostname = other.Hostname; + break; + case WellKnownOneofCase.Ip: + Ip = other.Ip; + break; + case WellKnownOneofCase.Ipv4: + Ipv4 = other.Ipv4; + break; + case WellKnownOneofCase.Ipv6: + Ipv6 = other.Ipv6; + break; + case WellKnownOneofCase.Uri: + Uri = other.Uri; + break; + case WellKnownOneofCase.UriRef: + UriRef = other.UriRef; + break; + case WellKnownOneofCase.Address: + Address = other.Address; + break; + case WellKnownOneofCase.Uuid: + Uuid = other.Uuid; + break; + case WellKnownOneofCase.IpWithPrefixlen: + IpWithPrefixlen = other.IpWithPrefixlen; + break; + case WellKnownOneofCase.Ipv4WithPrefixlen: + Ipv4WithPrefixlen = other.Ipv4WithPrefixlen; + break; + case WellKnownOneofCase.Ipv6WithPrefixlen: + Ipv6WithPrefixlen = other.Ipv6WithPrefixlen; + break; + case WellKnownOneofCase.IpPrefix: + IpPrefix = other.IpPrefix; + break; + case WellKnownOneofCase.Ipv4Prefix: + Ipv4Prefix = other.Ipv4Prefix; + break; + case WellKnownOneofCase.Ipv6Prefix: + Ipv6Prefix = other.Ipv6Prefix; + break; + case WellKnownOneofCase.WellKnownRegex: + WellKnownRegex = other.WellKnownRegex; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Const = input.ReadString(); + break; + } + case 16: { + MinLen = input.ReadUInt64(); + break; + } + case 24: { + MaxLen = input.ReadUInt64(); + break; + } + case 32: { + MinBytes = input.ReadUInt64(); + break; + } + case 40: { + MaxBytes = input.ReadUInt64(); + break; + } + case 50: { + Pattern = input.ReadString(); + break; + } + case 58: { + Prefix = input.ReadString(); + break; + } + case 66: { + Suffix = input.ReadString(); + break; + } + case 74: { + Contains = input.ReadString(); + break; + } + case 82: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 90: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + case 96: { + Email = input.ReadBool(); + break; + } + case 104: { + Hostname = input.ReadBool(); + break; + } + case 112: { + Ip = input.ReadBool(); + break; + } + case 120: { + Ipv4 = input.ReadBool(); + break; + } + case 128: { + Ipv6 = input.ReadBool(); + break; + } + case 136: { + Uri = input.ReadBool(); + break; + } + case 144: { + UriRef = input.ReadBool(); + break; + } + case 152: { + Len = input.ReadUInt64(); + break; + } + case 160: { + LenBytes = input.ReadUInt64(); + break; + } + case 168: { + Address = input.ReadBool(); + break; + } + case 176: { + Uuid = input.ReadBool(); + break; + } + case 186: { + NotContains = input.ReadString(); + break; + } + case 192: { + wellKnown_ = input.ReadEnum(); + wellKnownCase_ = WellKnownOneofCase.WellKnownRegex; + break; + } + case 200: { + Strict = input.ReadBool(); + break; + } + case 208: { + IpWithPrefixlen = input.ReadBool(); + break; + } + case 216: { + Ipv4WithPrefixlen = input.ReadBool(); + break; + } + case 224: { + Ipv6WithPrefixlen = input.ReadBool(); + break; + } + case 232: { + IpPrefix = input.ReadBool(); + break; + } + case 240: { + Ipv4Prefix = input.ReadBool(); + break; + } + case 248: { + Ipv6Prefix = input.ReadBool(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Const = input.ReadString(); + break; + } + case 16: { + MinLen = input.ReadUInt64(); + break; + } + case 24: { + MaxLen = input.ReadUInt64(); + break; + } + case 32: { + MinBytes = input.ReadUInt64(); + break; + } + case 40: { + MaxBytes = input.ReadUInt64(); + break; + } + case 50: { + Pattern = input.ReadString(); + break; + } + case 58: { + Prefix = input.ReadString(); + break; + } + case 66: { + Suffix = input.ReadString(); + break; + } + case 74: { + Contains = input.ReadString(); + break; + } + case 82: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 90: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + case 96: { + Email = input.ReadBool(); + break; + } + case 104: { + Hostname = input.ReadBool(); + break; + } + case 112: { + Ip = input.ReadBool(); + break; + } + case 120: { + Ipv4 = input.ReadBool(); + break; + } + case 128: { + Ipv6 = input.ReadBool(); + break; + } + case 136: { + Uri = input.ReadBool(); + break; + } + case 144: { + UriRef = input.ReadBool(); + break; + } + case 152: { + Len = input.ReadUInt64(); + break; + } + case 160: { + LenBytes = input.ReadUInt64(); + break; + } + case 168: { + Address = input.ReadBool(); + break; + } + case 176: { + Uuid = input.ReadBool(); + break; + } + case 186: { + NotContains = input.ReadString(); + break; + } + case 192: { + wellKnown_ = input.ReadEnum(); + wellKnownCase_ = WellKnownOneofCase.WellKnownRegex; + break; + } + case 200: { + Strict = input.ReadBool(); + break; + } + case 208: { + IpWithPrefixlen = input.ReadBool(); + break; + } + case 216: { + Ipv4WithPrefixlen = input.ReadBool(); + break; + } + case 224: { + Ipv6WithPrefixlen = input.ReadBool(); + break; + } + case 232: { + IpPrefix = input.ReadBool(); + break; + } + case 240: { + Ipv4Prefix = input.ReadBool(); + break; + } + case 248: { + Ipv6Prefix = input.ReadBool(); + break; + } + } + } + } + #endif + + } + + /// + /// BytesRules describe the constraints applied to `bytes` values. These rules + /// may also be applied to the `google.protobuf.BytesValue` Well-Known-Type. + /// + public sealed partial class BytesRules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new BytesRules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[17]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BytesRules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BytesRules(BytesRules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + len_ = other.len_; + minLen_ = other.minLen_; + maxLen_ = other.maxLen_; + pattern_ = other.pattern_; + prefix_ = other.prefix_; + suffix_ = other.suffix_; + contains_ = other.contains_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + switch (other.WellKnownCase) { + case WellKnownOneofCase.Ip: + Ip = other.Ip; + break; + case WellKnownOneofCase.Ipv4: + Ipv4 = other.Ipv4; + break; + case WellKnownOneofCase.Ipv6: + Ipv6 = other.Ipv6; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public BytesRules Clone() { + return new BytesRules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static pb::ByteString ConstDefaultValue = pb::ByteString.Empty; + + private pb::ByteString const_; + /// + /// `const` requires the field value to exactly match the specified bytes + /// value. If the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MyBytes { + /// // value must be "\x01\x02\x03\x04" + /// bytes value = 1 [(buf.validate.field).bytes.const = "\x01\x02\x03\x04"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pb::ByteString Const { + get { return const_ ?? ConstDefaultValue; } + set { + const_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return const_ != null; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + const_ = null; + } + + /// Field number for the "len" field. + public const int LenFieldNumber = 13; + private readonly static ulong LenDefaultValue = 0UL; + + private ulong len_; + /// + /// `len` requires the field value to have the specified length in bytes. + /// If the field value doesn't match, an error message is generated. + /// + /// ```proto + /// message MyBytes { + /// // value length must be 4 bytes. + /// optional bytes value = 1 [(buf.validate.field).bytes.len = 4]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong Len { + get { if ((_hasBits0 & 4) != 0) { return len_; } else { return LenDefaultValue; } } + set { + _hasBits0 |= 4; + len_ = value; + } + } + /// Gets whether the "len" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLen { + get { return (_hasBits0 & 4) != 0; } + } + /// Clears the value of the "len" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLen() { + _hasBits0 &= ~4; + } + + /// Field number for the "min_len" field. + public const int MinLenFieldNumber = 2; + private readonly static ulong MinLenDefaultValue = 0UL; + + private ulong minLen_; + /// + /// `min_len` requires the field value to have at least the specified minimum + /// length in bytes. + /// If the field value doesn't meet the requirement, an error message is generated. + /// + /// ```proto + /// message MyBytes { + /// // value length must be at least 2 bytes. + /// optional bytes value = 1 [(buf.validate.field).bytes.min_len = 2]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong MinLen { + get { if ((_hasBits0 & 1) != 0) { return minLen_; } else { return MinLenDefaultValue; } } + set { + _hasBits0 |= 1; + minLen_ = value; + } + } + /// Gets whether the "min_len" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasMinLen { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "min_len" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMinLen() { + _hasBits0 &= ~1; + } + + /// Field number for the "max_len" field. + public const int MaxLenFieldNumber = 3; + private readonly static ulong MaxLenDefaultValue = 0UL; + + private ulong maxLen_; + /// + /// `max_len` requires the field value to have at most the specified maximum + /// length in bytes. + /// If the field value exceeds the requirement, an error message is generated. + /// + /// ```proto + /// message MyBytes { + /// // value must be at most 6 bytes. + /// optional bytes value = 1 [(buf.validate.field).bytes.max_len = 6]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong MaxLen { + get { if ((_hasBits0 & 2) != 0) { return maxLen_; } else { return MaxLenDefaultValue; } } + set { + _hasBits0 |= 2; + maxLen_ = value; + } + } + /// Gets whether the "max_len" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasMaxLen { + get { return (_hasBits0 & 2) != 0; } + } + /// Clears the value of the "max_len" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMaxLen() { + _hasBits0 &= ~2; + } + + /// Field number for the "pattern" field. + public const int PatternFieldNumber = 4; + private readonly static string PatternDefaultValue = ""; + + private string pattern_; + /// + /// `pattern` requires the field value to match the specified regular + /// expression ([RE2 syntax](https://github.com/google/re2/wiki/Syntax)). + /// The value of the field must be valid UTF-8 or validation will fail with a + /// runtime error. + /// If the field value doesn't match the pattern, an error message is generated. + /// + /// ```proto + /// message MyBytes { + /// // value must match regex pattern "^[a-zA-Z0-9]+$". + /// optional bytes value = 1 [(buf.validate.field).bytes.pattern = "^[a-zA-Z0-9]+$"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Pattern { + get { return pattern_ ?? PatternDefaultValue; } + set { + pattern_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "pattern" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPattern { + get { return pattern_ != null; } + } + /// Clears the value of the "pattern" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPattern() { + pattern_ = null; + } + + /// Field number for the "prefix" field. + public const int PrefixFieldNumber = 5; + private readonly static pb::ByteString PrefixDefaultValue = pb::ByteString.Empty; + + private pb::ByteString prefix_; + /// + /// `prefix` requires the field value to have the specified bytes at the + /// beginning of the string. + /// If the field value doesn't meet the requirement, an error message is generated. + /// + /// ```proto + /// message MyBytes { + /// // value does not have prefix \x01\x02 + /// optional bytes value = 1 [(buf.validate.field).bytes.prefix = "\x01\x02"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pb::ByteString Prefix { + get { return prefix_ ?? PrefixDefaultValue; } + set { + prefix_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "prefix" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasPrefix { + get { return prefix_ != null; } + } + /// Clears the value of the "prefix" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearPrefix() { + prefix_ = null; + } + + /// Field number for the "suffix" field. + public const int SuffixFieldNumber = 6; + private readonly static pb::ByteString SuffixDefaultValue = pb::ByteString.Empty; + + private pb::ByteString suffix_; + /// + /// `suffix` requires the field value to have the specified bytes at the end + /// of the string. + /// If the field value doesn't meet the requirement, an error message is generated. + /// + /// ```proto + /// message MyBytes { + /// // value does not have suffix \x03\x04 + /// optional bytes value = 1 [(buf.validate.field).bytes.suffix = "\x03\x04"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pb::ByteString Suffix { + get { return suffix_ ?? SuffixDefaultValue; } + set { + suffix_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "suffix" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasSuffix { + get { return suffix_ != null; } + } + /// Clears the value of the "suffix" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearSuffix() { + suffix_ = null; + } + + /// Field number for the "contains" field. + public const int ContainsFieldNumber = 7; + private readonly static pb::ByteString ContainsDefaultValue = pb::ByteString.Empty; + + private pb::ByteString contains_; + /// + /// `contains` requires the field value to have the specified bytes anywhere in + /// the string. + /// If the field value doesn't meet the requirement, an error message is generated. + /// + /// ```protobuf + /// message MyBytes { + /// // value does not contain \x02\x03 + /// optional bytes value = 1 [(buf.validate.field).bytes.contains = "\x02\x03"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pb::ByteString Contains { + get { return contains_ ?? ContainsDefaultValue; } + set { + contains_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Gets whether the "contains" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasContains { + get { return contains_ != null; } + } + /// Clears the value of the "contains" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearContains() { + contains_ = null; + } + + /// Field number for the "in" field. + public const int InFieldNumber = 8; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForBytes(66); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the specified + /// values. If the field value doesn't match any of the specified values, an + /// error message is generated. + /// + /// ```protobuf + /// message MyBytes { + /// // value must in ["\x01\x02", "\x02\x03", "\x03\x04"] + /// optional bytes value = 1 [(buf.validate.field).bytes.in = {"\x01\x02", "\x02\x03", "\x03\x04"}]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 9; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForBytes(74); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to be not equal to any of the specified + /// values. + /// If the field value matches any of the specified values, an error message is + /// generated. + /// + /// ```proto + /// message MyBytes { + /// // value must not in ["\x01\x02", "\x02\x03", "\x03\x04"] + /// optional bytes value = 1 [(buf.validate.field).bytes.not_in = {"\x01\x02", "\x02\x03", "\x03\x04"}]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + /// Field number for the "ip" field. + public const int IpFieldNumber = 10; + /// + /// `ip` ensures that the field `value` is a valid IP address (v4 or v6) in byte format. + /// If the field value doesn't meet this constraint, an error message is generated. + /// + /// ```proto + /// message MyBytes { + /// // value must be a valid IP address + /// optional bytes value = 1 [(buf.validate.field).bytes.ip = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Ip { + get { return HasIp ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Ip; + } + } + /// Gets whether the "ip" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIp { + get { return wellKnownCase_ == WellKnownOneofCase.Ip; } + } + /// Clears the value of the oneof if it's currently set to "ip" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIp() { + if (HasIp) { + ClearWellKnown(); + } + } + + /// Field number for the "ipv4" field. + public const int Ipv4FieldNumber = 11; + /// + /// `ipv4` ensures that the field `value` is a valid IPv4 address in byte format. + /// If the field value doesn't meet this constraint, an error message is generated. + /// + /// ```proto + /// message MyBytes { + /// // value must be a valid IPv4 address + /// optional bytes value = 1 [(buf.validate.field).bytes.ipv4 = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Ipv4 { + get { return HasIpv4 ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Ipv4; + } + } + /// Gets whether the "ipv4" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIpv4 { + get { return wellKnownCase_ == WellKnownOneofCase.Ipv4; } + } + /// Clears the value of the oneof if it's currently set to "ipv4" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIpv4() { + if (HasIpv4) { + ClearWellKnown(); + } + } + + /// Field number for the "ipv6" field. + public const int Ipv6FieldNumber = 12; + /// + /// `ipv6` ensures that the field `value` is a valid IPv6 address in byte format. + /// If the field value doesn't meet this constraint, an error message is generated. + /// ```proto + /// message MyBytes { + /// // value must be a valid IPv6 address + /// optional bytes value = 1 [(buf.validate.field).bytes.ipv6 = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Ipv6 { + get { return HasIpv6 ? (bool) wellKnown_ : false; } + set { + wellKnown_ = value; + wellKnownCase_ = WellKnownOneofCase.Ipv6; + } + } + /// Gets whether the "ipv6" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasIpv6 { + get { return wellKnownCase_ == WellKnownOneofCase.Ipv6; } + } + /// Clears the value of the oneof if it's currently set to "ipv6" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearIpv6() { + if (HasIpv6) { + ClearWellKnown(); + } + } + + private object wellKnown_; + /// Enum of possible cases for the "well_known" oneof. + public enum WellKnownOneofCase { + None = 0, + Ip = 10, + Ipv4 = 11, + Ipv6 = 12, + } + private WellKnownOneofCase wellKnownCase_ = WellKnownOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public WellKnownOneofCase WellKnownCase { + get { return wellKnownCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearWellKnown() { + wellKnownCase_ = WellKnownOneofCase.None; + wellKnown_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as BytesRules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(BytesRules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (Len != other.Len) return false; + if (MinLen != other.MinLen) return false; + if (MaxLen != other.MaxLen) return false; + if (Pattern != other.Pattern) return false; + if (Prefix != other.Prefix) return false; + if (Suffix != other.Suffix) return false; + if (Contains != other.Contains) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (Ip != other.Ip) return false; + if (Ipv4 != other.Ipv4) return false; + if (Ipv6 != other.Ipv6) return false; + if (WellKnownCase != other.WellKnownCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasLen) hash ^= Len.GetHashCode(); + if (HasMinLen) hash ^= MinLen.GetHashCode(); + if (HasMaxLen) hash ^= MaxLen.GetHashCode(); + if (HasPattern) hash ^= Pattern.GetHashCode(); + if (HasPrefix) hash ^= Prefix.GetHashCode(); + if (HasSuffix) hash ^= Suffix.GetHashCode(); + if (HasContains) hash ^= Contains.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + if (HasIp) hash ^= Ip.GetHashCode(); + if (HasIpv4) hash ^= Ipv4.GetHashCode(); + if (HasIpv6) hash ^= Ipv6.GetHashCode(); + hash ^= (int) wellKnownCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(10); + output.WriteBytes(Const); + } + if (HasMinLen) { + output.WriteRawTag(16); + output.WriteUInt64(MinLen); + } + if (HasMaxLen) { + output.WriteRawTag(24); + output.WriteUInt64(MaxLen); + } + if (HasPattern) { + output.WriteRawTag(34); + output.WriteString(Pattern); + } + if (HasPrefix) { + output.WriteRawTag(42); + output.WriteBytes(Prefix); + } + if (HasSuffix) { + output.WriteRawTag(50); + output.WriteBytes(Suffix); + } + if (HasContains) { + output.WriteRawTag(58); + output.WriteBytes(Contains); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (HasIp) { + output.WriteRawTag(80); + output.WriteBool(Ip); + } + if (HasIpv4) { + output.WriteRawTag(88); + output.WriteBool(Ipv4); + } + if (HasIpv6) { + output.WriteRawTag(96); + output.WriteBool(Ipv6); + } + if (HasLen) { + output.WriteRawTag(104); + output.WriteUInt64(Len); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(10); + output.WriteBytes(Const); + } + if (HasMinLen) { + output.WriteRawTag(16); + output.WriteUInt64(MinLen); + } + if (HasMaxLen) { + output.WriteRawTag(24); + output.WriteUInt64(MaxLen); + } + if (HasPattern) { + output.WriteRawTag(34); + output.WriteString(Pattern); + } + if (HasPrefix) { + output.WriteRawTag(42); + output.WriteBytes(Prefix); + } + if (HasSuffix) { + output.WriteRawTag(50); + output.WriteBytes(Suffix); + } + if (HasContains) { + output.WriteRawTag(58); + output.WriteBytes(Contains); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (HasIp) { + output.WriteRawTag(80); + output.WriteBool(Ip); + } + if (HasIpv4) { + output.WriteRawTag(88); + output.WriteBool(Ipv4); + } + if (HasIpv6) { + output.WriteRawTag(96); + output.WriteBool(Ipv6); + } + if (HasLen) { + output.WriteRawTag(104); + output.WriteUInt64(Len); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + pb::CodedOutputStream.ComputeBytesSize(Const); + } + if (HasLen) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Len); + } + if (HasMinLen) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(MinLen); + } + if (HasMaxLen) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(MaxLen); + } + if (HasPattern) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Pattern); + } + if (HasPrefix) { + size += 1 + pb::CodedOutputStream.ComputeBytesSize(Prefix); + } + if (HasSuffix) { + size += 1 + pb::CodedOutputStream.ComputeBytesSize(Suffix); + } + if (HasContains) { + size += 1 + pb::CodedOutputStream.ComputeBytesSize(Contains); + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (HasIp) { + size += 1 + 1; + } + if (HasIpv4) { + size += 1 + 1; + } + if (HasIpv6) { + size += 1 + 1; + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(BytesRules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + if (other.HasLen) { + Len = other.Len; + } + if (other.HasMinLen) { + MinLen = other.MinLen; + } + if (other.HasMaxLen) { + MaxLen = other.MaxLen; + } + if (other.HasPattern) { + Pattern = other.Pattern; + } + if (other.HasPrefix) { + Prefix = other.Prefix; + } + if (other.HasSuffix) { + Suffix = other.Suffix; + } + if (other.HasContains) { + Contains = other.Contains; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + switch (other.WellKnownCase) { + case WellKnownOneofCase.Ip: + Ip = other.Ip; + break; + case WellKnownOneofCase.Ipv4: + Ipv4 = other.Ipv4; + break; + case WellKnownOneofCase.Ipv6: + Ipv6 = other.Ipv6; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Const = input.ReadBytes(); + break; + } + case 16: { + MinLen = input.ReadUInt64(); + break; + } + case 24: { + MaxLen = input.ReadUInt64(); + break; + } + case 34: { + Pattern = input.ReadString(); + break; + } + case 42: { + Prefix = input.ReadBytes(); + break; + } + case 50: { + Suffix = input.ReadBytes(); + break; + } + case 58: { + Contains = input.ReadBytes(); + break; + } + case 66: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 74: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + case 80: { + Ip = input.ReadBool(); + break; + } + case 88: { + Ipv4 = input.ReadBool(); + break; + } + case 96: { + Ipv6 = input.ReadBool(); + break; + } + case 104: { + Len = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Const = input.ReadBytes(); + break; + } + case 16: { + MinLen = input.ReadUInt64(); + break; + } + case 24: { + MaxLen = input.ReadUInt64(); + break; + } + case 34: { + Pattern = input.ReadString(); + break; + } + case 42: { + Prefix = input.ReadBytes(); + break; + } + case 50: { + Suffix = input.ReadBytes(); + break; + } + case 58: { + Contains = input.ReadBytes(); + break; + } + case 66: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 74: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + case 80: { + Ip = input.ReadBool(); + break; + } + case 88: { + Ipv4 = input.ReadBool(); + break; + } + case 96: { + Ipv6 = input.ReadBool(); + break; + } + case 104: { + Len = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + + /// + /// EnumRules describe the constraints applied to `enum` values. + /// + public sealed partial class EnumRules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new EnumRules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[18]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public EnumRules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public EnumRules(EnumRules other) : this() { + _hasBits0 = other._hasBits0; + const_ = other.const_; + definedOnly_ = other.definedOnly_; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public EnumRules Clone() { + return new EnumRules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 1; + private readonly static int ConstDefaultValue = 0; + + private int const_; + /// + /// `const` requires the field value to exactly match the specified enum value. + /// If the field value doesn't match, an error message is generated. + /// + /// ```proto + /// enum MyEnum { + /// MY_ENUM_UNSPECIFIED = 0; + /// MY_ENUM_VALUE1 = 1; + /// MY_ENUM_VALUE2 = 2; + /// } + /// + /// message MyMessage { + /// // The field `value` must be exactly MY_ENUM_VALUE1. + /// MyEnum value = 1 [(buf.validate.field).enum.const = 1]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Const { + get { if ((_hasBits0 & 1) != 0) { return const_; } else { return ConstDefaultValue; } } + set { + _hasBits0 |= 1; + const_ = value; + } + } + /// Gets whether the "const" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasConst { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "const" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearConst() { + _hasBits0 &= ~1; + } + + /// Field number for the "defined_only" field. + public const int DefinedOnlyFieldNumber = 2; + private readonly static bool DefinedOnlyDefaultValue = false; + + private bool definedOnly_; + /// + /// `defined_only` requires the field value to be one of the defined values for + /// this enum, failing on any undefined value. + /// + /// ```proto + /// enum MyEnum { + /// MY_ENUM_UNSPECIFIED = 0; + /// MY_ENUM_VALUE1 = 1; + /// MY_ENUM_VALUE2 = 2; + /// } + /// + /// message MyMessage { + /// // The field `value` must be a defined value of MyEnum. + /// MyEnum value = 1 [(buf.validate.field).enum.defined_only = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool DefinedOnly { + get { if ((_hasBits0 & 2) != 0) { return definedOnly_; } else { return DefinedOnlyDefaultValue; } } + set { + _hasBits0 |= 2; + definedOnly_ = value; + } + } + /// Gets whether the "defined_only" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasDefinedOnly { + get { return (_hasBits0 & 2) != 0; } + } + /// Clears the value of the "defined_only" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearDefinedOnly() { + _hasBits0 &= ~2; + } + + /// Field number for the "in" field. + public const int InFieldNumber = 3; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForInt32(26); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field value to be equal to one of the + ///specified enum values. If the field value doesn't match any of the + ///specified values, an error message is generated. + /// + /// ```proto + /// enum MyEnum { + /// MY_ENUM_UNSPECIFIED = 0; + /// MY_ENUM_VALUE1 = 1; + /// MY_ENUM_VALUE2 = 2; + /// } + /// + /// message MyMessage { + /// // The field `value` must be equal to one of the specified values. + /// MyEnum value = 1 [(buf.validate.field).enum = { in: [1, 2]}]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 4; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForInt32(34); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` requires the field value to be not equal to any of the + ///specified enum values. If the field value matches one of the specified + /// values, an error message is generated. + /// + /// ```proto + /// enum MyEnum { + /// MY_ENUM_UNSPECIFIED = 0; + /// MY_ENUM_VALUE1 = 1; + /// MY_ENUM_VALUE2 = 2; + /// } + /// + /// message MyMessage { + /// // The field `value` must not be equal to any of the specified values. + /// MyEnum value = 1 [(buf.validate.field).enum = { not_in: [1, 2]}]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as EnumRules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(EnumRules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Const != other.Const) return false; + if (DefinedOnly != other.DefinedOnly) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasConst) hash ^= Const.GetHashCode(); + if (HasDefinedOnly) hash ^= DefinedOnly.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasConst) { + output.WriteRawTag(8); + output.WriteInt32(Const); + } + if (HasDefinedOnly) { + output.WriteRawTag(16); + output.WriteBool(DefinedOnly); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasConst) { + output.WriteRawTag(8); + output.WriteInt32(Const); + } + if (HasDefinedOnly) { + output.WriteRawTag(16); + output.WriteBool(DefinedOnly); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasConst) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Const); + } + if (HasDefinedOnly) { + size += 1 + 1; + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(EnumRules other) { + if (other == null) { + return; + } + if (other.HasConst) { + Const = other.Const; + } + if (other.HasDefinedOnly) { + DefinedOnly = other.DefinedOnly; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Const = input.ReadInt32(); + break; + } + case 16: { + DefinedOnly = input.ReadBool(); + break; + } + case 26: + case 24: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 34: + case 32: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Const = input.ReadInt32(); + break; + } + case 16: { + DefinedOnly = input.ReadBool(); + break; + } + case 26: + case 24: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 34: + case 32: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// RepeatedRules describe the constraints applied to `repeated` values. + /// + public sealed partial class RepeatedRules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RepeatedRules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[19]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public RepeatedRules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public RepeatedRules(RepeatedRules other) : this() { + _hasBits0 = other._hasBits0; + minItems_ = other.minItems_; + maxItems_ = other.maxItems_; + unique_ = other.unique_; + items_ = other.items_ != null ? other.items_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public RepeatedRules Clone() { + return new RepeatedRules(this); + } + + /// Field number for the "min_items" field. + public const int MinItemsFieldNumber = 1; + private readonly static ulong MinItemsDefaultValue = 0UL; + + private ulong minItems_; + /// + /// `min_items` requires that this field must contain at least the specified + /// minimum number of items. + /// + /// Note that `min_items = 1` is equivalent to setting a field as `required`. + /// + /// ```proto + /// message MyRepeated { + /// // value must contain at least 2 items + /// repeated string value = 1 [(buf.validate.field).repeated.min_items = 2]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong MinItems { + get { if ((_hasBits0 & 1) != 0) { return minItems_; } else { return MinItemsDefaultValue; } } + set { + _hasBits0 |= 1; + minItems_ = value; + } + } + /// Gets whether the "min_items" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasMinItems { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "min_items" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMinItems() { + _hasBits0 &= ~1; + } + + /// Field number for the "max_items" field. + public const int MaxItemsFieldNumber = 2; + private readonly static ulong MaxItemsDefaultValue = 0UL; + + private ulong maxItems_; + /// + /// `max_items` denotes that this field must not exceed a + /// certain number of items as the upper limit. If the field contains more + /// items than specified, an error message will be generated, requiring the + /// field to maintain no more than the specified number of items. + /// + /// ```proto + /// message MyRepeated { + /// // value must contain no more than 3 item(s) + /// repeated string value = 1 [(buf.validate.field).repeated.max_items = 3]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong MaxItems { + get { if ((_hasBits0 & 2) != 0) { return maxItems_; } else { return MaxItemsDefaultValue; } } + set { + _hasBits0 |= 2; + maxItems_ = value; + } + } + /// Gets whether the "max_items" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasMaxItems { + get { return (_hasBits0 & 2) != 0; } + } + /// Clears the value of the "max_items" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMaxItems() { + _hasBits0 &= ~2; + } + + /// Field number for the "unique" field. + public const int UniqueFieldNumber = 3; + private readonly static bool UniqueDefaultValue = false; + + private bool unique_; + /// + /// `unique` indicates that all elements in this field must + /// be unique. This constraint is strictly applicable to scalar and enum + /// types, with message types not being supported. + /// + /// ```proto + /// message MyRepeated { + /// // repeated value must contain unique items + /// repeated string value = 1 [(buf.validate.field).repeated.unique = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Unique { + get { if ((_hasBits0 & 4) != 0) { return unique_; } else { return UniqueDefaultValue; } } + set { + _hasBits0 |= 4; + unique_ = value; + } + } + /// Gets whether the "unique" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasUnique { + get { return (_hasBits0 & 4) != 0; } + } + /// Clears the value of the "unique" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearUnique() { + _hasBits0 &= ~4; + } + + /// Field number for the "items" field. + public const int ItemsFieldNumber = 4; + private global::Buf.Validate.FieldConstraints items_; + /// + /// `items` details the constraints to be applied to each item + /// in the field. Even for repeated message fields, validation is executed + /// against each item unless skip is explicitly specified. + /// + /// ```proto + /// message MyRepeated { + /// // The items in the field `value` must follow the specified constraints. + /// repeated string value = 1 [(buf.validate.field).repeated.items = { + /// string: { + /// min_len: 3 + /// max_len: 10 + /// } + /// }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.FieldConstraints Items { + get { return items_; } + set { + items_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as RepeatedRules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(RepeatedRules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (MinItems != other.MinItems) return false; + if (MaxItems != other.MaxItems) return false; + if (Unique != other.Unique) return false; + if (!object.Equals(Items, other.Items)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasMinItems) hash ^= MinItems.GetHashCode(); + if (HasMaxItems) hash ^= MaxItems.GetHashCode(); + if (HasUnique) hash ^= Unique.GetHashCode(); + if (items_ != null) hash ^= Items.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasMinItems) { + output.WriteRawTag(8); + output.WriteUInt64(MinItems); + } + if (HasMaxItems) { + output.WriteRawTag(16); + output.WriteUInt64(MaxItems); + } + if (HasUnique) { + output.WriteRawTag(24); + output.WriteBool(Unique); + } + if (items_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Items); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasMinItems) { + output.WriteRawTag(8); + output.WriteUInt64(MinItems); + } + if (HasMaxItems) { + output.WriteRawTag(16); + output.WriteUInt64(MaxItems); + } + if (HasUnique) { + output.WriteRawTag(24); + output.WriteBool(Unique); + } + if (items_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Items); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasMinItems) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(MinItems); + } + if (HasMaxItems) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(MaxItems); + } + if (HasUnique) { + size += 1 + 1; + } + if (items_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Items); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(RepeatedRules other) { + if (other == null) { + return; + } + if (other.HasMinItems) { + MinItems = other.MinItems; + } + if (other.HasMaxItems) { + MaxItems = other.MaxItems; + } + if (other.HasUnique) { + Unique = other.Unique; + } + if (other.items_ != null) { + if (items_ == null) { + Items = new global::Buf.Validate.FieldConstraints(); + } + Items.MergeFrom(other.Items); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + MinItems = input.ReadUInt64(); + break; + } + case 16: { + MaxItems = input.ReadUInt64(); + break; + } + case 24: { + Unique = input.ReadBool(); + break; + } + case 34: { + if (items_ == null) { + Items = new global::Buf.Validate.FieldConstraints(); + } + input.ReadMessage(Items); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + MinItems = input.ReadUInt64(); + break; + } + case 16: { + MaxItems = input.ReadUInt64(); + break; + } + case 24: { + Unique = input.ReadBool(); + break; + } + case 34: { + if (items_ == null) { + Items = new global::Buf.Validate.FieldConstraints(); + } + input.ReadMessage(Items); + break; + } + } + } + } + #endif + + } + + /// + /// MapRules describe the constraints applied to `map` values. + /// + public sealed partial class MapRules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MapRules()); + private pb::UnknownFieldSet _unknownFields; + private int _hasBits0; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[20]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public MapRules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public MapRules(MapRules other) : this() { + _hasBits0 = other._hasBits0; + minPairs_ = other.minPairs_; + maxPairs_ = other.maxPairs_; + keys_ = other.keys_ != null ? other.keys_.Clone() : null; + values_ = other.values_ != null ? other.values_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public MapRules Clone() { + return new MapRules(this); + } + + /// Field number for the "min_pairs" field. + public const int MinPairsFieldNumber = 1; + private readonly static ulong MinPairsDefaultValue = 0UL; + + private ulong minPairs_; + /// + ///Specifies the minimum number of key-value pairs allowed. If the field has + /// fewer key-value pairs than specified, an error message is generated. + /// + /// ```proto + /// message MyMap { + /// // The field `value` must have at least 2 key-value pairs. + /// map<string, string> value = 1 [(buf.validate.field).map.min_pairs = 2]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong MinPairs { + get { if ((_hasBits0 & 1) != 0) { return minPairs_; } else { return MinPairsDefaultValue; } } + set { + _hasBits0 |= 1; + minPairs_ = value; + } + } + /// Gets whether the "min_pairs" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasMinPairs { + get { return (_hasBits0 & 1) != 0; } + } + /// Clears the value of the "min_pairs" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMinPairs() { + _hasBits0 &= ~1; + } + + /// Field number for the "max_pairs" field. + public const int MaxPairsFieldNumber = 2; + private readonly static ulong MaxPairsDefaultValue = 0UL; + + private ulong maxPairs_; + /// + ///Specifies the maximum number of key-value pairs allowed. If the field has + /// more key-value pairs than specified, an error message is generated. + /// + /// ```proto + /// message MyMap { + /// // The field `value` must have at most 3 key-value pairs. + /// map<string, string> value = 1 [(buf.validate.field).map.max_pairs = 3]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public ulong MaxPairs { + get { if ((_hasBits0 & 2) != 0) { return maxPairs_; } else { return MaxPairsDefaultValue; } } + set { + _hasBits0 |= 2; + maxPairs_ = value; + } + } + /// Gets whether the "max_pairs" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasMaxPairs { + get { return (_hasBits0 & 2) != 0; } + } + /// Clears the value of the "max_pairs" field + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearMaxPairs() { + _hasBits0 &= ~2; + } + + /// Field number for the "keys" field. + public const int KeysFieldNumber = 4; + private global::Buf.Validate.FieldConstraints keys_; + /// + ///Specifies the constraints to be applied to each key in the field. + /// + /// ```proto + /// message MyMap { + /// // The keys in the field `value` must follow the specified constraints. + /// map<string, string> value = 1 [(buf.validate.field).map.keys = { + /// string: { + /// min_len: 3 + /// max_len: 10 + /// } + /// }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.FieldConstraints Keys { + get { return keys_; } + set { + keys_ = value; + } + } + + /// Field number for the "values" field. + public const int ValuesFieldNumber = 5; + private global::Buf.Validate.FieldConstraints values_; + /// + ///Specifies the constraints to be applied to the value of each key in the + /// field. Message values will still have their validations evaluated unless + ///skip is specified here. + /// + /// ```proto + /// message MyMap { + /// // The values in the field `value` must follow the specified constraints. + /// map<string, string> value = 1 [(buf.validate.field).map.values = { + /// string: { + /// min_len: 5 + /// max_len: 20 + /// } + /// }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Buf.Validate.FieldConstraints Values { + get { return values_; } + set { + values_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as MapRules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(MapRules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (MinPairs != other.MinPairs) return false; + if (MaxPairs != other.MaxPairs) return false; + if (!object.Equals(Keys, other.Keys)) return false; + if (!object.Equals(Values, other.Values)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (HasMinPairs) hash ^= MinPairs.GetHashCode(); + if (HasMaxPairs) hash ^= MaxPairs.GetHashCode(); + if (keys_ != null) hash ^= Keys.GetHashCode(); + if (values_ != null) hash ^= Values.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (HasMinPairs) { + output.WriteRawTag(8); + output.WriteUInt64(MinPairs); + } + if (HasMaxPairs) { + output.WriteRawTag(16); + output.WriteUInt64(MaxPairs); + } + if (keys_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Keys); + } + if (values_ != null) { + output.WriteRawTag(42); + output.WriteMessage(Values); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (HasMinPairs) { + output.WriteRawTag(8); + output.WriteUInt64(MinPairs); + } + if (HasMaxPairs) { + output.WriteRawTag(16); + output.WriteUInt64(MaxPairs); + } + if (keys_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Keys); + } + if (values_ != null) { + output.WriteRawTag(42); + output.WriteMessage(Values); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (HasMinPairs) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(MinPairs); + } + if (HasMaxPairs) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(MaxPairs); + } + if (keys_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Keys); + } + if (values_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Values); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(MapRules other) { + if (other == null) { + return; + } + if (other.HasMinPairs) { + MinPairs = other.MinPairs; + } + if (other.HasMaxPairs) { + MaxPairs = other.MaxPairs; + } + if (other.keys_ != null) { + if (keys_ == null) { + Keys = new global::Buf.Validate.FieldConstraints(); + } + Keys.MergeFrom(other.Keys); + } + if (other.values_ != null) { + if (values_ == null) { + Values = new global::Buf.Validate.FieldConstraints(); + } + Values.MergeFrom(other.Values); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + MinPairs = input.ReadUInt64(); + break; + } + case 16: { + MaxPairs = input.ReadUInt64(); + break; + } + case 34: { + if (keys_ == null) { + Keys = new global::Buf.Validate.FieldConstraints(); + } + input.ReadMessage(Keys); + break; + } + case 42: { + if (values_ == null) { + Values = new global::Buf.Validate.FieldConstraints(); + } + input.ReadMessage(Values); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + MinPairs = input.ReadUInt64(); + break; + } + case 16: { + MaxPairs = input.ReadUInt64(); + break; + } + case 34: { + if (keys_ == null) { + Keys = new global::Buf.Validate.FieldConstraints(); + } + input.ReadMessage(Keys); + break; + } + case 42: { + if (values_ == null) { + Values = new global::Buf.Validate.FieldConstraints(); + } + input.ReadMessage(Values); + break; + } + } + } + } + #endif + + } + + /// + /// AnyRules describe constraints applied exclusively to the `google.protobuf.Any` well-known type. + /// + public sealed partial class AnyRules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AnyRules()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[21]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public AnyRules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public AnyRules(AnyRules other) : this() { + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public AnyRules Clone() { + return new AnyRules(this); + } + + /// Field number for the "in" field. + public const int InFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForString(18); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` requires the field's `type_url` to be equal to one of the + ///specified values. If it doesn't match any of the specified values, an error + /// message is generated. + /// + /// ```proto + /// message MyAny { + /// // The `value` field must have a `type_url` equal to one of the specified values. + /// google.protobuf.Any value = 1 [(buf.validate.field).any.in = ["type.googleapis.com/MyType1", "type.googleapis.com/MyType2"]]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 3; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForString(26); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated. + /// + /// ```proto + /// message MyAny { + /// // The field `value` must not have a `type_url` equal to any of the specified values. + /// google.protobuf.Any value = 1 [(buf.validate.field).any.not_in = ["type.googleapis.com/ForbiddenType1", "type.googleapis.com/ForbiddenType2"]]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as AnyRules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(AnyRules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(AnyRules other) { + if (other == null) { + return; + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 18: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 26: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 18: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 26: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// DurationRules describe the constraints applied exclusively to the `google.protobuf.Duration` well-known type. + /// + public sealed partial class DurationRules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DurationRules()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[22]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DurationRules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DurationRules(DurationRules other) : this() { + const_ = other.const_ != null ? other.const_.Clone() : null; + in_ = other.in_.Clone(); + notIn_ = other.notIn_.Clone(); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt.Clone(); + break; + case LessThanOneofCase.Lte: + Lte = other.Lte.Clone(); + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt.Clone(); + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte.Clone(); + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public DurationRules Clone() { + return new DurationRules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 2; + private global::Google.Protobuf.WellKnownTypes.Duration const_; + /// + /// `const` dictates that the field must match the specified value of the `google.protobuf.Duration` type exactly. + /// If the field's value deviates from the specified value, an error message + /// will be generated. + /// + /// ```proto + /// message MyDuration { + /// // value must equal 5s + /// google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = "5s"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Duration Const { + get { return const_; } + set { + const_ = value; + } + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 3; + /// + /// `lt` stipulates that the field must be less than the specified value of the `google.protobuf.Duration` type, + /// exclusive. If the field's value is greater than or equal to the specified + /// value, an error message will be generated. + /// + /// ```proto + /// message MyDuration { + /// // value must be less than 5s + /// google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = "5s"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Duration Lt { + get { return lessThanCase_ == LessThanOneofCase.Lt ? (global::Google.Protobuf.WellKnownTypes.Duration) lessThan_ : null; } + set { + lessThan_ = value; + lessThanCase_ = value == null ? LessThanOneofCase.None : LessThanOneofCase.Lt; + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 4; + /// + /// `lte` indicates that the field must be less than or equal to the specified + /// value of the `google.protobuf.Duration` type, inclusive. If the field's value is greater than the specified value, + /// an error message will be generated. + /// + /// ```proto + /// message MyDuration { + /// // value must be less than or equal to 10s + /// google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = "10s"]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Duration Lte { + get { return lessThanCase_ == LessThanOneofCase.Lte ? (global::Google.Protobuf.WellKnownTypes.Duration) lessThan_ : null; } + set { + lessThan_ = value; + lessThanCase_ = value == null ? LessThanOneofCase.None : LessThanOneofCase.Lte; + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 5; + /// + /// `gt` requires the duration field value to be greater than the specified + /// value (exclusive). If the value of `gt` is larger than a specified `lt` + /// or `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyDuration { + /// // duration must be greater than 5s [duration.gt] + /// google.protobuf.Duration value = 1 [(buf.validate.field).duration.gt = { seconds: 5 }]; + /// + /// // duration must be greater than 5s and less than 10s [duration.gt_lt] + /// google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gt: { seconds: 5 }, lt: { seconds: 10 } }]; + /// + /// // duration must be greater than 10s or less than 5s [duration.gt_lt_exclusive] + /// google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gt: { seconds: 10 }, lt: { seconds: 5 } }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Duration Gt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt ? (global::Google.Protobuf.WellKnownTypes.Duration) greaterThan_ : null; } + set { + greaterThan_ = value; + greaterThanCase_ = value == null ? GreaterThanOneofCase.None : GreaterThanOneofCase.Gt; + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 6; + /// + /// `gte` requires the duration field value to be greater than or equal to the + /// specified value (exclusive). If the value of `gte` is larger than a + /// specified `lt` or `lte`, the range is reversed, and the field value must + /// be outside the specified range. If the field value doesn't meet the + /// required conditions, an error message is generated. + /// + /// ```proto + /// message MyDuration { + /// // duration must be greater than or equal to 5s [duration.gte] + /// google.protobuf.Duration value = 1 [(buf.validate.field).duration.gte = { seconds: 5 }]; + /// + /// // duration must be greater than or equal to 5s and less than 10s [duration.gte_lt] + /// google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gte: { seconds: 5 }, lt: { seconds: 10 } }]; + /// + /// // duration must be greater than or equal to 10s or less than 5s [duration.gte_lt_exclusive] + /// google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gte: { seconds: 10 }, lt: { seconds: 5 } }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Duration Gte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte ? (global::Google.Protobuf.WellKnownTypes.Duration) greaterThan_ : null; } + set { + greaterThan_ = value; + greaterThanCase_ = value == null ? GreaterThanOneofCase.None : GreaterThanOneofCase.Gte; + } + } + + /// Field number for the "in" field. + public const int InFieldNumber = 7; + private static readonly pb::FieldCodec _repeated_in_codec + = pb::FieldCodec.ForMessage(58, global::Google.Protobuf.WellKnownTypes.Duration.Parser); + private readonly pbc::RepeatedField in_ = new pbc::RepeatedField(); + /// + /// `in` asserts that the field must be equal to one of the specified values of the `google.protobuf.Duration` type. + /// If the field's value doesn't correspond to any of the specified values, + /// an error message will be generated. + /// + /// ```proto + /// message MyDuration { + /// // value must be in list [1s, 2s, 3s] + /// google.protobuf.Duration value = 1 [(buf.validate.field).duration.in = ["1s", "2s", "3s"]]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField In { + get { return in_; } + } + + /// Field number for the "not_in" field. + public const int NotInFieldNumber = 8; + private static readonly pb::FieldCodec _repeated_notIn_codec + = pb::FieldCodec.ForMessage(66, global::Google.Protobuf.WellKnownTypes.Duration.Parser); + private readonly pbc::RepeatedField notIn_ = new pbc::RepeatedField(); + /// + /// `not_in` denotes that the field must not be equal to + /// any of the specified values of the `google.protobuf.Duration` type. + /// If the field's value matches any of these values, an error message will be + /// generated. + /// + /// ```proto + /// message MyDuration { + /// // value must not be in list [1s, 2s, 3s] + /// google.protobuf.Duration value = 1 [(buf.validate.field).duration.not_in = ["1s", "2s", "3s"]]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField NotIn { + get { return notIn_; } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 3, + Lte = 4, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 5, + Gte = 6, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as DurationRules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(DurationRules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Const, other.Const)) return false; + if (!object.Equals(Lt, other.Lt)) return false; + if (!object.Equals(Lte, other.Lte)) return false; + if (!object.Equals(Gt, other.Gt)) return false; + if (!object.Equals(Gte, other.Gte)) return false; + if(!in_.Equals(other.in_)) return false; + if(!notIn_.Equals(other.notIn_)) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (const_ != null) hash ^= Const.GetHashCode(); + if (lessThanCase_ == LessThanOneofCase.Lt) hash ^= Lt.GetHashCode(); + if (lessThanCase_ == LessThanOneofCase.Lte) hash ^= Lte.GetHashCode(); + if (greaterThanCase_ == GreaterThanOneofCase.Gt) hash ^= Gt.GetHashCode(); + if (greaterThanCase_ == GreaterThanOneofCase.Gte) hash ^= Gte.GetHashCode(); + hash ^= in_.GetHashCode(); + hash ^= notIn_.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (const_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Const); + } + if (lessThanCase_ == LessThanOneofCase.Lt) { + output.WriteRawTag(26); + output.WriteMessage(Lt); + } + if (lessThanCase_ == LessThanOneofCase.Lte) { + output.WriteRawTag(34); + output.WriteMessage(Lte); + } + if (greaterThanCase_ == GreaterThanOneofCase.Gt) { + output.WriteRawTag(42); + output.WriteMessage(Gt); + } + if (greaterThanCase_ == GreaterThanOneofCase.Gte) { + output.WriteRawTag(50); + output.WriteMessage(Gte); + } + in_.WriteTo(output, _repeated_in_codec); + notIn_.WriteTo(output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (const_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Const); + } + if (lessThanCase_ == LessThanOneofCase.Lt) { + output.WriteRawTag(26); + output.WriteMessage(Lt); + } + if (lessThanCase_ == LessThanOneofCase.Lte) { + output.WriteRawTag(34); + output.WriteMessage(Lte); + } + if (greaterThanCase_ == GreaterThanOneofCase.Gt) { + output.WriteRawTag(42); + output.WriteMessage(Gt); + } + if (greaterThanCase_ == GreaterThanOneofCase.Gte) { + output.WriteRawTag(50); + output.WriteMessage(Gte); + } + in_.WriteTo(ref output, _repeated_in_codec); + notIn_.WriteTo(ref output, _repeated_notIn_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (const_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Const); + } + if (lessThanCase_ == LessThanOneofCase.Lt) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Lt); + } + if (lessThanCase_ == LessThanOneofCase.Lte) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Lte); + } + if (greaterThanCase_ == GreaterThanOneofCase.Gt) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Gt); + } + if (greaterThanCase_ == GreaterThanOneofCase.Gte) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Gte); + } + size += in_.CalculateSize(_repeated_in_codec); + size += notIn_.CalculateSize(_repeated_notIn_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(DurationRules other) { + if (other == null) { + return; + } + if (other.const_ != null) { + if (const_ == null) { + Const = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + Const.MergeFrom(other.Const); + } + in_.Add(other.in_); + notIn_.Add(other.notIn_); + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + if (Lt == null) { + Lt = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + Lt.MergeFrom(other.Lt); + break; + case LessThanOneofCase.Lte: + if (Lte == null) { + Lte = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + Lte.MergeFrom(other.Lte); + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + if (Gt == null) { + Gt = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + Gt.MergeFrom(other.Gt); + break; + case GreaterThanOneofCase.Gte: + if (Gte == null) { + Gte = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + Gte.MergeFrom(other.Gte); + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 18: { + if (const_ == null) { + Const = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + input.ReadMessage(Const); + break; + } + case 26: { + global::Google.Protobuf.WellKnownTypes.Duration subBuilder = new global::Google.Protobuf.WellKnownTypes.Duration(); + if (lessThanCase_ == LessThanOneofCase.Lt) { + subBuilder.MergeFrom(Lt); + } + input.ReadMessage(subBuilder); + Lt = subBuilder; + break; + } + case 34: { + global::Google.Protobuf.WellKnownTypes.Duration subBuilder = new global::Google.Protobuf.WellKnownTypes.Duration(); + if (lessThanCase_ == LessThanOneofCase.Lte) { + subBuilder.MergeFrom(Lte); + } + input.ReadMessage(subBuilder); + Lte = subBuilder; + break; + } + case 42: { + global::Google.Protobuf.WellKnownTypes.Duration subBuilder = new global::Google.Protobuf.WellKnownTypes.Duration(); + if (greaterThanCase_ == GreaterThanOneofCase.Gt) { + subBuilder.MergeFrom(Gt); + } + input.ReadMessage(subBuilder); + Gt = subBuilder; + break; + } + case 50: { + global::Google.Protobuf.WellKnownTypes.Duration subBuilder = new global::Google.Protobuf.WellKnownTypes.Duration(); + if (greaterThanCase_ == GreaterThanOneofCase.Gte) { + subBuilder.MergeFrom(Gte); + } + input.ReadMessage(subBuilder); + Gte = subBuilder; + break; + } + case 58: { + in_.AddEntriesFrom(input, _repeated_in_codec); + break; + } + case 66: { + notIn_.AddEntriesFrom(input, _repeated_notIn_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 18: { + if (const_ == null) { + Const = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + input.ReadMessage(Const); + break; + } + case 26: { + global::Google.Protobuf.WellKnownTypes.Duration subBuilder = new global::Google.Protobuf.WellKnownTypes.Duration(); + if (lessThanCase_ == LessThanOneofCase.Lt) { + subBuilder.MergeFrom(Lt); + } + input.ReadMessage(subBuilder); + Lt = subBuilder; + break; + } + case 34: { + global::Google.Protobuf.WellKnownTypes.Duration subBuilder = new global::Google.Protobuf.WellKnownTypes.Duration(); + if (lessThanCase_ == LessThanOneofCase.Lte) { + subBuilder.MergeFrom(Lte); + } + input.ReadMessage(subBuilder); + Lte = subBuilder; + break; + } + case 42: { + global::Google.Protobuf.WellKnownTypes.Duration subBuilder = new global::Google.Protobuf.WellKnownTypes.Duration(); + if (greaterThanCase_ == GreaterThanOneofCase.Gt) { + subBuilder.MergeFrom(Gt); + } + input.ReadMessage(subBuilder); + Gt = subBuilder; + break; + } + case 50: { + global::Google.Protobuf.WellKnownTypes.Duration subBuilder = new global::Google.Protobuf.WellKnownTypes.Duration(); + if (greaterThanCase_ == GreaterThanOneofCase.Gte) { + subBuilder.MergeFrom(Gte); + } + input.ReadMessage(subBuilder); + Gte = subBuilder; + break; + } + case 58: { + in_.AddEntriesFrom(ref input, _repeated_in_codec); + break; + } + case 66: { + notIn_.AddEntriesFrom(ref input, _repeated_notIn_codec); + break; + } + } + } + } + #endif + + } + + /// + /// TimestampRules describe the constraints applied exclusively to the `google.protobuf.Timestamp` well-known type. + /// + public sealed partial class TimestampRules : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TimestampRules()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Buf.Validate.ValidateReflection.Descriptor.MessageTypes[23]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public TimestampRules() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public TimestampRules(TimestampRules other) : this() { + const_ = other.const_ != null ? other.const_.Clone() : null; + within_ = other.within_ != null ? other.within_.Clone() : null; + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + Lt = other.Lt.Clone(); + break; + case LessThanOneofCase.Lte: + Lte = other.Lte.Clone(); + break; + case LessThanOneofCase.LtNow: + LtNow = other.LtNow; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + Gt = other.Gt.Clone(); + break; + case GreaterThanOneofCase.Gte: + Gte = other.Gte.Clone(); + break; + case GreaterThanOneofCase.GtNow: + GtNow = other.GtNow; + break; + } + + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public TimestampRules Clone() { + return new TimestampRules(this); + } + + /// Field number for the "const" field. + public const int ConstFieldNumber = 2; + private global::Google.Protobuf.WellKnownTypes.Timestamp const_; + /// + /// `const` dictates that this field, of the `google.protobuf.Timestamp` type, must exactly match the specified value. If the field value doesn't correspond to the specified timestamp, an error message will be generated. + /// + /// ```proto + /// message MyTimestamp { + /// // value must equal 2023-05-03T10:00:00Z + /// google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.const = {seconds: 1727998800}]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Timestamp Const { + get { return const_; } + set { + const_ = value; + } + } + + /// Field number for the "lt" field. + public const int LtFieldNumber = 3; + /// + /// requires the duration field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated. + /// + /// ```proto + /// message MyDuration { + /// // duration must be less than 'P3D' [duration.lt] + /// google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 259200 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Timestamp Lt { + get { return lessThanCase_ == LessThanOneofCase.Lt ? (global::Google.Protobuf.WellKnownTypes.Timestamp) lessThan_ : null; } + set { + lessThan_ = value; + lessThanCase_ = value == null ? LessThanOneofCase.None : LessThanOneofCase.Lt; + } + } + + /// Field number for the "lte" field. + public const int LteFieldNumber = 4; + /// + /// requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated. + /// + /// ```proto + /// message MyTimestamp { + /// // timestamp must be less than or equal to '2023-05-14T00:00:00Z' [timestamp.lte] + /// google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lte = { seconds: 1678867200 }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Timestamp Lte { + get { return lessThanCase_ == LessThanOneofCase.Lte ? (global::Google.Protobuf.WellKnownTypes.Timestamp) lessThan_ : null; } + set { + lessThan_ = value; + lessThanCase_ = value == null ? LessThanOneofCase.None : LessThanOneofCase.Lte; + } + } + + /// Field number for the "lt_now" field. + public const int LtNowFieldNumber = 7; + /// + /// `lt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be less than the current time. `lt_now` can only be used with the `within` rule. + /// + /// ```proto + /// message MyTimestamp { + /// // value must be less than now + /// google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.lt_now = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool LtNow { + get { return HasLtNow ? (bool) lessThan_ : false; } + set { + lessThan_ = value; + lessThanCase_ = LessThanOneofCase.LtNow; + } + } + /// Gets whether the "lt_now" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasLtNow { + get { return lessThanCase_ == LessThanOneofCase.LtNow; } + } + /// Clears the value of the oneof if it's currently set to "lt_now" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLtNow() { + if (HasLtNow) { + ClearLessThan(); + } + } + + /// Field number for the "gt" field. + public const int GtFieldNumber = 5; + /// + /// `gt` requires the timestamp field value to be greater than the specified + /// value (exclusive). If the value of `gt` is larger than a specified `lt` + /// or `lte`, the range is reversed, and the field value must be outside the + /// specified range. If the field value doesn't meet the required conditions, + /// an error message is generated. + /// + /// ```proto + /// message MyTimestamp { + /// // timestamp must be greater than '2023-01-01T00:00:00Z' [timestamp.gt] + /// google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gt = { seconds: 1672444800 }]; + /// + /// // timestamp must be greater than '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gt_lt] + /// google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gt: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }]; + /// + /// // timestamp must be greater than '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gt_lt_exclusive] + /// google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gt: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Timestamp Gt { + get { return greaterThanCase_ == GreaterThanOneofCase.Gt ? (global::Google.Protobuf.WellKnownTypes.Timestamp) greaterThan_ : null; } + set { + greaterThan_ = value; + greaterThanCase_ = value == null ? GreaterThanOneofCase.None : GreaterThanOneofCase.Gt; + } + } + + /// Field number for the "gte" field. + public const int GteFieldNumber = 6; + /// + /// `gte` requires the timestamp field value to be greater than or equal to the + /// specified value (exclusive). If the value of `gte` is larger than a + /// specified `lt` or `lte`, the range is reversed, and the field value + /// must be outside the specified range. If the field value doesn't meet + /// the required conditions, an error message is generated. + /// + /// ```proto + /// message MyTimestamp { + /// // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' [timestamp.gte] + /// google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gte = { seconds: 1672444800 }]; + /// + /// // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gte_lt] + /// google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gte: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }]; + /// + /// // timestamp must be greater than or equal to '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gte_lt_exclusive] + /// google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gte: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Timestamp Gte { + get { return greaterThanCase_ == GreaterThanOneofCase.Gte ? (global::Google.Protobuf.WellKnownTypes.Timestamp) greaterThan_ : null; } + set { + greaterThan_ = value; + greaterThanCase_ = value == null ? GreaterThanOneofCase.None : GreaterThanOneofCase.Gte; + } + } + + /// Field number for the "gt_now" field. + public const int GtNowFieldNumber = 8; + /// + /// `gt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be greater than the current time. `gt_now` can only be used with the `within` rule. + /// + /// ```proto + /// message MyTimestamp { + /// // value must be greater than now + /// google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.gt_now = true]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool GtNow { + get { return HasGtNow ? (bool) greaterThan_ : false; } + set { + greaterThan_ = value; + greaterThanCase_ = GreaterThanOneofCase.GtNow; + } + } + /// Gets whether the "gt_now" field is set + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool HasGtNow { + get { return greaterThanCase_ == GreaterThanOneofCase.GtNow; } + } + /// Clears the value of the oneof if it's currently set to "gt_now" + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGtNow() { + if (HasGtNow) { + ClearGreaterThan(); + } + } + + /// Field number for the "within" field. + public const int WithinFieldNumber = 9; + private global::Google.Protobuf.WellKnownTypes.Duration within_; + /// + /// `within` specifies that this field, of the `google.protobuf.Timestamp` type, must be within the specified duration of the current time. If the field value isn't within the duration, an error message is generated. + /// + /// ```proto + /// message MyTimestamp { + /// // value must be within 1 hour of now + /// google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.within = {seconds: 3600}]; + /// } + /// ``` + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Google.Protobuf.WellKnownTypes.Duration Within { + get { return within_; } + set { + within_ = value; + } + } + + private object lessThan_; + /// Enum of possible cases for the "less_than" oneof. + public enum LessThanOneofCase { + None = 0, + Lt = 3, + Lte = 4, + LtNow = 7, + } + private LessThanOneofCase lessThanCase_ = LessThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public LessThanOneofCase LessThanCase { + get { return lessThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearLessThan() { + lessThanCase_ = LessThanOneofCase.None; + lessThan_ = null; + } + + private object greaterThan_; + /// Enum of possible cases for the "greater_than" oneof. + public enum GreaterThanOneofCase { + None = 0, + Gt = 5, + Gte = 6, + GtNow = 8, + } + private GreaterThanOneofCase greaterThanCase_ = GreaterThanOneofCase.None; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public GreaterThanOneofCase GreaterThanCase { + get { return greaterThanCase_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void ClearGreaterThan() { + greaterThanCase_ = GreaterThanOneofCase.None; + greaterThan_ = null; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as TimestampRules); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(TimestampRules other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Const, other.Const)) return false; + if (!object.Equals(Lt, other.Lt)) return false; + if (!object.Equals(Lte, other.Lte)) return false; + if (LtNow != other.LtNow) return false; + if (!object.Equals(Gt, other.Gt)) return false; + if (!object.Equals(Gte, other.Gte)) return false; + if (GtNow != other.GtNow) return false; + if (!object.Equals(Within, other.Within)) return false; + if (LessThanCase != other.LessThanCase) return false; + if (GreaterThanCase != other.GreaterThanCase) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (const_ != null) hash ^= Const.GetHashCode(); + if (lessThanCase_ == LessThanOneofCase.Lt) hash ^= Lt.GetHashCode(); + if (lessThanCase_ == LessThanOneofCase.Lte) hash ^= Lte.GetHashCode(); + if (HasLtNow) hash ^= LtNow.GetHashCode(); + if (greaterThanCase_ == GreaterThanOneofCase.Gt) hash ^= Gt.GetHashCode(); + if (greaterThanCase_ == GreaterThanOneofCase.Gte) hash ^= Gte.GetHashCode(); + if (HasGtNow) hash ^= GtNow.GetHashCode(); + if (within_ != null) hash ^= Within.GetHashCode(); + hash ^= (int) lessThanCase_; + hash ^= (int) greaterThanCase_; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (const_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Const); + } + if (lessThanCase_ == LessThanOneofCase.Lt) { + output.WriteRawTag(26); + output.WriteMessage(Lt); + } + if (lessThanCase_ == LessThanOneofCase.Lte) { + output.WriteRawTag(34); + output.WriteMessage(Lte); + } + if (greaterThanCase_ == GreaterThanOneofCase.Gt) { + output.WriteRawTag(42); + output.WriteMessage(Gt); + } + if (greaterThanCase_ == GreaterThanOneofCase.Gte) { + output.WriteRawTag(50); + output.WriteMessage(Gte); + } + if (HasLtNow) { + output.WriteRawTag(56); + output.WriteBool(LtNow); + } + if (HasGtNow) { + output.WriteRawTag(64); + output.WriteBool(GtNow); + } + if (within_ != null) { + output.WriteRawTag(74); + output.WriteMessage(Within); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (const_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Const); + } + if (lessThanCase_ == LessThanOneofCase.Lt) { + output.WriteRawTag(26); + output.WriteMessage(Lt); + } + if (lessThanCase_ == LessThanOneofCase.Lte) { + output.WriteRawTag(34); + output.WriteMessage(Lte); + } + if (greaterThanCase_ == GreaterThanOneofCase.Gt) { + output.WriteRawTag(42); + output.WriteMessage(Gt); + } + if (greaterThanCase_ == GreaterThanOneofCase.Gte) { + output.WriteRawTag(50); + output.WriteMessage(Gte); + } + if (HasLtNow) { + output.WriteRawTag(56); + output.WriteBool(LtNow); + } + if (HasGtNow) { + output.WriteRawTag(64); + output.WriteBool(GtNow); + } + if (within_ != null) { + output.WriteRawTag(74); + output.WriteMessage(Within); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (const_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Const); + } + if (lessThanCase_ == LessThanOneofCase.Lt) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Lt); + } + if (lessThanCase_ == LessThanOneofCase.Lte) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Lte); + } + if (HasLtNow) { + size += 1 + 1; + } + if (greaterThanCase_ == GreaterThanOneofCase.Gt) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Gt); + } + if (greaterThanCase_ == GreaterThanOneofCase.Gte) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Gte); + } + if (HasGtNow) { + size += 1 + 1; + } + if (within_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Within); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(TimestampRules other) { + if (other == null) { + return; + } + if (other.const_ != null) { + if (const_ == null) { + Const = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + Const.MergeFrom(other.Const); + } + if (other.within_ != null) { + if (within_ == null) { + Within = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + Within.MergeFrom(other.Within); + } + switch (other.LessThanCase) { + case LessThanOneofCase.Lt: + if (Lt == null) { + Lt = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + Lt.MergeFrom(other.Lt); + break; + case LessThanOneofCase.Lte: + if (Lte == null) { + Lte = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + Lte.MergeFrom(other.Lte); + break; + case LessThanOneofCase.LtNow: + LtNow = other.LtNow; + break; + } + + switch (other.GreaterThanCase) { + case GreaterThanOneofCase.Gt: + if (Gt == null) { + Gt = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + Gt.MergeFrom(other.Gt); + break; + case GreaterThanOneofCase.Gte: + if (Gte == null) { + Gte = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + Gte.MergeFrom(other.Gte); + break; + case GreaterThanOneofCase.GtNow: + GtNow = other.GtNow; + break; + } + + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 18: { + if (const_ == null) { + Const = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + input.ReadMessage(Const); + break; + } + case 26: { + global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + if (lessThanCase_ == LessThanOneofCase.Lt) { + subBuilder.MergeFrom(Lt); + } + input.ReadMessage(subBuilder); + Lt = subBuilder; + break; + } + case 34: { + global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + if (lessThanCase_ == LessThanOneofCase.Lte) { + subBuilder.MergeFrom(Lte); + } + input.ReadMessage(subBuilder); + Lte = subBuilder; + break; + } + case 42: { + global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + if (greaterThanCase_ == GreaterThanOneofCase.Gt) { + subBuilder.MergeFrom(Gt); + } + input.ReadMessage(subBuilder); + Gt = subBuilder; + break; + } + case 50: { + global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + if (greaterThanCase_ == GreaterThanOneofCase.Gte) { + subBuilder.MergeFrom(Gte); + } + input.ReadMessage(subBuilder); + Gte = subBuilder; + break; + } + case 56: { + LtNow = input.ReadBool(); + break; + } + case 64: { + GtNow = input.ReadBool(); + break; + } + case 74: { + if (within_ == null) { + Within = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + input.ReadMessage(Within); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 18: { + if (const_ == null) { + Const = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + } + input.ReadMessage(Const); + break; + } + case 26: { + global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + if (lessThanCase_ == LessThanOneofCase.Lt) { + subBuilder.MergeFrom(Lt); + } + input.ReadMessage(subBuilder); + Lt = subBuilder; + break; + } + case 34: { + global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + if (lessThanCase_ == LessThanOneofCase.Lte) { + subBuilder.MergeFrom(Lte); + } + input.ReadMessage(subBuilder); + Lte = subBuilder; + break; + } + case 42: { + global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + if (greaterThanCase_ == GreaterThanOneofCase.Gt) { + subBuilder.MergeFrom(Gt); + } + input.ReadMessage(subBuilder); + Gt = subBuilder; + break; + } + case 50: { + global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp(); + if (greaterThanCase_ == GreaterThanOneofCase.Gte) { + subBuilder.MergeFrom(Gte); + } + input.ReadMessage(subBuilder); + Gte = subBuilder; + break; + } + case 56: { + LtNow = input.ReadBool(); + break; + } + case 64: { + GtNow = input.ReadBool(); + break; + } + case 74: { + if (within_ == null) { + Within = new global::Google.Protobuf.WellKnownTypes.Duration(); + } + input.ReadMessage(Within); + break; + } + } + } + } + #endif + + } + + #endregion + +} + +#endregion Designer generated code diff --git a/src/Sdk/Cerbos/Api/V1/Audit/Audit.g.cs b/src/Sdk/Cerbos/Api/V1/Audit/Audit.g.cs index afa3086..a2c9c35 100644 --- a/src/Sdk/Cerbos/Api/V1/Audit/Audit.g.cs +++ b/src/Sdk/Cerbos/Api/V1/Audit/Audit.g.cs @@ -25,53 +25,61 @@ static AuditReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChtjZXJib3MvYXVkaXQvdjEvYXVkaXQucHJvdG8SD2NlcmJvcy5hdWRpdC52", - "MRodY2VyYm9zL2VuZ2luZS92MS9lbmdpbmUucHJvdG8aH2dvb2dsZS9wcm90", - "b2J1Zi90aW1lc3RhbXAucHJvdG8i7AIKDkFjY2Vzc0xvZ0VudHJ5EhcKB2Nh", - "bGxfaWQYASABKAlSBmNhbGxJZBI4Cgl0aW1lc3RhbXAYAiABKAsyGi5nb29n", - "bGUucHJvdG9idWYuVGltZXN0YW1wUgl0aW1lc3RhbXASKQoEcGVlchgDIAEo", - "CzIVLmNlcmJvcy5hdWRpdC52MS5QZWVyUgRwZWVyEkkKCG1ldGFkYXRhGAQg", - "AygLMi0uY2VyYm9zLmF1ZGl0LnYxLkFjY2Vzc0xvZ0VudHJ5Lk1ldGFkYXRh", - "RW50cnlSCG1ldGFkYXRhEhYKBm1ldGhvZBgFIAEoCVIGbWV0aG9kEh8KC3N0", - "YXR1c19jb2RlGAYgASgNUgpzdGF0dXNDb2RlGlgKDU1ldGFkYXRhRW50cnkS", - "EAoDa2V5GAEgASgJUgNrZXkSMQoFdmFsdWUYAiABKAsyGy5jZXJib3MuYXVk", - "aXQudjEuTWV0YVZhbHVlc1IFdmFsdWU6AjgBIrgHChBEZWNpc2lvbkxvZ0Vu", - "dHJ5EhcKB2NhbGxfaWQYASABKAlSBmNhbGxJZBI4Cgl0aW1lc3RhbXAYAiAB", - "KAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wUgl0aW1lc3RhbXASKQoE", - "cGVlchgDIAEoCzIVLmNlcmJvcy5hdWRpdC52MS5QZWVyUgRwZWVyEjQKBmlu", - "cHV0cxgEIAMoCzIcLmNlcmJvcy5lbmdpbmUudjEuQ2hlY2tJbnB1dFIGaW5w", - "dXRzEjcKB291dHB1dHMYBSADKAsyHS5jZXJib3MuZW5naW5lLnYxLkNoZWNr", - "T3V0cHV0UgdvdXRwdXRzEhQKBWVycm9yGAYgASgJUgVlcnJvchJbCg9jaGVj", - "a19yZXNvdXJjZXMYByABKAsyMC5jZXJib3MuYXVkaXQudjEuRGVjaXNpb25M", - "b2dFbnRyeS5DaGVja1Jlc291cmNlc0gAUg5jaGVja1Jlc291cmNlcxJYCg5w", - "bGFuX3Jlc291cmNlcxgIIAEoCzIvLmNlcmJvcy5hdWRpdC52MS5EZWNpc2lv", - "bkxvZ0VudHJ5LlBsYW5SZXNvdXJjZXNIAFINcGxhblJlc291cmNlcxJLCght", - "ZXRhZGF0YRgPIAMoCzIvLmNlcmJvcy5hdWRpdC52MS5EZWNpc2lvbkxvZ0Vu", - "dHJ5Lk1ldGFkYXRhRW50cnlSCG1ldGFkYXRhGpUBCg5DaGVja1Jlc291cmNl", - "cxI0CgZpbnB1dHMYASADKAsyHC5jZXJib3MuZW5naW5lLnYxLkNoZWNrSW5w", - "dXRSBmlucHV0cxI3CgdvdXRwdXRzGAIgAygLMh0uY2VyYm9zLmVuZ2luZS52", - "MS5DaGVja091dHB1dFIHb3V0cHV0cxIUCgVlcnJvchgDIAEoCVIFZXJyb3Ia", - "oAEKDVBsYW5SZXNvdXJjZXMSOgoFaW5wdXQYASABKAsyJC5jZXJib3MuZW5n", - "aW5lLnYxLlBsYW5SZXNvdXJjZXNJbnB1dFIFaW5wdXQSPQoGb3V0cHV0GAIg", - "ASgLMiUuY2VyYm9zLmVuZ2luZS52MS5QbGFuUmVzb3VyY2VzT3V0cHV0UgZv", - "dXRwdXQSFAoFZXJyb3IYAyABKAlSBWVycm9yGlgKDU1ldGFkYXRhRW50cnkS", - "EAoDa2V5GAEgASgJUgNrZXkSMQoFdmFsdWUYAiABKAsyGy5jZXJib3MuYXVk", - "aXQudjEuTWV0YVZhbHVlc1IFdmFsdWU6AjgBQggKBm1ldGhvZCIkCgpNZXRh", - "VmFsdWVzEhYKBnZhbHVlcxgBIAMoCVIGdmFsdWVzIoEBCgRQZWVyEhgKB2Fk", - "ZHJlc3MYASABKAlSB2FkZHJlc3MSGwoJYXV0aF9pbmZvGAIgASgJUghhdXRo", - "SW5mbxIdCgp1c2VyX2FnZW50GAMgASgJUgl1c2VyQWdlbnQSIwoNZm9yd2Fy", - "ZGVkX2ZvchgEIAEoCVIMZm9yd2FyZGVkRm9yQmsKF2Rldi5jZXJib3MuYXBp", - "LnYxLmF1ZGl0WjpnaXRodWIuY29tL2NlcmJvcy9jZXJib3MvYXBpL2dlbnBi", - "L2NlcmJvcy9hdWRpdC92MTthdWRpdHYxqgITQ2VyYm9zLkFwaS5WMS5BdWRp", - "dGIGcHJvdG8z")); + "MRodY2VyYm9zL2VuZ2luZS92MS9lbmdpbmUucHJvdG8aHWNlcmJvcy9wb2xp", + "Y3kvdjEvcG9saWN5LnByb3RvGh9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1w", + "LnByb3RvIuwCCg5BY2Nlc3NMb2dFbnRyeRIXCgdjYWxsX2lkGAEgASgJUgZj", + "YWxsSWQSOAoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRp", + "bWVzdGFtcFIJdGltZXN0YW1wEikKBHBlZXIYAyABKAsyFS5jZXJib3MuYXVk", + "aXQudjEuUGVlclIEcGVlchJJCghtZXRhZGF0YRgEIAMoCzItLmNlcmJvcy5h", + "dWRpdC52MS5BY2Nlc3NMb2dFbnRyeS5NZXRhZGF0YUVudHJ5UghtZXRhZGF0", + "YRIWCgZtZXRob2QYBSABKAlSBm1ldGhvZBIfCgtzdGF0dXNfY29kZRgGIAEo", + "DVIKc3RhdHVzQ29kZRpYCg1NZXRhZGF0YUVudHJ5EhAKA2tleRgBIAEoCVID", + "a2V5EjEKBXZhbHVlGAIgASgLMhsuY2VyYm9zLmF1ZGl0LnYxLk1ldGFWYWx1", + "ZXNSBXZhbHVlOgI4ASL2BwoQRGVjaXNpb25Mb2dFbnRyeRIXCgdjYWxsX2lk", + "GAEgASgJUgZjYWxsSWQSOAoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnBy", + "b3RvYnVmLlRpbWVzdGFtcFIJdGltZXN0YW1wEikKBHBlZXIYAyABKAsyFS5j", + "ZXJib3MuYXVkaXQudjEuUGVlclIEcGVlchI0CgZpbnB1dHMYBCADKAsyHC5j", + "ZXJib3MuZW5naW5lLnYxLkNoZWNrSW5wdXRSBmlucHV0cxI3CgdvdXRwdXRz", + "GAUgAygLMh0uY2VyYm9zLmVuZ2luZS52MS5DaGVja091dHB1dFIHb3V0cHV0", + "cxIUCgVlcnJvchgGIAEoCVIFZXJyb3ISWwoPY2hlY2tfcmVzb3VyY2VzGAcg", + "ASgLMjAuY2VyYm9zLmF1ZGl0LnYxLkRlY2lzaW9uTG9nRW50cnkuQ2hlY2tS", + "ZXNvdXJjZXNIAFIOY2hlY2tSZXNvdXJjZXMSWAoOcGxhbl9yZXNvdXJjZXMY", + "CCABKAsyLy5jZXJib3MuYXVkaXQudjEuRGVjaXNpb25Mb2dFbnRyeS5QbGFu", + "UmVzb3VyY2VzSABSDXBsYW5SZXNvdXJjZXMSSwoIbWV0YWRhdGEYDyADKAsy", + "Ly5jZXJib3MuYXVkaXQudjEuRGVjaXNpb25Mb2dFbnRyeS5NZXRhZGF0YUVu", + "dHJ5UghtZXRhZGF0YRI8CgthdWRpdF90cmFpbBgQIAEoCzIbLmNlcmJvcy5h", + "dWRpdC52MS5BdWRpdFRyYWlsUgphdWRpdFRyYWlsGpUBCg5DaGVja1Jlc291", + "cmNlcxI0CgZpbnB1dHMYASADKAsyHC5jZXJib3MuZW5naW5lLnYxLkNoZWNr", + "SW5wdXRSBmlucHV0cxI3CgdvdXRwdXRzGAIgAygLMh0uY2VyYm9zLmVuZ2lu", + "ZS52MS5DaGVja091dHB1dFIHb3V0cHV0cxIUCgVlcnJvchgDIAEoCVIFZXJy", + "b3IaoAEKDVBsYW5SZXNvdXJjZXMSOgoFaW5wdXQYASABKAsyJC5jZXJib3Mu", + "ZW5naW5lLnYxLlBsYW5SZXNvdXJjZXNJbnB1dFIFaW5wdXQSPQoGb3V0cHV0", + "GAIgASgLMiUuY2VyYm9zLmVuZ2luZS52MS5QbGFuUmVzb3VyY2VzT3V0cHV0", + "UgZvdXRwdXQSFAoFZXJyb3IYAyABKAlSBWVycm9yGlgKDU1ldGFkYXRhRW50", + "cnkSEAoDa2V5GAEgASgJUgNrZXkSMQoFdmFsdWUYAiABKAsyGy5jZXJib3Mu", + "YXVkaXQudjEuTWV0YVZhbHVlc1IFdmFsdWU6AjgBQggKBm1ldGhvZCIkCgpN", + "ZXRhVmFsdWVzEhYKBnZhbHVlcxgBIAMoCVIGdmFsdWVzIoEBCgRQZWVyEhgK", + "B2FkZHJlc3MYASABKAlSB2FkZHJlc3MSGwoJYXV0aF9pbmZvGAIgASgJUghh", + "dXRoSW5mbxIdCgp1c2VyX2FnZW50GAMgASgJUgl1c2VyQWdlbnQSIwoNZm9y", + "d2FyZGVkX2ZvchgEIAEoCVIMZm9yd2FyZGVkRm9yItkBCgpBdWRpdFRyYWls", + "EmEKEmVmZmVjdGl2ZV9wb2xpY2llcxgBIAMoCzIyLmNlcmJvcy5hdWRpdC52", + "MS5BdWRpdFRyYWlsLkVmZmVjdGl2ZVBvbGljaWVzRW50cnlSEWVmZmVjdGl2", + "ZVBvbGljaWVzGmgKFkVmZmVjdGl2ZVBvbGljaWVzRW50cnkSEAoDa2V5GAEg", + "ASgJUgNrZXkSOAoFdmFsdWUYAiABKAsyIi5jZXJib3MucG9saWN5LnYxLlNv", + "dXJjZUF0dHJpYnV0ZXNSBXZhbHVlOgI4AUJrChdkZXYuY2VyYm9zLmFwaS52", + "MS5hdWRpdFo6Z2l0aHViLmNvbS9jZXJib3MvY2VyYm9zL2FwaS9nZW5wYi9j", + "ZXJib3MvYXVkaXQvdjE7YXVkaXR2MaoCE0NlcmJvcy5BcGkuVjEuQXVkaXRi", + "BnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Cerbos.Api.V1.Engine.EngineReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, }, + new pbr::FileDescriptor[] { global::Cerbos.Api.V1.Engine.EngineReflection.Descriptor, global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Audit.AccessLogEntry), global::Cerbos.Api.V1.Audit.AccessLogEntry.Parser, new[]{ "CallId", "Timestamp", "Peer", "Metadata", "Method", "StatusCode" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), - new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Audit.DecisionLogEntry), global::Cerbos.Api.V1.Audit.DecisionLogEntry.Parser, new[]{ "CallId", "Timestamp", "Peer", "Inputs", "Outputs", "Error", "CheckResources", "PlanResources", "Metadata" }, new[]{ "Method" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Audit.DecisionLogEntry.Types.CheckResources), global::Cerbos.Api.V1.Audit.DecisionLogEntry.Types.CheckResources.Parser, new[]{ "Inputs", "Outputs", "Error" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Audit.DecisionLogEntry), global::Cerbos.Api.V1.Audit.DecisionLogEntry.Parser, new[]{ "CallId", "Timestamp", "Peer", "Inputs", "Outputs", "Error", "CheckResources", "PlanResources", "Metadata", "AuditTrail" }, new[]{ "Method" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Audit.DecisionLogEntry.Types.CheckResources), global::Cerbos.Api.V1.Audit.DecisionLogEntry.Types.CheckResources.Parser, new[]{ "Inputs", "Outputs", "Error" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Audit.DecisionLogEntry.Types.PlanResources), global::Cerbos.Api.V1.Audit.DecisionLogEntry.Types.PlanResources.Parser, new[]{ "Input", "Output", "Error" }, null, null, null, null), null, }), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Audit.MetaValues), global::Cerbos.Api.V1.Audit.MetaValues.Parser, new[]{ "Values" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Audit.Peer), global::Cerbos.Api.V1.Audit.Peer.Parser, new[]{ "Address", "AuthInfo", "UserAgent", "ForwardedFor" }, null, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Audit.Peer), global::Cerbos.Api.V1.Audit.Peer.Parser, new[]{ "Address", "AuthInfo", "UserAgent", "ForwardedFor" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Audit.AuditTrail), global::Cerbos.Api.V1.Audit.AuditTrail.Parser, new[]{ "EffectivePolicies" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }) })); } #endregion @@ -500,6 +508,7 @@ public DecisionLogEntry(DecisionLogEntry other) : this() { outputs_ = other.outputs_.Clone(); error_ = other.error_; metadata_ = other.metadata_.Clone(); + auditTrail_ = other.auditTrail_ != null ? other.auditTrail_.Clone() : null; switch (other.MethodCase) { case MethodOneofCase.CheckResources: CheckResources = other.CheckResources.Clone(); @@ -632,6 +641,18 @@ public string Error { get { return metadata_; } } + /// Field number for the "audit_trail" field. + public const int AuditTrailFieldNumber = 16; + private global::Cerbos.Api.V1.Audit.AuditTrail auditTrail_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Cerbos.Api.V1.Audit.AuditTrail AuditTrail { + get { return auditTrail_; } + set { + auditTrail_ = value; + } + } + private object method_; /// Enum of possible cases for the "method" oneof. public enum MethodOneofCase { @@ -677,6 +698,7 @@ public bool Equals(DecisionLogEntry other) { if (!object.Equals(CheckResources, other.CheckResources)) return false; if (!object.Equals(PlanResources, other.PlanResources)) return false; if (!Metadata.Equals(other.Metadata)) return false; + if (!object.Equals(AuditTrail, other.AuditTrail)) return false; if (MethodCase != other.MethodCase) return false; return Equals(_unknownFields, other._unknownFields); } @@ -694,6 +716,7 @@ public override int GetHashCode() { if (methodCase_ == MethodOneofCase.CheckResources) hash ^= CheckResources.GetHashCode(); if (methodCase_ == MethodOneofCase.PlanResources) hash ^= PlanResources.GetHashCode(); hash ^= Metadata.GetHashCode(); + if (auditTrail_ != null) hash ^= AuditTrail.GetHashCode(); hash ^= (int) methodCase_; if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); @@ -740,6 +763,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteMessage(PlanResources); } metadata_.WriteTo(output, _map_metadata_codec); + if (auditTrail_ != null) { + output.WriteRawTag(130, 1); + output.WriteMessage(AuditTrail); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -777,6 +804,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteMessage(PlanResources); } metadata_.WriteTo(ref output, _map_metadata_codec); + if (auditTrail_ != null) { + output.WriteRawTag(130, 1); + output.WriteMessage(AuditTrail); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -808,6 +839,9 @@ public int CalculateSize() { size += 1 + pb::CodedOutputStream.ComputeMessageSize(PlanResources); } size += metadata_.CalculateSize(_map_metadata_codec); + if (auditTrail_ != null) { + size += 2 + pb::CodedOutputStream.ComputeMessageSize(AuditTrail); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -841,6 +875,12 @@ public void MergeFrom(DecisionLogEntry other) { Error = other.Error; } metadata_.MergeFrom(other.metadata_); + if (other.auditTrail_ != null) { + if (auditTrail_ == null) { + AuditTrail = new global::Cerbos.Api.V1.Audit.AuditTrail(); + } + AuditTrail.MergeFrom(other.AuditTrail); + } switch (other.MethodCase) { case MethodOneofCase.CheckResources: if (CheckResources == null) { @@ -923,6 +963,13 @@ public void MergeFrom(pb::CodedInputStream input) { metadata_.AddEntriesFrom(input, _map_metadata_codec); break; } + case 130: { + if (auditTrail_ == null) { + AuditTrail = new global::Cerbos.Api.V1.Audit.AuditTrail(); + } + input.ReadMessage(AuditTrail); + break; + } } } #endif @@ -990,6 +1037,13 @@ public void MergeFrom(pb::CodedInputStream input) { metadata_.AddEntriesFrom(ref input, _map_metadata_codec); break; } + case 130: { + if (auditTrail_ == null) { + AuditTrail = new global::Cerbos.Api.V1.Audit.AuditTrail(); + } + input.ReadMessage(AuditTrail); + break; + } } } } @@ -2005,6 +2059,184 @@ public void MergeFrom(pb::CodedInputStream input) { } + public sealed partial class AuditTrail : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AuditTrail()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Cerbos.Api.V1.Audit.AuditReflection.Descriptor.MessageTypes[4]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public AuditTrail() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public AuditTrail(AuditTrail other) : this() { + effectivePolicies_ = other.effectivePolicies_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public AuditTrail Clone() { + return new AuditTrail(this); + } + + /// Field number for the "effective_policies" field. + public const int EffectivePoliciesFieldNumber = 1; + private static readonly pbc::MapField.Codec _map_effectivePolicies_codec + = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForMessage(18, global::Cerbos.Api.V1.Policy.SourceAttributes.Parser), 10); + private readonly pbc::MapField effectivePolicies_ = new pbc::MapField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::MapField EffectivePolicies { + get { return effectivePolicies_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as AuditTrail); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(AuditTrail other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!EffectivePolicies.Equals(other.EffectivePolicies)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + hash ^= EffectivePolicies.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + effectivePolicies_.WriteTo(output, _map_effectivePolicies_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + effectivePolicies_.WriteTo(ref output, _map_effectivePolicies_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + size += effectivePolicies_.CalculateSize(_map_effectivePolicies_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(AuditTrail other) { + if (other == null) { + return; + } + effectivePolicies_.MergeFrom(other.effectivePolicies_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + effectivePolicies_.AddEntriesFrom(input, _map_effectivePolicies_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + effectivePolicies_.AddEntriesFrom(ref input, _map_effectivePolicies_codec); + break; + } + } + } + } + #endif + + } + #endregion } diff --git a/src/Sdk/Cerbos/Api/V1/Engine/Engine.g.cs b/src/Sdk/Cerbos/Api/V1/Engine/Engine.g.cs index 8858131..8b1ae57 100644 --- a/src/Sdk/Cerbos/Api/V1/Engine/Engine.g.cs +++ b/src/Sdk/Cerbos/Api/V1/Engine/Engine.g.cs @@ -25,186 +25,194 @@ static EngineReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "Ch1jZXJib3MvZW5naW5lL3YxL2VuZ2luZS5wcm90bxIQY2VyYm9zLmVuZ2lu", - "ZS52MRodY2VyYm9zL2VmZmVjdC92MS9lZmZlY3QucHJvdG8aHWNlcmJvcy9z", - "Y2hlbWEvdjEvc2NoZW1hLnByb3RvGiZnb29nbGUvYXBpL2V4cHIvdjFhbHBo", - "YTEvY2hlY2tlZC5wcm90bxofZ29vZ2xlL2FwaS9maWVsZF9iZWhhdmlvci5w", - "cm90bxocZ29vZ2xlL3Byb3RvYnVmL3N0cnVjdC5wcm90bxoucHJvdG9jLWdl", - "bi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxoXdmFsaWRh", - "dGUvdmFsaWRhdGUucHJvdG8i9AkKElBsYW5SZXNvdXJjZXNJbnB1dBIdCgpy", - "ZXF1ZXN0X2lkGAEgASgJUglyZXF1ZXN0SWQSFgoGYWN0aW9uGAIgASgJUgZh", - "Y3Rpb24SOQoJcHJpbmNpcGFsGAMgASgLMhsuY2VyYm9zLmVuZ2luZS52MS5Q", - "cmluY2lwYWxSCXByaW5jaXBhbBJJCghyZXNvdXJjZRgEIAEoCzItLmNlcmJv", - "cy5lbmdpbmUudjEuUGxhblJlc291cmNlc0lucHV0LlJlc291cmNlUghyZXNv", - "dXJjZRI0CghhdXhfZGF0YRgFIAEoCzIZLmNlcmJvcy5lbmdpbmUudjEuQXV4", - "RGF0YVIHYXV4RGF0YRIhCgxpbmNsdWRlX21ldGEYBiABKAhSC2luY2x1ZGVN", - "ZXRhGscHCghSZXNvdXJjZRLHAQoEa2luZBgBIAEoCUKyAZJBYjIOUmVzb3Vy", - "Y2Uga2luZC5KDiJhbGJ1bTpvYmplY3QiigE/XltbOmFscGhhOl1dW1s6d29y", - "ZDpdXEBcLlwtXSooXDpbWzphbHBoYTpdXVtbOndvcmQ6XVxAXC5cLV0qKSok", - "4EEC+kJHckUQATJBXltbOmFscGhhOl1dW1s6d29yZDpdXEBcLlwtL10qKFw6", - "W1s6YWxwaGE6XV1bWzp3b3JkOl1cQFwuXC0vXSopKiRSBGtpbmQSuAEKBGF0", - "dHIYAiADKAsyNy5jZXJib3MuZW5naW5lLnYxLlBsYW5SZXNvdXJjZXNJbnB1", - "dC5SZXNvdXJjZS5BdHRyRW50cnlCa5JBYDJeS2V5LXZhbHVlIHBhaXJzIG9m", - "IGNvbnRleHR1YWwgZGF0YSBhYm91dCB0aGUgcmVzb3VyY2UgdGhhdCBhcmUg", - "a25vd24gYXQgYSB0aW1lIG9mIHRoZSByZXF1ZXN0LvpCBZoBAhgBUgRhdHRy", - "EtwBCg5wb2xpY3lfdmVyc2lvbhgDIAEoCUK0AZJBmQEyfFRoZSBwb2xpY3kg", - "dmVyc2lvbiB0byB1c2UgdG8gZXZhbHVhdGUgdGhpcyByZXF1ZXN0LiBJZiBu", - "b3Qgc3BlY2lmaWVkLCB3aWxsIGRlZmF1bHQgdG8gdGhlIHNlcnZlci1jb25m", - "aWd1cmVkIGRlZmF1bHQgdmVyc2lvbi5KCSJkZWZhdWx0IooBDV5bWzp3b3Jk", - "Ol1dKiTgQQH6QhFyDzINXltbOndvcmQ6XV0qJFINcG9saWN5VmVyc2lvbhKF", - "AgoFc2NvcGUYBCABKAlC7gGSQbEBMn1BIGRvdC1zZXBhcmF0ZWQgc2NvcGUg", - "dGhhdCBkZXNjcmliZXMgdGhlIGhpZXJhcmNoeSB0aGlzIHJlc291cmNlIGJl", - "bG9uZ3MgdG8uIFRoaXMgaXMgdXNlZCBmb3IgZGV0ZXJtaW5pbmcgcG9saWN5", - "IGluaGVyaXRhbmNlLooBL14oW1s6YWxudW06XV1bWzp3b3JkOl1cLV0qKFwu", - "W1s6d29yZDpdXC1dKikqKSok4EEB+kIzcjEyL14oW1s6YWxudW06XV1bWzp3", - "b3JkOl1cLV0qKFwuW1s6d29yZDpdXC1dKikqKSokUgVzY29wZRpPCglBdHRy", - "RW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29n", - "bGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASKhBAoQUGxhblJlc291cmNl", - "c0FzdBJGCgpmaWx0ZXJfYXN0GAEgASgLMicuY2VyYm9zLmVuZ2luZS52MS5Q", - "bGFuUmVzb3VyY2VzQXN0Lk5vZGVSCWZpbHRlckFzdBq7AQoETm9kZRJiChFs", - "b2dpY2FsX29wZXJhdGlvbhgBIAEoCzIzLmNlcmJvcy5lbmdpbmUudjEuUGxh", - "blJlc291cmNlc0FzdC5Mb2dpY2FsT3BlcmF0aW9uSABSEGxvZ2ljYWxPcGVy", - "YXRpb24SRwoKZXhwcmVzc2lvbhgCIAEoCzIlLmdvb2dsZS5hcGkuZXhwci52", - "MWFscGhhMS5DaGVja2VkRXhwckgAUgpleHByZXNzaW9uQgYKBG5vZGUahgIK", - "EExvZ2ljYWxPcGVyYXRpb24SWAoIb3BlcmF0b3IYASABKA4yPC5jZXJib3Mu", - "ZW5naW5lLnYxLlBsYW5SZXNvdXJjZXNBc3QuTG9naWNhbE9wZXJhdGlvbi5P", - "cGVyYXRvclIIb3BlcmF0b3ISPQoFbm9kZXMYAiADKAsyJy5jZXJib3MuZW5n", - "aW5lLnYxLlBsYW5SZXNvdXJjZXNBc3QuTm9kZVIFbm9kZXMiWQoIT3BlcmF0", - "b3ISGAoUT1BFUkFUT1JfVU5TUEVDSUZJRUQQABIQCgxPUEVSQVRPUl9BTkQQ", - "ARIPCgtPUEVSQVRPUl9PUhACEhAKDE9QRVJBVE9SX05PVBADIqQGChNQbGFu", - "UmVzb3VyY2VzRmlsdGVyEq0BCgRraW5kGAEgASgOMiouY2VyYm9zLmVuZ2lu", - "ZS52MS5QbGFuUmVzb3VyY2VzRmlsdGVyLktpbmRCbZJBajJoRmlsdGVyIGtp", - "bmQuIERlZmluZXMgd2hldGhlciB0aGUgZ2l2ZW4gYWN0aW9uIGlzIGFsd2F5", - "cyBhbGxvd2VkLCBhbHdheXMgZGVuaWVkIG9yIGFsbG93ZWQgY29uZGl0aW9u", - "YWxseS5SBGtpbmQSmgEKCWNvbmRpdGlvbhgCIAEoCzI4LmNlcmJvcy5lbmdp", - "bmUudjEuUGxhblJlc291cmNlc0ZpbHRlci5FeHByZXNzaW9uLk9wZXJhbmRC", - "QpJBPzI9RmlsdGVyIGNvbmRpdGlvbi4gT25seSBwb3B1bGF0ZWQgaWYga2lu", - "ZCBpcyBLSU5EX0NPTkRJVElPTkFMLlIJY29uZGl0aW9uGtoCCgpFeHByZXNz", - "aW9uEikKCG9wZXJhdG9yGAEgASgJQg2SQQoyCE9wZXJhdG9yUghvcGVyYXRv", - "chJUCghvcGVyYW5kcxgCIAMoCzI4LmNlcmJvcy5lbmdpbmUudjEuUGxhblJl", - "c291cmNlc0ZpbHRlci5FeHByZXNzaW9uLk9wZXJhbmRSCG9wZXJhbmRzGrMB", - "CgdPcGVyYW5kEi4KBXZhbHVlGAEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZh", - "bHVlSABSBXZhbHVlElIKCmV4cHJlc3Npb24YAiABKAsyMC5jZXJib3MuZW5n", - "aW5lLnYxLlBsYW5SZXNvdXJjZXNGaWx0ZXIuRXhwcmVzc2lvbkgAUgpleHBy", - "ZXNzaW9uEhwKCHZhcmlhYmxlGAMgASgJSABSCHZhcmlhYmxlQgYKBG5vZGU6", - "FZJBEgoQMg5DRUwgZXhwcmVzc2lvbiJjCgRLaW5kEhQKEEtJTkRfVU5TUEVD", - "SUZJRUQQABIXChNLSU5EX0FMV0FZU19BTExPV0VEEAESFgoSS0lORF9BTFdB", - "WVNfREVOSUVEEAISFAoQS0lORF9DT05ESVRJT05BTBADIs8CChNQbGFuUmVz", - "b3VyY2VzT3V0cHV0Eh0KCnJlcXVlc3RfaWQYASABKAlSCXJlcXVlc3RJZBIW", - "CgZhY3Rpb24YAiABKAlSBmFjdGlvbhISCgRraW5kGAMgASgJUgRraW5kEiUK", - "DnBvbGljeV92ZXJzaW9uGAQgASgJUg1wb2xpY3lWZXJzaW9uEhQKBXNjb3Bl", - "GAUgASgJUgVzY29wZRI9CgZmaWx0ZXIYBiABKAsyJS5jZXJib3MuZW5naW5l", - "LnYxLlBsYW5SZXNvdXJjZXNGaWx0ZXJSBmZpbHRlchIhCgxmaWx0ZXJfZGVi", - "dWcYByABKAlSC2ZpbHRlckRlYnVnEk4KEXZhbGlkYXRpb25fZXJyb3JzGAgg", - "AygLMiEuY2VyYm9zLnNjaGVtYS52MS5WYWxpZGF0aW9uRXJyb3JSEHZhbGlk", - "YXRpb25FcnJvcnMimwIKCkNoZWNrSW5wdXQSHQoKcmVxdWVzdF9pZBgBIAEo", - "CVIJcmVxdWVzdElkEkMKCHJlc291cmNlGAIgASgLMhouY2VyYm9zLmVuZ2lu", - "ZS52MS5SZXNvdXJjZUIL4EEC+kIFigECEAFSCHJlc291cmNlEkYKCXByaW5j", - "aXBhbBgDIAEoCzIbLmNlcmJvcy5lbmdpbmUudjEuUHJpbmNpcGFsQgvgQQL6", - "QgWKAQIQAVIJcHJpbmNpcGFsEisKB2FjdGlvbnMYBCADKAlCEeBBAvpCC5IB", - "CBgBIgRyAhABUgdhY3Rpb25zEjQKCGF1eF9kYXRhGAUgASgLMhkuY2VyYm9z", - "LmVuZ2luZS52MS5BdXhEYXRhUgdhdXhEYXRhIqwECgtDaGVja091dHB1dBId", - "CgpyZXF1ZXN0X2lkGAEgASgJUglyZXF1ZXN0SWQSHwoLcmVzb3VyY2VfaWQY", - "AiABKAlSCnJlc291cmNlSWQSRAoHYWN0aW9ucxgDIAMoCzIqLmNlcmJvcy5l", - "bmdpbmUudjEuQ2hlY2tPdXRwdXQuQWN0aW9uc0VudHJ5UgdhY3Rpb25zEjYK", - "F2VmZmVjdGl2ZV9kZXJpdmVkX3JvbGVzGAQgAygJUhVlZmZlY3RpdmVEZXJp", - "dmVkUm9sZXMSTgoRdmFsaWRhdGlvbl9lcnJvcnMYBSADKAsyIS5jZXJib3Mu", - "c2NoZW1hLnYxLlZhbGlkYXRpb25FcnJvclIQdmFsaWRhdGlvbkVycm9ycxI3", - "CgdvdXRwdXRzGAYgAygLMh0uY2VyYm9zLmVuZ2luZS52MS5PdXRwdXRFbnRy", - "eVIHb3V0cHV0cxpuCgxBY3Rpb25FZmZlY3QSMAoGZWZmZWN0GAEgASgOMhgu", - "Y2VyYm9zLmVmZmVjdC52MS5FZmZlY3RSBmVmZmVjdBIWCgZwb2xpY3kYAiAB", - "KAlSBnBvbGljeRIUCgVzY29wZRgDIAEoCVIFc2NvcGUaZgoMQWN0aW9uc0Vu", - "dHJ5EhAKA2tleRgBIAEoCVIDa2V5EkAKBXZhbHVlGAIgASgLMiouY2VyYm9z", - "LmVuZ2luZS52MS5DaGVja091dHB1dC5BY3Rpb25FZmZlY3RSBXZhbHVlOgI4", - "ASLrAQoLT3V0cHV0RW50cnkSZQoDc3JjGAEgASgJQlOSQVAyKVJ1bGUgdGhh", - "dCBtYXRjaGVkIHRvIHByb2R1Y2UgdGhpcyBvdXRwdXQuSiMicmVzb3VyY2Uu", - "ZXhwZW5zZS52MS9hY21lI3J1bGUtMDAxIlIDc3JjEnUKA3ZhbBgCIAEoCzIW", - "Lmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUJLkkFIMjdEeW5hbWljIG91dHB1dCwg", - "ZGV0ZXJtaW5lZCBieSB1c2VyIGRlZmluZWQgcnVsZSBvdXRwdXQuSg0ic29t", - "ZV9zdHJpbmciUgN2YWwiwAgKCFJlc291cmNlEuEBCgRraW5kGAEgASgJQswB", - "kkF8MilOYW1lIG9mIHRoZSByZXNvdXJjZSBraW5kIGJlaW5nIGFjY2Vzc2Vk", - "LkoNImFsYnVtOnBob3RvIooBP15bWzphbHBoYTpdXVtbOndvcmQ6XVxAXC5c", - "LV0qKFw6W1s6YWxwaGE6XV1bWzp3b3JkOl1cQFwuXC1dKikqJOBBAvpCR3JF", - "EAEyQV5bWzphbHBoYTpdXVtbOndvcmQ6XVxAXC5cLS9dKihcOltbOmFscGhh", - "Ol1dW1s6d29yZDpdXEBcLlwtL10qKSokUgRraW5kEtwBCg5wb2xpY3lfdmVy", - "c2lvbhgCIAEoCUK0AZJBmQEyfFRoZSBwb2xpY3kgdmVyc2lvbiB0byB1c2Ug", - "dG8gZXZhbHVhdGUgdGhpcyByZXF1ZXN0LiBJZiBub3Qgc3BlY2lmaWVkLCB3", - "aWxsIGRlZmF1bHQgdG8gdGhlIHNlcnZlci1jb25maWd1cmVkIGRlZmF1bHQg", - "dmVyc2lvbi5KCSJkZWZhdWx0IooBDV5bWzp3b3JkOl1dKiTgQQH6QhFyDzIN", - "XltbOndvcmQ6XV0qJFINcG9saWN5VmVyc2lvbhJDCgJpZBgDIAEoCUIzkkEm", - "MhtJRCBvZiB0aGUgcmVzb3VyY2UgaW5zdGFuY2VKByJYWDEyNSLgQQL6QgRy", - "AhABUgJpZBLFAQoEYXR0chgEIAMoCzIkLmNlcmJvcy5lbmdpbmUudjEuUmVz", - "b3VyY2UuQXR0ckVudHJ5QooBkkF/MmRLYXktdmFsdWUgcGFpcnMgb2YgY29u", - "dGV4dHVhbCBkYXRhIGFib3V0IHRoaXMgcmVzb3VyY2UgdGhhdCBzaG91bGQg", - "YmUgdXNlZCBkdXJpbmcgcG9saWN5IGV2YWx1YXRpb24uShd7Im93bmVyIjog", - "ImJ1Z3NfYnVubnkiffpCBZoBAhgBUgRhdHRyEpICCgVzY29wZRgFIAEoCUL7", - "AZJBvgEyfUEgZG90LXNlcGFyYXRlZCBzY29wZSB0aGF0IGRlc2NyaWJlcyB0", - "aGUgaGllcmFyY2h5IHRoaXMgcmVzb3VyY2UgYmVsb25ncyB0by4gVGhpcyBp", - "cyB1c2VkIGZvciBkZXRlcm1pbmluZyBwb2xpY3kgaW5oZXJpdGFuY2UuSgsi", - "YWNtZS5jb3JwIooBL14oW1s6YWxudW06XV1bWzp3b3JkOl1cLV0qKFwuW1s6", - "d29yZDpdXC1dKikqKSok4EEB+kIzcjEyL14oW1s6YWxudW06XV1bWzp3b3Jk", - "Ol1cLV0qKFwuW1s6d29yZDpdXC1dKikqKSokUgVzY29wZRpPCglBdHRyRW50", + "ZS52MRobYnVmL3ZhbGlkYXRlL3ZhbGlkYXRlLnByb3RvGh1jZXJib3MvZWZm", + "ZWN0L3YxL2VmZmVjdC5wcm90bxodY2VyYm9zL3NjaGVtYS92MS9zY2hlbWEu", + "cHJvdG8aJmdvb2dsZS9hcGkvZXhwci92MWFscGhhMS9jaGVja2VkLnByb3Rv", + "Gh9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvGhxnb29nbGUvcHJv", + "dG9idWYvc3RydWN0LnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRp", + "b25zL2Fubm90YXRpb25zLnByb3RvIugIChJQbGFuUmVzb3VyY2VzSW5wdXQS", + "HQoKcmVxdWVzdF9pZBgBIAEoCVIJcmVxdWVzdElkEhYKBmFjdGlvbhgCIAEo", + "CVIGYWN0aW9uEjkKCXByaW5jaXBhbBgDIAEoCzIbLmNlcmJvcy5lbmdpbmUu", + "djEuUHJpbmNpcGFsUglwcmluY2lwYWwSSQoIcmVzb3VyY2UYBCABKAsyLS5j", + "ZXJib3MuZW5naW5lLnYxLlBsYW5SZXNvdXJjZXNJbnB1dC5SZXNvdXJjZVII", + "cmVzb3VyY2USNAoIYXV4X2RhdGEYBSABKAsyGS5jZXJib3MuZW5naW5lLnYx", + "LkF1eERhdGFSB2F1eERhdGESIQoMaW5jbHVkZV9tZXRhGAYgASgIUgtpbmNs", + "dWRlTWV0YRq7BgoIUmVzb3VyY2USRAoEa2luZBgBIAEoCUIwkkEgMg5SZXNv", + "dXJjZSBraW5kLkoOImFsYnVtOm9iamVjdCLgQQK6SAfIAQFyAhABUgRraW5k", + "ErABCgRhdHRyGAIgAygLMjcuY2VyYm9zLmVuZ2luZS52MS5QbGFuUmVzb3Vy", + "Y2VzSW5wdXQuUmVzb3VyY2UuQXR0ckVudHJ5QmOSQWAyXktleS12YWx1ZSBw", + "YWlycyBvZiBjb250ZXh0dWFsIGRhdGEgYWJvdXQgdGhlIHJlc291cmNlIHRo", + "YXQgYXJlIGtub3duIGF0IGEgdGltZSBvZiB0aGUgcmVxdWVzdC5SBGF0dHIS", + "3AEKDnBvbGljeV92ZXJzaW9uGAMgASgJQrQBkkGZATJ8VGhlIHBvbGljeSB2", + "ZXJzaW9uIHRvIHVzZSB0byBldmFsdWF0ZSB0aGlzIHJlcXVlc3QuIElmIG5v", + "dCBzcGVjaWZpZWQsIHdpbGwgZGVmYXVsdCB0byB0aGUgc2VydmVyLWNvbmZp", + "Z3VyZWQgZGVmYXVsdCB2ZXJzaW9uLkoJImRlZmF1bHQiigENXltbOndvcmQ6", + "XV0qJOBBAbpIEXIPMg1eW1s6d29yZDpdXSokUg1wb2xpY3lWZXJzaW9uEoUC", + "CgVzY29wZRgEIAEoCULuAZJBsQEyfUEgZG90LXNlcGFyYXRlZCBzY29wZSB0", + "aGF0IGRlc2NyaWJlcyB0aGUgaGllcmFyY2h5IHRoaXMgcmVzb3VyY2UgYmVs", + "b25ncyB0by4gVGhpcyBpcyB1c2VkIGZvciBkZXRlcm1pbmluZyBwb2xpY3kg", + "aW5oZXJpdGFuY2UuigEvXihbWzphbG51bTpdXVtbOndvcmQ6XVwtXSooXC5b", + "Wzp3b3JkOl1cLV0qKSopKiTgQQG6SDNyMTIvXihbWzphbG51bTpdXVtbOndv", + "cmQ6XVwtXSooXC5bWzp3b3JkOl1cLV0qKSopKiRSBXNjb3BlGk8KCUF0dHJF", + "bnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2ds", + "ZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIqEEChBQbGFuUmVzb3VyY2Vz", + "QXN0EkYKCmZpbHRlcl9hc3QYASABKAsyJy5jZXJib3MuZW5naW5lLnYxLlBs", + "YW5SZXNvdXJjZXNBc3QuTm9kZVIJZmlsdGVyQXN0GrsBCgROb2RlEmIKEWxv", + "Z2ljYWxfb3BlcmF0aW9uGAEgASgLMjMuY2VyYm9zLmVuZ2luZS52MS5QbGFu", + "UmVzb3VyY2VzQXN0LkxvZ2ljYWxPcGVyYXRpb25IAFIQbG9naWNhbE9wZXJh", + "dGlvbhJHCgpleHByZXNzaW9uGAIgASgLMiUuZ29vZ2xlLmFwaS5leHByLnYx", + "YWxwaGExLkNoZWNrZWRFeHBySABSCmV4cHJlc3Npb25CBgoEbm9kZRqGAgoQ", + "TG9naWNhbE9wZXJhdGlvbhJYCghvcGVyYXRvchgBIAEoDjI8LmNlcmJvcy5l", + "bmdpbmUudjEuUGxhblJlc291cmNlc0FzdC5Mb2dpY2FsT3BlcmF0aW9uLk9w", + "ZXJhdG9yUghvcGVyYXRvchI9CgVub2RlcxgCIAMoCzInLmNlcmJvcy5lbmdp", + "bmUudjEuUGxhblJlc291cmNlc0FzdC5Ob2RlUgVub2RlcyJZCghPcGVyYXRv", + "chIYChRPUEVSQVRPUl9VTlNQRUNJRklFRBAAEhAKDE9QRVJBVE9SX0FORBAB", + "Eg8KC09QRVJBVE9SX09SEAISEAoMT1BFUkFUT1JfTk9UEAMipAYKE1BsYW5S", + "ZXNvdXJjZXNGaWx0ZXISrQEKBGtpbmQYASABKA4yKi5jZXJib3MuZW5naW5l", + "LnYxLlBsYW5SZXNvdXJjZXNGaWx0ZXIuS2luZEJtkkFqMmhGaWx0ZXIga2lu", + "ZC4gRGVmaW5lcyB3aGV0aGVyIHRoZSBnaXZlbiBhY3Rpb24gaXMgYWx3YXlz", + "IGFsbG93ZWQsIGFsd2F5cyBkZW5pZWQgb3IgYWxsb3dlZCBjb25kaXRpb25h", + "bGx5LlIEa2luZBKaAQoJY29uZGl0aW9uGAIgASgLMjguY2VyYm9zLmVuZ2lu", + "ZS52MS5QbGFuUmVzb3VyY2VzRmlsdGVyLkV4cHJlc3Npb24uT3BlcmFuZEJC", + "kkE/Mj1GaWx0ZXIgY29uZGl0aW9uLiBPbmx5IHBvcHVsYXRlZCBpZiBraW5k", + "IGlzIEtJTkRfQ09ORElUSU9OQUwuUgljb25kaXRpb24a2gIKCkV4cHJlc3Np", + "b24SKQoIb3BlcmF0b3IYASABKAlCDZJBCjIIT3BlcmF0b3JSCG9wZXJhdG9y", + "ElQKCG9wZXJhbmRzGAIgAygLMjguY2VyYm9zLmVuZ2luZS52MS5QbGFuUmVz", + "b3VyY2VzRmlsdGVyLkV4cHJlc3Npb24uT3BlcmFuZFIIb3BlcmFuZHMaswEK", + "B09wZXJhbmQSLgoFdmFsdWUYASABKAsyFi5nb29nbGUucHJvdG9idWYuVmFs", + "dWVIAFIFdmFsdWUSUgoKZXhwcmVzc2lvbhgCIAEoCzIwLmNlcmJvcy5lbmdp", + "bmUudjEuUGxhblJlc291cmNlc0ZpbHRlci5FeHByZXNzaW9uSABSCmV4cHJl", + "c3Npb24SHAoIdmFyaWFibGUYAyABKAlIAFIIdmFyaWFibGVCBgoEbm9kZToV", + "kkESChAyDkNFTCBleHByZXNzaW9uImMKBEtpbmQSFAoQS0lORF9VTlNQRUNJ", + "RklFRBAAEhcKE0tJTkRfQUxXQVlTX0FMTE9XRUQQARIWChJLSU5EX0FMV0FZ", + "U19ERU5JRUQQAhIUChBLSU5EX0NPTkRJVElPTkFMEAMizwIKE1BsYW5SZXNv", + "dXJjZXNPdXRwdXQSHQoKcmVxdWVzdF9pZBgBIAEoCVIJcmVxdWVzdElkEhYK", + "BmFjdGlvbhgCIAEoCVIGYWN0aW9uEhIKBGtpbmQYAyABKAlSBGtpbmQSJQoO", + "cG9saWN5X3ZlcnNpb24YBCABKAlSDXBvbGljeVZlcnNpb24SFAoFc2NvcGUY", + "BSABKAlSBXNjb3BlEj0KBmZpbHRlchgGIAEoCzIlLmNlcmJvcy5lbmdpbmUu", + "djEuUGxhblJlc291cmNlc0ZpbHRlclIGZmlsdGVyEiEKDGZpbHRlcl9kZWJ1", + "ZxgHIAEoCVILZmlsdGVyRGVidWcSTgoRdmFsaWRhdGlvbl9lcnJvcnMYCCAD", + "KAsyIS5jZXJib3Muc2NoZW1hLnYxLlZhbGlkYXRpb25FcnJvclIQdmFsaWRh", + "dGlvbkVycm9ycyKXAgoKQ2hlY2tJbnB1dBIdCgpyZXF1ZXN0X2lkGAEgASgJ", + "UglyZXF1ZXN0SWQSQQoIcmVzb3VyY2UYAiABKAsyGi5jZXJib3MuZW5naW5l", + "LnYxLlJlc291cmNlQgngQQK6SAPIAQFSCHJlc291cmNlEkQKCXByaW5jaXBh", + "bBgDIAEoCzIbLmNlcmJvcy5lbmdpbmUudjEuUHJpbmNpcGFsQgngQQK6SAPI", + "AQFSCXByaW5jaXBhbBIrCgdhY3Rpb25zGAQgAygJQhHgQQK6SAuSAQgYASIE", + "cgIQAVIHYWN0aW9ucxI0CghhdXhfZGF0YRgFIAEoCzIZLmNlcmJvcy5lbmdp", + "bmUudjEuQXV4RGF0YVIHYXV4RGF0YSKsBAoLQ2hlY2tPdXRwdXQSHQoKcmVx", + "dWVzdF9pZBgBIAEoCVIJcmVxdWVzdElkEh8KC3Jlc291cmNlX2lkGAIgASgJ", + "UgpyZXNvdXJjZUlkEkQKB2FjdGlvbnMYAyADKAsyKi5jZXJib3MuZW5naW5l", + "LnYxLkNoZWNrT3V0cHV0LkFjdGlvbnNFbnRyeVIHYWN0aW9ucxI2ChdlZmZl", + "Y3RpdmVfZGVyaXZlZF9yb2xlcxgEIAMoCVIVZWZmZWN0aXZlRGVyaXZlZFJv", + "bGVzEk4KEXZhbGlkYXRpb25fZXJyb3JzGAUgAygLMiEuY2VyYm9zLnNjaGVt", + "YS52MS5WYWxpZGF0aW9uRXJyb3JSEHZhbGlkYXRpb25FcnJvcnMSNwoHb3V0", + "cHV0cxgGIAMoCzIdLmNlcmJvcy5lbmdpbmUudjEuT3V0cHV0RW50cnlSB291", + "dHB1dHMabgoMQWN0aW9uRWZmZWN0EjAKBmVmZmVjdBgBIAEoDjIYLmNlcmJv", + "cy5lZmZlY3QudjEuRWZmZWN0UgZlZmZlY3QSFgoGcG9saWN5GAIgASgJUgZw", + "b2xpY3kSFAoFc2NvcGUYAyABKAlSBXNjb3BlGmYKDEFjdGlvbnNFbnRyeRIQ", + "CgNrZXkYASABKAlSA2tleRJACgV2YWx1ZRgCIAEoCzIqLmNlcmJvcy5lbmdp", + "bmUudjEuQ2hlY2tPdXRwdXQuQWN0aW9uRWZmZWN0UgV2YWx1ZToCOAEi6wEK", + "C091dHB1dEVudHJ5EmUKA3NyYxgBIAEoCUJTkkFQMilSdWxlIHRoYXQgbWF0", + "Y2hlZCB0byBwcm9kdWNlIHRoaXMgb3V0cHV0LkojInJlc291cmNlLmV4cGVu", + "c2UudjEvYWNtZSNydWxlLTAwMSJSA3NyYxJ1CgN2YWwYAiABKAsyFi5nb29n", + "bGUucHJvdG9idWYuVmFsdWVCS5JBSDI3RHluYW1pYyBvdXRwdXQsIGRldGVy", + "bWluZWQgYnkgdXNlciBkZWZpbmVkIHJ1bGUgb3V0cHV0LkoNInNvbWVfc3Ry", + "aW5nIlIDdmFsIsgHCghSZXNvdXJjZRJeCgRraW5kGAEgASgJQkqSQToyKU5h", + "bWUgb2YgdGhlIHJlc291cmNlIGtpbmQgYmVpbmcgYWNjZXNzZWQuSg0iYWxi", + "dW06cGhvdG8i4EECukgHyAEBcgIQAVIEa2luZBLcAQoOcG9saWN5X3ZlcnNp", + "b24YAiABKAlCtAGSQZkBMnxUaGUgcG9saWN5IHZlcnNpb24gdG8gdXNlIHRv", + "IGV2YWx1YXRlIHRoaXMgcmVxdWVzdC4gSWYgbm90IHNwZWNpZmllZCwgd2ls", + "bCBkZWZhdWx0IHRvIHRoZSBzZXJ2ZXItY29uZmlndXJlZCBkZWZhdWx0IHZl", + "cnNpb24uSgkiZGVmYXVsdCKKAQ1eW1s6d29yZDpdXSok4EEBukgRcg8yDV5b", + "Wzp3b3JkOl1dKiRSDXBvbGljeVZlcnNpb24SRgoCaWQYAyABKAlCNpJBJjIb", + "SUQgb2YgdGhlIHJlc291cmNlIGluc3RhbmNlSgciWFgxMjUi4EECukgHyAEB", + "cgIQAVICaWQSzgEKBGF0dHIYBCADKAsyJC5jZXJib3MuZW5naW5lLnYxLlJl", + "c291cmNlLkF0dHJFbnRyeUKTAZJBfzJkS2F5LXZhbHVlIHBhaXJzIG9mIGNv", + "bnRleHR1YWwgZGF0YSBhYm91dCB0aGlzIHJlc291cmNlIHRoYXQgc2hvdWxk", + "IGJlIHVzZWQgZHVyaW5nIHBvbGljeSBldmFsdWF0aW9uLkoXeyJvd25lciI6", + "ICJidWdzX2J1bm55In26SA6aAQsiBHICEAEqA8gBAVIEYXR0chKSAgoFc2Nv", + "cGUYBSABKAlC+wGSQb4BMn1BIGRvdC1zZXBhcmF0ZWQgc2NvcGUgdGhhdCBk", + "ZXNjcmliZXMgdGhlIGhpZXJhcmNoeSB0aGlzIHJlc291cmNlIGJlbG9uZ3Mg", + "dG8uIFRoaXMgaXMgdXNlZCBmb3IgZGV0ZXJtaW5pbmcgcG9saWN5IGluaGVy", + "aXRhbmNlLkoLImFjbWUuY29ycCKKAS9eKFtbOmFsbnVtOl1dW1s6d29yZDpd", + "XC1dKihcLltbOndvcmQ6XVwtXSopKikqJOBBAbpIM3IxMi9eKFtbOmFsbnVt", + "Ol1dW1s6d29yZDpdXC1dKihcLltbOndvcmQ6XVwtXSopKikqJFIFc2NvcGUa", + "TwoJQXR0ckVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgL", + "MhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEizAgKCVByaW5j", + "aXBhbBJDCgJpZBgBIAEoCUIzkkEjMhNJRCBvZiB0aGUgcHJpbmNpcGFsSgwi", + "YnVnc19idW5ueSLgQQK6SAfIAQFyAhABUgJpZBLcAQoOcG9saWN5X3ZlcnNp", + "b24YAiABKAlCtAGSQZkBMnxUaGUgcG9saWN5IHZlcnNpb24gdG8gdXNlIHRv", + "IGV2YWx1YXRlIHRoaXMgcmVxdWVzdC4gSWYgbm90IHNwZWNpZmllZCwgd2ls", + "bCBkZWZhdWx0IHRvIHRoZSBzZXJ2ZXItY29uZmlndXJlZCBkZWZhdWx0IHZl", + "cnNpb24uSgkiZGVmYXVsdCKKAQ1eW1s6d29yZDpdXSok4EEBukgRcg8yDV5b", + "Wzp3b3JkOl1dKiRSDXBvbGljeVZlcnNpb24ShwEKBXJvbGVzGAMgAygJQnGS", + "QVgyRlJvbGVzIGFzc2lnbmVkIHRvIHRoaXMgcHJpbmNpcGFsIGZyb20geW91", + "ciBpZGVudGl0eSBtYW5hZ2VtZW50IHN5c3RlbS5KCFsidXNlciJdqAEBsAEB", + "4EECukgQyAEBkgEKCAEYASIEcgIQAVIFcm9sZXMSzgEKBGF0dHIYBCADKAsy", + "JS5jZXJib3MuZW5naW5lLnYxLlByaW5jaXBhbC5BdHRyRW50cnlCkgGSQX4y", + "ZUtleS12YWx1ZSBwYWlycyBvZiBjb250ZXh0dWFsIGRhdGEgYWJvdXQgdGhp", + "cyBwcmluY2lwYWwgdGhhdCBzaG91bGQgYmUgdXNlZCBkdXJpbmcgcG9saWN5", + "IGV2YWx1YXRpb24uShV7ImJldGFfdGVzdGVyIjogdHJ1ZX26SA6aAQsiBHIC", + "EAEqA8gBAVIEYXR0chKTAgoFc2NvcGUYBSABKAlC/AGSQb8BMn5BIGRvdC1z", + "ZXBhcmF0ZWQgc2NvcGUgdGhhdCBkZXNjcmliZXMgdGhlIGhpZXJhcmNoeSB0", + "aGlzIHByaW5jaXBhbCBiZWxvbmdzIHRvLiBUaGlzIGlzIHVzZWQgZm9yIGRl", + "dGVybWluaW5nIHBvbGljeSBpbmhlcml0YW5jZS5KCyJhY21lLmNvcnAiigEv", + "XihbWzphbG51bTpdXVtbOndvcmQ6XVwtXSooXC5bWzp3b3JkOl1cLV0qKSop", + "KiTgQQG6SDNyMTIvXihbWzphbG51bTpdXVtbOndvcmQ6XVwtXSooXC5bWzp3", + "b3JkOl1cLV0qKSopKiRSBXNjb3BlGk8KCUF0dHJFbnRyeRIQCgNrZXkYASAB", + "KAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1", + "ZVIFdmFsdWU6AjgBOlmSQVYKVDJSQSBwZXJzb24gb3IgYXBwbGljYXRpb24g", + "YXR0ZW1wdGluZyB0byBwZXJmb3JtIHRoZSBhY3Rpb25zIG9uIHRoZSBzZXQg", + "b2YgcmVzb3VyY2VzLiKxAQoHQXV4RGF0YRI0CgNqd3QYASADKAsyIi5jZXJi", + "b3MuZW5naW5lLnYxLkF1eERhdGEuSnd0RW50cnlSA2p3dBpOCghKd3RFbnRy", + "eRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5w", + "cm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBOiCSQR0KGzIZU3RydWN0dXJlZCBh", + "dXhpbGlhcnkgZGF0YSKTCQoFVHJhY2USQQoKY29tcG9uZW50cxgBIAMoCzIh", + "LmNlcmJvcy5lbmdpbmUudjEuVHJhY2UuQ29tcG9uZW50Ugpjb21wb25lbnRz", + "EjMKBWV2ZW50GAIgASgLMh0uY2VyYm9zLmVuZ2luZS52MS5UcmFjZS5FdmVu", + "dFIFZXZlbnQa6wUKCUNvbXBvbmVudBI6CgRraW5kGAEgASgOMiYuY2VyYm9z", + "LmVuZ2luZS52MS5UcmFjZS5Db21wb25lbnQuS2luZFIEa2luZBIYCgZhY3Rp", + "b24YAiABKAlIAFIGYWN0aW9uEiMKDGRlcml2ZWRfcm9sZRgDIAEoCUgAUgtk", + "ZXJpdmVkUm9sZRIUCgRleHByGAQgASgJSABSBGV4cHISFgoFaW5kZXgYBSAB", + "KA1IAFIFaW5kZXgSGAoGcG9saWN5GAYgASgJSABSBnBvbGljeRIcCghyZXNv", + "dXJjZRgHIAEoCUgAUghyZXNvdXJjZRIUCgRydWxlGAggASgJSABSBHJ1bGUS", + "FgoFc2NvcGUYCSABKAlIAFIFc2NvcGUSSAoIdmFyaWFibGUYCiABKAsyKi5j", + "ZXJib3MuZW5naW5lLnYxLlRyYWNlLkNvbXBvbmVudC5WYXJpYWJsZUgAUgh2", + "YXJpYWJsZRIYCgZvdXRwdXQYCyABKAlIAFIGb3V0cHV0GjIKCFZhcmlhYmxl", + "EhIKBG5hbWUYASABKAlSBG5hbWUSEgoEZXhwchgCIAEoCVIEZXhwciKrAgoE", + "S2luZBIUChBLSU5EX1VOU1BFQ0lGSUVEEAASDwoLS0lORF9BQ1RJT04QARIW", + "ChJLSU5EX0NPTkRJVElPTl9BTEwQAhIWChJLSU5EX0NPTkRJVElPTl9BTlkQ", + "AxIXChNLSU5EX0NPTkRJVElPTl9OT05FEAQSEgoOS0lORF9DT05ESVRJT04Q", + "BRIVChFLSU5EX0RFUklWRURfUk9MRRAGEg0KCUtJTkRfRVhQUhAHEg8KC0tJ", + "TkRfUE9MSUNZEAgSEQoNS0lORF9SRVNPVVJDRRAJEg0KCUtJTkRfUlVMRRAK", + "Eg4KCktJTkRfU0NPUEUQCxIRCg1LSU5EX1ZBUklBQkxFEAwSEgoOS0lORF9W", + "QVJJQUJMRVMQDRIPCgtLSU5EX09VVFBVVBAOQgkKB2RldGFpbHMaowIKBUV2", + "ZW50EjwKBnN0YXR1cxgBIAEoDjIkLmNlcmJvcy5lbmdpbmUudjEuVHJhY2Uu", + "RXZlbnQuU3RhdHVzUgZzdGF0dXMSMAoGZWZmZWN0GAIgASgOMhguY2VyYm9z", + "LmVmZmVjdC52MS5FZmZlY3RSBmVmZmVjdBIUCgVlcnJvchgDIAEoCVIFZXJy", + "b3ISGAoHbWVzc2FnZRgEIAEoCVIHbWVzc2FnZRIuCgZyZXN1bHQYBSABKAsy", + "Fi5nb29nbGUucHJvdG9idWYuVmFsdWVSBnJlc3VsdCJKCgZTdGF0dXMSFgoS", + "U1RBVFVTX1VOU1BFQ0lGSUVEEAASFAoQU1RBVFVTX0FDVElWQVRFRBABEhIK", + "DlNUQVRVU19TS0lQUEVEEAIizgQKB1JlcXVlc3QSQQoJcHJpbmNpcGFsGAEg", + "ASgLMiMuY2VyYm9zLmVuZ2luZS52MS5SZXF1ZXN0LlByaW5jaXBhbFIJcHJp", + "bmNpcGFsEj4KCHJlc291cmNlGAIgASgLMiIuY2VyYm9zLmVuZ2luZS52MS5S", + "ZXF1ZXN0LlJlc291cmNlUghyZXNvdXJjZRI0CghhdXhfZGF0YRgDIAEoCzIZ", + "LmNlcmJvcy5lbmdpbmUudjEuQXV4RGF0YVIHYXV4RGF0YRrFAQoJUHJpbmNp", + "cGFsEg4KAmlkGAEgASgJUgJpZBIUCgVyb2xlcxgCIAMoCVIFcm9sZXMSQQoE", + "YXR0chgDIAMoCzItLmNlcmJvcy5lbmdpbmUudjEuUmVxdWVzdC5QcmluY2lw", + "YWwuQXR0ckVudHJ5UgRhdHRyGk8KCUF0dHJFbnRyeRIQCgNrZXkYASABKAlS", + "A2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIF", + "dmFsdWU6AjgBGsEBCghSZXNvdXJjZRISCgRraW5kGAEgASgJUgRraW5kEg4K", + "AmlkGAIgASgJUgJpZBJACgRhdHRyGAMgAygLMiwuY2VyYm9zLmVuZ2luZS52", + "MS5SZXF1ZXN0LlJlc291cmNlLkF0dHJFbnRyeVIEYXR0chpPCglBdHRyRW50", "cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUu", - "cHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASLjCAoJUHJpbmNpcGFsEkAKAmlk", - "GAEgASgJQjCSQSMyE0lEIG9mIHRoZSBwcmluY2lwYWxKDCJidWdzX2J1bm55", - "IuBBAvpCBHICEAFSAmlkEtwBCg5wb2xpY3lfdmVyc2lvbhgCIAEoCUK0AZJB", - "mQEyfFRoZSBwb2xpY3kgdmVyc2lvbiB0byB1c2UgdG8gZXZhbHVhdGUgdGhp", - "cyByZXF1ZXN0LiBJZiBub3Qgc3BlY2lmaWVkLCB3aWxsIGRlZmF1bHQgdG8g", - "dGhlIHNlcnZlci1jb25maWd1cmVkIGRlZmF1bHQgdmVyc2lvbi5KCSJkZWZh", - "dWx0IooBDV5bWzp3b3JkOl1dKiTgQQH6QhFyDzINXltbOndvcmQ6XV0qJFIN", - "cG9saWN5VmVyc2lvbhKqAQoFcm9sZXMYAyADKAlCkwGSQWwyRlJvbGVzIGFz", - "c2lnbmVkIHRvIHRoaXMgcHJpbmNpcGFsIGZyb20geW91ciBpZGVudGl0eSBt", - "YW5hZ2VtZW50IHN5c3RlbS5KCFsidXNlciJdigERXltbOndvcmQ6XVwtXC5d", - "KySoAQGwAQHgQQL6Qh6SARsIARgBIhVyEzIRXltbOndvcmQ6XVwtXC5dKyRS", - "BXJvbGVzEsUBCgRhdHRyGAQgAygLMiUuY2VyYm9zLmVuZ2luZS52MS5Qcmlu", - "Y2lwYWwuQXR0ckVudHJ5QokBkkF+MmVLZXktdmFsdWUgcGFpcnMgb2YgY29u", - "dGV4dHVhbCBkYXRhIGFib3V0IHRoaXMgcHJpbmNpcGFsIHRoYXQgc2hvdWxk", - "IGJlIHVzZWQgZHVyaW5nIHBvbGljeSBldmFsdWF0aW9uLkoVeyJiZXRhX3Rl", - "c3RlciI6IHRydWV9+kIFmgECGAFSBGF0dHISkwIKBXNjb3BlGAUgASgJQvwB", - "kkG/ATJ+QSBkb3Qtc2VwYXJhdGVkIHNjb3BlIHRoYXQgZGVzY3JpYmVzIHRo", - "ZSBoaWVyYXJjaHkgdGhpcyBwcmluY2lwYWwgYmVsb25ncyB0by4gVGhpcyBp", - "cyB1c2VkIGZvciBkZXRlcm1pbmluZyBwb2xpY3kgaW5oZXJpdGFuY2UuSgsi", - "YWNtZS5jb3JwIooBL14oW1s6YWxudW06XV1bWzp3b3JkOl1cLV0qKFwuW1s6", - "d29yZDpdXC1dKikqKSok4EEB+kIzcjEyL14oW1s6YWxudW06XV1bWzp3b3Jk", - "Ol1cLV0qKFwuW1s6d29yZDpdXC1dKikqKSokUgVzY29wZRpPCglBdHRyRW50", - "cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUu", - "cHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ATpZkkFWClQyUkEgcGVyc29uIG9y", - "IGFwcGxpY2F0aW9uIGF0dGVtcHRpbmcgdG8gcGVyZm9ybSB0aGUgYWN0aW9u", - "cyBvbiB0aGUgc2V0IG9mIHJlc291cmNlcy4isQEKB0F1eERhdGESNAoDand0", - "GAEgAygLMiIuY2VyYm9zLmVuZ2luZS52MS5BdXhEYXRhLkp3dEVudHJ5UgNq", - "d3QaTgoISnd0RW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiAB", - "KAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ATogkkEdChsy", - "GVN0cnVjdHVyZWQgYXV4aWxpYXJ5IGRhdGEikwkKBVRyYWNlEkEKCmNvbXBv", - "bmVudHMYASADKAsyIS5jZXJib3MuZW5naW5lLnYxLlRyYWNlLkNvbXBvbmVu", - "dFIKY29tcG9uZW50cxIzCgVldmVudBgCIAEoCzIdLmNlcmJvcy5lbmdpbmUu", - "djEuVHJhY2UuRXZlbnRSBWV2ZW50GusFCglDb21wb25lbnQSOgoEa2luZBgB", - "IAEoDjImLmNlcmJvcy5lbmdpbmUudjEuVHJhY2UuQ29tcG9uZW50LktpbmRS", - "BGtpbmQSGAoGYWN0aW9uGAIgASgJSABSBmFjdGlvbhIjCgxkZXJpdmVkX3Jv", - "bGUYAyABKAlIAFILZGVyaXZlZFJvbGUSFAoEZXhwchgEIAEoCUgAUgRleHBy", - "EhYKBWluZGV4GAUgASgNSABSBWluZGV4EhgKBnBvbGljeRgGIAEoCUgAUgZw", - "b2xpY3kSHAoIcmVzb3VyY2UYByABKAlIAFIIcmVzb3VyY2USFAoEcnVsZRgI", - "IAEoCUgAUgRydWxlEhYKBXNjb3BlGAkgASgJSABSBXNjb3BlEkgKCHZhcmlh", - "YmxlGAogASgLMiouY2VyYm9zLmVuZ2luZS52MS5UcmFjZS5Db21wb25lbnQu", - "VmFyaWFibGVIAFIIdmFyaWFibGUSGAoGb3V0cHV0GAsgASgJSABSBm91dHB1", - "dBoyCghWYXJpYWJsZRISCgRuYW1lGAEgASgJUgRuYW1lEhIKBGV4cHIYAiAB", - "KAlSBGV4cHIiqwIKBEtpbmQSFAoQS0lORF9VTlNQRUNJRklFRBAAEg8KC0tJ", - "TkRfQUNUSU9OEAESFgoSS0lORF9DT05ESVRJT05fQUxMEAISFgoSS0lORF9D", - "T05ESVRJT05fQU5ZEAMSFwoTS0lORF9DT05ESVRJT05fTk9ORRAEEhIKDktJ", - "TkRfQ09ORElUSU9OEAUSFQoRS0lORF9ERVJJVkVEX1JPTEUQBhINCglLSU5E", - "X0VYUFIQBxIPCgtLSU5EX1BPTElDWRAIEhEKDUtJTkRfUkVTT1VSQ0UQCRIN", - "CglLSU5EX1JVTEUQChIOCgpLSU5EX1NDT1BFEAsSEQoNS0lORF9WQVJJQUJM", - "RRAMEhIKDktJTkRfVkFSSUFCTEVTEA0SDwoLS0lORF9PVVRQVVQQDkIJCgdk", - "ZXRhaWxzGqMCCgVFdmVudBI8CgZzdGF0dXMYASABKA4yJC5jZXJib3MuZW5n", - "aW5lLnYxLlRyYWNlLkV2ZW50LlN0YXR1c1IGc3RhdHVzEjAKBmVmZmVjdBgC", - "IAEoDjIYLmNlcmJvcy5lZmZlY3QudjEuRWZmZWN0UgZlZmZlY3QSFAoFZXJy", - "b3IYAyABKAlSBWVycm9yEhgKB21lc3NhZ2UYBCABKAlSB21lc3NhZ2USLgoG", - "cmVzdWx0GAUgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgZyZXN1bHQi", - "SgoGU3RhdHVzEhYKElNUQVRVU19VTlNQRUNJRklFRBAAEhQKEFNUQVRVU19B", - "Q1RJVkFURUQQARISCg5TVEFUVVNfU0tJUFBFRBACQm8KGGRldi5jZXJib3Mu", - "YXBpLnYxLmVuZ2luZVo8Z2l0aHViLmNvbS9jZXJib3MvY2VyYm9zL2FwaS9n", - "ZW5wYi9jZXJib3MvZW5naW5lL3YxO2VuZ2luZXYxqgIUQ2VyYm9zLkFwaS5W", - "MS5FbmdpbmViBnByb3RvMw==")); + "cHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ASJBCgdSdW50aW1lEjYKF2VmZmVj", + "dGl2ZV9kZXJpdmVkX3JvbGVzGAEgAygJUhVlZmZlY3RpdmVEZXJpdmVkUm9s", + "ZXNCbwoYZGV2LmNlcmJvcy5hcGkudjEuZW5naW5lWjxnaXRodWIuY29tL2Nl", + "cmJvcy9jZXJib3MvYXBpL2dlbnBiL2NlcmJvcy9lbmdpbmUvdjE7ZW5naW5l", + "djGqAhRDZXJib3MuQXBpLlYxLkVuZ2luZWIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Cerbos.Api.V1.Effect.EffectReflection.Descriptor, global::Cerbos.Api.V1.Schema.SchemaReflection.Descriptor, global::Google.Api.Expr.V1Alpha1.CheckedReflection.Descriptor, global::Google.Api.FieldBehaviorReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor, global::Grpc.Gateway.ProtocGenOpenapiv2.Options.AnnotationsReflection.Descriptor, global::Validate.ValidateReflection.Descriptor, }, + new pbr::FileDescriptor[] { global::Buf.Validate.ValidateReflection.Descriptor, global::Cerbos.Api.V1.Effect.EffectReflection.Descriptor, global::Cerbos.Api.V1.Schema.SchemaReflection.Descriptor, global::Google.Api.Expr.V1Alpha1.CheckedReflection.Descriptor, global::Google.Api.FieldBehaviorReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor, global::Grpc.Gateway.ProtocGenOpenapiv2.Options.AnnotationsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.PlanResourcesInput), global::Cerbos.Api.V1.Engine.PlanResourcesInput.Parser, new[]{ "RequestId", "Action", "Principal", "Resource", "AuxData", "IncludeMeta" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.PlanResourcesInput.Types.Resource), global::Cerbos.Api.V1.Engine.PlanResourcesInput.Types.Resource.Parser, new[]{ "Kind", "Attr", "PolicyVersion", "Scope" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, })}), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.PlanResourcesAst), global::Cerbos.Api.V1.Engine.PlanResourcesAst.Parser, new[]{ "FilterAst" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.PlanResourcesAst.Types.Node), global::Cerbos.Api.V1.Engine.PlanResourcesAst.Types.Node.Parser, new[]{ "LogicalOperation", "Expression" }, new[]{ "Node" }, null, null, null), @@ -219,7 +227,10 @@ static EngineReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.Principal), global::Cerbos.Api.V1.Engine.Principal.Parser, new[]{ "Id", "PolicyVersion", "Roles", "Attr", "Scope" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.AuxData), global::Cerbos.Api.V1.Engine.AuxData.Parser, new[]{ "Jwt" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.Trace), global::Cerbos.Api.V1.Engine.Trace.Parser, new[]{ "Components", "Event" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.Trace.Types.Component), global::Cerbos.Api.V1.Engine.Trace.Types.Component.Parser, new[]{ "Kind", "Action", "DerivedRole", "Expr", "Index", "Policy", "Resource", "Rule", "Scope", "Variable", "Output" }, new[]{ "Details" }, new[]{ typeof(global::Cerbos.Api.V1.Engine.Trace.Types.Component.Types.Kind) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.Trace.Types.Component.Types.Variable), global::Cerbos.Api.V1.Engine.Trace.Types.Component.Types.Variable.Parser, new[]{ "Name", "Expr" }, null, null, null, null)}), - new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.Trace.Types.Event), global::Cerbos.Api.V1.Engine.Trace.Types.Event.Parser, new[]{ "Status", "Effect", "Error", "Message", "Result" }, null, new[]{ typeof(global::Cerbos.Api.V1.Engine.Trace.Types.Event.Types.Status) }, null, null)}) + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.Trace.Types.Event), global::Cerbos.Api.V1.Engine.Trace.Types.Event.Parser, new[]{ "Status", "Effect", "Error", "Message", "Result" }, null, new[]{ typeof(global::Cerbos.Api.V1.Engine.Trace.Types.Event.Types.Status) }, null, null)}), + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.Request), global::Cerbos.Api.V1.Engine.Request.Parser, new[]{ "Principal", "Resource", "AuxData" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.Request.Types.Principal), global::Cerbos.Api.V1.Engine.Request.Types.Principal.Parser, new[]{ "Id", "Roles", "Attr" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.Request.Types.Resource), global::Cerbos.Api.V1.Engine.Request.Types.Resource.Parser, new[]{ "Kind", "Id", "Attr" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, })}), + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Engine.Runtime), global::Cerbos.Api.V1.Engine.Runtime.Parser, new[]{ "EffectiveDerivedRoles" }, null, null, null, null) })); } #endregion @@ -6510,6 +6521,981 @@ public enum Status { } + /// + /// Data from the request, provided to expressions as the top-level `request` variable. + /// + public sealed partial class Request : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Request()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Cerbos.Api.V1.Engine.EngineReflection.Descriptor.MessageTypes[11]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Request() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Request(Request other) : this() { + principal_ = other.principal_ != null ? other.principal_.Clone() : null; + resource_ = other.resource_ != null ? other.resource_.Clone() : null; + auxData_ = other.auxData_ != null ? other.auxData_.Clone() : null; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Request Clone() { + return new Request(this); + } + + /// Field number for the "principal" field. + public const int PrincipalFieldNumber = 1; + private global::Cerbos.Api.V1.Engine.Request.Types.Principal principal_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Cerbos.Api.V1.Engine.Request.Types.Principal Principal { + get { return principal_; } + set { + principal_ = value; + } + } + + /// Field number for the "resource" field. + public const int ResourceFieldNumber = 2; + private global::Cerbos.Api.V1.Engine.Request.Types.Resource resource_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Cerbos.Api.V1.Engine.Request.Types.Resource Resource { + get { return resource_; } + set { + resource_ = value; + } + } + + /// Field number for the "aux_data" field. + public const int AuxDataFieldNumber = 3; + private global::Cerbos.Api.V1.Engine.AuxData auxData_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Cerbos.Api.V1.Engine.AuxData AuxData { + get { return auxData_; } + set { + auxData_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Request); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Request other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!object.Equals(Principal, other.Principal)) return false; + if (!object.Equals(Resource, other.Resource)) return false; + if (!object.Equals(AuxData, other.AuxData)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (principal_ != null) hash ^= Principal.GetHashCode(); + if (resource_ != null) hash ^= Resource.GetHashCode(); + if (auxData_ != null) hash ^= AuxData.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (principal_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Principal); + } + if (resource_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Resource); + } + if (auxData_ != null) { + output.WriteRawTag(26); + output.WriteMessage(AuxData); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (principal_ != null) { + output.WriteRawTag(10); + output.WriteMessage(Principal); + } + if (resource_ != null) { + output.WriteRawTag(18); + output.WriteMessage(Resource); + } + if (auxData_ != null) { + output.WriteRawTag(26); + output.WriteMessage(AuxData); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (principal_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Principal); + } + if (resource_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Resource); + } + if (auxData_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(AuxData); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Request other) { + if (other == null) { + return; + } + if (other.principal_ != null) { + if (principal_ == null) { + Principal = new global::Cerbos.Api.V1.Engine.Request.Types.Principal(); + } + Principal.MergeFrom(other.Principal); + } + if (other.resource_ != null) { + if (resource_ == null) { + Resource = new global::Cerbos.Api.V1.Engine.Request.Types.Resource(); + } + Resource.MergeFrom(other.Resource); + } + if (other.auxData_ != null) { + if (auxData_ == null) { + AuxData = new global::Cerbos.Api.V1.Engine.AuxData(); + } + AuxData.MergeFrom(other.AuxData); + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + if (principal_ == null) { + Principal = new global::Cerbos.Api.V1.Engine.Request.Types.Principal(); + } + input.ReadMessage(Principal); + break; + } + case 18: { + if (resource_ == null) { + Resource = new global::Cerbos.Api.V1.Engine.Request.Types.Resource(); + } + input.ReadMessage(Resource); + break; + } + case 26: { + if (auxData_ == null) { + AuxData = new global::Cerbos.Api.V1.Engine.AuxData(); + } + input.ReadMessage(AuxData); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + if (principal_ == null) { + Principal = new global::Cerbos.Api.V1.Engine.Request.Types.Principal(); + } + input.ReadMessage(Principal); + break; + } + case 18: { + if (resource_ == null) { + Resource = new global::Cerbos.Api.V1.Engine.Request.Types.Resource(); + } + input.ReadMessage(Resource); + break; + } + case 26: { + if (auxData_ == null) { + AuxData = new global::Cerbos.Api.V1.Engine.AuxData(); + } + input.ReadMessage(AuxData); + break; + } + } + } + } + #endif + + #region Nested types + /// Container for nested types declared in the Request message type. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static partial class Types { + public sealed partial class Principal : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Principal()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Cerbos.Api.V1.Engine.Request.Descriptor.NestedTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Principal() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Principal(Principal other) : this() { + id_ = other.id_; + roles_ = other.roles_.Clone(); + attr_ = other.attr_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Principal Clone() { + return new Principal(this); + } + + /// Field number for the "id" field. + public const int IdFieldNumber = 1; + private string id_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Id { + get { return id_; } + set { + id_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "roles" field. + public const int RolesFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_roles_codec + = pb::FieldCodec.ForString(18); + private readonly pbc::RepeatedField roles_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Roles { + get { return roles_; } + } + + /// Field number for the "attr" field. + public const int AttrFieldNumber = 3; + private static readonly pbc::MapField.Codec _map_attr_codec + = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Value.Parser), 26); + private readonly pbc::MapField attr_ = new pbc::MapField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::MapField Attr { + get { return attr_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Principal); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Principal other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Id != other.Id) return false; + if(!roles_.Equals(other.roles_)) return false; + if (!Attr.Equals(other.Attr)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (Id.Length != 0) hash ^= Id.GetHashCode(); + hash ^= roles_.GetHashCode(); + hash ^= Attr.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (Id.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Id); + } + roles_.WriteTo(output, _repeated_roles_codec); + attr_.WriteTo(output, _map_attr_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (Id.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Id); + } + roles_.WriteTo(ref output, _repeated_roles_codec); + attr_.WriteTo(ref output, _map_attr_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (Id.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Id); + } + size += roles_.CalculateSize(_repeated_roles_codec); + size += attr_.CalculateSize(_map_attr_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Principal other) { + if (other == null) { + return; + } + if (other.Id.Length != 0) { + Id = other.Id; + } + roles_.Add(other.roles_); + attr_.MergeFrom(other.attr_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Id = input.ReadString(); + break; + } + case 18: { + roles_.AddEntriesFrom(input, _repeated_roles_codec); + break; + } + case 26: { + attr_.AddEntriesFrom(input, _map_attr_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Id = input.ReadString(); + break; + } + case 18: { + roles_.AddEntriesFrom(ref input, _repeated_roles_codec); + break; + } + case 26: { + attr_.AddEntriesFrom(ref input, _map_attr_codec); + break; + } + } + } + } + #endif + + } + + public sealed partial class Resource : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Resource()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Cerbos.Api.V1.Engine.Request.Descriptor.NestedTypes[1]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Resource() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Resource(Resource other) : this() { + kind_ = other.kind_; + id_ = other.id_; + attr_ = other.attr_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Resource Clone() { + return new Resource(this); + } + + /// Field number for the "kind" field. + public const int KindFieldNumber = 1; + private string kind_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Kind { + get { return kind_; } + set { + kind_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "id" field. + public const int IdFieldNumber = 2; + private string id_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string Id { + get { return id_; } + set { + id_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + /// Field number for the "attr" field. + public const int AttrFieldNumber = 3; + private static readonly pbc::MapField.Codec _map_attr_codec + = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Value.Parser), 26); + private readonly pbc::MapField attr_ = new pbc::MapField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::MapField Attr { + get { return attr_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Resource); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Resource other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Kind != other.Kind) return false; + if (Id != other.Id) return false; + if (!Attr.Equals(other.Attr)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (Kind.Length != 0) hash ^= Kind.GetHashCode(); + if (Id.Length != 0) hash ^= Id.GetHashCode(); + hash ^= Attr.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (Kind.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Kind); + } + if (Id.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Id); + } + attr_.WriteTo(output, _map_attr_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (Kind.Length != 0) { + output.WriteRawTag(10); + output.WriteString(Kind); + } + if (Id.Length != 0) { + output.WriteRawTag(18); + output.WriteString(Id); + } + attr_.WriteTo(ref output, _map_attr_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (Kind.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Kind); + } + if (Id.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(Id); + } + size += attr_.CalculateSize(_map_attr_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Resource other) { + if (other == null) { + return; + } + if (other.Kind.Length != 0) { + Kind = other.Kind; + } + if (other.Id.Length != 0) { + Id = other.Id; + } + attr_.MergeFrom(other.attr_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + Kind = input.ReadString(); + break; + } + case 18: { + Id = input.ReadString(); + break; + } + case 26: { + attr_.AddEntriesFrom(input, _map_attr_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + Kind = input.ReadString(); + break; + } + case 18: { + Id = input.ReadString(); + break; + } + case 26: { + attr_.AddEntriesFrom(ref input, _map_attr_codec); + break; + } + } + } + } + #endif + + } + + } + #endregion + + } + + /// + /// Data from the runtime, provided to expressions as the top-level `runtime` variable. + /// + public sealed partial class Runtime : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Runtime()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Cerbos.Api.V1.Engine.EngineReflection.Descriptor.MessageTypes[12]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Runtime() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Runtime(Runtime other) : this() { + effectiveDerivedRoles_ = other.effectiveDerivedRoles_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Runtime Clone() { + return new Runtime(this); + } + + /// Field number for the "effective_derived_roles" field. + public const int EffectiveDerivedRolesFieldNumber = 1; + private static readonly pb::FieldCodec _repeated_effectiveDerivedRoles_codec + = pb::FieldCodec.ForString(10); + private readonly pbc::RepeatedField effectiveDerivedRoles_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField EffectiveDerivedRoles { + get { return effectiveDerivedRoles_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Runtime); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Runtime other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if(!effectiveDerivedRoles_.Equals(other.effectiveDerivedRoles_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + hash ^= effectiveDerivedRoles_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + effectiveDerivedRoles_.WriteTo(output, _repeated_effectiveDerivedRoles_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + effectiveDerivedRoles_.WriteTo(ref output, _repeated_effectiveDerivedRoles_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + size += effectiveDerivedRoles_.CalculateSize(_repeated_effectiveDerivedRoles_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Runtime other) { + if (other == null) { + return; + } + effectiveDerivedRoles_.Add(other.effectiveDerivedRoles_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + effectiveDerivedRoles_.AddEntriesFrom(input, _repeated_effectiveDerivedRoles_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + effectiveDerivedRoles_.AddEntriesFrom(ref input, _repeated_effectiveDerivedRoles_codec); + break; + } + } + } + } + #endif + + } + #endregion } diff --git a/src/Sdk/Cerbos/Api/V1/Policy/Policy.g.cs b/src/Sdk/Cerbos/Api/V1/Policy/Policy.g.cs index 93babd6..bd87906 100644 --- a/src/Sdk/Cerbos/Api/V1/Policy/Policy.g.cs +++ b/src/Sdk/Cerbos/Api/V1/Policy/Policy.g.cs @@ -25,236 +25,251 @@ static PolicyReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "Ch1jZXJib3MvcG9saWN5L3YxL3BvbGljeS5wcm90bxIQY2VyYm9zLnBvbGlj", - "eS52MRodY2VyYm9zL2VmZmVjdC92MS9lZmZlY3QucHJvdG8aHWNlcmJvcy9l", - "bmdpbmUvdjEvZW5naW5lLnByb3RvGhxnb29nbGUvcHJvdG9idWYvc3RydWN0", - "LnByb3RvGh9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvGh5nb29n", - "bGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8aF3ZhbGlkYXRlL3ZhbGlkYXRl", - "LnByb3RvIqgFCgZQb2xpY3kSOQoLYXBpX3ZlcnNpb24YASABKAlCGPpCFXIT", - "ChFhcGkuY2VyYm9zLmRldi92MVIKYXBpVmVyc2lvbhIaCghkaXNhYmxlZBgC", - "IAEoCFIIZGlzYWJsZWQSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0", - "aW9uEjYKCG1ldGFkYXRhGAQgASgLMhouY2VyYm9zLnBvbGljeS52MS5NZXRh", - "ZGF0YVIIbWV0YWRhdGESSwoPcmVzb3VyY2VfcG9saWN5GAUgASgLMiAuY2Vy", - "Ym9zLnBvbGljeS52MS5SZXNvdXJjZVBvbGljeUgAUg5yZXNvdXJjZVBvbGlj", - "eRJOChBwcmluY2lwYWxfcG9saWN5GAYgASgLMiEuY2VyYm9zLnBvbGljeS52", - "MS5QcmluY2lwYWxQb2xpY3lIAFIPcHJpbmNpcGFsUG9saWN5EkUKDWRlcml2", - "ZWRfcm9sZXMYByABKAsyHi5jZXJib3MucG9saWN5LnYxLkRlcml2ZWRSb2xl", - "c0gAUgxkZXJpdmVkUm9sZXMSTgoQZXhwb3J0X3ZhcmlhYmxlcxgKIAEoCzIh", - "LmNlcmJvcy5wb2xpY3kudjEuRXhwb3J0VmFyaWFibGVzSABSD2V4cG9ydFZh", - "cmlhYmxlcxJJCgl2YXJpYWJsZXMYCCADKAsyJy5jZXJib3MucG9saWN5LnYx", - "LlBvbGljeS5WYXJpYWJsZXNFbnRyeUICGAFSCXZhcmlhYmxlcxIcCgtqc29u", - "X3NjaGVtYRgJIAEoCVIHJHNjaGVtYRo8Cg5WYXJpYWJsZXNFbnRyeRIQCgNr", - "ZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBQhIKC3Bv", - "bGljeV90eXBlEgP4QgEixAIKCE1ldGFkYXRhEh8KC3NvdXJjZV9maWxlGAEg", - "ASgJUgpzb3VyY2VGaWxlEk0KC2Fubm90YXRpb25zGAIgAygLMisuY2VyYm9z", - "LnBvbGljeS52MS5NZXRhZGF0YS5Bbm5vdGF0aW9uc0VudHJ5Ugthbm5vdGF0", - "aW9ucxIwCgRoYXNoGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQ2NFZh", - "bHVlUgRoYXNoEisKD3N0b3JlX2lkZW50aWZlchgEIAEoCUICGAFSDnN0b3Jl", - "SWRlbnRpZmVyEikKEHN0b3JlX2lkZW50aWZpZXIYBSABKAlSD3N0b3JlSWRl", - "bnRpZmllcho+ChBBbm5vdGF0aW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5", - "EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi7wMKDlJlc291cmNlUG9saWN5", - "EmYKCHJlc291cmNlGAEgASgJQkr6QkdyRRABMkFeW1s6YWxwaGE6XV1bWzp3", - "b3JkOl1cQFwuXC0vXSooXDpbWzphbHBoYTpdXVtbOndvcmQ6XVxAXC5cLS9d", - "KikqJFIIcmVzb3VyY2USLgoHdmVyc2lvbhgCIAEoCUIU+kIRcg8yDV5bWzp3", - "b3JkOl1dKyRSB3ZlcnNpb24SUQoUaW1wb3J0X2Rlcml2ZWRfcm9sZXMYAyAD", - "KAlCH/pCHJIBGRgBIhVyEzIRXltbOndvcmQ6XVwtXC5dKyRSEmltcG9ydERl", - "cml2ZWRSb2xlcxI0CgVydWxlcxgEIAMoCzIeLmNlcmJvcy5wb2xpY3kudjEu", - "UmVzb3VyY2VSdWxlUgVydWxlcxJMCgVzY29wZRgFIAEoCUI2+kIzcjEyL14o", - "W1s6YWxudW06XV1bWzp3b3JkOl1cLV0qKFwuW1s6d29yZDpdXC1dKikqKSok", - "UgVzY29wZRIzCgdzY2hlbWFzGAYgASgLMhkuY2VyYm9zLnBvbGljeS52MS5T", - "Y2hlbWFzUgdzY2hlbWFzEjkKCXZhcmlhYmxlcxgHIAEoCzIbLmNlcmJvcy5w", - "b2xpY3kudjEuVmFyaWFibGVzUgl2YXJpYWJsZXMipQMKDFJlc291cmNlUnVs", - "ZRIqCgdhY3Rpb25zGAEgAygJQhD6Qg2SAQoIARgBIgRyAhABUgdhY3Rpb25z", - "EkQKDWRlcml2ZWRfcm9sZXMYAiADKAlCH/pCHJIBGRgBIhVyEzIRXltbOndv", - "cmQ6XVwtXC5dKyRSDGRlcml2ZWRSb2xlcxI6CgVyb2xlcxgDIAMoCUIk+kIh", - "kgEeGAEiGnIYMhZeKFtbOndvcmQ6XVwtXC5dK3xcKikkUgVyb2xlcxI5Cglj", - "b25kaXRpb24YBCABKAsyGy5jZXJib3MucG9saWN5LnYxLkNvbmRpdGlvblIJ", - "Y29uZGl0aW9uEjwKBmVmZmVjdBgFIAEoDjIYLmNlcmJvcy5lZmZlY3QudjEu", - "RWZmZWN0Qgr6QgeCAQQYARgCUgZlZmZlY3QSPAoEbmFtZRgGIAEoCUIo+kIl", - "ciMyIV4oW1s6YWxwaGE6XV1bWzp3b3JkOl1cQFwuXC1dKikqJFIEbmFtZRIw", - "CgZvdXRwdXQYByABKAsyGC5jZXJib3MucG9saWN5LnYxLk91dHB1dFIGb3V0", - "cHV0IukCCg9QcmluY2lwYWxQb2xpY3kSZgoJcHJpbmNpcGFsGAEgASgJQkj6", - "QkVyQxABMj9eW1s6YWxwaGE6XV1bWzp3b3JkOl1cQFwuXC1dKihcOltbOmFs", - "cGhhOl1dW1s6d29yZDpdXEBcLlwtXSopKiRSCXByaW5jaXBhbBIuCgd2ZXJz", - "aW9uGAIgASgJQhT6QhFyDzINXltbOndvcmQ6XV0rJFIHdmVyc2lvbhI1CgVy", - "dWxlcxgDIAMoCzIfLmNlcmJvcy5wb2xpY3kudjEuUHJpbmNpcGFsUnVsZVIF", - "cnVsZXMSTAoFc2NvcGUYBCABKAlCNvpCM3IxMi9eKFtbOmFsbnVtOl1dW1s6", - "d29yZDpdXC1dKihcLltbOndvcmQ6XVwtXSopKikqJFIFc2NvcGUSOQoJdmFy", - "aWFibGVzGAUgASgLMhsuY2VyYm9zLnBvbGljeS52MS5WYXJpYWJsZXNSCXZh", - "cmlhYmxlcyKVAwoNUHJpbmNpcGFsUnVsZRIjCghyZXNvdXJjZRgBIAEoCUIH", - "+kIEcgIQAVIIcmVzb3VyY2USSgoHYWN0aW9ucxgCIAMoCzImLmNlcmJvcy5w", - "b2xpY3kudjEuUHJpbmNpcGFsUnVsZS5BY3Rpb25CCPpCBZIBAggBUgdhY3Rp", - "b25zGpICCgZBY3Rpb24SHwoGYWN0aW9uGAEgASgJQgf6QgRyAhABUgZhY3Rp", - "b24SOQoJY29uZGl0aW9uGAIgASgLMhsuY2VyYm9zLnBvbGljeS52MS5Db25k", - "aXRpb25SCWNvbmRpdGlvbhI8CgZlZmZlY3QYAyABKA4yGC5jZXJib3MuZWZm", - "ZWN0LnYxLkVmZmVjdEIK+kIHggEEGAEYAlIGZWZmZWN0EjwKBG5hbWUYBCAB", - "KAlCKPpCJXIjMiFeKFtbOmFscGhhOl1dW1s6d29yZDpdXEBcLlwtXSopKiRS", - "BG5hbWUSMAoGb3V0cHV0GAUgASgLMhguY2VyYm9zLnBvbGljeS52MS5PdXRw", - "dXRSBm91dHB1dCLAAQoMRGVyaXZlZFJvbGVzEi4KBG5hbWUYASABKAlCGvpC", - "F3IVEAEyEV5bWzp3b3JkOl1cLVwuXSskUgRuYW1lEkUKC2RlZmluaXRpb25z", - "GAIgAygLMhkuY2VyYm9zLnBvbGljeS52MS5Sb2xlRGVmQgj6QgWSAQIIAVIL", - "ZGVmaW5pdGlvbnMSOQoJdmFyaWFibGVzGAMgASgLMhsuY2VyYm9zLnBvbGlj", - "eS52MS5WYXJpYWJsZXNSCXZhcmlhYmxlcyK9AQoHUm9sZURlZhIsCgRuYW1l", - "GAEgASgJQhj6QhVyEzIRXltbOndvcmQ6XVwtXC5dKyRSBG5hbWUSSQoMcGFy", - "ZW50X3JvbGVzGAIgAygJQib6QiOSASAIARgBIhpyGDIWXihbWzp3b3JkOl1c", - "LVwuXSt8XCopJFILcGFyZW50Um9sZXMSOQoJY29uZGl0aW9uGAMgASgLMhsu", - "Y2VyYm9zLnBvbGljeS52MS5Db25kaXRpb25SCWNvbmRpdGlvbiLXAQoPRXhw", - "b3J0VmFyaWFibGVzEi4KBG5hbWUYASABKAlCGvpCF3IVEAEyEV5bWzp3b3Jk", - "Ol1cLVwuXSskUgRuYW1lElQKC2RlZmluaXRpb25zGAIgAygLMjIuY2VyYm9z", - "LnBvbGljeS52MS5FeHBvcnRWYXJpYWJsZXMuRGVmaW5pdGlvbnNFbnRyeVIL", - "ZGVmaW5pdGlvbnMaPgoQRGVmaW5pdGlvbnNFbnRyeRIQCgNrZXkYASABKAlS", - "A2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBIrwBCglWYXJpYWJsZXMS", - "NwoGaW1wb3J0GAEgAygJQh/6QhySARkYASIVchMyEV5bWzp3b3JkOl1cLVwu", - "XSskUgZpbXBvcnQSPAoFbG9jYWwYAiADKAsyJi5jZXJib3MucG9saWN5LnYx", - "LlZhcmlhYmxlcy5Mb2NhbEVudHJ5UgVsb2NhbBo4CgpMb2NhbEVudHJ5EhAK", - "A2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEiaAoJ", - "Q29uZGl0aW9uEi8KBW1hdGNoGAEgASgLMhcuY2VyYm9zLnBvbGljeS52MS5N", - "YXRjaEgAUgVtYXRjaBIYCgZzY3JpcHQYAiABKAlIAFIGc2NyaXB0QhAKCWNv", - "bmRpdGlvbhID+EIBIosCCgVNYXRjaBI0CgNhbGwYASABKAsyIC5jZXJib3Mu", - "cG9saWN5LnYxLk1hdGNoLkV4cHJMaXN0SABSA2FsbBI0CgNhbnkYAiABKAsy", - "IC5jZXJib3MucG9saWN5LnYxLk1hdGNoLkV4cHJMaXN0SABSA2FueRI2CgRu", - "b25lGAMgASgLMiAuY2VyYm9zLnBvbGljeS52MS5NYXRjaC5FeHByTGlzdEgA", - "UgRub25lEhQKBGV4cHIYBCABKAlIAFIEZXhwcho9CghFeHByTGlzdBIxCgJv", - "ZhgBIAMoCzIXLmNlcmJvcy5wb2xpY3kudjEuTWF0Y2hCCPpCBZIBAggBUgJv", - "ZkIJCgJvcBID+EIBIhwKBk91dHB1dBISCgRleHByGAEgASgJUgRleHByIscC", - "CgdTY2hlbWFzEksKEHByaW5jaXBhbF9zY2hlbWEYASABKAsyIC5jZXJib3Mu", - "cG9saWN5LnYxLlNjaGVtYXMuU2NoZW1hUg9wcmluY2lwYWxTY2hlbWESSQoP", - "cmVzb3VyY2Vfc2NoZW1hGAIgASgLMiAuY2VyYm9zLnBvbGljeS52MS5TY2hl", - "bWFzLlNjaGVtYVIOcmVzb3VyY2VTY2hlbWEaOAoKSWdub3JlV2hlbhIqCgdh", - "Y3Rpb25zGAEgAygJQhD6Qg2SAQoIARgBIgRyAhABUgdhY3Rpb25zGmoKBlNj", - "aGVtYRIZCgNyZWYYASABKAlCB/pCBHICEAFSA3JlZhJFCgtpZ25vcmVfd2hl", - "bhgCIAEoCzIkLmNlcmJvcy5wb2xpY3kudjEuU2NoZW1hcy5JZ25vcmVXaGVu", - "UgppZ25vcmVXaGVuIpwFCgtUZXN0Rml4dHVyZRrgAQoKUHJpbmNpcGFscxJY", - "CgpwcmluY2lwYWxzGAEgAygLMjguY2VyYm9zLnBvbGljeS52MS5UZXN0Rml4", - "dHVyZS5QcmluY2lwYWxzLlByaW5jaXBhbHNFbnRyeVIKcHJpbmNpcGFscxIc", - "Cgtqc29uX3NjaGVtYRgCIAEoCVIHJHNjaGVtYRpaCg9QcmluY2lwYWxzRW50", - "cnkSEAoDa2V5GAEgASgJUgNrZXkSMQoFdmFsdWUYAiABKAsyGy5jZXJib3Mu", - "ZW5naW5lLnYxLlByaW5jaXBhbFIFdmFsdWU6AjgBGtkBCglSZXNvdXJjZXMS", - "VAoJcmVzb3VyY2VzGAEgAygLMjYuY2VyYm9zLnBvbGljeS52MS5UZXN0Rml4", - "dHVyZS5SZXNvdXJjZXMuUmVzb3VyY2VzRW50cnlSCXJlc291cmNlcxIcCgtq", - "c29uX3NjaGVtYRgCIAEoCVIHJHNjaGVtYRpYCg5SZXNvdXJjZXNFbnRyeRIQ", - "CgNrZXkYASABKAlSA2tleRIwCgV2YWx1ZRgCIAEoCzIaLmNlcmJvcy5lbmdp", - "bmUudjEuUmVzb3VyY2VSBXZhbHVlOgI4ARrNAQoHQXV4RGF0YRJNCghhdXhf", - "ZGF0YRgBIAMoCzIyLmNlcmJvcy5wb2xpY3kudjEuVGVzdEZpeHR1cmUuQXV4", - "RGF0YS5BdXhEYXRhRW50cnlSB2F1eERhdGESHAoLanNvbl9zY2hlbWEYAiAB", - "KAlSByRzY2hlbWEaVQoMQXV4RGF0YUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5", - "Ei8KBXZhbHVlGAIgASgLMhkuY2VyYm9zLmVuZ2luZS52MS5BdXhEYXRhUgV2", - "YWx1ZToCOAEiOwoLVGVzdE9wdGlvbnMSLAoDbm93GAEgASgLMhouZ29vZ2xl", - "LnByb3RvYnVmLlRpbWVzdGFtcFIDbm93IvwFCglUZXN0U3VpdGUSGwoEbmFt", - "ZRgBIAEoCUIH+kIEcgIQAVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVIL", - "ZGVzY3JpcHRpb24SEgoEc2tpcBgDIAEoCFIEc2tpcBIfCgtza2lwX3JlYXNv", - "bhgEIAEoCVIKc2tpcFJlYXNvbhI7CgV0ZXN0cxgFIAMoCzIbLmNlcmJvcy5w", - "b2xpY3kudjEuVGVzdFRhYmxlQgj6QgWSAQIIAVIFdGVzdHMSSwoKcHJpbmNp", - "cGFscxgGIAMoCzIrLmNlcmJvcy5wb2xpY3kudjEuVGVzdFN1aXRlLlByaW5j", - "aXBhbHNFbnRyeVIKcHJpbmNpcGFscxJICglyZXNvdXJjZXMYByADKAsyKi5j", - "ZXJib3MucG9saWN5LnYxLlRlc3RTdWl0ZS5SZXNvdXJjZXNFbnRyeVIJcmVz", - "b3VyY2VzEkMKCGF1eF9kYXRhGAggAygLMiguY2VyYm9zLnBvbGljeS52MS5U", - "ZXN0U3VpdGUuQXV4RGF0YUVudHJ5UgdhdXhEYXRhEjcKB29wdGlvbnMYCSAB", - "KAsyHS5jZXJib3MucG9saWN5LnYxLlRlc3RPcHRpb25zUgdvcHRpb25zEhwK", - "C2pzb25fc2NoZW1hGAogASgJUgckc2NoZW1hGloKD1ByaW5jaXBhbHNFbnRy", - "eRIQCgNrZXkYASABKAlSA2tleRIxCgV2YWx1ZRgCIAEoCzIbLmNlcmJvcy5l", - "bmdpbmUudjEuUHJpbmNpcGFsUgV2YWx1ZToCOAEaWAoOUmVzb3VyY2VzRW50", - "cnkSEAoDa2V5GAEgASgJUgNrZXkSMAoFdmFsdWUYAiABKAsyGi5jZXJib3Mu", - "ZW5naW5lLnYxLlJlc291cmNlUgV2YWx1ZToCOAEaVQoMQXV4RGF0YUVudHJ5", - "EhAKA2tleRgBIAEoCVIDa2V5Ei8KBXZhbHVlGAIgASgLMhkuY2VyYm9zLmVu", - "Z2luZS52MS5BdXhEYXRhUgV2YWx1ZToCOAEi1QcKCVRlc3RUYWJsZRIbCgRu", - "YW1lGAEgASgJQgf6QgRyAhABUgRuYW1lEiAKC2Rlc2NyaXB0aW9uGAIgASgJ", - "UgtkZXNjcmlwdGlvbhISCgRza2lwGAMgASgIUgRza2lwEh8KC3NraXBfcmVh", - "c29uGAQgASgJUgpza2lwUmVhc29uEkEKBWlucHV0GAUgASgLMiEuY2VyYm9z", - "LnBvbGljeS52MS5UZXN0VGFibGUuSW5wdXRCCPpCBYoBAhABUgVpbnB1dBJN", - "CghleHBlY3RlZBgGIAMoCzInLmNlcmJvcy5wb2xpY3kudjEuVGVzdFRhYmxl", - "LkV4cGVjdGF0aW9uQgj6QgWSAQIIAVIIZXhwZWN0ZWQSNwoHb3B0aW9ucxgH", - "IAEoCzIdLmNlcmJvcy5wb2xpY3kudjEuVGVzdE9wdGlvbnNSB29wdGlvbnMa", - "sAEKBUlucHV0EjAKCnByaW5jaXBhbHMYASADKAlCEPpCDZIBCggBGAEiBHIC", - "EAFSCnByaW5jaXBhbHMSLgoJcmVzb3VyY2VzGAIgAygJQhD6Qg2SAQoIARgB", - "IgRyAhABUglyZXNvdXJjZXMSKgoHYWN0aW9ucxgDIAMoCUIQ+kINkgEKCAEY", - "ASIEcgIQAVIHYWN0aW9ucxIZCghhdXhfZGF0YRgEIAEoCVIHYXV4RGF0YRp6", - "ChJPdXRwdXRFeHBlY3RhdGlvbnMSHwoGYWN0aW9uGAEgASgJQgf6QgRyAhAB", - "UgZhY3Rpb24SQwoIZXhwZWN0ZWQYAiADKAsyHS5jZXJib3MuZW5naW5lLnYx", - "Lk91dHB1dEVudHJ5Qgj6QgWSAQIIAVIIZXhwZWN0ZWQa2QIKC0V4cGVjdGF0", - "aW9uEiUKCXByaW5jaXBhbBgBIAEoCUIH+kIEcgIQAVIJcHJpbmNpcGFsEiMK", - "CHJlc291cmNlGAIgASgJQgf6QgRyAhABUghyZXNvdXJjZRJeCgdhY3Rpb25z", - "GAMgAygLMjQuY2VyYm9zLnBvbGljeS52MS5UZXN0VGFibGUuRXhwZWN0YXRp", - "b24uQWN0aW9uc0VudHJ5Qg76QguaAQgIASIEcgIQAVIHYWN0aW9ucxJICgdv", - "dXRwdXRzGAQgAygLMi4uY2VyYm9zLnBvbGljeS52MS5UZXN0VGFibGUuT3V0", - "cHV0RXhwZWN0YXRpb25zUgdvdXRwdXRzGlQKDEFjdGlvbnNFbnRyeRIQCgNr", - "ZXkYASABKAlSA2tleRIuCgV2YWx1ZRgCIAEoDjIYLmNlcmJvcy5lZmZlY3Qu", - "djEuRWZmZWN0UgV2YWx1ZToCOAEiyQcKBFRlc3QSPQoEbmFtZRgBIAEoCzIf", - "LmNlcmJvcy5wb2xpY3kudjEuVGVzdC5UZXN0TmFtZUII+kIFigECEAFSBG5h", - "bWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEhIKBHNraXAY", - "AyABKAhSBHNraXASHwoLc2tpcF9yZWFzb24YBCABKAlSCnNraXBSZWFzb24S", - "PAoFaW5wdXQYBSABKAsyHC5jZXJib3MuZW5naW5lLnYxLkNoZWNrSW5wdXRC", - "CPpCBYoBAhABUgVpbnB1dBJQCghleHBlY3RlZBgGIAMoCzIkLmNlcmJvcy5w", - "b2xpY3kudjEuVGVzdC5FeHBlY3RlZEVudHJ5Qg76QguaAQgIASIEcgIQAVII", - "ZXhwZWN0ZWQSNwoHb3B0aW9ucxgHIAEoCzIdLmNlcmJvcy5wb2xpY3kudjEu", - "VGVzdE9wdGlvbnNSB29wdGlvbnMSVgoQZXhwZWN0ZWRfb3V0cHV0cxgIIAMo", - "CzIrLmNlcmJvcy5wb2xpY3kudjEuVGVzdC5FeHBlY3RlZE91dHB1dHNFbnRy", - "eVIPZXhwZWN0ZWRPdXRwdXRzGpUBCghUZXN0TmFtZRIvCg90ZXN0X3RhYmxl", - "X25hbWUYASABKAlCB/pCBHICEAFSDXRlc3RUYWJsZU5hbWUSLAoNcHJpbmNp", - "cGFsX2tleRgCIAEoCUIH+kIEcgIQAVIMcHJpbmNpcGFsS2V5EioKDHJlc291", - "cmNlX2tleRgDIAEoCUIH+kIEcgIQAVILcmVzb3VyY2VLZXkasAEKDU91dHB1", - "dEVudHJpZXMSSwoHZW50cmllcxgBIAMoCzIxLmNlcmJvcy5wb2xpY3kudjEu", - "VGVzdC5PdXRwdXRFbnRyaWVzLkVudHJpZXNFbnRyeVIHZW50cmllcxpSCgxF", - "bnRyaWVzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsy", - "Fi5nb29nbGUucHJvdG9idWYuVmFsdWVSBXZhbHVlOgI4ARpVCg1FeHBlY3Rl", - "ZEVudHJ5EhAKA2tleRgBIAEoCVIDa2V5Ei4KBXZhbHVlGAIgASgOMhguY2Vy", - "Ym9zLmVmZmVjdC52MS5FZmZlY3RSBXZhbHVlOgI4ARpoChRFeHBlY3RlZE91", - "dHB1dHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRI6CgV2YWx1ZRgCIAEoCzIk", - "LmNlcmJvcy5wb2xpY3kudjEuVGVzdC5PdXRwdXRFbnRyaWVzUgV2YWx1ZToC", - "OAEisBAKC1Rlc3RSZXN1bHRzEjsKBnN1aXRlcxgBIAMoCzIjLmNlcmJvcy5w", - "b2xpY3kudjEuVGVzdFJlc3VsdHMuU3VpdGVSBnN1aXRlcxI/CgdzdW1tYXJ5", - "GAIgASgLMiUuY2VyYm9zLnBvbGljeS52MS5UZXN0UmVzdWx0cy5TdW1tYXJ5", - "UgdzdW1tYXJ5GlsKBVRhbGx5EjwKBnJlc3VsdBgBIAEoDjIkLmNlcmJvcy5w", - "b2xpY3kudjEuVGVzdFJlc3VsdHMuUmVzdWx0UgZyZXN1bHQSFAoFY291bnQY", - "AiABKA1SBWNvdW50GsEBCgdTdW1tYXJ5EksKDm92ZXJhbGxfcmVzdWx0GAEg", - "ASgOMiQuY2VyYm9zLnBvbGljeS52MS5UZXN0UmVzdWx0cy5SZXN1bHRSDW92", - "ZXJhbGxSZXN1bHQSHwoLdGVzdHNfY291bnQYAiABKA1SCnRlc3RzQ291bnQS", - "SAoNcmVzdWx0X2NvdW50cxgDIAMoCzIjLmNlcmJvcy5wb2xpY3kudjEuVGVz", - "dFJlc3VsdHMuVGFsbHlSDHJlc3VsdENvdW50cxq8AgoFU3VpdGUSEgoEZmls", - "ZRgBIAEoCVIEZmlsZRISCgRuYW1lGAIgASgJUgRuYW1lEksKCnByaW5jaXBh", - "bHMYAyADKAsyJy5jZXJib3MucG9saWN5LnYxLlRlc3RSZXN1bHRzLlByaW5j", - "aXBhbEICGAFSCnByaW5jaXBhbHMSPwoHc3VtbWFyeRgEIAEoCzIlLmNlcmJv", - "cy5wb2xpY3kudjEuVGVzdFJlc3VsdHMuU3VtbWFyeVIHc3VtbWFyeRIUCgVl", - "cnJvchgFIAEoCVIFZXJyb3ISRQoKdGVzdF9jYXNlcxgGIAMoCzImLmNlcmJv", - "cy5wb2xpY3kudjEuVGVzdFJlc3VsdHMuVGVzdENhc2VSCXRlc3RDYXNlcxIg", - "CgtkZXNjcmlwdGlvbhgHIAEoCVILZGVzY3JpcHRpb24aZwoIVGVzdENhc2US", - "EgoEbmFtZRgBIAEoCVIEbmFtZRJHCgpwcmluY2lwYWxzGAIgAygLMicuY2Vy", - "Ym9zLnBvbGljeS52MS5UZXN0UmVzdWx0cy5QcmluY2lwYWxSCnByaW5jaXBh", - "bHMaZQoJUHJpbmNpcGFsEhIKBG5hbWUYASABKAlSBG5hbWUSRAoJcmVzb3Vy", - "Y2VzGAIgAygLMiYuY2VyYm9zLnBvbGljeS52MS5UZXN0UmVzdWx0cy5SZXNv", - "dXJjZVIJcmVzb3VyY2VzGl4KCFJlc291cmNlEhIKBG5hbWUYASABKAlSBG5h", - "bWUSPgoHYWN0aW9ucxgCIAMoCzIkLmNlcmJvcy5wb2xpY3kudjEuVGVzdFJl", - "c3VsdHMuQWN0aW9uUgdhY3Rpb25zGl0KBkFjdGlvbhISCgRuYW1lGAEgASgJ", - "UgRuYW1lEj8KB2RldGFpbHMYAiABKAsyJS5jZXJib3MucG9saWN5LnYxLlRl", - "c3RSZXN1bHRzLkRldGFpbHNSB2RldGFpbHMa6QEKB0RldGFpbHMSPAoGcmVz", - "dWx0GAEgASgOMiQuY2VyYm9zLnBvbGljeS52MS5UZXN0UmVzdWx0cy5SZXN1", - "bHRSBnJlc3VsdBJBCgdmYWlsdXJlGAIgASgLMiUuY2VyYm9zLnBvbGljeS52", - "MS5UZXN0UmVzdWx0cy5GYWlsdXJlSABSB2ZhaWx1cmUSFgoFZXJyb3IYAyAB", - "KAlIAFIFZXJyb3ISOgoMZW5naW5lX3RyYWNlGAQgAygLMhcuY2VyYm9zLmVu", - "Z2luZS52MS5UcmFjZVILZW5naW5lVHJhY2VCCQoHb3V0Y29tZRqcAwoNT3V0", - "cHV0RmFpbHVyZRIQCgNzcmMYASABKAlSA3NyYxJdCgptaXNtYXRjaGVkGAIg", - "ASgLMjsuY2VyYm9zLnBvbGljeS52MS5UZXN0UmVzdWx0cy5PdXRwdXRGYWls", - "dXJlLk1pc21hdGNoZWRWYWx1ZUgAUgptaXNtYXRjaGVkElQKB21pc3NpbmcY", - "AyABKAsyOC5jZXJib3MucG9saWN5LnYxLlRlc3RSZXN1bHRzLk91dHB1dEZh", - "aWx1cmUuTWlzc2luZ1ZhbHVlSABSB21pc3NpbmcadQoPTWlzbWF0Y2hlZFZh", - "bHVlEjIKCGV4cGVjdGVkGAEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVl", - "UghleHBlY3RlZBIuCgZhY3R1YWwYAiABKAsyFi5nb29nbGUucHJvdG9idWYu", - "VmFsdWVSBmFjdHVhbBpCCgxNaXNzaW5nVmFsdWUSMgoIZXhwZWN0ZWQYASAB", - "KAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVSCGV4cGVjdGVkQgkKB291dGNv", - "bWUauAEKB0ZhaWx1cmUSNAoIZXhwZWN0ZWQYASABKA4yGC5jZXJib3MuZWZm", - "ZWN0LnYxLkVmZmVjdFIIZXhwZWN0ZWQSMAoGYWN0dWFsGAIgASgOMhguY2Vy", - "Ym9zLmVmZmVjdC52MS5FZmZlY3RSBmFjdHVhbBJFCgdvdXRwdXRzGAMgAygL", - "MisuY2VyYm9zLnBvbGljeS52MS5UZXN0UmVzdWx0cy5PdXRwdXRGYWlsdXJl", - "UgdvdXRwdXRzIm4KBlJlc3VsdBIWChJSRVNVTFRfVU5TUEVDSUZJRUQQABIS", - "Cg5SRVNVTFRfU0tJUFBFRBABEhEKDVJFU1VMVF9QQVNTRUQQAhIRCg1SRVNV", - "TFRfRkFJTEVEEAMSEgoOUkVTVUxUX0VSUk9SRUQQBEJvChhkZXYuY2VyYm9z", - "LmFwaS52MS5wb2xpY3laPGdpdGh1Yi5jb20vY2VyYm9zL2NlcmJvcy9hcGkv", - "Z2VucGIvY2VyYm9zL3BvbGljeS92MTtwb2xpY3l2MaoCFENlcmJvcy5BcGku", - "VjEuUG9saWN5YgZwcm90bzM=")); + "eS52MRobYnVmL3ZhbGlkYXRlL3ZhbGlkYXRlLnByb3RvGh1jZXJib3MvZWZm", + "ZWN0L3YxL2VmZmVjdC5wcm90bxodY2VyYm9zL2VuZ2luZS92MS9lbmdpbmUu", + "cHJvdG8aHGdvb2dsZS9wcm90b2J1Zi9zdHJ1Y3QucHJvdG8aH2dvb2dsZS9w", + "cm90b2J1Zi90aW1lc3RhbXAucHJvdG8aHmdvb2dsZS9wcm90b2J1Zi93cmFw", + "cGVycy5wcm90byKtBQoGUG9saWN5EjwKC2FwaV92ZXJzaW9uGAEgASgJQhu6", + "SBjIAQFyEwoRYXBpLmNlcmJvcy5kZXYvdjFSCmFwaVZlcnNpb24SGgoIZGlz", + "YWJsZWQYAiABKAhSCGRpc2FibGVkEiAKC2Rlc2NyaXB0aW9uGAMgASgJUgtk", + "ZXNjcmlwdGlvbhI2CghtZXRhZGF0YRgEIAEoCzIaLmNlcmJvcy5wb2xpY3ku", + "djEuTWV0YWRhdGFSCG1ldGFkYXRhEksKD3Jlc291cmNlX3BvbGljeRgFIAEo", + "CzIgLmNlcmJvcy5wb2xpY3kudjEuUmVzb3VyY2VQb2xpY3lIAFIOcmVzb3Vy", + "Y2VQb2xpY3kSTgoQcHJpbmNpcGFsX3BvbGljeRgGIAEoCzIhLmNlcmJvcy5w", + "b2xpY3kudjEuUHJpbmNpcGFsUG9saWN5SABSD3ByaW5jaXBhbFBvbGljeRJF", + "Cg1kZXJpdmVkX3JvbGVzGAcgASgLMh4uY2VyYm9zLnBvbGljeS52MS5EZXJp", + "dmVkUm9sZXNIAFIMZGVyaXZlZFJvbGVzEk4KEGV4cG9ydF92YXJpYWJsZXMY", + "CiABKAsyIS5jZXJib3MucG9saWN5LnYxLkV4cG9ydFZhcmlhYmxlc0gAUg9l", + "eHBvcnRWYXJpYWJsZXMSSQoJdmFyaWFibGVzGAggAygLMicuY2VyYm9zLnBv", + "bGljeS52MS5Qb2xpY3kuVmFyaWFibGVzRW50cnlCAhgBUgl2YXJpYWJsZXMS", + "HAoLanNvbl9zY2hlbWEYCSABKAlSByRzY2hlbWEaPAoOVmFyaWFibGVzRW50", + "cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4", + "AUIUCgtwb2xpY3lfdHlwZRIFukgCCAEivQEKEFNvdXJjZUF0dHJpYnV0ZXMS", + "UgoKYXR0cmlidXRlcxgBIAMoCzIyLmNlcmJvcy5wb2xpY3kudjEuU291cmNl", + "QXR0cmlidXRlcy5BdHRyaWJ1dGVzRW50cnlSCmF0dHJpYnV0ZXMaVQoPQXR0", + "cmlidXRlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EiwKBXZhbHVlGAIgASgL", + "MhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlUgV2YWx1ZToCOAEilQMKCE1ldGFk", + "YXRhEh8KC3NvdXJjZV9maWxlGAEgASgJUgpzb3VyY2VGaWxlEk0KC2Fubm90", + "YXRpb25zGAIgAygLMisuY2VyYm9zLnBvbGljeS52MS5NZXRhZGF0YS5Bbm5v", + "dGF0aW9uc0VudHJ5Ugthbm5vdGF0aW9ucxIwCgRoYXNoGAMgASgLMhwuZ29v", + "Z2xlLnByb3RvYnVmLlVJbnQ2NFZhbHVlUgRoYXNoEisKD3N0b3JlX2lkZW50", + "aWZlchgEIAEoCUICGAFSDnN0b3JlSWRlbnRpZmVyEikKEHN0b3JlX2lkZW50", + "aWZpZXIYBSABKAlSD3N0b3JlSWRlbnRpZmllchJPChFzb3VyY2VfYXR0cmli", + "dXRlcxgGIAEoCzIiLmNlcmJvcy5wb2xpY3kudjEuU291cmNlQXR0cmlidXRl", + "c1IQc291cmNlQXR0cmlidXRlcxo+ChBBbm5vdGF0aW9uc0VudHJ5EhAKA2tl", + "eRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEisgMKDlJl", + "c291cmNlUG9saWN5EiYKCHJlc291cmNlGAEgASgJQgq6SAfIAQFyAhABUghy", + "ZXNvdXJjZRIxCgd2ZXJzaW9uGAIgASgJQhe6SBTIAQFyDzINXltbOndvcmQ6", + "XV0rJFIHdmVyc2lvbhJRChRpbXBvcnRfZGVyaXZlZF9yb2xlcxgDIAMoCUIf", + "ukgckgEZGAEiFXITMhFeW1s6d29yZDpdXC1cLl0rJFISaW1wb3J0RGVyaXZl", + "ZFJvbGVzEjQKBXJ1bGVzGAQgAygLMh4uY2VyYm9zLnBvbGljeS52MS5SZXNv", + "dXJjZVJ1bGVSBXJ1bGVzEkwKBXNjb3BlGAUgASgJQja6SDNyMTIvXihbWzph", + "bG51bTpdXVtbOndvcmQ6XVwtXSooXC5bWzp3b3JkOl1cLV0qKSopKiRSBXNj", + "b3BlEjMKB3NjaGVtYXMYBiABKAsyGS5jZXJib3MucG9saWN5LnYxLlNjaGVt", + "YXNSB3NjaGVtYXMSOQoJdmFyaWFibGVzGAcgASgLMhsuY2VyYm9zLnBvbGlj", + "eS52MS5WYXJpYWJsZXNSCXZhcmlhYmxlcyKVAwoMUmVzb3VyY2VSdWxlEi0K", + "B2FjdGlvbnMYASADKAlCE7pIEMgBAZIBCggBGAEiBHICEAFSB2FjdGlvbnMS", + "RAoNZGVyaXZlZF9yb2xlcxgCIAMoCUIfukgckgEZGAEiFXITMhFeW1s6d29y", + "ZDpdXC1cLl0rJFIMZGVyaXZlZFJvbGVzEiQKBXJvbGVzGAMgAygJQg66SAuS", + "AQgYASIEcgIQAVIFcm9sZXMSOQoJY29uZGl0aW9uGAQgASgLMhsuY2VyYm9z", + "LnBvbGljeS52MS5Db25kaXRpb25SCWNvbmRpdGlvbhI/CgZlZmZlY3QYBSAB", + "KA4yGC5jZXJib3MuZWZmZWN0LnYxLkVmZmVjdEINukgKyAEBggEEGgIBAlIG", + "ZWZmZWN0EjwKBG5hbWUYBiABKAlCKLpIJXIjMiFeKFtbOmFscGhhOl1dW1s6", + "d29yZDpdXEBcLlwtXSopKiRSBG5hbWUSMAoGb3V0cHV0GAcgASgLMhguY2Vy", + "Ym9zLnBvbGljeS52MS5PdXRwdXRSBm91dHB1dCKuAgoPUHJpbmNpcGFsUG9s", + "aWN5EigKCXByaW5jaXBhbBgBIAEoCUIKukgHyAEBcgIQAVIJcHJpbmNpcGFs", + "EjEKB3ZlcnNpb24YAiABKAlCF7pIFMgBAXIPMg1eW1s6d29yZDpdXSskUgd2", + "ZXJzaW9uEjUKBXJ1bGVzGAMgAygLMh8uY2VyYm9zLnBvbGljeS52MS5Qcmlu", + "Y2lwYWxSdWxlUgVydWxlcxJMCgVzY29wZRgEIAEoCUI2ukgzcjEyL14oW1s6", + "YWxudW06XV1bWzp3b3JkOl1cLV0qKFwuW1s6d29yZDpdXC1dKikqKSokUgVz", + "Y29wZRI5Cgl2YXJpYWJsZXMYBSABKAsyGy5jZXJib3MucG9saWN5LnYxLlZh", + "cmlhYmxlc1IJdmFyaWFibGVzIqEDCg1QcmluY2lwYWxSdWxlEiYKCHJlc291", + "cmNlGAEgASgJQgq6SAfIAQFyAhABUghyZXNvdXJjZRJNCgdhY3Rpb25zGAIg", + "AygLMiYuY2VyYm9zLnBvbGljeS52MS5QcmluY2lwYWxSdWxlLkFjdGlvbkIL", + "ukgIyAEBkgECCAFSB2FjdGlvbnMamAIKBkFjdGlvbhIiCgZhY3Rpb24YASAB", + "KAlCCrpIB8gBAXICEAFSBmFjdGlvbhI5Cgljb25kaXRpb24YAiABKAsyGy5j", + "ZXJib3MucG9saWN5LnYxLkNvbmRpdGlvblIJY29uZGl0aW9uEj8KBmVmZmVj", + "dBgDIAEoDjIYLmNlcmJvcy5lZmZlY3QudjEuRWZmZWN0Qg26SArIAQGCAQQa", + "AgECUgZlZmZlY3QSPAoEbmFtZRgEIAEoCUIoukglciMyIV4oW1s6YWxwaGE6", + "XV1bWzp3b3JkOl1cQFwuXC1dKikqJFIEbmFtZRIwCgZvdXRwdXQYBSABKAsy", + "GC5jZXJib3MucG9saWN5LnYxLk91dHB1dFIGb3V0cHV0IsYBCgxEZXJpdmVk", + "Um9sZXMSMQoEbmFtZRgBIAEoCUIdukgayAEBchUQATIRXltbOndvcmQ6XVwt", + "XC5dKyRSBG5hbWUSSAoLZGVmaW5pdGlvbnMYAiADKAsyGS5jZXJib3MucG9s", + "aWN5LnYxLlJvbGVEZWZCC7pICMgBAZIBAggBUgtkZWZpbml0aW9ucxI5Cgl2", + "YXJpYWJsZXMYAyABKAsyGy5jZXJib3MucG9saWN5LnYxLlZhcmlhYmxlc1IJ", + "dmFyaWFibGVzIq0BCgdSb2xlRGVmEi8KBG5hbWUYASABKAlCG7pIGMgBAXIT", + "MhFeW1s6d29yZDpdXC1cLl0rJFIEbmFtZRI2CgxwYXJlbnRfcm9sZXMYAiAD", + "KAlCE7pIEMgBAZIBCggBGAEiBHICEAFSC3BhcmVudFJvbGVzEjkKCWNvbmRp", + "dGlvbhgDIAEoCzIbLmNlcmJvcy5wb2xpY3kudjEuQ29uZGl0aW9uUgljb25k", + "aXRpb24i2gEKD0V4cG9ydFZhcmlhYmxlcxIxCgRuYW1lGAEgASgJQh26SBrI", + "AQFyFRABMhFeW1s6d29yZDpdXC1cLl0rJFIEbmFtZRJUCgtkZWZpbml0aW9u", + "cxgCIAMoCzIyLmNlcmJvcy5wb2xpY3kudjEuRXhwb3J0VmFyaWFibGVzLkRl", + "ZmluaXRpb25zRW50cnlSC2RlZmluaXRpb25zGj4KEERlZmluaXRpb25zRW50", + "cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAlSBXZhbHVlOgI4", + "ASK8AQoJVmFyaWFibGVzEjcKBmltcG9ydBgBIAMoCUIfukgckgEZGAEiFXIT", + "MhFeW1s6d29yZDpdXC1cLl0rJFIGaW1wb3J0EjwKBWxvY2FsGAIgAygLMiYu", + "Y2VyYm9zLnBvbGljeS52MS5WYXJpYWJsZXMuTG9jYWxFbnRyeVIFbG9jYWwa", + "OAoKTG9jYWxFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEo", + "CVIFdmFsdWU6AjgBImoKCUNvbmRpdGlvbhIvCgVtYXRjaBgBIAEoCzIXLmNl", + "cmJvcy5wb2xpY3kudjEuTWF0Y2hIAFIFbWF0Y2gSGAoGc2NyaXB0GAIgASgJ", + "SABSBnNjcmlwdEISCgljb25kaXRpb24SBbpIAggBIpACCgVNYXRjaBI0CgNh", + "bGwYASABKAsyIC5jZXJib3MucG9saWN5LnYxLk1hdGNoLkV4cHJMaXN0SABS", + "A2FsbBI0CgNhbnkYAiABKAsyIC5jZXJib3MucG9saWN5LnYxLk1hdGNoLkV4", + "cHJMaXN0SABSA2FueRI2CgRub25lGAMgASgLMiAuY2VyYm9zLnBvbGljeS52", + "MS5NYXRjaC5FeHByTGlzdEgAUgRub25lEhQKBGV4cHIYBCABKAlIAFIEZXhw", + "chpACghFeHByTGlzdBI0CgJvZhgBIAMoCzIXLmNlcmJvcy5wb2xpY3kudjEu", + "TWF0Y2hCC7pICMgBAZIBAggBUgJvZkILCgJvcBIFukgCCAEiHAoGT3V0cHV0", + "EhIKBGV4cHIYASABKAlSBGV4cHIizQIKB1NjaGVtYXMSSwoQcHJpbmNpcGFs", + "X3NjaGVtYRgBIAEoCzIgLmNlcmJvcy5wb2xpY3kudjEuU2NoZW1hcy5TY2hl", + "bWFSD3ByaW5jaXBhbFNjaGVtYRJJCg9yZXNvdXJjZV9zY2hlbWEYAiABKAsy", + "IC5jZXJib3MucG9saWN5LnYxLlNjaGVtYXMuU2NoZW1hUg5yZXNvdXJjZVNj", + "aGVtYRo7CgpJZ25vcmVXaGVuEi0KB2FjdGlvbnMYASADKAlCE7pIEMgBAZIB", + "CggBGAEiBHICEAFSB2FjdGlvbnMabQoGU2NoZW1hEhwKA3JlZhgBIAEoCUIK", + "ukgHyAEBcgIQAVIDcmVmEkUKC2lnbm9yZV93aGVuGAIgASgLMiQuY2VyYm9z", + "LnBvbGljeS52MS5TY2hlbWFzLklnbm9yZVdoZW5SCmlnbm9yZVdoZW4inAUK", + "C1Rlc3RGaXh0dXJlGuABCgpQcmluY2lwYWxzElgKCnByaW5jaXBhbHMYASAD", + "KAsyOC5jZXJib3MucG9saWN5LnYxLlRlc3RGaXh0dXJlLlByaW5jaXBhbHMu", + "UHJpbmNpcGFsc0VudHJ5UgpwcmluY2lwYWxzEhwKC2pzb25fc2NoZW1hGAIg", + "ASgJUgckc2NoZW1hGloKD1ByaW5jaXBhbHNFbnRyeRIQCgNrZXkYASABKAlS", + "A2tleRIxCgV2YWx1ZRgCIAEoCzIbLmNlcmJvcy5lbmdpbmUudjEuUHJpbmNp", + "cGFsUgV2YWx1ZToCOAEa2QEKCVJlc291cmNlcxJUCglyZXNvdXJjZXMYASAD", + "KAsyNi5jZXJib3MucG9saWN5LnYxLlRlc3RGaXh0dXJlLlJlc291cmNlcy5S", + "ZXNvdXJjZXNFbnRyeVIJcmVzb3VyY2VzEhwKC2pzb25fc2NoZW1hGAIgASgJ", + "Ugckc2NoZW1hGlgKDlJlc291cmNlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5", + "EjAKBXZhbHVlGAIgASgLMhouY2VyYm9zLmVuZ2luZS52MS5SZXNvdXJjZVIF", + "dmFsdWU6AjgBGs0BCgdBdXhEYXRhEk0KCGF1eF9kYXRhGAEgAygLMjIuY2Vy", + "Ym9zLnBvbGljeS52MS5UZXN0Rml4dHVyZS5BdXhEYXRhLkF1eERhdGFFbnRy", + "eVIHYXV4RGF0YRIcCgtqc29uX3NjaGVtYRgCIAEoCVIHJHNjaGVtYRpVCgxB", + "dXhEYXRhRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLwoFdmFsdWUYAiABKAsy", + "GS5jZXJib3MuZW5naW5lLnYxLkF1eERhdGFSBXZhbHVlOgI4ASKHAgoLVGVz", + "dE9wdGlvbnMSLAoDbm93GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVz", + "dGFtcFIDbm93EjAKFGxlbmllbnRfc2NvcGVfc2VhcmNoGAIgASgIUhJsZW5p", + "ZW50U2NvcGVTZWFyY2gSRAoHZ2xvYmFscxgDIAMoCzIqLmNlcmJvcy5wb2xp", + "Y3kudjEuVGVzdE9wdGlvbnMuR2xvYmFsc0VudHJ5UgdnbG9iYWxzGlIKDEds", + "b2JhbHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIW", + "Lmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIFdmFsdWU6AjgBIoIGCglUZXN0U3Vp", + "dGUSHgoEbmFtZRgBIAEoCUIKukgHyAEBcgIQAVIEbmFtZRIgCgtkZXNjcmlw", + "dGlvbhgCIAEoCVILZGVzY3JpcHRpb24SEgoEc2tpcBgDIAEoCFIEc2tpcBIf", + "Cgtza2lwX3JlYXNvbhgEIAEoCVIKc2tpcFJlYXNvbhI+CgV0ZXN0cxgFIAMo", + "CzIbLmNlcmJvcy5wb2xpY3kudjEuVGVzdFRhYmxlQgu6SAjIAQGSAQIIAVIF", + "dGVzdHMSSwoKcHJpbmNpcGFscxgGIAMoCzIrLmNlcmJvcy5wb2xpY3kudjEu", + "VGVzdFN1aXRlLlByaW5jaXBhbHNFbnRyeVIKcHJpbmNpcGFscxJICglyZXNv", + "dXJjZXMYByADKAsyKi5jZXJib3MucG9saWN5LnYxLlRlc3RTdWl0ZS5SZXNv", + "dXJjZXNFbnRyeVIJcmVzb3VyY2VzEkMKCGF1eF9kYXRhGAggAygLMiguY2Vy", + "Ym9zLnBvbGljeS52MS5UZXN0U3VpdGUuQXV4RGF0YUVudHJ5UgdhdXhEYXRh", + "EjcKB29wdGlvbnMYCSABKAsyHS5jZXJib3MucG9saWN5LnYxLlRlc3RPcHRp", + "b25zUgdvcHRpb25zEhwKC2pzb25fc2NoZW1hGAogASgJUgckc2NoZW1hGloK", + "D1ByaW5jaXBhbHNFbnRyeRIQCgNrZXkYASABKAlSA2tleRIxCgV2YWx1ZRgC", + "IAEoCzIbLmNlcmJvcy5lbmdpbmUudjEuUHJpbmNpcGFsUgV2YWx1ZToCOAEa", + "WAoOUmVzb3VyY2VzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSMAoFdmFsdWUY", + "AiABKAsyGi5jZXJib3MuZW5naW5lLnYxLlJlc291cmNlUgV2YWx1ZToCOAEa", + "VQoMQXV4RGF0YUVudHJ5EhAKA2tleRgBIAEoCVIDa2V5Ei8KBXZhbHVlGAIg", + "ASgLMhkuY2VyYm9zLmVuZ2luZS52MS5BdXhEYXRhUgV2YWx1ZToCOAEi+wcK", + "CVRlc3RUYWJsZRIeCgRuYW1lGAEgASgJQgq6SAfIAQFyAhABUgRuYW1lEiAK", + "C2Rlc2NyaXB0aW9uGAIgASgJUgtkZXNjcmlwdGlvbhISCgRza2lwGAMgASgI", + "UgRza2lwEh8KC3NraXBfcmVhc29uGAQgASgJUgpza2lwUmVhc29uEj8KBWlu", + "cHV0GAUgASgLMiEuY2VyYm9zLnBvbGljeS52MS5UZXN0VGFibGUuSW5wdXRC", + "BrpIA8gBAVIFaW5wdXQSUAoIZXhwZWN0ZWQYBiADKAsyJy5jZXJib3MucG9s", + "aWN5LnYxLlRlc3RUYWJsZS5FeHBlY3RhdGlvbkILukgIyAEBkgECCAFSCGV4", + "cGVjdGVkEjcKB29wdGlvbnMYByABKAsyHS5jZXJib3MucG9saWN5LnYxLlRl", + "c3RPcHRpb25zUgdvcHRpb25zGrkBCgVJbnB1dBIzCgpwcmluY2lwYWxzGAEg", + "AygJQhO6SBDIAQGSAQoIARgBIgRyAhABUgpwcmluY2lwYWxzEjEKCXJlc291", + "cmNlcxgCIAMoCUITukgQyAEBkgEKCAEYASIEcgIQAVIJcmVzb3VyY2VzEi0K", + "B2FjdGlvbnMYAyADKAlCE7pIEMgBAZIBCggBGAEiBHICEAFSB2FjdGlvbnMS", + "GQoIYXV4X2RhdGEYBCABKAlSB2F1eERhdGEagAEKEk91dHB1dEV4cGVjdGF0", + "aW9ucxIiCgZhY3Rpb24YASABKAlCCrpIB8gBAXICEAFSBmFjdGlvbhJGCghl", + "eHBlY3RlZBgCIAMoCzIdLmNlcmJvcy5lbmdpbmUudjEuT3V0cHV0RW50cnlC", + "C7pICMgBAZIBAggBUghleHBlY3RlZBrrAgoLRXhwZWN0YXRpb24SKAoJcHJp", + "bmNpcGFsGAEgASgJQgq6SAfIAQFyAhABUglwcmluY2lwYWwSJgoIcmVzb3Vy", + "Y2UYAiABKAlCCrpIB8gBAXICEAFSCHJlc291cmNlEmoKB2FjdGlvbnMYAyAD", + "KAsyNC5jZXJib3MucG9saWN5LnYxLlRlc3RUYWJsZS5FeHBlY3RhdGlvbi5B", + "Y3Rpb25zRW50cnlCGrpIF8gBAZoBEQgBIgRyAhABKgeCAQQaAgECUgdhY3Rp", + "b25zEkgKB291dHB1dHMYBCADKAsyLi5jZXJib3MucG9saWN5LnYxLlRlc3RU", + "YWJsZS5PdXRwdXRFeHBlY3RhdGlvbnNSB291dHB1dHMaVAoMQWN0aW9uc0Vu", + "dHJ5EhAKA2tleRgBIAEoCVIDa2V5Ei4KBXZhbHVlGAIgASgOMhguY2VyYm9z", + "LmVmZmVjdC52MS5FZmZlY3RSBXZhbHVlOgI4ASLaBwoEVGVzdBI7CgRuYW1l", + "GAEgASgLMh8uY2VyYm9zLnBvbGljeS52MS5UZXN0LlRlc3ROYW1lQga6SAPI", + "AQFSBG5hbWUSIAoLZGVzY3JpcHRpb24YAiABKAlSC2Rlc2NyaXB0aW9uEhIK", + "BHNraXAYAyABKAhSBHNraXASHwoLc2tpcF9yZWFzb24YBCABKAlSCnNraXBS", + "ZWFzb24SOgoFaW5wdXQYBSABKAsyHC5jZXJib3MuZW5naW5lLnYxLkNoZWNr", + "SW5wdXRCBrpIA8gBAVIFaW5wdXQSXAoIZXhwZWN0ZWQYBiADKAsyJC5jZXJi", + "b3MucG9saWN5LnYxLlRlc3QuRXhwZWN0ZWRFbnRyeUIaukgXyAEBmgERCAEi", + "BHICEAEqB4IBBBoCAQJSCGV4cGVjdGVkEjcKB29wdGlvbnMYByABKAsyHS5j", + "ZXJib3MucG9saWN5LnYxLlRlc3RPcHRpb25zUgdvcHRpb25zElYKEGV4cGVj", + "dGVkX291dHB1dHMYCCADKAsyKy5jZXJib3MucG9saWN5LnYxLlRlc3QuRXhw", + "ZWN0ZWRPdXRwdXRzRW50cnlSD2V4cGVjdGVkT3V0cHV0cxqeAQoIVGVzdE5h", + "bWUSMgoPdGVzdF90YWJsZV9uYW1lGAEgASgJQgq6SAfIAQFyAhABUg10ZXN0", + "VGFibGVOYW1lEi8KDXByaW5jaXBhbF9rZXkYAiABKAlCCrpIB8gBAXICEAFS", + "DHByaW5jaXBhbEtleRItCgxyZXNvdXJjZV9rZXkYAyABKAlCCrpIB8gBAXIC", + "EAFSC3Jlc291cmNlS2V5GrABCg1PdXRwdXRFbnRyaWVzEksKB2VudHJpZXMY", + "ASADKAsyMS5jZXJib3MucG9saWN5LnYxLlRlc3QuT3V0cHV0RW50cmllcy5F", + "bnRyaWVzRW50cnlSB2VudHJpZXMaUgoMRW50cmllc0VudHJ5EhAKA2tleRgB", + "IAEoCVIDa2V5EiwKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZh", + "bHVlUgV2YWx1ZToCOAEaVQoNRXhwZWN0ZWRFbnRyeRIQCgNrZXkYASABKAlS", + "A2tleRIuCgV2YWx1ZRgCIAEoDjIYLmNlcmJvcy5lZmZlY3QudjEuRWZmZWN0", + "UgV2YWx1ZToCOAEaaAoURXhwZWN0ZWRPdXRwdXRzRW50cnkSEAoDa2V5GAEg", + "ASgJUgNrZXkSOgoFdmFsdWUYAiABKAsyJC5jZXJib3MucG9saWN5LnYxLlRl", + "c3QuT3V0cHV0RW50cmllc1IFdmFsdWU6AjgBIukRCgtUZXN0UmVzdWx0cxI7", + "CgZzdWl0ZXMYASADKAsyIy5jZXJib3MucG9saWN5LnYxLlRlc3RSZXN1bHRz", + "LlN1aXRlUgZzdWl0ZXMSPwoHc3VtbWFyeRgCIAEoCzIlLmNlcmJvcy5wb2xp", + "Y3kudjEuVGVzdFJlc3VsdHMuU3VtbWFyeVIHc3VtbWFyeRpbCgVUYWxseRI8", + "CgZyZXN1bHQYASABKA4yJC5jZXJib3MucG9saWN5LnYxLlRlc3RSZXN1bHRz", + "LlJlc3VsdFIGcmVzdWx0EhQKBWNvdW50GAIgASgNUgVjb3VudBrBAQoHU3Vt", + "bWFyeRJLCg5vdmVyYWxsX3Jlc3VsdBgBIAEoDjIkLmNlcmJvcy5wb2xpY3ku", + "djEuVGVzdFJlc3VsdHMuUmVzdWx0Ug1vdmVyYWxsUmVzdWx0Eh8KC3Rlc3Rz", + "X2NvdW50GAIgASgNUgp0ZXN0c0NvdW50EkgKDXJlc3VsdF9jb3VudHMYAyAD", + "KAsyIy5jZXJib3MucG9saWN5LnYxLlRlc3RSZXN1bHRzLlRhbGx5UgxyZXN1", + "bHRDb3VudHMavAIKBVN1aXRlEhIKBGZpbGUYASABKAlSBGZpbGUSEgoEbmFt", + "ZRgCIAEoCVIEbmFtZRJLCgpwcmluY2lwYWxzGAMgAygLMicuY2VyYm9zLnBv", + "bGljeS52MS5UZXN0UmVzdWx0cy5QcmluY2lwYWxCAhgBUgpwcmluY2lwYWxz", + "Ej8KB3N1bW1hcnkYBCABKAsyJS5jZXJib3MucG9saWN5LnYxLlRlc3RSZXN1", + "bHRzLlN1bW1hcnlSB3N1bW1hcnkSFAoFZXJyb3IYBSABKAlSBWVycm9yEkUK", + "CnRlc3RfY2FzZXMYBiADKAsyJi5jZXJib3MucG9saWN5LnYxLlRlc3RSZXN1", + "bHRzLlRlc3RDYXNlUgl0ZXN0Q2FzZXMSIAoLZGVzY3JpcHRpb24YByABKAlS", + "C2Rlc2NyaXB0aW9uGmcKCFRlc3RDYXNlEhIKBG5hbWUYASABKAlSBG5hbWUS", + "RwoKcHJpbmNpcGFscxgCIAMoCzInLmNlcmJvcy5wb2xpY3kudjEuVGVzdFJl", + "c3VsdHMuUHJpbmNpcGFsUgpwcmluY2lwYWxzGmUKCVByaW5jaXBhbBISCgRu", + "YW1lGAEgASgJUgRuYW1lEkQKCXJlc291cmNlcxgCIAMoCzImLmNlcmJvcy5w", + "b2xpY3kudjEuVGVzdFJlc3VsdHMuUmVzb3VyY2VSCXJlc291cmNlcxpeCghS", + "ZXNvdXJjZRISCgRuYW1lGAEgASgJUgRuYW1lEj4KB2FjdGlvbnMYAiADKAsy", + "JC5jZXJib3MucG9saWN5LnYxLlRlc3RSZXN1bHRzLkFjdGlvblIHYWN0aW9u", + "cxpdCgZBY3Rpb24SEgoEbmFtZRgBIAEoCVIEbmFtZRI/CgdkZXRhaWxzGAIg", + "ASgLMiUuY2VyYm9zLnBvbGljeS52MS5UZXN0UmVzdWx0cy5EZXRhaWxzUgdk", + "ZXRhaWxzGqwCCgdEZXRhaWxzEjwKBnJlc3VsdBgBIAEoDjIkLmNlcmJvcy5w", + "b2xpY3kudjEuVGVzdFJlc3VsdHMuUmVzdWx0UgZyZXN1bHQSQQoHZmFpbHVy", + "ZRgCIAEoCzIlLmNlcmJvcy5wb2xpY3kudjEuVGVzdFJlc3VsdHMuRmFpbHVy", + "ZUgAUgdmYWlsdXJlEhYKBWVycm9yGAMgASgJSABSBWVycm9yEkEKB3N1Y2Nl", + "c3MYBSABKAsyJS5jZXJib3MucG9saWN5LnYxLlRlc3RSZXN1bHRzLlN1Y2Nl", + "c3NIAFIHc3VjY2VzcxI6CgxlbmdpbmVfdHJhY2UYBCADKAsyFy5jZXJib3Mu", + "ZW5naW5lLnYxLlRyYWNlUgtlbmdpbmVUcmFjZUIJCgdvdXRjb21lGpwDCg1P", + "dXRwdXRGYWlsdXJlEhAKA3NyYxgBIAEoCVIDc3JjEl0KCm1pc21hdGNoZWQY", + "AiABKAsyOy5jZXJib3MucG9saWN5LnYxLlRlc3RSZXN1bHRzLk91dHB1dEZh", + "aWx1cmUuTWlzbWF0Y2hlZFZhbHVlSABSCm1pc21hdGNoZWQSVAoHbWlzc2lu", + "ZxgDIAEoCzI4LmNlcmJvcy5wb2xpY3kudjEuVGVzdFJlc3VsdHMuT3V0cHV0", + "RmFpbHVyZS5NaXNzaW5nVmFsdWVIAFIHbWlzc2luZxp1Cg9NaXNtYXRjaGVk", + "VmFsdWUSMgoIZXhwZWN0ZWQYASABKAsyFi5nb29nbGUucHJvdG9idWYuVmFs", + "dWVSCGV4cGVjdGVkEi4KBmFjdHVhbBgCIAEoCzIWLmdvb2dsZS5wcm90b2J1", + "Zi5WYWx1ZVIGYWN0dWFsGkIKDE1pc3NpbmdWYWx1ZRIyCghleHBlY3RlZBgB", + "IAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZVIIZXhwZWN0ZWRCCQoHb3V0", + "Y29tZRq4AQoHRmFpbHVyZRI0CghleHBlY3RlZBgBIAEoDjIYLmNlcmJvcy5l", + "ZmZlY3QudjEuRWZmZWN0UghleHBlY3RlZBIwCgZhY3R1YWwYAiABKA4yGC5j", + "ZXJib3MuZWZmZWN0LnYxLkVmZmVjdFIGYWN0dWFsEkUKB291dHB1dHMYAyAD", + "KAsyKy5jZXJib3MucG9saWN5LnYxLlRlc3RSZXN1bHRzLk91dHB1dEZhaWx1", + "cmVSB291dHB1dHMadAoHU3VjY2VzcxIwCgZlZmZlY3QYASABKA4yGC5jZXJi", + "b3MuZWZmZWN0LnYxLkVmZmVjdFIGZWZmZWN0EjcKB291dHB1dHMYAiADKAsy", + "HS5jZXJib3MuZW5naW5lLnYxLk91dHB1dEVudHJ5UgdvdXRwdXRzIm4KBlJl", + "c3VsdBIWChJSRVNVTFRfVU5TUEVDSUZJRUQQABISCg5SRVNVTFRfU0tJUFBF", + "RBABEhEKDVJFU1VMVF9QQVNTRUQQAhIRCg1SRVNVTFRfRkFJTEVEEAMSEgoO", + "UkVTVUxUX0VSUk9SRUQQBEJvChhkZXYuY2VyYm9zLmFwaS52MS5wb2xpY3la", + "PGdpdGh1Yi5jb20vY2VyYm9zL2NlcmJvcy9hcGkvZ2VucGIvY2VyYm9zL3Bv", + "bGljeS92MTtwb2xpY3l2MaoCFENlcmJvcy5BcGkuVjEuUG9saWN5YgZwcm90", + "bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Cerbos.Api.V1.Effect.EffectReflection.Descriptor, global::Cerbos.Api.V1.Engine.EngineReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, global::Validate.ValidateReflection.Descriptor, }, + new pbr::FileDescriptor[] { global::Buf.Validate.ValidateReflection.Descriptor, global::Cerbos.Api.V1.Effect.EffectReflection.Descriptor, global::Cerbos.Api.V1.Engine.EngineReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.Policy), global::Cerbos.Api.V1.Policy.Policy.Parser, new[]{ "ApiVersion", "Disabled", "Description", "Metadata", "ResourcePolicy", "PrincipalPolicy", "DerivedRoles", "ExportVariables", "Variables", "JsonSchema" }, new[]{ "PolicyType" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), - new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.Metadata), global::Cerbos.Api.V1.Policy.Metadata.Parser, new[]{ "SourceFile", "Annotations", "Hash", "StoreIdentifer", "StoreIdentifier" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.SourceAttributes), global::Cerbos.Api.V1.Policy.SourceAttributes.Parser, new[]{ "Attributes" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.Metadata), global::Cerbos.Api.V1.Policy.Metadata.Parser, new[]{ "SourceFile", "Annotations", "Hash", "StoreIdentifer", "StoreIdentifier", "SourceAttributes" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.ResourcePolicy), global::Cerbos.Api.V1.Policy.ResourcePolicy.Parser, new[]{ "Resource", "Version", "ImportDerivedRoles", "Rules", "Scope", "Schemas", "Variables" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.ResourceRule), global::Cerbos.Api.V1.Policy.ResourceRule.Parser, new[]{ "Actions", "DerivedRoles", "Roles", "Condition", "Effect", "Name", "Output" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.PrincipalPolicy), global::Cerbos.Api.V1.Policy.PrincipalPolicy.Parser, new[]{ "Principal", "Version", "Rules", "Scope", "Variables" }, null, null, null, null), @@ -271,7 +286,7 @@ static PolicyReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestFixture), global::Cerbos.Api.V1.Policy.TestFixture.Parser, null, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestFixture.Types.Principals), global::Cerbos.Api.V1.Policy.TestFixture.Types.Principals.Parser, new[]{ "Principals_", "JsonSchema" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestFixture.Types.Resources), global::Cerbos.Api.V1.Policy.TestFixture.Types.Resources.Parser, new[]{ "Resources_", "JsonSchema" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestFixture.Types.AuxData), global::Cerbos.Api.V1.Policy.TestFixture.Types.AuxData.Parser, new[]{ "AuxData_", "JsonSchema" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, })}), - new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestOptions), global::Cerbos.Api.V1.Policy.TestOptions.Parser, new[]{ "Now" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestOptions), global::Cerbos.Api.V1.Policy.TestOptions.Parser, new[]{ "Now", "LenientScopeSearch", "Globals" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestSuite), global::Cerbos.Api.V1.Policy.TestSuite.Parser, new[]{ "Name", "Description", "Skip", "SkipReason", "Tests", "Principals", "Resources", "AuxData", "Options", "JsonSchema" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, null, }), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestTable), global::Cerbos.Api.V1.Policy.TestTable.Parser, new[]{ "Name", "Description", "Skip", "SkipReason", "Input", "Expected", "Options" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestTable.Types.Input), global::Cerbos.Api.V1.Policy.TestTable.Types.Input.Parser, new[]{ "Principals", "Resources", "Actions", "AuxData" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestTable.Types.OutputExpectations), global::Cerbos.Api.V1.Policy.TestTable.Types.OutputExpectations.Parser, new[]{ "Action", "Expected" }, null, null, null, null), @@ -286,10 +301,11 @@ static PolicyReflection() { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestResults.Types.Principal), global::Cerbos.Api.V1.Policy.TestResults.Types.Principal.Parser, new[]{ "Name", "Resources" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestResults.Types.Resource), global::Cerbos.Api.V1.Policy.TestResults.Types.Resource.Parser, new[]{ "Name", "Actions" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestResults.Types.Action), global::Cerbos.Api.V1.Policy.TestResults.Types.Action.Parser, new[]{ "Name", "Details" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestResults.Types.Details), global::Cerbos.Api.V1.Policy.TestResults.Types.Details.Parser, new[]{ "Result", "Failure", "Error", "EngineTrace" }, new[]{ "Outcome" }, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestResults.Types.Details), global::Cerbos.Api.V1.Policy.TestResults.Types.Details.Parser, new[]{ "Result", "Failure", "Error", "Success", "EngineTrace" }, new[]{ "Outcome" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestResults.Types.OutputFailure), global::Cerbos.Api.V1.Policy.TestResults.Types.OutputFailure.Parser, new[]{ "Src", "Mismatched", "Missing" }, new[]{ "Outcome" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestResults.Types.OutputFailure.Types.MismatchedValue), global::Cerbos.Api.V1.Policy.TestResults.Types.OutputFailure.Types.MismatchedValue.Parser, new[]{ "Expected", "Actual" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestResults.Types.OutputFailure.Types.MissingValue), global::Cerbos.Api.V1.Policy.TestResults.Types.OutputFailure.Types.MissingValue.Parser, new[]{ "Expected" }, null, null, null, null)}), - new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestResults.Types.Failure), global::Cerbos.Api.V1.Policy.TestResults.Types.Failure.Parser, new[]{ "Expected", "Actual", "Outputs" }, null, null, null, null)}) + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestResults.Types.Failure), global::Cerbos.Api.V1.Policy.TestResults.Types.Failure.Parser, new[]{ "Expected", "Actual", "Outputs" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Policy.TestResults.Types.Success), global::Cerbos.Api.V1.Policy.TestResults.Types.Success.Parser, new[]{ "Effect", "Outputs" }, null, null, null, null)}) })); } #endregion @@ -908,6 +924,184 @@ public void MergeFrom(pb::CodedInputStream input) { } + public sealed partial class SourceAttributes : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SourceAttributes()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[1]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SourceAttributes() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SourceAttributes(SourceAttributes other) : this() { + attributes_ = other.attributes_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public SourceAttributes Clone() { + return new SourceAttributes(this); + } + + /// Field number for the "attributes" field. + public const int AttributesFieldNumber = 1; + private static readonly pbc::MapField.Codec _map_attributes_codec + = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Value.Parser), 10); + private readonly pbc::MapField attributes_ = new pbc::MapField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::MapField Attributes { + get { return attributes_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as SourceAttributes); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(SourceAttributes other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (!Attributes.Equals(other.Attributes)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + hash ^= Attributes.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + attributes_.WriteTo(output, _map_attributes_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + attributes_.WriteTo(ref output, _map_attributes_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + size += attributes_.CalculateSize(_map_attributes_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(SourceAttributes other) { + if (other == null) { + return; + } + attributes_.MergeFrom(other.attributes_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + attributes_.AddEntriesFrom(input, _map_attributes_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + attributes_.AddEntriesFrom(ref input, _map_attributes_codec); + break; + } + } + } + } + #endif + + } + public sealed partial class Metadata : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage @@ -922,7 +1116,7 @@ public sealed partial class Metadata : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[1]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[2]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -947,6 +1141,7 @@ public Metadata(Metadata other) : this() { Hash = other.Hash; storeIdentifer_ = other.storeIdentifer_; storeIdentifier_ = other.storeIdentifier_; + sourceAttributes_ = other.sourceAttributes_ != null ? other.sourceAttributes_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -1018,6 +1213,18 @@ public string StoreIdentifier { } } + /// Field number for the "source_attributes" field. + public const int SourceAttributesFieldNumber = 6; + private global::Cerbos.Api.V1.Policy.SourceAttributes sourceAttributes_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Cerbos.Api.V1.Policy.SourceAttributes SourceAttributes { + get { return sourceAttributes_; } + set { + sourceAttributes_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -1038,6 +1245,7 @@ public bool Equals(Metadata other) { if (Hash != other.Hash) return false; if (StoreIdentifer != other.StoreIdentifer) return false; if (StoreIdentifier != other.StoreIdentifier) return false; + if (!object.Equals(SourceAttributes, other.SourceAttributes)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -1050,6 +1258,7 @@ public override int GetHashCode() { if (hash_ != null) hash ^= Hash.GetHashCode(); if (StoreIdentifer.Length != 0) hash ^= StoreIdentifer.GetHashCode(); if (StoreIdentifier.Length != 0) hash ^= StoreIdentifier.GetHashCode(); + if (sourceAttributes_ != null) hash ^= SourceAttributes.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -1084,6 +1293,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(42); output.WriteString(StoreIdentifier); } + if (sourceAttributes_ != null) { + output.WriteRawTag(50); + output.WriteMessage(SourceAttributes); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -1110,6 +1323,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(42); output.WriteString(StoreIdentifier); } + if (sourceAttributes_ != null) { + output.WriteRawTag(50); + output.WriteMessage(SourceAttributes); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -1133,6 +1350,9 @@ public int CalculateSize() { if (StoreIdentifier.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(StoreIdentifier); } + if (sourceAttributes_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceAttributes); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -1160,6 +1380,12 @@ public void MergeFrom(Metadata other) { if (other.StoreIdentifier.Length != 0) { StoreIdentifier = other.StoreIdentifier; } + if (other.sourceAttributes_ != null) { + if (sourceAttributes_ == null) { + SourceAttributes = new global::Cerbos.Api.V1.Policy.SourceAttributes(); + } + SourceAttributes.MergeFrom(other.SourceAttributes); + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -1198,6 +1424,13 @@ public void MergeFrom(pb::CodedInputStream input) { StoreIdentifier = input.ReadString(); break; } + case 50: { + if (sourceAttributes_ == null) { + SourceAttributes = new global::Cerbos.Api.V1.Policy.SourceAttributes(); + } + input.ReadMessage(SourceAttributes); + break; + } } } #endif @@ -1236,6 +1469,13 @@ public void MergeFrom(pb::CodedInputStream input) { StoreIdentifier = input.ReadString(); break; } + case 50: { + if (sourceAttributes_ == null) { + SourceAttributes = new global::Cerbos.Api.V1.Policy.SourceAttributes(); + } + input.ReadMessage(SourceAttributes); + break; + } } } } @@ -1257,7 +1497,7 @@ public sealed partial class ResourcePolicy : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[2]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[3]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1664,7 +1904,7 @@ public sealed partial class ResourceRule : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[3]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[4]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2060,7 +2300,7 @@ public sealed partial class PrincipalPolicy : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[4]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[5]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2395,7 +2635,7 @@ public sealed partial class PrincipalRule : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[5]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[6]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2973,7 +3213,7 @@ public sealed partial class DerivedRoles : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[6]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3234,7 +3474,7 @@ public sealed partial class RoleDef : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[7]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3495,7 +3735,7 @@ public sealed partial class ExportVariables : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[8]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3710,7 +3950,7 @@ public sealed partial class Variables : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[9]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[10]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3914,7 +4154,7 @@ public sealed partial class Condition : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[10]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[11]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4200,7 +4440,7 @@ public sealed partial class Match : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[11]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[12]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4778,7 +5018,7 @@ public sealed partial class Output : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[12]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[13]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -4967,7 +5207,7 @@ public sealed partial class Schemas : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[13]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[14]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -5632,7 +5872,7 @@ public sealed partial class TestFixture : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[14]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[15]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6437,7 +6677,7 @@ public sealed partial class TestOptions : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[15]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[16]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -6458,6 +6698,8 @@ public TestOptions() { [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public TestOptions(TestOptions other) : this() { now_ = other.now_ != null ? other.now_.Clone() : null; + lenientScopeSearch_ = other.lenientScopeSearch_; + globals_ = other.globals_.Clone(); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -6479,6 +6721,29 @@ public TestOptions Clone() { } } + /// Field number for the "lenient_scope_search" field. + public const int LenientScopeSearchFieldNumber = 2; + private bool lenientScopeSearch_; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool LenientScopeSearch { + get { return lenientScopeSearch_; } + set { + lenientScopeSearch_ = value; + } + } + + /// Field number for the "globals" field. + public const int GlobalsFieldNumber = 3; + private static readonly pbc::MapField.Codec _map_globals_codec + = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Value.Parser), 26); + private readonly pbc::MapField globals_ = new pbc::MapField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::MapField Globals { + get { return globals_; } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -6495,6 +6760,8 @@ public bool Equals(TestOptions other) { return true; } if (!object.Equals(Now, other.Now)) return false; + if (LenientScopeSearch != other.LenientScopeSearch) return false; + if (!Globals.Equals(other.Globals)) return false; return Equals(_unknownFields, other._unknownFields); } @@ -6503,6 +6770,8 @@ public bool Equals(TestOptions other) { public override int GetHashCode() { int hash = 1; if (now_ != null) hash ^= Now.GetHashCode(); + if (LenientScopeSearch != false) hash ^= LenientScopeSearch.GetHashCode(); + hash ^= Globals.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -6525,6 +6794,11 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(10); output.WriteMessage(Now); } + if (LenientScopeSearch != false) { + output.WriteRawTag(16); + output.WriteBool(LenientScopeSearch); + } + globals_.WriteTo(output, _map_globals_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -6539,6 +6813,11 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteRawTag(10); output.WriteMessage(Now); } + if (LenientScopeSearch != false) { + output.WriteRawTag(16); + output.WriteBool(LenientScopeSearch); + } + globals_.WriteTo(ref output, _map_globals_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -6552,6 +6831,10 @@ public int CalculateSize() { if (now_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Now); } + if (LenientScopeSearch != false) { + size += 1 + 1; + } + size += globals_.CalculateSize(_map_globals_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -6570,6 +6853,10 @@ public void MergeFrom(TestOptions other) { } Now.MergeFrom(other.Now); } + if (other.LenientScopeSearch != false) { + LenientScopeSearch = other.LenientScopeSearch; + } + globals_.MergeFrom(other.globals_); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -6592,6 +6879,14 @@ public void MergeFrom(pb::CodedInputStream input) { input.ReadMessage(Now); break; } + case 16: { + LenientScopeSearch = input.ReadBool(); + break; + } + case 26: { + globals_.AddEntriesFrom(input, _map_globals_codec); + break; + } } } #endif @@ -6614,6 +6909,14 @@ public void MergeFrom(pb::CodedInputStream input) { input.ReadMessage(Now); break; } + case 16: { + LenientScopeSearch = input.ReadBool(); + break; + } + case 26: { + globals_.AddEntriesFrom(ref input, _map_globals_codec); + break; + } } } } @@ -6635,7 +6938,7 @@ public sealed partial class TestSuite : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[16]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[17]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -7122,7 +7425,7 @@ public sealed partial class TestTable : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[17]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[18]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -8308,7 +8611,7 @@ public sealed partial class Test : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[18]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[19]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -9210,7 +9513,7 @@ public sealed partial class TestResults : pb::IMessage [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[19]; } + get { return global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor.MessageTypes[20]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -11231,6 +11534,9 @@ public Details(Details other) : this() { case OutcomeOneofCase.Error: Error = other.Error; break; + case OutcomeOneofCase.Success: + Success = other.Success.Clone(); + break; } _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -11292,6 +11598,18 @@ public void ClearError() { } } + /// Field number for the "success" field. + public const int SuccessFieldNumber = 5; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Cerbos.Api.V1.Policy.TestResults.Types.Success Success { + get { return outcomeCase_ == OutcomeOneofCase.Success ? (global::Cerbos.Api.V1.Policy.TestResults.Types.Success) outcome_ : null; } + set { + outcome_ = value; + outcomeCase_ = value == null ? OutcomeOneofCase.None : OutcomeOneofCase.Success; + } + } + /// Field number for the "engine_trace" field. public const int EngineTraceFieldNumber = 4; private static readonly pb::FieldCodec _repeated_engineTrace_codec @@ -11309,6 +11627,7 @@ public enum OutcomeOneofCase { None = 0, Failure = 2, Error = 3, + Success = 5, } private OutcomeOneofCase outcomeCase_ = OutcomeOneofCase.None; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -11342,6 +11661,7 @@ public bool Equals(Details other) { if (Result != other.Result) return false; if (!object.Equals(Failure, other.Failure)) return false; if (Error != other.Error) return false; + if (!object.Equals(Success, other.Success)) return false; if(!engineTrace_.Equals(other.engineTrace_)) return false; if (OutcomeCase != other.OutcomeCase) return false; return Equals(_unknownFields, other._unknownFields); @@ -11354,6 +11674,7 @@ public override int GetHashCode() { if (Result != global::Cerbos.Api.V1.Policy.TestResults.Types.Result.Unspecified) hash ^= Result.GetHashCode(); if (outcomeCase_ == OutcomeOneofCase.Failure) hash ^= Failure.GetHashCode(); if (HasError) hash ^= Error.GetHashCode(); + if (outcomeCase_ == OutcomeOneofCase.Success) hash ^= Success.GetHashCode(); hash ^= engineTrace_.GetHashCode(); hash ^= (int) outcomeCase_; if (_unknownFields != null) { @@ -11387,6 +11708,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteString(Error); } engineTrace_.WriteTo(output, _repeated_engineTrace_codec); + if (outcomeCase_ == OutcomeOneofCase.Success) { + output.WriteRawTag(42); + output.WriteMessage(Success); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -11410,6 +11735,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteString(Error); } engineTrace_.WriteTo(ref output, _repeated_engineTrace_codec); + if (outcomeCase_ == OutcomeOneofCase.Success) { + output.WriteRawTag(42); + output.WriteMessage(Success); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -11429,6 +11758,9 @@ public int CalculateSize() { if (HasError) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Error); } + if (outcomeCase_ == OutcomeOneofCase.Success) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Success); + } size += engineTrace_.CalculateSize(_repeated_engineTrace_codec); if (_unknownFields != null) { size += _unknownFields.CalculateSize(); @@ -11456,6 +11788,12 @@ public void MergeFrom(Details other) { case OutcomeOneofCase.Error: Error = other.Error; break; + case OutcomeOneofCase.Success: + if (Success == null) { + Success = new global::Cerbos.Api.V1.Policy.TestResults.Types.Success(); + } + Success.MergeFrom(other.Success); + break; } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); @@ -11494,6 +11832,15 @@ public void MergeFrom(pb::CodedInputStream input) { engineTrace_.AddEntriesFrom(input, _repeated_engineTrace_codec); break; } + case 42: { + global::Cerbos.Api.V1.Policy.TestResults.Types.Success subBuilder = new global::Cerbos.Api.V1.Policy.TestResults.Types.Success(); + if (outcomeCase_ == OutcomeOneofCase.Success) { + subBuilder.MergeFrom(Success); + } + input.ReadMessage(subBuilder); + Success = subBuilder; + break; + } } } #endif @@ -11530,6 +11877,15 @@ public void MergeFrom(pb::CodedInputStream input) { engineTrace_.AddEntriesFrom(ref input, _repeated_engineTrace_codec); break; } + case 42: { + global::Cerbos.Api.V1.Policy.TestResults.Types.Success subBuilder = new global::Cerbos.Api.V1.Policy.TestResults.Types.Success(); + if (outcomeCase_ == OutcomeOneofCase.Success) { + subBuilder.MergeFrom(Success); + } + input.ReadMessage(subBuilder); + Success = subBuilder; + break; + } } } } @@ -12561,6 +12917,221 @@ public void MergeFrom(pb::CodedInputStream input) { } + public sealed partial class Success : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Success()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Cerbos.Api.V1.Policy.TestResults.Descriptor.NestedTypes[10]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Success() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Success(Success other) : this() { + effect_ = other.effect_; + outputs_ = other.outputs_.Clone(); + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Success Clone() { + return new Success(this); + } + + /// Field number for the "effect" field. + public const int EffectFieldNumber = 1; + private global::Cerbos.Api.V1.Effect.Effect effect_ = global::Cerbos.Api.V1.Effect.Effect.Unspecified; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Cerbos.Api.V1.Effect.Effect Effect { + get { return effect_; } + set { + effect_ = value; + } + } + + /// Field number for the "outputs" field. + public const int OutputsFieldNumber = 2; + private static readonly pb::FieldCodec _repeated_outputs_codec + = pb::FieldCodec.ForMessage(18, global::Cerbos.Api.V1.Engine.OutputEntry.Parser); + private readonly pbc::RepeatedField outputs_ = new pbc::RepeatedField(); + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField Outputs { + get { return outputs_; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Success); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Success other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Effect != other.Effect) return false; + if(!outputs_.Equals(other.outputs_)) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (Effect != global::Cerbos.Api.V1.Effect.Effect.Unspecified) hash ^= Effect.GetHashCode(); + hash ^= outputs_.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (Effect != global::Cerbos.Api.V1.Effect.Effect.Unspecified) { + output.WriteRawTag(8); + output.WriteEnum((int) Effect); + } + outputs_.WriteTo(output, _repeated_outputs_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (Effect != global::Cerbos.Api.V1.Effect.Effect.Unspecified) { + output.WriteRawTag(8); + output.WriteEnum((int) Effect); + } + outputs_.WriteTo(ref output, _repeated_outputs_codec); + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (Effect != global::Cerbos.Api.V1.Effect.Effect.Unspecified) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Effect); + } + size += outputs_.CalculateSize(_repeated_outputs_codec); + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Success other) { + if (other == null) { + return; + } + if (other.Effect != global::Cerbos.Api.V1.Effect.Effect.Unspecified) { + Effect = other.Effect; + } + outputs_.Add(other.outputs_); + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Effect = (global::Cerbos.Api.V1.Effect.Effect) input.ReadEnum(); + break; + } + case 18: { + outputs_.AddEntriesFrom(input, _repeated_outputs_codec); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Effect = (global::Cerbos.Api.V1.Effect.Effect) input.ReadEnum(); + break; + } + case 18: { + outputs_.AddEntriesFrom(ref input, _repeated_outputs_codec); + break; + } + } + } + } + #endif + + } + } #endregion diff --git a/src/Sdk/Cerbos/Api/V1/Request/Request.g.cs b/src/Sdk/Cerbos/Api/V1/Request/Request.g.cs index d21d04b..057f8cf 100644 --- a/src/Sdk/Cerbos/Api/V1/Request/Request.g.cs +++ b/src/Sdk/Cerbos/Api/V1/Request/Request.g.cs @@ -25,237 +25,236 @@ static RequestReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "Ch9jZXJib3MvcmVxdWVzdC92MS9yZXF1ZXN0LnByb3RvEhFjZXJib3MucmVx", - "dWVzdC52MRodY2VyYm9zL2VuZ2luZS92MS9lbmdpbmUucHJvdG8aHWNlcmJv", - "cy9wb2xpY3kvdjEvcG9saWN5LnByb3RvGh1jZXJib3Mvc2NoZW1hL3YxL3Nj", - "aGVtYS5wcm90bxofZ29vZ2xlL2FwaS9maWVsZF9iZWhhdmlvci5wcm90bxoe", - "Z29vZ2xlL3Byb3RvYnVmL2R1cmF0aW9uLnByb3RvGhxnb29nbGUvcHJvdG9i", - "dWYvc3RydWN0LnByb3RvGh9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnBy", - "b3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fubm90YXRpb25z", - "LnByb3RvGhd2YWxpZGF0ZS92YWxpZGF0ZS5wcm90byKDBQoUUGxhblJlc291", - "cmNlc1JlcXVlc3QSlgEKCnJlcXVlc3RfaWQYASABKAlCd5JBdDJKT3B0aW9u", - "YWwgYXBwbGljYXRpb24tc3BlY2lmaWMgSUQgdXNlZnVsIGZvciBjb3JyZWxh", - "dGluZyBsb2dzIGZvciBhbmFseXNpcy5KJiJjMmRiMTdiOC00ZjlmLTRmYjEt", - "YWNmZC05MTYyYTAyYmU0MmIiUglyZXF1ZXN0SWQSaAoGYWN0aW9uGAIgASgJ", - "QlCSQUMyMkFjdGlvbiB0byBiZSBhcHBsaWVkIHRvIGVhY2ggcmVzb3VyY2Ug", - "aW4gdGhlIGxpc3QuSg0idmlldzpwdWJsaWMi4EEC+kIEcgIQAVIGYWN0aW9u", - "EkYKCXByaW5jaXBhbBgDIAEoCzIbLmNlcmJvcy5lbmdpbmUudjEuUHJpbmNp", - "cGFsQgvgQQL6QgWKAQIQAVIJcHJpbmNpcGFsElYKCHJlc291cmNlGAQgASgL", - "Mi0uY2VyYm9zLmVuZ2luZS52MS5QbGFuUmVzb3VyY2VzSW5wdXQuUmVzb3Vy", - "Y2VCC+BBAvpCBYoBAhABUghyZXNvdXJjZRI6CghhdXhfZGF0YRgFIAEoCzIa", - "LmNlcmJvcy5yZXF1ZXN0LnYxLkF1eERhdGFCA+BBAVIHYXV4RGF0YRJjCgxp", - "bmNsdWRlX21ldGEYBiABKAhCQJJBPTI7T3B0IHRvIHJlY2VpdmUgcmVxdWVz", - "dCBwcm9jZXNzaW5nIG1ldGFkYXRhIGluIHRoZSByZXNwb25zZS5SC2luY2x1", - "ZGVNZXRhOieSQSQKIjIgUERQIFJlc291cmNlcyBRdWVyeSBQbGFuIFJlcXVl", - "c3QihwUKF0NoZWNrUmVzb3VyY2VTZXRSZXF1ZXN0EpYBCgpyZXF1ZXN0X2lk", - "GAEgASgJQneSQXQySk9wdGlvbmFsIGFwcGxpY2F0aW9uLXNwZWNpZmljIElE", - "IHVzZWZ1bCBmb3IgY29ycmVsYXRpbmcgbG9ncyBmb3IgYW5hbHlzaXMuSiYi", - "YzJkYjE3YjgtNGY5Zi00ZmIxLWFjZmQtOTE2MmEwMmJlNDJiIlIJcmVxdWVz", - "dElkEowBCgdhY3Rpb25zGAIgAygJQnKSQVwyOExpc3Qgb2YgYWN0aW9ucyBi", - "ZWluZyBwZXJmb3JtZWQgb24gdGhlIHNldCBvZiByZXNvdXJjZXMuShpbInZp", - "ZXc6cHVibGljIiwgImNvbW1lbnQiXagBAbABAeBBAvpCDZIBCggBGAEiBHIC", - "EAFSB2FjdGlvbnMSRgoJcHJpbmNpcGFsGAMgASgLMhsuY2VyYm9zLmVuZ2lu", - "ZS52MS5QcmluY2lwYWxCC+BBAvpCBYoBAhABUglwcmluY2lwYWwSRwoIcmVz", - "b3VyY2UYBCABKAsyHi5jZXJib3MucmVxdWVzdC52MS5SZXNvdXJjZVNldEIL", - "4EEC+kIFigECEAFSCHJlc291cmNlEmMKDGluY2x1ZGVfbWV0YRgFIAEoCEJA", - "kkE9MjtPcHQgdG8gcmVjZWl2ZSByZXF1ZXN0IHByb2Nlc3NpbmcgbWV0YWRh", - "dGEgaW4gdGhlIHJlc3BvbnNlLlILaW5jbHVkZU1ldGESOgoIYXV4X2RhdGEY", - "BiABKAsyGi5jZXJib3MucmVxdWVzdC52MS5BdXhEYXRhQgPgQQFSB2F1eERh", - "dGE6EpJBDwoNMgtQRFAgUmVxdWVzdCKvCQoLUmVzb3VyY2VTZXQSxwEKBGtp", - "bmQYASABKAlCsgGSQWIyDlJlc291cmNlIGtpbmQuSg4iYWxidW06b2JqZWN0", - "IooBP15bWzphbHBoYTpdXVtbOndvcmQ6XVxAXC5cLV0qKFw6W1s6YWxwaGE6", - "XV1bWzp3b3JkOl1cQFwuXC1dKikqJOBBAvpCR3JFEAEyQV5bWzphbHBoYTpd", - "XVtbOndvcmQ6XVxAXC5cLS9dKihcOltbOmFscGhhOl1dW1s6d29yZDpdXEBc", - "LlwtL10qKSokUgRraW5kEtwBCg5wb2xpY3lfdmVyc2lvbhgCIAEoCUK0AZJB", - "mQEyfFRoZSBwb2xpY3kgdmVyc2lvbiB0byB1c2UgdG8gZXZhbHVhdGUgdGhp", - "cyByZXF1ZXN0LiBJZiBub3Qgc3BlY2lmaWVkLCB3aWxsIGRlZmF1bHQgdG8g", - "dGhlIHNlcnZlci1jb25maWd1cmVkIGRlZmF1bHQgdmVyc2lvbi5KCSJkZWZh", - "dWx0IooBDV5bWzp3b3JkOl1dKiTgQQH6QhFyDzINXltbOndvcmQ6XV0qJFIN", - "cG9saWN5VmVyc2lvbhLrAgoJaW5zdGFuY2VzGAMgAygLMi0uY2VyYm9zLnJl", - "cXVlc3QudjEuUmVzb3VyY2VTZXQuSW5zdGFuY2VzRW50cnlCnQKSQYwCMm1T", - "ZXQgb2YgcmVzb3VyY2UgaW5zdGFuY2VzIHRvIGNoZWNrLiBFYWNoIGluc3Rh", - "bmNlIG11c3QgYmUga2V5ZWQgYnkgYW4gYXBwbGljYXRpb24tc3BlY2lmaWMg", - "dW5pcXVlIGlkZW50aWZpZXIuSpcBeyJYWDEyNSI6eyJhdHRyIjp7Im93bmVy", - "IjoiYnVnc19idW5ueSIsICJwdWJsaWMiOiBmYWxzZSwgImZsYWdnZWQiOiBm", - "YWxzZX19LCAiWFgyMjUiOnsiYXR0ciI6eyJvd25lciI6ImRhZmZ5X2R1Y2si", - "LCAicHVibGljIjogdHJ1ZSwgImZsYWdnZWQiOiBmYWxzZX19fcgBAeBBAvpC", - "B5oBBAgBGAFSCWluc3RhbmNlcxKGAgoFc2NvcGUYBCABKAlC7wGSQbIBMn5B", - "IGRvdC1zZXBhcmF0ZWQgc2NvcGUgdGhhdCBkZXNjcmliZXMgdGhlIGhpZXJh", - "cmNoeSB0aGVzZSByZXNvdXJjZXMgYmVsb25nIHRvLiBUaGlzIGlzIHVzZWQg", - "Zm9yIGRldGVybWluaW5nIHBvbGljeSBpbmhlcml0YW5jZS6KAS9eKFtbOmFs", - "bnVtOl1dW1s6d29yZDpdXC1dKihcLltbOndvcmQ6XVwtXSopKikqJOBBAfpC", - "M3IxMi9eKFtbOmFsbnVtOl1dW1s6d29yZDpdXC1dKihcLltbOndvcmQ6XVwt", - "XSopKikqJFIFc2NvcGUaXgoOSW5zdGFuY2VzRW50cnkSEAoDa2V5GAEgASgJ", - "UgNrZXkSNgoFdmFsdWUYAiABKAsyIC5jZXJib3MucmVxdWVzdC52MS5BdHRy", - "aWJ1dGVzTWFwUgV2YWx1ZToCOAE6IJJBHQobMhlTZXQgb2YgcmVzb3VyY2Vz", - "IHRvIGNoZWNrIskCCg1BdHRyaWJ1dGVzTWFwErEBCgRhdHRyGAEgAygLMiou", - "Y2VyYm9zLnJlcXVlc3QudjEuQXR0cmlidXRlc01hcC5BdHRyRW50cnlCcZJB", - "ZjJkS2V5LXZhbHVlIHBhaXJzIG9mIGNvbnRleHR1YWwgZGF0YSBhYm91dCB0", - "aGlzIGluc3RhbmNlIHRoYXQgc2hvdWxkIGJlIHVzZWQgZHVyaW5nIHBvbGlj", - "eSBldmFsdWF0aW9uLvpCBZoBAhgBUgRhdHRyGk8KCUF0dHJFbnRyeRIQCgNr", - "ZXkYASABKAlSA2tleRIsCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1", - "Zi5WYWx1ZVIFdmFsdWU6AjgBOjOSQTAKLjIsVW5pcXVlIGlkZW50aWZpZXIg", - "Zm9yIHRoZSByZXNvdXJjZSBpbnN0YW5jZS4i4QYKGUNoZWNrUmVzb3VyY2VC", - "YXRjaFJlcXVlc3QSlgEKCnJlcXVlc3RfaWQYASABKAlCd5JBdDJKT3B0aW9u", - "YWwgYXBwbGljYXRpb24tc3BlY2lmaWMgSUQgdXNlZnVsIGZvciBjb3JyZWxh", - "dGluZyBsb2dzIGZvciBhbmFseXNpcy5KJiJjMmRiMTdiOC00ZjlmLTRmYjEt", - "YWNmZC05MTYyYTAyYmU0MmIiUglyZXF1ZXN0SWQSRgoJcHJpbmNpcGFsGAIg", - "ASgLMhsuY2VyYm9zLmVuZ2luZS52MS5QcmluY2lwYWxCC+BBAvpCBYoBAhAB", - "UglwcmluY2lwYWwSvAIKCXJlc291cmNlcxgDIAMoCzI3LmNlcmJvcy5yZXF1", - "ZXN0LnYxLkNoZWNrUmVzb3VyY2VCYXRjaFJlcXVlc3QuQmF0Y2hFbnRyeULk", - "AZJB1QEyHkxpc3Qgb2YgcmVzb3VyY2VzIGFuZCBhY3Rpb25zLkqsAVt7ImFj", - "dGlvbnMiOlsidmlldyIsImNvbW1lbnQiXSwgInJlc291cmNlIjp7ImtpbmQi", - "OiJhbGJ1bTpvYmplY3QiLCJwb2xpY3lWZXJzaW9uIjoiZGVmYXVsdCIsImlk", - "IjoiWFgxMjUiLCJhdHRyIjp7Im93bmVyIjoiYnVnc19idW5ueSIsICJwdWJs", - "aWMiOiBmYWxzZSwgImZsYWdnZWQiOiBmYWxzZX19fV2oAQGwAQHgQQL6QgWS", - "AQIIAVIJcmVzb3VyY2VzEjUKCGF1eF9kYXRhGAQgASgLMhouY2VyYm9zLnJl", - "cXVlc3QudjEuQXV4RGF0YVIHYXV4RGF0YRrYAQoKQmF0Y2hFbnRyeRKEAQoH", - "YWN0aW9ucxgBIAMoCUJqkkFUMjBMaXN0IG9mIGFjdGlvbnMgYmVpbmcgcGVy", - "Zm9ybWVkIG9uIHRoZSByZXNvdXJjZS5KGlsidmlldzpwdWJsaWMiLCAiY29t", - "bWVudCJdqAEBsAEB4EEC+kINkgEKCAEYASIEcgIQAVIHYWN0aW9ucxJDCghy", - "ZXNvdXJjZRgCIAEoCzIaLmNlcmJvcy5lbmdpbmUudjEuUmVzb3VyY2VCC+BB", - "AvpCBYoBAhABUghyZXNvdXJjZToSkkEPCg0yC1BEUCBSZXF1ZXN0IsUHChVD", + "dWVzdC52MRobYnVmL3ZhbGlkYXRlL3ZhbGlkYXRlLnByb3RvGh1jZXJib3Mv", + "ZW5naW5lL3YxL2VuZ2luZS5wcm90bxodY2VyYm9zL3BvbGljeS92MS9wb2xp", + "Y3kucHJvdG8aHWNlcmJvcy9zY2hlbWEvdjEvc2NoZW1hLnByb3RvGh9nb29n", + "bGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvGh5nb29nbGUvcHJvdG9idWYv", + "ZHVyYXRpb24ucHJvdG8aHGdvb2dsZS9wcm90b2J1Zi9zdHJ1Y3QucHJvdG8a", + "H2dvb2dsZS9wcm90b2J1Zi90aW1lc3RhbXAucHJvdG8aLnByb3RvYy1nZW4t", + "b3BlbmFwaXYyL29wdGlvbnMvYW5ub3RhdGlvbnMucHJvdG8iggUKFFBsYW5S", + "ZXNvdXJjZXNSZXF1ZXN0EpYBCgpyZXF1ZXN0X2lkGAEgASgJQneSQXQySk9w", + "dGlvbmFsIGFwcGxpY2F0aW9uLXNwZWNpZmljIElEIHVzZWZ1bCBmb3IgY29y", + "cmVsYXRpbmcgbG9ncyBmb3IgYW5hbHlzaXMuSiYiYzJkYjE3YjgtNGY5Zi00", + "ZmIxLWFjZmQtOTE2MmEwMmJlNDJiIlIJcmVxdWVzdElkEmsKBmFjdGlvbhgC", + "IAEoCUJTkkFDMjJBY3Rpb24gdG8gYmUgYXBwbGllZCB0byBlYWNoIHJlc291", + "cmNlIGluIHRoZSBsaXN0LkoNInZpZXc6cHVibGljIuBBArpIB8gBAXICEAFS", + "BmFjdGlvbhJECglwcmluY2lwYWwYAyABKAsyGy5jZXJib3MuZW5naW5lLnYx", + "LlByaW5jaXBhbEIJ4EECukgDyAEBUglwcmluY2lwYWwSVAoIcmVzb3VyY2UY", + "BCABKAsyLS5jZXJib3MuZW5naW5lLnYxLlBsYW5SZXNvdXJjZXNJbnB1dC5S", + "ZXNvdXJjZUIJ4EECukgDyAEBUghyZXNvdXJjZRI6CghhdXhfZGF0YRgFIAEo", + "CzIaLmNlcmJvcy5yZXF1ZXN0LnYxLkF1eERhdGFCA+BBAVIHYXV4RGF0YRJj", + "CgxpbmNsdWRlX21ldGEYBiABKAhCQJJBPTI7T3B0IHRvIHJlY2VpdmUgcmVx", + "dWVzdCBwcm9jZXNzaW5nIG1ldGFkYXRhIGluIHRoZSByZXNwb25zZS5SC2lu", + "Y2x1ZGVNZXRhOieSQSQKIjIgUERQIFJlc291cmNlcyBRdWVyeSBQbGFuIFJl", + "cXVlc3QihgUKF0NoZWNrUmVzb3VyY2VTZXRSZXF1ZXN0EpYBCgpyZXF1ZXN0", + "X2lkGAEgASgJQneSQXQySk9wdGlvbmFsIGFwcGxpY2F0aW9uLXNwZWNpZmlj", + "IElEIHVzZWZ1bCBmb3IgY29ycmVsYXRpbmcgbG9ncyBmb3IgYW5hbHlzaXMu", + "SiYiYzJkYjE3YjgtNGY5Zi00ZmIxLWFjZmQtOTE2MmEwMmJlNDJiIlIJcmVx", + "dWVzdElkEo8BCgdhY3Rpb25zGAIgAygJQnWSQVwyOExpc3Qgb2YgYWN0aW9u", + "cyBiZWluZyBwZXJmb3JtZWQgb24gdGhlIHNldCBvZiByZXNvdXJjZXMuShpb", + "InZpZXc6cHVibGljIiwgImNvbW1lbnQiXagBAbABAeBBArpIEMgBAZIBCggB", + "GAEiBHICEAFSB2FjdGlvbnMSRAoJcHJpbmNpcGFsGAMgASgLMhsuY2VyYm9z", + "LmVuZ2luZS52MS5QcmluY2lwYWxCCeBBArpIA8gBAVIJcHJpbmNpcGFsEkUK", + "CHJlc291cmNlGAQgASgLMh4uY2VyYm9zLnJlcXVlc3QudjEuUmVzb3VyY2VT", + "ZXRCCeBBArpIA8gBAVIIcmVzb3VyY2USYwoMaW5jbHVkZV9tZXRhGAUgASgI", + "QkCSQT0yO09wdCB0byByZWNlaXZlIHJlcXVlc3QgcHJvY2Vzc2luZyBtZXRh", + "ZGF0YSBpbiB0aGUgcmVzcG9uc2UuUgtpbmNsdWRlTWV0YRI6CghhdXhfZGF0", + "YRgGIAEoCzIaLmNlcmJvcy5yZXF1ZXN0LnYxLkF1eERhdGFCA+BBAVIHYXV4", + "RGF0YToSkkEPCg0yC1BEUCBSZXF1ZXN0IqwICgtSZXNvdXJjZVNldBJECgRr", + "aW5kGAEgASgJQjCSQSAyDlJlc291cmNlIGtpbmQuSg4iYWxidW06b2JqZWN0", + "IuBBArpIB8gBAXICEAFSBGtpbmQS3AEKDnBvbGljeV92ZXJzaW9uGAIgASgJ", + "QrQBkkGZATJ8VGhlIHBvbGljeSB2ZXJzaW9uIHRvIHVzZSB0byBldmFsdWF0", + "ZSB0aGlzIHJlcXVlc3QuIElmIG5vdCBzcGVjaWZpZWQsIHdpbGwgZGVmYXVs", + "dCB0byB0aGUgc2VydmVyLWNvbmZpZ3VyZWQgZGVmYXVsdCB2ZXJzaW9uLkoJ", + "ImRlZmF1bHQiigENXltbOndvcmQ6XV0qJOBBAbpIEXIPMg1eW1s6d29yZDpd", + "XSokUg1wb2xpY3lWZXJzaW9uEuwCCglpbnN0YW5jZXMYAyADKAsyLS5jZXJi", + "b3MucmVxdWVzdC52MS5SZXNvdXJjZVNldC5JbnN0YW5jZXNFbnRyeUKeApJB", + "jAIybVNldCBvZiByZXNvdXJjZSBpbnN0YW5jZXMgdG8gY2hlY2suIEVhY2gg", + "aW5zdGFuY2UgbXVzdCBiZSBrZXllZCBieSBhbiBhcHBsaWNhdGlvbi1zcGVj", + "aWZpYyB1bmlxdWUgaWRlbnRpZmllci5KlwF7IlhYMTI1Ijp7ImF0dHIiOnsi", + "b3duZXIiOiJidWdzX2J1bm55IiwgInB1YmxpYyI6IGZhbHNlLCAiZmxhZ2dl", + "ZCI6IGZhbHNlfX0sICJYWDIyNSI6eyJhdHRyIjp7Im93bmVyIjoiZGFmZnlf", + "ZHVjayIsICJwdWJsaWMiOiB0cnVlLCAiZmxhZ2dlZCI6IGZhbHNlfX19yAEB", + "4EECukgIyAEBmgECCAFSCWluc3RhbmNlcxKGAgoFc2NvcGUYBCABKAlC7wGS", + "QbIBMn5BIGRvdC1zZXBhcmF0ZWQgc2NvcGUgdGhhdCBkZXNjcmliZXMgdGhl", + "IGhpZXJhcmNoeSB0aGVzZSByZXNvdXJjZXMgYmVsb25nIHRvLiBUaGlzIGlz", + "IHVzZWQgZm9yIGRldGVybWluaW5nIHBvbGljeSBpbmhlcml0YW5jZS6KAS9e", + "KFtbOmFsbnVtOl1dW1s6d29yZDpdXC1dKihcLltbOndvcmQ6XVwtXSopKikq", + "JOBBAbpIM3IxMi9eKFtbOmFsbnVtOl1dW1s6d29yZDpdXC1dKihcLltbOndv", + "cmQ6XVwtXSopKikqJFIFc2NvcGUaXgoOSW5zdGFuY2VzRW50cnkSEAoDa2V5", + "GAEgASgJUgNrZXkSNgoFdmFsdWUYAiABKAsyIC5jZXJib3MucmVxdWVzdC52", + "MS5BdHRyaWJ1dGVzTWFwUgV2YWx1ZToCOAE6IJJBHQobMhlTZXQgb2YgcmVz", + "b3VyY2VzIHRvIGNoZWNrIsECCg1BdHRyaWJ1dGVzTWFwEqkBCgRhdHRyGAEg", + "AygLMiouY2VyYm9zLnJlcXVlc3QudjEuQXR0cmlidXRlc01hcC5BdHRyRW50", + "cnlCaZJBZjJkS2V5LXZhbHVlIHBhaXJzIG9mIGNvbnRleHR1YWwgZGF0YSBh", + "Ym91dCB0aGlzIGluc3RhbmNlIHRoYXQgc2hvdWxkIGJlIHVzZWQgZHVyaW5n", + "IHBvbGljeSBldmFsdWF0aW9uLlIEYXR0chpPCglBdHRyRW50cnkSEAoDa2V5", + "GAEgASgJUgNrZXkSLAoFdmFsdWUYAiABKAsyFi5nb29nbGUucHJvdG9idWYu", + "VmFsdWVSBXZhbHVlOgI4ATozkkEwCi4yLFVuaXF1ZSBpZGVudGlmaWVyIGZv", + "ciB0aGUgcmVzb3VyY2UgaW5zdGFuY2UuIuMGChlDaGVja1Jlc291cmNlQmF0", + "Y2hSZXF1ZXN0EpYBCgpyZXF1ZXN0X2lkGAEgASgJQneSQXQySk9wdGlvbmFs", + "IGFwcGxpY2F0aW9uLXNwZWNpZmljIElEIHVzZWZ1bCBmb3IgY29ycmVsYXRp", + "bmcgbG9ncyBmb3IgYW5hbHlzaXMuSiYiYzJkYjE3YjgtNGY5Zi00ZmIxLWFj", + "ZmQtOTE2MmEwMmJlNDJiIlIJcmVxdWVzdElkEkQKCXByaW5jaXBhbBgCIAEo", + "CzIbLmNlcmJvcy5lbmdpbmUudjEuUHJpbmNpcGFsQgngQQK6SAPIAQFSCXBy", + "aW5jaXBhbBK/AgoJcmVzb3VyY2VzGAMgAygLMjcuY2VyYm9zLnJlcXVlc3Qu", + "djEuQ2hlY2tSZXNvdXJjZUJhdGNoUmVxdWVzdC5CYXRjaEVudHJ5QucBkkHV", + "ATIeTGlzdCBvZiByZXNvdXJjZXMgYW5kIGFjdGlvbnMuSqwBW3siYWN0aW9u", + "cyI6WyJ2aWV3IiwiY29tbWVudCJdLCAicmVzb3VyY2UiOnsia2luZCI6ImFs", + "YnVtOm9iamVjdCIsInBvbGljeVZlcnNpb24iOiJkZWZhdWx0IiwiaWQiOiJY", + "WDEyNSIsImF0dHIiOnsib3duZXIiOiJidWdzX2J1bm55IiwgInB1YmxpYyI6", + "IGZhbHNlLCAiZmxhZ2dlZCI6IGZhbHNlfX19XagBAbABAeBBArpICMgBAZIB", + "AggBUglyZXNvdXJjZXMSNQoIYXV4X2RhdGEYBCABKAsyGi5jZXJib3MucmVx", + "dWVzdC52MS5BdXhEYXRhUgdhdXhEYXRhGtkBCgpCYXRjaEVudHJ5EocBCgdh", + "Y3Rpb25zGAEgAygJQm2SQVQyMExpc3Qgb2YgYWN0aW9ucyBiZWluZyBwZXJm", + "b3JtZWQgb24gdGhlIHJlc291cmNlLkoaWyJ2aWV3OnB1YmxpYyIsICJjb21t", + "ZW50Il2oAQGwAQHgQQK6SBDIAQGSAQoIARgBIgRyAhABUgdhY3Rpb25zEkEK", + "CHJlc291cmNlGAIgASgLMhouY2VyYm9zLmVuZ2luZS52MS5SZXNvdXJjZUIJ", + "4EECukgDyAEBUghyZXNvdXJjZToSkkEPCg0yC1BEUCBSZXF1ZXN0IscHChVD", "aGVja1Jlc291cmNlc1JlcXVlc3QSlgEKCnJlcXVlc3RfaWQYASABKAlCd5JB", "dDJKT3B0aW9uYWwgYXBwbGljYXRpb24tc3BlY2lmaWMgSUQgdXNlZnVsIGZv", "ciBjb3JyZWxhdGluZyBsb2dzIGZvciBhbmFseXNpcy5KJiJjMmRiMTdiOC00", "ZjlmLTRmYjEtYWNmZC05MTYyYTAyYmU0MmIiUglyZXF1ZXN0SWQSWAoMaW5j", "bHVkZV9tZXRhGAIgASgIQjWSQTIyMEFkZCByZXF1ZXN0IHByb2Nlc3Npbmcg", - "bWV0YWRhdGEgdG8gdGhlIHJlc3BvbnNlLlILaW5jbHVkZU1ldGESRgoJcHJp", - "bmNpcGFsGAMgASgLMhsuY2VyYm9zLmVuZ2luZS52MS5QcmluY2lwYWxCC+BB", - "AvpCBYoBAhABUglwcmluY2lwYWwSuwIKCXJlc291cmNlcxgEIAMoCzI2LmNl", - "cmJvcy5yZXF1ZXN0LnYxLkNoZWNrUmVzb3VyY2VzUmVxdWVzdC5SZXNvdXJj", - "ZUVudHJ5QuQBkkHVATIeTGlzdCBvZiByZXNvdXJjZXMgYW5kIGFjdGlvbnMu", - "SqwBW3siYWN0aW9ucyI6WyJ2aWV3IiwiY29tbWVudCJdLCAicmVzb3VyY2Ui", - "Onsia2luZCI6ImFsYnVtOm9iamVjdCIsInBvbGljeVZlcnNpb24iOiJkZWZh", - "dWx0IiwiaWQiOiJYWDEyNSIsImF0dHIiOnsib3duZXIiOiJidWdzX2J1bm55", - "IiwgInB1YmxpYyI6IGZhbHNlLCAiZmxhZ2dlZCI6IGZhbHNlfX19XagBAbAB", - "AeBBAvpCBZIBAggBUglyZXNvdXJjZXMSNQoIYXV4X2RhdGEYBSABKAsyGi5j", - "ZXJib3MucmVxdWVzdC52MS5BdXhEYXRhUgdhdXhEYXRhGtsBCg1SZXNvdXJj", - "ZUVudHJ5EoQBCgdhY3Rpb25zGAEgAygJQmqSQVQyMExpc3Qgb2YgYWN0aW9u", - "cyBiZWluZyBwZXJmb3JtZWQgb24gdGhlIHJlc291cmNlLkoaWyJ2aWV3OnB1", - "YmxpYyIsICJjb21tZW50Il2oAQGwAQHgQQL6Qg2SAQoIARgBIgRyAhABUgdh", - "Y3Rpb25zEkMKCHJlc291cmNlGAIgASgLMhouY2VyYm9zLmVuZ2luZS52MS5S", - "ZXNvdXJjZUIL4EEC+kIFigECEAFSCHJlc291cmNlOh6SQRsKGTIXQ2hlY2sg", - "cmVzb3VyY2VzIHJlcXVlc3QirwcKB0F1eERhdGESMAoDand0GAEgASgLMh4u", - "Y2VyYm9zLnJlcXVlc3QudjEuQXV4RGF0YS5KV1RSA2p3dBqtBgoDSldUEsQE", - "CgV0b2tlbhgBIAEoCUKtBJJBnwQyHUpXVCBmcm9tIHRoZSBvcmlnaW5hbCBy", - "ZXF1ZXN0SskDImV5SmhiR2NpT2lKRlV6TTROQ0lzSW10cFpDSTZJakU1VEda", - "YVlYUkZaR2M0TTFsT1l6VnlNak5uZFUxS2NYSnVORDBpTENKMGVYQWlPaUpL", - "VjFRaWZRLmV5SmhkV1FpT2xzaVkyVnlZbTl6TFdwM2RDMTBaWE4wY3lKZExD", - "SmpkWE4wYjIxQmNuSmhlU0k2V3lKQklpd2lRaUlzSWtNaVhTd2lZM1Z6ZEc5", - "dFNXNTBJam8wTWl3aVkzVnpkRzl0VFdGd0lqcDdJa0VpT2lKQlFTSXNJa0lp", - "T2lKQ1FpSXNJa01pT2lKRFF5SjlMQ0pqZFhOMGIyMVRkSEpwYm1jaU9pSm1i", - "MjlpWVhJaUxDSmxlSEFpT2pFNU5EazVNelF3TXprc0ltbHpjeUk2SW1ObGNt", - "SnZjeTEwWlhOMExYTjFhWFJsSW4wLldOX3RPU2NTcGRfRUktUDVFSTFZbGFn", - "eEVnRXhTZkJqQXRjcmdjRjZseVdqMWxHcFJfR0t4OWdvWkVwMnBfdDVBVldY", - "Tl9ianpfc01VbUpkSmE0Y1ZkNTVRbTFtaVItRkt1Nm9OUkhuU0VXZE1GbW5B", - "cndQdy1ZREpXZnlsTEZYIoIDGgoUeC1leGFtcGxlLXNob3ctdmFsdWUSAiAA", - "ggMUCg54LWZpbGwtZXhhbXBsZRICIADgQQL6QgRyAhABUgV0b2tlbhK4AQoK", - "a2V5X3NldF9pZBgCIAEoCUKZAZJBlQEyUktleSBJRCB0byB1c2Ugd2hlbiBk", - "ZWNvZGluZyB0aGUgdG9rZW4gKGRlZmluZWQgaW4gdGhlIENlcmJvcyBzZXJ2", - "ZXIgY29uZmlndXJhdGlvbilKCyJteS1rZXlzZXQiggMaChR4LWV4YW1wbGUt", - "c2hvdy12YWx1ZRICIACCAxQKDngtZmlsbC1leGFtcGxlEgIgAFIIa2V5U2V0", - "SWQ6JJJBIQofMh1KV1QgZnJvbSB0aGUgb3JpZ2luYWwgcmVxdWVzdDpCkkE/", - "Cj0yO1N0cnVjdHVyZWQgYXV4aWxpYXJ5IGRhdGEgdXNlZnVsIGZvciBldmFs", - "dWF0aW5nIHRoZSByZXF1ZXN0IlsKBEZpbGUSJwoJZmlsZV9uYW1lGAEgASgJ", - "QgrgQQL6QgRyAhABUghmaWxlTmFtZRIqCghjb250ZW50cxgCIAEoDEIO4EEC", - "+kIIegYQARiAgEBSCGNvbnRlbnRzIrsBChlQbGF5Z3JvdW5kVmFsaWRhdGVS", - "ZXF1ZXN0EiMKDXBsYXlncm91bmRfaWQYASABKAlSDHBsYXlncm91bmRJZBJV", - "CgVmaWxlcxgCIAMoCzIXLmNlcmJvcy5yZXF1ZXN0LnYxLkZpbGVCJpJBFjIO", - "TGlzdCBvZiBmaWxlcy6gAR6oAQHgQQL6QgeSAQQIARAeUgVmaWxlczoikkEf", - "Ch0yG1BsYXlncm91bmQgdmFsaWRhdGUgcmVxdWVzdCKzAQoVUGxheWdyb3Vu", - "ZFRlc3RSZXF1ZXN0EiMKDXBsYXlncm91bmRfaWQYASABKAlSDHBsYXlncm91", - "bmRJZBJVCgVmaWxlcxgCIAMoCzIXLmNlcmJvcy5yZXF1ZXN0LnYxLkZpbGVC", - "JpJBFjIOTGlzdCBvZiBmaWxlcy6gAR6oAQHgQQL6QgeSAQQIARAeUgVmaWxl", - "czoekkEbChkyF1BsYXlncm91bmQgdGVzdCByZXF1ZXN0Iu4DChlQbGF5Z3Jv", - "dW5kRXZhbHVhdGVSZXF1ZXN0EiMKDXBsYXlncm91bmRfaWQYASABKAlSDHBs", - "YXlncm91bmRJZBJVCgVmaWxlcxgCIAMoCzIXLmNlcmJvcy5yZXF1ZXN0LnYx", - "LkZpbGVCJpJBFjIOTGlzdCBvZiBmaWxlcy6gAR6oAQHgQQL6QgeSAQQIARAe", - "UgVmaWxlcxJGCglwcmluY2lwYWwYAyABKAsyGy5jZXJib3MuZW5naW5lLnYx", - "LlByaW5jaXBhbEIL4EEC+kIFigECEAFSCXByaW5jaXBhbBJDCghyZXNvdXJj", - "ZRgEIAEoCzIaLmNlcmJvcy5lbmdpbmUudjEuUmVzb3VyY2VCC+BBAvpCBYoB", - "AhABUghyZXNvdXJjZRJtCgdhY3Rpb25zGAUgAygJQlOSQTsyMExpc3Qgb2Yg", - "YWN0aW9ucyBiZWluZyBwZXJmb3JtZWQgb24gdGhlIHJlc291cmNlLqABMqgB", - "AbABAeBBAvpCD5IBDAgBEDIYASIEcgIQAVIHYWN0aW9ucxI1CghhdXhfZGF0", - "YRgGIAEoCzIaLmNlcmJvcy5yZXF1ZXN0LnYxLkF1eERhdGFSB2F1eERhdGE6", - "IpJBHwodMhtQbGF5Z3JvdW5kIGV2YWx1YXRlIHJlcXVlc3QisAQKFlBsYXln", - "cm91bmRQcm94eVJlcXVlc3QSIwoNcGxheWdyb3VuZF9pZBgBIAEoCVIMcGxh", - "eWdyb3VuZElkElUKBWZpbGVzGAIgAygLMhcuY2VyYm9zLnJlcXVlc3QudjEu", - "RmlsZUImkkEWMg5MaXN0IG9mIGZpbGVzLqABHqgBAeBBAvpCB5IBBAgBEB5S", - "BWZpbGVzEloKEmNoZWNrX3Jlc291cmNlX3NldBgDIAEoCzIqLmNlcmJvcy5y", - "ZXF1ZXN0LnYxLkNoZWNrUmVzb3VyY2VTZXRSZXF1ZXN0SABSEGNoZWNrUmVz", - "b3VyY2VTZXQSYAoUY2hlY2tfcmVzb3VyY2VfYmF0Y2gYBCABKAsyLC5jZXJi", - "b3MucmVxdWVzdC52MS5DaGVja1Jlc291cmNlQmF0Y2hSZXF1ZXN0SABSEmNo", - "ZWNrUmVzb3VyY2VCYXRjaBJQCg5wbGFuX3Jlc291cmNlcxgFIAEoCzInLmNl", - "cmJvcy5yZXF1ZXN0LnYxLlBsYW5SZXNvdXJjZXNSZXF1ZXN0SABSDXBsYW5S", - "ZXNvdXJjZXMSUwoPY2hlY2tfcmVzb3VyY2VzGAYgASgLMiguY2VyYm9zLnJl", - "cXVlc3QudjEuQ2hlY2tSZXNvdXJjZXNSZXF1ZXN0SABSDmNoZWNrUmVzb3Vy", - "Y2VzOh+SQRwKGjIYUGxheWdyb3VuZCBwcm94eSByZXF1ZXN0QhQKDXByb3h5", - "X3JlcXVlc3QSA/hCASKdAQoYQWRkT3JVcGRhdGVQb2xpY3lSZXF1ZXN0El8K", - "CHBvbGljaWVzGAEgAygLMhguY2VyYm9zLnBvbGljeS52MS5Qb2xpY3lCKZJB", - "GTIRTGlzdCBvZiBwb2xpY2llcy6gAQqoAQHgQQL6QgeSAQQIARAKUghwb2xp", - "Y2llczogkkEdChsyGUFkZC91cGRhdGUgcG9saWN5IHJlcXVlc3QiogcKGkxp", - "c3RBdWRpdExvZ0VudHJpZXNSZXF1ZXN0EoYBCgRraW5kGAEgASgOMjIuY2Vy", - "Ym9zLnJlcXVlc3QudjEuTGlzdEF1ZGl0TG9nRW50cmllc1JlcXVlc3QuS2lu", - "ZEI+kkExMhFLaW5kIG9mIGxvZyBlbnRyefICC0tJTkRfQUNDRVNT8gINS0lO", - "RF9ERUNJU0lPTvpCB4IBBBgBGAJSBGtpbmQSRAoEdGFpbBgCIAEoDUIukkEj", - "Mg9MYXN0IE4gZW50cmllcy5ZAAAAAABAj0BpAAAAAAAA8D/6QgUqAxjoB0gA", - "UgR0YWlsElMKB2JldHdlZW4YAyABKAsyNy5jZXJib3MucmVxdWVzdC52MS5M", - "aXN0QXVkaXRMb2dFbnRyaWVzUmVxdWVzdC5UaW1lUmFuZ2VIAFIHYmV0d2Vl", - "bhJZCgVzaW5jZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkIm", - "kkEjMiFFbnRyaWVzIHNpbmNlIE4gaG91cnMvbWludXRlcyBhZ29IAFIFc2lu", - "Y2USgwEKBmxvb2t1cBgFIAEoCUJpkkE3MgpCeSBDYWxsIElEigEoXlswMTIz", - "NDU2Nzg5QUJDREVGR0hKS01OUFFSU1RWV1hZWl17MjZ9JPpCLHIqMiheWzAx", - "MjM0NTY3ODlBQkNERUZHSEpLTU5QUVJTVFZXWFlaXXsyNn0kSABSBmxvb2t1", - "cBqtAgoJVGltZVJhbmdlEn8KBXN0YXJ0GAEgASgLMhouZ29vZ2xlLnByb3Rv", - "YnVmLlRpbWVzdGFtcEJNkkE9Mh5TdGFydCBkYXRlIGluIElTTyA4NjAxIGZv", - "cm1hdC5KGyIyMDIxLTA3LTA1VDA3OjI3OjAxKzAwOjAwIuBBAvpCB7IBBAgB", - "OAFSBXN0YXJ0EnkKA2VuZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1l", - "c3RhbXBCS5JBOzIcRW5kIGRhdGUgaW4gSVNPIDg2MDEgZm9ybWF0LkobIjIw", - "MjEtMDctMDVUMDc6Mjc6MDErMDA6MDAi4EEC+kIHsgEECAE4AVIDZW5kOiSS", - "QSEKHzIdRW50cmllcyBiZXR3ZWVuIGEgdGltZSByYW5nZS4iQAoES2luZBIU", - "ChBLSU5EX1VOU1BFQ0lGSUVEEAASDwoLS0lORF9BQ0NFU1MQARIRCg1LSU5E", - "X0RFQ0lTSU9OEAJCDQoGZmlsdGVyEgP4QgEiLwoRU2VydmVySW5mb1JlcXVl", - "c3Q6GpJBFwoVMhNTZXJ2ZXIgaW5mbyByZXF1ZXN0IvcCChNMaXN0UG9saWNp", - "ZXNSZXF1ZXN0EkwKEGluY2x1ZGVfZGlzYWJsZWQYASABKAhCIZJBGzIZSW5j", - "bHVkZSBkaXNhYmxlZCBwb2xpY2llc+BBAVIPaW5jbHVkZURpc2FibGVkEkwK", - "C25hbWVfcmVnZXhwGAIgASgJQiuSQSUyI0ZpbHRlciBwb2xpY2llcyBieSBu", - "YW1lIHdpdGggcmVnZXhw4EEBUgpuYW1lUmVnZXhwEk8KDHNjb3BlX3JlZ2V4", - "cBgDIAEoCUIskkEmMiRGaWx0ZXIgcG9saWNpZXMgYnkgc2NvcGUgd2l0aCBy", - "ZWdleHDgQQFSC3Njb3BlUmVnZXhwElUKDnZlcnNpb25fcmVnZXhwGAQgASgJ", - "Qi6SQSgyJkZpbHRlciBwb2xpY2llcyBieSB2ZXJzaW9uIHdpdGggcmVnZXhw", - "4EEBUg12ZXJzaW9uUmVnZXhwOhySQRkKFzIVTGlzdCBwb2xpY2llcyByZXF1", - "ZXN0IoMCChBHZXRQb2xpY3lSZXF1ZXN0EtMBCgJpZBgBIAMoCULCAZJBpgEy", - "hwFGb3IgYmxvYiwgZGlzaywgZ2l0IHN0b3JlcyB1c2UgZmlsZSBuYW1lICg8", - "ZmlsZW5hbWU+LnlhbWwpLiBGb3IgbXlzcWwsIHBvc3RncmVzLCBzcWxpdGUz", - "IHVzZSBpZCAoPGtpbmQ+LjxuYW1lPi48dmVyc2lvbj4pIG9mIHRoZSBwb2xp", - "Y3lKGiJwcmluY2lwYWwuc2FyYWgudmRlZmF1bHQi4EEC+kISkgEPCAEQGRgB", - "IgdyBRABGIAKUgJpZDoZkkEWChQyEkdldCBwb2xpY3kgcmVxdWVzdCKgAQoU", - "RGlzYWJsZVBvbGljeVJlcXVlc3QSaQoCaWQYASADKAlCWZJBPjIgVW5pcXVl", - "IGlkZW50aWZpZXIgZm9yIHRoZSBwb2xpY3lKGiJwcmluY2lwYWwuc2FyYWgu", - "dmRlZmF1bHQi4EEC+kISkgEPCAEQGRgBIgdyBRABGIAKUgJpZDodkkEaChgy", - "FkRpc2FibGUgcG9saWN5IHJlcXVlc3QingEKE0VuYWJsZVBvbGljeVJlcXVl", - "c3QSaQoCaWQYASADKAlCWZJBPjIgVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRo", - "ZSBwb2xpY3lKGiJwcmluY2lwYWwuc2FyYWgudmRlZmF1bHQi4EEC+kISkgEP", - "CAEQGRgBIgdyBRABGIAKUgJpZDockkEZChcyFUVuYWJsZSBwb2xpY3kgcmVx", - "dWVzdCKaAQoYQWRkT3JVcGRhdGVTY2hlbWFSZXF1ZXN0ElwKB3NjaGVtYXMY", - "ASADKAsyGC5jZXJib3Muc2NoZW1hLnYxLlNjaGVtYUIokkEYMhBMaXN0IG9m", - "IHNjaGVtYXMuoAEKqAEB4EEC+kIHkgEECAEQClIHc2NoZW1hczogkkEdChsy", - "GUFkZC91cGRhdGUgc2NoZW1hIHJlcXVlc3QiNAoSTGlzdFNjaGVtYXNSZXF1", - "ZXN0Oh6SQRsKGTIXTGlzdCBzY2hlbWEgaWRzIHJlcXVlc3QikQEKEEdldFNj", - "aGVtYVJlcXVlc3QSXwoCaWQYASADKAlCT5JBNDIgVW5pcXVlIGlkZW50aWZp", - "ZXIgZm9yIHRoZSBzY2hlbWFKECJwcmluY2lwYWwuanNvbiLgQQL6QhKSAQ8I", - "ARAZGAEiB3IFEAEY/wFSAmlkOhySQRkKFzIVR2V0IHNjaGVtYShzKSByZXF1", - "ZXN0IpcBChNEZWxldGVTY2hlbWFSZXF1ZXN0El8KAmlkGAEgAygJQk+SQTQy", - "IFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc2NoZW1hShAicHJpbmNpcGFs", - "Lmpzb24i4EEC+kISkgEPCAEQGRgBIgdyBRABGP8BUgJpZDofkkEcChoyGERl", - "bGV0ZSBzY2hlbWEocykgcmVxdWVzdCJ4ChJSZWxvYWRTdG9yZVJlcXVlc3QS", - "RQoEd2FpdBgBIAEoCEIxkkErMilXYWl0IHVudGlsIHRoZSByZWxvYWRpbmcg", - "cHJvY2VzcyBmaW5pc2hlc+BBAVIEd2FpdDobkkEYChYyFFJlbG9hZCBzdG9y", - "ZSByZXF1ZXN0QnMKGWRldi5jZXJib3MuYXBpLnYxLnJlcXVlc3RaPmdpdGh1", - "Yi5jb20vY2VyYm9zL2NlcmJvcy9hcGkvZ2VucGIvY2VyYm9zL3JlcXVlc3Qv", - "djE7cmVxdWVzdHYxqgIVQ2VyYm9zLkFwaS5WMS5SZXF1ZXN0YgZwcm90bzM=")); + "bWV0YWRhdGEgdG8gdGhlIHJlc3BvbnNlLlILaW5jbHVkZU1ldGESRAoJcHJp", + "bmNpcGFsGAMgASgLMhsuY2VyYm9zLmVuZ2luZS52MS5QcmluY2lwYWxCCeBB", + "ArpIA8gBAVIJcHJpbmNpcGFsEr4CCglyZXNvdXJjZXMYBCADKAsyNi5jZXJi", + "b3MucmVxdWVzdC52MS5DaGVja1Jlc291cmNlc1JlcXVlc3QuUmVzb3VyY2VF", + "bnRyeULnAZJB1QEyHkxpc3Qgb2YgcmVzb3VyY2VzIGFuZCBhY3Rpb25zLkqs", + "AVt7ImFjdGlvbnMiOlsidmlldyIsImNvbW1lbnQiXSwgInJlc291cmNlIjp7", + "ImtpbmQiOiJhbGJ1bTpvYmplY3QiLCJwb2xpY3lWZXJzaW9uIjoiZGVmYXVs", + "dCIsImlkIjoiWFgxMjUiLCJhdHRyIjp7Im93bmVyIjoiYnVnc19idW5ueSIs", + "ICJwdWJsaWMiOiBmYWxzZSwgImZsYWdnZWQiOiBmYWxzZX19fV2oAQGwAQHg", + "QQK6SAjIAQGSAQIIAVIJcmVzb3VyY2VzEjUKCGF1eF9kYXRhGAUgASgLMhou", + "Y2VyYm9zLnJlcXVlc3QudjEuQXV4RGF0YVIHYXV4RGF0YRrcAQoNUmVzb3Vy", + "Y2VFbnRyeRKHAQoHYWN0aW9ucxgBIAMoCUJtkkFUMjBMaXN0IG9mIGFjdGlv", + "bnMgYmVpbmcgcGVyZm9ybWVkIG9uIHRoZSByZXNvdXJjZS5KGlsidmlldzpw", + "dWJsaWMiLCAiY29tbWVudCJdqAEBsAEB4EECukgQyAEBkgEKCAEYASIEcgIQ", + "AVIHYWN0aW9ucxJBCghyZXNvdXJjZRgCIAEoCzIaLmNlcmJvcy5lbmdpbmUu", + "djEuUmVzb3VyY2VCCeBBArpIA8gBAVIIcmVzb3VyY2U6HpJBGwoZMhdDaGVj", + "ayByZXNvdXJjZXMgcmVxdWVzdCKyBwoHQXV4RGF0YRIwCgNqd3QYASABKAsy", + "Hi5jZXJib3MucmVxdWVzdC52MS5BdXhEYXRhLkpXVFIDand0GrAGCgNKV1QS", + "xwQKBXRva2VuGAEgASgJQrAEkkGfBDIdSldUIGZyb20gdGhlIG9yaWdpbmFs", + "IHJlcXVlc3RKyQMiZXlKaGJHY2lPaUpGVXpNNE5DSXNJbXRwWkNJNklqRTVU", + "R1phWVhSRlpHYzRNMWxPWXpWeU1qTm5kVTFLY1hKdU5EMGlMQ0owZVhBaU9p", + "SktWMVFpZlEuZXlKaGRXUWlPbHNpWTJWeVltOXpMV3AzZEMxMFpYTjBjeUpk", + "TENKamRYTjBiMjFCY25KaGVTSTZXeUpCSWl3aVFpSXNJa01pWFN3aVkzVnpk", + "Rzl0U1c1MElqbzBNaXdpWTNWemRHOXRUV0Z3SWpwN0lrRWlPaUpCUVNJc0lr", + "SWlPaUpDUWlJc0lrTWlPaUpEUXlKOUxDSmpkWE4wYjIxVGRISnBibWNpT2lK", + "bWIyOWlZWElpTENKbGVIQWlPakU1TkRrNU16UXdNemtzSW1semN5STZJbU5s", + "Y21KdmN5MTBaWE4wTFhOMWFYUmxJbjAuV05fdE9TY1NwZF9FSS1QNUVJMVls", + "YWd4RWdFeFNmQmpBdGNyZ2NGNmx5V2oxbEdwUl9HS3g5Z29aRXAycF90NUFW", + "V1hOX2Jqel9zTVVtSmRKYTRjVmQ1NVFtMW1pUi1GS3U2b05SSG5TRVdkTUZt", + "bkFyd1B3LVlESldmeWxMRlgiggMaChR4LWV4YW1wbGUtc2hvdy12YWx1ZRIC", + "IACCAxQKDngtZmlsbC1leGFtcGxlEgIgAOBBArpIB8gBAXICEAFSBXRva2Vu", + "ErgBCgprZXlfc2V0X2lkGAIgASgJQpkBkkGVATJSS2V5IElEIHRvIHVzZSB3", + "aGVuIGRlY29kaW5nIHRoZSB0b2tlbiAoZGVmaW5lZCBpbiB0aGUgQ2VyYm9z", + "IHNlcnZlciBjb25maWd1cmF0aW9uKUoLIm15LWtleXNldCKCAxoKFHgtZXhh", + "bXBsZS1zaG93LXZhbHVlEgIgAIIDFAoOeC1maWxsLWV4YW1wbGUSAiAAUghr", + "ZXlTZXRJZDokkkEhCh8yHUpXVCBmcm9tIHRoZSBvcmlnaW5hbCByZXF1ZXN0", + "OkKSQT8KPTI7U3RydWN0dXJlZCBhdXhpbGlhcnkgZGF0YSB1c2VmdWwgZm9y", + "IGV2YWx1YXRpbmcgdGhlIHJlcXVlc3QiYQoERmlsZRIqCglmaWxlX25hbWUY", + "ASABKAlCDeBBArpIB8gBAXICEAFSCGZpbGVOYW1lEi0KCGNvbnRlbnRzGAIg", + "ASgMQhHgQQK6SAvIAQF6BhABGICAQFIIY29udGVudHMivgEKGVBsYXlncm91", + "bmRWYWxpZGF0ZVJlcXVlc3QSIwoNcGxheWdyb3VuZF9pZBgBIAEoCVIMcGxh", + "eWdyb3VuZElkElgKBWZpbGVzGAIgAygLMhcuY2VyYm9zLnJlcXVlc3QudjEu", + "RmlsZUIpkkEWMg5MaXN0IG9mIGZpbGVzLqABHqgBAeBBArpICsgBAZIBBAgB", + "EB5SBWZpbGVzOiKSQR8KHTIbUGxheWdyb3VuZCB2YWxpZGF0ZSByZXF1ZXN0", + "IrYBChVQbGF5Z3JvdW5kVGVzdFJlcXVlc3QSIwoNcGxheWdyb3VuZF9pZBgB", + "IAEoCVIMcGxheWdyb3VuZElkElgKBWZpbGVzGAIgAygLMhcuY2VyYm9zLnJl", + "cXVlc3QudjEuRmlsZUIpkkEWMg5MaXN0IG9mIGZpbGVzLqABHqgBAeBBArpI", + "CsgBAZIBBAgBEB5SBWZpbGVzOh6SQRsKGTIXUGxheWdyb3VuZCB0ZXN0IHJl", + "cXVlc3Qi8AMKGVBsYXlncm91bmRFdmFsdWF0ZVJlcXVlc3QSIwoNcGxheWdy", + "b3VuZF9pZBgBIAEoCVIMcGxheWdyb3VuZElkElgKBWZpbGVzGAIgAygLMhcu", + "Y2VyYm9zLnJlcXVlc3QudjEuRmlsZUIpkkEWMg5MaXN0IG9mIGZpbGVzLqAB", + "HqgBAeBBArpICsgBAZIBBAgBEB5SBWZpbGVzEkQKCXByaW5jaXBhbBgDIAEo", + "CzIbLmNlcmJvcy5lbmdpbmUudjEuUHJpbmNpcGFsQgngQQK6SAPIAQFSCXBy", + "aW5jaXBhbBJBCghyZXNvdXJjZRgEIAEoCzIaLmNlcmJvcy5lbmdpbmUudjEu", + "UmVzb3VyY2VCCeBBArpIA8gBAVIIcmVzb3VyY2UScAoHYWN0aW9ucxgFIAMo", + "CUJWkkE7MjBMaXN0IG9mIGFjdGlvbnMgYmVpbmcgcGVyZm9ybWVkIG9uIHRo", + "ZSByZXNvdXJjZS6gATKoAQGwAQHgQQK6SBLIAQGSAQwIARAyGAEiBHICEAFS", + "B2FjdGlvbnMSNQoIYXV4X2RhdGEYBiABKAsyGi5jZXJib3MucmVxdWVzdC52", + "MS5BdXhEYXRhUgdhdXhEYXRhOiKSQR8KHTIbUGxheWdyb3VuZCBldmFsdWF0", + "ZSByZXF1ZXN0IrUEChZQbGF5Z3JvdW5kUHJveHlSZXF1ZXN0EiMKDXBsYXln", + "cm91bmRfaWQYASABKAlSDHBsYXlncm91bmRJZBJYCgVmaWxlcxgCIAMoCzIX", + "LmNlcmJvcy5yZXF1ZXN0LnYxLkZpbGVCKZJBFjIOTGlzdCBvZiBmaWxlcy6g", + "AR6oAQHgQQK6SArIAQGSAQQIARAeUgVmaWxlcxJaChJjaGVja19yZXNvdXJj", + "ZV9zZXQYAyABKAsyKi5jZXJib3MucmVxdWVzdC52MS5DaGVja1Jlc291cmNl", + "U2V0UmVxdWVzdEgAUhBjaGVja1Jlc291cmNlU2V0EmAKFGNoZWNrX3Jlc291", + "cmNlX2JhdGNoGAQgASgLMiwuY2VyYm9zLnJlcXVlc3QudjEuQ2hlY2tSZXNv", + "dXJjZUJhdGNoUmVxdWVzdEgAUhJjaGVja1Jlc291cmNlQmF0Y2gSUAoOcGxh", + "bl9yZXNvdXJjZXMYBSABKAsyJy5jZXJib3MucmVxdWVzdC52MS5QbGFuUmVz", + "b3VyY2VzUmVxdWVzdEgAUg1wbGFuUmVzb3VyY2VzElMKD2NoZWNrX3Jlc291", + "cmNlcxgGIAEoCzIoLmNlcmJvcy5yZXF1ZXN0LnYxLkNoZWNrUmVzb3VyY2Vz", + "UmVxdWVzdEgAUg5jaGVja1Jlc291cmNlczofkkEcChoyGFBsYXlncm91bmQg", + "cHJveHkgcmVxdWVzdEIWCg1wcm94eV9yZXF1ZXN0EgW6SAIIASKgAQoYQWRk", + "T3JVcGRhdGVQb2xpY3lSZXF1ZXN0EmIKCHBvbGljaWVzGAEgAygLMhguY2Vy", + "Ym9zLnBvbGljeS52MS5Qb2xpY3lCLJJBGTIRTGlzdCBvZiBwb2xpY2llcy6g", + "AQqoAQHgQQK6SArIAQGSAQQIARAKUghwb2xpY2llczogkkEdChsyGUFkZC91", + "cGRhdGUgcG9saWN5IHJlcXVlc3QirAcKGkxpc3RBdWRpdExvZ0VudHJpZXNS", + "ZXF1ZXN0EokBCgRraW5kGAEgASgOMjIuY2VyYm9zLnJlcXVlc3QudjEuTGlz", + "dEF1ZGl0TG9nRW50cmllc1JlcXVlc3QuS2luZEJBkkExMhFLaW5kIG9mIGxv", + "ZyBlbnRyefICC0tJTkRfQUNDRVNT8gINS0lORF9ERUNJU0lPTrpICsgBAYIB", + "BBoCAQJSBGtpbmQSRgoEdGFpbBgCIAEoDUIwkkEjMg9MYXN0IE4gZW50cmll", + "cy5ZAAAAAABAj0BpAAAAAAAA8D+6SAcqBRjoBygBSABSBHRhaWwSUwoHYmV0", + "d2VlbhgDIAEoCzI3LmNlcmJvcy5yZXF1ZXN0LnYxLkxpc3RBdWRpdExvZ0Vu", + "dHJpZXNSZXF1ZXN0LlRpbWVSYW5nZUgAUgdiZXR3ZWVuElkKBXNpbmNlGAQg", + "ASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQiaSQSMyIUVudHJpZXMg", + "c2luY2UgTiBob3Vycy9taW51dGVzIGFnb0gAUgVzaW5jZRKDAQoGbG9va3Vw", + "GAUgASgJQmmSQTcyCkJ5IENhbGwgSUSKASheWzAxMjM0NTY3ODlBQkNERUZH", + "SEpLTU5QUVJTVFZXWFlaXXsyNn0kukgscioyKF5bMDEyMzQ1Njc4OUFCQ0RF", + "RkdISktNTlBRUlNUVldYWVpdezI2fSRIAFIGbG9va3VwGrACCglUaW1lUmFu", + "Z2USgAEKBXN0YXJ0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFt", + "cEJOkkE9Mh5TdGFydCBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5KGyIyMDIx", + "LTA3LTA1VDA3OjI3OjAxKzAwOjAwIuBBArpICMgBAbIBAjgBUgVzdGFydBJ6", + "CgNlbmQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQkySQTsy", + "HEVuZCBkYXRlIGluIElTTyA4NjAxIGZvcm1hdC5KGyIyMDIxLTA3LTA1VDA3", + "OjI3OjAxKzAwOjAwIuBBArpICMgBAbIBAjgBUgNlbmQ6JJJBIQofMh1FbnRy", + "aWVzIGJldHdlZW4gYSB0aW1lIHJhbmdlLiJACgRLaW5kEhQKEEtJTkRfVU5T", + "UEVDSUZJRUQQABIPCgtLSU5EX0FDQ0VTUxABEhEKDUtJTkRfREVDSVNJT04Q", + "AkIPCgZmaWx0ZXISBbpIAggBIi8KEVNlcnZlckluZm9SZXF1ZXN0OhqSQRcK", + "FTITU2VydmVyIGluZm8gcmVxdWVzdCL3AgoTTGlzdFBvbGljaWVzUmVxdWVz", + "dBJMChBpbmNsdWRlX2Rpc2FibGVkGAEgASgIQiGSQRsyGUluY2x1ZGUgZGlz", + "YWJsZWQgcG9saWNpZXPgQQFSD2luY2x1ZGVEaXNhYmxlZBJMCgtuYW1lX3Jl", + "Z2V4cBgCIAEoCUIrkkElMiNGaWx0ZXIgcG9saWNpZXMgYnkgbmFtZSB3aXRo", + "IHJlZ2V4cOBBAVIKbmFtZVJlZ2V4cBJPCgxzY29wZV9yZWdleHAYAyABKAlC", + "LJJBJjIkRmlsdGVyIHBvbGljaWVzIGJ5IHNjb3BlIHdpdGggcmVnZXhw4EEB", + "UgtzY29wZVJlZ2V4cBJVCg52ZXJzaW9uX3JlZ2V4cBgEIAEoCUIukkEoMiZG", + "aWx0ZXIgcG9saWNpZXMgYnkgdmVyc2lvbiB3aXRoIHJlZ2V4cOBBAVINdmVy", + "c2lvblJlZ2V4cDockkEZChcyFUxpc3QgcG9saWNpZXMgcmVxdWVzdCKGAgoQ", + "R2V0UG9saWN5UmVxdWVzdBLWAQoCaWQYASADKAlCxQGSQaYBMocBRm9yIGJs", + "b2IsIGRpc2ssIGdpdCBzdG9yZXMgdXNlIGZpbGUgbmFtZSAoPGZpbGVuYW1l", + "Pi55YW1sKS4gRm9yIG15c3FsLCBwb3N0Z3Jlcywgc3FsaXRlMyB1c2UgaWQg", + "KDxraW5kPi48bmFtZT4uPHZlcnNpb24+KSBvZiB0aGUgcG9saWN5ShoicHJp", + "bmNpcGFsLnNhcmFoLnZkZWZhdWx0IuBBArpIFcgBAZIBDwgBEBkYASIHcgUQ", + "ARiAClICaWQ6GZJBFgoUMhJHZXQgcG9saWN5IHJlcXVlc3QiowEKFERpc2Fi", + "bGVQb2xpY3lSZXF1ZXN0EmwKAmlkGAEgAygJQlySQT4yIFVuaXF1ZSBpZGVu", + "dGlmaWVyIGZvciB0aGUgcG9saWN5ShoicHJpbmNpcGFsLnNhcmFoLnZkZWZh", + "dWx0IuBBArpIFcgBAZIBDwgBEBkYASIHcgUQARiAClICaWQ6HZJBGgoYMhZE", + "aXNhYmxlIHBvbGljeSByZXF1ZXN0IqEBChNFbmFibGVQb2xpY3lSZXF1ZXN0", + "EmwKAmlkGAEgAygJQlySQT4yIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUg", + "cG9saWN5ShoicHJpbmNpcGFsLnNhcmFoLnZkZWZhdWx0IuBBArpIFcgBAZIB", + "DwgBEBkYASIHcgUQARiAClICaWQ6HJJBGQoXMhVFbmFibGUgcG9saWN5IHJl", + "cXVlc3QinQEKGEFkZE9yVXBkYXRlU2NoZW1hUmVxdWVzdBJfCgdzY2hlbWFz", + "GAEgAygLMhguY2VyYm9zLnNjaGVtYS52MS5TY2hlbWFCK5JBGDIQTGlzdCBv", + "ZiBzY2hlbWFzLqABCqgBAeBBArpICsgBAZIBBAgBEApSB3NjaGVtYXM6IJJB", + "HQobMhlBZGQvdXBkYXRlIHNjaGVtYSByZXF1ZXN0IjQKEkxpc3RTY2hlbWFz", + "UmVxdWVzdDoekkEbChkyF0xpc3Qgc2NoZW1hIGlkcyByZXF1ZXN0IpQBChBH", + "ZXRTY2hlbWFSZXF1ZXN0EmIKAmlkGAEgAygJQlKSQTQyIFVuaXF1ZSBpZGVu", + "dGlmaWVyIGZvciB0aGUgc2NoZW1hShAicHJpbmNpcGFsLmpzb24i4EECukgV", + "yAEBkgEPCAEQGRgBIgdyBRABGP8BUgJpZDockkEZChcyFUdldCBzY2hlbWEo", + "cykgcmVxdWVzdCKaAQoTRGVsZXRlU2NoZW1hUmVxdWVzdBJiCgJpZBgBIAMo", + "CUJSkkE0MiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHNjaGVtYUoQInBy", + "aW5jaXBhbC5qc29uIuBBArpIFcgBAZIBDwgBEBkYASIHcgUQARj/AVICaWQ6", + "H5JBHAoaMhhEZWxldGUgc2NoZW1hKHMpIHJlcXVlc3QieAoSUmVsb2FkU3Rv", + "cmVSZXF1ZXN0EkUKBHdhaXQYASABKAhCMZJBKzIpV2FpdCB1bnRpbCB0aGUg", + "cmVsb2FkaW5nIHByb2Nlc3MgZmluaXNoZXPgQQFSBHdhaXQ6G5JBGAoWMhRS", + "ZWxvYWQgc3RvcmUgcmVxdWVzdEJzChlkZXYuY2VyYm9zLmFwaS52MS5yZXF1", + "ZXN0Wj5naXRodWIuY29tL2NlcmJvcy9jZXJib3MvYXBpL2dlbnBiL2NlcmJv", + "cy9yZXF1ZXN0L3YxO3JlcXVlc3R2MaoCFUNlcmJvcy5BcGkuVjEuUmVxdWVz", + "dGIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Cerbos.Api.V1.Engine.EngineReflection.Descriptor, global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor, global::Cerbos.Api.V1.Schema.SchemaReflection.Descriptor, global::Google.Api.FieldBehaviorReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Grpc.Gateway.ProtocGenOpenapiv2.Options.AnnotationsReflection.Descriptor, global::Validate.ValidateReflection.Descriptor, }, + new pbr::FileDescriptor[] { global::Buf.Validate.ValidateReflection.Descriptor, global::Cerbos.Api.V1.Engine.EngineReflection.Descriptor, global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor, global::Cerbos.Api.V1.Schema.SchemaReflection.Descriptor, global::Google.Api.FieldBehaviorReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Grpc.Gateway.ProtocGenOpenapiv2.Options.AnnotationsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Request.PlanResourcesRequest), global::Cerbos.Api.V1.Request.PlanResourcesRequest.Parser, new[]{ "RequestId", "Action", "Principal", "Resource", "AuxData", "IncludeMeta" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Request.CheckResourceSetRequest), global::Cerbos.Api.V1.Request.CheckResourceSetRequest.Parser, new[]{ "RequestId", "Actions", "Principal", "Resource", "IncludeMeta", "AuxData" }, null, null, null, null), diff --git a/src/Sdk/Cerbos/Api/V1/Response/Response.g.cs b/src/Sdk/Cerbos/Api/V1/Response/Response.g.cs index 3021046..b1d4d96 100644 --- a/src/Sdk/Cerbos/Api/V1/Response/Response.g.cs +++ b/src/Sdk/Cerbos/Api/V1/Response/Response.g.cs @@ -30,267 +30,268 @@ static ResponseReflection() { "bmdpbmUucHJvdG8aHWNlcmJvcy9wb2xpY3kvdjEvcG9saWN5LnByb3RvGh1j", "ZXJib3Mvc2NoZW1hL3YxL3NjaGVtYS5wcm90bxobZ29vZ2xlL3Byb3RvYnVm", "L2VtcHR5LnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9vcHRpb25zL2Fu", - "bm90YXRpb25zLnByb3RvIrUIChVQbGFuUmVzb3VyY2VzUmVzcG9uc2USbwoK", + "bm90YXRpb25zLnByb3RvIs0IChVQbGFuUmVzb3VyY2VzUmVzcG9uc2USbwoK", "cmVxdWVzdF9pZBgBIAEoCUJQkkFNMiNSZXF1ZXN0IElEIHByb3ZpZGVkIGlu", "IHRoZSByZXF1ZXN0LkomImMyZGIxN2I4LTRmOWYtNGZiMS1hY2ZkLTkxNjJh", "MDJiZTQyYiJSCXJlcXVlc3RJZBIyCgZhY3Rpb24YAiABKAlCGpJBFzIGQWN0", - "aW9uSg0idmlldzpwdWJsaWMiUgZhY3Rpb24SigEKDXJlc291cmNlX2tpbmQY", - "AyABKAlCZZJBYjIOUmVzb3VyY2Uga2luZC5KDiJhbGJ1bTpvYmplY3QiigE/", - "XltbOmFscGhhOl1dW1s6d29yZDpdXEBcLlwtXSooXDpbWzphbHBoYTpdXVtb", - "OndvcmQ6XVxAXC5cLV0qKSokUgxyZXNvdXJjZUtpbmQSSgoOcG9saWN5X3Zl", - "cnNpb24YBCABKAlCI5JBIDITVGhlIHBvbGljeSB2ZXJzaW9uLkoJImRlZmF1", - "bHQiUg1wb2xpY3lWZXJzaW9uEkoKBmZpbHRlchgFIAEoCzIlLmNlcmJvcy5l", - "bmdpbmUudjEuUGxhblJlc291cmNlc0ZpbHRlckILkkEIMgZGaWx0ZXJSBmZp", - "bHRlchJ/CgRtZXRhGAYgASgLMi4uY2VyYm9zLnJlc3BvbnNlLnYxLlBsYW5S", - "ZXNvdXJjZXNSZXNwb25zZS5NZXRhQjuSQTgyNk9wdGlvbmFsIG1ldGFkYXRh", - "IGFib3V0IHRoZSByZXF1ZXN0IGV2YWx1YXRpb24gcHJvY2Vzc1IEbWV0YRKQ", - "AQoRdmFsaWRhdGlvbl9lcnJvcnMYByADKAsyIS5jZXJib3Muc2NoZW1hLnYx", - "LlZhbGlkYXRpb25FcnJvckJAkkE9MjtMaXN0IG9mIHZhbGlkYXRpb24gZXJy", - "b3JzIChpZiBzY2hlbWEgdmFsaWRhdGlvbiBpcyBlbmFibGVkKVIQdmFsaWRh", - "dGlvbkVycm9ycxr/AQoETWV0YRJdCgxmaWx0ZXJfZGVidWcYASABKAlCOpJB", - "NzI1RmlsdGVyIHRleHR1YWwgcmVwcmVzZW50YXRpb24gZm9yIGRlYnVnZ2lu", - "ZyBwdXJwb3Nlcy5SC2ZpbHRlckRlYnVnEm0KDW1hdGNoZWRfc2NvcGUYAiAB", - "KAlCSJJBRTIxUG9saWN5IHNjb3BlIHRoYXQgbWF0Y2hlZCB0byBwcm9kdWNl", - "IHRoaXMgZWZmZWN0LkoQImFjbWUuY29ycC5iYXNlIlIMbWF0Y2hlZFNjb3Bl", - "OimSQSYKJDIiTWV0YWRhdGEgYWJvdXQgcmVxdWVzdCBldmFsdWF0aW9uLjo8", - "kkE5CjcyNVJlc291cmNlcyBxdWVyeSBwbGFuIHJlc3BvbnNlIGZvciBhIHNl", - "dCBvZiByZXNvdXJjZXMuIsgVChhDaGVja1Jlc291cmNlU2V0UmVzcG9uc2US", - "bwoKcmVxdWVzdF9pZBgBIAEoCUJQkkFNMiNSZXF1ZXN0IElEIHByb3ZpZGVk", - "IGluIHRoZSByZXF1ZXN0LkomImMyZGIxN2I4LTRmOWYtNGZiMS1hY2ZkLTkx", - "NjJhMDJiZTQyYiJSCXJlcXVlc3RJZBLbAgoScmVzb3VyY2VfaW5zdGFuY2Vz", - "GAIgAygLMkMuY2VyYm9zLnJlc3BvbnNlLnYxLkNoZWNrUmVzb3VyY2VTZXRS", - "ZXNwb25zZS5SZXNvdXJjZUluc3RhbmNlc0VudHJ5QuYBkkHiATJLUmVzdWx0", - "cyBmb3IgZWFjaCByZXNvdXJjZSBpbnN0YW5jZSwga2V5ZWQgYnkgdGhlIElE", - "IHN1cHBsaWVkIGluIHRoZSByZXF1ZXN0SpIBeyJYWDEyNSI6eyJhY3Rpb25z", - "Ijp7InZpZXc6KiI6IkVGRkVDVF9BTExPVyIsICJjb21tZW50IjogIkVGRkVD", - "VF9BTExPVyJ9fSwgIlhYMjI1Ijp7ImFjdGlvbnMiOnsidmlldzoqIjoiRUZG", - "RUNUX0RFTlkiLCAiY29tbWVudCI6ICJFRkZFQ1RfREVOWSJ9fX1SEXJlc291", - "cmNlSW5zdGFuY2VzEoIBCgRtZXRhGAMgASgLMjEuY2VyYm9zLnJlc3BvbnNl", - "LnYxLkNoZWNrUmVzb3VyY2VTZXRSZXNwb25zZS5NZXRhQjuSQTgyNk9wdGlv", - "bmFsIG1ldGFkYXRhIGFib3V0IHRoZSByZXF1ZXN0IGV2YWx1YXRpb24gcHJv", - "Y2Vzc1IEbWV0YRqLAwoPQWN0aW9uRWZmZWN0TWFwEo4BCgdhY3Rpb25zGAEg", - "AygLMkkuY2VyYm9zLnJlc3BvbnNlLnYxLkNoZWNrUmVzb3VyY2VTZXRSZXNw", - "b25zZS5BY3Rpb25FZmZlY3RNYXAuQWN0aW9uc0VudHJ5QimSQSYyJE1hcHBp", - "bmcgb2YgZWFjaCBhY3Rpb24gdG8gYW4gZWZmZWN0LlIHYWN0aW9ucxKQAQoR", - "dmFsaWRhdGlvbl9lcnJvcnMYAiADKAsyIS5jZXJib3Muc2NoZW1hLnYxLlZh", - "bGlkYXRpb25FcnJvckJAkkE9MjtMaXN0IG9mIHZhbGlkYXRpb24gZXJyb3Jz", - "IChpZiBzY2hlbWEgdmFsaWRhdGlvbiBpcyBlbmFibGVkKVIQdmFsaWRhdGlv", - "bkVycm9ycxpUCgxBY3Rpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSLgoF", - "dmFsdWUYAiABKA4yGC5jZXJib3MuZWZmZWN0LnYxLkVmZmVjdFIFdmFsdWU6", - "AjgBGokMCgRNZXRhEs8DChJyZXNvdXJjZV9pbnN0YW5jZXMYASADKAsySC5j", - "ZXJib3MucmVzcG9uc2UudjEuQ2hlY2tSZXNvdXJjZVNldFJlc3BvbnNlLk1l", - "dGEuUmVzb3VyY2VJbnN0YW5jZXNFbnRyeULVApJB0QIyIk1ldGFkYXRhIGFi", - "b3V0IHJlc291cmNlIGluc3RhbmNlcy5KqgJ7IlhYMTI1IjogeyJhY3Rpb25z", - "IjogeyJ2aWV3OioiOnsibWF0Y2hlZF9wb2xpY3kiOiAiYWxidW06b2JqZWN0", - "OmRlZmF1bHQifSwiY29tbWVudCI6eyJtYXRjaGVkX3BvbGljeSI6ICJhbGJ1", - "bTpvYmplY3Q6ZGVmYXVsdCJ9fSwgImVmZmVjdGl2ZV9kZXJpdmVkX3JvbGVz", - "IjogWyJvd25lciJdfSwgIlhYMjI1IjogeyJhY3Rpb25zIjogeyJ2aWV3Oioi", - "OnsibWF0Y2hlZF9wb2xpY3kiOiAiYWxidW06b2JqZWN0OmRlZmF1bHQifSwi", - "Y29tbWVudCI6eyJtYXRjaGVkX3BvbGljeSI6ICJhbGJ1bTpvYmplY3Q6ZGVm", - "YXVsdCJ9fX19UhFyZXNvdXJjZUluc3RhbmNlcxqIAgoKRWZmZWN0TWV0YRJv", - "Cg5tYXRjaGVkX3BvbGljeRgBIAEoCUJIkkFFMitQb2xpY3kgdGhhdCBtYXRj", - "aGVkIHRvIHByb2R1Y2UgdGhpcyBlZmZlY3QuShYiYWxidW06b2JqZWN0OmRl", - "ZmF1bHQiUg1tYXRjaGVkUG9saWN5Em0KDW1hdGNoZWRfc2NvcGUYAiABKAlC", - "SJJBRTIxUG9saWN5IHNjb3BlIHRoYXQgbWF0Y2hlZCB0byBwcm9kdWNlIHRo", - "aXMgZWZmZWN0LkoQImFjbWUuY29ycC5iYXNlIlIMbWF0Y2hlZFNjb3BlOhqS", - "QRcKFTITTmFtZSBvZiB0aGUgYWN0aW9uLhrzBAoKQWN0aW9uTWV0YRKnAgoH", - "YWN0aW9ucxgBIAMoCzJJLmNlcmJvcy5yZXNwb25zZS52MS5DaGVja1Jlc291", - "cmNlU2V0UmVzcG9uc2UuTWV0YS5BY3Rpb25NZXRhLkFjdGlvbnNFbnRyeULB", - "AZJBvQEyT01ldGFkYXRhIGFib3V0IHRoZSBlZmZlY3QgY2FsY3VsYXRlZCBm", - "b3IgZWFjaCBhY3Rpb24gb24gdGhpcyByZXNvdXJjZSBpbnN0YW5jZS5Kansi", - "dmlldzoqIjp7Im1hdGNoZWRfcG9saWN5IjogImFsYnVtOm9iamVjdDpkZWZh", - "dWx0In0sImNvbW1lbnQiOnsibWF0Y2hlZF9wb2xpY3kiOiAiYWxidW06b2Jq", - "ZWN0OmRlZmF1bHQifX1SB2FjdGlvbnMSgwEKF2VmZmVjdGl2ZV9kZXJpdmVk", - "X3JvbGVzGAIgAygJQkuSQUgyO0Rlcml2ZWQgcm9sZXMgdGhhdCB3ZXJlIGVm", - "ZmVjdGl2ZSBkdXJpbmcgcG9saWN5IGV2YWx1YXRpb24uSglbIm93bmVyIl1S", - "FWVmZmVjdGl2ZURlcml2ZWRSb2xlcxp4CgxBY3Rpb25zRW50cnkSEAoDa2V5", - "GAEgASgJUgNrZXkSUgoFdmFsdWUYAiABKAsyPC5jZXJib3MucmVzcG9uc2Uu", - "djEuQ2hlY2tSZXNvdXJjZVNldFJlc3BvbnNlLk1ldGEuRWZmZWN0TWV0YVIF", - "dmFsdWU6AjgBOjuSQTgKNjI0VW5pcXVlIHJlc291cmNlIGluc3RhbmNlIElE", - "IHN1cHBsaWVkIGluIHRoZSByZXF1ZXN0LhqCAQoWUmVzb3VyY2VJbnN0YW5j", - "ZXNFbnRyeRIQCgNrZXkYASABKAlSA2tleRJSCgV2YWx1ZRgCIAEoCzI8LmNl", - "cmJvcy5yZXNwb25zZS52MS5DaGVja1Jlc291cmNlU2V0UmVzcG9uc2UuTWV0", - "YS5BY3Rpb25NZXRhUgV2YWx1ZToCOAE6KZJBJgokMiJNZXRhZGF0YSBhYm91", - "dCByZXF1ZXN0IGV2YWx1YXRpb24uGoIBChZSZXNvdXJjZUluc3RhbmNlc0Vu", - "dHJ5EhAKA2tleRgBIAEoCVIDa2V5ElIKBXZhbHVlGAIgASgLMjwuY2VyYm9z", - "LnJlc3BvbnNlLnYxLkNoZWNrUmVzb3VyY2VTZXRSZXNwb25zZS5BY3Rpb25F", - "ZmZlY3RNYXBSBXZhbHVlOgI4ATo5kkE2CjQyMlBvbGljeSBldmFsdWF0aW9u", - "IHJlc3BvbnNlIGZvciBhIHNldCBvZiByZXNvdXJjZXMuIuUGChpDaGVja1Jl", - "c291cmNlQmF0Y2hSZXNwb25zZRJvCgpyZXF1ZXN0X2lkGAEgASgJQlCSQU0y", - "I1JlcXVlc3QgSUQgcHJvdmlkZWQgaW4gdGhlIHJlcXVlc3QuSiYiYzJkYjE3", - "YjgtNGY5Zi00ZmIxLWFjZmQtOTE2MmEwMmJlNDJiIlIJcmVxdWVzdElkErMB", - "CgdyZXN1bHRzGAIgAygLMj4uY2VyYm9zLnJlc3BvbnNlLnYxLkNoZWNrUmVz", - "b3VyY2VCYXRjaFJlc3BvbnNlLkFjdGlvbkVmZmVjdE1hcEJZkkFWMhhSZXN1", - "bHQgZm9yIGVhY2ggcmVzb3VyY2VKOlt7InJlc291cmNlSWQiOiJYWDEyNSIs", - "ImFjdGlvbnMiOnsidmlldyI6IkVGRkVDVF9BTExPVyJ9fV1SB3Jlc3VsdHMa", - "4gMKD0FjdGlvbkVmZmVjdE1hcBI6CgtyZXNvdXJjZV9pZBgBIAEoCUIZkkEW", - "MgtSZXNvdXJjZSBJREoHIlhYMTI1IlIKcmVzb3VyY2VJZBKpAQoHYWN0aW9u", - "cxgCIAMoCzJLLmNlcmJvcy5yZXNwb25zZS52MS5DaGVja1Jlc291cmNlQmF0", - "Y2hSZXNwb25zZS5BY3Rpb25FZmZlY3RNYXAuQWN0aW9uc0VudHJ5QkKSQT8y", - "JE1hcHBpbmcgb2YgZWFjaCBhY3Rpb24gdG8gYW4gZWZmZWN0LkoXeyJ2aWV3", - "IjoiRUZGRUNUX0FMTE9XIn1SB2FjdGlvbnMSkAEKEXZhbGlkYXRpb25fZXJy", - "b3JzGAMgAygLMiEuY2VyYm9zLnNjaGVtYS52MS5WYWxpZGF0aW9uRXJyb3JC", - "QJJBPTI7TGlzdCBvZiB2YWxpZGF0aW9uIGVycm9ycyAoaWYgc2NoZW1hIHZh", - "bGlkYXRpb24gaXMgZW5hYmxlZClSEHZhbGlkYXRpb25FcnJvcnMaVAoMQWN0", - "aW9uc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5Ei4KBXZhbHVlGAIgASgOMhgu", - "Y2VyYm9zLmVmZmVjdC52MS5FZmZlY3RSBXZhbHVlOgI4ATo7kkE4CjYyNFBv", - "bGljeSBldmFsdWF0aW9uIHJlc3BvbnNlIGZvciBhIGJhdGNoIG9mIHJlc291", - "cmNlcy4iphcKFkNoZWNrUmVzb3VyY2VzUmVzcG9uc2USbwoKcmVxdWVzdF9p", - "ZBgBIAEoCUJQkkFNMiNSZXF1ZXN0IElEIHByb3ZpZGVkIGluIHRoZSByZXF1", - "ZXN0LkomImMyZGIxN2I4LTRmOWYtNGZiMS1hY2ZkLTkxNjJhMDJiZTQyYiJS", - "CXJlcXVlc3RJZBLjAQoHcmVzdWx0cxgCIAMoCzI2LmNlcmJvcy5yZXNwb25z", - "ZS52MS5DaGVja1Jlc291cmNlc1Jlc3BvbnNlLlJlc3VsdEVudHJ5QpABkkGM", - "ATIYUmVzdWx0IGZvciBlYWNoIHJlc291cmNlSnBbeyJyZXNvdXJjZSI6IHsi", - "SWQiOiJYWDEyNSIsICJraW5kIjoiYWxidW06b2JqZWN0In0sICJhY3Rpb25z", - "Ijp7InZpZXciOiJFRkZFQ1RfQUxMT1ciLCJjb21tZW50IjoiRUZGRUNUX0RF", - "TlkifX1dUgdyZXN1bHRzGoAUCgtSZXN1bHRFbnRyeRJbCghyZXNvdXJjZRgB", - "IAEoCzI/LmNlcmJvcy5yZXNwb25zZS52MS5DaGVja1Jlc291cmNlc1Jlc3Bv", - "bnNlLlJlc3VsdEVudHJ5LlJlc291cmNlUghyZXNvdXJjZRKhAQoHYWN0aW9u", - "cxgCIAMoCzJDLmNlcmJvcy5yZXNwb25zZS52MS5DaGVja1Jlc291cmNlc1Jl", - "c3BvbnNlLlJlc3VsdEVudHJ5LkFjdGlvbnNFbnRyeUJCkkE/MiRNYXBwaW5n", - "IG9mIGVhY2ggYWN0aW9uIHRvIGFuIGVmZmVjdC5KF3sidmlldyI6IkVGRkVD", - "VF9BTExPVyJ9UgdhY3Rpb25zEpABChF2YWxpZGF0aW9uX2Vycm9ycxgDIAMo", - "CzIhLmNlcmJvcy5zY2hlbWEudjEuVmFsaWRhdGlvbkVycm9yQkCSQT0yO0xp", - "c3Qgb2YgdmFsaWRhdGlvbiBlcnJvcnMgKGlmIHNjaGVtYSB2YWxpZGF0aW9u", - "IGlzIGVuYWJsZWQpUhB2YWxpZGF0aW9uRXJyb3JzEpgCCgRtZXRhGAQgASgL", - "MjsuY2VyYm9zLnJlc3BvbnNlLnYxLkNoZWNrUmVzb3VyY2VzUmVzcG9uc2Uu", - "UmVzdWx0RW50cnkuTWV0YULGAZJBwgEyIE1ldGFkYXRhIGFib3V0IHBvbGlj", - "eSBldmFsdWF0aW9uSp0BeyJhY3Rpb25zIjogeyJ2aWV3OioiOnsibWF0Y2hl", + "aW9uSg0idmlldzpwdWJsaWMiUgZhY3Rpb24SSAoNcmVzb3VyY2Vfa2luZBgD", + "IAEoCUIjkkEgMg5SZXNvdXJjZSBraW5kLkoOImFsYnVtOm9iamVjdCJSDHJl", + "c291cmNlS2luZBJKCg5wb2xpY3lfdmVyc2lvbhgEIAEoCUIjkkEgMhNUaGUg", + "cG9saWN5IHZlcnNpb24uSgkiZGVmYXVsdCJSDXBvbGljeVZlcnNpb24SSgoG", + "ZmlsdGVyGAUgASgLMiUuY2VyYm9zLmVuZ2luZS52MS5QbGFuUmVzb3VyY2Vz", + "RmlsdGVyQguSQQgyBkZpbHRlclIGZmlsdGVyEn8KBG1ldGEYBiABKAsyLi5j", + "ZXJib3MucmVzcG9uc2UudjEuUGxhblJlc291cmNlc1Jlc3BvbnNlLk1ldGFC", + "O5JBODI2T3B0aW9uYWwgbWV0YWRhdGEgYWJvdXQgdGhlIHJlcXVlc3QgZXZh", + "bHVhdGlvbiBwcm9jZXNzUgRtZXRhEpABChF2YWxpZGF0aW9uX2Vycm9ycxgH", + "IAMoCzIhLmNlcmJvcy5zY2hlbWEudjEuVmFsaWRhdGlvbkVycm9yQkCSQT0y", + "O0xpc3Qgb2YgdmFsaWRhdGlvbiBlcnJvcnMgKGlmIHNjaGVtYSB2YWxpZGF0", + "aW9uIGlzIGVuYWJsZWQpUhB2YWxpZGF0aW9uRXJyb3JzElkKDmNlcmJvc19j", + "YWxsX2lkGAggASgJQjOSQTAyLkF1ZGl0IGxvZyBjYWxsIElEIGFzc29jaWF0", + "ZWQgd2l0aCB0aGlzIHJlcXVlc3RSDGNlcmJvc0NhbGxJZBr/AQoETWV0YRJd", + "CgxmaWx0ZXJfZGVidWcYASABKAlCOpJBNzI1RmlsdGVyIHRleHR1YWwgcmVw", + "cmVzZW50YXRpb24gZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy5SC2ZpbHRlckRl", + "YnVnEm0KDW1hdGNoZWRfc2NvcGUYAiABKAlCSJJBRTIxUG9saWN5IHNjb3Bl", + "IHRoYXQgbWF0Y2hlZCB0byBwcm9kdWNlIHRoaXMgZWZmZWN0LkoQImFjbWUu", + "Y29ycC5iYXNlIlIMbWF0Y2hlZFNjb3BlOimSQSYKJDIiTWV0YWRhdGEgYWJv", + "dXQgcmVxdWVzdCBldmFsdWF0aW9uLjo8kkE5CjcyNVJlc291cmNlcyBxdWVy", + "eSBwbGFuIHJlc3BvbnNlIGZvciBhIHNldCBvZiByZXNvdXJjZXMuIsgVChhD", + "aGVja1Jlc291cmNlU2V0UmVzcG9uc2USbwoKcmVxdWVzdF9pZBgBIAEoCUJQ", + "kkFNMiNSZXF1ZXN0IElEIHByb3ZpZGVkIGluIHRoZSByZXF1ZXN0LkomImMy", + "ZGIxN2I4LTRmOWYtNGZiMS1hY2ZkLTkxNjJhMDJiZTQyYiJSCXJlcXVlc3RJ", + "ZBLbAgoScmVzb3VyY2VfaW5zdGFuY2VzGAIgAygLMkMuY2VyYm9zLnJlc3Bv", + "bnNlLnYxLkNoZWNrUmVzb3VyY2VTZXRSZXNwb25zZS5SZXNvdXJjZUluc3Rh", + "bmNlc0VudHJ5QuYBkkHiATJLUmVzdWx0cyBmb3IgZWFjaCByZXNvdXJjZSBp", + "bnN0YW5jZSwga2V5ZWQgYnkgdGhlIElEIHN1cHBsaWVkIGluIHRoZSByZXF1", + "ZXN0SpIBeyJYWDEyNSI6eyJhY3Rpb25zIjp7InZpZXc6KiI6IkVGRkVDVF9B", + "TExPVyIsICJjb21tZW50IjogIkVGRkVDVF9BTExPVyJ9fSwgIlhYMjI1Ijp7", + "ImFjdGlvbnMiOnsidmlldzoqIjoiRUZGRUNUX0RFTlkiLCAiY29tbWVudCI6", + "ICJFRkZFQ1RfREVOWSJ9fX1SEXJlc291cmNlSW5zdGFuY2VzEoIBCgRtZXRh", + "GAMgASgLMjEuY2VyYm9zLnJlc3BvbnNlLnYxLkNoZWNrUmVzb3VyY2VTZXRS", + "ZXNwb25zZS5NZXRhQjuSQTgyNk9wdGlvbmFsIG1ldGFkYXRhIGFib3V0IHRo", + "ZSByZXF1ZXN0IGV2YWx1YXRpb24gcHJvY2Vzc1IEbWV0YRqLAwoPQWN0aW9u", + "RWZmZWN0TWFwEo4BCgdhY3Rpb25zGAEgAygLMkkuY2VyYm9zLnJlc3BvbnNl", + "LnYxLkNoZWNrUmVzb3VyY2VTZXRSZXNwb25zZS5BY3Rpb25FZmZlY3RNYXAu", + "QWN0aW9uc0VudHJ5QimSQSYyJE1hcHBpbmcgb2YgZWFjaCBhY3Rpb24gdG8g", + "YW4gZWZmZWN0LlIHYWN0aW9ucxKQAQoRdmFsaWRhdGlvbl9lcnJvcnMYAiAD", + "KAsyIS5jZXJib3Muc2NoZW1hLnYxLlZhbGlkYXRpb25FcnJvckJAkkE9MjtM", + "aXN0IG9mIHZhbGlkYXRpb24gZXJyb3JzIChpZiBzY2hlbWEgdmFsaWRhdGlv", + "biBpcyBlbmFibGVkKVIQdmFsaWRhdGlvbkVycm9ycxpUCgxBY3Rpb25zRW50", + "cnkSEAoDa2V5GAEgASgJUgNrZXkSLgoFdmFsdWUYAiABKA4yGC5jZXJib3Mu", + "ZWZmZWN0LnYxLkVmZmVjdFIFdmFsdWU6AjgBGokMCgRNZXRhEs8DChJyZXNv", + "dXJjZV9pbnN0YW5jZXMYASADKAsySC5jZXJib3MucmVzcG9uc2UudjEuQ2hl", + "Y2tSZXNvdXJjZVNldFJlc3BvbnNlLk1ldGEuUmVzb3VyY2VJbnN0YW5jZXNF", + "bnRyeULVApJB0QIyIk1ldGFkYXRhIGFib3V0IHJlc291cmNlIGluc3RhbmNl", + "cy5KqgJ7IlhYMTI1IjogeyJhY3Rpb25zIjogeyJ2aWV3OioiOnsibWF0Y2hl", "ZF9wb2xpY3kiOiAiYWxidW06b2JqZWN0OmRlZmF1bHQifSwiY29tbWVudCI6", "eyJtYXRjaGVkX3BvbGljeSI6ICJhbGJ1bTpvYmplY3Q6ZGVmYXVsdCJ9fSwg", - "ImVmZmVjdGl2ZV9kZXJpdmVkX3JvbGVzIjogWyJvd25lciJdfVIEbWV0YRL2", - "AQoHb3V0cHV0cxgFIAMoCzIdLmNlcmJvcy5lbmdpbmUudjEuT3V0cHV0RW50", - "cnlCvAGSQbgBMixPdXRwdXQgZm9yIGVhY2ggcnVsZSB3aXRoIG91dHB1dHMg", - "Y29uZmlndXJlZEqHAVt7InNyYyI6ICJyZXNvdXJjZS5leHBlbnNlLnYxL2Fj", - "bWUjcnVsZS0wMDEiLCAidmFsIjogInZpZXdfYWxsb3dlZDphbGljZSJ9LCB7", - "InNyYyI6ICJyZXNvdXJjZS5leHBlbnNlLnYxL2FjbWUjcnVsZS0wMDIiLCAi", - "dmFsIjogImZvbyJ9XVIHb3V0cHV0cxr/BAoIUmVzb3VyY2USOQoCaWQYASAB", - "KAlCKZJBJjIbSUQgb2YgdGhlIHJlc291cmNlIGluc3RhbmNlSgciWFgxMjUi", - "UgJpZBKTAQoEa2luZBgCIAEoCUJ/kkF8MilOYW1lIG9mIHRoZSByZXNvdXJj", - "ZSBraW5kIGJlaW5nIGFjY2Vzc2VkLkoNImFsYnVtOnBob3RvIooBP15bWzph", - "bHBoYTpdXVtbOndvcmQ6XVxAXC5cLV0qKFw6W1s6YWxwaGE6XV1bWzp3b3Jk", - "Ol1cQFwuXC1dKikqJFIEa2luZBLFAQoOcG9saWN5X3ZlcnNpb24YAyABKAlC", - "nQGSQZkBMnxUaGUgcG9saWN5IHZlcnNpb24gdG8gdXNlIHRvIGV2YWx1YXRl", - "IHRoaXMgcmVxdWVzdC4gSWYgbm90IHNwZWNpZmllZCwgd2lsbCBkZWZhdWx0", - "IHRvIHRoZSBzZXJ2ZXItY29uZmlndXJlZCBkZWZhdWx0IHZlcnNpb24uSgki", - "ZGVmYXVsdCKKAQ1eW1s6d29yZDpdXSokUg1wb2xpY3lWZXJzaW9uEtkBCgVz", - "Y29wZRgEIAEoCULCAZJBvgEyfUEgZG90LXNlcGFyYXRlZCBzY29wZSB0aGF0", - "IGRlc2NyaWJlcyB0aGUgaGllcmFyY2h5IHRoaXMgcmVzb3VyY2UgYmVsb25n", - "cyB0by4gVGhpcyBpcyB1c2VkIGZvciBkZXRlcm1pbmluZyBwb2xpY3kgaW5o", - "ZXJpdGFuY2UuSgsiYWNtZS5jb3JwIooBL14oW1s6YWxudW06XV1bWzp3b3Jk", - "Ol1cLV0qKFwuW1s6d29yZDpdXC1dKikqKSokUgVzY29wZRrwBgoETWV0YRKm", - "AgoHYWN0aW9ucxgBIAMoCzJILmNlcmJvcy5yZXNwb25zZS52MS5DaGVja1Jl", - "c291cmNlc1Jlc3BvbnNlLlJlc3VsdEVudHJ5Lk1ldGEuQWN0aW9uc0VudHJ5", - "QsEBkkG9ATJPTWV0YWRhdGEgYWJvdXQgdGhlIGVmZmVjdCBjYWxjdWxhdGVk", - "IGZvciBlYWNoIGFjdGlvbiBvbiB0aGlzIHJlc291cmNlIGluc3RhbmNlLkpq", - "eyJ2aWV3OioiOnsibWF0Y2hlZF9wb2xpY3kiOiAiYWxidW06b2JqZWN0OmRl", - "ZmF1bHQifSwiY29tbWVudCI6eyJtYXRjaGVkX3BvbGljeSI6ICJhbGJ1bTpv", - "YmplY3Q6ZGVmYXVsdCJ9fVIHYWN0aW9ucxKDAQoXZWZmZWN0aXZlX2Rlcml2", - "ZWRfcm9sZXMYAiADKAlCS5JBSDI7RGVyaXZlZCByb2xlcyB0aGF0IHdlcmUg", - "ZWZmZWN0aXZlIGR1cmluZyBwb2xpY3kgZXZhbHVhdGlvbi5KCVsib3duZXIi", - "XVIVZWZmZWN0aXZlRGVyaXZlZFJvbGVzGogCCgpFZmZlY3RNZXRhEm8KDm1h", - "dGNoZWRfcG9saWN5GAEgASgJQkiSQUUyK1BvbGljeSB0aGF0IG1hdGNoZWQg", - "dG8gcHJvZHVjZSB0aGlzIGVmZmVjdC5KFiJhbGJ1bTpvYmplY3Q6ZGVmYXVs", - "dCJSDW1hdGNoZWRQb2xpY3kSbQoNbWF0Y2hlZF9zY29wZRgCIAEoCUJIkkFF", - "MjFQb2xpY3kgc2NvcGUgdGhhdCBtYXRjaGVkIHRvIHByb2R1Y2UgdGhpcyBl", - "ZmZlY3QuShAiYWNtZS5jb3JwLmJhc2UiUgxtYXRjaGVkU2NvcGU6GpJBFwoV", - "MhNOYW1lIG9mIHRoZSBhY3Rpb24uGoIBCgxBY3Rpb25zRW50cnkSEAoDa2V5", - "GAEgASgJUgNrZXkSXAoFdmFsdWUYAiABKAsyRi5jZXJib3MucmVzcG9uc2Uu", - "djEuQ2hlY2tSZXNvdXJjZXNSZXNwb25zZS5SZXN1bHRFbnRyeS5NZXRhLkVm", - "ZmVjdE1ldGFSBXZhbHVlOgI4ATopkkEmCiQyIk1ldGFkYXRhIGFib3V0IHJl", - "cXVlc3QgZXZhbHVhdGlvbi4aVAoMQWN0aW9uc0VudHJ5EhAKA2tleRgBIAEo", + "ImVmZmVjdGl2ZV9kZXJpdmVkX3JvbGVzIjogWyJvd25lciJdfSwgIlhYMjI1", + "IjogeyJhY3Rpb25zIjogeyJ2aWV3OioiOnsibWF0Y2hlZF9wb2xpY3kiOiAi", + "YWxidW06b2JqZWN0OmRlZmF1bHQifSwiY29tbWVudCI6eyJtYXRjaGVkX3Bv", + "bGljeSI6ICJhbGJ1bTpvYmplY3Q6ZGVmYXVsdCJ9fX19UhFyZXNvdXJjZUlu", + "c3RhbmNlcxqIAgoKRWZmZWN0TWV0YRJvCg5tYXRjaGVkX3BvbGljeRgBIAEo", + "CUJIkkFFMitQb2xpY3kgdGhhdCBtYXRjaGVkIHRvIHByb2R1Y2UgdGhpcyBl", + "ZmZlY3QuShYiYWxidW06b2JqZWN0OmRlZmF1bHQiUg1tYXRjaGVkUG9saWN5", + "Em0KDW1hdGNoZWRfc2NvcGUYAiABKAlCSJJBRTIxUG9saWN5IHNjb3BlIHRo", + "YXQgbWF0Y2hlZCB0byBwcm9kdWNlIHRoaXMgZWZmZWN0LkoQImFjbWUuY29y", + "cC5iYXNlIlIMbWF0Y2hlZFNjb3BlOhqSQRcKFTITTmFtZSBvZiB0aGUgYWN0", + "aW9uLhrzBAoKQWN0aW9uTWV0YRKnAgoHYWN0aW9ucxgBIAMoCzJJLmNlcmJv", + "cy5yZXNwb25zZS52MS5DaGVja1Jlc291cmNlU2V0UmVzcG9uc2UuTWV0YS5B", + "Y3Rpb25NZXRhLkFjdGlvbnNFbnRyeULBAZJBvQEyT01ldGFkYXRhIGFib3V0", + "IHRoZSBlZmZlY3QgY2FsY3VsYXRlZCBmb3IgZWFjaCBhY3Rpb24gb24gdGhp", + "cyByZXNvdXJjZSBpbnN0YW5jZS5KansidmlldzoqIjp7Im1hdGNoZWRfcG9s", + "aWN5IjogImFsYnVtOm9iamVjdDpkZWZhdWx0In0sImNvbW1lbnQiOnsibWF0", + "Y2hlZF9wb2xpY3kiOiAiYWxidW06b2JqZWN0OmRlZmF1bHQifX1SB2FjdGlv", + "bnMSgwEKF2VmZmVjdGl2ZV9kZXJpdmVkX3JvbGVzGAIgAygJQkuSQUgyO0Rl", + "cml2ZWQgcm9sZXMgdGhhdCB3ZXJlIGVmZmVjdGl2ZSBkdXJpbmcgcG9saWN5", + "IGV2YWx1YXRpb24uSglbIm93bmVyIl1SFWVmZmVjdGl2ZURlcml2ZWRSb2xl", + "cxp4CgxBY3Rpb25zRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSUgoFdmFsdWUY", + "AiABKAsyPC5jZXJib3MucmVzcG9uc2UudjEuQ2hlY2tSZXNvdXJjZVNldFJl", + "c3BvbnNlLk1ldGEuRWZmZWN0TWV0YVIFdmFsdWU6AjgBOjuSQTgKNjI0VW5p", + "cXVlIHJlc291cmNlIGluc3RhbmNlIElEIHN1cHBsaWVkIGluIHRoZSByZXF1", + "ZXN0LhqCAQoWUmVzb3VyY2VJbnN0YW5jZXNFbnRyeRIQCgNrZXkYASABKAlS", + "A2tleRJSCgV2YWx1ZRgCIAEoCzI8LmNlcmJvcy5yZXNwb25zZS52MS5DaGVj", + "a1Jlc291cmNlU2V0UmVzcG9uc2UuTWV0YS5BY3Rpb25NZXRhUgV2YWx1ZToC", + "OAE6KZJBJgokMiJNZXRhZGF0YSBhYm91dCByZXF1ZXN0IGV2YWx1YXRpb24u", + "GoIBChZSZXNvdXJjZUluc3RhbmNlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5", + "ElIKBXZhbHVlGAIgASgLMjwuY2VyYm9zLnJlc3BvbnNlLnYxLkNoZWNrUmVz", + "b3VyY2VTZXRSZXNwb25zZS5BY3Rpb25FZmZlY3RNYXBSBXZhbHVlOgI4ATo5", + "kkE2CjQyMlBvbGljeSBldmFsdWF0aW9uIHJlc3BvbnNlIGZvciBhIHNldCBv", + "ZiByZXNvdXJjZXMuIuUGChpDaGVja1Jlc291cmNlQmF0Y2hSZXNwb25zZRJv", + "CgpyZXF1ZXN0X2lkGAEgASgJQlCSQU0yI1JlcXVlc3QgSUQgcHJvdmlkZWQg", + "aW4gdGhlIHJlcXVlc3QuSiYiYzJkYjE3YjgtNGY5Zi00ZmIxLWFjZmQtOTE2", + "MmEwMmJlNDJiIlIJcmVxdWVzdElkErMBCgdyZXN1bHRzGAIgAygLMj4uY2Vy", + "Ym9zLnJlc3BvbnNlLnYxLkNoZWNrUmVzb3VyY2VCYXRjaFJlc3BvbnNlLkFj", + "dGlvbkVmZmVjdE1hcEJZkkFWMhhSZXN1bHQgZm9yIGVhY2ggcmVzb3VyY2VK", + "Olt7InJlc291cmNlSWQiOiJYWDEyNSIsImFjdGlvbnMiOnsidmlldyI6IkVG", + "RkVDVF9BTExPVyJ9fV1SB3Jlc3VsdHMa4gMKD0FjdGlvbkVmZmVjdE1hcBI6", + "CgtyZXNvdXJjZV9pZBgBIAEoCUIZkkEWMgtSZXNvdXJjZSBJREoHIlhYMTI1", + "IlIKcmVzb3VyY2VJZBKpAQoHYWN0aW9ucxgCIAMoCzJLLmNlcmJvcy5yZXNw", + "b25zZS52MS5DaGVja1Jlc291cmNlQmF0Y2hSZXNwb25zZS5BY3Rpb25FZmZl", + "Y3RNYXAuQWN0aW9uc0VudHJ5QkKSQT8yJE1hcHBpbmcgb2YgZWFjaCBhY3Rp", + "b24gdG8gYW4gZWZmZWN0LkoXeyJ2aWV3IjoiRUZGRUNUX0FMTE9XIn1SB2Fj", + "dGlvbnMSkAEKEXZhbGlkYXRpb25fZXJyb3JzGAMgAygLMiEuY2VyYm9zLnNj", + "aGVtYS52MS5WYWxpZGF0aW9uRXJyb3JCQJJBPTI7TGlzdCBvZiB2YWxpZGF0", + "aW9uIGVycm9ycyAoaWYgc2NoZW1hIHZhbGlkYXRpb24gaXMgZW5hYmxlZClS", + "EHZhbGlkYXRpb25FcnJvcnMaVAoMQWN0aW9uc0VudHJ5EhAKA2tleRgBIAEo", "CVIDa2V5Ei4KBXZhbHVlGAIgASgOMhguY2VyYm9zLmVmZmVjdC52MS5FZmZl", - "Y3RSBXZhbHVlOgI4AToykkEvCi0yK1Jlc3BvbnNlIGZyb20gdGhlIGNoZWNr", - "IHJlc291cmNlcyBBUEkgY2FsbC4ipwEKEVBsYXlncm91bmRGYWlsdXJlEkMK", - "BmVycm9ycxgBIAMoCzIrLmNlcmJvcy5yZXNwb25zZS52MS5QbGF5Z3JvdW5k", - "RmFpbHVyZS5FcnJvclIGZXJyb3JzGjEKBUVycm9yEhIKBGZpbGUYASABKAlS", - "BGZpbGUSFAoFZXJyb3IYAiABKAlSBWVycm9yOhqSQRcKFTITUGxheWdyb3Vu", - "ZCByZXNwb25zZSLoAQoaUGxheWdyb3VuZFZhbGlkYXRlUmVzcG9uc2USIwoN", - "cGxheWdyb3VuZF9pZBgBIAEoCVIMcGxheWdyb3VuZElkEkEKB2ZhaWx1cmUY", - "AiABKAsyJS5jZXJib3MucmVzcG9uc2UudjEuUGxheWdyb3VuZEZhaWx1cmVI", - "AFIHZmFpbHVyZRIyCgdzdWNjZXNzGAMgASgLMhYuZ29vZ2xlLnByb3RvYnVm", - "LkVtcHR5SABSB3N1Y2Nlc3M6I5JBIAoeMhxQbGF5Z3JvdW5kIHZhbGlkYXRl", - "IHJlc3BvbnNlQgkKB291dGNvbWUiyAIKFlBsYXlncm91bmRUZXN0UmVzcG9u", - "c2USIwoNcGxheWdyb3VuZF9pZBgBIAEoCVIMcGxheWdyb3VuZElkEkEKB2Zh", - "aWx1cmUYAiABKAsyJS5jZXJib3MucmVzcG9uc2UudjEuUGxheWdyb3VuZEZh", - "aWx1cmVIAFIHZmFpbHVyZRJSCgdzdWNjZXNzGAMgASgLMjYuY2VyYm9zLnJl", - "c3BvbnNlLnYxLlBsYXlncm91bmRUZXN0UmVzcG9uc2UuVGVzdFJlc3VsdHNI", - "AFIHc3VjY2VzcxpGCgtUZXN0UmVzdWx0cxI3CgdyZXN1bHRzGAEgASgLMh0u", - "Y2VyYm9zLnBvbGljeS52MS5UZXN0UmVzdWx0c1IHcmVzdWx0czofkkEcChoy", - "GFBsYXlncm91bmQgdGVzdCByZXNwb25zZUIJCgdvdXRjb21lIrkGChpQbGF5", - "Z3JvdW5kRXZhbHVhdGVSZXNwb25zZRIjCg1wbGF5Z3JvdW5kX2lkGAEgASgJ", - "UgxwbGF5Z3JvdW5kSWQSQQoHZmFpbHVyZRgCIAEoCzIlLmNlcmJvcy5yZXNw", - "b25zZS52MS5QbGF5Z3JvdW5kRmFpbHVyZUgAUgdmYWlsdXJlElkKB3N1Y2Nl", - "c3MYAyABKAsyPS5jZXJib3MucmVzcG9uc2UudjEuUGxheWdyb3VuZEV2YWx1", - "YXRlUmVzcG9uc2UuRXZhbFJlc3VsdExpc3RIAFIHc3VjY2Vzcxr+AQoKRXZh", - "bFJlc3VsdBIWCgZhY3Rpb24YASABKAlSBmFjdGlvbhIwCgZlZmZlY3QYAiAB", - "KA4yGC5jZXJib3MuZWZmZWN0LnYxLkVmZmVjdFIGZWZmZWN0EhYKBnBvbGlj", - "eRgDIAEoCVIGcG9saWN5EjoKF2VmZmVjdGl2ZV9kZXJpdmVkX3JvbGVzGAQg", - "AygJQgIYAVIVZWZmZWN0aXZlRGVyaXZlZFJvbGVzElIKEXZhbGlkYXRpb25f", - "ZXJyb3JzGAUgAygLMiEuY2VyYm9zLnNjaGVtYS52MS5WYWxpZGF0aW9uRXJy", - "b3JCAhgBUhB2YWxpZGF0aW9uRXJyb3JzGqYCCg5FdmFsUmVzdWx0TGlzdBJT", - "CgdyZXN1bHRzGAEgAygLMjkuY2VyYm9zLnJlc3BvbnNlLnYxLlBsYXlncm91", - "bmRFdmFsdWF0ZVJlc3BvbnNlLkV2YWxSZXN1bHRSB3Jlc3VsdHMSNgoXZWZm", - "ZWN0aXZlX2Rlcml2ZWRfcm9sZXMYAiADKAlSFWVmZmVjdGl2ZURlcml2ZWRS", - "b2xlcxJOChF2YWxpZGF0aW9uX2Vycm9ycxgDIAMoCzIhLmNlcmJvcy5zY2hl", - "bWEudjEuVmFsaWRhdGlvbkVycm9yUhB2YWxpZGF0aW9uRXJyb3JzEjcKB291", - "dHB1dHMYBCADKAsyHS5jZXJib3MuZW5naW5lLnYxLk91dHB1dEVudHJ5Ugdv", - "dXRwdXRzOiOSQSAKHjIcUGxheWdyb3VuZCBldmFsdWF0ZSByZXNwb25zZUIJ", - "CgdvdXRjb21lIpsEChdQbGF5Z3JvdW5kUHJveHlSZXNwb25zZRIjCg1wbGF5", - "Z3JvdW5kX2lkGAEgASgJUgxwbGF5Z3JvdW5kSWQSQQoHZmFpbHVyZRgCIAEo", - "CzIlLmNlcmJvcy5yZXNwb25zZS52MS5QbGF5Z3JvdW5kRmFpbHVyZUgAUgdm", - "YWlsdXJlElwKEmNoZWNrX3Jlc291cmNlX3NldBgDIAEoCzIsLmNlcmJvcy5y", - "ZXNwb25zZS52MS5DaGVja1Jlc291cmNlU2V0UmVzcG9uc2VIAFIQY2hlY2tS", - "ZXNvdXJjZVNldBJiChRjaGVja19yZXNvdXJjZV9iYXRjaBgEIAEoCzIuLmNl", - "cmJvcy5yZXNwb25zZS52MS5DaGVja1Jlc291cmNlQmF0Y2hSZXNwb25zZUgA", - "UhJjaGVja1Jlc291cmNlQmF0Y2gSUgoOcGxhbl9yZXNvdXJjZXMYBSABKAsy", - "KS5jZXJib3MucmVzcG9uc2UudjEuUGxhblJlc291cmNlc1Jlc3BvbnNlSABS", - "DXBsYW5SZXNvdXJjZXMSVQoPY2hlY2tfcmVzb3VyY2VzGAYgASgLMiouY2Vy", - "Ym9zLnJlc3BvbnNlLnYxLkNoZWNrUmVzb3VyY2VzUmVzcG9uc2VIAFIOY2hl", - "Y2tSZXNvdXJjZXM6IJJBHQobMhlQbGF5Z3JvdW5kIHByb3h5IHJlc3BvbnNl", - "QgkKB291dGNvbWUicAoZQWRkT3JVcGRhdGVQb2xpY3lSZXNwb25zZRIwCgdz", - "dWNjZXNzGAEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5UgdzdWNjZXNz", - "OiGSQR4KHDIaQWRkL3VwZGF0ZSBwb2xpY3kgcmVzcG9uc2Ui4AEKG0xpc3RB", - "dWRpdExvZ0VudHJpZXNSZXNwb25zZRJLChBhY2Nlc3NfbG9nX2VudHJ5GAEg", - "ASgLMh8uY2VyYm9zLmF1ZGl0LnYxLkFjY2Vzc0xvZ0VudHJ5SABSDmFjY2Vz", - "c0xvZ0VudHJ5ElEKEmRlY2lzaW9uX2xvZ19lbnRyeRgCIAEoCzIhLmNlcmJv", - "cy5hdWRpdC52MS5EZWNpc2lvbkxvZ0VudHJ5SABSEGRlY2lzaW9uTG9nRW50", - "cnk6GJJBFQoTMhFBdWRpdCBsb2cgc3RyZWFtLkIHCgVlbnRyeSKCAQoSU2Vy", - "dmVySW5mb1Jlc3BvbnNlEhgKB3ZlcnNpb24YASABKAlSB3ZlcnNpb24SFgoG", - "Y29tbWl0GAIgASgJUgZjb21taXQSHQoKYnVpbGRfZGF0ZRgDIAEoCVIJYnVp", - "bGREYXRlOhuSQRgKFjIUU2VydmVyIGluZm8gcmVzcG9uc2UiagoUTGlzdFBv", - "bGljaWVzUmVzcG9uc2USHQoKcG9saWN5X2lkcxgBIAMoCVIJcG9saWN5SWRz", - "OjOSQTAKLjIsTGlzdCBvZiBwb2xpY2llcyBzdG9yZWQgaW4gdGhlIENlcmJv", - "cyBzZXJ2ZXIiZQoRR2V0UG9saWN5UmVzcG9uc2USNAoIcG9saWNpZXMYASAD", - "KAsyGC5jZXJib3MucG9saWN5LnYxLlBvbGljeVIIcG9saWNpZXM6GpJBFwoV", - "MhNHZXQgcG9saWN5IHJlc3BvbnNlImQKFURpc2FibGVQb2xpY3lSZXNwb25z", - "ZRIrChFkaXNhYmxlZF9wb2xpY2llcxgBIAEoDVIQZGlzYWJsZWRQb2xpY2ll", - "czoekkEbChkyF0Rpc2FibGUgcG9saWN5IHJlc3BvbnNlImAKFEVuYWJsZVBv", - "bGljeVJlc3BvbnNlEikKEGVuYWJsZWRfcG9saWNpZXMYASABKA1SD2VuYWJs", - "ZWRQb2xpY2llczodkkEaChgyFkVuYWJsZSBwb2xpY3kgcmVzcG9uc2UiPgoZ", - "QWRkT3JVcGRhdGVTY2hlbWFSZXNwb25zZTohkkEeChwyGkFkZC91cGRhdGUg", - "c2NoZW1hIHJlc3BvbnNlIlUKE0xpc3RTY2hlbWFzUmVzcG9uc2USHQoKc2No", - "ZW1hX2lkcxgBIAMoCVIJc2NoZW1hSWRzOh+SQRwKGjIYTGlzdCBzY2hlbWEg", - "aWRzIHJlc3BvbnNlImYKEUdldFNjaGVtYVJlc3BvbnNlEjIKB3NjaGVtYXMY", - "ASADKAsyGC5jZXJib3Muc2NoZW1hLnYxLlNjaGVtYVIHc2NoZW1hczodkkEa", - "ChgyFkdldCBzY2hlbWEocykgcmVzcG9uc2UiYQoURGVsZXRlU2NoZW1hUmVz", - "cG9uc2USJwoPZGVsZXRlZF9zY2hlbWFzGAEgASgNUg5kZWxldGVkU2NoZW1h", - "czogkkEdChsyGURlbGV0ZSBzY2hlbWEocykgcmVzcG9uc2UiMwoTUmVsb2Fk", - "U3RvcmVSZXNwb25zZTockkEZChcyFVJlbG9hZCBzdG9yZSByZXNwb25zZUJ3", - "ChpkZXYuY2VyYm9zLmFwaS52MS5yZXNwb25zZVpAZ2l0aHViLmNvbS9jZXJi", - "b3MvY2VyYm9zL2FwaS9nZW5wYi9jZXJib3MvcmVzcG9uc2UvdjE7cmVzcG9u", - "c2V2MaoCFkNlcmJvcy5BcGkuVjEuUmVzcG9uc2ViBnByb3RvMw==")); + "Y3RSBXZhbHVlOgI4ATo7kkE4CjYyNFBvbGljeSBldmFsdWF0aW9uIHJlc3Bv", + "bnNlIGZvciBhIGJhdGNoIG9mIHJlc291cmNlcy4ivhcKFkNoZWNrUmVzb3Vy", + "Y2VzUmVzcG9uc2USbwoKcmVxdWVzdF9pZBgBIAEoCUJQkkFNMiNSZXF1ZXN0", + "IElEIHByb3ZpZGVkIGluIHRoZSByZXF1ZXN0LkomImMyZGIxN2I4LTRmOWYt", + "NGZiMS1hY2ZkLTkxNjJhMDJiZTQyYiJSCXJlcXVlc3RJZBLjAQoHcmVzdWx0", + "cxgCIAMoCzI2LmNlcmJvcy5yZXNwb25zZS52MS5DaGVja1Jlc291cmNlc1Jl", + "c3BvbnNlLlJlc3VsdEVudHJ5QpABkkGMATIYUmVzdWx0IGZvciBlYWNoIHJl", + "c291cmNlSnBbeyJyZXNvdXJjZSI6IHsiSWQiOiJYWDEyNSIsICJraW5kIjoi", + "YWxidW06b2JqZWN0In0sICJhY3Rpb25zIjp7InZpZXciOiJFRkZFQ1RfQUxM", + "T1ciLCJjb21tZW50IjoiRUZGRUNUX0RFTlkifX1dUgdyZXN1bHRzElkKDmNl", + "cmJvc19jYWxsX2lkGAMgASgJQjOSQTAyLkF1ZGl0IGxvZyBjYWxsIElEIGFz", + "c29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3RSDGNlcmJvc0NhbGxJZBq9EwoL", + "UmVzdWx0RW50cnkSWwoIcmVzb3VyY2UYASABKAsyPy5jZXJib3MucmVzcG9u", + "c2UudjEuQ2hlY2tSZXNvdXJjZXNSZXNwb25zZS5SZXN1bHRFbnRyeS5SZXNv", + "dXJjZVIIcmVzb3VyY2USoQEKB2FjdGlvbnMYAiADKAsyQy5jZXJib3MucmVz", + "cG9uc2UudjEuQ2hlY2tSZXNvdXJjZXNSZXNwb25zZS5SZXN1bHRFbnRyeS5B", + "Y3Rpb25zRW50cnlCQpJBPzIkTWFwcGluZyBvZiBlYWNoIGFjdGlvbiB0byBh", + "biBlZmZlY3QuShd7InZpZXciOiJFRkZFQ1RfQUxMT1cifVIHYWN0aW9ucxKQ", + "AQoRdmFsaWRhdGlvbl9lcnJvcnMYAyADKAsyIS5jZXJib3Muc2NoZW1hLnYx", + "LlZhbGlkYXRpb25FcnJvckJAkkE9MjtMaXN0IG9mIHZhbGlkYXRpb24gZXJy", + "b3JzIChpZiBzY2hlbWEgdmFsaWRhdGlvbiBpcyBlbmFibGVkKVIQdmFsaWRh", + "dGlvbkVycm9ycxKYAgoEbWV0YRgEIAEoCzI7LmNlcmJvcy5yZXNwb25zZS52", + "MS5DaGVja1Jlc291cmNlc1Jlc3BvbnNlLlJlc3VsdEVudHJ5Lk1ldGFCxgGS", + "QcIBMiBNZXRhZGF0YSBhYm91dCBwb2xpY3kgZXZhbHVhdGlvbkqdAXsiYWN0", + "aW9ucyI6IHsidmlldzoqIjp7Im1hdGNoZWRfcG9saWN5IjogImFsYnVtOm9i", + "amVjdDpkZWZhdWx0In0sImNvbW1lbnQiOnsibWF0Y2hlZF9wb2xpY3kiOiAi", + "YWxidW06b2JqZWN0OmRlZmF1bHQifX0sICJlZmZlY3RpdmVfZGVyaXZlZF9y", + "b2xlcyI6IFsib3duZXIiXX1SBG1ldGES9gEKB291dHB1dHMYBSADKAsyHS5j", + "ZXJib3MuZW5naW5lLnYxLk91dHB1dEVudHJ5QrwBkkG4ATIsT3V0cHV0IGZv", + "ciBlYWNoIHJ1bGUgd2l0aCBvdXRwdXRzIGNvbmZpZ3VyZWRKhwFbeyJzcmMi", + "OiAicmVzb3VyY2UuZXhwZW5zZS52MS9hY21lI3J1bGUtMDAxIiwgInZhbCI6", + "ICJ2aWV3X2FsbG93ZWQ6YWxpY2UifSwgeyJzcmMiOiAicmVzb3VyY2UuZXhw", + "ZW5zZS52MS9hY21lI3J1bGUtMDAyIiwgInZhbCI6ICJmb28ifV1SB291dHB1", + "dHMavAQKCFJlc291cmNlEjkKAmlkGAEgASgJQimSQSYyG0lEIG9mIHRoZSBy", + "ZXNvdXJjZSBpbnN0YW5jZUoHIlhYMTI1IlICaWQSUQoEa2luZBgCIAEoCUI9", + "kkE6MilOYW1lIG9mIHRoZSByZXNvdXJjZSBraW5kIGJlaW5nIGFjY2Vzc2Vk", + "LkoNImFsYnVtOnBob3RvIlIEa2luZBLFAQoOcG9saWN5X3ZlcnNpb24YAyAB", + "KAlCnQGSQZkBMnxUaGUgcG9saWN5IHZlcnNpb24gdG8gdXNlIHRvIGV2YWx1", + "YXRlIHRoaXMgcmVxdWVzdC4gSWYgbm90IHNwZWNpZmllZCwgd2lsbCBkZWZh", + "dWx0IHRvIHRoZSBzZXJ2ZXItY29uZmlndXJlZCBkZWZhdWx0IHZlcnNpb24u", + "SgkiZGVmYXVsdCKKAQ1eW1s6d29yZDpdXSokUg1wb2xpY3lWZXJzaW9uEtkB", + "CgVzY29wZRgEIAEoCULCAZJBvgEyfUEgZG90LXNlcGFyYXRlZCBzY29wZSB0", + "aGF0IGRlc2NyaWJlcyB0aGUgaGllcmFyY2h5IHRoaXMgcmVzb3VyY2UgYmVs", + "b25ncyB0by4gVGhpcyBpcyB1c2VkIGZvciBkZXRlcm1pbmluZyBwb2xpY3kg", + "aW5oZXJpdGFuY2UuSgsiYWNtZS5jb3JwIooBL14oW1s6YWxudW06XV1bWzp3", + "b3JkOl1cLV0qKFwuW1s6d29yZDpdXC1dKikqKSokUgVzY29wZRrwBgoETWV0", + "YRKmAgoHYWN0aW9ucxgBIAMoCzJILmNlcmJvcy5yZXNwb25zZS52MS5DaGVj", + "a1Jlc291cmNlc1Jlc3BvbnNlLlJlc3VsdEVudHJ5Lk1ldGEuQWN0aW9uc0Vu", + "dHJ5QsEBkkG9ATJPTWV0YWRhdGEgYWJvdXQgdGhlIGVmZmVjdCBjYWxjdWxh", + "dGVkIGZvciBlYWNoIGFjdGlvbiBvbiB0aGlzIHJlc291cmNlIGluc3RhbmNl", + "LkpqeyJ2aWV3OioiOnsibWF0Y2hlZF9wb2xpY3kiOiAiYWxidW06b2JqZWN0", + "OmRlZmF1bHQifSwiY29tbWVudCI6eyJtYXRjaGVkX3BvbGljeSI6ICJhbGJ1", + "bTpvYmplY3Q6ZGVmYXVsdCJ9fVIHYWN0aW9ucxKDAQoXZWZmZWN0aXZlX2Rl", + "cml2ZWRfcm9sZXMYAiADKAlCS5JBSDI7RGVyaXZlZCByb2xlcyB0aGF0IHdl", + "cmUgZWZmZWN0aXZlIGR1cmluZyBwb2xpY3kgZXZhbHVhdGlvbi5KCVsib3du", + "ZXIiXVIVZWZmZWN0aXZlRGVyaXZlZFJvbGVzGogCCgpFZmZlY3RNZXRhEm8K", + "Dm1hdGNoZWRfcG9saWN5GAEgASgJQkiSQUUyK1BvbGljeSB0aGF0IG1hdGNo", + "ZWQgdG8gcHJvZHVjZSB0aGlzIGVmZmVjdC5KFiJhbGJ1bTpvYmplY3Q6ZGVm", + "YXVsdCJSDW1hdGNoZWRQb2xpY3kSbQoNbWF0Y2hlZF9zY29wZRgCIAEoCUJI", + "kkFFMjFQb2xpY3kgc2NvcGUgdGhhdCBtYXRjaGVkIHRvIHByb2R1Y2UgdGhp", + "cyBlZmZlY3QuShAiYWNtZS5jb3JwLmJhc2UiUgxtYXRjaGVkU2NvcGU6GpJB", + "FwoVMhNOYW1lIG9mIHRoZSBhY3Rpb24uGoIBCgxBY3Rpb25zRW50cnkSEAoD", + "a2V5GAEgASgJUgNrZXkSXAoFdmFsdWUYAiABKAsyRi5jZXJib3MucmVzcG9u", + "c2UudjEuQ2hlY2tSZXNvdXJjZXNSZXNwb25zZS5SZXN1bHRFbnRyeS5NZXRh", + "LkVmZmVjdE1ldGFSBXZhbHVlOgI4ATopkkEmCiQyIk1ldGFkYXRhIGFib3V0", + "IHJlcXVlc3QgZXZhbHVhdGlvbi4aVAoMQWN0aW9uc0VudHJ5EhAKA2tleRgB", + "IAEoCVIDa2V5Ei4KBXZhbHVlGAIgASgOMhguY2VyYm9zLmVmZmVjdC52MS5F", + "ZmZlY3RSBXZhbHVlOgI4AToykkEvCi0yK1Jlc3BvbnNlIGZyb20gdGhlIGNo", + "ZWNrIHJlc291cmNlcyBBUEkgY2FsbC4ipwEKEVBsYXlncm91bmRGYWlsdXJl", + "EkMKBmVycm9ycxgBIAMoCzIrLmNlcmJvcy5yZXNwb25zZS52MS5QbGF5Z3Jv", + "dW5kRmFpbHVyZS5FcnJvclIGZXJyb3JzGjEKBUVycm9yEhIKBGZpbGUYASAB", + "KAlSBGZpbGUSFAoFZXJyb3IYAiABKAlSBWVycm9yOhqSQRcKFTITUGxheWdy", + "b3VuZCByZXNwb25zZSLoAQoaUGxheWdyb3VuZFZhbGlkYXRlUmVzcG9uc2US", + "IwoNcGxheWdyb3VuZF9pZBgBIAEoCVIMcGxheWdyb3VuZElkEkEKB2ZhaWx1", + "cmUYAiABKAsyJS5jZXJib3MucmVzcG9uc2UudjEuUGxheWdyb3VuZEZhaWx1", + "cmVIAFIHZmFpbHVyZRIyCgdzdWNjZXNzGAMgASgLMhYuZ29vZ2xlLnByb3Rv", + "YnVmLkVtcHR5SABSB3N1Y2Nlc3M6I5JBIAoeMhxQbGF5Z3JvdW5kIHZhbGlk", + "YXRlIHJlc3BvbnNlQgkKB291dGNvbWUiyAIKFlBsYXlncm91bmRUZXN0UmVz", + "cG9uc2USIwoNcGxheWdyb3VuZF9pZBgBIAEoCVIMcGxheWdyb3VuZElkEkEK", + "B2ZhaWx1cmUYAiABKAsyJS5jZXJib3MucmVzcG9uc2UudjEuUGxheWdyb3Vu", + "ZEZhaWx1cmVIAFIHZmFpbHVyZRJSCgdzdWNjZXNzGAMgASgLMjYuY2VyYm9z", + "LnJlc3BvbnNlLnYxLlBsYXlncm91bmRUZXN0UmVzcG9uc2UuVGVzdFJlc3Vs", + "dHNIAFIHc3VjY2VzcxpGCgtUZXN0UmVzdWx0cxI3CgdyZXN1bHRzGAEgASgL", + "Mh0uY2VyYm9zLnBvbGljeS52MS5UZXN0UmVzdWx0c1IHcmVzdWx0czofkkEc", + "ChoyGFBsYXlncm91bmQgdGVzdCByZXNwb25zZUIJCgdvdXRjb21lIrkGChpQ", + "bGF5Z3JvdW5kRXZhbHVhdGVSZXNwb25zZRIjCg1wbGF5Z3JvdW5kX2lkGAEg", + "ASgJUgxwbGF5Z3JvdW5kSWQSQQoHZmFpbHVyZRgCIAEoCzIlLmNlcmJvcy5y", + "ZXNwb25zZS52MS5QbGF5Z3JvdW5kRmFpbHVyZUgAUgdmYWlsdXJlElkKB3N1", + "Y2Nlc3MYAyABKAsyPS5jZXJib3MucmVzcG9uc2UudjEuUGxheWdyb3VuZEV2", + "YWx1YXRlUmVzcG9uc2UuRXZhbFJlc3VsdExpc3RIAFIHc3VjY2Vzcxr+AQoK", + "RXZhbFJlc3VsdBIWCgZhY3Rpb24YASABKAlSBmFjdGlvbhIwCgZlZmZlY3QY", + "AiABKA4yGC5jZXJib3MuZWZmZWN0LnYxLkVmZmVjdFIGZWZmZWN0EhYKBnBv", + "bGljeRgDIAEoCVIGcG9saWN5EjoKF2VmZmVjdGl2ZV9kZXJpdmVkX3JvbGVz", + "GAQgAygJQgIYAVIVZWZmZWN0aXZlRGVyaXZlZFJvbGVzElIKEXZhbGlkYXRp", + "b25fZXJyb3JzGAUgAygLMiEuY2VyYm9zLnNjaGVtYS52MS5WYWxpZGF0aW9u", + "RXJyb3JCAhgBUhB2YWxpZGF0aW9uRXJyb3JzGqYCCg5FdmFsUmVzdWx0TGlz", + "dBJTCgdyZXN1bHRzGAEgAygLMjkuY2VyYm9zLnJlc3BvbnNlLnYxLlBsYXln", + "cm91bmRFdmFsdWF0ZVJlc3BvbnNlLkV2YWxSZXN1bHRSB3Jlc3VsdHMSNgoX", + "ZWZmZWN0aXZlX2Rlcml2ZWRfcm9sZXMYAiADKAlSFWVmZmVjdGl2ZURlcml2", + "ZWRSb2xlcxJOChF2YWxpZGF0aW9uX2Vycm9ycxgDIAMoCzIhLmNlcmJvcy5z", + "Y2hlbWEudjEuVmFsaWRhdGlvbkVycm9yUhB2YWxpZGF0aW9uRXJyb3JzEjcK", + "B291dHB1dHMYBCADKAsyHS5jZXJib3MuZW5naW5lLnYxLk91dHB1dEVudHJ5", + "UgdvdXRwdXRzOiOSQSAKHjIcUGxheWdyb3VuZCBldmFsdWF0ZSByZXNwb25z", + "ZUIJCgdvdXRjb21lIpsEChdQbGF5Z3JvdW5kUHJveHlSZXNwb25zZRIjCg1w", + "bGF5Z3JvdW5kX2lkGAEgASgJUgxwbGF5Z3JvdW5kSWQSQQoHZmFpbHVyZRgC", + "IAEoCzIlLmNlcmJvcy5yZXNwb25zZS52MS5QbGF5Z3JvdW5kRmFpbHVyZUgA", + "UgdmYWlsdXJlElwKEmNoZWNrX3Jlc291cmNlX3NldBgDIAEoCzIsLmNlcmJv", + "cy5yZXNwb25zZS52MS5DaGVja1Jlc291cmNlU2V0UmVzcG9uc2VIAFIQY2hl", + "Y2tSZXNvdXJjZVNldBJiChRjaGVja19yZXNvdXJjZV9iYXRjaBgEIAEoCzIu", + "LmNlcmJvcy5yZXNwb25zZS52MS5DaGVja1Jlc291cmNlQmF0Y2hSZXNwb25z", + "ZUgAUhJjaGVja1Jlc291cmNlQmF0Y2gSUgoOcGxhbl9yZXNvdXJjZXMYBSAB", + "KAsyKS5jZXJib3MucmVzcG9uc2UudjEuUGxhblJlc291cmNlc1Jlc3BvbnNl", + "SABSDXBsYW5SZXNvdXJjZXMSVQoPY2hlY2tfcmVzb3VyY2VzGAYgASgLMiou", + "Y2VyYm9zLnJlc3BvbnNlLnYxLkNoZWNrUmVzb3VyY2VzUmVzcG9uc2VIAFIO", + "Y2hlY2tSZXNvdXJjZXM6IJJBHQobMhlQbGF5Z3JvdW5kIHByb3h5IHJlc3Bv", + "bnNlQgkKB291dGNvbWUicAoZQWRkT3JVcGRhdGVQb2xpY3lSZXNwb25zZRIw", + "CgdzdWNjZXNzGAEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5UgdzdWNj", + "ZXNzOiGSQR4KHDIaQWRkL3VwZGF0ZSBwb2xpY3kgcmVzcG9uc2Ui4AEKG0xp", + "c3RBdWRpdExvZ0VudHJpZXNSZXNwb25zZRJLChBhY2Nlc3NfbG9nX2VudHJ5", + "GAEgASgLMh8uY2VyYm9zLmF1ZGl0LnYxLkFjY2Vzc0xvZ0VudHJ5SABSDmFj", + "Y2Vzc0xvZ0VudHJ5ElEKEmRlY2lzaW9uX2xvZ19lbnRyeRgCIAEoCzIhLmNl", + "cmJvcy5hdWRpdC52MS5EZWNpc2lvbkxvZ0VudHJ5SABSEGRlY2lzaW9uTG9n", + "RW50cnk6GJJBFQoTMhFBdWRpdCBsb2cgc3RyZWFtLkIHCgVlbnRyeSKCAQoS", + "U2VydmVySW5mb1Jlc3BvbnNlEhgKB3ZlcnNpb24YASABKAlSB3ZlcnNpb24S", + "FgoGY29tbWl0GAIgASgJUgZjb21taXQSHQoKYnVpbGRfZGF0ZRgDIAEoCVIJ", + "YnVpbGREYXRlOhuSQRgKFjIUU2VydmVyIGluZm8gcmVzcG9uc2UiagoUTGlz", + "dFBvbGljaWVzUmVzcG9uc2USHQoKcG9saWN5X2lkcxgBIAMoCVIJcG9saWN5", + "SWRzOjOSQTAKLjIsTGlzdCBvZiBwb2xpY2llcyBzdG9yZWQgaW4gdGhlIENl", + "cmJvcyBzZXJ2ZXIiZQoRR2V0UG9saWN5UmVzcG9uc2USNAoIcG9saWNpZXMY", + "ASADKAsyGC5jZXJib3MucG9saWN5LnYxLlBvbGljeVIIcG9saWNpZXM6GpJB", + "FwoVMhNHZXQgcG9saWN5IHJlc3BvbnNlImQKFURpc2FibGVQb2xpY3lSZXNw", + "b25zZRIrChFkaXNhYmxlZF9wb2xpY2llcxgBIAEoDVIQZGlzYWJsZWRQb2xp", + "Y2llczoekkEbChkyF0Rpc2FibGUgcG9saWN5IHJlc3BvbnNlImAKFEVuYWJs", + "ZVBvbGljeVJlc3BvbnNlEikKEGVuYWJsZWRfcG9saWNpZXMYASABKA1SD2Vu", + "YWJsZWRQb2xpY2llczodkkEaChgyFkVuYWJsZSBwb2xpY3kgcmVzcG9uc2Ui", + "PgoZQWRkT3JVcGRhdGVTY2hlbWFSZXNwb25zZTohkkEeChwyGkFkZC91cGRh", + "dGUgc2NoZW1hIHJlc3BvbnNlIlUKE0xpc3RTY2hlbWFzUmVzcG9uc2USHQoK", + "c2NoZW1hX2lkcxgBIAMoCVIJc2NoZW1hSWRzOh+SQRwKGjIYTGlzdCBzY2hl", + "bWEgaWRzIHJlc3BvbnNlImYKEUdldFNjaGVtYVJlc3BvbnNlEjIKB3NjaGVt", + "YXMYASADKAsyGC5jZXJib3Muc2NoZW1hLnYxLlNjaGVtYVIHc2NoZW1hczod", + "kkEaChgyFkdldCBzY2hlbWEocykgcmVzcG9uc2UiYQoURGVsZXRlU2NoZW1h", + "UmVzcG9uc2USJwoPZGVsZXRlZF9zY2hlbWFzGAEgASgNUg5kZWxldGVkU2No", + "ZW1hczogkkEdChsyGURlbGV0ZSBzY2hlbWEocykgcmVzcG9uc2UiMwoTUmVs", + "b2FkU3RvcmVSZXNwb25zZTockkEZChcyFVJlbG9hZCBzdG9yZSByZXNwb25z", + "ZUJ3ChpkZXYuY2VyYm9zLmFwaS52MS5yZXNwb25zZVpAZ2l0aHViLmNvbS9j", + "ZXJib3MvY2VyYm9zL2FwaS9nZW5wYi9jZXJib3MvcmVzcG9uc2UvdjE7cmVz", + "cG9uc2V2MaoCFkNlcmJvcy5BcGkuVjEuUmVzcG9uc2ViBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Cerbos.Api.V1.Audit.AuditReflection.Descriptor, global::Cerbos.Api.V1.Effect.EffectReflection.Descriptor, global::Cerbos.Api.V1.Engine.EngineReflection.Descriptor, global::Cerbos.Api.V1.Policy.PolicyReflection.Descriptor, global::Cerbos.Api.V1.Schema.SchemaReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, global::Grpc.Gateway.ProtocGenOpenapiv2.Options.AnnotationsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.PlanResourcesResponse), global::Cerbos.Api.V1.Response.PlanResourcesResponse.Parser, new[]{ "RequestId", "Action", "ResourceKind", "PolicyVersion", "Filter", "Meta", "ValidationErrors" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.PlanResourcesResponse.Types.Meta), global::Cerbos.Api.V1.Response.PlanResourcesResponse.Types.Meta.Parser, new[]{ "FilterDebug", "MatchedScope" }, null, null, null, null)}), + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.PlanResourcesResponse), global::Cerbos.Api.V1.Response.PlanResourcesResponse.Parser, new[]{ "RequestId", "Action", "ResourceKind", "PolicyVersion", "Filter", "Meta", "ValidationErrors", "CerbosCallId" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.PlanResourcesResponse.Types.Meta), global::Cerbos.Api.V1.Response.PlanResourcesResponse.Types.Meta.Parser, new[]{ "FilterDebug", "MatchedScope" }, null, null, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourceSetResponse), global::Cerbos.Api.V1.Response.CheckResourceSetResponse.Parser, new[]{ "RequestId", "ResourceInstances", "Meta" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourceSetResponse.Types.ActionEffectMap), global::Cerbos.Api.V1.Response.CheckResourceSetResponse.Types.ActionEffectMap.Parser, new[]{ "Actions", "ValidationErrors" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourceSetResponse.Types.Meta), global::Cerbos.Api.V1.Response.CheckResourceSetResponse.Types.Meta.Parser, new[]{ "ResourceInstances" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourceSetResponse.Types.Meta.Types.EffectMeta), global::Cerbos.Api.V1.Response.CheckResourceSetResponse.Types.Meta.Types.EffectMeta.Parser, new[]{ "MatchedPolicy", "MatchedScope" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourceSetResponse.Types.Meta.Types.ActionMeta), global::Cerbos.Api.V1.Response.CheckResourceSetResponse.Types.Meta.Types.ActionMeta.Parser, new[]{ "Actions", "EffectiveDerivedRoles" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), null, }), null, }), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourceBatchResponse), global::Cerbos.Api.V1.Response.CheckResourceBatchResponse.Parser, new[]{ "RequestId", "Results" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourceBatchResponse.Types.ActionEffectMap), global::Cerbos.Api.V1.Response.CheckResourceBatchResponse.Types.ActionEffectMap.Parser, new[]{ "ResourceId", "Actions", "ValidationErrors" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, })}), - new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourcesResponse), global::Cerbos.Api.V1.Response.CheckResourcesResponse.Parser, new[]{ "RequestId", "Results" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourcesResponse.Types.ResultEntry), global::Cerbos.Api.V1.Response.CheckResourcesResponse.Types.ResultEntry.Parser, new[]{ "Resource", "Actions", "ValidationErrors", "Meta", "Outputs" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourcesResponse.Types.ResultEntry.Types.Resource), global::Cerbos.Api.V1.Response.CheckResourcesResponse.Types.ResultEntry.Types.Resource.Parser, new[]{ "Id", "Kind", "PolicyVersion", "Scope" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourcesResponse), global::Cerbos.Api.V1.Response.CheckResourcesResponse.Parser, new[]{ "RequestId", "Results", "CerbosCallId" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourcesResponse.Types.ResultEntry), global::Cerbos.Api.V1.Response.CheckResourcesResponse.Types.ResultEntry.Parser, new[]{ "Resource", "Actions", "ValidationErrors", "Meta", "Outputs" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourcesResponse.Types.ResultEntry.Types.Resource), global::Cerbos.Api.V1.Response.CheckResourcesResponse.Types.ResultEntry.Types.Resource.Parser, new[]{ "Id", "Kind", "PolicyVersion", "Scope" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourcesResponse.Types.ResultEntry.Types.Meta), global::Cerbos.Api.V1.Response.CheckResourcesResponse.Types.ResultEntry.Types.Meta.Parser, new[]{ "Actions", "EffectiveDerivedRoles" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Response.CheckResourcesResponse.Types.ResultEntry.Types.Meta.Types.EffectMeta), global::Cerbos.Api.V1.Response.CheckResourcesResponse.Types.ResultEntry.Types.Meta.Types.EffectMeta.Parser, new[]{ "MatchedPolicy", "MatchedScope" }, null, null, null, null), null, }), null, })}), @@ -359,6 +360,7 @@ public PlanResourcesResponse(PlanResourcesResponse other) : this() { filter_ = other.filter_ != null ? other.filter_.Clone() : null; meta_ = other.meta_ != null ? other.meta_.Clone() : null; validationErrors_ = other.validationErrors_.Clone(); + cerbosCallId_ = other.cerbosCallId_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -451,6 +453,18 @@ public string PolicyVersion { get { return validationErrors_; } } + /// Field number for the "cerbos_call_id" field. + public const int CerbosCallIdFieldNumber = 8; + private string cerbosCallId_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string CerbosCallId { + get { return cerbosCallId_; } + set { + cerbosCallId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -473,6 +487,7 @@ public bool Equals(PlanResourcesResponse other) { if (!object.Equals(Filter, other.Filter)) return false; if (!object.Equals(Meta, other.Meta)) return false; if(!validationErrors_.Equals(other.validationErrors_)) return false; + if (CerbosCallId != other.CerbosCallId) return false; return Equals(_unknownFields, other._unknownFields); } @@ -487,6 +502,7 @@ public override int GetHashCode() { if (filter_ != null) hash ^= Filter.GetHashCode(); if (meta_ != null) hash ^= Meta.GetHashCode(); hash ^= validationErrors_.GetHashCode(); + if (CerbosCallId.Length != 0) hash ^= CerbosCallId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -530,6 +546,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteMessage(Meta); } validationErrors_.WriteTo(output, _repeated_validationErrors_codec); + if (CerbosCallId.Length != 0) { + output.WriteRawTag(66); + output.WriteString(CerbosCallId); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -565,6 +585,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteMessage(Meta); } validationErrors_.WriteTo(ref output, _repeated_validationErrors_codec); + if (CerbosCallId.Length != 0) { + output.WriteRawTag(66); + output.WriteString(CerbosCallId); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -594,6 +618,9 @@ public int CalculateSize() { size += 1 + pb::CodedOutputStream.ComputeMessageSize(Meta); } size += validationErrors_.CalculateSize(_repeated_validationErrors_codec); + if (CerbosCallId.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(CerbosCallId); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -631,6 +658,9 @@ public void MergeFrom(PlanResourcesResponse other) { Meta.MergeFrom(other.Meta); } validationErrors_.Add(other.validationErrors_); + if (other.CerbosCallId.Length != 0) { + CerbosCallId = other.CerbosCallId; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -680,6 +710,10 @@ public void MergeFrom(pb::CodedInputStream input) { validationErrors_.AddEntriesFrom(input, _repeated_validationErrors_codec); break; } + case 66: { + CerbosCallId = input.ReadString(); + break; + } } } #endif @@ -729,6 +763,10 @@ public void MergeFrom(pb::CodedInputStream input) { validationErrors_.AddEntriesFrom(ref input, _repeated_validationErrors_codec); break; } + case 66: { + CerbosCallId = input.ReadString(); + break; + } } } } @@ -2565,6 +2603,7 @@ public CheckResourcesResponse() { public CheckResourcesResponse(CheckResourcesResponse other) : this() { requestId_ = other.requestId_; results_ = other.results_.Clone(); + cerbosCallId_ = other.cerbosCallId_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -2597,6 +2636,18 @@ public string RequestId { get { return results_; } } + /// Field number for the "cerbos_call_id" field. + public const int CerbosCallIdFieldNumber = 3; + private string cerbosCallId_ = ""; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public string CerbosCallId { + get { return cerbosCallId_; } + set { + cerbosCallId_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -2614,6 +2665,7 @@ public bool Equals(CheckResourcesResponse other) { } if (RequestId != other.RequestId) return false; if(!results_.Equals(other.results_)) return false; + if (CerbosCallId != other.CerbosCallId) return false; return Equals(_unknownFields, other._unknownFields); } @@ -2623,6 +2675,7 @@ public override int GetHashCode() { int hash = 1; if (RequestId.Length != 0) hash ^= RequestId.GetHashCode(); hash ^= results_.GetHashCode(); + if (CerbosCallId.Length != 0) hash ^= CerbosCallId.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -2646,6 +2699,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteString(RequestId); } results_.WriteTo(output, _repeated_results_codec); + if (CerbosCallId.Length != 0) { + output.WriteRawTag(26); + output.WriteString(CerbosCallId); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -2661,6 +2718,10 @@ public void WriteTo(pb::CodedOutputStream output) { output.WriteString(RequestId); } results_.WriteTo(ref output, _repeated_results_codec); + if (CerbosCallId.Length != 0) { + output.WriteRawTag(26); + output.WriteString(CerbosCallId); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -2675,6 +2736,9 @@ public int CalculateSize() { size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestId); } size += results_.CalculateSize(_repeated_results_codec); + if (CerbosCallId.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(CerbosCallId); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -2691,6 +2755,9 @@ public void MergeFrom(CheckResourcesResponse other) { RequestId = other.RequestId; } results_.Add(other.results_); + if (other.CerbosCallId.Length != 0) { + CerbosCallId = other.CerbosCallId; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -2714,6 +2781,10 @@ public void MergeFrom(pb::CodedInputStream input) { results_.AddEntriesFrom(input, _repeated_results_codec); break; } + case 26: { + CerbosCallId = input.ReadString(); + break; + } } } #endif @@ -2737,6 +2808,10 @@ public void MergeFrom(pb::CodedInputStream input) { results_.AddEntriesFrom(ref input, _repeated_results_codec); break; } + case 26: { + CerbosCallId = input.ReadString(); + break; + } } } } diff --git a/src/Sdk/Cerbos/Api/V1/Schema/Schema.g.cs b/src/Sdk/Cerbos/Api/V1/Schema/Schema.g.cs index b02fab7..4f0332b 100644 --- a/src/Sdk/Cerbos/Api/V1/Schema/Schema.g.cs +++ b/src/Sdk/Cerbos/Api/V1/Schema/Schema.g.cs @@ -25,23 +25,23 @@ static SchemaReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "Ch1jZXJib3Mvc2NoZW1hL3YxL3NjaGVtYS5wcm90bxIQY2VyYm9zLnNjaGVt", - "YS52MRofZ29vZ2xlL2FwaS9maWVsZF9iZWhhdmlvci5wcm90bxoucHJvdG9j", - "LWdlbi1vcGVuYXBpdjIvb3B0aW9ucy9hbm5vdGF0aW9ucy5wcm90bxoXdmFs", - "aWRhdGUvdmFsaWRhdGUucHJvdG8izgEKD1ZhbGlkYXRpb25FcnJvchISCgRw", - "YXRoGAEgASgJUgRwYXRoEhgKB21lc3NhZ2UYAiABKAlSB21lc3NhZ2USQAoG", - "c291cmNlGAMgASgOMiguY2VyYm9zLnNjaGVtYS52MS5WYWxpZGF0aW9uRXJy", - "b3IuU291cmNlUgZzb3VyY2UiSwoGU291cmNlEhYKElNPVVJDRV9VTlNQRUNJ", - "RklFRBAAEhQKEFNPVVJDRV9QUklOQ0lQQUwQARITCg9TT1VSQ0VfUkVTT1VS", - "Q0UQAiLJAQoGU2NoZW1hElQKAmlkGAEgASgJQkSSQTQyIFVuaXF1ZSBpZGVu", - "dGlmaWVyIGZvciB0aGUgc2NoZW1hShAicHJpbmNpcGFsLmpzb24i4EEC+kIH", - "cgUQARj/AVICaWQSaQoKZGVmaW5pdGlvbhgCIAEoDEJJkkE8MhZKU09OIHNj", - "aGVtYSBkZWZpbml0aW9uSiJ7InR5cGUiOiJvYmplY3QiLCAicHJvcGVydGll", - "cyI6e3194EEC+kIEegIQClIKZGVmaW5pdGlvbkJvChhkZXYuY2VyYm9zLmFw", - "aS52MS5zY2hlbWFaPGdpdGh1Yi5jb20vY2VyYm9zL2NlcmJvcy9hcGkvZ2Vu", - "cGIvY2VyYm9zL3NjaGVtYS92MTtzY2hlbWF2MaoCFENlcmJvcy5BcGkuVjEu", - "U2NoZW1hYgZwcm90bzM=")); + "YS52MRobYnVmL3ZhbGlkYXRlL3ZhbGlkYXRlLnByb3RvGh9nb29nbGUvYXBp", + "L2ZpZWxkX2JlaGF2aW9yLnByb3RvGi5wcm90b2MtZ2VuLW9wZW5hcGl2Mi9v", + "cHRpb25zL2Fubm90YXRpb25zLnByb3RvIs4BCg9WYWxpZGF0aW9uRXJyb3IS", + "EgoEcGF0aBgBIAEoCVIEcGF0aBIYCgdtZXNzYWdlGAIgASgJUgdtZXNzYWdl", + "EkAKBnNvdXJjZRgDIAEoDjIoLmNlcmJvcy5zY2hlbWEudjEuVmFsaWRhdGlv", + "bkVycm9yLlNvdXJjZVIGc291cmNlIksKBlNvdXJjZRIWChJTT1VSQ0VfVU5T", + "UEVDSUZJRUQQABIUChBTT1VSQ0VfUFJJTkNJUEFMEAESEwoPU09VUkNFX1JF", + "U09VUkNFEAIizwEKBlNjaGVtYRJXCgJpZBgBIAEoCUJHkkE0MiBVbmlxdWUg", + "aWRlbnRpZmllciBmb3IgdGhlIHNjaGVtYUoQInByaW5jaXBhbC5qc29uIuBB", + "ArpICsgBAXIFEAEY/wFSAmlkEmwKCmRlZmluaXRpb24YAiABKAxCTJJBPDIW", + "SlNPTiBzY2hlbWEgZGVmaW5pdGlvbkoieyJ0eXBlIjoib2JqZWN0IiwgInBy", + "b3BlcnRpZXMiOnt9feBBArpIB8gBAXoCEApSCmRlZmluaXRpb25CbwoYZGV2", + "LmNlcmJvcy5hcGkudjEuc2NoZW1hWjxnaXRodWIuY29tL2NlcmJvcy9jZXJi", + "b3MvYXBpL2dlbnBiL2NlcmJvcy9zY2hlbWEvdjE7c2NoZW1hdjGqAhRDZXJi", + "b3MuQXBpLlYxLlNjaGVtYWIGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Google.Api.FieldBehaviorReflection.Descriptor, global::Grpc.Gateway.ProtocGenOpenapiv2.Options.AnnotationsReflection.Descriptor, global::Validate.ValidateReflection.Descriptor, }, + new pbr::FileDescriptor[] { global::Buf.Validate.ValidateReflection.Descriptor, global::Google.Api.FieldBehaviorReflection.Descriptor, global::Grpc.Gateway.ProtocGenOpenapiv2.Options.AnnotationsReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Schema.ValidationError), global::Cerbos.Api.V1.Schema.ValidationError.Parser, new[]{ "Path", "Message", "Source" }, null, new[]{ typeof(global::Cerbos.Api.V1.Schema.ValidationError.Types.Source) }, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Cerbos.Api.V1.Schema.Schema), global::Cerbos.Api.V1.Schema.Schema.Parser, new[]{ "Id", "Definition" }, null, null, null, null) diff --git a/src/Sdk/Google/Api/FieldBehavior.g.cs b/src/Sdk/Google/Api/FieldBehavior.g.cs index 9d083d4..4bb81c5 100644 --- a/src/Sdk/Google/Api/FieldBehavior.g.cs +++ b/src/Sdk/Google/Api/FieldBehavior.g.cs @@ -25,16 +25,16 @@ static FieldBehaviorReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "Ch9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvEgpnb29nbGUuYXBp", - "GiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90byqmAQoNRmllbGRC", + "GiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90byq2AQoNRmllbGRC", "ZWhhdmlvchIeChpGSUVMRF9CRUhBVklPUl9VTlNQRUNJRklFRBAAEgwKCE9Q", "VElPTkFMEAESDAoIUkVRVUlSRUQQAhIPCgtPVVRQVVRfT05MWRADEg4KCklO", "UFVUX09OTFkQBBINCglJTU1VVEFCTEUQBRISCg5VTk9SREVSRURfTElTVBAG", - "EhUKEU5PTl9FTVBUWV9ERUZBVUxUEAc6YAoOZmllbGRfYmVoYXZpb3ISHS5n", - "b29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJwIIAMoDjIZLmdvb2dsZS5h", - "cGkuRmllbGRCZWhhdmlvclINZmllbGRCZWhhdmlvckJwCg5jb20uZ29vZ2xl", - "LmFwaUISRmllbGRCZWhhdmlvclByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3Jn", - "L2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRp", - "b25zogIER0FQSWIGcHJvdG8z")); + "EhUKEU5PTl9FTVBUWV9ERUZBVUxUEAcSDgoKSURFTlRJRklFUhAIOmAKDmZp", + "ZWxkX2JlaGF2aW9yEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxic", + "CCADKA4yGS5nb29nbGUuYXBpLkZpZWxkQmVoYXZpb3JSDWZpZWxkQmVoYXZp", + "b3JCcAoOY29tLmdvb2dsZS5hcGlCEkZpZWxkQmVoYXZpb3JQcm90b1ABWkFn", + "b29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5v", + "dGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Google.Api.FieldBehavior), }, new pb::Extension[] { FieldBehaviorExtensions.FieldBehavior }, null)); @@ -121,6 +121,21 @@ public enum FieldBehavior { /// non-empty value to expect. /// [pbr::OriginalName("NON_EMPTY_DEFAULT")] NonEmptyDefault = 7, + /// + /// Denotes that the field in a resource (a message annotated with + /// google.api.resource) is used in the resource name to uniquely identify the + /// resource. For AIP-compliant APIs, this should only be applied to the + /// `name` field on the resource. + /// + /// This behavior should not be applied to references to other resources within + /// the message. + /// + /// The identifier field of resources often have different field behavior + /// depending on the request it is embedded in (e.g. for Create methods name + /// is optional and unused, while for Update methods it is required). Instead + /// of method-specific annotations, only `IDENTIFIER` is required. + /// + [pbr::OriginalName("IDENTIFIER")] Identifier = 8, } #endregion diff --git a/src/Sdk/Grpc/Gateway/ProtocGenOpenapiv2/Options/Openapiv2.g.cs b/src/Sdk/Grpc/Gateway/ProtocGenOpenapiv2/Options/Openapiv2.g.cs index 46eaa5c..25a055a 100644 --- a/src/Sdk/Grpc/Gateway/ProtocGenOpenapiv2/Options/Openapiv2.g.cs +++ b/src/Sdk/Grpc/Gateway/ProtocGenOpenapiv2/Options/Openapiv2.g.cs @@ -264,7 +264,7 @@ public enum Scheme { /// }; /// license: { /// name: "BSD 3-Clause License"; - /// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE.txt"; + /// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE"; /// }; /// }; /// schemes: HTTPS; @@ -2871,7 +2871,7 @@ public void MergeFrom(pb::CodedInputStream input) { /// }; /// license: { /// name: "BSD 3-Clause License"; - /// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE.txt"; + /// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE"; /// }; /// }; /// ... @@ -3626,7 +3626,7 @@ public void MergeFrom(pb::CodedInputStream input) { /// ... /// license: { /// name: "BSD 3-Clause License"; - /// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE.txt"; + /// url: "https://github.com/grpc-ecosystem/grpc-gateway/blob/main/LICENSE"; /// }; /// ... /// }; diff --git a/src/Sdk/SvcGrpc.cs b/src/Sdk/SvcGrpc.cs index b9a2e14..970bf25 100644 --- a/src/Sdk/SvcGrpc.cs +++ b/src/Sdk/SvcGrpc.cs @@ -3,7 +3,7 @@ // source: cerbos/svc/v1/svc.proto // // Original file comments: -// Copyright 2021-2023 Zenauth Ltd. +// Copyright 2021-2024 Zenauth Ltd. // SPDX-License-Identifier: Apache-2.0 // #pragma warning disable 0414, 1591, 8981