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

package pb

import (
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	math "math"
)

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

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

type PackageType int32

const (
	PackageType_PT_UNKNOWN   PackageType = 0
	PackageType_PT_SIGN_IN   PackageType = 1
	PackageType_PT_SYNC      PackageType = 2
	PackageType_PT_HEARTBEAT PackageType = 3
	PackageType_PT_MESSAGE   PackageType = 4
)

var PackageType_name = map[int32]string{
	0: "PT_UNKNOWN",
	1: "PT_SIGN_IN",
	2: "PT_SYNC",
	3: "PT_HEARTBEAT",
	4: "PT_MESSAGE",
}

var PackageType_value = map[string]int32{
	"PT_UNKNOWN":   0,
	"PT_SIGN_IN":   1,
	"PT_SYNC":      2,
	"PT_HEARTBEAT": 3,
	"PT_MESSAGE":   4,
}

func (x PackageType) String() string {
	return proto.EnumName(PackageType_name, int32(x))
}

func (PackageType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{0}
}

// 消息类型
type MessageType int32

const (
	MessageType_MT_UNKNOWN  MessageType = 0
	MessageType_MT_TEXT     MessageType = 1
	MessageType_MT_FACE     MessageType = 2
	MessageType_MT_VOICE    MessageType = 3
	MessageType_MT_IMAGE    MessageType = 4
	MessageType_MT_FILE     MessageType = 5
	MessageType_MT_LOCATION MessageType = 6
	MessageType_MT_COMMAND  MessageType = 7
	MessageType_MT_CUSTOM   MessageType = 8
)

var MessageType_name = map[int32]string{
	0: "MT_UNKNOWN",
	1: "MT_TEXT",
	2: "MT_FACE",
	3: "MT_VOICE",
	4: "MT_IMAGE",
	5: "MT_FILE",
	6: "MT_LOCATION",
	7: "MT_COMMAND",
	8: "MT_CUSTOM",
}

var MessageType_value = map[string]int32{
	"MT_UNKNOWN":  0,
	"MT_TEXT":     1,
	"MT_FACE":     2,
	"MT_VOICE":    3,
	"MT_IMAGE":    4,
	"MT_FILE":     5,
	"MT_LOCATION": 6,
	"MT_COMMAND":  7,
	"MT_CUSTOM":   8,
}

func (x MessageType) String() string {
	return proto.EnumName(MessageType_name, int32(x))
}

func (MessageType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{1}
}

type ReceiverType int32

const (
	ReceiverType_RT_UNKNOWN      ReceiverType = 0
	ReceiverType_RT_USER         ReceiverType = 1
	ReceiverType_RT_NORMAL_GROUP ReceiverType = 2
	ReceiverType_RT_LARGE_GROUP  ReceiverType = 3
)

var ReceiverType_name = map[int32]string{
	0: "RT_UNKNOWN",
	1: "RT_USER",
	2: "RT_NORMAL_GROUP",
	3: "RT_LARGE_GROUP",
}

var ReceiverType_value = map[string]int32{
	"RT_UNKNOWN":      0,
	"RT_USER":         1,
	"RT_NORMAL_GROUP": 2,
	"RT_LARGE_GROUP":  3,
}

func (x ReceiverType) String() string {
	return proto.EnumName(ReceiverType_name, int32(x))
}

func (ReceiverType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{2}
}

type SenderType int32

const (
	SenderType_ST_UNKNOWN  SenderType = 0
	SenderType_ST_SYSTEM   SenderType = 1
	SenderType_ST_USER     SenderType = 2
	SenderType_ST_BUSINESS SenderType = 3
)

var SenderType_name = map[int32]string{
	0: "ST_UNKNOWN",
	1: "ST_SYSTEM",
	2: "ST_USER",
	3: "ST_BUSINESS",
}

var SenderType_value = map[string]int32{
	"ST_UNKNOWN":  0,
	"ST_SYSTEM":   1,
	"ST_USER":     2,
	"ST_BUSINESS": 3,
}

func (x SenderType) String() string {
	return proto.EnumName(SenderType_name, int32(x))
}

func (SenderType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{3}
}

type MessageStatus int32

const (
	MessageStatus_MS_UNKNOWN MessageStatus = 0
	MessageStatus_MS_NORMAL  MessageStatus = 1
	MessageStatus_MS_RECALL  MessageStatus = 2
)

