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

/*
Package master_pb is a generated protocol buffer package.

It is generated from these files:
	master.proto

It has these top-level messages:
	Heartbeat
	HeartbeatResponse
	VolumeInformationMessage
	VolumeShortInformationMessage
	VolumeEcShardInformationMessage
	Empty
	SuperBlockExtra
	ClientListenRequest
	VolumeLocation
	LookupVolumeRequest
	LookupVolumeResponse
	Location
	AssignRequest
	AssignResponse
	StatisticsRequest
	StatisticsResponse
	StorageType
	Collection
	CollectionListRequest
	CollectionListResponse
	CollectionDeleteRequest
	CollectionDeleteResponse
	DataNodeInfo
	RackInfo
	DataCenterInfo
	TopologyInfo
	VolumeListRequest
	VolumeListResponse
	LookupEcVolumeRequest
	LookupEcVolumeResponse
*/
package master_pb

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

import (
	context "golang.org/x/net/context"
	grpc "google.golang.org/grpc"
)

// 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 Heartbeat struct {
	Ip             string                      `protobuf:"bytes,1,opt,name=ip" json:"ip,omitempty"`
	Port           uint32                      `protobuf:"varint,2,opt,name=port" json:"port,omitempty"`
	PublicUrl      string                      `protobuf:"bytes,3,opt,name=public_url,json=publicUrl" json:"public_url,omitempty"`
	MaxVolumeCount uint32                      `protobuf:"varint,4,opt,name=max_volume_count,json=maxVolumeCount" json:"max_volume_count,omitempty"`
	MaxFileKey     uint64                      `protobuf:"varint,5,opt,name=max_file_key,json=maxFileKey" json:"max_file_key,omitempty"`
	DataCenter     string                      `protobuf:"bytes,6,opt,name=data_center,json=dataCenter" json:"data_center,omitempty"`
	Rack           string                      `protobuf:"bytes,7,opt,name=rack" json:"rack,omitempty"`
	AdminPort      uint32                      `protobuf:"varint,8,opt,name=admin_port,json=adminPort" json:"admin_port,omitempty"`
	Volumes        []*VolumeInformationMessage `protobuf:"bytes,9,rep,name=volumes" json:"volumes,omitempty"`
	// delta volumes
	NewVolumes     []*VolumeShortInformationMessage `protobuf:"bytes,10,rep,name=new_volumes,json=newVolumes" json:"new_volumes,omitempty"`
	DeletedVolumes []*VolumeShortInformationMessage `protobuf:"bytes,11,rep,name=deleted_volumes,json=deletedVolumes" json:"deleted_volumes,omitempty"`
	HasNoVolumes   bool                             `protobuf:"varint,12,opt,name=has_no_volumes,json=hasNoVolumes" json:"has_no_volumes,omitempty"`
	// erasure coding
	EcShards []*VolumeEcShardInformationMessage `protobuf:"bytes,16,rep,name=ec_shards,json=ecShards" json:"ec_shards,omitempty"`
	// delta erasure coding shards
	NewEcShards     []*VolumeEcShardInformationMessage `protobuf:"bytes,17,rep,name=new_ec_shards,json=newEcShards" json:"new_ec_shards,omitempty"`
	DeletedEcShards []*VolumeEcShardInformationMessage `protobuf:"bytes,18,rep,name=deleted_ec_shards,json=deletedEcShards" json:"deleted_ec_shards,omitempty"`
	HasNoEcShards   bool                               `protobuf:"varint,19,opt,name=has_no_ec_shards,json=hasNoEcShards" json:"has_no_ec_shards,omitempty"`
}

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

func (m *Heartbeat) GetIp() string {
	if m != nil {
		return m.Ip
	}
	return ""
}

func (m *Heartbeat) GetPort() uint32 {
	if m != nil {
		return m.Port
	}
	return 0
}

func (m *Heartbeat) GetPublicUrl() string {
	if m != nil {
		return m.PublicUrl
	}
	return ""
}

func (m *Heartbeat) GetMaxVolumeCount() uint32 {
	if m != nil {
		return m.MaxVolumeCount
	}
	return 0
}

func (m *Heartbeat) GetMaxFileKey() uint64 {
	if m != nil {
		return m.MaxFileKey
	}
	return 0
}

func (m *Heartbeat) GetDataCenter() string {
	if m != nil {
		return m.DataCenter
	}
	return ""
}

func (m *Heartbeat) GetRack() string {
	if m != nil {
		return m.Rack
	}
	return ""
}

func (m *Heartbeat) GetAdminPort() uint32 {
	if m != nil {
		return m.AdminPort
	}
	return 0
}

func (m *Heartbeat) GetVolumes() []*VolumeInformationMessage {
	if m != nil {
		return m.Volumes
	}
	return nil
}

func (m *Heartbeat) GetNewVolumes() []*VolumeShortInformationMessage {
	if m != nil {
		return m.NewVolumes
	}
	return nil
}

func (m *Heartbeat) GetDeletedVolumes() []*VolumeShortInformationMessage {
	if m != nil {
		return m.DeletedVolumes
	}
	return nil
}

func (m *Heartbeat) GetHasNoVolumes() bool {
	if m != nil {
		return m.HasNoVolumes
	}
	return false
}

func (m *Heartbeat) GetEcShards() []*VolumeEcShardInformationMessage {
	if m != nil {
		return m.EcShards
	}
	return nil
}

func (m *Heartbeat) GetNewEcShards() []*VolumeEcShardInformationMessage {
	if m != nil {
		return m.NewEcShards
	}
	return nil
}

func (m *Heartbeat) GetDeletedEcShards() []*VolumeEcShardInformationMessage {
	if m != nil {
		return m.DeletedEcShards
	}
	return nil
}

