// Code generated by protoc-gen-go. DO NOT EDIT.
// source: proto2.v1.1.0-20180430-b4deda09/test.proto

package proto2_v1_1_0_20180430_b4deda09 // import "google.golang.org/protobuf/internal/testprotos/legacy/proto2.v1.1.0-20180430-b4deda09"

import proto "google.golang.org/protobuf/internal/protolegacy"
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_98bcf816f23990bb, []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_98bcf816f23990bb, []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_98bcf816f23990bb, []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_20180430.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_20180430.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_20180430.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_20180430.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_20180430.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_20180430.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_20180430.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_20180430.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_20180430.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_20180430.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_20180430.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_20180430.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_98bcf816f23990bb, []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

type isMessage_OneofUnion interface {
	isMessage_OneofUnion()
}
type isMessage_OneofDefaultedUnion interface {
	isMessage_OneofDefaultedUnion()
}

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_20180430.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_20180430.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"`
}
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_20180430.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_20180430.SiblingEnum,oneof,def=0"`
}

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 (*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) GetOneofUnion() isMessage_OneofUnion {
	if m != nil {
		return m.OneofUnion
	}
	return nil
}
func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
	if m != nil {
		return m.OneofDefaultedUnion
	}
	return nil
}

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
}

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 ""
}

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_20180430.Message.extension_optional_bool",
	Tag:           "varint,10000,opt,name=extension_optional_bool,json=extensionOptionalBool",
	Filename:      "proto2.v1.1.0-20180430-b4deda09/test.proto",
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
	ExtendedType:  (*Message)(nil),
	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
	Field:         30020,
	Name:          "google.golang.org.proto2_20180430.Message.extensionrepeatedgroup",
	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup,json=extensionrepeatedgroup",
	Filename:      "proto2.v1.1.0-20180430-b4deda09/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_98bcf816f23990bb, []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_98bcf816f23990bb, []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_98bcf816f23990bb, []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_98bcf816f23990bb, []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_98bcf816f23990bb, []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_98bcf816f23990bb, []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_98bcf816f23990bb, []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_98bcf816f23990bb, []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_20180430.SiblingMessage")
	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20180430.Message")
	proto.RegisterMapType((map[bool]bool)(nil), "google.golang.org.proto2_20180430.Message.MapBoolBoolEntry")
	proto.RegisterMapType((map[bool][]byte)(nil), "google.golang.org.proto2_20180430.Message.MapBoolBytesEntry")
	proto.RegisterMapType((map[bool]Message_ChildEnum)(nil), "google.golang.org.proto2_20180430.Message.MapBoolChildEnumEntry")
	proto.RegisterMapType((map[bool]*Message_ChildMessage)(nil), "google.golang.org.proto2_20180430.Message.MapBoolChildMessageEntry")
	proto.RegisterMapType((map[bool]float64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolDoubleEntry")
	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolFixed32Entry")
	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolFixed64Entry")
	proto.RegisterMapType((map[bool]float32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolFloatEntry")
	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolInt32Entry")
	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolInt64Entry")
	proto.RegisterMapType((map[bool]*Message_NamedGroup)(nil), "google.golang.org.proto2_20180430.Message.MapBoolNamedGroupEntry")
	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSfixed32Entry")
	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSfixed64Entry")
	proto.RegisterMapType((map[bool]SiblingEnum)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSiblingEnumEntry")
	proto.RegisterMapType((map[bool]*SiblingMessage)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSiblingMessageEntry")
	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSint32Entry")
	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSint64Entry")
	proto.RegisterMapType((map[bool]string)(nil), "google.golang.org.proto2_20180430.Message.MapBoolStringEntry")
	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolUint32Entry")
	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolUint64Entry")
	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20180430.Message.MapFixed32BoolEntry")
	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20180430.Message.MapInt32BoolEntry")
	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20180430.Message.MapInt64BoolEntry")
	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20180430.Message.MapSint32BoolEntry")
	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20180430.Message.MapSint64BoolEntry")
	proto.RegisterMapType((map[string]bool)(nil), "google.golang.org.proto2_20180430.Message.MapStringBoolEntry")
	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20180430.Message.MapUint32BoolEntry")
	proto.RegisterMapType((map[uint64]bool)(nil), "google.golang.org.proto2_20180430.Message.MapUint64BoolEntry")
	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20180430.Message.ChildMessage")
	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20180430.Message.NamedGroup")
	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20180430.Message.OptionalGroup")
	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20180430.Message.RequiredGroup")
	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20180430.Message.RepeatedGroup")
	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20180430.Message.OneofGroup")
	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20180430.Message.ExtensionOptionalGroup")
	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20180430.Message.ExtensionRepeatedGroup")
	proto.RegisterEnum("google.golang.org.proto2_20180430.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
	proto.RegisterEnum("google.golang.org.proto2_20180430.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.1.0-20180430-b4deda09/test.proto", fileDescriptor_test_98bcf816f23990bb)
}

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