// Code generated by protoc-gen-go. DO NOT EDIT.
// source: proto2.v1.2.0-20180814-aa810b61/test.proto

package proto2_v1_2_0_20180814_aa810b61 // import "github.com/golang/protobuf/v2/internal/testprotos/legacy/proto2.v1.2.0-20180814-aa810b61"

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import 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.ProtoPackageIsVersion2 // please upgrade the proto package

type SiblingEnum int32

const (
	SiblingEnum_ALPHA   SiblingEnum = 0
	SiblingEnum_BRAVO   SiblingEnum = 10
	SiblingEnum_CHARLIE SiblingEnum = 200
)

var SiblingEnum_name = map[int32]string{
	0:   "ALPHA",
	10:  "BRAVO",
	200: "CHARLIE",
}
var SiblingEnum_value = map[string]int32{
	"ALPHA":   0,
	"BRAVO":   10,
	"CHARLIE": 200,
}

func (x SiblingEnum) Enum() *SiblingEnum {
	p := new(SiblingEnum)
	*p = x
	return p
}
func (x SiblingEnum) String() string {
	return proto.EnumName(SiblingEnum_name, int32(x))
}
func (x *SiblingEnum) UnmarshalJSON(data []byte) error {
	value, err := proto.UnmarshalJSONEnum(SiblingEnum_value, data, "SiblingEnum")
	if err != nil {
		return err
	}
	*x = SiblingEnum(value)
	return nil
}
func (SiblingEnum) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_test_3cbbf8564163e8c6, []int{0}
}

type Message_ChildEnum int32

const (
	Message_ALPHA   Message_ChildEnum = 0
	Message_BRAVO   Message_ChildEnum = 1
	Message_CHARLIE Message_ChildEnum = 2
)

var Message_ChildEnum_name = map[int32]string{
	0: "ALPHA",
	1: "BRAVO",
	2: "CHARLIE",
}
var Message_ChildEnum_value = map[string]int32{
	"ALPHA":   0,
	"BRAVO":   1,
	"CHARLIE": 2,
}

func (x Message_ChildEnum) Enum() *Message_ChildEnum {
	p := new(Message_ChildEnum)
	*p = x
	return p
}
func (x Message_ChildEnum) String() string {
	return proto.EnumName(Message_ChildEnum_name, int32(x))
}
func (x *Message_ChildEnum) UnmarshalJSON(data []byte) error {
	value, err := proto.UnmarshalJSONEnum(Message_ChildEnum_value, data, "Message_ChildEnum")
	if err != nil {
		return err
	}
	*x = Message_ChildEnum(value)
	return nil
}
func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 0}
}

type SiblingMessage struct {
	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *SiblingMessage) Reset()         { *m = SiblingMessage{} }
func (m *SiblingMessage) String() string { return proto.CompactTextString(m) }
func (*SiblingMessage) ProtoMessage()    {}
func (*SiblingMessage) Descriptor() ([]byte, []int) {
	return fileDescriptor_test_3cbbf8564163e8c6, []int{0}
}
func (m *SiblingMessage) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SiblingMessage.Unmarshal(m, b)
}
func (m *SiblingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SiblingMessage.Marshal(b, m, deterministic)
}
func (dst *SiblingMessage) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SiblingMessage.Merge(dst, src)
}
func (m *SiblingMessage) XXX_Size() int {
	return xxx_messageInfo_SiblingMessage.Size(m)
}
func (m *SiblingMessage) XXX_DiscardUnknown() {
	xxx_messageInfo_SiblingMessage.DiscardUnknown(m)
}

var xxx_messageInfo_SiblingMessage proto.InternalMessageInfo

func (m *SiblingMessage) GetF1() string {
	if m != nil && m.F1 != nil {
		return *m.F1
	}
	return ""
}

func (m *SiblingMessage) GetF2() string {
	if m != nil && m.F2 != nil {
		return *m.F2
	}
	return ""
}

func (m *SiblingMessage) GetF3() []string {
	if m != nil {
		return m.F3
	}
	return nil
}

func (m *SiblingMessage) GetF4() *Message {
	if m != nil {
		return m.F4
	}
	return nil
}