var MessageStatus_name = map[int32]string{
	0: "MS_UNKNOWN",
	1: "MS_NORMAL",
	2: "MS_RECALL",
}

var MessageStatus_value = map[string]int32{
	"MS_UNKNOWN": 0,
	"MS_NORMAL":  1,
	"MS_RECALL":  2,
}

func (x MessageStatus) String() string {
	return proto.EnumName(MessageStatus_name, int32(x))
}

func (MessageStatus) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{4}
}

// 消息体
type MessageBody struct {
	MessageType          MessageType     `protobuf:"varint,1,opt,name=message_type,json=messageType,proto3,enum=pb.MessageType" json:"message_type,omitempty"`
	MessageContent       *MessageContent `protobuf:"bytes,2,opt,name=message_content,json=messageContent,proto3" json:"message_content,omitempty"`
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

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

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

var xxx_messageInfo_MessageBody proto.InternalMessageInfo

func (m *MessageBody) GetMessageType() MessageType {
	if m != nil {
		return m.MessageType
	}
	return MessageType_MT_UNKNOWN
}

func (m *MessageBody) GetMessageContent() *MessageContent {
	if m != nil {
		return m.MessageContent
	}
	return nil
}

// 消息内容，MessageType：1
type MessageContent struct {
	// Types that are valid to be assigned to Content:
	//	*MessageContent_Text
	//	*MessageContent_Face
	//	*MessageContent_Voice
	//	*MessageContent_Image
	//	*MessageContent_File
	//	*MessageContent_Location
	//	*MessageContent_Command
	//	*MessageContent_Custom
	Content              isMessageContent_Content `protobuf_oneof:"content"`
	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
	XXX_unrecognized     []byte                   `json:"-"`
	XXX_sizecache        int32                    `json:"-"`
}

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

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

var xxx_messageInfo_MessageContent proto.InternalMessageInfo

type isMessageContent_Content interface {
	isMessageContent_Content()
}

type MessageContent_Text struct {
	Text *Text `protobuf:"bytes,1,opt,name=text,proto3,oneof"`
}

type MessageContent_Face struct {
	Face *Face `protobuf:"bytes,2,opt,name=face,proto3,oneof"`
}

type MessageContent_Voice struct {
	Voice *Voice `protobuf:"bytes,3,opt,name=voice,proto3,oneof"`
}

type MessageContent_Image struct {
	Image *Image `protobuf:"bytes,4,opt,name=image,proto3,oneof"`
}

type MessageContent_File struct {
	File *File `protobuf:"bytes,5,opt,name=file,proto3,oneof"`
}

type MessageContent_Location struct {
	Location *Location `protobuf:"bytes,6,opt,name=location,proto3,oneof"`
}

type MessageContent_Command struct {
	Command *Command `protobuf:"bytes,7,opt,name=command,proto3,oneof"`
}

type MessageContent_Custom struct {
	Custom *Custom `protobuf:"bytes,8,opt,name=custom,proto3,oneof"`
}

func (*MessageContent_Text) isMessageContent_Content() {}

func (*MessageContent_Face) isMessageContent_Content() {}

func (*MessageContent_Voice) isMessageContent_Content() {}

func (*MessageContent_Image) isMessageContent_Content() {}

func (*MessageContent_File) isMessageContent_Content() {}

func (*MessageContent_Location) isMessageContent_Content() {}

func (*MessageContent_Command) isMessageContent_Content() {}

func (*MessageContent_Custom) isMessageContent_Content() {}

func (m *MessageContent) GetContent() isMessageContent_Content {
	if m != nil {
		return m.Content
	}
	return nil
}

func (m *MessageContent) GetText() *Text {
	if x, ok := m.GetContent().(*MessageContent_Text); ok {
		return x.Text
	}
	return nil
}

func (m *MessageContent) GetFace() *Face {
	if x, ok := m.GetContent().(*MessageContent_Face); ok {
		return x.Face
	}
	return nil
}

func (m *MessageContent) GetVoice() *Voice {
	if x, ok := m.GetContent().(*MessageContent_Voice); ok {
		return x.Voice
	}
	return nil
}

func (m *MessageContent) GetImage() *Image {
	if x, ok := m.GetContent().(*MessageContent_Image); ok {
		return x.Image
	}
	return nil
}

func (m *MessageContent) GetFile() *File {
	if x, ok := m.GetContent().(*MessageContent_File); ok {
		return x.File
	}
	return nil
}

func (m *MessageContent) GetLocation() *Location {
	if x, ok := m.GetContent().(*MessageContent_Location); ok {
		return x.Location
	}
	return nil
}

func (m *MessageContent) GetCommand() *Command {
	if x, ok := m.GetContent().(*MessageContent_Command); ok {
		return x.Command
	}
	return nil
}

func (m *MessageContent) GetCustom() *Custom {
	if x, ok := m.GetContent().(*MessageContent_Custom); ok {
		return x.Custom
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*MessageContent) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*MessageContent_Text)(nil),
		(*MessageContent_Face)(nil),
		(*MessageContent_Voice)(nil),
		(*MessageContent_Image)(nil),
		(*MessageContent_File)(nil),
		(*MessageContent_Location)(nil),
		(*MessageContent_Command)(nil),
		(*MessageContent_Custom)(nil),
	}
}