func (m *Heartbeat) GetHasNoEcShards() bool {
	if m != nil {
		return m.HasNoEcShards
	}
	return false
}

type HeartbeatResponse struct {
	VolumeSizeLimit uint64 `protobuf:"varint,1,opt,name=volumeSizeLimit" json:"volumeSizeLimit,omitempty"`
	Leader          string `protobuf:"bytes,3,opt,name=leader" json:"leader,omitempty"`
}

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

func (m *HeartbeatResponse) GetVolumeSizeLimit() uint64 {
	if m != nil {
		return m.VolumeSizeLimit
	}
	return 0
}

func (m *HeartbeatResponse) GetLeader() string {
	if m != nil {
		return m.Leader
	}
	return ""
}

type VolumeInformationMessage struct {
	Id               uint32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
	Size             uint64 `protobuf:"varint,2,opt,name=size" json:"size,omitempty"`
	Collection       string `protobuf:"bytes,3,opt,name=collection" json:"collection,omitempty"`
	FileCount        uint64 `protobuf:"varint,4,opt,name=file_count,json=fileCount" json:"file_count,omitempty"`
	DeleteCount      uint64 `protobuf:"varint,5,opt,name=delete_count,json=deleteCount" json:"delete_count,omitempty"`
	DeletedByteCount uint64 `protobuf:"varint,6,opt,name=deleted_byte_count,json=deletedByteCount" json:"deleted_byte_count,omitempty"`
	ReadOnly         bool   `protobuf:"varint,7,opt,name=read_only,json=readOnly" json:"read_only,omitempty"`
	ReplicaPlacement uint32 `protobuf:"varint,8,opt,name=replica_placement,json=replicaPlacement" json:"replica_placement,omitempty"`
	Version          uint32 `protobuf:"varint,9,opt,name=version" json:"version,omitempty"`
	Ttl              uint32 `protobuf:"varint,10,opt,name=ttl" json:"ttl,omitempty"`
	CompactRevision  uint32 `protobuf:"varint,11,opt,name=compact_revision,json=compactRevision" json:"compact_revision,omitempty"`
	ModifiedAtSecond int64  `protobuf:"varint,12,opt,name=modified_at_second,json=modifiedAtSecond" json:"modified_at_second,omitempty"`
}

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

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

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

func (m *VolumeInformationMessage) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

func (m *VolumeInformationMessage) GetFileCount() uint64 {
	if m != nil {
		return m.FileCount
	}
	return 0
}

func (m *VolumeInformationMessage) GetDeleteCount() uint64 {
	if m != nil {
		return m.DeleteCount
	}
	return 0
}

func (m *VolumeInformationMessage) GetDeletedByteCount() uint64 {
	if m != nil {
		return m.DeletedByteCount
	}
	return 0
}

func (m *VolumeInformationMessage) GetReadOnly() bool {
	if m != nil {
		return m.ReadOnly
	}
	return false
}

func (m *VolumeInformationMessage) GetReplicaPlacement() uint32 {
	if m != nil {
		return m.ReplicaPlacement
	}
	return 0
}

func (m *VolumeInformationMessage) GetVersion() uint32 {
	if m != nil {
		return m.Version
	}
	return 0
}

func (m *VolumeInformationMessage) GetTtl() uint32 {
	if m != nil {
		return m.Ttl
	}
	return 0
}

func (m *VolumeInformationMessage) GetCompactRevision() uint32 {
	if m != nil {
		return m.CompactRevision
	}
	return 0
}

func (m *VolumeInformationMessage) GetModifiedAtSecond() int64 {
	if m != nil {
		return m.ModifiedAtSecond
	}
	return 0
}

type VolumeShortInformationMessage struct {
	Id               uint32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
	Collection       string `protobuf:"bytes,3,opt,name=collection" json:"collection,omitempty"`
	ReplicaPlacement uint32 `protobuf:"varint,8,opt,name=replica_placement,json=replicaPlacement" json:"replica_placement,omitempty"`
	Version          uint32 `protobuf:"varint,9,opt,name=version" json:"version,omitempty"`
	Ttl              uint32 `protobuf:"varint,10,opt,name=ttl" json:"ttl,omitempty"`
}

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

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

func (m *VolumeShortInformationMessage) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

func (m *VolumeShortInformationMessage) GetReplicaPlacement() uint32 {
	if m != nil {
		return m.ReplicaPlacement
	}
	return 0
}

func (m *VolumeShortInformationMessage) GetVersion() uint32 {
	if m != nil {
		return m.Version
	}
	return 0
}

func (m *VolumeShortInformationMessage) GetTtl() uint32 {
	if m != nil {
		return m.Ttl
	}
	return 0
}

type VolumeEcShardInformationMessage struct {
	Id          uint32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
	Collection  string `protobuf:"bytes,2,opt,name=collection" json:"collection,omitempty"`
	EcIndexBits uint32 `protobuf:"varint,3,opt,name=ec_index_bits,json=ecIndexBits" json:"ec_index_bits,omitempty"`
}

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

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

func (m *VolumeEcShardInformationMessage) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

func (m *VolumeEcShardInformationMessage) GetEcIndexBits() uint32 {
	if m != nil {
		return m.EcIndexBits
	}
	return 0
}

type Empty struct {
}

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

type SuperBlockExtra struct {
	ErasureCoding *SuperBlockExtra_ErasureCoding `protobuf:"bytes,1,opt,name=erasure_coding,json=erasureCoding" json:"erasure_coding,omitempty"`
}

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

func (m *SuperBlockExtra) GetErasureCoding() *SuperBlockExtra_ErasureCoding {
	if m != nil {
		return m.ErasureCoding
	}
	return nil
}