type Message struct {
	Namedgroup *Message_NamedGroup `protobuf:"group,1,opt,name=NamedGroup,json=namedgroup" json:"namedgroup,omitempty"`
	// Optional fields.
	OptionalBool           *bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
	OptionalInt32          *int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
	OptionalSint32         *int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
	OptionalUint32         *uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
	OptionalInt64          *int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
	OptionalSint64         *int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
	OptionalUint64         *uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
	OptionalFixed32        *uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
	OptionalSfixed32       *int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
	OptionalFloat          *float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
	OptionalFixed64        *uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
	OptionalSfixed64       *int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
	OptionalDouble         *float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
	OptionalString         *string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
	OptionalBytes          []byte                 `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
	OptionalChildEnum      *Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum" json:"optional_child_enum,omitempty"`
	OptionalChildMessage   *Message_ChildMessage  `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
	OptionalNamedGroup     *Message_NamedGroup    `protobuf:"bytes,117,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
	OptionalSiblingEnum    *SiblingEnum           `protobuf:"varint,118,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum" json:"optional_sibling_enum,omitempty"`
	OptionalSiblingMessage *SiblingMessage        `protobuf:"bytes,119,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
	Optionalgroup          *Message_OptionalGroup `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
	// Optional default fields.
	DefaultedBool        *bool              `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
	DefaultedInt32       *int32             `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
	DefaultedSint32      *int32             `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
	DefaultedUint32      *uint32            `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
	DefaultedInt64       *int64             `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
	DefaultedSint64      *int64             `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
	DefaultedUint64      *uint64            `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
	DefaultedFixed32     *uint32            `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
	DefaultedSfixed32    *int32             `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
	DefaultedFloat       *float32           `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
	DefaultedFixed64     *uint64            `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
	DefaultedSfixed64    *int64             `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
	DefaultedDouble      *float64           `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
	DefaultedString      *string            `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
	DefaultedBytes       []byte             `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
	DefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,def=0" json:"defaulted_child_enum,omitempty"`
	DefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,def=0" json:"defaulted_sibling_enum,omitempty"`
	// Required fields.
	RequiredBool           *bool                  `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
	RequiredInt32          *int32                 `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
	RequiredSint32         *int32                 `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
	RequiredUint32         *uint32                `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
	RequiredInt64          *int64                 `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
	RequiredSint64         *int64                 `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
	RequiredUint64         *uint64                `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
	RequiredFixed32        *uint32                `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
	RequiredSfixed32       *int32                 `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
	RequiredFloat          *float32               `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
	RequiredFixed64        *uint64                `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
	RequiredSfixed64       *int64                 `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
	RequiredDouble         *float64               `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
	RequiredString         *string                `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
	RequiredBytes          []byte                 `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
	RequiredChildEnum      *Message_ChildEnum     `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum" json:"required_child_enum,omitempty"`
	RequiredChildMessage   *Message_ChildMessage  `protobuf:"bytes,316,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
	RequiredNamedGroup     *Message_NamedGroup    `protobuf:"bytes,317,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
	RequiredSiblingEnum    *SiblingEnum           `protobuf:"varint,318,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum" json:"required_sibling_enum,omitempty"`
	RequiredSiblingMessage *SiblingMessage        `protobuf:"bytes,319,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
	Requiredgroup          *Message_RequiredGroup `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
	// Required default fields.
	RequiredDefaultedBool        *bool              `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
	RequiredDefaultedInt32       *int32             `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
	RequiredDefaultedSint32      *int32             `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
	RequiredDefaultedUint32      *uint32            `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
	RequiredDefaultedInt64       *int64             `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
	RequiredDefaultedSint64      *int64             `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
	RequiredDefaultedUint64      *uint64            `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
	RequiredDefaultedFixed32     *uint32            `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
	RequiredDefaultedSfixed32    *int32             `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
	RequiredDefaultedFloat       *float32           `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
	RequiredDefaultedFixed64     *uint64            `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
	RequiredDefaultedSfixed64    *int64             `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
	RequiredDefaultedDouble      *float64           `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
	RequiredDefaultedString      *string            `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
	RequiredDefaultedBytes       []byte             `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
	RequiredDefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,def=0" json:"required_defaulted_child_enum,omitempty"`
	RequiredDefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,def=0" json:"required_defaulted_sibling_enum,omitempty"`
	// Repeated fields.
	RepeatedBool           []bool                   `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
	RepeatedInt32          []int32                  `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
	RepeatedSint32         []int32                  `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
	RepeatedUint32         []uint32                 `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
	RepeatedInt64          []int64                  `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
	RepeatedSint64         []int64                  `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
	RepeatedUint64         []uint64                 `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
	RepeatedFixed32        []uint32                 `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
	RepeatedSfixed32       []int32                  `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
	RepeatedFloat          []float32                `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
	RepeatedFixed64        []uint64                 `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
	RepeatedSfixed64       []int64                  `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
	RepeatedDouble         []float64                `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
	RepeatedString         []string                 `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
	RepeatedBytes          [][]byte                 `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
	RepeatedChildEnum      []Message_ChildEnum      `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
	RepeatedChildMessage   []*Message_ChildMessage  `protobuf:"bytes,516,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
	RepeatedNamedGroup     []*Message_NamedGroup    `protobuf:"bytes,517,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
	RepeatedSiblingEnum    []SiblingEnum            `protobuf:"varint,518,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
	RepeatedSiblingMessage []*SiblingMessage        `protobuf:"bytes,519,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
	Repeatedgroup          []*Message_RepeatedGroup `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
	// Map fields.
	MapBoolBool           map[bool]bool                  `protobuf:"bytes,600,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,601,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,602,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,603,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,604,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,605,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,606,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,607,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,608,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
	MapBoolFloat          map[bool]float32               `protobuf:"bytes,609,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,610,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,611,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
	MapBoolDouble         map[bool]float64               `protobuf:"bytes,612,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
	MapBoolString         map[bool]string                `protobuf:"bytes,613,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,614,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,615,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180814.Message_ChildEnum"`
	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,616,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	MapBoolNamedGroup     map[bool]*Message_NamedGroup   `protobuf:"bytes,617,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,618,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180814.SiblingEnum"`
	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,619,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,620,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,621,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,622,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,623,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,624,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,625,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,626,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	MapStringBool         map[string]bool                `protobuf:"bytes,627,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	// Oneof fields.
	//
	// Types that are valid to be assigned to OneofUnion:
	//	*Message_OneofBool
	//	*Message_OneofInt32
	//	*Message_OneofSint32
	//	*Message_OneofUint32
	//	*Message_OneofInt64
	//	*Message_OneofSint64
	//	*Message_OneofUint64
	//	*Message_OneofFixed32
	//	*Message_OneofSfixed32
	//	*Message_OneofFloat
	//	*Message_OneofFixed64
	//	*Message_OneofSfixed64
	//	*Message_OneofDouble
	//	*Message_OneofString
	//	*Message_OneofBytes
	//	*Message_OneofChildEnum
	//	*Message_OneofChildMessage
	//	*Message_OneofNamedGroup
	//	*Message_OneofSiblingEnum
	//	*Message_OneofSiblingMessage
	//	*Message_Oneofgroup
	//	*Message_OneofString1
	//	*Message_OneofString2
	//	*Message_OneofString3
	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
	// Oneof default fields.
	//
	// Types that are valid to be assigned to OneofDefaultedUnion:
	//	*Message_OneofDefaultedBool
	//	*Message_OneofDefaultedInt32
	//	*Message_OneofDefaultedSint32
	//	*Message_OneofDefaultedUint32
	//	*Message_OneofDefaultedInt64
	//	*Message_OneofDefaultedSint64
	//	*Message_OneofDefaultedUint64
	//	*Message_OneofDefaultedFixed32
	//	*Message_OneofDefaultedSfixed32
	//	*Message_OneofDefaultedFloat
	//	*Message_OneofDefaultedFixed64
	//	*Message_OneofDefaultedSfixed64
	//	*Message_OneofDefaultedDouble
	//	*Message_OneofDefaultedString
	//	*Message_OneofDefaultedBytes
	//	*Message_OneofDefaultedChildEnum
	//	*Message_OneofDefaultedSiblingEnum
	OneofDefaultedUnion          isMessage_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
	XXX_NoUnkeyedLiteral         struct{}                      `json:"-"`
	proto.XXX_InternalExtensions `json:"-"`
	XXX_unrecognized             []byte `json:"-"`
	XXX_sizecache                int32  `json:"-"`
}

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

var extRange_Message = []proto.ExtensionRange{
	{Start: 10000, End: 536870911},
}

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

var xxx_messageInfo_Message proto.InternalMessageInfo

const Default_Message_DefaultedBool bool = true
const Default_Message_DefaultedInt32 int32 = -12345
const Default_Message_DefaultedSint32 int32 = -3200
const Default_Message_DefaultedUint32 uint32 = 3200
const Default_Message_DefaultedInt64 int64 = -123456789
const Default_Message_DefaultedSint64 int64 = -6400
const Default_Message_DefaultedUint64 uint64 = 6400
const Default_Message_DefaultedFixed32 uint32 = 320000
const Default_Message_DefaultedSfixed32 int32 = -320000
const Default_Message_DefaultedFloat float32 = 3.14159
const Default_Message_DefaultedFixed64 uint64 = 640000
const Default_Message_DefaultedSfixed64 int64 = -640000
const Default_Message_DefaultedDouble float64 = 3.14159265359
const Default_Message_DefaultedString string = "hello, \"world!\"\n"

var Default_Message_DefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")

const Default_Message_DefaultedChildEnum Message_ChildEnum = Message_ALPHA
const Default_Message_DefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
const Default_Message_RequiredDefaultedBool bool = true
const Default_Message_RequiredDefaultedInt32 int32 = -12345
const Default_Message_RequiredDefaultedSint32 int32 = -3200
const Default_Message_RequiredDefaultedUint32 uint32 = 3200
const Default_Message_RequiredDefaultedInt64 int64 = -123456789
const Default_Message_RequiredDefaultedSint64 int64 = -6400
const Default_Message_RequiredDefaultedUint64 uint64 = 6400
const Default_Message_RequiredDefaultedFixed32 uint32 = 320000
const Default_Message_RequiredDefaultedSfixed32 int32 = -320000
const Default_Message_RequiredDefaultedFloat float32 = 3.14159
const Default_Message_RequiredDefaultedFixed64 uint64 = 640000
const Default_Message_RequiredDefaultedSfixed64 int64 = -640000
const Default_Message_RequiredDefaultedDouble float64 = 3.14159265359
const Default_Message_RequiredDefaultedString string = "hello, \"world!\"\n"

var Default_Message_RequiredDefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")

const Default_Message_RequiredDefaultedChildEnum Message_ChildEnum = Message_ALPHA
const Default_Message_RequiredDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
const Default_Message_OneofDefaultedBool bool = true
const Default_Message_OneofDefaultedInt32 int32 = -12345
const Default_Message_OneofDefaultedSint32 int32 = -3200
const Default_Message_OneofDefaultedUint32 uint32 = 3200
const Default_Message_OneofDefaultedInt64 int64 = -123456789
const Default_Message_OneofDefaultedSint64 int64 = -6400
const Default_Message_OneofDefaultedUint64 uint64 = 6400
const Default_Message_OneofDefaultedFixed32 uint32 = 320000
const Default_Message_OneofDefaultedSfixed32 int32 = -320000
const Default_Message_OneofDefaultedFloat float32 = 3.14159
const Default_Message_OneofDefaultedFixed64 uint64 = 640000
const Default_Message_OneofDefaultedSfixed64 int64 = -640000
const Default_Message_OneofDefaultedDouble float64 = 3.14159265359
const Default_Message_OneofDefaultedString string = "hello, \"world!\"\n"

var Default_Message_OneofDefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")

const Default_Message_OneofDefaultedChildEnum Message_ChildEnum = Message_ALPHA
const Default_Message_OneofDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA

func (m *Message) GetNamedgroup() *Message_NamedGroup {
	if m != nil {
		return m.Namedgroup
	}
	return nil
}

func (m *Message) GetOptionalBool() bool {
	if m != nil && m.OptionalBool != nil {
		return *m.OptionalBool
	}
	return false
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
	if m != nil && m.OptionalChildEnum != nil {
		return *m.OptionalChildEnum
	}
	return Message_ALPHA
}

func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
	if m != nil {
		return m.OptionalChildMessage
	}
	return nil
}

func (m *Message) GetOptionalNamedGroup() *Message_NamedGroup {
	if m != nil {
		return m.OptionalNamedGroup
	}
	return nil
}

func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
	if m != nil && m.OptionalSiblingEnum != nil {
		return *m.OptionalSiblingEnum
	}
	return SiblingEnum_ALPHA
}

func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
	if m != nil {
		return m.OptionalSiblingMessage
	}
	return nil
}

func (m *Message) GetOptionalgroup() *Message_OptionalGroup {
	if m != nil {
		return m.Optionalgroup
	}
	return nil
}

func (m *Message) GetDefaultedBool() bool {
	if m != nil && m.DefaultedBool != nil {
		return *m.DefaultedBool
	}
	return Default_Message_DefaultedBool
}

func (m *Message) GetDefaultedInt32() int32 {
	if m != nil && m.DefaultedInt32 != nil {
		return *m.DefaultedInt32
	}
	return Default_Message_DefaultedInt32
}

func (m *Message) GetDefaultedSint32() int32 {
	if m != nil && m.DefaultedSint32 != nil {
		return *m.DefaultedSint32
	}
	return Default_Message_DefaultedSint32
}

func (m *Message) GetDefaultedUint32() uint32 {
	if m != nil && m.DefaultedUint32 != nil {
		return *m.DefaultedUint32
	}
	return Default_Message_DefaultedUint32
}

func (m *Message) GetDefaultedInt64() int64 {
	if m != nil && m.DefaultedInt64 != nil {
		return *m.DefaultedInt64
	}
	return Default_Message_DefaultedInt64
}

func (m *Message) GetDefaultedSint64() int64 {
	if m != nil && m.DefaultedSint64 != nil {
		return *m.DefaultedSint64
	}
	return Default_Message_DefaultedSint64
}

func (m *Message) GetDefaultedUint64() uint64 {
	if m != nil && m.DefaultedUint64 != nil {
		return *m.DefaultedUint64
	}
	return Default_Message_DefaultedUint64
}

func (m *Message) GetDefaultedFixed32() uint32 {
	if m != nil && m.DefaultedFixed32 != nil {
		return *m.DefaultedFixed32
	}
	return Default_Message_DefaultedFixed32
}

func (m *Message) GetDefaultedSfixed32() int32 {
	if m != nil && m.DefaultedSfixed32 != nil {
		return *m.DefaultedSfixed32
	}
	return Default_Message_DefaultedSfixed32
}

func (m *Message) GetDefaultedFloat() float32 {
	if m != nil && m.DefaultedFloat != nil {
		return *m.DefaultedFloat
	}
	return Default_Message_DefaultedFloat
}

func (m *Message) GetDefaultedFixed64() uint64 {
	if m != nil && m.DefaultedFixed64 != nil {
		return *m.DefaultedFixed64
	}
	return Default_Message_DefaultedFixed64
}

func (m *Message) GetDefaultedSfixed64() int64 {
	if m != nil && m.DefaultedSfixed64 != nil {
		return *m.DefaultedSfixed64
	}
	return Default_Message_DefaultedSfixed64
}

func (m *Message) GetDefaultedDouble() float64 {
	if m != nil && m.DefaultedDouble != nil {
		return *m.DefaultedDouble
	}
	return Default_Message_DefaultedDouble
}

func (m *Message) GetDefaultedString() string {
	if m != nil && m.DefaultedString != nil {
		return *m.DefaultedString
	}
	return Default_Message_DefaultedString
}

func (m *Message) GetDefaultedBytes() []byte {
	if m != nil && m.DefaultedBytes != nil {
		return m.DefaultedBytes
	}
	return append([]byte(nil), Default_Message_DefaultedBytes...)
}

func (m *Message) GetDefaultedChildEnum() Message_ChildEnum {
	if m != nil && m.DefaultedChildEnum != nil {
		return *m.DefaultedChildEnum
	}
	return Default_Message_DefaultedChildEnum
}

func (m *Message) GetDefaultedSiblingEnum() SiblingEnum {
	if m != nil && m.DefaultedSiblingEnum != nil {
		return *m.DefaultedSiblingEnum
	}
	return Default_Message_DefaultedSiblingEnum
}

func (m *Message) GetRequiredBool() bool {
	if m != nil && m.RequiredBool != nil {
		return *m.RequiredBool
	}
	return false
}

func (m *Message) GetRequiredInt32() int32 {
	if m != nil && m.RequiredInt32 != nil {
		return *m.RequiredInt32
	}
	return 0
}

func (m *Message) GetRequiredSint32() int32 {
	if m != nil && m.RequiredSint32 != nil {
		return *m.RequiredSint32
	}
	return 0
}

func (m *Message) GetRequiredUint32() uint32 {
	if m != nil && m.RequiredUint32 != nil {
		return *m.RequiredUint32
	}
	return 0
}

func (m *Message) GetRequiredInt64() int64 {
	if m != nil && m.RequiredInt64 != nil {
		return *m.RequiredInt64
	}
	return 0
}

func (m *Message) GetRequiredSint64() int64 {
	if m != nil && m.RequiredSint64 != nil {
		return *m.RequiredSint64
	}
	return 0
}

func (m *Message) GetRequiredUint64() uint64 {
	if m != nil && m.RequiredUint64 != nil {
		return *m.RequiredUint64
	}
	return 0
}

func (m *Message) GetRequiredFixed32() uint32 {
	if m != nil && m.RequiredFixed32 != nil {
		return *m.RequiredFixed32
	}
	return 0
}

func (m *Message) GetRequiredSfixed32() int32 {
	if m != nil && m.RequiredSfixed32 != nil {
		return *m.RequiredSfixed32
	}
	return 0
}

func (m *Message) GetRequiredFloat() float32 {
	if m != nil && m.RequiredFloat != nil {
		return *m.RequiredFloat
	}
	return 0
}

func (m *Message) GetRequiredFixed64() uint64 {
	if m != nil && m.RequiredFixed64 != nil {
		return *m.RequiredFixed64
	}
	return 0
}

func (m *Message) GetRequiredSfixed64() int64 {
	if m != nil && m.RequiredSfixed64 != nil {
		return *m.RequiredSfixed64
	}
	return 0
}

func (m *Message) GetRequiredDouble() float64 {
	if m != nil && m.RequiredDouble != nil {
		return *m.RequiredDouble
	}
	return 0
}

func (m *Message) GetRequiredString() string {
	if m != nil && m.RequiredString != nil {
		return *m.RequiredString
	}
	return ""
}

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

func (m *Message) GetRequiredChildEnum() Message_ChildEnum {
	if m != nil && m.RequiredChildEnum != nil {
		return *m.RequiredChildEnum
	}
	return Message_ALPHA
}

func (m *Message) GetRequiredChildMessage() *Message_ChildMessage {
	if m != nil {
		return m.RequiredChildMessage
	}
	return nil
}

func (m *Message) GetRequiredNamedGroup() *Message_NamedGroup {
	if m != nil {
		return m.RequiredNamedGroup
	}
	return nil
}

func (m *Message) GetRequiredSiblingEnum() SiblingEnum {
	if m != nil && m.RequiredSiblingEnum != nil {
		return *m.RequiredSiblingEnum
	}
	return SiblingEnum_ALPHA
}

func (m *Message) GetRequiredSiblingMessage() *SiblingMessage {
	if m != nil {
		return m.RequiredSiblingMessage
	}
	return nil
}

func (m *Message) GetRequiredgroup() *Message_RequiredGroup {
	if m != nil {
		return m.Requiredgroup
	}
	return nil
}

func (m *Message) GetRequiredDefaultedBool() bool {
	if m != nil && m.RequiredDefaultedBool != nil {
		return *m.RequiredDefaultedBool
	}
	return Default_Message_RequiredDefaultedBool
}

func (m *Message) GetRequiredDefaultedInt32() int32 {
	if m != nil && m.RequiredDefaultedInt32 != nil {
		return *m.RequiredDefaultedInt32
	}
	return Default_Message_RequiredDefaultedInt32
}

func (m *Message) GetRequiredDefaultedSint32() int32 {
	if m != nil && m.RequiredDefaultedSint32 != nil {
		return *m.RequiredDefaultedSint32
	}
	return Default_Message_RequiredDefaultedSint32
}

func (m *Message) GetRequiredDefaultedUint32() uint32 {
	if m != nil && m.RequiredDefaultedUint32 != nil {
		return *m.RequiredDefaultedUint32
	}
	return Default_Message_RequiredDefaultedUint32
}

func (m *Message) GetRequiredDefaultedInt64() int64 {
	if m != nil && m.RequiredDefaultedInt64 != nil {
		return *m.RequiredDefaultedInt64
	}
	return Default_Message_RequiredDefaultedInt64
}

func (m *Message) GetRequiredDefaultedSint64() int64 {
	if m != nil && m.RequiredDefaultedSint64 != nil {
		return *m.RequiredDefaultedSint64
	}
	return Default_Message_RequiredDefaultedSint64
}

func (m *Message) GetRequiredDefaultedUint64() uint64 {
	if m != nil && m.RequiredDefaultedUint64 != nil {
		return *m.RequiredDefaultedUint64
	}
	return Default_Message_RequiredDefaultedUint64
}

func (m *Message) GetRequiredDefaultedFixed32() uint32 {
	if m != nil && m.RequiredDefaultedFixed32 != nil {
		return *m.RequiredDefaultedFixed32
	}
	return Default_Message_RequiredDefaultedFixed32
}

func (m *Message) GetRequiredDefaultedSfixed32() int32 {
	if m != nil && m.RequiredDefaultedSfixed32 != nil {
		return *m.RequiredDefaultedSfixed32
	}
	return Default_Message_RequiredDefaultedSfixed32
}

func (m *Message) GetRequiredDefaultedFloat() float32 {
	if m != nil && m.RequiredDefaultedFloat != nil {
		return *m.RequiredDefaultedFloat
	}
	return Default_Message_RequiredDefaultedFloat
}

func (m *Message) GetRequiredDefaultedFixed64() uint64 {
	if m != nil && m.RequiredDefaultedFixed64 != nil {
		return *m.RequiredDefaultedFixed64
	}
	return Default_Message_RequiredDefaultedFixed64
}

func (m *Message) GetRequiredDefaultedSfixed64() int64 {
	if m != nil && m.RequiredDefaultedSfixed64 != nil {
		return *m.RequiredDefaultedSfixed64
	}
	return Default_Message_RequiredDefaultedSfixed64
}

func (m *Message) GetRequiredDefaultedDouble() float64 {
	if m != nil && m.RequiredDefaultedDouble != nil {
		return *m.RequiredDefaultedDouble
	}
	return Default_Message_RequiredDefaultedDouble
}

func (m *Message) GetRequiredDefaultedString() string {
	if m != nil && m.RequiredDefaultedString != nil {
		return *m.RequiredDefaultedString
	}
	return Default_Message_RequiredDefaultedString
}

func (m *Message) GetRequiredDefaultedBytes() []byte {
	if m != nil && m.RequiredDefaultedBytes != nil {
		return m.RequiredDefaultedBytes
	}
	return append([]byte(nil), Default_Message_RequiredDefaultedBytes...)
}

func (m *Message) GetRequiredDefaultedChildEnum() Message_ChildEnum {
	if m != nil && m.RequiredDefaultedChildEnum != nil {
		return *m.RequiredDefaultedChildEnum
	}
	return Default_Message_RequiredDefaultedChildEnum
}

func (m *Message) GetRequiredDefaultedSiblingEnum() SiblingEnum {
	if m != nil && m.RequiredDefaultedSiblingEnum != nil {
		return *m.RequiredDefaultedSiblingEnum
	}
	return Default_Message_RequiredDefaultedSiblingEnum
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
	if m != nil {
		return m.RepeatedChildEnum
	}
	return nil
}

func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
	if m != nil {
		return m.RepeatedChildMessage
	}
	return nil
}

func (m *Message) GetRepeatedNamedGroup() []*Message_NamedGroup {
	if m != nil {
		return m.RepeatedNamedGroup
	}
	return nil
}

func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
	if m != nil {
		return m.RepeatedSiblingEnum
	}
	return nil
}

func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
	if m != nil {
		return m.RepeatedSiblingMessage
	}
	return nil
}

func (m *Message) GetRepeatedgroup() []*Message_RepeatedGroup {
	if m != nil {
		return m.Repeatedgroup
	}
	return nil
}

func (m *Message) GetMapBoolBool() map[bool]bool {
	if m != nil {
		return m.MapBoolBool
	}
	return nil
}

func (m *Message) GetMapBoolInt32() map[bool]int32 {
	if m != nil {
		return m.MapBoolInt32
	}
	return nil
}

func (m *Message) GetMapBoolSint32() map[bool]int32 {
	if m != nil {
		return m.MapBoolSint32
	}
	return nil
}

func (m *Message) GetMapBoolUint32() map[bool]uint32 {
	if m != nil {
		return m.MapBoolUint32
	}
	return nil
}

func (m *Message) GetMapBoolInt64() map[bool]int64 {
	if m != nil {
		return m.MapBoolInt64
	}
	return nil
}

func (m *Message) GetMapBoolSint64() map[bool]int64 {
	if m != nil {
		return m.MapBoolSint64
	}
	return nil
}

func (m *Message) GetMapBoolUint64() map[bool]uint64 {
	if m != nil {
		return m.MapBoolUint64
	}
	return nil
}

func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
	if m != nil {
		return m.MapBoolFixed32
	}
	return nil
}

func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
	if m != nil {
		return m.MapBoolSfixed32
	}
	return nil
}

func (m *Message) GetMapBoolFloat() map[bool]float32 {
	if m != nil {
		return m.MapBoolFloat
	}
	return nil
}

func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
	if m != nil {
		return m.MapBoolFixed64
	}
	return nil
}

func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
	if m != nil {
		return m.MapBoolSfixed64
	}
	return nil
}

func (m *Message) GetMapBoolDouble() map[bool]float64 {
	if m != nil {
		return m.MapBoolDouble
	}
	return nil
}

func (m *Message) GetMapBoolString() map[bool]string {
	if m != nil {
		return m.MapBoolString
	}
	return nil
}

func (m *Message) GetMapBoolBytes() map[bool][]byte {
	if m != nil {
		return m.MapBoolBytes
	}
	return nil
}

func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
	if m != nil {
		return m.MapBoolChildEnum
	}
	return nil
}

func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
	if m != nil {
		return m.MapBoolChildMessage
	}
	return nil
}

func (m *Message) GetMapBoolNamedGroup() map[bool]*Message_NamedGroup {
	if m != nil {
		return m.MapBoolNamedGroup
	}
	return nil
}

func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
	if m != nil {
		return m.MapBoolSiblingEnum
	}
	return nil
}

func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
	if m != nil {
		return m.MapBoolSiblingMessage
	}
	return nil
}

func (m *Message) GetMapInt32Bool() map[int32]bool {
	if m != nil {
		return m.MapInt32Bool
	}
	return nil
}

func (m *Message) GetMapSint32Bool() map[int32]bool {
	if m != nil {
		return m.MapSint32Bool
	}
	return nil
}

func (m *Message) GetMapUint32Bool() map[uint32]bool {
	if m != nil {
		return m.MapUint32Bool
	}
	return nil
}

func (m *Message) GetMapInt64Bool() map[int64]bool {
	if m != nil {
		return m.MapInt64Bool
	}
	return nil
}

func (m *Message) GetMapSint64Bool() map[int64]bool {
	if m != nil {
		return m.MapSint64Bool
	}
	return nil
}

func (m *Message) GetMapUint64Bool() map[uint64]bool {
	if m != nil {
		return m.MapUint64Bool
	}
	return nil
}

func (m *Message) GetMapFixed32Bool() map[uint32]bool {
	if m != nil {
		return m.MapFixed32Bool
	}
	return nil
}

func (m *Message) GetMapStringBool() map[string]bool {
	if m != nil {
		return m.MapStringBool
	}
	return nil
}

type isMessage_OneofUnion interface {
	isMessage_OneofUnion()
}

type Message_OneofBool struct {
	OneofBool bool `protobuf:"varint,700,opt,name=oneof_bool,json=oneofBool,oneof"`
}

type Message_OneofInt32 struct {
	OneofInt32 int32 `protobuf:"varint,701,opt,name=oneof_int32,json=oneofInt32,oneof"`
}

type Message_OneofSint32 struct {
	OneofSint32 int32 `protobuf:"zigzag32,702,opt,name=oneof_sint32,json=oneofSint32,oneof"`
}

type Message_OneofUint32 struct {
	OneofUint32 uint32 `protobuf:"varint,703,opt,name=oneof_uint32,json=oneofUint32,oneof"`
}

type Message_OneofInt64 struct {
	OneofInt64 int64 `protobuf:"varint,704,opt,name=oneof_int64,json=oneofInt64,oneof"`
}

type Message_OneofSint64 struct {
	OneofSint64 int64 `protobuf:"zigzag64,705,opt,name=oneof_sint64,json=oneofSint64,oneof"`
}

type Message_OneofUint64 struct {
	OneofUint64 uint64 `protobuf:"varint,706,opt,name=oneof_uint64,json=oneofUint64,oneof"`
}

type Message_OneofFixed32 struct {
	OneofFixed32 uint32 `protobuf:"fixed32,707,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
}

