// Code generated by protoc-gen-go. DO NOT EDIT.
// source: proto3/fields.proto

package proto3

import (
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
	prototype "github.com/golang/protobuf/v2/reflect/prototype"
	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
	math "math"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

type FieldTestMessage_Enum int32

const (
	FieldTestMessage_ZERO FieldTestMessage_Enum = 0
)

type xxx_FieldTestMessage_Enum FieldTestMessage_Enum

func (e FieldTestMessage_Enum) ProtoReflect() protoreflect.Enum {
	return (xxx_FieldTestMessage_Enum)(e)
}
func (e xxx_FieldTestMessage_Enum) Type() protoreflect.EnumType {
	return xxx_Fields_ProtoFile_EnumTypes[0]
}
func (e xxx_FieldTestMessage_Enum) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(e)
}

var FieldTestMessage_Enum_name = map[int32]string{
	0: "ZERO",
}

var FieldTestMessage_Enum_value = map[string]int32{
	"ZERO": 0,
}

func (x FieldTestMessage_Enum) String() string {
	return proto.EnumName(FieldTestMessage_Enum_name, int32(x))
}

func (FieldTestMessage_Enum) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_f1e3ea068187307c, []int{0, 0}
}

type FieldTestMessage struct {
	OptionalBool         string                               `protobuf:"bytes,1,opt,name=optional_bool,json=optionalBool,proto3" json:"optional_bool,omitempty"`
	OptionalEnum         FieldTestMessage_Enum                `protobuf:"varint,2,opt,name=optional_enum,json=optionalEnum,proto3,enum=goproto.protoc.proto3.FieldTestMessage_Enum" json:"optional_enum,omitempty"`
	OptionalInt32        int32                                `protobuf:"varint,3,opt,name=optional_int32,json=optionalInt32,proto3" json:"optional_int32,omitempty"`
	OptionalSint32       int32                                `protobuf:"zigzag32,4,opt,name=optional_sint32,json=optionalSint32,proto3" json:"optional_sint32,omitempty"`
	OptionalUint32       uint32                               `protobuf:"varint,5,opt,name=optional_uint32,json=optionalUint32,proto3" json:"optional_uint32,omitempty"`
	OptionalInt64        int64                                `protobuf:"varint,6,opt,name=optional_int64,json=optionalInt64,proto3" json:"optional_int64,omitempty"`
	OptionalSint64       int64                                `protobuf:"zigzag64,7,opt,name=optional_sint64,json=optionalSint64,proto3" json:"optional_sint64,omitempty"`
	OptionalUint64       uint64                               `protobuf:"varint,8,opt,name=optional_uint64,json=optionalUint64,proto3" json:"optional_uint64,omitempty"`
	OptionalSfixed32     int32                                `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32,proto3" json:"optional_sfixed32,omitempty"`
	OptionalFixed32      uint32                               `protobuf:"fixed32,10,opt,name=optional_fixed32,json=optionalFixed32,proto3" json:"optional_fixed32,omitempty"`
	OptionalFloat        float32                              `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat,proto3" json:"optional_float,omitempty"`
	OptionalSfixed64     int64                                `protobuf:"fixed64,12,opt,name=optional_sfixed64,json=optionalSfixed64,proto3" json:"optional_sfixed64,omitempty"`
	OptionalFixed64      uint64                               `protobuf:"fixed64,13,opt,name=optional_fixed64,json=optionalFixed64,proto3" json:"optional_fixed64,omitempty"`
	OptionalDouble       float64                              `protobuf:"fixed64,14,opt,name=optional_double,json=optionalDouble,proto3" json:"optional_double,omitempty"`
	OptionalString       string                               `protobuf:"bytes,15,opt,name=optional_string,json=optionalString,proto3" json:"optional_string,omitempty"`
	OptionalBytes        []byte                               `protobuf:"bytes,16,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
	Optional_Message     *FieldTestMessage_Message            `protobuf:"bytes,17,opt,name=optional_Message,json=optionalMessage,proto3" json:"optional_Message,omitempty"`
	RepeatedBool         []bool                               `protobuf:"varint,201,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
	RepeatedEnum         []FieldTestMessage_Enum              `protobuf:"varint,202,rep,packed,name=repeated_enum,json=repeatedEnum,proto3,enum=goproto.protoc.proto3.FieldTestMessage_Enum" json:"repeated_enum,omitempty"`
	RepeatedInt32        []int32                              `protobuf:"varint,203,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
	RepeatedSint32       []int32                              `protobuf:"zigzag32,204,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
	RepeatedUint32       []uint32                             `protobuf:"varint,205,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
	RepeatedInt64        []int64                              `protobuf:"varint,206,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
	RepeatedSint64       []int64                              `protobuf:"zigzag64,207,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
	RepeatedUint64       []uint64                             `protobuf:"varint,208,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
	RepeatedSfixed32     []int32                              `protobuf:"fixed32,209,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
	RepeatedFixed32      []uint32                             `protobuf:"fixed32,210,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
	RepeatedFloat        []float32                            `protobuf:"fixed32,211,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
	RepeatedSfixed64     []int64                              `protobuf:"fixed64,212,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
	RepeatedFixed64      []uint64                             `protobuf:"fixed64,213,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
	RepeatedDouble       []float64                            `protobuf:"fixed64,214,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
	RepeatedString       []string                             `protobuf:"bytes,215,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
	RepeatedBytes        [][]byte                             `protobuf:"bytes,216,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
	Repeated_Message     []*FieldTestMessage_Message          `protobuf:"bytes,217,rep,name=repeated_Message,json=repeatedMessage,proto3" json:"repeated_Message,omitempty"`
	MapInt32Int64        map[int32]int64                      `protobuf:"bytes,500,rep,name=map_int32_int64,json=mapInt32Int64,proto3" json:"map_int32_int64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
	MapStringMessage     map[string]*FieldTestMessage_Message `protobuf:"bytes,501,rep,name=map_string_message,json=mapStringMessage,proto3" json:"map_string_message,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	MapFixed64Enum       map[uint64]FieldTestMessage_Enum     `protobuf:"bytes,502,rep,name=map_fixed64_enum,json=mapFixed64Enum,proto3" json:"map_fixed64_enum,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=goproto.protoc.proto3.FieldTestMessage_Enum"`
	XXX_NoUnkeyedLiteral struct{}                             `json:"-"`
	XXX_unrecognized     []byte                               `json:"-"`
	XXX_sizecache        int32                                `json:"-"`
}