type SuperBlockExtra_ErasureCoding struct {
	Data      uint32   `protobuf:"varint,1,opt,name=data" json:"data,omitempty"`
	Parity    uint32   `protobuf:"varint,2,opt,name=parity" json:"parity,omitempty"`
	VolumeIds []uint32 `protobuf:"varint,3,rep,packed,name=volume_ids,json=volumeIds" json:"volume_ids,omitempty"`
}

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

func (m *SuperBlockExtra_ErasureCoding) GetData() uint32 {
	if m != nil {
		return m.Data
	}
	return 0
}

func (m *SuperBlockExtra_ErasureCoding) GetParity() uint32 {
	if m != nil {
		return m.Parity
	}
	return 0
}

func (m *SuperBlockExtra_ErasureCoding) GetVolumeIds() []uint32 {
	if m != nil {
		return m.VolumeIds
	}
	return nil
}

type ClientListenRequest struct {
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}

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

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

type VolumeLocation struct {
	Url         string   `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
	PublicUrl   string   `protobuf:"bytes,2,opt,name=public_url,json=publicUrl" json:"public_url,omitempty"`
	NewVids     []uint32 `protobuf:"varint,3,rep,packed,name=new_vids,json=newVids" json:"new_vids,omitempty"`
	DeletedVids []uint32 `protobuf:"varint,4,rep,packed,name=deleted_vids,json=deletedVids" json:"deleted_vids,omitempty"`
}

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

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

func (m *VolumeLocation) GetPublicUrl() string {
	if m != nil {
		return m.PublicUrl
	}
	return ""
}

func (m *VolumeLocation) GetNewVids() []uint32 {
	if m != nil {
		return m.NewVids
	}
	return nil
}

func (m *VolumeLocation) GetDeletedVids() []uint32 {
	if m != nil {
		return m.DeletedVids
	}
	return nil
}

type LookupVolumeRequest struct {
	VolumeIds  []string `protobuf:"bytes,1,rep,name=volume_ids,json=volumeIds" json:"volume_ids,omitempty"`
	Collection string   `protobuf:"bytes,2,opt,name=collection" json:"collection,omitempty"`
}

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

func (m *LookupVolumeRequest) GetVolumeIds() []string {
	if m != nil {
		return m.VolumeIds
	}
	return nil
}

func (m *LookupVolumeRequest) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

type LookupVolumeResponse struct {
	VolumeIdLocations []*LookupVolumeResponse_VolumeIdLocation `protobuf:"bytes,1,rep,name=volume_id_locations,json=volumeIdLocations" json:"volume_id_locations,omitempty"`
}

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

func (m *LookupVolumeResponse) GetVolumeIdLocations() []*LookupVolumeResponse_VolumeIdLocation {
	if m != nil {
		return m.VolumeIdLocations
	}
	return nil
}

type LookupVolumeResponse_VolumeIdLocation struct {
	VolumeId  string      `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
	Locations []*Location `protobuf:"bytes,2,rep,name=locations" json:"locations,omitempty"`
	Error     string      `protobuf:"bytes,3,opt,name=error" json:"error,omitempty"`
}

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

func (m *LookupVolumeResponse_VolumeIdLocation) GetVolumeId() string {
	if m != nil {
		return m.VolumeId
	}
	return ""
}

func (m *LookupVolumeResponse_VolumeIdLocation) GetLocations() []*Location {
	if m != nil {
		return m.Locations
	}
	return nil
}

func (m *LookupVolumeResponse_VolumeIdLocation) GetError() string {
	if m != nil {
		return m.Error
	}
	return ""
}

type Location struct {
	Url       string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
	PublicUrl string `protobuf:"bytes,2,opt,name=public_url,json=publicUrl" json:"public_url,omitempty"`
}

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

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

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

type AssignRequest struct {
	Count       uint64 `protobuf:"varint,1,opt,name=count" json:"count,omitempty"`
	Replication string `protobuf:"bytes,2,opt,name=replication" json:"replication,omitempty"`
	Collection  string `protobuf:"bytes,3,opt,name=collection" json:"collection,omitempty"`
	Ttl         string `protobuf:"bytes,4,opt,name=ttl" json:"ttl,omitempty"`
	DataCenter  string `protobuf:"bytes,5,opt,name=data_center,json=dataCenter" json:"data_center,omitempty"`
	Rack        string `protobuf:"bytes,6,opt,name=rack" json:"rack,omitempty"`
	DataNode    string `protobuf:"bytes,7,opt,name=data_node,json=dataNode" json:"data_node,omitempty"`
}

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

func (m *AssignRequest) GetCount() uint64 {
	if m != nil {
		return m.Count
	}
	return 0
}

func (m *AssignRequest) GetReplication() string {
	if m != nil {
		return m.Replication
	}
	return ""
}

func (m *AssignRequest) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

func (m *AssignRequest) GetTtl() string {
	if m != nil {
		return m.Ttl
	}
	return ""
}

func (m *AssignRequest) GetDataCenter() string {
	if m != nil {
		return m.DataCenter
	}
	return ""
}

func (m *AssignRequest) GetRack() string {
	if m != nil {
		return m.Rack
	}
	return ""
}

func (m *AssignRequest) GetDataNode() string {
	if m != nil {
		return m.DataNode
	}
	return ""
}

type AssignResponse struct {
	Fid       string `protobuf:"bytes,1,opt,name=fid" json:"fid,omitempty"`
	Url       string `protobuf:"bytes,2,opt,name=url" json:"url,omitempty"`
	PublicUrl string `protobuf:"bytes,3,opt,name=public_url,json=publicUrl" json:"public_url,omitempty"`
	Count     uint64 `protobuf:"varint,4,opt,name=count" json:"count,omitempty"`
	Error     string `protobuf:"bytes,5,opt,name=error" json:"error,omitempty"`
	Auth      string `protobuf:"bytes,6,opt,name=auth" json:"auth,omitempty"`
}

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