type Message_OneofSfixed32 struct {
	OneofSfixed32 int32 `protobuf:"fixed32,708,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
}

type Message_OneofFloat struct {
	OneofFloat float32 `protobuf:"fixed32,709,opt,name=oneof_float,json=oneofFloat,oneof"`
}

type Message_OneofFixed64 struct {
	OneofFixed64 uint64 `protobuf:"fixed64,710,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
}

type Message_OneofSfixed64 struct {
	OneofSfixed64 int64 `protobuf:"fixed64,711,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
}

type Message_OneofDouble struct {
	OneofDouble float64 `protobuf:"fixed64,712,opt,name=oneof_double,json=oneofDouble,oneof"`
}

type Message_OneofString struct {
	OneofString string `protobuf:"bytes,713,opt,name=oneof_string,json=oneofString,oneof"`
}

type Message_OneofBytes struct {
	OneofBytes []byte `protobuf:"bytes,714,opt,name=oneof_bytes,json=oneofBytes,oneof"`
}

type Message_OneofChildEnum struct {
	OneofChildEnum Message_ChildEnum `protobuf:"varint,715,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,oneof"`
}

type Message_OneofChildMessage struct {
	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,716,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
}

type Message_OneofNamedGroup struct {
	OneofNamedGroup *Message_NamedGroup `protobuf:"bytes,717,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
}

type Message_OneofSiblingEnum struct {
	OneofSiblingEnum SiblingEnum `protobuf:"varint,718,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,oneof"`
}

type Message_OneofSiblingMessage struct {
	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,719,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
}

type Message_Oneofgroup struct {
	Oneofgroup *Message_OneofGroup `protobuf:"group,720,opt,name=OneofGroup,json=oneofgroup,oneof"`
}

type Message_OneofString1 struct {
	OneofString1 string `protobuf:"bytes,721,opt,name=oneof_string1,json=oneofString1,oneof"`
}

type Message_OneofString2 struct {
	OneofString2 string `protobuf:"bytes,722,opt,name=oneof_string2,json=oneofString2,oneof"`
}

type Message_OneofString3 struct {
	OneofString3 string `protobuf:"bytes,723,opt,name=oneof_string3,json=oneofString3,oneof"`
}

