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

/*
Package proto3_proto is a generated protocol buffer package.

It is generated from these files:
	proto3_proto/proto3.proto

It has these top-level messages:
	Message
	Nested
	MessageWithMap
*/
package proto3_proto

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import google_protobuf "github.com/golang/protobuf/ptypes/any"
import testdata "github.com/golang/protobuf/proto/testdata"

// 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.ProtoPackageIsVersion2 // please upgrade the proto package

type Message_Humour int32

const (
	Message_UNKNOWN     Message_Humour = 0
	Message_PUNS        Message_Humour = 1
	Message_SLAPSTICK   Message_Humour = 2
	Message_BILL_BAILEY Message_Humour = 3
)

var Message_Humour_name = map[int32]string{
	0: "UNKNOWN",
	1: "PUNS",
	2: "SLAPSTICK",
	3: "BILL_BAILEY",
}
var Message_Humour_value = map[string]int32{
	"UNKNOWN":     0,
	"PUNS":        1,
	"SLAPSTICK":   2,
	"BILL_BAILEY": 3,
}

func (x Message_Humour) String() string {
	return proto.EnumName(Message_Humour_name, int32(x))
}
func (Message_Humour) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0, 0} }

type Message struct {
	Name         string                           `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Hilarity     Message_Humour                   `protobuf:"varint,2,opt,name=hilarity,enum=proto3_proto.Message_Humour" json:"hilarity,omitempty"`
	HeightInCm   uint32                           `protobuf:"varint,3,opt,name=height_in_cm,json=heightInCm" json:"height_in_cm,omitempty"`
	Data         []byte                           `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
	ResultCount  int64                            `protobuf:"varint,7,opt,name=result_count,json=resultCount" json:"result_count,omitempty"`
	TrueScotsman bool                             `protobuf:"varint,8,opt,name=true_scotsman,json=trueScotsman" json:"true_scotsman,omitempty"`
	Score        float32                          `protobuf:"fixed32,9,opt,name=score" json:"score,omitempty"`
	Key          []uint64                         `protobuf:"varint,5,rep,packed,name=key" json:"key,omitempty"`
	ShortKey     []int32                          `protobuf:"varint,19,rep,packed,name=short_key,json=shortKey" json:"short_key,omitempty"`
	Nested       *Nested                          `protobuf:"bytes,6,opt,name=nested" json:"nested,omitempty"`
	RFunny       []Message_Humour                 `protobuf:"varint,16,rep,packed,name=r_funny,json=rFunny,enum=proto3_proto.Message_Humour" json:"r_funny,omitempty"`
	Terrain      map[string]*Nested               `protobuf:"bytes,10,rep,name=terrain" json:"terrain,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Proto2Field  *testdata.SubDefaults            `protobuf:"bytes,11,opt,name=proto2_field,json=proto2Field" json:"proto2_field,omitempty"`
	Proto2Value  map[string]*testdata.SubDefaults `protobuf:"bytes,13,rep,name=proto2_value,json=proto2Value" json:"proto2_value,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Anything     *google_protobuf.Any             `protobuf:"bytes,14,opt,name=anything" json:"anything,omitempty"`
	ManyThings   []*google_protobuf.Any           `protobuf:"bytes,15,rep,name=many_things,json=manyThings" json:"many_things,omitempty"`
	Submessage   *Message                         `protobuf:"bytes,17,opt,name=submessage" json:"submessage,omitempty"`
	Children     []*Message                       `protobuf:"bytes,18,rep,name=children" json:"children,omitempty"`
}

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

func (m *Message) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *Message) GetHilarity() Message_Humour {
	if m != nil {
		return m.Hilarity
	}
	return Message_UNKNOWN
}

func (m *Message) GetHeightInCm() uint32 {
	if m != nil {
		return m.HeightInCm
	}
	return 0
}

func (m *Message) GetData() []byte {
	if m != nil {
		return m.Data
	}
	return nil
}

func (m *Message) GetResultCount() int64 {
	if m != nil {
		return m.ResultCount
	}
	return 0
}

func (m *Message) GetTrueScotsman() bool {
	if m != nil {
		return m.TrueScotsman
	}
	return false
}

func (m *Message) GetScore() float32 {
	if m != nil {
		return m.Score
	}
	return 0
}

func (m *Message) GetKey() []uint64 {
	if m != nil {
		return m.Key
	}
	return nil
}

func (m *Message) GetShortKey() []int32 {
	if m != nil {
		return m.ShortKey
	}
	return nil
}

func (m *Message) GetNested() *Nested {
	if m != nil {
		return m.Nested
	}
	return nil
}

func (m *Message) GetRFunny() []Message_Humour {
	if m != nil {
		return m.RFunny
	}
	return nil
}

func (m *Message) GetTerrain() map[string]*Nested {
	if m != nil {
		return m.Terrain
	}
	return nil
}

func (m *Message) GetProto2Field() *testdata.SubDefaults {
	if m != nil {
		return m.Proto2Field
	}
	return nil
}

func (m *Message) GetProto2Value() map[string]*testdata.SubDefaults {
	if m != nil {
		return m.Proto2Value
	}
	return nil
}

func (m *Message) GetAnything() *google_protobuf.Any {
	if m != nil {
		return m.Anything
	}
	return nil
}

func (m *Message) GetManyThings() []*google_protobuf.Any {
	if m != nil {
		return m.ManyThings
	}
	return nil
}

func (m *Message) GetSubmessage() *Message {
	if m != nil {
		return m.Submessage
	}
	return nil
}

func (m *Message) GetChildren() []*Message {
	if m != nil {
		return m.Children
	}
	return nil
}

type Nested struct {
	Bunny string `protobuf:"bytes,1,opt,name=bunny" json:"bunny,omitempty"`
	Cute  bool   `protobuf:"varint,2,opt,name=cute" json:"cute,omitempty"`
}

func (m *Nested) Reset()                    { *m = Nested{} }
func (m *Nested) String() string            { return proto.CompactTextString(m) }
func (*Nested) ProtoMessage()               {}
func (*Nested) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }

func (m *Nested) GetBunny() string {
	if m != nil {
		return m.Bunny
	}
	return ""
}

func (m *Nested) GetCute() bool {
	if m != nil {
		return m.Cute
	}
	return false
}

type MessageWithMap struct {
	ByteMapping map[bool][]byte `protobuf:"bytes,1,rep,name=byte_mapping,json=byteMapping" json:"byte_mapping,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (m *MessageWithMap) Reset()                    { *m = MessageWithMap{} }
func (m *MessageWithMap) String() string            { return proto.CompactTextString(m) }
func (*MessageWithMap) ProtoMessage()               {}
func (*MessageWithMap) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }

func (m *MessageWithMap) GetByteMapping() map[bool][]byte {
	if m != nil {
		return m.ByteMapping
	}
	return nil
}

func init() {
	proto.RegisterType((*Message)(nil), "proto3_proto.Message")
	proto.RegisterType((*Nested)(nil), "proto3_proto.Nested")
	proto.RegisterType((*MessageWithMap)(nil), "proto3_proto.MessageWithMap")
	proto.RegisterEnum("proto3_proto.Message_Humour", Message_Humour_name, Message_Humour_value)
}

func init() { proto.RegisterFile("proto3_proto/proto3.proto", fileDescriptor0) }

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