func (m *AssignResponse) GetFid() string {
	if m != nil {
		return m.Fid
	}
	return ""
}

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

func (m *AssignResponse) GetPublicUrl() string {
	if m != nil {
		return m.PublicUrl
	}
	return ""
}

func (m *AssignResponse) GetCount() uint64 {
	if m != nil {
		return m.Count
	}
	return 0
}

func (m *AssignResponse) GetError() string {
	if m != nil {
		return m.Error
	}
	return ""
}

func (m *AssignResponse) GetAuth() string {
	if m != nil {
		return m.Auth
	}
	return ""
}

type StatisticsRequest struct {
	Replication string `protobuf:"bytes,1,opt,name=replication" json:"replication,omitempty"`
	Collection  string `protobuf:"bytes,2,opt,name=collection" json:"collection,omitempty"`
	Ttl         string `protobuf:"bytes,3,opt,name=ttl" json:"ttl,omitempty"`
}

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

func (m *StatisticsRequest) GetReplication() string {
	if m != nil {
		return m.Replication
	}
	return ""
}

func (m *StatisticsRequest) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

func (m *StatisticsRequest) GetTtl() string {
	if m != nil {
		return m.Ttl
	}
	return ""
}

type StatisticsResponse struct {
	Replication string `protobuf:"bytes,1,opt,name=replication" json:"replication,omitempty"`
	Collection  string `protobuf:"bytes,2,opt,name=collection" json:"collection,omitempty"`
	Ttl         string `protobuf:"bytes,3,opt,name=ttl" json:"ttl,omitempty"`
	TotalSize   uint64 `protobuf:"varint,4,opt,name=total_size,json=totalSize" json:"total_size,omitempty"`
	UsedSize    uint64 `protobuf:"varint,5,opt,name=used_size,json=usedSize" json:"used_size,omitempty"`
	FileCount   uint64 `protobuf:"varint,6,opt,name=file_count,json=fileCount" json:"file_count,omitempty"`
}

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

func (m *StatisticsResponse) GetReplication() string {
	if m != nil {
		return m.Replication
	}
	return ""
}

func (m *StatisticsResponse) GetCollection() string {
	if m != nil {
		return m.Collection
	}
	return ""
}

func (m *StatisticsResponse) GetTtl() string {
	if m != nil {
		return m.Ttl
	}
	return ""
}

func (m *StatisticsResponse) GetTotalSize() uint64 {
	if m != nil {
		return m.TotalSize
	}
	return 0
}

func (m *StatisticsResponse) GetUsedSize() uint64 {
	if m != nil {
		return m.UsedSize
	}
	return 0
}

func (m *StatisticsResponse) GetFileCount() uint64 {
	if m != nil {
		return m.FileCount
	}
	return 0
}

type StorageType struct {
	Replication string `protobuf:"bytes,1,opt,name=replication" json:"replication,omitempty"`
	Ttl         string `protobuf:"bytes,2,opt,name=ttl" json:"ttl,omitempty"`
}

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

func (m *StorageType) GetReplication() string {
	if m != nil {
		return m.Replication
	}
	return ""
}

func (m *StorageType) GetTtl() string {
	if m != nil {
		return m.Ttl
	}
	return ""
}

type Collection struct {
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}

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

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

type CollectionListRequest struct {
	IncludeNormalVolumes bool `protobuf:"varint,1,opt,name=include_normal_volumes,json=includeNormalVolumes" json:"include_normal_volumes,omitempty"`
	IncludeEcVolumes     bool `protobuf:"varint,2,opt,name=include_ec_volumes,json=includeEcVolumes" json:"include_ec_volumes,omitempty"`
}

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

func (m *CollectionListRequest) GetIncludeNormalVolumes() bool {
	if m != nil {
		return m.IncludeNormalVolumes
	}
	return false
}

func (m *CollectionListRequest) GetIncludeEcVolumes() bool {
	if m != nil {
		return m.IncludeEcVolumes
	}
	return false
}

type CollectionListResponse struct {
	Collections []*Collection `protobuf:"bytes,1,rep,name=collections" json:"collections,omitempty"`
}

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

func (m *CollectionListResponse) GetCollections() []*Collection {
	if m != nil {
		return m.Collections
	}
	return nil
}

type CollectionDeleteRequest struct {
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
}

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

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

type CollectionDeleteResponse struct {
}

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