func (*Message_OneofBool) isMessage_OneofUnion() {}

func (*Message_OneofInt32) isMessage_OneofUnion() {}

func (*Message_OneofSint32) isMessage_OneofUnion() {}

func (*Message_OneofUint32) isMessage_OneofUnion() {}

func (*Message_OneofInt64) isMessage_OneofUnion() {}

func (*Message_OneofSint64) isMessage_OneofUnion() {}

func (*Message_OneofUint64) isMessage_OneofUnion() {}

func (*Message_OneofFixed32) isMessage_OneofUnion() {}

func (*Message_OneofSfixed32) isMessage_OneofUnion() {}

func (*Message_OneofFloat) isMessage_OneofUnion() {}

func (*Message_OneofFixed64) isMessage_OneofUnion() {}

func (*Message_OneofSfixed64) isMessage_OneofUnion() {}

func (*Message_OneofDouble) isMessage_OneofUnion() {}

func (*Message_OneofString) isMessage_OneofUnion() {}

func (*Message_OneofBytes) isMessage_OneofUnion() {}

func (*Message_OneofChildEnum) isMessage_OneofUnion() {}

func (*Message_OneofChildMessage) isMessage_OneofUnion() {}

func (*Message_OneofNamedGroup) isMessage_OneofUnion() {}

func (*Message_OneofSiblingEnum) isMessage_OneofUnion() {}

func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}

func (*Message_Oneofgroup) isMessage_OneofUnion() {}

func (*Message_OneofString1) isMessage_OneofUnion() {}

func (*Message_OneofString2) isMessage_OneofUnion() {}

func (*Message_OneofString3) isMessage_OneofUnion() {}

func (m *Message) GetOneofUnion() isMessage_OneofUnion {
	if m != nil {
		return m.OneofUnion
	}
	return nil
}

func (m *Message) GetOneofBool() bool {
	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
		return x.OneofBool
	}
	return false
}

func (m *Message) GetOneofInt32() int32 {
	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
		return x.OneofInt32
	}
	return 0
}

func (m *Message) GetOneofSint32() int32 {
	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
		return x.OneofSint32
	}
	return 0
}

func (m *Message) GetOneofUint32() uint32 {
	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
		return x.OneofUint32
	}
	return 0
}

func (m *Message) GetOneofInt64() int64 {
	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
		return x.OneofInt64
	}
	return 0
}

func (m *Message) GetOneofSint64() int64 {
	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
		return x.OneofSint64
	}
	return 0
}

func (m *Message) GetOneofUint64() uint64 {
	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
		return x.OneofUint64
	}
	return 0
}

func (m *Message) GetOneofFixed32() uint32 {
	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
		return x.OneofFixed32
	}
	return 0
}

func (m *Message) GetOneofSfixed32() int32 {
	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
		return x.OneofSfixed32
	}
	return 0
}

func (m *Message) GetOneofFloat() float32 {
	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
		return x.OneofFloat
	}
	return 0
}

func (m *Message) GetOneofFixed64() uint64 {
	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
		return x.OneofFixed64
	}
	return 0
}

func (m *Message) GetOneofSfixed64() int64 {
	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
		return x.OneofSfixed64
	}
	return 0
}

func (m *Message) GetOneofDouble() float64 {
	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
		return x.OneofDouble
	}
	return 0
}

func (m *Message) GetOneofString() string {
	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
		return x.OneofString
	}
	return ""
}

func (m *Message) GetOneofBytes() []byte {
	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
		return x.OneofBytes
	}
	return nil
}

func (m *Message) GetOneofChildEnum() Message_ChildEnum {
	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
		return x.OneofChildEnum
	}
	return Message_ALPHA
}

func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
		return x.OneofChildMessage
	}
	return nil
}

func (m *Message) GetOneofNamedGroup() *Message_NamedGroup {
	if x, ok := m.GetOneofUnion().(*Message_OneofNamedGroup); ok {
		return x.OneofNamedGroup
	}
	return nil
}

func (m *Message) GetOneofSiblingEnum() SiblingEnum {
	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
		return x.OneofSiblingEnum
	}
	return SiblingEnum_ALPHA
}

func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
		return x.OneofSiblingMessage
	}
	return nil
}

func (m *Message) GetOneofgroup() *Message_OneofGroup {
	if x, ok := m.GetOneofUnion().(*Message_Oneofgroup); ok {
		return x.Oneofgroup
	}
	return nil
}

func (m *Message) GetOneofString1() string {
	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
		return x.OneofString1
	}
	return ""
}

func (m *Message) GetOneofString2() string {
	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
		return x.OneofString2
	}
	return ""
}

func (m *Message) GetOneofString3() string {
	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
		return x.OneofString3
	}
	return ""
}

type isMessage_OneofDefaultedUnion interface {
	isMessage_OneofDefaultedUnion()
}

type Message_OneofDefaultedBool struct {
	OneofDefaultedBool bool `protobuf:"varint,800,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
}

type Message_OneofDefaultedInt32 struct {
	OneofDefaultedInt32 int32 `protobuf:"varint,801,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
}

type Message_OneofDefaultedSint32 struct {
	OneofDefaultedSint32 int32 `protobuf:"zigzag32,802,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
}

type Message_OneofDefaultedUint32 struct {
	OneofDefaultedUint32 uint32 `protobuf:"varint,803,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
}

type Message_OneofDefaultedInt64 struct {
	OneofDefaultedInt64 int64 `protobuf:"varint,804,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
}

type Message_OneofDefaultedSint64 struct {
	OneofDefaultedSint64 int64 `protobuf:"zigzag64,805,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
}

type Message_OneofDefaultedUint64 struct {
	OneofDefaultedUint64 uint64 `protobuf:"varint,806,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
}

type Message_OneofDefaultedFixed32 struct {
	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,807,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
}

type Message_OneofDefaultedSfixed32 struct {
	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,808,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
}

type Message_OneofDefaultedFloat struct {
	OneofDefaultedFloat float32 `protobuf:"fixed32,809,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
}

type Message_OneofDefaultedFixed64 struct {
	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,810,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
}

type Message_OneofDefaultedSfixed64 struct {
	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,811,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
}

type Message_OneofDefaultedDouble struct {
	OneofDefaultedDouble float64 `protobuf:"fixed64,812,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
}

type Message_OneofDefaultedString struct {
	OneofDefaultedString string `protobuf:"bytes,813,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
}