type xxx_FieldTestMessage struct{ m *FieldTestMessage }

func (m *FieldTestMessage) ProtoReflect() protoreflect.Message {
	return xxx_FieldTestMessage{m}
}
func (m xxx_FieldTestMessage) Type() protoreflect.MessageType {
	return xxx_Fields_ProtoFile_MessageTypes[0].Type
}
func (m xxx_FieldTestMessage) KnownFields() protoreflect.KnownFields {
	return xxx_Fields_ProtoFile_MessageTypes[0].KnownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage) UnknownFields() protoreflect.UnknownFields {
	return xxx_Fields_ProtoFile_MessageTypes[0].UnknownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage) Interface() protoreflect.ProtoMessage {
	return m.m
}
func (m xxx_FieldTestMessage) ProtoMutable() {}

func (m *FieldTestMessage) Reset()         { *m = FieldTestMessage{} }
func (m *FieldTestMessage) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage) ProtoMessage()    {}
func (*FieldTestMessage) Descriptor() ([]byte, []int) {
	return fileDescriptor_f1e3ea068187307c, []int{0}
}

func (m *FieldTestMessage) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage.Unmarshal(m, b)
}
func (m *FieldTestMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage.Merge(m, src)
}
func (m *FieldTestMessage) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage.Size(m)
}
func (m *FieldTestMessage) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage proto.InternalMessageInfo

func (m *FieldTestMessage) GetOptionalBool() string {
	if m != nil {
		return m.OptionalBool
	}
	return ""
}

func (m *FieldTestMessage) GetOptionalEnum() FieldTestMessage_Enum {
	if m != nil {
		return m.OptionalEnum
	}
	return FieldTestMessage_ZERO
}