//
// volume related
//
type DataNodeInfo struct {
	Id                string                             `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	VolumeCount       uint64                             `protobuf:"varint,2,opt,name=volume_count,json=volumeCount" json:"volume_count,omitempty"`
	MaxVolumeCount    uint64                             `protobuf:"varint,3,opt,name=max_volume_count,json=maxVolumeCount" json:"max_volume_count,omitempty"`
	FreeVolumeCount   uint64                             `protobuf:"varint,4,opt,name=free_volume_count,json=freeVolumeCount" json:"free_volume_count,omitempty"`
	ActiveVolumeCount uint64                             `protobuf:"varint,5,opt,name=active_volume_count,json=activeVolumeCount" json:"active_volume_count,omitempty"`
	VolumeInfos       []*VolumeInformationMessage        `protobuf:"bytes,6,rep,name=volume_infos,json=volumeInfos" json:"volume_infos,omitempty"`
	EcShardInfos      []*VolumeEcShardInformationMessage `protobuf:"bytes,7,rep,name=ec_shard_infos,json=ecShardInfos" json:"ec_shard_infos,omitempty"`
}

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

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

func (m *DataNodeInfo) GetVolumeCount() uint64 {
	if m != nil {
		return m.VolumeCount
	}
	return 0
}

func (m *DataNodeInfo) GetMaxVolumeCount() uint64 {
	if m != nil {
		return m.MaxVolumeCount
	}
	return 0
}

func (m *DataNodeInfo) GetFreeVolumeCount() uint64 {
	if m != nil {
		return m.FreeVolumeCount
	}
	return 0
}

func (m *DataNodeInfo) GetActiveVolumeCount() uint64 {
	if m != nil {
		return m.ActiveVolumeCount
	}
	return 0
}

func (m *DataNodeInfo) GetVolumeInfos() []*VolumeInformationMessage {
	if m != nil {
		return m.VolumeInfos
	}
	return nil
}

func (m *DataNodeInfo) GetEcShardInfos() []*VolumeEcShardInformationMessage {
	if m != nil {
		return m.EcShardInfos
	}
	return nil
}

type RackInfo struct {
	Id                string          `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	VolumeCount       uint64          `protobuf:"varint,2,opt,name=volume_count,json=volumeCount" json:"volume_count,omitempty"`
	MaxVolumeCount    uint64          `protobuf:"varint,3,opt,name=max_volume_count,json=maxVolumeCount" json:"max_volume_count,omitempty"`
	FreeVolumeCount   uint64          `protobuf:"varint,4,opt,name=free_volume_count,json=freeVolumeCount" json:"free_volume_count,omitempty"`
	ActiveVolumeCount uint64          `protobuf:"varint,5,opt,name=active_volume_count,json=activeVolumeCount" json:"active_volume_count,omitempty"`
	DataNodeInfos     []*DataNodeInfo `protobuf:"bytes,6,rep,name=data_node_infos,json=dataNodeInfos" json:"data_node_infos,omitempty"`
}

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

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

func (m *RackInfo) GetVolumeCount() uint64 {
	if m != nil {
		return m.VolumeCount
	}
	return 0
}

func (m *RackInfo) GetMaxVolumeCount() uint64 {
	if m != nil {
		return m.MaxVolumeCount
	}
	return 0
}

func (m *RackInfo) GetFreeVolumeCount() uint64 {
	if m != nil {
		return m.FreeVolumeCount
	}
	return 0
}

func (m *RackInfo) GetActiveVolumeCount() uint64 {
	if m != nil {
		return m.ActiveVolumeCount
	}
	return 0
}

func (m *RackInfo) GetDataNodeInfos() []*DataNodeInfo {
	if m != nil {
		return m.DataNodeInfos
	}
	return nil
}

type DataCenterInfo struct {
	Id                string      `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	VolumeCount       uint64      `protobuf:"varint,2,opt,name=volume_count,json=volumeCount" json:"volume_count,omitempty"`
	MaxVolumeCount    uint64      `protobuf:"varint,3,opt,name=max_volume_count,json=maxVolumeCount" json:"max_volume_count,omitempty"`
	FreeVolumeCount   uint64      `protobuf:"varint,4,opt,name=free_volume_count,json=freeVolumeCount" json:"free_volume_count,omitempty"`
	ActiveVolumeCount uint64      `protobuf:"varint,5,opt,name=active_volume_count,json=activeVolumeCount" json:"active_volume_count,omitempty"`
	RackInfos         []*RackInfo `protobuf:"bytes,6,rep,name=rack_infos,json=rackInfos" json:"rack_infos,omitempty"`
}

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

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

func (m *DataCenterInfo) GetVolumeCount() uint64 {
	if m != nil {
		return m.VolumeCount
	}
	return 0
}

func (m *DataCenterInfo) GetMaxVolumeCount() uint64 {
	if m != nil {
		return m.MaxVolumeCount
	}
	return 0
}

func (m *DataCenterInfo) GetFreeVolumeCount() uint64 {
	if m != nil {
		return m.FreeVolumeCount
	}
	return 0
}

func (m *DataCenterInfo) GetActiveVolumeCount() uint64 {
	if m != nil {
		return m.ActiveVolumeCount
	}
	return 0
}

func (m *DataCenterInfo) GetRackInfos() []*RackInfo {
	if m != nil {
		return m.RackInfos
	}
	return nil
}

type TopologyInfo struct {
	Id                string            `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
	VolumeCount       uint64            `protobuf:"varint,2,opt,name=volume_count,json=volumeCount" json:"volume_count,omitempty"`
	MaxVolumeCount    uint64            `protobuf:"varint,3,opt,name=max_volume_count,json=maxVolumeCount" json:"max_volume_count,omitempty"`
	FreeVolumeCount   uint64            `protobuf:"varint,4,opt,name=free_volume_count,json=freeVolumeCount" json:"free_volume_count,omitempty"`
	ActiveVolumeCount uint64            `protobuf:"varint,5,opt,name=active_volume_count,json=activeVolumeCount" json:"active_volume_count,omitempty"`
	DataCenterInfos   []*DataCenterInfo `protobuf:"bytes,6,rep,name=data_center_infos,json=dataCenterInfos" json:"data_center_infos,omitempty"`
}

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

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

func (m *TopologyInfo) GetVolumeCount() uint64 {
	if m != nil {
		return m.VolumeCount
	}
	return 0
}

func (m *TopologyInfo) GetMaxVolumeCount() uint64 {
	if m != nil {
		return m.MaxVolumeCount
	}
	return 0
}

func (m *TopologyInfo) GetFreeVolumeCount() uint64 {
	if m != nil {
		return m.FreeVolumeCount
	}
	return 0
}

