// 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
	StorageBackend
	Empty
	SuperBlockExtra
	KeepConnectedRequest
	VolumeLocation
	LookupVolumeRequest
	LookupVolumeResponse
	Location
	AssignRequest
	AssignResponse
	StatisticsRequest
	StatisticsResponse
	StorageType
	Collection
	CollectionListRequest
	CollectionListResponse
	CollectionDeleteRequest
	CollectionDeleteResponse
	DataNodeInfo
	RackInfo
	DataCenterInfo
	TopologyInfo
	VolumeListRequest
	VolumeListResponse
	LookupEcVolumeRequest
	LookupEcVolumeResponse
	GetMasterConfigurationRequest
	GetMasterConfigurationResponse
	ListMasterClientsRequest
	ListMasterClientsResponse
	LeaseAdminTokenRequest
	LeaseAdminTokenResponse
	ReleaseAdminTokenRequest
	ReleaseAdminTokenResponse
	VerifyAdminTokenRequest
	VerifyAdminTokenResponse
*/
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=volume_size_limit,json=volumeSizeLimit" json:"volume_size_limit,omitempty"`
	Leader                 string            `protobuf:"bytes,2,opt,name=leader" json:"leader,omitempty"`
	MetricsAddress         string            `protobuf:"bytes,3,opt,name=metrics_address,json=metricsAddress" json:"metrics_address,omitempty"`
	MetricsIntervalSeconds uint32            `protobuf:"varint,4,opt,name=metrics_interval_seconds,json=metricsIntervalSeconds" json:"metrics_interval_seconds,omitempty"`
	StorageBackends        []*StorageBackend `protobuf:"bytes,5,rep,name=storage_backends,json=storageBackends" json:"storage_backends,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 ""
}

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

func (m *HeartbeatResponse) GetMetricsIntervalSeconds() uint32 {
	if m != nil {
		return m.MetricsIntervalSeconds
	}
	return 0
}

func (m *HeartbeatResponse) GetStorageBackends() []*StorageBackend {
	if m != nil {
		return m.StorageBackends
	}
	return nil
}

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"`
	RemoteStorageName string `protobuf:"bytes,13,opt,name=remote_storage_name,json=remoteStorageName" json:"remote_storage_name,omitempty"`
	RemoteStorageKey  string `protobuf:"bytes,14,opt,name=remote_storage_key,json=remoteStorageKey" json:"remote_storage_key,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
}

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

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

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 StorageBackend struct {
	Type       string            `protobuf:"bytes,1,opt,name=type" json:"type,omitempty"`
	Id         string            `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"`
	Properties map[string]string `protobuf:"bytes,3,rep,name=properties" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}

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

func (m *StorageBackend) GetType() string {
	if m != nil {
		return m.Type
	}
	return ""
}

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

func (m *StorageBackend) GetProperties() map[string]string {
	if m != nil {
		return m.Properties
	}
	return nil
}

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{6} }

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

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{7, 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 KeepConnectedRequest struct {
	Name     string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	GrpcPort uint32 `protobuf:"varint,2,opt,name=grpc_port,json=grpcPort" json:"grpc_port,omitempty"`
}

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

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

func (m *KeepConnectedRequest) GetGrpcPort() uint32 {
	if m != nil {
		return m.GrpcPort
	}
	return 0
}

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"`
	Leader      string   `protobuf:"bytes,5,opt,name=leader" json:"leader,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{9} }

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
}

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

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{10} }

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{11} }

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{11, 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{12} }

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"`
	MemoryMapMaxSizeMb  uint32 `protobuf:"varint,8,opt,name=memory_map_max_size_mb,json=memoryMapMaxSizeMb" json:"memory_map_max_size_mb,omitempty"`
	WritableVolumeCount uint32 `protobuf:"varint,9,opt,name=Writable_volume_count,json=WritableVolumeCount" json:"Writable_volume_count,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{13} }

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

func (m *AssignRequest) GetMemoryMapMaxSizeMb() uint32 {
	if m != nil {
		return m.MemoryMapMaxSizeMb
	}
	return 0
}

func (m *AssignRequest) GetWritableVolumeCount() uint32 {
	if m != nil {
		return m.WritableVolumeCount
	}
	return 0
}

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{14} }

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{15} }

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{16} }

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{17} }

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{18} }

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{19} }

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{20} }

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{21} }

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{22} }

//
// 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"`
	RemoteVolumeCount uint64                             `protobuf:"varint,8,opt,name=remote_volume_count,json=remoteVolumeCount" json:"remote_volume_count,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{23} }

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
}

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

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"`
	RemoteVolumeCount uint64          `protobuf:"varint,7,opt,name=remote_volume_count,json=remoteVolumeCount" json:"remote_volume_count,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{24} }

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
}

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

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"`
	RemoteVolumeCount uint64      `protobuf:"varint,7,opt,name=remote_volume_count,json=remoteVolumeCount" json:"remote_volume_count,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{25} }

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
}

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

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"`
	RemoteVolumeCount uint64            `protobuf:"varint,7,opt,name=remote_volume_count,json=remoteVolumeCount" json:"remote_volume_count,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{26} }

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
}

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

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{27} }

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{28} }

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{29} }

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{30} }

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{30, 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
}

type GetMasterConfigurationRequest struct {
}

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

type GetMasterConfigurationResponse struct {
	MetricsAddress         string `protobuf:"bytes,1,opt,name=metrics_address,json=metricsAddress" json:"metrics_address,omitempty"`
	MetricsIntervalSeconds uint32 `protobuf:"varint,2,opt,name=metrics_interval_seconds,json=metricsIntervalSeconds" json:"metrics_interval_seconds,omitempty"`
}

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

func (m *GetMasterConfigurationResponse) GetMetricsAddress() string {
	if m != nil {
		return m.MetricsAddress
	}
	return ""
}

func (m *GetMasterConfigurationResponse) GetMetricsIntervalSeconds() uint32 {
	if m != nil {
		return m.MetricsIntervalSeconds
	}
	return 0
}

type ListMasterClientsRequest struct {
	ClientType string `protobuf:"bytes,1,opt,name=client_type,json=clientType" json:"client_type,omitempty"`
}

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

func (m *ListMasterClientsRequest) GetClientType() string {
	if m != nil {
		return m.ClientType
	}
	return ""
}

type ListMasterClientsResponse struct {
	GrpcAddresses []string `protobuf:"bytes,1,rep,name=grpc_addresses,json=grpcAddresses" json:"grpc_addresses,omitempty"`
}

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

func (m *ListMasterClientsResponse) GetGrpcAddresses() []string {
	if m != nil {
		return m.GrpcAddresses
	}
	return nil
}

type LeaseAdminTokenRequest struct {
	PreviousToken    int64 `protobuf:"varint,1,opt,name=previous_token,json=previousToken" json:"previous_token,omitempty"`
	PreviousLockTime int64 `protobuf:"varint,2,opt,name=previous_lock_time,json=previousLockTime" json:"previous_lock_time,omitempty"`
}

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

func (m *LeaseAdminTokenRequest) GetPreviousToken() int64 {
	if m != nil {
		return m.PreviousToken
	}
	return 0
}

func (m *LeaseAdminTokenRequest) GetPreviousLockTime() int64 {
	if m != nil {
		return m.PreviousLockTime
	}
	return 0
}

type LeaseAdminTokenResponse struct {
	IsAllowed bool   `protobuf:"varint,1,opt,name=is_allowed,json=isAllowed" json:"is_allowed,omitempty"`
	Error     string `protobuf:"bytes,2,opt,name=error" json:"error,omitempty"`
	LockTsNs  int64  `protobuf:"varint,3,opt,name=lock_ts_ns,json=lockTsNs" json:"lock_ts_ns,omitempty"`
	Token     int64  `protobuf:"varint,4,opt,name=token" json:"token,omitempty"`
}

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

func (m *LeaseAdminTokenResponse) GetIsAllowed() bool {
	if m != nil {
		return m.IsAllowed
	}
	return false
}

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

func (m *LeaseAdminTokenResponse) GetLockTsNs() int64 {
	if m != nil {
		return m.LockTsNs
	}
	return 0
}

func (m *LeaseAdminTokenResponse) GetToken() int64 {
	if m != nil {
		return m.Token
	}
	return 0
}

type ReleaseAdminTokenRequest struct {
	PreviousToken    int64 `protobuf:"varint,1,opt,name=previous_token,json=previousToken" json:"previous_token,omitempty"`
	PreviousLockTime int64 `protobuf:"varint,2,opt,name=previous_lock_time,json=previousLockTime" json:"previous_lock_time,omitempty"`
}

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

func (m *ReleaseAdminTokenRequest) GetPreviousToken() int64 {
	if m != nil {
		return m.PreviousToken
	}
	return 0
}

func (m *ReleaseAdminTokenRequest) GetPreviousLockTime() int64 {
	if m != nil {
		return m.PreviousLockTime
	}
	return 0
}

type ReleaseAdminTokenResponse struct {
}

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

type VerifyAdminTokenRequest struct {
	Token    int64 `protobuf:"varint,1,opt,name=token" json:"token,omitempty"`
	LockTime int64 `protobuf:"varint,2,opt,name=lock_time,json=lockTime" json:"lock_time,omitempty"`
}

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

func (m *VerifyAdminTokenRequest) GetToken() int64 {
	if m != nil {
		return m.Token
	}
	return 0
}

func (m *VerifyAdminTokenRequest) GetLockTime() int64 {
	if m != nil {
		return m.LockTime
	}
	return 0
}

type VerifyAdminTokenResponse struct {
	IsValid bool `protobuf:"varint,1,opt,name=is_valid,json=isValid" json:"is_valid,omitempty"`
}

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

func (m *VerifyAdminTokenResponse) GetIsValid() bool {
	if m != nil {
		return m.IsValid
	}
	return false
}

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((*StorageBackend)(nil), "master_pb.StorageBackend")
	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((*KeepConnectedRequest)(nil), "master_pb.KeepConnectedRequest")
	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")
	proto.RegisterType((*GetMasterConfigurationRequest)(nil), "master_pb.GetMasterConfigurationRequest")
	proto.RegisterType((*GetMasterConfigurationResponse)(nil), "master_pb.GetMasterConfigurationResponse")
	proto.RegisterType((*ListMasterClientsRequest)(nil), "master_pb.ListMasterClientsRequest")
	proto.RegisterType((*ListMasterClientsResponse)(nil), "master_pb.ListMasterClientsResponse")
	proto.RegisterType((*LeaseAdminTokenRequest)(nil), "master_pb.LeaseAdminTokenRequest")
	proto.RegisterType((*LeaseAdminTokenResponse)(nil), "master_pb.LeaseAdminTokenResponse")
	proto.RegisterType((*ReleaseAdminTokenRequest)(nil), "master_pb.ReleaseAdminTokenRequest")
	proto.RegisterType((*ReleaseAdminTokenResponse)(nil), "master_pb.ReleaseAdminTokenResponse")
	proto.RegisterType((*VerifyAdminTokenRequest)(nil), "master_pb.VerifyAdminTokenRequest")
	proto.RegisterType((*VerifyAdminTokenResponse)(nil), "master_pb.VerifyAdminTokenResponse")
}

// 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)
	GetMasterConfiguration(ctx context.Context, in *GetMasterConfigurationRequest, opts ...grpc.CallOption) (*GetMasterConfigurationResponse, error)
	ListMasterClients(ctx context.Context, in *ListMasterClientsRequest, opts ...grpc.CallOption) (*ListMasterClientsResponse, error)
	LeaseAdminToken(ctx context.Context, in *LeaseAdminTokenRequest, opts ...grpc.CallOption) (*LeaseAdminTokenResponse, error)
	ReleaseAdminToken(ctx context.Context, in *ReleaseAdminTokenRequest, opts ...grpc.CallOption) (*ReleaseAdminTokenResponse, error)
	VerifyAdminToken(ctx context.Context, in *VerifyAdminTokenRequest, opts ...grpc.CallOption) (*VerifyAdminTokenResponse, 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(*KeepConnectedRequest) error
	Recv() (*VolumeLocation, error)
	grpc.ClientStream
}

type seaweedKeepConnectedClient struct {
	grpc.ClientStream
}

func (x *seaweedKeepConnectedClient) Send(m *KeepConnectedRequest) 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
}

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

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

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

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

func (c *seaweedClient) VerifyAdminToken(ctx context.Context, in *VerifyAdminTokenRequest, opts ...grpc.CallOption) (*VerifyAdminTokenResponse, error) {
	out := new(VerifyAdminTokenResponse)
	err := grpc.Invoke(ctx, "/master_pb.Seaweed/VerifyAdminToken", 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)
	GetMasterConfiguration(context.Context, *GetMasterConfigurationRequest) (*GetMasterConfigurationResponse, error)
	ListMasterClients(context.Context, *ListMasterClientsRequest) (*ListMasterClientsResponse, error)
	LeaseAdminToken(context.Context, *LeaseAdminTokenRequest) (*LeaseAdminTokenResponse, error)
	ReleaseAdminToken(context.Context, *ReleaseAdminTokenRequest) (*ReleaseAdminTokenResponse, error)
	VerifyAdminToken(context.Context, *VerifyAdminTokenRequest) (*VerifyAdminTokenResponse, 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() (*KeepConnectedRequest, error)
	grpc.ServerStream
}

type seaweedKeepConnectedServer struct {
	grpc.ServerStream
}

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

func (x *seaweedKeepConnectedServer) Recv() (*KeepConnectedRequest, error) {
	m := new(KeepConnectedRequest)
	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)
}

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

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

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

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

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