type Message_OneofDefaultedBytes struct {
	OneofDefaultedBytes []byte `protobuf:"bytes,814,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
}

type Message_OneofDefaultedChildEnum struct {
	OneofDefaultedChildEnum Message_ChildEnum `protobuf:"varint,815,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,oneof,def=0"`
}

type Message_OneofDefaultedSiblingEnum struct {
	OneofDefaultedSiblingEnum SiblingEnum `protobuf:"varint,816,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,oneof,def=0"`
}

func (*Message_OneofDefaultedBool) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedInt32) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedSint32) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedUint32) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedInt64) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedSint64) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedUint64) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedFixed32) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedSfixed32) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedFloat) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedFixed64) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedSfixed64) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedDouble) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedString) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedBytes) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedChildEnum) isMessage_OneofDefaultedUnion() {}

func (*Message_OneofDefaultedSiblingEnum) isMessage_OneofDefaultedUnion() {}

func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
	if m != nil {
		return m.OneofDefaultedUnion
	}
	return nil
}

func (m *Message) GetOneofDefaultedBool() bool {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBool); ok {
		return x.OneofDefaultedBool
	}
	return Default_Message_OneofDefaultedBool
}

func (m *Message) GetOneofDefaultedInt32() int32 {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt32); ok {
		return x.OneofDefaultedInt32
	}
	return Default_Message_OneofDefaultedInt32
}

func (m *Message) GetOneofDefaultedSint32() int32 {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint32); ok {
		return x.OneofDefaultedSint32
	}
	return Default_Message_OneofDefaultedSint32
}

func (m *Message) GetOneofDefaultedUint32() uint32 {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint32); ok {
		return x.OneofDefaultedUint32
	}
	return Default_Message_OneofDefaultedUint32
}

func (m *Message) GetOneofDefaultedInt64() int64 {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt64); ok {
		return x.OneofDefaultedInt64
	}
	return Default_Message_OneofDefaultedInt64
}

func (m *Message) GetOneofDefaultedSint64() int64 {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint64); ok {
		return x.OneofDefaultedSint64
	}
	return Default_Message_OneofDefaultedSint64
}

func (m *Message) GetOneofDefaultedUint64() uint64 {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint64); ok {
		return x.OneofDefaultedUint64
	}
	return Default_Message_OneofDefaultedUint64
}

func (m *Message) GetOneofDefaultedFixed32() uint32 {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed32); ok {
		return x.OneofDefaultedFixed32
	}
	return Default_Message_OneofDefaultedFixed32
}

func (m *Message) GetOneofDefaultedSfixed32() int32 {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed32); ok {
		return x.OneofDefaultedSfixed32
	}
	return Default_Message_OneofDefaultedSfixed32
}

func (m *Message) GetOneofDefaultedFloat() float32 {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFloat); ok {
		return x.OneofDefaultedFloat
	}
	return Default_Message_OneofDefaultedFloat
}

func (m *Message) GetOneofDefaultedFixed64() uint64 {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed64); ok {
		return x.OneofDefaultedFixed64
	}
	return Default_Message_OneofDefaultedFixed64
}

func (m *Message) GetOneofDefaultedSfixed64() int64 {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed64); ok {
		return x.OneofDefaultedSfixed64
	}
	return Default_Message_OneofDefaultedSfixed64
}

func (m *Message) GetOneofDefaultedDouble() float64 {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedDouble); ok {
		return x.OneofDefaultedDouble
	}
	return Default_Message_OneofDefaultedDouble
}

func (m *Message) GetOneofDefaultedString() string {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedString); ok {
		return x.OneofDefaultedString
	}
	return Default_Message_OneofDefaultedString
}

func (m *Message) GetOneofDefaultedBytes() []byte {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBytes); ok {
		return x.OneofDefaultedBytes
	}
	return append([]byte(nil), Default_Message_OneofDefaultedBytes...)
}

func (m *Message) GetOneofDefaultedChildEnum() Message_ChildEnum {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedChildEnum); ok {
		return x.OneofDefaultedChildEnum
	}
	return Default_Message_OneofDefaultedChildEnum
}

func (m *Message) GetOneofDefaultedSiblingEnum() SiblingEnum {
	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSiblingEnum); ok {
		return x.OneofDefaultedSiblingEnum
	}
	return Default_Message_OneofDefaultedSiblingEnum
}

// XXX_OneofFuncs is for the internal use of the proto package.
func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
		(*Message_OneofBool)(nil),
		(*Message_OneofInt32)(nil),
		(*Message_OneofSint32)(nil),
		(*Message_OneofUint32)(nil),
		(*Message_OneofInt64)(nil),
		(*Message_OneofSint64)(nil),
		(*Message_OneofUint64)(nil),
		(*Message_OneofFixed32)(nil),
		(*Message_OneofSfixed32)(nil),
		(*Message_OneofFloat)(nil),
		(*Message_OneofFixed64)(nil),
		(*Message_OneofSfixed64)(nil),
		(*Message_OneofDouble)(nil),
		(*Message_OneofString)(nil),
		(*Message_OneofBytes)(nil),
		(*Message_OneofChildEnum)(nil),
		(*Message_OneofChildMessage)(nil),
		(*Message_OneofNamedGroup)(nil),
		(*Message_OneofSiblingEnum)(nil),
		(*Message_OneofSiblingMessage)(nil),
		(*Message_Oneofgroup)(nil),
		(*Message_OneofString1)(nil),
		(*Message_OneofString2)(nil),
		(*Message_OneofString3)(nil),
		(*Message_OneofDefaultedBool)(nil),
		(*Message_OneofDefaultedInt32)(nil),
		(*Message_OneofDefaultedSint32)(nil),
		(*Message_OneofDefaultedUint32)(nil),
		(*Message_OneofDefaultedInt64)(nil),
		(*Message_OneofDefaultedSint64)(nil),
		(*Message_OneofDefaultedUint64)(nil),
		(*Message_OneofDefaultedFixed32)(nil),
		(*Message_OneofDefaultedSfixed32)(nil),
		(*Message_OneofDefaultedFloat)(nil),
		(*Message_OneofDefaultedFixed64)(nil),
		(*Message_OneofDefaultedSfixed64)(nil),
		(*Message_OneofDefaultedDouble)(nil),
		(*Message_OneofDefaultedString)(nil),
		(*Message_OneofDefaultedBytes)(nil),
		(*Message_OneofDefaultedChildEnum)(nil),
		(*Message_OneofDefaultedSiblingEnum)(nil),
	}
}

func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
	m := msg.(*Message)
	// oneof_union
	switch x := m.OneofUnion.(type) {
	case *Message_OneofBool:
		t := uint64(0)
		if x.OneofBool {
			t = 1
		}
		b.EncodeVarint(700<<3 | proto.WireVarint)
		b.EncodeVarint(t)
	case *Message_OneofInt32:
		b.EncodeVarint(701<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.OneofInt32))
	case *Message_OneofSint32:
		b.EncodeVarint(702<<3 | proto.WireVarint)
		b.EncodeZigzag32(uint64(x.OneofSint32))
	case *Message_OneofUint32:
		b.EncodeVarint(703<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.OneofUint32))
	case *Message_OneofInt64:
		b.EncodeVarint(704<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.OneofInt64))
	case *Message_OneofSint64:
		b.EncodeVarint(705<<3 | proto.WireVarint)
		b.EncodeZigzag64(uint64(x.OneofSint64))
	case *Message_OneofUint64:
		b.EncodeVarint(706<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.OneofUint64))
	case *Message_OneofFixed32:
		b.EncodeVarint(707<<3 | proto.WireFixed32)
		b.EncodeFixed32(uint64(x.OneofFixed32))
	case *Message_OneofSfixed32:
		b.EncodeVarint(708<<3 | proto.WireFixed32)
		b.EncodeFixed32(uint64(x.OneofSfixed32))
	case *Message_OneofFloat:
		b.EncodeVarint(709<<3 | proto.WireFixed32)
		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
	case *Message_OneofFixed64:
		b.EncodeVarint(710<<3 | proto.WireFixed64)
		b.EncodeFixed64(uint64(x.OneofFixed64))
	case *Message_OneofSfixed64:
		b.EncodeVarint(711<<3 | proto.WireFixed64)
		b.EncodeFixed64(uint64(x.OneofSfixed64))
	case *Message_OneofDouble:
		b.EncodeVarint(712<<3 | proto.WireFixed64)
		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
	case *Message_OneofString:
		b.EncodeVarint(713<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.OneofString)
	case *Message_OneofBytes:
		b.EncodeVarint(714<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.OneofBytes)
	case *Message_OneofChildEnum:
		b.EncodeVarint(715<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.OneofChildEnum))
	case *Message_OneofChildMessage:
		b.EncodeVarint(716<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
			return err
		}
	case *Message_OneofNamedGroup:
		b.EncodeVarint(717<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.OneofNamedGroup); err != nil {
			return err
		}
	case *Message_OneofSiblingEnum:
		b.EncodeVarint(718<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.OneofSiblingEnum))
	case *Message_OneofSiblingMessage:
		b.EncodeVarint(719<<3 | proto.WireBytes)
		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
			return err
		}
	case *Message_Oneofgroup:
		b.EncodeVarint(720<<3 | proto.WireStartGroup)
		if err := b.Marshal(x.Oneofgroup); err != nil {
			return err
		}
		b.EncodeVarint(720<<3 | proto.WireEndGroup)
	case *Message_OneofString1:
		b.EncodeVarint(721<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.OneofString1)
	case *Message_OneofString2:
		b.EncodeVarint(722<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.OneofString2)
	case *Message_OneofString3:
		b.EncodeVarint(723<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.OneofString3)
	case nil:
	default:
		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
	}
	// oneof_defaulted_union
	switch x := m.OneofDefaultedUnion.(type) {
	case *Message_OneofDefaultedBool:
		t := uint64(0)
		if x.OneofDefaultedBool {
			t = 1
		}
		b.EncodeVarint(800<<3 | proto.WireVarint)
		b.EncodeVarint(t)
	case *Message_OneofDefaultedInt32:
		b.EncodeVarint(801<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.OneofDefaultedInt32))
	case *Message_OneofDefaultedSint32:
		b.EncodeVarint(802<<3 | proto.WireVarint)
		b.EncodeZigzag32(uint64(x.OneofDefaultedSint32))
	case *Message_OneofDefaultedUint32:
		b.EncodeVarint(803<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.OneofDefaultedUint32))
	case *Message_OneofDefaultedInt64:
		b.EncodeVarint(804<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.OneofDefaultedInt64))
	case *Message_OneofDefaultedSint64:
		b.EncodeVarint(805<<3 | proto.WireVarint)
		b.EncodeZigzag64(uint64(x.OneofDefaultedSint64))
	case *Message_OneofDefaultedUint64:
		b.EncodeVarint(806<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.OneofDefaultedUint64))
	case *Message_OneofDefaultedFixed32:
		b.EncodeVarint(807<<3 | proto.WireFixed32)
		b.EncodeFixed32(uint64(x.OneofDefaultedFixed32))
	case *Message_OneofDefaultedSfixed32:
		b.EncodeVarint(808<<3 | proto.WireFixed32)
		b.EncodeFixed32(uint64(x.OneofDefaultedSfixed32))
	case *Message_OneofDefaultedFloat:
		b.EncodeVarint(809<<3 | proto.WireFixed32)
		b.EncodeFixed32(uint64(math.Float32bits(x.OneofDefaultedFloat)))
	case *Message_OneofDefaultedFixed64:
		b.EncodeVarint(810<<3 | proto.WireFixed64)
		b.EncodeFixed64(uint64(x.OneofDefaultedFixed64))
	case *Message_OneofDefaultedSfixed64:
		b.EncodeVarint(811<<3 | proto.WireFixed64)
		b.EncodeFixed64(uint64(x.OneofDefaultedSfixed64))
	case *Message_OneofDefaultedDouble:
		b.EncodeVarint(812<<3 | proto.WireFixed64)
		b.EncodeFixed64(math.Float64bits(x.OneofDefaultedDouble))
	case *Message_OneofDefaultedString:
		b.EncodeVarint(813<<3 | proto.WireBytes)
		b.EncodeStringBytes(x.OneofDefaultedString)
	case *Message_OneofDefaultedBytes:
		b.EncodeVarint(814<<3 | proto.WireBytes)
		b.EncodeRawBytes(x.OneofDefaultedBytes)
	case *Message_OneofDefaultedChildEnum:
		b.EncodeVarint(815<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.OneofDefaultedChildEnum))
	case *Message_OneofDefaultedSiblingEnum:
		b.EncodeVarint(816<<3 | proto.WireVarint)
		b.EncodeVarint(uint64(x.OneofDefaultedSiblingEnum))
	case nil:
	default:
		return fmt.Errorf("Message.OneofDefaultedUnion has unexpected type %T", x)
	}
	return nil
}

func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
	m := msg.(*Message)
	switch tag {
	case 700: // oneof_union.oneof_bool
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofUnion = &Message_OneofBool{x != 0}
		return true, err
	case 701: // oneof_union.oneof_int32
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofUnion = &Message_OneofInt32{int32(x)}
		return true, err
	case 702: // oneof_union.oneof_sint32
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeZigzag32()
		m.OneofUnion = &Message_OneofSint32{int32(x)}
		return true, err
	case 703: // oneof_union.oneof_uint32
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofUnion = &Message_OneofUint32{uint32(x)}
		return true, err
	case 704: // oneof_union.oneof_int64
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofUnion = &Message_OneofInt64{int64(x)}
		return true, err
	case 705: // oneof_union.oneof_sint64
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeZigzag64()
		m.OneofUnion = &Message_OneofSint64{int64(x)}
		return true, err
	case 706: // oneof_union.oneof_uint64
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofUnion = &Message_OneofUint64{x}
		return true, err
	case 707: // oneof_union.oneof_fixed32
		if wire != proto.WireFixed32 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed32()
		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
		return true, err
	case 708: // oneof_union.oneof_sfixed32
		if wire != proto.WireFixed32 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed32()
		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
		return true, err
	case 709: // oneof_union.oneof_float
		if wire != proto.WireFixed32 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed32()
		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
		return true, err
	case 710: // oneof_union.oneof_fixed64
		if wire != proto.WireFixed64 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed64()
		m.OneofUnion = &Message_OneofFixed64{x}
		return true, err
	case 711: // oneof_union.oneof_sfixed64
		if wire != proto.WireFixed64 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed64()
		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
		return true, err
	case 712: // oneof_union.oneof_double
		if wire != proto.WireFixed64 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed64()
		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
		return true, err
	case 713: // oneof_union.oneof_string
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.OneofUnion = &Message_OneofString{x}
		return true, err
	case 714: // oneof_union.oneof_bytes
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.OneofUnion = &Message_OneofBytes{x}
		return true, err
	case 715: // oneof_union.oneof_child_enum
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
		return true, err
	case 716: // oneof_union.oneof_child_message
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(Message_ChildMessage)
		err := b.DecodeMessage(msg)
		m.OneofUnion = &Message_OneofChildMessage{msg}
		return true, err
	case 717: // oneof_union.oneof_named_group
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(Message_NamedGroup)
		err := b.DecodeMessage(msg)
		m.OneofUnion = &Message_OneofNamedGroup{msg}
		return true, err
	case 718: // oneof_union.oneof_sibling_enum
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
		return true, err
	case 719: // oneof_union.oneof_sibling_message
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(SiblingMessage)
		err := b.DecodeMessage(msg)
		m.OneofUnion = &Message_OneofSiblingMessage{msg}
		return true, err
	case 720: // oneof_union.oneofgroup
		if wire != proto.WireStartGroup {
			return true, proto.ErrInternalBadWireType
		}
		msg := new(Message_OneofGroup)
		err := b.DecodeGroup(msg)
		m.OneofUnion = &Message_Oneofgroup{msg}
		return true, err
	case 721: // oneof_union.oneof_string1
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.OneofUnion = &Message_OneofString1{x}
		return true, err
	case 722: // oneof_union.oneof_string2
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.OneofUnion = &Message_OneofString2{x}
		return true, err
	case 723: // oneof_union.oneof_string3
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.OneofUnion = &Message_OneofString3{x}
		return true, err
	case 800: // oneof_defaulted_union.oneof_defaulted_bool
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofDefaultedUnion = &Message_OneofDefaultedBool{x != 0}
		return true, err
	case 801: // oneof_defaulted_union.oneof_defaulted_int32
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofDefaultedUnion = &Message_OneofDefaultedInt32{int32(x)}
		return true, err
	case 802: // oneof_defaulted_union.oneof_defaulted_sint32
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeZigzag32()
		m.OneofDefaultedUnion = &Message_OneofDefaultedSint32{int32(x)}
		return true, err
	case 803: // oneof_defaulted_union.oneof_defaulted_uint32
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofDefaultedUnion = &Message_OneofDefaultedUint32{uint32(x)}
		return true, err
	case 804: // oneof_defaulted_union.oneof_defaulted_int64
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofDefaultedUnion = &Message_OneofDefaultedInt64{int64(x)}
		return true, err
	case 805: // oneof_defaulted_union.oneof_defaulted_sint64
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeZigzag64()
		m.OneofDefaultedUnion = &Message_OneofDefaultedSint64{int64(x)}
		return true, err
	case 806: // oneof_defaulted_union.oneof_defaulted_uint64
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofDefaultedUnion = &Message_OneofDefaultedUint64{x}
		return true, err
	case 807: // oneof_defaulted_union.oneof_defaulted_fixed32
		if wire != proto.WireFixed32 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed32()
		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed32{uint32(x)}
		return true, err
	case 808: // oneof_defaulted_union.oneof_defaulted_sfixed32
		if wire != proto.WireFixed32 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed32()
		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed32{int32(x)}
		return true, err
	case 809: // oneof_defaulted_union.oneof_defaulted_float
		if wire != proto.WireFixed32 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed32()
		m.OneofDefaultedUnion = &Message_OneofDefaultedFloat{math.Float32frombits(uint32(x))}
		return true, err
	case 810: // oneof_defaulted_union.oneof_defaulted_fixed64
		if wire != proto.WireFixed64 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed64()
		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed64{x}
		return true, err
	case 811: // oneof_defaulted_union.oneof_defaulted_sfixed64
		if wire != proto.WireFixed64 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed64()
		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed64{int64(x)}
		return true, err
	case 812: // oneof_defaulted_union.oneof_defaulted_double
		if wire != proto.WireFixed64 {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeFixed64()
		m.OneofDefaultedUnion = &Message_OneofDefaultedDouble{math.Float64frombits(x)}
		return true, err
	case 813: // oneof_defaulted_union.oneof_defaulted_string
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeStringBytes()
		m.OneofDefaultedUnion = &Message_OneofDefaultedString{x}
		return true, err
	case 814: // oneof_defaulted_union.oneof_defaulted_bytes
		if wire != proto.WireBytes {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeRawBytes(true)
		m.OneofDefaultedUnion = &Message_OneofDefaultedBytes{x}
		return true, err
	case 815: // oneof_defaulted_union.oneof_defaulted_child_enum
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofDefaultedUnion = &Message_OneofDefaultedChildEnum{Message_ChildEnum(x)}
		return true, err
	case 816: // oneof_defaulted_union.oneof_defaulted_sibling_enum
		if wire != proto.WireVarint {
			return true, proto.ErrInternalBadWireType
		}
		x, err := b.DecodeVarint()
		m.OneofDefaultedUnion = &Message_OneofDefaultedSiblingEnum{SiblingEnum(x)}
		return true, err
	default:
		return false, nil
	}
}

func _Message_OneofSizer(msg proto.Message) (n int) {
	m := msg.(*Message)
	// oneof_union
	switch x := m.OneofUnion.(type) {
	case *Message_OneofBool:
		n += 2 // tag and wire
		n += 1
	case *Message_OneofInt32:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.OneofInt32))
	case *Message_OneofSint32:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
	case *Message_OneofUint32:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.OneofUint32))
	case *Message_OneofInt64:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.OneofInt64))
	case *Message_OneofSint64:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
	case *Message_OneofUint64:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.OneofUint64))
	case *Message_OneofFixed32:
		n += 2 // tag and wire
		n += 4
	case *Message_OneofSfixed32:
		n += 2 // tag and wire
		n += 4
	case *Message_OneofFloat:
		n += 2 // tag and wire
		n += 4
	case *Message_OneofFixed64:
		n += 2 // tag and wire
		n += 8
	case *Message_OneofSfixed64:
		n += 2 // tag and wire
		n += 8
	case *Message_OneofDouble:
		n += 2 // tag and wire
		n += 8
	case *Message_OneofString:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(len(x.OneofString)))
		n += len(x.OneofString)
	case *Message_OneofBytes:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
		n += len(x.OneofBytes)
	case *Message_OneofChildEnum:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.OneofChildEnum))
	case *Message_OneofChildMessage:
		s := proto.Size(x.OneofChildMessage)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *Message_OneofNamedGroup:
		s := proto.Size(x.OneofNamedGroup)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *Message_OneofSiblingEnum:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
	case *Message_OneofSiblingMessage:
		s := proto.Size(x.OneofSiblingMessage)
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(s))
		n += s
	case *Message_Oneofgroup:
		n += 2 // tag and wire
		n += proto.Size(x.Oneofgroup)
		n += 2 // tag and wire
	case *Message_OneofString1:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(len(x.OneofString1)))
		n += len(x.OneofString1)
	case *Message_OneofString2:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(len(x.OneofString2)))
		n += len(x.OneofString2)
	case *Message_OneofString3:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(len(x.OneofString3)))
		n += len(x.OneofString3)
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	// oneof_defaulted_union
	switch x := m.OneofDefaultedUnion.(type) {
	case *Message_OneofDefaultedBool:
		n += 2 // tag and wire
		n += 1
	case *Message_OneofDefaultedInt32:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.OneofDefaultedInt32))
	case *Message_OneofDefaultedSint32:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64((uint32(x.OneofDefaultedSint32) << 1) ^ uint32((int32(x.OneofDefaultedSint32) >> 31))))
	case *Message_OneofDefaultedUint32:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.OneofDefaultedUint32))
	case *Message_OneofDefaultedInt64:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.OneofDefaultedInt64))
	case *Message_OneofDefaultedSint64:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(uint64(x.OneofDefaultedSint64<<1) ^ uint64((int64(x.OneofDefaultedSint64) >> 63))))
	case *Message_OneofDefaultedUint64:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.OneofDefaultedUint64))
	case *Message_OneofDefaultedFixed32:
		n += 2 // tag and wire
		n += 4
	case *Message_OneofDefaultedSfixed32:
		n += 2 // tag and wire
		n += 4
	case *Message_OneofDefaultedFloat:
		n += 2 // tag and wire
		n += 4
	case *Message_OneofDefaultedFixed64:
		n += 2 // tag and wire
		n += 8
	case *Message_OneofDefaultedSfixed64:
		n += 2 // tag and wire
		n += 8
	case *Message_OneofDefaultedDouble:
		n += 2 // tag and wire
		n += 8
	case *Message_OneofDefaultedString:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(len(x.OneofDefaultedString)))
		n += len(x.OneofDefaultedString)
	case *Message_OneofDefaultedBytes:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(len(x.OneofDefaultedBytes)))
		n += len(x.OneofDefaultedBytes)
	case *Message_OneofDefaultedChildEnum:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.OneofDefaultedChildEnum))
	case *Message_OneofDefaultedSiblingEnum:
		n += 2 // tag and wire
		n += proto.SizeVarint(uint64(x.OneofDefaultedSiblingEnum))
	case nil:
	default:
		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
	}
	return n
}

var E_Message_ExtensionOptionalBool = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*bool)(nil),
	Field:         10000,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_bool",
	Tag:           "varint,10000,opt,name=extension_optional_bool,json=extensionOptionalBool",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalInt32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*int32)(nil),
	Field:         10001,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_int32",
	Tag:           "varint,10001,opt,name=extension_optional_int32,json=extensionOptionalInt32",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalSint32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*int32)(nil),
	Field:         10002,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sint32",
	Tag:           "zigzag32,10002,opt,name=extension_optional_sint32,json=extensionOptionalSint32",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalUint32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*uint32)(nil),
	Field:         10003,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_uint32",
	Tag:           "varint,10003,opt,name=extension_optional_uint32,json=extensionOptionalUint32",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalInt64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*int64)(nil),
	Field:         10004,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_int64",
	Tag:           "varint,10004,opt,name=extension_optional_int64,json=extensionOptionalInt64",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalSint64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*int64)(nil),
	Field:         10005,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sint64",
	Tag:           "zigzag64,10005,opt,name=extension_optional_sint64,json=extensionOptionalSint64",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalUint64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*uint64)(nil),
	Field:         10006,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_uint64",
	Tag:           "varint,10006,opt,name=extension_optional_uint64,json=extensionOptionalUint64",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalFixed32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*uint32)(nil),
	Field:         10007,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_fixed32",
	Tag:           "fixed32,10007,opt,name=extension_optional_fixed32,json=extensionOptionalFixed32",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalSfixed32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*int32)(nil),
	Field:         10008,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sfixed32",
	Tag:           "fixed32,10008,opt,name=extension_optional_sfixed32,json=extensionOptionalSfixed32",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalFloat = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*float32)(nil),
	Field:         10009,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_float",
	Tag:           "fixed32,10009,opt,name=extension_optional_float,json=extensionOptionalFloat",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalFixed64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*uint64)(nil),
	Field:         10010,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_fixed64",
	Tag:           "fixed64,10010,opt,name=extension_optional_fixed64,json=extensionOptionalFixed64",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalSfixed64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*int64)(nil),
	Field:         10011,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sfixed64",
	Tag:           "fixed64,10011,opt,name=extension_optional_sfixed64,json=extensionOptionalSfixed64",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalDouble = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*float64)(nil),
	Field:         10012,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_double",
	Tag:           "fixed64,10012,opt,name=extension_optional_double,json=extensionOptionalDouble",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalString = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*string)(nil),
	Field:         10013,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_string",
	Tag:           "bytes,10013,opt,name=extension_optional_string,json=extensionOptionalString",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalBytes = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]byte)(nil),
	Field:         10014,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_bytes",
	Tag:           "bytes,10014,opt,name=extension_optional_bytes,json=extensionOptionalBytes",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalChildEnum = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*Message_ChildEnum)(nil),
	Field:         10015,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_child_enum",
	Tag:           "varint,10015,opt,name=extension_optional_child_enum,json=extensionOptionalChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalChildMessage = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*Message_ChildMessage)(nil),
	Field:         10016,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_child_message",
	Tag:           "bytes,10016,opt,name=extension_optional_child_message,json=extensionOptionalChildMessage",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalNamedGroup = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*Message_NamedGroup)(nil),
	Field:         10017,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_named_group",
	Tag:           "bytes,10017,opt,name=extension_optional_named_group,json=extensionOptionalNamedGroup",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalSiblingEnum = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*SiblingEnum)(nil),
	Field:         10018,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sibling_enum",
	Tag:           "varint,10018,opt,name=extension_optional_sibling_enum,json=extensionOptionalSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionOptionalSiblingMessage = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*SiblingMessage)(nil),
	Field:         10019,
	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sibling_message",
	Tag:           "bytes,10019,opt,name=extension_optional_sibling_message,json=extensionOptionalSiblingMessage",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_Extensionoptionalgroup = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*Message_ExtensionOptionalGroup)(nil),
	Field:         10020,
	Name:          "google.golang.org.proto2_20180814.Message.extensionoptionalgroup",
	Tag:           "group,10020,opt,name=ExtensionOptionalGroup,json=extensionoptionalgroup",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedBool = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*bool)(nil),
	Field:         20000,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_bool",
	Tag:           "varint,20000,opt,name=extension_defaulted_bool,json=extensionDefaultedBool,def=1",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedInt32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*int32)(nil),
	Field:         20001,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_int32",
	Tag:           "varint,20001,opt,name=extension_defaulted_int32,json=extensionDefaultedInt32,def=-12345",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedSint32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*int32)(nil),
	Field:         20002,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sint32",
	Tag:           "zigzag32,20002,opt,name=extension_defaulted_sint32,json=extensionDefaultedSint32,def=-3200",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedUint32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*uint32)(nil),
	Field:         20003,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_uint32",
	Tag:           "varint,20003,opt,name=extension_defaulted_uint32,json=extensionDefaultedUint32,def=3200",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedInt64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*int64)(nil),
	Field:         20004,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_int64",
	Tag:           "varint,20004,opt,name=extension_defaulted_int64,json=extensionDefaultedInt64,def=-123456789",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedSint64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*int64)(nil),
	Field:         20005,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sint64",
	Tag:           "zigzag64,20005,opt,name=extension_defaulted_sint64,json=extensionDefaultedSint64,def=-6400",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedUint64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*uint64)(nil),
	Field:         20006,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_uint64",
	Tag:           "varint,20006,opt,name=extension_defaulted_uint64,json=extensionDefaultedUint64,def=6400",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedFixed32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*uint32)(nil),
	Field:         20007,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_fixed32",
	Tag:           "fixed32,20007,opt,name=extension_defaulted_fixed32,json=extensionDefaultedFixed32,def=320000",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedSfixed32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*int32)(nil),
	Field:         20008,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sfixed32",
	Tag:           "fixed32,20008,opt,name=extension_defaulted_sfixed32,json=extensionDefaultedSfixed32,def=-320000",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedFloat = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*float32)(nil),
	Field:         20009,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_float",
	Tag:           "fixed32,20009,opt,name=extension_defaulted_float,json=extensionDefaultedFloat,def=3.14159",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedFixed64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*uint64)(nil),
	Field:         20010,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_fixed64",
	Tag:           "fixed64,20010,opt,name=extension_defaulted_fixed64,json=extensionDefaultedFixed64,def=640000",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedSfixed64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*int64)(nil),
	Field:         20011,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sfixed64",
	Tag:           "fixed64,20011,opt,name=extension_defaulted_sfixed64,json=extensionDefaultedSfixed64,def=-640000",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedDouble = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*float64)(nil),
	Field:         20012,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_double",
	Tag:           "fixed64,20012,opt,name=extension_defaulted_double,json=extensionDefaultedDouble,def=3.14159265359",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedString = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*string)(nil),
	Field:         20013,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_string",
	Tag:           "bytes,20013,opt,name=extension_defaulted_string,json=extensionDefaultedString,def=hello, \"world!\"\n",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedBytes = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]byte)(nil),
	Field:         20014,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_bytes",
	Tag:           "bytes,20014,opt,name=extension_defaulted_bytes,json=extensionDefaultedBytes,def=dead\\336\\255\\276\\357beef",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedChildEnum = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*Message_ChildEnum)(nil),
	Field:         20015,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_child_enum",
	Tag:           "varint,20015,opt,name=extension_defaulted_child_enum,json=extensionDefaultedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,def=0",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionDefaultedSiblingEnum = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: (*SiblingEnum)(nil),
	Field:         20016,
	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sibling_enum",
	Tag:           "varint,20016,opt,name=extension_defaulted_sibling_enum,json=extensionDefaultedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,def=0",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedBool = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]bool)(nil),
	Field:         30000,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_bool",
	Tag:           "varint,30000,rep,name=extension_repeated_bool,json=extensionRepeatedBool",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedInt32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]int32)(nil),
	Field:         30001,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_int32",
	Tag:           "varint,30001,rep,name=extension_repeated_int32,json=extensionRepeatedInt32",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedSint32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]int32)(nil),
	Field:         30002,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sint32",
	Tag:           "zigzag32,30002,rep,name=extension_repeated_sint32,json=extensionRepeatedSint32",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedUint32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]uint32)(nil),
	Field:         30003,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_uint32",
	Tag:           "varint,30003,rep,name=extension_repeated_uint32,json=extensionRepeatedUint32",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedInt64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]int64)(nil),
	Field:         30004,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_int64",
	Tag:           "varint,30004,rep,name=extension_repeated_int64,json=extensionRepeatedInt64",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedSint64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]int64)(nil),
	Field:         30005,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sint64",
	Tag:           "zigzag64,30005,rep,name=extension_repeated_sint64,json=extensionRepeatedSint64",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedUint64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]uint64)(nil),
	Field:         30006,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_uint64",
	Tag:           "varint,30006,rep,name=extension_repeated_uint64,json=extensionRepeatedUint64",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedFixed32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]uint32)(nil),
	Field:         30007,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_fixed32",
	Tag:           "fixed32,30007,rep,name=extension_repeated_fixed32,json=extensionRepeatedFixed32",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedSfixed32 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]int32)(nil),
	Field:         30008,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sfixed32",
	Tag:           "fixed32,30008,rep,name=extension_repeated_sfixed32,json=extensionRepeatedSfixed32",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedFloat = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]float32)(nil),
	Field:         30009,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_float",
	Tag:           "fixed32,30009,rep,name=extension_repeated_float,json=extensionRepeatedFloat",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedFixed64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]uint64)(nil),
	Field:         30010,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_fixed64",
	Tag:           "fixed64,30010,rep,name=extension_repeated_fixed64,json=extensionRepeatedFixed64",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedSfixed64 = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]int64)(nil),
	Field:         30011,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sfixed64",
	Tag:           "fixed64,30011,rep,name=extension_repeated_sfixed64,json=extensionRepeatedSfixed64",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedDouble = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]float64)(nil),
	Field:         30012,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_double",
	Tag:           "fixed64,30012,rep,name=extension_repeated_double,json=extensionRepeatedDouble",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedString = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]string)(nil),
	Field:         30013,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_string",
	Tag:           "bytes,30013,rep,name=extension_repeated_string,json=extensionRepeatedString",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedBytes = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([][]byte)(nil),
	Field:         30014,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_bytes",
	Tag:           "bytes,30014,rep,name=extension_repeated_bytes,json=extensionRepeatedBytes",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedChildEnum = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]Message_ChildEnum)(nil),
	Field:         30015,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_child_enum",
	Tag:           "varint,30015,rep,name=extension_repeated_child_enum,json=extensionRepeatedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedChildMessage = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]*Message_ChildMessage)(nil),
	Field:         30016,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_child_message",
	Tag:           "bytes,30016,rep,name=extension_repeated_child_message,json=extensionRepeatedChildMessage",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedNamedGroup = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]*Message_NamedGroup)(nil),
	Field:         30017,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_named_group",
	Tag:           "bytes,30017,rep,name=extension_repeated_named_group,json=extensionRepeatedNamedGroup",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedSiblingEnum = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]SiblingEnum)(nil),
	Field:         30018,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sibling_enum",
	Tag:           "varint,30018,rep,name=extension_repeated_sibling_enum,json=extensionRepeatedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_ExtensionRepeatedSiblingMessage = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]*SiblingMessage)(nil),
	Field:         30019,
	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sibling_message",
	Tag:           "bytes,30019,rep,name=extension_repeated_sibling_message,json=extensionRepeatedSiblingMessage",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
	Field:         30020,
	Name:          "google.golang.org.proto2_20180814.Message.extensionrepeatedgroup",
	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup,json=extensionrepeatedgroup",
	Filename:      "proto2.v1.2.0-20180814-aa810b61/test.proto",
}

type Message_ChildMessage struct {
	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Message_ChildMessage) Reset()         { *m = Message_ChildMessage{} }
func (m *Message_ChildMessage) String() string { return proto.CompactTextString(m) }
func (*Message_ChildMessage) ProtoMessage()    {}
func (*Message_ChildMessage) Descriptor() ([]byte, []int) {
	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 0}
}
func (m *Message_ChildMessage) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Message_ChildMessage.Unmarshal(m, b)
}
func (m *Message_ChildMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Message_ChildMessage.Marshal(b, m, deterministic)
}
func (dst *Message_ChildMessage) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Message_ChildMessage.Merge(dst, src)
}
func (m *Message_ChildMessage) XXX_Size() int {
	return xxx_messageInfo_Message_ChildMessage.Size(m)
}
func (m *Message_ChildMessage) XXX_DiscardUnknown() {
	xxx_messageInfo_Message_ChildMessage.DiscardUnknown(m)
}

var xxx_messageInfo_Message_ChildMessage proto.InternalMessageInfo

func (m *Message_ChildMessage) GetF1() string {
	if m != nil && m.F1 != nil {
		return *m.F1
	}
	return ""
}

func (m *Message_ChildMessage) GetF2() string {
	if m != nil && m.F2 != nil {
		return *m.F2
	}
	return ""
}

func (m *Message_ChildMessage) GetF3() []string {
	if m != nil {
		return m.F3
	}
	return nil
}

func (m *Message_ChildMessage) GetF4() *Message {
	if m != nil {
		return m.F4
	}
	return nil
}

type Message_NamedGroup struct {
	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Message_NamedGroup) Reset()         { *m = Message_NamedGroup{} }
func (m *Message_NamedGroup) String() string { return proto.CompactTextString(m) }
func (*Message_NamedGroup) ProtoMessage()    {}
func (*Message_NamedGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 1}
}
func (m *Message_NamedGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Message_NamedGroup.Unmarshal(m, b)
}
func (m *Message_NamedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Message_NamedGroup.Marshal(b, m, deterministic)
}
func (dst *Message_NamedGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Message_NamedGroup.Merge(dst, src)
}
func (m *Message_NamedGroup) XXX_Size() int {
	return xxx_messageInfo_Message_NamedGroup.Size(m)
}
func (m *Message_NamedGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_Message_NamedGroup.DiscardUnknown(m)
}

var xxx_messageInfo_Message_NamedGroup proto.InternalMessageInfo

func (m *Message_NamedGroup) GetF1() string {
	if m != nil && m.F1 != nil {
		return *m.F1
	}
	return ""
}

func (m *Message_NamedGroup) GetF2() string {
	if m != nil && m.F2 != nil {
		return *m.F2
	}
	return ""
}

func (m *Message_NamedGroup) GetF3() []string {
	if m != nil {
		return m.F3
	}
	return nil
}

func (m *Message_NamedGroup) GetF4() *Message {
	if m != nil {
		return m.F4
	}
	return nil
}

type Message_OptionalGroup struct {
	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Message_OptionalGroup) Reset()         { *m = Message_OptionalGroup{} }
func (m *Message_OptionalGroup) String() string { return proto.CompactTextString(m) }
func (*Message_OptionalGroup) ProtoMessage()    {}
func (*Message_OptionalGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 2}
}
func (m *Message_OptionalGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Message_OptionalGroup.Unmarshal(m, b)
}
func (m *Message_OptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Message_OptionalGroup.Marshal(b, m, deterministic)
}
func (dst *Message_OptionalGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Message_OptionalGroup.Merge(dst, src)
}
func (m *Message_OptionalGroup) XXX_Size() int {
	return xxx_messageInfo_Message_OptionalGroup.Size(m)
}
func (m *Message_OptionalGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_Message_OptionalGroup.DiscardUnknown(m)
}

var xxx_messageInfo_Message_OptionalGroup proto.InternalMessageInfo

func (m *Message_OptionalGroup) GetF1() string {
	if m != nil && m.F1 != nil {
		return *m.F1
	}
	return ""
}

func (m *Message_OptionalGroup) GetF2() string {
	if m != nil && m.F2 != nil {
		return *m.F2
	}
	return ""
}

func (m *Message_OptionalGroup) GetF3() []string {
	if m != nil {
		return m.F3
	}
	return nil
}

type Message_RequiredGroup struct {
	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Message_RequiredGroup) Reset()         { *m = Message_RequiredGroup{} }
func (m *Message_RequiredGroup) String() string { return proto.CompactTextString(m) }
func (*Message_RequiredGroup) ProtoMessage()    {}
func (*Message_RequiredGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 3}
}
func (m *Message_RequiredGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Message_RequiredGroup.Unmarshal(m, b)
}
func (m *Message_RequiredGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Message_RequiredGroup.Marshal(b, m, deterministic)
}
func (dst *Message_RequiredGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Message_RequiredGroup.Merge(dst, src)
}
func (m *Message_RequiredGroup) XXX_Size() int {
	return xxx_messageInfo_Message_RequiredGroup.Size(m)
}
func (m *Message_RequiredGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_Message_RequiredGroup.DiscardUnknown(m)
}

var xxx_messageInfo_Message_RequiredGroup proto.InternalMessageInfo

func (m *Message_RequiredGroup) GetF1() string {
	if m != nil && m.F1 != nil {
		return *m.F1
	}
	return ""
}

func (m *Message_RequiredGroup) GetF2() string {
	if m != nil && m.F2 != nil {
		return *m.F2
	}
	return ""
}

func (m *Message_RequiredGroup) GetF3() []string {
	if m != nil {
		return m.F3
	}
	return nil
}

type Message_RepeatedGroup struct {
	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Message_RepeatedGroup) Reset()         { *m = Message_RepeatedGroup{} }
func (m *Message_RepeatedGroup) String() string { return proto.CompactTextString(m) }
func (*Message_RepeatedGroup) ProtoMessage()    {}
func (*Message_RepeatedGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 4}
}
func (m *Message_RepeatedGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Message_RepeatedGroup.Unmarshal(m, b)
}
func (m *Message_RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Message_RepeatedGroup.Marshal(b, m, deterministic)
}
func (dst *Message_RepeatedGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Message_RepeatedGroup.Merge(dst, src)
}
func (m *Message_RepeatedGroup) XXX_Size() int {
	return xxx_messageInfo_Message_RepeatedGroup.Size(m)
}
func (m *Message_RepeatedGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_Message_RepeatedGroup.DiscardUnknown(m)
}

var xxx_messageInfo_Message_RepeatedGroup proto.InternalMessageInfo

func (m *Message_RepeatedGroup) GetF1() string {
	if m != nil && m.F1 != nil {
		return *m.F1
	}
	return ""
}

func (m *Message_RepeatedGroup) GetF2() string {
	if m != nil && m.F2 != nil {
		return *m.F2
	}
	return ""
}

func (m *Message_RepeatedGroup) GetF3() []string {
	if m != nil {
		return m.F3
	}
	return nil
}

type Message_OneofGroup struct {
	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Message_OneofGroup) Reset()         { *m = Message_OneofGroup{} }
func (m *Message_OneofGroup) String() string { return proto.CompactTextString(m) }
func (*Message_OneofGroup) ProtoMessage()    {}
func (*Message_OneofGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 33}
}
func (m *Message_OneofGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Message_OneofGroup.Unmarshal(m, b)
}
func (m *Message_OneofGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Message_OneofGroup.Marshal(b, m, deterministic)
}
func (dst *Message_OneofGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Message_OneofGroup.Merge(dst, src)
}
func (m *Message_OneofGroup) XXX_Size() int {
	return xxx_messageInfo_Message_OneofGroup.Size(m)
}
func (m *Message_OneofGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_Message_OneofGroup.DiscardUnknown(m)
}

var xxx_messageInfo_Message_OneofGroup proto.InternalMessageInfo

func (m *Message_OneofGroup) GetF1() string {
	if m != nil && m.F1 != nil {
		return *m.F1
	}
	return ""
}

func (m *Message_OneofGroup) GetF2() string {
	if m != nil && m.F2 != nil {
		return *m.F2
	}
	return ""
}

func (m *Message_OneofGroup) GetF3() []string {
	if m != nil {
		return m.F3
	}
	return nil
}

type Message_ExtensionOptionalGroup struct {
	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Message_ExtensionOptionalGroup) Reset()         { *m = Message_ExtensionOptionalGroup{} }
func (m *Message_ExtensionOptionalGroup) String() string { return proto.CompactTextString(m) }
func (*Message_ExtensionOptionalGroup) ProtoMessage()    {}
func (*Message_ExtensionOptionalGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 34}
}
func (m *Message_ExtensionOptionalGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Message_ExtensionOptionalGroup.Unmarshal(m, b)
}
func (m *Message_ExtensionOptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Message_ExtensionOptionalGroup.Marshal(b, m, deterministic)
}
func (dst *Message_ExtensionOptionalGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Message_ExtensionOptionalGroup.Merge(dst, src)
}
func (m *Message_ExtensionOptionalGroup) XXX_Size() int {
	return xxx_messageInfo_Message_ExtensionOptionalGroup.Size(m)
}
func (m *Message_ExtensionOptionalGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_Message_ExtensionOptionalGroup.DiscardUnknown(m)
}

var xxx_messageInfo_Message_ExtensionOptionalGroup proto.InternalMessageInfo

func (m *Message_ExtensionOptionalGroup) GetF1() string {
	if m != nil && m.F1 != nil {
		return *m.F1
	}
	return ""
}

func (m *Message_ExtensionOptionalGroup) GetF2() string {
	if m != nil && m.F2 != nil {
		return *m.F2
	}
	return ""
}

func (m *Message_ExtensionOptionalGroup) GetF3() []string {
	if m != nil {
		return m.F3
	}
	return nil
}

type Message_ExtensionRepeatedGroup struct {
	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Message_ExtensionRepeatedGroup) Reset()         { *m = Message_ExtensionRepeatedGroup{} }
func (m *Message_ExtensionRepeatedGroup) String() string { return proto.CompactTextString(m) }
func (*Message_ExtensionRepeatedGroup) ProtoMessage()    {}
func (*Message_ExtensionRepeatedGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_test_3cbbf8564163e8c6, []int{1, 35}
}
func (m *Message_ExtensionRepeatedGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Unmarshal(m, b)
}
func (m *Message_ExtensionRepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Marshal(b, m, deterministic)
}
func (dst *Message_ExtensionRepeatedGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Message_ExtensionRepeatedGroup.Merge(dst, src)
}
func (m *Message_ExtensionRepeatedGroup) XXX_Size() int {
	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Size(m)
}
func (m *Message_ExtensionRepeatedGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_Message_ExtensionRepeatedGroup.DiscardUnknown(m)
}

var xxx_messageInfo_Message_ExtensionRepeatedGroup proto.InternalMessageInfo

func (m *Message_ExtensionRepeatedGroup) GetF1() string {
	if m != nil && m.F1 != nil {
		return *m.F1
	}
	return ""
}

func (m *Message_ExtensionRepeatedGroup) GetF2() string {
	if m != nil && m.F2 != nil {
		return *m.F2
	}
	return ""
}

func (m *Message_ExtensionRepeatedGroup) GetF3() []string {
	if m != nil {
		return m.F3
	}
	return nil
}

func init() {
	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto2_20180814.SiblingMessage")
	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20180814.Message")
	proto.RegisterMapType((map[bool]bool)(nil), "google.golang.org.proto2_20180814.Message.MapBoolBoolEntry")
	proto.RegisterMapType((map[bool][]byte)(nil), "google.golang.org.proto2_20180814.Message.MapBoolBytesEntry")
	proto.RegisterMapType((map[bool]Message_ChildEnum)(nil), "google.golang.org.proto2_20180814.Message.MapBoolChildEnumEntry")
	proto.RegisterMapType((map[bool]*Message_ChildMessage)(nil), "google.golang.org.proto2_20180814.Message.MapBoolChildMessageEntry")
	proto.RegisterMapType((map[bool]float64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolDoubleEntry")
	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolFixed32Entry")
	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolFixed64Entry")
	proto.RegisterMapType((map[bool]float32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolFloatEntry")
	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolInt32Entry")
	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolInt64Entry")
	proto.RegisterMapType((map[bool]*Message_NamedGroup)(nil), "google.golang.org.proto2_20180814.Message.MapBoolNamedGroupEntry")
	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSfixed32Entry")
	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSfixed64Entry")
	proto.RegisterMapType((map[bool]SiblingEnum)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSiblingEnumEntry")
	proto.RegisterMapType((map[bool]*SiblingMessage)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSiblingMessageEntry")
	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSint32Entry")
	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSint64Entry")
	proto.RegisterMapType((map[bool]string)(nil), "google.golang.org.proto2_20180814.Message.MapBoolStringEntry")
	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolUint32Entry")
	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolUint64Entry")
	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20180814.Message.MapFixed32BoolEntry")
	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20180814.Message.MapInt32BoolEntry")
	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20180814.Message.MapInt64BoolEntry")
	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20180814.Message.MapSint32BoolEntry")
	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20180814.Message.MapSint64BoolEntry")
	proto.RegisterMapType((map[string]bool)(nil), "google.golang.org.proto2_20180814.Message.MapStringBoolEntry")
	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20180814.Message.MapUint32BoolEntry")
	proto.RegisterMapType((map[uint64]bool)(nil), "google.golang.org.proto2_20180814.Message.MapUint64BoolEntry")
	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20180814.Message.ChildMessage")
	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20180814.Message.NamedGroup")
	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20180814.Message.OptionalGroup")
	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20180814.Message.RequiredGroup")
	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20180814.Message.RepeatedGroup")
	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20180814.Message.OneofGroup")
	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20180814.Message.ExtensionOptionalGroup")
	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20180814.Message.ExtensionRepeatedGroup")
	proto.RegisterEnum("google.golang.org.proto2_20180814.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
	proto.RegisterEnum("google.golang.org.proto2_20180814.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
	proto.RegisterExtension(E_Message_ExtensionOptionalBool)
	proto.RegisterExtension(E_Message_ExtensionOptionalInt32)
	proto.RegisterExtension(E_Message_ExtensionOptionalSint32)
	proto.RegisterExtension(E_Message_ExtensionOptionalUint32)
	proto.RegisterExtension(E_Message_ExtensionOptionalInt64)
	proto.RegisterExtension(E_Message_ExtensionOptionalSint64)
	proto.RegisterExtension(E_Message_ExtensionOptionalUint64)
	proto.RegisterExtension(E_Message_ExtensionOptionalFixed32)
	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed32)
	proto.RegisterExtension(E_Message_ExtensionOptionalFloat)
	proto.RegisterExtension(E_Message_ExtensionOptionalFixed64)
	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed64)
	proto.RegisterExtension(E_Message_ExtensionOptionalDouble)
	proto.RegisterExtension(E_Message_ExtensionOptionalString)
	proto.RegisterExtension(E_Message_ExtensionOptionalBytes)
	proto.RegisterExtension(E_Message_ExtensionOptionalChildEnum)
	proto.RegisterExtension(E_Message_ExtensionOptionalChildMessage)
	proto.RegisterExtension(E_Message_ExtensionOptionalNamedGroup)
	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingEnum)
	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingMessage)
	proto.RegisterExtension(E_Message_Extensionoptionalgroup)
	proto.RegisterExtension(E_Message_ExtensionDefaultedBool)
	proto.RegisterExtension(E_Message_ExtensionDefaultedInt32)
	proto.RegisterExtension(E_Message_ExtensionDefaultedSint32)
	proto.RegisterExtension(E_Message_ExtensionDefaultedUint32)
	proto.RegisterExtension(E_Message_ExtensionDefaultedInt64)
	proto.RegisterExtension(E_Message_ExtensionDefaultedSint64)
	proto.RegisterExtension(E_Message_ExtensionDefaultedUint64)
	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed32)
	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed32)
	proto.RegisterExtension(E_Message_ExtensionDefaultedFloat)
	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed64)
	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed64)
	proto.RegisterExtension(E_Message_ExtensionDefaultedDouble)
	proto.RegisterExtension(E_Message_ExtensionDefaultedString)
	proto.RegisterExtension(E_Message_ExtensionDefaultedBytes)
	proto.RegisterExtension(E_Message_ExtensionDefaultedChildEnum)
	proto.RegisterExtension(E_Message_ExtensionDefaultedSiblingEnum)
	proto.RegisterExtension(E_Message_ExtensionRepeatedBool)
	proto.RegisterExtension(E_Message_ExtensionRepeatedInt32)
	proto.RegisterExtension(E_Message_ExtensionRepeatedSint32)
	proto.RegisterExtension(E_Message_ExtensionRepeatedUint32)
	proto.RegisterExtension(E_Message_ExtensionRepeatedInt64)
	proto.RegisterExtension(E_Message_ExtensionRepeatedSint64)
	proto.RegisterExtension(E_Message_ExtensionRepeatedUint64)
	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed32)
	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed32)
	proto.RegisterExtension(E_Message_ExtensionRepeatedFloat)
	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed64)
	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed64)
	proto.RegisterExtension(E_Message_ExtensionRepeatedDouble)
	proto.RegisterExtension(E_Message_ExtensionRepeatedString)
	proto.RegisterExtension(E_Message_ExtensionRepeatedBytes)
	proto.RegisterExtension(E_Message_ExtensionRepeatedChildEnum)
	proto.RegisterExtension(E_Message_ExtensionRepeatedChildMessage)
	proto.RegisterExtension(E_Message_ExtensionRepeatedNamedGroup)
	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingEnum)
	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingMessage)
	proto.RegisterExtension(E_Message_Extensionrepeatedgroup)
}

func init() {
	proto.RegisterFile("proto2.v1.2.0-20180814-aa810b61/test.proto", fileDescriptor_test_3cbbf8564163e8c6)
}

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