// 文本消息
type Text struct {
	Text                 string   `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

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

var xxx_messageInfo_Text proto.InternalMessageInfo

func (m *Text) GetText() string {
	if m != nil {
		return m.Text
	}
	return ""
}

// 表情消息
type Face struct {
	FaceId               int64    `protobuf:"varint,1,opt,name=face_id,json=faceId,proto3" json:"face_id,omitempty"`
	FaceUrl              string   `protobuf:"bytes,2,opt,name=face_url,json=faceUrl,proto3" json:"face_url,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

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

var xxx_messageInfo_Face proto.InternalMessageInfo

func (m *Face) GetFaceId() int64 {
	if m != nil {
		return m.FaceId
	}
	return 0
}

func (m *Face) GetFaceUrl() string {
	if m != nil {
		return m.FaceUrl
	}
	return ""
}

// 语音消息
type Voice struct {
	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Size                 int32    `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
	Duration             int32    `protobuf:"varint,3,opt,name=duration,proto3" json:"duration,omitempty"`
	Url                  string   `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Voice) Reset()         { *m = Voice{} }
func (m *Voice) String() string { return proto.CompactTextString(m) }
func (*Voice) ProtoMessage()    {}
func (*Voice) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{4}
}

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

var xxx_messageInfo_Voice proto.InternalMessageInfo

func (m *Voice) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *Voice) GetSize() int32 {
	if m != nil {
		return m.Size
	}
	return 0
}

func (m *Voice) GetDuration() int32 {
	if m != nil {
		return m.Duration
	}
	return 0
}

func (m *Voice) GetUrl() string {
	if m != nil {
		return m.Url
	}
	return ""
}

// 图片消息
type Image struct {
	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Width                int32    `protobuf:"varint,2,opt,name=width,proto3" json:"width,omitempty"`
	Height               int32    `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
	Url                  string   `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"`
	ThumbnailUrl         string   `protobuf:"bytes,5,opt,name=thumbnail_url,json=thumbnailUrl,proto3" json:"thumbnail_url,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Image) Reset()         { *m = Image{} }
func (m *Image) String() string { return proto.CompactTextString(m) }
func (*Image) ProtoMessage()    {}
func (*Image) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{5}
}

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

var xxx_messageInfo_Image proto.InternalMessageInfo

func (m *Image) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *Image) GetWidth() int32 {
	if m != nil {
		return m.Width
	}
	return 0
}

func (m *Image) GetHeight() int32 {
	if m != nil {
		return m.Height
	}
	return 0
}

func (m *Image) GetUrl() string {
	if m != nil {
		return m.Url
	}
	return ""
}

func (m *Image) GetThumbnailUrl() string {
	if m != nil {
		return m.ThumbnailUrl
	}
	return ""
}

// 文件消息
type File struct {
	Id                   int64    `protobuf:"varint,12,opt,name=id,proto3" json:"id,omitempty"`
	Name                 string   `protobuf:"bytes,13,opt,name=name,proto3" json:"name,omitempty"`
	Size                 int64    `protobuf:"varint,14,opt,name=size,proto3" json:"size,omitempty"`
	Url                  string   `protobuf:"bytes,15,opt,name=url,proto3" json:"url,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *File) Reset()         { *m = File{} }
func (m *File) String() string { return proto.CompactTextString(m) }
func (*File) ProtoMessage()    {}
func (*File) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{6}
}

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

var xxx_messageInfo_File proto.InternalMessageInfo

func (m *File) GetId() int64 {
	if m != nil {
		return m.Id
	}
	return 0
}

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