func (m *TopologyInfo) GetActiveVolumeCount() uint64 {
	if m != nil {
		return m.ActiveVolumeCount
	}
	return 0
}

func (m *TopologyInfo) GetDataCenterInfos() []*DataCenterInfo {
	if m != nil {
		return m.DataCenterInfos
	}
	return nil
}

type VolumeListRequest struct {
}

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

type VolumeListResponse struct {
	TopologyInfo      *TopologyInfo `protobuf:"bytes,1,opt,name=topology_info,json=topologyInfo" json:"topology_info,omitempty"`
	VolumeSizeLimitMb uint64        `protobuf:"varint,2,opt,name=volume_size_limit_mb,json=volumeSizeLimitMb" json:"volume_size_limit_mb,omitempty"`
}

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

func (m *VolumeListResponse) GetTopologyInfo() *TopologyInfo {
	if m != nil {
		return m.TopologyInfo
	}
	return nil
}

func (m *VolumeListResponse) GetVolumeSizeLimitMb() uint64 {
	if m != nil {
		return m.VolumeSizeLimitMb
	}
	return 0
}

type LookupEcVolumeRequest struct {
	VolumeId uint32 `protobuf:"varint,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
}

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

func (m *LookupEcVolumeRequest) GetVolumeId() uint32 {
	if m != nil {
		return m.VolumeId
	}
	return 0
}

type LookupEcVolumeResponse struct {
	VolumeId         uint32                                      `protobuf:"varint,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
	ShardIdLocations []*LookupEcVolumeResponse_EcShardIdLocation `protobuf:"bytes,2,rep,name=shard_id_locations,json=shardIdLocations" json:"shard_id_locations,omitempty"`
}

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

func (m *LookupEcVolumeResponse) GetVolumeId() uint32 {
	if m != nil {
		return m.VolumeId
	}
	return 0
}

func (m *LookupEcVolumeResponse) GetShardIdLocations() []*LookupEcVolumeResponse_EcShardIdLocation {
	if m != nil {
		return m.ShardIdLocations
	}
	return nil
}

type LookupEcVolumeResponse_EcShardIdLocation struct {
	ShardId   uint32      `protobuf:"varint,1,opt,name=shard_id,json=shardId" json:"shard_id,omitempty"`
	Locations []*Location `protobuf:"bytes,2,rep,name=locations" json:"locations,omitempty"`
}

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

func (m *LookupEcVolumeResponse_EcShardIdLocation) GetShardId() uint32 {
	if m != nil {
		return m.ShardId
	}
	return 0
}

func (m *LookupEcVolumeResponse_EcShardIdLocation) GetLocations() []*Location {
	if m != nil {
		return m.Locations
	}
	return nil
}