func (m *FieldTestMessage) GetOptionalInt32() int32 {
	if m != nil {
		return m.OptionalInt32
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalSint32() int32 {
	if m != nil {
		return m.OptionalSint32
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalUint32() uint32 {
	if m != nil {
		return m.OptionalUint32
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalInt64() int64 {
	if m != nil {
		return m.OptionalInt64
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalSint64() int64 {
	if m != nil {
		return m.OptionalSint64
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalUint64() uint64 {
	if m != nil {
		return m.OptionalUint64
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalSfixed32() int32 {
	if m != nil {
		return m.OptionalSfixed32
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalFixed32() uint32 {
	if m != nil {
		return m.OptionalFixed32
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalFloat() float32 {
	if m != nil {
		return m.OptionalFloat
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalSfixed64() int64 {
	if m != nil {
		return m.OptionalSfixed64
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalFixed64() uint64 {
	if m != nil {
		return m.OptionalFixed64
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalDouble() float64 {
	if m != nil {
		return m.OptionalDouble
	}
	return 0
}

func (m *FieldTestMessage) GetOptionalString() string {
	if m != nil {
		return m.OptionalString
	}
	return ""
}

func (m *FieldTestMessage) GetOptionalBytes() []byte {
	if m != nil {
		return m.OptionalBytes
	}
	return nil
}

func (m *FieldTestMessage) GetOptional_Message() *FieldTestMessage_Message {
	if m != nil {
		return m.Optional_Message
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedBool() []bool {
	if m != nil {
		return m.RepeatedBool
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedEnum() []FieldTestMessage_Enum {
	if m != nil {
		return m.RepeatedEnum
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedInt32() []int32 {
	if m != nil {
		return m.RepeatedInt32
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedSint32() []int32 {
	if m != nil {
		return m.RepeatedSint32
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedUint32() []uint32 {
	if m != nil {
		return m.RepeatedUint32
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedInt64() []int64 {
	if m != nil {
		return m.RepeatedInt64
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedSint64() []int64 {
	if m != nil {
		return m.RepeatedSint64
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedUint64() []uint64 {
	if m != nil {
		return m.RepeatedUint64
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedSfixed32() []int32 {
	if m != nil {
		return m.RepeatedSfixed32
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedFixed32() []uint32 {
	if m != nil {
		return m.RepeatedFixed32
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedFloat() []float32 {
	if m != nil {
		return m.RepeatedFloat
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedSfixed64() []int64 {
	if m != nil {
		return m.RepeatedSfixed64
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedFixed64() []uint64 {
	if m != nil {
		return m.RepeatedFixed64
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedDouble() []float64 {
	if m != nil {
		return m.RepeatedDouble
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedString() []string {
	if m != nil {
		return m.RepeatedString
	}
	return nil
}

func (m *FieldTestMessage) GetRepeatedBytes() [][]byte {
	if m != nil {
		return m.RepeatedBytes
	}
	return nil
}

func (m *FieldTestMessage) GetRepeated_Message() []*FieldTestMessage_Message {
	if m != nil {
		return m.Repeated_Message
	}
	return nil
}

func (m *FieldTestMessage) GetMapInt32Int64() map[int32]int64 {
	if m != nil {
		return m.MapInt32Int64
	}
	return nil
}

func (m *FieldTestMessage) GetMapStringMessage() map[string]*FieldTestMessage_Message {
	if m != nil {
		return m.MapStringMessage
	}
	return nil
}

func (m *FieldTestMessage) GetMapFixed64Enum() map[uint64]FieldTestMessage_Enum {
	if m != nil {
		return m.MapFixed64Enum
	}
	return nil
}

type FieldTestMessage_Message struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

type xxx_FieldTestMessage_Message struct{ m *FieldTestMessage_Message }

func (m *FieldTestMessage_Message) ProtoReflect() protoreflect.Message {
	return xxx_FieldTestMessage_Message{m}
}
func (m xxx_FieldTestMessage_Message) Type() protoreflect.MessageType {
	return xxx_Fields_ProtoFile_MessageTypes[4].Type
}
func (m xxx_FieldTestMessage_Message) KnownFields() protoreflect.KnownFields {
	return xxx_Fields_ProtoFile_MessageTypes[4].KnownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage_Message) UnknownFields() protoreflect.UnknownFields {
	return xxx_Fields_ProtoFile_MessageTypes[4].UnknownFieldsOf(m.m)
}
func (m xxx_FieldTestMessage_Message) Interface() protoreflect.ProtoMessage {
	return m.m
}
func (m xxx_FieldTestMessage_Message) ProtoMutable() {}

func (m *FieldTestMessage_Message) Reset()         { *m = FieldTestMessage_Message{} }
func (m *FieldTestMessage_Message) String() string { return proto.CompactTextString(m) }
func (*FieldTestMessage_Message) ProtoMessage()    {}
func (*FieldTestMessage_Message) Descriptor() ([]byte, []int) {
	return fileDescriptor_f1e3ea068187307c, []int{0, 3}
}

func (m *FieldTestMessage_Message) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FieldTestMessage_Message.Unmarshal(m, b)
}
func (m *FieldTestMessage_Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FieldTestMessage_Message.Marshal(b, m, deterministic)
}
func (m *FieldTestMessage_Message) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FieldTestMessage_Message.Merge(m, src)
}
func (m *FieldTestMessage_Message) XXX_Size() int {
	return xxx_messageInfo_FieldTestMessage_Message.Size(m)
}
func (m *FieldTestMessage_Message) XXX_DiscardUnknown() {
	xxx_messageInfo_FieldTestMessage_Message.DiscardUnknown(m)
}

var xxx_messageInfo_FieldTestMessage_Message proto.InternalMessageInfo

func init() {
	proto.RegisterEnum("goproto.protoc.proto3.FieldTestMessage_Enum", FieldTestMessage_Enum_name, FieldTestMessage_Enum_value)
	proto.RegisterType((*FieldTestMessage)(nil), "goproto.protoc.proto3.FieldTestMessage")
	proto.RegisterMapType((map[uint64]FieldTestMessage_Enum)(nil), "goproto.protoc.proto3.FieldTestMessage.MapFixed64EnumEntry")
	proto.RegisterMapType((map[int32]int64)(nil), "goproto.protoc.proto3.FieldTestMessage.MapInt32Int64Entry")
	proto.RegisterMapType((map[string]*FieldTestMessage_Message)(nil), "goproto.protoc.proto3.FieldTestMessage.MapStringMessageEntry")
	proto.RegisterType((*FieldTestMessage_Message)(nil), "goproto.protoc.proto3.FieldTestMessage.Message")
}

func init() { proto.RegisterFile("proto3/fields.proto", fileDescriptor_f1e3ea068187307c) }

var fileDescriptor_f1e3ea068187307c = []byte{
	// 832 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x95, 0xc9, 0x6f, 0xdb, 0x38,
	0x14, 0xc6, 0x87, 0x5e, 0x63, 0xc6, 0x8b, 0xcc, 0x4c, 0x00, 0x22, 0x27, 0x22, 0xb3, 0x71, 0x66,
	0x12, 0x1b, 0xb0, 0x05, 0x61, 0x90, 0x41, 0xd1, 0xd6, 0xa8, 0x03, 0xf4, 0x50, 0x14, 0x55, 0xdb,
	0x4b, 0x7a, 0x08, 0x64, 0x5b, 0x56, 0x8d, 0x6a, 0x31, 0x6c, 0x29, 0x68, 0xfe, 0xc4, 0xee, 0xe9,
	0xde, 0xfe, 0x1f, 0x6d, 0xcf, 0x05, 0x45, 0x8a, 0xa2, 0x64, 0x1f, 0xe2, 0x9c, 0x64, 0x3e, 0x7f,
	0xfa, 0x7e, 0x7c, 0xd4, 0xfb, 0x24, 0xb8, 0x33, 0x5f, 0x04, 0x61, 0xd0, 0xef, 0x4e, 0x67, 0xb6,
	0x3b, 0x59, 0x76, 0xe2, 0x15, 0xda, 0x75, 0x82, 0xf8, 0x07, 0x5f, 0x8e, 0xf9, 0xa5, 0xbf, 0x7f,
	0xd1, 0x86, 0xda, 0x31, 0xd3, 0x3d, 0xb0, 0x97, 0xe1, 0x1d, 0x7b, 0xb9, 0xb4, 0x1c, 0x1b, 0xfd,
	0x06, 0x1b, 0xc1, 0x3c, 0x9c, 0x05, 0xbe, 0xe5, 0x9e, 0x8e, 0x82, 0xc0, 0xc5, 0x80, 0x00, 0x5a,
	0x33, 0xeb, 0x49, 0x71, 0x10, 0x04, 0x2e, 0xba, 0xa7, 0x88, 0x6c, 0x3f, 0xf2, 0x70, 0x81, 0x00,
	0xda, 0xec, 0x1d, 0x74, 0xd6, 0x82, 0x3a, 0x79, 0x48, 0x67, 0xe8, 0x47, 0x5e, 0x6a, 0xc9, 0x56,
	0xe8, 0x0f, 0xd8, 0x94, 0x96, 0x33, 0x3f, 0xec, 0xf7, 0x70, 0x91, 0x00, 0x5a, 0x36, 0x25, 0xe8,
	0x36, 0x2b, 0xa2, 0xbf, 0x60, 0x4b, 0xca, 0x96, 0x5c, 0x57, 0x22, 0x80, 0xb6, 0x4d, 0x79, 0xf7,
	0xfd, 0xd9, 0x8a, 0x30, 0xe2, 0xc2, 0x32, 0x01, 0xb4, 0x91, 0x0a, 0x1f, 0x72, 0x61, 0x0e, 0x6c,
	0xe8, 0xb8, 0x42, 0x00, 0x2d, 0x66, 0xc0, 0x86, 0xbe, 0x02, 0x36, 0x74, 0x5c, 0x25, 0x80, 0xa2,
	0x2c, 0x38, 0x27, 0x8c, 0xb8, 0x70, 0x8b, 0x00, 0x5a, 0xca, 0x82, 0x0d, 0x1d, 0xfd, 0x0b, 0xdb,
	0xa9, 0xe3, 0x74, 0xf6, 0xd4, 0x9e, 0xf4, 0x7b, 0xb8, 0x46, 0x00, 0x6d, 0x99, 0x9a, 0xf4, 0x14,
	0x75, 0xf4, 0x37, 0x94, 0xb5, 0xd3, 0x44, 0x0b, 0x09, 0xa0, 0x55, 0x53, 0xd2, 0x8e, 0x85, 0x54,
	0x6d, 0x68, 0xea, 0x06, 0x56, 0x88, 0xb7, 0x09, 0xa0, 0x85, 0xb4, 0xa1, 0x63, 0x56, 0x5c, 0x83,
	0x37, 0x74, 0x5c, 0x27, 0x80, 0x6a, 0x79, 0xbc, 0xa1, 0xaf, 0xe2, 0x0d, 0x1d, 0x37, 0x08, 0xa0,
	0x95, 0x1c, 0x3e, 0xd7, 0xff, 0x24, 0x88, 0x46, 0xae, 0x8d, 0x9b, 0x04, 0x50, 0x90, 0xf6, 0x7f,
	0x2b, 0xae, 0x66, 0x4f, 0x34, 0x5c, 0xcc, 0x7c, 0x07, 0xb7, 0xe2, 0x59, 0x4b, 0x4f, 0x34, 0xae,
	0x66, 0x1a, 0x1a, 0x9d, 0x87, 0xf6, 0x12, 0x6b, 0x04, 0xd0, 0x7a, 0xda, 0xd0, 0x80, 0x15, 0xd1,
	0x89, 0xb2, 0x47, 0x31, 0x68, 0xb8, 0x4d, 0x00, 0xdd, 0xee, 0x75, 0x2f, 0x3b, 0x97, 0xe2, 0x9a,
	0x36, 0x95, 0xa4, 0xe2, 0x77, 0xd8, 0x58, 0xd8, 0x73, 0xdb, 0x0a, 0xed, 0x09, 0x4f, 0xc5, 0x33,
	0x40, 0x8a, 0x74, 0xcb, 0xac, 0x27, 0xd5, 0x38, 0x16, 0xa6, 0xa2, 0x8a, 0x63, 0xf1, 0x9c, 0xa9,
	0x36, 0xce, 0x45, 0xe2, 0x11, 0xe7, 0xe2, 0x4f, 0xd8, 0x94, 0x9e, 0x7c, 0x8c, 0x5f, 0x30, 0xd3,
	0xb2, 0x29, 0x51, 0x3c, 0x18, 0x14, 0xb6, 0xa4, 0x4e, 0x04, 0xe3, 0x25, 0x13, 0xb6, 0x4d, 0x79,
	0xbf, 0x48, 0x86, 0xaa, 0x14, 0xc9, 0x78, 0xc5, 0x94, 0x8d, 0x54, 0x29, 0xa2, 0x91, 0x63, 0x1b,
	0x3a, 0x7e, 0xcd, 0x84, 0xc5, 0x0c, 0xdb, 0xd0, 0x57, 0xd8, 0x86, 0x8e, 0xdf, 0x30, 0x21, 0xca,
	0xb2, 0x73, 0x4a, 0x11, 0x8e, 0x0b, 0xa6, 0x2c, 0x65, 0xd9, 0x86, 0x8e, 0x0e, 0x60, 0x3b, 0xf5,
	0x4c, 0x26, 0xfe, 0x2d, 0xd3, 0xb6, 0x4c, 0x4d, 0xba, 0x26, 0xf1, 0xf8, 0x07, 0xca, 0x9a, 0x8c,
	0xc7, 0x3b, 0x26, 0xae, 0x9a, 0x12, 0x98, 0xe4, 0x43, 0xed, 0x8a, 0xe7, 0xe3, 0x3d, 0x53, 0x16,
	0xd2, 0xae, 0x78, 0x40, 0x56, 0x77, 0x60, 0xe8, 0xf8, 0x03, 0x93, 0x6a, 0xf9, 0x1d, 0x18, 0xfa,
	0xea, 0x0e, 0x0c, 0x1d, 0x7f, 0x64, 0xe2, 0x4a, 0x6e, 0x07, 0xb9, 0x53, 0x10, 0x11, 0xf9, 0xc4,
	0xa4, 0x20, 0x3d, 0x05, 0x91, 0x91, 0xcc, 0xc9, 0xf2, 0x8c, 0x7c, 0x66, 0xca, 0x9a, 0x72, 0xb2,
	0x3c, 0x24, 0x6a, 0x57, 0x3c, 0x24, 0x5f, 0x98, 0xb0, 0x9e, 0x76, 0xc5, 0x53, 0xf2, 0x48, 0xd9,
	0x67, 0x92, 0x92, 0xaf, 0x4c, 0x79, 0x95, 0x98, 0x24, 0x4e, 0x49, 0x4c, 0xc6, 0xb0, 0xe5, 0x59,
	0x73, 0x3e, 0xa7, 0x62, 0x62, 0xbe, 0x15, 0x63, 0xef, 0xa3, 0x4b, 0x7b, 0x5b, 0xf3, 0x78, 0xa0,
	0xe3, 0xc9, 0x1a, 0xfa, 0xe1, 0xe2, 0xdc, 0x6c, 0x78, 0x6a, 0x0d, 0xb9, 0x10, 0x31, 0x08, 0x3f,
	0x8e, 0x53, 0x4f, 0xf4, 0xf0, 0x9d, 0x73, 0xae, 0x6d, 0xc0, 0xe1, 0x27, 0x27, 0x0a, 0x1c, 0xa5,
	0x79, 0xb9, 0x32, 0x9a, 0x42, 0x56, 0x4b, 0x1e, 0x29, 0x8f, 0xf5, 0x0f, 0xce, 0xfa, 0x7f, 0x03,
	0x96, 0x78, 0xf4, 0x2c, 0xd2, 0x9c, 0xd4, 0xf4, 0x32, 0xc5, 0xbd, 0x1b, 0x10, 0xad, 0xb6, 0x8e,
	0x34, 0x58, 0x7c, 0x62, 0x9f, 0xc7, 0xdf, 0xe0, 0xb2, 0xc9, 0x7e, 0xa2, 0x5f, 0x61, 0xf9, 0xcc,
	0x72, 0x23, 0x3b, 0xfe, 0xe4, 0x16, 0x4d, 0xbe, 0x38, 0x2a, 0xfc, 0x07, 0xf6, 0x42, 0xb8, 0xbb,
	0xb6, 0x29, 0xd5, 0xa4, 0xc6, 0x4d, 0x86, 0xaa, 0xc9, 0x15, 0x1e, 0xbc, 0x42, 0x0d, 0xe0, 0xce,
	0x9a, 0xf6, 0x54, 0x66, 0x85, 0x33, 0x07, 0x2a, 0x73, 0xd3, 0x77, 0xa2, 0x02, 0xac, 0xc1, 0xaa,
	0xf8, 0x6b, 0x5f, 0x83, 0xa5, 0xf8, 0x1d, 0xb9, 0x05, 0x4b, 0x27, 0x43, 0xf3, 0xae, 0xf6, 0xcb,
	0xe0, 0xe6, 0xc9, 0x75, 0x67, 0x16, 0x3e, 0x8e, 0x46, 0x9d, 0x71, 0xe0, 0x75, 0x9d, 0xc0, 0xb5,
	0x7c, 0xa7, 0x1b, 0x3b, 0x8f, 0xa2, 0x69, 0xf7, 0xac, 0xd7, 0x1d, 0x7b, 0x13, 0xbe, 0x1e, 0x1f,
	0x3a, 0xb6, 0x7f, 0xe8, 0x04, 0xdd, 0xd0, 0x5e, 0x86, 0x13, 0x2b, 0xb4, 0x78, 0xb9, 0x3f, 0xaa,
	0xf0, 0xeb, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbb, 0x1c, 0x0b, 0xbf, 0x4a, 0x09, 0x00, 0x00,
}

func init() {
	xxx_Fields_ProtoFile_FileDesc.Messages = xxx_Fields_ProtoFile_MessageDescs[0:1]
	xxx_Fields_ProtoFile_MessageDescs[0].Enums = xxx_Fields_ProtoFile_EnumDescs[0:1]
	xxx_Fields_ProtoFile_MessageDescs[0].Messages = xxx_Fields_ProtoFile_MessageDescs[1:5]
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[1].EnumType = xxx_Fields_ProtoFile_EnumTypes[0]
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[16].MessageType = xxx_Fields_ProtoFile_MessageTypes[4].Type
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[18].EnumType = xxx_Fields_ProtoFile_EnumTypes[0]
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[33].MessageType = xxx_Fields_ProtoFile_MessageTypes[4].Type
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[34].MessageType = xxx_Fields_ProtoFile_MessageDescs[1].Reference()
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[35].MessageType = xxx_Fields_ProtoFile_MessageDescs[2].Reference()
	xxx_Fields_ProtoFile_MessageDescs[0].Fields[36].MessageType = xxx_Fields_ProtoFile_MessageDescs[3].Reference()
	xxx_Fields_ProtoFile_MessageDescs[2].Fields[1].MessageType = xxx_Fields_ProtoFile_MessageTypes[4].Type
	xxx_Fields_ProtoFile_MessageDescs[3].Fields[1].EnumType = xxx_Fields_ProtoFile_EnumTypes[0]
	var err error
	Fields_ProtoFile, err = prototype.NewFile(&xxx_Fields_ProtoFile_FileDesc)
	if err != nil {
		panic(err)
	}
}

const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)

var Fields_ProtoFile protoreflect.FileDescriptor

var xxx_Fields_ProtoFile_FileDesc = prototype.File{
	Syntax:  protoreflect.Proto3,
	Path:    "proto3/fields.proto",
	Package: "goproto.protoc.proto3",
}
var xxx_Fields_ProtoFile_EnumTypes = [1]protoreflect.EnumType{
	prototype.GoEnum(
		xxx_Fields_ProtoFile_EnumDescs[0].Reference(),
		func(_ protoreflect.EnumType, n protoreflect.EnumNumber) protoreflect.ProtoEnum {
			return FieldTestMessage_Enum(n)
		},
	),
}
var xxx_Fields_ProtoFile_EnumDescs = [1]prototype.Enum{
	{
		Name: "Enum",
		Values: []prototype.EnumValue{
			{Name: "ZERO", Number: 0},
		},
	},
}
var xxx_Fields_ProtoFile_MessageTypes = [5]protoimpl.MessageType{
	{Type: prototype.GoMessage(
		xxx_Fields_ProtoFile_MessageDescs[0].Reference(),
		func(protoreflect.MessageType) protoreflect.ProtoMessage {
			return new(FieldTestMessage)
		},
	)},
	{ /* no message type for FieldTestMessage_MapInt32Int64Entry */ },
	{ /* no message type for FieldTestMessage_MapStringMessageEntry */ },
	{ /* no message type for FieldTestMessage_MapFixed64EnumEntry */ },
	{Type: prototype.GoMessage(
		xxx_Fields_ProtoFile_MessageDescs[4].Reference(),
		func(protoreflect.MessageType) protoreflect.ProtoMessage {
			return new(FieldTestMessage_Message)
		},
	)},
}
var xxx_Fields_ProtoFile_MessageDescs = [5]prototype.Message{
	{
		Name: "FieldTestMessage",
		Fields: []prototype.Field{
			{
				Name:        "optional_bool",
				Number:      1,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.StringKind,
				JSONName:    "optionalBool",
			},
			{
				Name:        "optional_enum",
				Number:      2,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.EnumKind,
				JSONName:    "optionalEnum",
			},
			{
				Name:        "optional_int32",
				Number:      3,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int32Kind,
				JSONName:    "optionalInt32",
			},
			{
				Name:        "optional_sint32",
				Number:      4,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sint32Kind,
				JSONName:    "optionalSint32",
			},
			{
				Name:        "optional_uint32",
				Number:      5,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Uint32Kind,
				JSONName:    "optionalUint32",
			},
			{
				Name:        "optional_int64",
				Number:      6,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int64Kind,
				JSONName:    "optionalInt64",
			},
			{
				Name:        "optional_sint64",
				Number:      7,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sint64Kind,
				JSONName:    "optionalSint64",
			},
			{
				Name:        "optional_uint64",
				Number:      8,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Uint64Kind,
				JSONName:    "optionalUint64",
			},
			{
				Name:        "optional_sfixed32",
				Number:      9,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sfixed32Kind,
				JSONName:    "optionalSfixed32",
			},
			{
				Name:        "optional_fixed32",
				Number:      10,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Fixed32Kind,
				JSONName:    "optionalFixed32",
			},
			{
				Name:        "optional_float",
				Number:      11,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.FloatKind,
				JSONName:    "optionalFloat",
			},
			{
				Name:        "optional_sfixed64",
				Number:      12,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Sfixed64Kind,
				JSONName:    "optionalSfixed64",
			},
			{
				Name:        "optional_fixed64",
				Number:      13,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Fixed64Kind,
				JSONName:    "optionalFixed64",
			},
			{
				Name:        "optional_double",
				Number:      14,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.DoubleKind,
				JSONName:    "optionalDouble",
			},
			{
				Name:        "optional_string",
				Number:      15,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.StringKind,
				JSONName:    "optionalString",
			},
			{
				Name:        "optional_bytes",
				Number:      16,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.BytesKind,
				JSONName:    "optionalBytes",
			},
			{
				Name:        "optional_Message",
				Number:      17,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.MessageKind,
				JSONName:    "optionalMessage",
			},
			{
				Name:        "repeated_bool",
				Number:      201,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.BoolKind,
				JSONName:    "repeatedBool",
			},
			{
				Name:        "repeated_enum",
				Number:      202,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.EnumKind,
				JSONName:    "repeatedEnum",
			},
			{
				Name:        "repeated_int32",
				Number:      203,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Int32Kind,
				JSONName:    "repeatedInt32",
			},
			{
				Name:        "repeated_sint32",
				Number:      204,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Sint32Kind,
				JSONName:    "repeatedSint32",
			},
			{
				Name:        "repeated_uint32",
				Number:      205,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Uint32Kind,
				JSONName:    "repeatedUint32",
			},
			{
				Name:        "repeated_int64",
				Number:      206,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Int64Kind,
				JSONName:    "repeatedInt64",
			},
			{
				Name:        "repeated_sint64",
				Number:      207,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Sint64Kind,
				JSONName:    "repeatedSint64",
			},
			{
				Name:        "repeated_uint64",
				Number:      208,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Uint64Kind,
				JSONName:    "repeatedUint64",
			},
			{
				Name:        "repeated_sfixed32",
				Number:      209,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Sfixed32Kind,
				JSONName:    "repeatedSfixed32",
			},
			{
				Name:        "repeated_fixed32",
				Number:      210,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Fixed32Kind,
				JSONName:    "repeatedFixed32",
			},
			{
				Name:        "repeated_float",
				Number:      211,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.FloatKind,
				JSONName:    "repeatedFloat",
			},
			{
				Name:        "repeated_sfixed64",
				Number:      212,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Sfixed64Kind,
				JSONName:    "repeatedSfixed64",
			},
			{
				Name:        "repeated_fixed64",
				Number:      213,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.Fixed64Kind,
				JSONName:    "repeatedFixed64",
			},
			{
				Name:        "repeated_double",
				Number:      214,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.DoubleKind,
				JSONName:    "repeatedDouble",
			},
			{
				Name:        "repeated_string",
				Number:      215,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.StringKind,
				JSONName:    "repeatedString",
			},
			{
				Name:        "repeated_bytes",
				Number:      216,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.BytesKind,
				JSONName:    "repeatedBytes",
			},
			{
				Name:        "repeated_Message",
				Number:      217,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.MessageKind,
				JSONName:    "repeatedMessage",
			},
			{
				Name:        "map_int32_int64",
				Number:      500,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.MessageKind,
				JSONName:    "mapInt32Int64",
			},
			{
				Name:        "map_string_message",
				Number:      501,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.MessageKind,
				JSONName:    "mapStringMessage",
			},
			{
				Name:        "map_fixed64_enum",
				Number:      502,
				Cardinality: protoreflect.Repeated,
				Kind:        protoreflect.MessageKind,
				JSONName:    "mapFixed64Enum",
			},
		},
	},
	{
		Name: "MapInt32Int64Entry",
		Fields: []prototype.Field{
			{
				Name:        "key",
				Number:      1,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int32Kind,
				JSONName:    "key",
			},
			{
				Name:        "value",
				Number:      2,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Int64Kind,
				JSONName:    "value",
			},
		},
	},
	{
		Name: "MapStringMessageEntry",
		Fields: []prototype.Field{
			{
				Name:        "key",
				Number:      1,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.StringKind,
				JSONName:    "key",
			},
			{
				Name:        "value",
				Number:      2,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.MessageKind,
				JSONName:    "value",
			},
		},
	},
	{
		Name: "MapFixed64EnumEntry",
		Fields: []prototype.Field{
			{
				Name:        "key",
				Number:      1,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.Fixed64Kind,
				JSONName:    "key",
			},
			{
				Name:        "value",
				Number:      2,
				Cardinality: protoreflect.Optional,
				Kind:        protoreflect.EnumKind,
				JSONName:    "value",
			},
		},
	},
	{
		Name: "Message",
	},
}