func (m *File) GetSize() int64 {
	if m != nil {
		return m.Size
	}
	return 0
}

func (m *File) GetUrl() string {
	if m != nil {
		return m.Url
	}
	return ""
}

// 地理位置消息
type Location struct {
	Desc                 string   `protobuf:"bytes,1,opt,name=desc,proto3" json:"desc,omitempty"`
	Latitude             float64  `protobuf:"fixed64,2,opt,name=latitude,proto3" json:"latitude,omitempty"`
	Longitude            float64  `protobuf:"fixed64,3,opt,name=longitude,proto3" json:"longitude,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Location) Reset()         { *m = Location{} }
func (m *Location) String() string { return proto.CompactTextString(m) }
func (*Location) ProtoMessage()    {}
func (*Location) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{7}
}

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

var xxx_messageInfo_Location proto.InternalMessageInfo

func (m *Location) GetDesc() string {
	if m != nil {
		return m.Desc
	}
	return ""
}

func (m *Location) GetLatitude() float64 {
	if m != nil {
		return m.Latitude
	}
	return 0
}

func (m *Location) GetLongitude() float64 {
	if m != nil {
		return m.Longitude
	}
	return 0
}

// Command 指令推送，1000以下，IM内部用，1000以上，留给业务用
type Command struct {
	Code                 int32    `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Data                 []byte   `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Command) Reset()         { *m = Command{} }
func (m *Command) String() string { return proto.CompactTextString(m) }
func (*Command) ProtoMessage()    {}
func (*Command) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{8}
}

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

var xxx_messageInfo_Command proto.InternalMessageInfo

func (m *Command) GetCode() int32 {
	if m != nil {
		return m.Code
	}
	return 0
}

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

// 自定义消息
type Custom struct {
	Data                 string   `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Custom) Reset()         { *m = Custom{} }
func (m *Custom) String() string { return proto.CompactTextString(m) }
func (*Custom) ProtoMessage()    {}
func (*Custom) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{9}
}

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

var xxx_messageInfo_Custom proto.InternalMessageInfo

func (m *Custom) GetData() string {
	if m != nil {
		return m.Data
	}
	return ""
}

// 单条消息投递内容,todo 通知栏提醒
type MessageItem struct {
	RequestId            int64         `protobuf:"varint,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	SenderType           SenderType    `protobuf:"varint,2,opt,name=sender_type,json=senderType,proto3,enum=pb.SenderType" json:"sender_type,omitempty"`
	SenderId             int64         `protobuf:"varint,3,opt,name=sender_id,json=senderId,proto3" json:"sender_id,omitempty"`
	SenderDeviceId       int64         `protobuf:"varint,4,opt,name=sender_device_id,json=senderDeviceId,proto3" json:"sender_device_id,omitempty"`
	ReceiverType         ReceiverType  `protobuf:"varint,5,opt,name=receiver_type,json=receiverType,proto3,enum=pb.ReceiverType" json:"receiver_type,omitempty"`
	ReceiverId           int64         `protobuf:"varint,6,opt,name=receiver_id,json=receiverId,proto3" json:"receiver_id,omitempty"`
	ToUserIds            []int64       `protobuf:"varint,7,rep,packed,name=to_user_ids,json=toUserIds,proto3" json:"to_user_ids,omitempty"`
	MessageBody          *MessageBody  `protobuf:"bytes,8,opt,name=message_body,json=messageBody,proto3" json:"message_body,omitempty"`
	Seq                  int64         `protobuf:"varint,9,opt,name=seq,proto3" json:"seq,omitempty"`
	SendTime             int64         `protobuf:"varint,10,opt,name=send_time,json=sendTime,proto3" json:"send_time,omitempty"`
	Status               MessageStatus `protobuf:"varint,11,opt,name=status,proto3,enum=pb.MessageStatus" json:"status,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (m *MessageItem) Reset()         { *m = MessageItem{} }
func (m *MessageItem) String() string { return proto.CompactTextString(m) }
func (*MessageItem) ProtoMessage()    {}
func (*MessageItem) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{10}
}

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

var xxx_messageInfo_MessageItem proto.InternalMessageInfo

func (m *MessageItem) GetRequestId() int64 {
	if m != nil {
		return m.RequestId
	}
	return 0
}

func (m *MessageItem) GetSenderType() SenderType {
	if m != nil {
		return m.SenderType
	}
	return SenderType_ST_UNKNOWN
}