func init() {
	proto.RegisterType((*Heartbeat)(nil), "master_pb.Heartbeat")
	proto.RegisterType((*HeartbeatResponse)(nil), "master_pb.HeartbeatResponse")
	proto.RegisterType((*VolumeInformationMessage)(nil), "master_pb.VolumeInformationMessage")
	proto.RegisterType((*VolumeShortInformationMessage)(nil), "master_pb.VolumeShortInformationMessage")
	proto.RegisterType((*VolumeEcShardInformationMessage)(nil), "master_pb.VolumeEcShardInformationMessage")
	proto.RegisterType((*Empty)(nil), "master_pb.Empty")
	proto.RegisterType((*SuperBlockExtra)(nil), "master_pb.SuperBlockExtra")
	proto.RegisterType((*SuperBlockExtra_ErasureCoding)(nil), "master_pb.SuperBlockExtra.ErasureCoding")
	proto.RegisterType((*ClientListenRequest)(nil), "master_pb.ClientListenRequest")
	proto.RegisterType((*VolumeLocation)(nil), "master_pb.VolumeLocation")
	proto.RegisterType((*LookupVolumeRequest)(nil), "master_pb.LookupVolumeRequest")
	proto.RegisterType((*LookupVolumeResponse)(nil), "master_pb.LookupVolumeResponse")
	proto.RegisterType((*LookupVolumeResponse_VolumeIdLocation)(nil), "master_pb.LookupVolumeResponse.VolumeIdLocation")
	proto.RegisterType((*Location)(nil), "master_pb.Location")
	proto.RegisterType((*AssignRequest)(nil), "master_pb.AssignRequest")
	proto.RegisterType((*AssignResponse)(nil), "master_pb.AssignResponse")
	proto.RegisterType((*StatisticsRequest)(nil), "master_pb.StatisticsRequest")
	proto.RegisterType((*StatisticsResponse)(nil), "master_pb.StatisticsResponse")
	proto.RegisterType((*StorageType)(nil), "master_pb.StorageType")
	proto.RegisterType((*Collection)(nil), "master_pb.Collection")
	proto.RegisterType((*CollectionListRequest)(nil), "master_pb.CollectionListRequest")
	proto.RegisterType((*CollectionListResponse)(nil), "master_pb.CollectionListResponse")
	proto.RegisterType((*CollectionDeleteRequest)(nil), "master_pb.CollectionDeleteRequest")
	proto.RegisterType((*CollectionDeleteResponse)(nil), "master_pb.CollectionDeleteResponse")
	proto.RegisterType((*DataNodeInfo)(nil), "master_pb.DataNodeInfo")
	proto.RegisterType((*RackInfo)(nil), "master_pb.RackInfo")
	proto.RegisterType((*DataCenterInfo)(nil), "master_pb.DataCenterInfo")
	proto.RegisterType((*TopologyInfo)(nil), "master_pb.TopologyInfo")
	proto.RegisterType((*VolumeListRequest)(nil), "master_pb.VolumeListRequest")
	proto.RegisterType((*VolumeListResponse)(nil), "master_pb.VolumeListResponse")
	proto.RegisterType((*LookupEcVolumeRequest)(nil), "master_pb.LookupEcVolumeRequest")
	proto.RegisterType((*LookupEcVolumeResponse)(nil), "master_pb.LookupEcVolumeResponse")
	proto.RegisterType((*LookupEcVolumeResponse_EcShardIdLocation)(nil), "master_pb.LookupEcVolumeResponse.EcShardIdLocation")
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4

// Client API for Seaweed service

type SeaweedClient interface {
	SendHeartbeat(ctx context.Context, opts ...grpc.CallOption) (Seaweed_SendHeartbeatClient, error)
	KeepConnected(ctx context.Context, opts ...grpc.CallOption) (Seaweed_KeepConnectedClient, error)
	LookupVolume(ctx context.Context, in *LookupVolumeRequest, opts ...grpc.CallOption) (*LookupVolumeResponse, error)
	Assign(ctx context.Context, in *AssignRequest, opts ...grpc.CallOption) (*AssignResponse, error)
	Statistics(ctx context.Context, in *StatisticsRequest, opts ...grpc.CallOption) (*StatisticsResponse, error)
	CollectionList(ctx context.Context, in *CollectionListRequest, opts ...grpc.CallOption) (*CollectionListResponse, error)
	CollectionDelete(ctx context.Context, in *CollectionDeleteRequest, opts ...grpc.CallOption) (*CollectionDeleteResponse, error)
	VolumeList(ctx context.Context, in *VolumeListRequest, opts ...grpc.CallOption) (*VolumeListResponse, error)
	LookupEcVolume(ctx context.Context, in *LookupEcVolumeRequest, opts ...grpc.CallOption) (*LookupEcVolumeResponse, error)
}

type seaweedClient struct {
	cc *grpc.ClientConn
}

func NewSeaweedClient(cc *grpc.ClientConn) SeaweedClient {
	return &seaweedClient{cc}
}

func (c *seaweedClient) SendHeartbeat(ctx context.Context, opts ...grpc.CallOption) (Seaweed_SendHeartbeatClient, error) {
	stream, err := grpc.NewClientStream(ctx, &_Seaweed_serviceDesc.Streams[0], c.cc, "/master_pb.Seaweed/SendHeartbeat", opts...)
	if err != nil {
		return nil, err
	}
	x := &seaweedSendHeartbeatClient{stream}
	return x, nil
}

type Seaweed_SendHeartbeatClient interface {
	Send(*Heartbeat) error
	Recv() (*HeartbeatResponse, error)
	grpc.ClientStream
}

type seaweedSendHeartbeatClient struct {
	grpc.ClientStream
}

func (x *seaweedSendHeartbeatClient) Send(m *Heartbeat) error {
	return x.ClientStream.SendMsg(m)
}

func (x *seaweedSendHeartbeatClient) Recv() (*HeartbeatResponse, error) {
	m := new(HeartbeatResponse)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *seaweedClient) KeepConnected(ctx context.Context, opts ...grpc.CallOption) (Seaweed_KeepConnectedClient, error) {
	stream, err := grpc.NewClientStream(ctx, &_Seaweed_serviceDesc.Streams[1], c.cc, "/master_pb.Seaweed/KeepConnected", opts...)
	if err != nil {
		return nil, err
	}
	x := &seaweedKeepConnectedClient{stream}
	return x, nil
}

type Seaweed_KeepConnectedClient interface {
	Send(*ClientListenRequest) error
	Recv() (*VolumeLocation, error)
	grpc.ClientStream
}

type seaweedKeepConnectedClient struct {
	grpc.ClientStream
}

func (x *seaweedKeepConnectedClient) Send(m *ClientListenRequest) error {
	return x.ClientStream.SendMsg(m)
}

func (x *seaweedKeepConnectedClient) Recv() (*VolumeLocation, error) {
	m := new(VolumeLocation)
	if err := x.ClientStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func (c *seaweedClient) LookupVolume(ctx context.Context, in *LookupVolumeRequest, opts ...grpc.CallOption) (*LookupVolumeResponse, error) {
	out := new(LookupVolumeResponse)
	err := grpc.Invoke(ctx, "/master_pb.Seaweed/LookupVolume", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *seaweedClient) Assign(ctx context.Context, in *AssignRequest, opts ...grpc.CallOption) (*AssignResponse, error) {
	out := new(AssignResponse)
	err := grpc.Invoke(ctx, "/master_pb.Seaweed/Assign", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *seaweedClient) Statistics(ctx context.Context, in *StatisticsRequest, opts ...grpc.CallOption) (*StatisticsResponse, error) {
	out := new(StatisticsResponse)
	err := grpc.Invoke(ctx, "/master_pb.Seaweed/Statistics", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *seaweedClient) CollectionList(ctx context.Context, in *CollectionListRequest, opts ...grpc.CallOption) (*CollectionListResponse, error) {
	out := new(CollectionListResponse)
	err := grpc.Invoke(ctx, "/master_pb.Seaweed/CollectionList", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *seaweedClient) CollectionDelete(ctx context.Context, in *CollectionDeleteRequest, opts ...grpc.CallOption) (*CollectionDeleteResponse, error) {
	out := new(CollectionDeleteResponse)
	err := grpc.Invoke(ctx, "/master_pb.Seaweed/CollectionDelete", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *seaweedClient) VolumeList(ctx context.Context, in *VolumeListRequest, opts ...grpc.CallOption) (*VolumeListResponse, error) {
	out := new(VolumeListResponse)
	err := grpc.Invoke(ctx, "/master_pb.Seaweed/VolumeList", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *seaweedClient) LookupEcVolume(ctx context.Context, in *LookupEcVolumeRequest, opts ...grpc.CallOption) (*LookupEcVolumeResponse, error) {
	out := new(LookupEcVolumeResponse)
	err := grpc.Invoke(ctx, "/master_pb.Seaweed/LookupEcVolume", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Server API for Seaweed service

type SeaweedServer interface {
	SendHeartbeat(Seaweed_SendHeartbeatServer) error
	KeepConnected(Seaweed_KeepConnectedServer) error
	LookupVolume(context.Context, *LookupVolumeRequest) (*LookupVolumeResponse, error)
	Assign(context.Context, *AssignRequest) (*AssignResponse, error)
	Statistics(context.Context, *StatisticsRequest) (*StatisticsResponse, error)
	CollectionList(context.Context, *CollectionListRequest) (*CollectionListResponse, error)
	CollectionDelete(context.Context, *CollectionDeleteRequest) (*CollectionDeleteResponse, error)
	VolumeList(context.Context, *VolumeListRequest) (*VolumeListResponse, error)
	LookupEcVolume(context.Context, *LookupEcVolumeRequest) (*LookupEcVolumeResponse, error)
}

func RegisterSeaweedServer(s *grpc.Server, srv SeaweedServer) {
	s.RegisterService(&_Seaweed_serviceDesc, srv)
}

func _Seaweed_SendHeartbeat_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(SeaweedServer).SendHeartbeat(&seaweedSendHeartbeatServer{stream})
}

type Seaweed_SendHeartbeatServer interface {
	Send(*HeartbeatResponse) error
	Recv() (*Heartbeat, error)
	grpc.ServerStream
}

type seaweedSendHeartbeatServer struct {
	grpc.ServerStream
}

func (x *seaweedSendHeartbeatServer) Send(m *HeartbeatResponse) error {
	return x.ServerStream.SendMsg(m)
}

func (x *seaweedSendHeartbeatServer) Recv() (*Heartbeat, error) {
	m := new(Heartbeat)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func _Seaweed_KeepConnected_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(SeaweedServer).KeepConnected(&seaweedKeepConnectedServer{stream})
}

type Seaweed_KeepConnectedServer interface {
	Send(*VolumeLocation) error
	Recv() (*ClientListenRequest, error)
	grpc.ServerStream
}

type seaweedKeepConnectedServer struct {
	grpc.ServerStream
}

func (x *seaweedKeepConnectedServer) Send(m *VolumeLocation) error {
	return x.ServerStream.SendMsg(m)
}

func (x *seaweedKeepConnectedServer) Recv() (*ClientListenRequest, error) {
	m := new(ClientListenRequest)
	if err := x.ServerStream.RecvMsg(m); err != nil {
		return nil, err
	}
	return m, nil
}

func _Seaweed_LookupVolume_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(LookupVolumeRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SeaweedServer).LookupVolume(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/master_pb.Seaweed/LookupVolume",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SeaweedServer).LookupVolume(ctx, req.(*LookupVolumeRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Seaweed_Assign_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AssignRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SeaweedServer).Assign(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/master_pb.Seaweed/Assign",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SeaweedServer).Assign(ctx, req.(*AssignRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Seaweed_Statistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(StatisticsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SeaweedServer).Statistics(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/master_pb.Seaweed/Statistics",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SeaweedServer).Statistics(ctx, req.(*StatisticsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Seaweed_CollectionList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CollectionListRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SeaweedServer).CollectionList(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/master_pb.Seaweed/CollectionList",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SeaweedServer).CollectionList(ctx, req.(*CollectionListRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Seaweed_CollectionDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CollectionDeleteRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SeaweedServer).CollectionDelete(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/master_pb.Seaweed/CollectionDelete",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SeaweedServer).CollectionDelete(ctx, req.(*CollectionDeleteRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Seaweed_VolumeList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(VolumeListRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SeaweedServer).VolumeList(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/master_pb.Seaweed/VolumeList",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SeaweedServer).VolumeList(ctx, req.(*VolumeListRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Seaweed_LookupEcVolume_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(LookupEcVolumeRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SeaweedServer).LookupEcVolume(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/master_pb.Seaweed/LookupEcVolume",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SeaweedServer).LookupEcVolume(ctx, req.(*LookupEcVolumeRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _Seaweed_serviceDesc = grpc.ServiceDesc{
	ServiceName: "master_pb.Seaweed",
	HandlerType: (*SeaweedServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "LookupVolume",
			Handler:    _Seaweed_LookupVolume_Handler,
		},
		{
			MethodName: "Assign",
			Handler:    _Seaweed_Assign_Handler,
		},
		{
			MethodName: "Statistics",
			Handler:    _Seaweed_Statistics_Handler,
		},
		{
			MethodName: "CollectionList",
			Handler:    _Seaweed_CollectionList_Handler,
		},
		{
			MethodName: "CollectionDelete",
			Handler:    _Seaweed_CollectionDelete_Handler,
		},
		{
			MethodName: "VolumeList",
			Handler:    _Seaweed_VolumeList_Handler,
		},
		{
			MethodName: "LookupEcVolume",
			Handler:    _Seaweed_LookupEcVolume_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "SendHeartbeat",
			Handler:       _Seaweed_SendHeartbeat_Handler,
			ServerStreams: true,
			ClientStreams: true,
		},
		{
			StreamName:    "KeepConnected",
			Handler:       _Seaweed_KeepConnected_Handler,
			ServerStreams: true,
			ClientStreams: true,
		},
	},
	Metadata: "master.proto",
}

func init() { proto.RegisterFile("master.proto", fileDescriptor0) }

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