func (m *MessageItem) GetSenderId() int64 {
	if m != nil {
		return m.SenderId
	}
	return 0
}

func (m *MessageItem) GetSenderDeviceId() int64 {
	if m != nil {
		return m.SenderDeviceId
	}
	return 0
}

func (m *MessageItem) GetReceiverType() ReceiverType {
	if m != nil {
		return m.ReceiverType
	}
	return ReceiverType_RT_UNKNOWN
}

func (m *MessageItem) GetReceiverId() int64 {
	if m != nil {
		return m.ReceiverId
	}
	return 0
}

func (m *MessageItem) GetToUserIds() []int64 {
	if m != nil {
		return m.ToUserIds
	}
	return nil
}

func (m *MessageItem) GetMessageBody() *MessageBody {
	if m != nil {
		return m.MessageBody
	}
	return nil
}

func (m *MessageItem) GetSeq() int64 {
	if m != nil {
		return m.Seq
	}
	return 0
}

func (m *MessageItem) GetSendTime() int64 {
	if m != nil {
		return m.SendTime
	}
	return 0
}

func (m *MessageItem) GetStatus() MessageStatus {
	if m != nil {
		return m.Status
	}
	return MessageStatus_MS_UNKNOWN
}

// 上行数据
type Input struct {
	Type                 PackageType `protobuf:"varint,1,opt,name=type,proto3,enum=pb.PackageType" json:"type,omitempty"`
	RequestId            int64       `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Data                 []byte      `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
	XXX_unrecognized     []byte      `json:"-"`
	XXX_sizecache        int32       `json:"-"`
}

func (m *Input) Reset()         { *m = Input{} }
func (m *Input) String() string { return proto.CompactTextString(m) }
func (*Input) ProtoMessage()    {}
func (*Input) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{11}
}

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

var xxx_messageInfo_Input proto.InternalMessageInfo

func (m *Input) GetType() PackageType {
	if m != nil {
		return m.Type
	}
	return PackageType_PT_UNKNOWN
}

func (m *Input) GetRequestId() int64 {
	if m != nil {
		return m.RequestId
	}
	return 0
}

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

// 下行数据
type Output struct {
	Type                 PackageType `protobuf:"varint,1,opt,name=type,proto3,enum=pb.PackageType" json:"type,omitempty"`
	RequestId            int64       `protobuf:"varint,2,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Code                 int32       `protobuf:"varint,3,opt,name=code,proto3" json:"code,omitempty"`
	Message              string      `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"`
	Data                 []byte      `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"`
	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
	XXX_unrecognized     []byte      `json:"-"`
	XXX_sizecache        int32       `json:"-"`
}

func (m *Output) Reset()         { *m = Output{} }
func (m *Output) String() string { return proto.CompactTextString(m) }
func (*Output) ProtoMessage()    {}
func (*Output) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{12}
}

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

var xxx_messageInfo_Output proto.InternalMessageInfo

func (m *Output) GetType() PackageType {
	if m != nil {
		return m.Type
	}
	return PackageType_PT_UNKNOWN
}

func (m *Output) GetRequestId() int64 {
	if m != nil {
		return m.RequestId
	}
	return 0
}

func (m *Output) GetCode() int32 {
	if m != nil {
		return m.Code
	}
	return 0
}

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

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

// 设备登录,package_type:1
type SignInInput struct {
	AppId                int64    `protobuf:"varint,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
	DeviceId             int64    `protobuf:"varint,2,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
	UserId               int64    `protobuf:"varint,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	Token                string   `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *SignInInput) Reset()         { *m = SignInInput{} }
func (m *SignInInput) String() string { return proto.CompactTextString(m) }
func (*SignInInput) ProtoMessage()    {}
func (*SignInInput) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{13}
}

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

var xxx_messageInfo_SignInInput proto.InternalMessageInfo

func (m *SignInInput) GetAppId() int64 {
	if m != nil {
		return m.AppId
	}
	return 0
}

func (m *SignInInput) GetDeviceId() int64 {
	if m != nil {
		return m.DeviceId
	}
	return 0
}

func (m *SignInInput) GetUserId() int64 {
	if m != nil {
		return m.UserId
	}
	return 0
}

func (m *SignInInput) GetToken() string {
	if m != nil {
		return m.Token
	}
	return ""
}

// 消息同步请求,package_type:2
type SyncInput struct {
	Seq                  int64    `protobuf:"varint,1,opt,name=seq,proto3" json:"seq,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *SyncInput) Reset()         { *m = SyncInput{} }
func (m *SyncInput) String() string { return proto.CompactTextString(m) }
func (*SyncInput) ProtoMessage()    {}
func (*SyncInput) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{14}
}

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

var xxx_messageInfo_SyncInput proto.InternalMessageInfo

func (m *SyncInput) GetSeq() int64 {
	if m != nil {
		return m.Seq
	}
	return 0
}

// 消息同步响应,package_type:2
type SyncOutput struct {
	Messages             []*MessageItem `protobuf:"bytes,3,rep,name=messages,proto3" json:"messages,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (m *SyncOutput) Reset()         { *m = SyncOutput{} }
func (m *SyncOutput) String() string { return proto.CompactTextString(m) }
func (*SyncOutput) ProtoMessage()    {}
func (*SyncOutput) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{15}
}

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

var xxx_messageInfo_SyncOutput proto.InternalMessageInfo

func (m *SyncOutput) GetMessages() []*MessageItem {
	if m != nil {
		return m.Messages
	}
	return nil
}

// 消息投递,package_type:4
type Message struct {
	Message              *MessageItem `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
	XXX_NoUnkeyedLiteral struct{}     `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_5d2504774879b91c, []int{16}
}

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 (m *Message) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Message.Merge(m, 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

func (m *Message) GetMessage() *MessageItem {
	if m != nil {
		return m.Message
	}
	return nil
}

// 投递消息回执,package_type:4
type MessageACK struct {
	DeviceAck            int64    `protobuf:"varint,2,opt,name=device_ack,json=deviceAck,proto3" json:"device_ack,omitempty"`
	ReceiveTime          int64    `protobuf:"varint,3,opt,name=receive_time,json=receiveTime,proto3" json:"receive_time,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *MessageACK) Reset()         { *m = MessageACK{} }
func (m *MessageACK) String() string { return proto.CompactTextString(m) }
func (*MessageACK) ProtoMessage()    {}
func (*MessageACK) Descriptor() ([]byte, []int) {
	return fileDescriptor_5d2504774879b91c, []int{17}
}

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

var xxx_messageInfo_MessageACK proto.InternalMessageInfo

func (m *MessageACK) GetDeviceAck() int64 {
	if m != nil {
		return m.DeviceAck
	}
	return 0
}

func (m *MessageACK) GetReceiveTime() int64 {
	if m != nil {
		return m.ReceiveTime
	}
	return 0
}

func init() {
	proto.RegisterEnum("pb.PackageType", PackageType_name, PackageType_value)
	proto.RegisterEnum("pb.MessageType", MessageType_name, MessageType_value)
	proto.RegisterEnum("pb.ReceiverType", ReceiverType_name, ReceiverType_value)
	proto.RegisterEnum("pb.SenderType", SenderType_name, SenderType_value)
	proto.RegisterEnum("pb.MessageStatus", MessageStatus_name, MessageStatus_value)
	proto.RegisterType((*MessageBody)(nil), "pb.MessageBody")
	proto.RegisterType((*MessageContent)(nil), "pb.MessageContent")
	proto.RegisterType((*Text)(nil), "pb.Text")
	proto.RegisterType((*Face)(nil), "pb.Face")
	proto.RegisterType((*Voice)(nil), "pb.Voice")
	proto.RegisterType((*Image)(nil), "pb.Image")
	proto.RegisterType((*File)(nil), "pb.File")
	proto.RegisterType((*Location)(nil), "pb.Location")
	proto.RegisterType((*Command)(nil), "pb.Command")
	proto.RegisterType((*Custom)(nil), "pb.Custom")
	proto.RegisterType((*MessageItem)(nil), "pb.MessageItem")
	proto.RegisterType((*Input)(nil), "pb.Input")
	proto.RegisterType((*Output)(nil), "pb.Output")
	proto.RegisterType((*SignInInput)(nil), "pb.SignInInput")
	proto.RegisterType((*SyncInput)(nil), "pb.SyncInput")
	proto.RegisterType((*SyncOutput)(nil), "pb.SyncOutput")
	proto.RegisterType((*Message)(nil), "pb.Message")
	proto.RegisterType((*MessageACK)(nil), "pb.MessageACK")
}

func init() { proto.RegisterFile("tcp.proto", fileDescriptor_5d2504774879b91c) }

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