package metrics

import (
	timestamp "github.com/golang/protobuf/ptypes/timestamp"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (

	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)

	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type ZmetricTypes int32

const (
	ZmetricTypes_ZmNop    ZmetricTypes = 0
	ZmetricTypes_ZmDevice ZmetricTypes = 1
	ZmetricTypes_ZmApp    ZmetricTypes = 3
)

var (
	ZmetricTypes_name = map[int32]string{
		0: "ZmNop",
		1: "ZmDevice",
		3: "ZmApp",
	}
	ZmetricTypes_value = map[string]int32{
		"ZmNop":    0,
		"ZmDevice": 1,
		"ZmApp":    3,
	}
)

func (x ZmetricTypes) Enum() *ZmetricTypes {
	p := new(ZmetricTypes)
	*p = x
	return p
}

func (x ZmetricTypes) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ZmetricTypes) Descriptor() protoreflect.EnumDescriptor {
	return file_metrics_metrics_proto_enumTypes[0].Descriptor()
}

func (ZmetricTypes) Type() protoreflect.EnumType {
	return &file_metrics_metrics_proto_enumTypes[0]
}

func (x ZmetricTypes) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

func (ZmetricTypes) EnumDescriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{0}
}

type CipherError int32

const (
	CipherError_CIPHER_ERROR_INVALID            CipherError = 0
	CipherError_CIPHER_ERROR_NOT_READY          CipherError = 1 
	CipherError_CIPHER_ERROR_DECRYPT_FAILED     CipherError = 2 
	CipherError_CIPHER_ERROR_UNMARSHAL_FAILED   CipherError = 3 
	CipherError_CIPHER_ERROR_CLEARTEXT_FALLBACK CipherError = 4 
	CipherError_CIPHER_ERROR_MISSING_FALLBACK   CipherError = 5 
	CipherError_CIPHER_ERROR_NO_CIPHER          CipherError = 6 
	CipherError_CIPHER_ERROR_NO_DATA            CipherError = 7 
)

var (
	CipherError_name = map[int32]string{
		0: "CIPHER_ERROR_INVALID",
		1: "CIPHER_ERROR_NOT_READY",
		2: "CIPHER_ERROR_DECRYPT_FAILED",
		3: "CIPHER_ERROR_UNMARSHAL_FAILED",
		4: "CIPHER_ERROR_CLEARTEXT_FALLBACK",
		5: "CIPHER_ERROR_MISSING_FALLBACK",
		6: "CIPHER_ERROR_NO_CIPHER",
		7: "CIPHER_ERROR_NO_DATA",
	}
	CipherError_value = map[string]int32{
		"CIPHER_ERROR_INVALID":            0,
		"CIPHER_ERROR_NOT_READY":          1,
		"CIPHER_ERROR_DECRYPT_FAILED":     2,
		"CIPHER_ERROR_UNMARSHAL_FAILED":   3,
		"CIPHER_ERROR_CLEARTEXT_FALLBACK": 4,
		"CIPHER_ERROR_MISSING_FALLBACK":   5,
		"CIPHER_ERROR_NO_CIPHER":          6,
		"CIPHER_ERROR_NO_DATA":            7,
	}
)

func (x CipherError) Enum() *CipherError {
	p := new(CipherError)
	*p = x
	return p
}

func (x CipherError) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (CipherError) Descriptor() protoreflect.EnumDescriptor {
	return file_metrics_metrics_proto_enumTypes[1].Descriptor()
}

func (CipherError) Type() protoreflect.EnumType {
	return &file_metrics_metrics_proto_enumTypes[1]
}

func (x CipherError) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

func (CipherError) EnumDescriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{1}
}

type StorageStatus int32

const (
	StorageStatus_STORAGE_STATUS_UNSPECIFIED StorageStatus = 0
	StorageStatus_STORAGE_STATUS_ONLINE      StorageStatus = 1 
	StorageStatus_STORAGE_STATUS_DEGRADED    StorageStatus = 2 
	StorageStatus_STORAGE_STATUS_FAULTED     StorageStatus = 3 
	StorageStatus_STORAGE_STATUS_OFFLINE     StorageStatus = 4 
	StorageStatus_STORAGE_STATUS_UNAVAIL     StorageStatus = 5 
	StorageStatus_STORAGE_STATUS_REMOVED     StorageStatus = 6 
	StorageStatus_STORAGE_STATUS_SUSPENDED   StorageStatus = 7 
)

var (
	StorageStatus_name = map[int32]string{
		0: "STORAGE_STATUS_UNSPECIFIED",
		1: "STORAGE_STATUS_ONLINE",
		2: "STORAGE_STATUS_DEGRADED",
		3: "STORAGE_STATUS_FAULTED",
		4: "STORAGE_STATUS_OFFLINE",
		5: "STORAGE_STATUS_UNAVAIL",
		6: "STORAGE_STATUS_REMOVED",
		7: "STORAGE_STATUS_SUSPENDED",
	}
	StorageStatus_value = map[string]int32{
		"STORAGE_STATUS_UNSPECIFIED": 0,
		"STORAGE_STATUS_ONLINE":      1,
		"STORAGE_STATUS_DEGRADED":    2,
		"STORAGE_STATUS_FAULTED":     3,
		"STORAGE_STATUS_OFFLINE":     4,
		"STORAGE_STATUS_UNAVAIL":     5,
		"STORAGE_STATUS_REMOVED":     6,
		"STORAGE_STATUS_SUSPENDED":   7,
	}
)

func (x StorageStatus) Enum() *StorageStatus {
	p := new(StorageStatus)
	*p = x
	return p
}

func (x StorageStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (StorageStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_metrics_metrics_proto_enumTypes[2].Descriptor()
}

func (StorageStatus) Type() protoreflect.EnumType {
	return &file_metrics_metrics_proto_enumTypes[2]
}

func (x StorageStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

func (StorageStatus) EnumDescriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{2}
}

type MetricItemType int32

const (
	MetricItemType_MetricItemOther   MetricItemType = 0 
	MetricItemType_MetricItemGauge   MetricItemType = 1 
	MetricItemType_MetricItemCounter MetricItemType = 2 
	MetricItemType_MetricItemState   MetricItemType = 3 
)

var (
	MetricItemType_name = map[int32]string{
		0: "MetricItemOther",
		1: "MetricItemGauge",
		2: "MetricItemCounter",
		3: "MetricItemState",
	}
	MetricItemType_value = map[string]int32{
		"MetricItemOther":   0,
		"MetricItemGauge":   1,
		"MetricItemCounter": 2,
		"MetricItemState":   3,
	}
)

func (x MetricItemType) Enum() *MetricItemType {
	p := new(MetricItemType)
	*p = x
	return p
}

func (x MetricItemType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (MetricItemType) Descriptor() protoreflect.EnumDescriptor {
	return file_metrics_metrics_proto_enumTypes[3].Descriptor()
}

func (MetricItemType) Type() protoreflect.EnumType {
	return &file_metrics_metrics_proto_enumTypes[3]
}

func (x MetricItemType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

func (MetricItemType) EnumDescriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{3}
}

type MemoryMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UsedMem         uint32  `protobuf:"varint,2,opt,name=usedMem,proto3" json:"usedMem,omitempty"`                  
	AvailMem        uint32  `protobuf:"varint,3,opt,name=availMem,proto3" json:"availMem,omitempty"`                
	UsedPercentage  float64 `protobuf:"fixed64,4,opt,name=usedPercentage,proto3" json:"usedPercentage,omitempty"`   
	AvailPercentage float64 `protobuf:"fixed64,5,opt,name=availPercentage,proto3" json:"availPercentage,omitempty"` 
}

func (x *MemoryMetric) Reset() {
	*x = MemoryMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MemoryMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MemoryMetric) ProtoMessage() {}

func (x *MemoryMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*MemoryMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{0}
}

func (x *MemoryMetric) GetUsedMem() uint32 {
	if x != nil {
		return x.UsedMem
	}
	return 0
}

func (x *MemoryMetric) GetAvailMem() uint32 {
	if x != nil {
		return x.AvailMem
	}
	return 0
}

func (x *MemoryMetric) GetUsedPercentage() float64 {
	if x != nil {
		return x.UsedPercentage
	}
	return 0
}

func (x *MemoryMetric) GetAvailPercentage() float64 {
	if x != nil {
		return x.AvailPercentage
	}
	return 0
}

type AppMemoryMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AllocatedMB uint32 `protobuf:"varint,1,opt,name=allocatedMB,proto3" json:"allocatedMB,omitempty"`

	UsedMB uint32 `protobuf:"varint,2,opt,name=usedMB,proto3" json:"usedMB,omitempty"`
}

func (x *AppMemoryMetric) Reset() {
	*x = AppMemoryMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AppMemoryMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AppMemoryMetric) ProtoMessage() {}

func (x *AppMemoryMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*AppMemoryMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{1}
}

func (x *AppMemoryMetric) GetAllocatedMB() uint32 {
	if x != nil {
		return x.AllocatedMB
	}
	return 0
}

func (x *AppMemoryMetric) GetUsedMB() uint32 {
	if x != nil {
		return x.UsedMB
	}
	return 0
}

type DeviceMemoryMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	MemoryMB uint32 `protobuf:"varint,1,opt,name=memoryMB,proto3" json:"memoryMB,omitempty"`

	AllocatedAppsMB uint32 `protobuf:"varint,2,opt,name=allocated_appsMB,json=allocatedAppsMB,proto3" json:"allocated_appsMB,omitempty"`

	AllocatedEveMB uint32 `protobuf:"varint,3,opt,name=allocated_eveMB,json=allocatedEveMB,proto3" json:"allocated_eveMB,omitempty"`

	UsedEveMB uint32 `protobuf:"varint,4,opt,name=used_eveMB,json=usedEveMB,proto3" json:"used_eveMB,omitempty"`
}

func (x *DeviceMemoryMetric) Reset() {
	*x = DeviceMemoryMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeviceMemoryMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeviceMemoryMetric) ProtoMessage() {}

func (x *DeviceMemoryMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*DeviceMemoryMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{2}
}

func (x *DeviceMemoryMetric) GetMemoryMB() uint32 {
	if x != nil {
		return x.MemoryMB
	}
	return 0
}

func (x *DeviceMemoryMetric) GetAllocatedAppsMB() uint32 {
	if x != nil {
		return x.AllocatedAppsMB
	}
	return 0
}

func (x *DeviceMemoryMetric) GetAllocatedEveMB() uint32 {
	if x != nil {
		return x.AllocatedEveMB
	}
	return 0
}

func (x *DeviceMemoryMetric) GetUsedEveMB() uint32 {
	if x != nil {
		return x.UsedEveMB
	}
	return 0
}

type NetworkMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	IName string `protobuf:"bytes,1,opt,name=iName,proto3" json:"iName,omitempty"` 

	Alias   string `protobuf:"bytes,20,opt,name=alias,proto3" json:"alias,omitempty"`
	TxBytes uint64 `protobuf:"varint,2,opt,name=txBytes,proto3" json:"txBytes,omitempty"` 
	RxBytes uint64 `protobuf:"varint,3,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"` 
	TxDrops uint64 `protobuf:"varint,4,opt,name=txDrops,proto3" json:"txDrops,omitempty"`
	RxDrops uint64 `protobuf:"varint,5,opt,name=rxDrops,proto3" json:"rxDrops,omitempty"`

	TxPkts              uint64 `protobuf:"varint,8,opt,name=txPkts,proto3" json:"txPkts,omitempty"`
	RxPkts              uint64 `protobuf:"varint,9,opt,name=rxPkts,proto3" json:"rxPkts,omitempty"`
	TxErrors            uint64 `protobuf:"varint,10,opt,name=txErrors,proto3" json:"txErrors,omitempty"`
	RxErrors            uint64 `protobuf:"varint,11,opt,name=rxErrors,proto3" json:"rxErrors,omitempty"`
	TxAclDrops          uint64 `protobuf:"varint,12,opt,name=txAclDrops,proto3" json:"txAclDrops,omitempty"`
	RxAclDrops          uint64 `protobuf:"varint,13,opt,name=rxAclDrops,proto3" json:"rxAclDrops,omitempty"`
	TxAclRateLimitDrops uint64 `protobuf:"varint,14,opt,name=txAclRateLimitDrops,proto3" json:"txAclRateLimitDrops,omitempty"`
	RxAclRateLimitDrops uint64 `protobuf:"varint,15,opt,name=rxAclRateLimitDrops,proto3" json:"rxAclRateLimitDrops,omitempty"`

	LocalName string `protobuf:"bytes,16,opt,name=localName,proto3" json:"localName,omitempty"` 
}

func (x *NetworkMetric) Reset() {
	*x = NetworkMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NetworkMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NetworkMetric) ProtoMessage() {}

func (x *NetworkMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*NetworkMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{3}
}

func (x *NetworkMetric) GetIName() string {
	if x != nil {
		return x.IName
	}
	return ""
}

func (x *NetworkMetric) GetAlias() string {
	if x != nil {
		return x.Alias
	}
	return ""
}

func (x *NetworkMetric) GetTxBytes() uint64 {
	if x != nil {
		return x.TxBytes
	}
	return 0
}

func (x *NetworkMetric) GetRxBytes() uint64 {
	if x != nil {
		return x.RxBytes
	}
	return 0
}

func (x *NetworkMetric) GetTxDrops() uint64 {
	if x != nil {
		return x.TxDrops
	}
	return 0
}

func (x *NetworkMetric) GetRxDrops() uint64 {
	if x != nil {
		return x.RxDrops
	}
	return 0
}

func (x *NetworkMetric) GetTxPkts() uint64 {
	if x != nil {
		return x.TxPkts
	}
	return 0
}

func (x *NetworkMetric) GetRxPkts() uint64 {
	if x != nil {
		return x.RxPkts
	}
	return 0
}

func (x *NetworkMetric) GetTxErrors() uint64 {
	if x != nil {
		return x.TxErrors
	}
	return 0
}

func (x *NetworkMetric) GetRxErrors() uint64 {
	if x != nil {
		return x.RxErrors
	}
	return 0
}

func (x *NetworkMetric) GetTxAclDrops() uint64 {
	if x != nil {
		return x.TxAclDrops
	}
	return 0
}

func (x *NetworkMetric) GetRxAclDrops() uint64 {
	if x != nil {
		return x.RxAclDrops
	}
	return 0
}

func (x *NetworkMetric) GetTxAclRateLimitDrops() uint64 {
	if x != nil {
		return x.TxAclRateLimitDrops
	}
	return 0
}

func (x *NetworkMetric) GetRxAclRateLimitDrops() uint64 {
	if x != nil {
		return x.RxAclRateLimitDrops
	}
	return 0
}

func (x *NetworkMetric) GetLocalName() string {
	if x != nil {
		return x.LocalName
	}
	return ""
}

type CellularMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Logicallabel   string                  `protobuf:"bytes,1,opt,name=logicallabel,proto3" json:"logicallabel,omitempty"`
	SignalStrength *CellularSignalStrength `protobuf:"bytes,2,opt,name=signal_strength,json=signalStrength,proto3" json:"signal_strength,omitempty"`
	PacketStats    *CellularPacketStats    `protobuf:"bytes,3,opt,name=packet_stats,json=packetStats,proto3" json:"packet_stats,omitempty"`
}

func (x *CellularMetric) Reset() {
	*x = CellularMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CellularMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CellularMetric) ProtoMessage() {}

func (x *CellularMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*CellularMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{4}
}

func (x *CellularMetric) GetLogicallabel() string {
	if x != nil {
		return x.Logicallabel
	}
	return ""
}

func (x *CellularMetric) GetSignalStrength() *CellularSignalStrength {
	if x != nil {
		return x.SignalStrength
	}
	return nil
}

func (x *CellularMetric) GetPacketStats() *CellularPacketStats {
	if x != nil {
		return x.PacketStats
	}
	return nil
}

type CellularSignalStrength struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Rssi int32 `protobuf:"varint,1,opt,name=rssi,proto3" json:"rssi,omitempty"`
	Rsrq int32 `protobuf:"varint,2,opt,name=rsrq,proto3" json:"rsrq,omitempty"`
	Rsrp int32 `protobuf:"varint,3,opt,name=rsrp,proto3" json:"rsrp,omitempty"`
	Snr  int32 `protobuf:"varint,4,opt,name=snr,proto3" json:"snr,omitempty"`
}

func (x *CellularSignalStrength) Reset() {
	*x = CellularSignalStrength{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CellularSignalStrength) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CellularSignalStrength) ProtoMessage() {}

func (x *CellularSignalStrength) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*CellularSignalStrength) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{5}
}

func (x *CellularSignalStrength) GetRssi() int32 {
	if x != nil {
		return x.Rssi
	}
	return 0
}

func (x *CellularSignalStrength) GetRsrq() int32 {
	if x != nil {
		return x.Rsrq
	}
	return 0
}

func (x *CellularSignalStrength) GetRsrp() int32 {
	if x != nil {
		return x.Rsrp
	}
	return 0
}

func (x *CellularSignalStrength) GetSnr() int32 {
	if x != nil {
		return x.Snr
	}
	return 0
}

type CellularPacketStats struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Rx *NetworkStats `protobuf:"bytes,1,opt,name=rx,proto3" json:"rx,omitempty"`
	Tx *NetworkStats `protobuf:"bytes,2,opt,name=tx,proto3" json:"tx,omitempty"`
}

func (x *CellularPacketStats) Reset() {
	*x = CellularPacketStats{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CellularPacketStats) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CellularPacketStats) ProtoMessage() {}

func (x *CellularPacketStats) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*CellularPacketStats) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{6}
}

func (x *CellularPacketStats) GetRx() *NetworkStats {
	if x != nil {
		return x.Rx
	}
	return nil
}

func (x *CellularPacketStats) GetTx() *NetworkStats {
	if x != nil {
		return x.Tx
	}
	return nil
}

type ZedcloudMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	IfName            string               `protobuf:"bytes,1,opt,name=ifName,proto3" json:"ifName,omitempty"` 
	Failures          uint64               `protobuf:"varint,2,opt,name=failures,proto3" json:"failures,omitempty"`
	Success           uint64               `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"`
	LastFailure       *timestamp.Timestamp `protobuf:"bytes,4,opt,name=lastFailure,proto3" json:"lastFailure,omitempty"`
	LastSuccess       *timestamp.Timestamp `protobuf:"bytes,5,opt,name=lastSuccess,proto3" json:"lastSuccess,omitempty"`
	UrlMetrics        []*UrlcloudMetric    `protobuf:"bytes,6,rep,name=urlMetrics,proto3" json:"urlMetrics,omitempty"`
	AuthVerifyFailure uint64               `protobuf:"varint,7,opt,name=authVerifyFailure,proto3" json:"authVerifyFailure,omitempty"` 
}

func (x *ZedcloudMetric) Reset() {
	*x = ZedcloudMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZedcloudMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZedcloudMetric) ProtoMessage() {}

func (x *ZedcloudMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZedcloudMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{7}
}

func (x *ZedcloudMetric) GetIfName() string {
	if x != nil {
		return x.IfName
	}
	return ""
}

func (x *ZedcloudMetric) GetFailures() uint64 {
	if x != nil {
		return x.Failures
	}
	return 0
}

func (x *ZedcloudMetric) GetSuccess() uint64 {
	if x != nil {
		return x.Success
	}
	return 0
}

func (x *ZedcloudMetric) GetLastFailure() *timestamp.Timestamp {
	if x != nil {
		return x.LastFailure
	}
	return nil
}

func (x *ZedcloudMetric) GetLastSuccess() *timestamp.Timestamp {
	if x != nil {
		return x.LastSuccess
	}
	return nil
}

func (x *ZedcloudMetric) GetUrlMetrics() []*UrlcloudMetric {
	if x != nil {
		return x.UrlMetrics
	}
	return nil
}

func (x *ZedcloudMetric) GetAuthVerifyFailure() uint64 {
	if x != nil {
		return x.AuthVerifyFailure
	}
	return 0
}

type UrlcloudMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Url             string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
	TryMsgCount     int64  `protobuf:"varint,2,opt,name=tryMsgCount,proto3" json:"tryMsgCount,omitempty"`   
	TryByteCount    int64  `protobuf:"varint,3,opt,name=tryByteCount,proto3" json:"tryByteCount,omitempty"` 
	SentMsgCount    int64  `protobuf:"varint,4,opt,name=sentMsgCount,proto3" json:"sentMsgCount,omitempty"`
	SentByteCount   int64  `protobuf:"varint,5,opt,name=sentByteCount,proto3" json:"sentByteCount,omitempty"`
	RecvMsgCount    int64  `protobuf:"varint,6,opt,name=recvMsgCount,proto3" json:"recvMsgCount,omitempty"`
	RecvByteCount   int64  `protobuf:"varint,7,opt,name=recvByteCount,proto3" json:"recvByteCount,omitempty"`
	TotalTimeSpent  int64  `protobuf:"varint,8,opt,name=total_time_spent,json=totalTimeSpent,proto3" json:"total_time_spent,omitempty"`    
	SessResumeCount int64  `protobuf:"varint,9,opt,name=sess_resume_count,json=sessResumeCount,proto3" json:"sess_resume_count,omitempty"` 
}

func (x *UrlcloudMetric) Reset() {
	*x = UrlcloudMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UrlcloudMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UrlcloudMetric) ProtoMessage() {}

func (x *UrlcloudMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*UrlcloudMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{8}
}

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

func (x *UrlcloudMetric) GetTryMsgCount() int64 {
	if x != nil {
		return x.TryMsgCount
	}
	return 0
}

func (x *UrlcloudMetric) GetTryByteCount() int64 {
	if x != nil {
		return x.TryByteCount
	}
	return 0
}

func (x *UrlcloudMetric) GetSentMsgCount() int64 {
	if x != nil {
		return x.SentMsgCount
	}
	return 0
}

func (x *UrlcloudMetric) GetSentByteCount() int64 {
	if x != nil {
		return x.SentByteCount
	}
	return 0
}

func (x *UrlcloudMetric) GetRecvMsgCount() int64 {
	if x != nil {
		return x.RecvMsgCount
	}
	return 0
}

func (x *UrlcloudMetric) GetRecvByteCount() int64 {
	if x != nil {
		return x.RecvByteCount
	}
	return 0
}

func (x *UrlcloudMetric) GetTotalTimeSpent() int64 {
	if x != nil {
		return x.TotalTimeSpent
	}
	return 0
}

func (x *UrlcloudMetric) GetSessResumeCount() int64 {
	if x != nil {
		return x.SessResumeCount
	}
	return 0
}

type CipherMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AgentName    string               `protobuf:"bytes,1,opt,name=agent_name,json=agentName,proto3" json:"agent_name,omitempty"`
	FailureCount uint64               `protobuf:"varint,2,opt,name=failure_count,json=failureCount,proto3" json:"failure_count,omitempty"`
	SuccessCount uint64               `protobuf:"varint,3,opt,name=success_count,json=successCount,proto3" json:"success_count,omitempty"`
	LastFailure  *timestamp.Timestamp `protobuf:"bytes,4,opt,name=last_failure,json=lastFailure,proto3" json:"last_failure,omitempty"`
	LastSuccess  *timestamp.Timestamp `protobuf:"bytes,5,opt,name=last_success,json=lastSuccess,proto3" json:"last_success,omitempty"`
	Tc           []*TypeCounter       `protobuf:"bytes,6,rep,name=tc,proto3" json:"tc,omitempty"`
}

func (x *CipherMetric) Reset() {
	*x = CipherMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CipherMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CipherMetric) ProtoMessage() {}

func (x *CipherMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*CipherMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{9}
}

func (x *CipherMetric) GetAgentName() string {
	if x != nil {
		return x.AgentName
	}
	return ""
}

func (x *CipherMetric) GetFailureCount() uint64 {
	if x != nil {
		return x.FailureCount
	}
	return 0
}

func (x *CipherMetric) GetSuccessCount() uint64 {
	if x != nil {
		return x.SuccessCount
	}
	return 0
}

func (x *CipherMetric) GetLastFailure() *timestamp.Timestamp {
	if x != nil {
		return x.LastFailure
	}
	return nil
}

func (x *CipherMetric) GetLastSuccess() *timestamp.Timestamp {
	if x != nil {
		return x.LastSuccess
	}
	return nil
}

func (x *CipherMetric) GetTc() []*TypeCounter {
	if x != nil {
		return x.Tc
	}
	return nil
}

type TypeCounter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ErrorCode CipherError `protobuf:"varint,1,opt,name=error_code,json=errorCode,proto3,enum=org.lfedge.eve.metrics.CipherError" json:"error_code,omitempty"`
	Count     uint64      `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
}

func (x *TypeCounter) Reset() {
	*x = TypeCounter{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TypeCounter) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TypeCounter) ProtoMessage() {}

func (x *TypeCounter) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*TypeCounter) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{10}
}

func (x *TypeCounter) GetErrorCode() CipherError {
	if x != nil {
		return x.ErrorCode
	}
	return CipherError_CIPHER_ERROR_INVALID
}

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

type AppCpuMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UpTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=upTime,proto3" json:"upTime,omitempty"`

	Total       uint64 `protobuf:"varint,5,opt,name=total,proto3" json:"total,omitempty"`                    
	SystemTotal uint64 `protobuf:"varint,6,opt,name=systemTotal,proto3" json:"systemTotal,omitempty"`        
	TotalNs     uint64 `protobuf:"varint,7,opt,name=total_ns,json=totalNs,proto3" json:"total_ns,omitempty"` 
}

func (x *AppCpuMetric) Reset() {
	*x = AppCpuMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AppCpuMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AppCpuMetric) ProtoMessage() {}

func (x *AppCpuMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*AppCpuMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{11}
}

func (x *AppCpuMetric) GetUpTime() *timestamp.Timestamp {
	if x != nil {
		return x.UpTime
	}
	return nil
}

func (x *AppCpuMetric) GetTotal() uint64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *AppCpuMetric) GetSystemTotal() uint64 {
	if x != nil {
		return x.SystemTotal
	}
	return 0
}

func (x *AppCpuMetric) GetTotalNs() uint64 {
	if x != nil {
		return x.TotalNs
	}
	return 0
}

type StorageDiskInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	DiskName string        `protobuf:"bytes,1,opt,name=disk_name,json=diskName,proto3" json:"disk_name,omitempty"`
	Status   StorageStatus `protobuf:"varint,2,opt,name=status,proto3,enum=org.lfedge.eve.metrics.StorageStatus" json:"status,omitempty"` 
}

func (x *StorageDiskInfo) Reset() {
	*x = StorageDiskInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StorageDiskInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StorageDiskInfo) ProtoMessage() {}

func (x *StorageDiskInfo) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*StorageDiskInfo) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{12}
}

func (x *StorageDiskInfo) GetDiskName() string {
	if x != nil {
		return x.DiskName
	}
	return ""
}

func (x *StorageDiskInfo) GetStatus() StorageStatus {
	if x != nil {
		return x.Status
	}
	return StorageStatus_STORAGE_STATUS_UNSPECIFIED
}

type StorageMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PoolName     string             `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"`
	CountVolume  uint32             `protobuf:"varint,2,opt,name=count_volume,json=countVolume,proto3" json:"count_volume,omitempty"`                                              
	StorageState StorageStatus      `protobuf:"varint,3,opt,name=storage_state,json=storageState,proto3,enum=org.lfedge.eve.metrics.StorageStatus" json:"storage_state,omitempty"` 
	Disks        []*StorageDiskInfo `protobuf:"bytes,4,rep,name=disks,proto3" json:"disks,omitempty"`                                                                              
}

func (x *StorageMetric) Reset() {
	*x = StorageMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StorageMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StorageMetric) ProtoMessage() {}

func (x *StorageMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*StorageMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{13}
}

func (x *StorageMetric) GetPoolName() string {
	if x != nil {
		return x.PoolName
	}
	return ""
}

func (x *StorageMetric) GetCountVolume() uint32 {
	if x != nil {
		return x.CountVolume
	}
	return 0
}

func (x *StorageMetric) GetStorageState() StorageStatus {
	if x != nil {
		return x.StorageState
	}
	return StorageStatus_STORAGE_STATUS_UNSPECIFIED
}

func (x *StorageMetric) GetDisks() []*StorageDiskInfo {
	if x != nil {
		return x.Disks
	}
	return nil
}

type DeviceMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Memory   *MemoryMetric     `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"`
	Network  []*NetworkMetric  `protobuf:"bytes,3,rep,name=network,proto3" json:"network,omitempty"`
	Zedcloud []*ZedcloudMetric `protobuf:"bytes,4,rep,name=zedcloud,proto3" json:"zedcloud,omitempty"`

	Disk                     []*DiskMetric `protobuf:"bytes,6,rep,name=disk,proto3" json:"disk,omitempty"`
	CpuMetric                *AppCpuMetric `protobuf:"bytes,7,opt,name=cpuMetric,proto3" json:"cpuMetric,omitempty"`
	MetricItems              []*MetricItem `protobuf:"bytes,8,rep,name=metricItems,proto3" json:"metricItems,omitempty"`
	RuntimeStorageOverheadMB uint64        `protobuf:"varint,9,opt,name=runtimeStorageOverheadMB,proto3" json:"runtimeStorageOverheadMB,omitempty"` 
	AppRunTimeStorageMB      uint64        `protobuf:"varint,10,opt,name=appRunTimeStorageMB,proto3" json:"appRunTimeStorageMB,omitempty"`          

	SystemServicesMemoryMB *MemoryMetric   `protobuf:"bytes,11,opt,name=systemServicesMemoryMB,proto3" json:"systemServicesMemoryMB,omitempty"` 
	Log                    *LogMetric      `protobuf:"bytes,12,opt,name=log,proto3" json:"log,omitempty"`
	Cipher                 []*CipherMetric `protobuf:"bytes,13,rep,name=cipher,proto3" json:"cipher,omitempty"` 
	Acl                    *AclMetric      `protobuf:"bytes,14,opt,name=acl,proto3" json:"acl,omitempty"`
	Newlog                 *NewlogMetric   `protobuf:"bytes,15,opt,name=newlog,proto3" json:"newlog,omitempty"`
	Zedbox                 *ZedboxStats    `protobuf:"bytes,16,opt,name=zedbox,proto3" json:"zedbox,omitempty"`

	DeviceMemory *DeviceMemoryMetric `protobuf:"bytes,17,opt,name=deviceMemory,proto3" json:"deviceMemory,omitempty"`

	LastReceivedConfig *timestamp.Timestamp `protobuf:"bytes,18,opt,name=last_received_config,json=lastReceivedConfig,proto3" json:"last_received_config,omitempty"`

	LastProcessedConfig *timestamp.Timestamp `protobuf:"bytes,19,opt,name=last_processed_config,json=lastProcessedConfig,proto3" json:"last_processed_config,omitempty"`
	Cellular            []*CellularMetric    `protobuf:"bytes,20,rep,name=cellular,proto3" json:"cellular,omitempty"`
	Flowlog             *FlowlogMetric       `protobuf:"bytes,21,opt,name=flowlog,proto3" json:"flowlog,omitempty"`

	DormantTimeInSeconds uint64           `protobuf:"varint,22,opt,name=dormant_time_in_seconds,json=dormantTimeInSeconds,proto3" json:"dormant_time_in_seconds,omitempty"`
	StorageMetrics       []*StorageMetric `protobuf:"bytes,23,rep,name=storage_metrics,json=storageMetrics,proto3" json:"storage_metrics,omitempty"`
}

func (x *DeviceMetric) Reset() {
	*x = DeviceMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeviceMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeviceMetric) ProtoMessage() {}

func (x *DeviceMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*DeviceMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{14}
}

func (x *DeviceMetric) GetMemory() *MemoryMetric {
	if x != nil {
		return x.Memory
	}
	return nil
}

func (x *DeviceMetric) GetNetwork() []*NetworkMetric {
	if x != nil {
		return x.Network
	}
	return nil
}

func (x *DeviceMetric) GetZedcloud() []*ZedcloudMetric {
	if x != nil {
		return x.Zedcloud
	}
	return nil
}

func (x *DeviceMetric) GetDisk() []*DiskMetric {
	if x != nil {
		return x.Disk
	}
	return nil
}

func (x *DeviceMetric) GetCpuMetric() *AppCpuMetric {
	if x != nil {
		return x.CpuMetric
	}
	return nil
}

func (x *DeviceMetric) GetMetricItems() []*MetricItem {
	if x != nil {
		return x.MetricItems
	}
	return nil
}

func (x *DeviceMetric) GetRuntimeStorageOverheadMB() uint64 {
	if x != nil {
		return x.RuntimeStorageOverheadMB
	}
	return 0
}

func (x *DeviceMetric) GetAppRunTimeStorageMB() uint64 {
	if x != nil {
		return x.AppRunTimeStorageMB
	}
	return 0
}

func (x *DeviceMetric) GetSystemServicesMemoryMB() *MemoryMetric {
	if x != nil {
		return x.SystemServicesMemoryMB
	}
	return nil
}

func (x *DeviceMetric) GetLog() *LogMetric {
	if x != nil {
		return x.Log
	}
	return nil
}

func (x *DeviceMetric) GetCipher() []*CipherMetric {
	if x != nil {
		return x.Cipher
	}
	return nil
}

func (x *DeviceMetric) GetAcl() *AclMetric {
	if x != nil {
		return x.Acl
	}
	return nil
}

func (x *DeviceMetric) GetNewlog() *NewlogMetric {
	if x != nil {
		return x.Newlog
	}
	return nil
}

func (x *DeviceMetric) GetZedbox() *ZedboxStats {
	if x != nil {
		return x.Zedbox
	}
	return nil
}

func (x *DeviceMetric) GetDeviceMemory() *DeviceMemoryMetric {
	if x != nil {
		return x.DeviceMemory
	}
	return nil
}

func (x *DeviceMetric) GetLastReceivedConfig() *timestamp.Timestamp {
	if x != nil {
		return x.LastReceivedConfig
	}
	return nil
}

func (x *DeviceMetric) GetLastProcessedConfig() *timestamp.Timestamp {
	if x != nil {
		return x.LastProcessedConfig
	}
	return nil
}

func (x *DeviceMetric) GetCellular() []*CellularMetric {
	if x != nil {
		return x.Cellular
	}
	return nil
}

func (x *DeviceMetric) GetFlowlog() *FlowlogMetric {
	if x != nil {
		return x.Flowlog
	}
	return nil
}

func (x *DeviceMetric) GetDormantTimeInSeconds() uint64 {
	if x != nil {
		return x.DormantTimeInSeconds
	}
	return 0
}

func (x *DeviceMetric) GetStorageMetrics() []*StorageMetric {
	if x != nil {
		return x.StorageMetrics
	}
	return nil
}

type AclMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TotalRuleCount uint64 `protobuf:"varint,1,opt,name=total_rule_count,json=totalRuleCount,proto3" json:"total_rule_count,omitempty"` 
}

func (x *AclMetric) Reset() {
	*x = AclMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AclMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AclMetric) ProtoMessage() {}

func (x *AclMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[15]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*AclMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{15}
}

func (x *AclMetric) GetTotalRuleCount() uint64 {
	if x != nil {
		return x.TotalRuleCount
	}
	return 0
}

type AppContainerMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AppContainerName string        `protobuf:"bytes,1,opt,name=appContainerName,proto3" json:"appContainerName,omitempty"` 
	Status           string        `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`                     
	PIDs             uint32        `protobuf:"varint,3,opt,name=PIDs,proto3" json:"PIDs,omitempty"`                        
	Cpu              *AppCpuMetric `protobuf:"bytes,4,opt,name=cpu,proto3" json:"cpu,omitempty"`                           

	Memory             *MemoryMetric    `protobuf:"bytes,5,opt,name=memory,proto3" json:"memory,omitempty"`   
	Network            *NetworkMetric   `protobuf:"bytes,6,opt,name=network,proto3" json:"network,omitempty"` 
	Disk               *DiskMetric      `protobuf:"bytes,7,opt,name=disk,proto3" json:"disk,omitempty"`       
	AppContainerMemory *AppMemoryMetric `protobuf:"bytes,8,opt,name=appContainerMemory,proto3" json:"appContainerMemory,omitempty"`
}

func (x *AppContainerMetric) Reset() {
	*x = AppContainerMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AppContainerMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AppContainerMetric) ProtoMessage() {}

func (x *AppContainerMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[16]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*AppContainerMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{16}
}

func (x *AppContainerMetric) GetAppContainerName() string {
	if x != nil {
		return x.AppContainerName
	}
	return ""
}

func (x *AppContainerMetric) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *AppContainerMetric) GetPIDs() uint32 {
	if x != nil {
		return x.PIDs
	}
	return 0
}

func (x *AppContainerMetric) GetCpu() *AppCpuMetric {
	if x != nil {
		return x.Cpu
	}
	return nil
}

func (x *AppContainerMetric) GetMemory() *MemoryMetric {
	if x != nil {
		return x.Memory
	}
	return nil
}

func (x *AppContainerMetric) GetNetwork() *NetworkMetric {
	if x != nil {
		return x.Network
	}
	return nil
}

func (x *AppContainerMetric) GetDisk() *DiskMetric {
	if x != nil {
		return x.Disk
	}
	return nil
}

func (x *AppContainerMetric) GetAppContainerMemory() *AppMemoryMetric {
	if x != nil {
		return x.AppContainerMemory
	}
	return nil
}

type MetricItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Key  string         `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` 
	Type MetricItemType `protobuf:"varint,2,opt,name=type,proto3,enum=org.lfedge.eve.metrics.MetricItemType" json:"type,omitempty"`

	MetricItemValue isMetricItem_MetricItemValue `protobuf_oneof:"metricItemValue"`
}

func (x *MetricItem) Reset() {
	*x = MetricItem{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MetricItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MetricItem) ProtoMessage() {}

func (x *MetricItem) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[17]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*MetricItem) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{17}
}

func (x *MetricItem) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *MetricItem) GetType() MetricItemType {
	if x != nil {
		return x.Type
	}
	return MetricItemType_MetricItemOther
}

func (m *MetricItem) GetMetricItemValue() isMetricItem_MetricItemValue {
	if m != nil {
		return m.MetricItemValue
	}
	return nil
}

func (x *MetricItem) GetBoolValue() bool {
	if x, ok := x.GetMetricItemValue().(*MetricItem_BoolValue); ok {
		return x.BoolValue
	}
	return false
}

func (x *MetricItem) GetUint32Value() uint32 {
	if x, ok := x.GetMetricItemValue().(*MetricItem_Uint32Value); ok {
		return x.Uint32Value
	}
	return 0
}

func (x *MetricItem) GetUint64Value() uint64 {
	if x, ok := x.GetMetricItemValue().(*MetricItem_Uint64Value); ok {
		return x.Uint64Value
	}
	return 0
}

func (x *MetricItem) GetFloatValue() float32 {
	if x, ok := x.GetMetricItemValue().(*MetricItem_FloatValue); ok {
		return x.FloatValue
	}
	return 0
}

func (x *MetricItem) GetStringValue() string {
	if x, ok := x.GetMetricItemValue().(*MetricItem_StringValue); ok {
		return x.StringValue
	}
	return ""
}

type isMetricItem_MetricItemValue interface {
	isMetricItem_MetricItemValue()
}

type MetricItem_BoolValue struct {
	BoolValue bool `protobuf:"varint,3,opt,name=boolValue,proto3,oneof"`
}

type MetricItem_Uint32Value struct {
	Uint32Value uint32 `protobuf:"varint,4,opt,name=uint32Value,proto3,oneof"` 
}

type MetricItem_Uint64Value struct {
	Uint64Value uint64 `protobuf:"varint,5,opt,name=uint64Value,proto3,oneof"`
}

type MetricItem_FloatValue struct {
	FloatValue float32 `protobuf:"fixed32,6,opt,name=floatValue,proto3,oneof"`
}

type MetricItem_StringValue struct {
	StringValue string `protobuf:"bytes,7,opt,name=stringValue,proto3,oneof"` 
}

func (*MetricItem_BoolValue) isMetricItem_MetricItemValue() {}

func (*MetricItem_Uint32Value) isMetricItem_MetricItemValue() {}

func (*MetricItem_Uint64Value) isMetricItem_MetricItemValue() {}

func (*MetricItem_FloatValue) isMetricItem_MetricItemValue() {}

func (*MetricItem_StringValue) isMetricItem_MetricItemValue() {}

type DiskMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Disk       string `protobuf:"bytes,1,opt,name=disk,proto3" json:"disk,omitempty"`              
	MountPath  string `protobuf:"bytes,2,opt,name=mountPath,proto3" json:"mountPath,omitempty"`    
	ReadBytes  uint64 `protobuf:"varint,3,opt,name=readBytes,proto3" json:"readBytes,omitempty"`   
	WriteBytes uint64 `protobuf:"varint,4,opt,name=writeBytes,proto3" json:"writeBytes,omitempty"` 
	ReadCount  uint64 `protobuf:"varint,5,opt,name=readCount,proto3" json:"readCount,omitempty"`   
	WriteCount uint64 `protobuf:"varint,6,opt,name=writeCount,proto3" json:"writeCount,omitempty"` 
	Total      uint64 `protobuf:"varint,7,opt,name=total,proto3" json:"total,omitempty"`           
	Used       uint64 `protobuf:"varint,8,opt,name=used,proto3" json:"used,omitempty"`             
	Free       uint64 `protobuf:"varint,9,opt,name=free,proto3" json:"free,omitempty"`             
}

func (x *DiskMetric) Reset() {
	*x = DiskMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DiskMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DiskMetric) ProtoMessage() {}

func (x *DiskMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[18]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*DiskMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{18}
}

func (x *DiskMetric) GetDisk() string {
	if x != nil {
		return x.Disk
	}
	return ""
}

func (x *DiskMetric) GetMountPath() string {
	if x != nil {
		return x.MountPath
	}
	return ""
}

func (x *DiskMetric) GetReadBytes() uint64 {
	if x != nil {
		return x.ReadBytes
	}
	return 0
}

func (x *DiskMetric) GetWriteBytes() uint64 {
	if x != nil {
		return x.WriteBytes
	}
	return 0
}

func (x *DiskMetric) GetReadCount() uint64 {
	if x != nil {
		return x.ReadCount
	}
	return 0
}

func (x *DiskMetric) GetWriteCount() uint64 {
	if x != nil {
		return x.WriteCount
	}
	return 0
}

func (x *DiskMetric) GetTotal() uint64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *DiskMetric) GetUsed() uint64 {
	if x != nil {
		return x.Used
	}
	return 0
}

func (x *DiskMetric) GetFree() uint64 {
	if x != nil {
		return x.Free
	}
	return 0
}

type AppDiskMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Disk        string `protobuf:"bytes,1,opt,name=disk,proto3" json:"disk,omitempty"`                
	Provisioned uint64 `protobuf:"varint,2,opt,name=provisioned,proto3" json:"provisioned,omitempty"` 
	Used        uint64 `protobuf:"varint,3,opt,name=used,proto3" json:"used,omitempty"`               
	DiskType    string `protobuf:"bytes,4,opt,name=diskType,proto3" json:"diskType,omitempty"`        
	Dirty       bool   `protobuf:"varint,5,opt,name=dirty,proto3" json:"dirty,omitempty"`             
}

func (x *AppDiskMetric) Reset() {
	*x = AppDiskMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AppDiskMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AppDiskMetric) ProtoMessage() {}

func (x *AppDiskMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[19]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*AppDiskMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{19}
}

func (x *AppDiskMetric) GetDisk() string {
	if x != nil {
		return x.Disk
	}
	return ""
}

func (x *AppDiskMetric) GetProvisioned() uint64 {
	if x != nil {
		return x.Provisioned
	}
	return 0
}

func (x *AppDiskMetric) GetUsed() uint64 {
	if x != nil {
		return x.Used
	}
	return 0
}

func (x *AppDiskMetric) GetDiskType() string {
	if x != nil {
		return x.DiskType
	}
	return ""
}

func (x *AppDiskMetric) GetDirty() bool {
	if x != nil {
		return x.Dirty
	}
	return false
}

type AppMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AppID      string        `protobuf:"bytes,1,opt,name=AppID,proto3" json:"AppID,omitempty"`
	AppVersion string        `protobuf:"bytes,10,opt,name=appVersion,proto3" json:"appVersion,omitempty"`
	AppName    string        `protobuf:"bytes,2,opt,name=AppName,proto3" json:"AppName,omitempty"`
	Cpu        *AppCpuMetric `protobuf:"bytes,3,opt,name=cpu,proto3" json:"cpu,omitempty"`

	Memory    *MemoryMetric         `protobuf:"bytes,4,opt,name=memory,proto3" json:"memory,omitempty"`
	Network   []*NetworkMetric      `protobuf:"bytes,5,rep,name=network,proto3" json:"network,omitempty"`
	Disk      []*AppDiskMetric      `protobuf:"bytes,6,rep,name=disk,proto3" json:"disk,omitempty"`
	Container []*AppContainerMetric `protobuf:"bytes,7,rep,name=container,proto3" json:"container,omitempty"`
	AppMemory *AppMemoryMetric      `protobuf:"bytes,8,opt,name=appMemory,proto3" json:"appMemory,omitempty"`
}

func (x *AppMetric) Reset() {
	*x = AppMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AppMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AppMetric) ProtoMessage() {}

func (x *AppMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[20]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*AppMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{20}
}

func (x *AppMetric) GetAppID() string {
	if x != nil {
		return x.AppID
	}
	return ""
}

func (x *AppMetric) GetAppVersion() string {
	if x != nil {
		return x.AppVersion
	}
	return ""
}

func (x *AppMetric) GetAppName() string {
	if x != nil {
		return x.AppName
	}
	return ""
}

func (x *AppMetric) GetCpu() *AppCpuMetric {
	if x != nil {
		return x.Cpu
	}
	return nil
}

func (x *AppMetric) GetMemory() *MemoryMetric {
	if x != nil {
		return x.Memory
	}
	return nil
}

func (x *AppMetric) GetNetwork() []*NetworkMetric {
	if x != nil {
		return x.Network
	}
	return nil
}

func (x *AppMetric) GetDisk() []*AppDiskMetric {
	if x != nil {
		return x.Disk
	}
	return nil
}

func (x *AppMetric) GetContainer() []*AppContainerMetric {
	if x != nil {
		return x.Container
	}
	return nil
}

func (x *AppMetric) GetAppMemory() *AppMemoryMetric {
	if x != nil {
		return x.AppMemory
	}
	return nil
}

type LogMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NumDeviceEventsSent  uint64 `protobuf:"varint,1,opt,name=numDeviceEventsSent,proto3" json:"numDeviceEventsSent,omitempty"`
	NumDeviceBundlesSent uint64 `protobuf:"varint,2,opt,name=numDeviceBundlesSent,proto3" json:"numDeviceBundlesSent,omitempty"`
	NumAppEventsSent     uint64 `protobuf:"varint,3,opt,name=numAppEventsSent,proto3" json:"numAppEventsSent,omitempty"`
	NumAppBundlesSent    uint64 `protobuf:"varint,4,opt,name=numAppBundlesSent,proto3" json:"numAppBundlesSent,omitempty"`

	Num4XxResponses          uint64               `protobuf:"varint,5,opt,name=num4xxResponses,proto3" json:"num4xxResponses,omitempty"`
	LastDeviceBundleSendTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=lastDeviceBundleSendTime,proto3" json:"lastDeviceBundleSendTime,omitempty"`
	LastAppBundleSendTime    *timestamp.Timestamp `protobuf:"bytes,7,opt,name=lastAppBundleSendTime,proto3" json:"lastAppBundleSendTime,omitempty"`
	IsLogProcessingDeferred  bool                 `protobuf:"varint,8,opt,name=isLogProcessingDeferred,proto3" json:"isLogProcessingDeferred,omitempty"`
	NumTimesDeferred         uint64               `protobuf:"varint,9,opt,name=numTimesDeferred,proto3" json:"numTimesDeferred,omitempty"`
	LastLogDeferTime         *timestamp.Timestamp `protobuf:"bytes,10,opt,name=lastLogDeferTime,proto3" json:"lastLogDeferTime,omitempty"`
	TotalDeviceLogInput      uint64               `protobuf:"varint,13,opt,name=totalDeviceLogInput,proto3" json:"totalDeviceLogInput,omitempty"`
	TotalAppLogInput         uint64               `protobuf:"varint,14,opt,name=totalAppLogInput,proto3" json:"totalAppLogInput,omitempty"`

	NumDeviceEventErrors          uint64 `protobuf:"varint,15,opt,name=numDeviceEventErrors,proto3" json:"numDeviceEventErrors,omitempty"`
	NumAppEventErrors             uint64 `protobuf:"varint,16,opt,name=numAppEventErrors,proto3" json:"numAppEventErrors,omitempty"`
	NumDeviceBundleProtoBytesSent uint64 `protobuf:"varint,17,opt,name=numDeviceBundleProtoBytesSent,proto3" json:"numDeviceBundleProtoBytesSent,omitempty"`
	NumAppBundleProtoBytesSent    uint64 `protobuf:"varint,18,opt,name=numAppBundleProtoBytesSent,proto3" json:"numAppBundleProtoBytesSent,omitempty"`

	InputSources map[string]uint64 `protobuf:"bytes,19,rep,name=input_sources,json=inputSources,proto3" json:"input_sources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

func (x *LogMetric) Reset() {
	*x = LogMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LogMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LogMetric) ProtoMessage() {}

func (x *LogMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[21]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*LogMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{21}
}

func (x *LogMetric) GetNumDeviceEventsSent() uint64 {
	if x != nil {
		return x.NumDeviceEventsSent
	}
	return 0
}

func (x *LogMetric) GetNumDeviceBundlesSent() uint64 {
	if x != nil {
		return x.NumDeviceBundlesSent
	}
	return 0
}

func (x *LogMetric) GetNumAppEventsSent() uint64 {
	if x != nil {
		return x.NumAppEventsSent
	}
	return 0
}

func (x *LogMetric) GetNumAppBundlesSent() uint64 {
	if x != nil {
		return x.NumAppBundlesSent
	}
	return 0
}

func (x *LogMetric) GetNum4XxResponses() uint64 {
	if x != nil {
		return x.Num4XxResponses
	}
	return 0
}

func (x *LogMetric) GetLastDeviceBundleSendTime() *timestamp.Timestamp {
	if x != nil {
		return x.LastDeviceBundleSendTime
	}
	return nil
}

func (x *LogMetric) GetLastAppBundleSendTime() *timestamp.Timestamp {
	if x != nil {
		return x.LastAppBundleSendTime
	}
	return nil
}

func (x *LogMetric) GetIsLogProcessingDeferred() bool {
	if x != nil {
		return x.IsLogProcessingDeferred
	}
	return false
}

func (x *LogMetric) GetNumTimesDeferred() uint64 {
	if x != nil {
		return x.NumTimesDeferred
	}
	return 0
}

func (x *LogMetric) GetLastLogDeferTime() *timestamp.Timestamp {
	if x != nil {
		return x.LastLogDeferTime
	}
	return nil
}

func (x *LogMetric) GetTotalDeviceLogInput() uint64 {
	if x != nil {
		return x.TotalDeviceLogInput
	}
	return 0
}

func (x *LogMetric) GetTotalAppLogInput() uint64 {
	if x != nil {
		return x.TotalAppLogInput
	}
	return 0
}

func (x *LogMetric) GetNumDeviceEventErrors() uint64 {
	if x != nil {
		return x.NumDeviceEventErrors
	}
	return 0
}

func (x *LogMetric) GetNumAppEventErrors() uint64 {
	if x != nil {
		return x.NumAppEventErrors
	}
	return 0
}

func (x *LogMetric) GetNumDeviceBundleProtoBytesSent() uint64 {
	if x != nil {
		return x.NumDeviceBundleProtoBytesSent
	}
	return 0
}

func (x *LogMetric) GetNumAppBundleProtoBytesSent() uint64 {
	if x != nil {
		return x.NumAppBundleProtoBytesSent
	}
	return 0
}

func (x *LogMetric) GetInputSources() map[string]uint64 {
	if x != nil {
		return x.InputSources
	}
	return nil
}

type PktStat struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Packets uint64 `protobuf:"varint,1,opt,name=Packets,proto3" json:"Packets,omitempty"`
	Bytes   uint64 `protobuf:"varint,2,opt,name=Bytes,proto3" json:"Bytes,omitempty"`
}

func (x *PktStat) Reset() {
	*x = PktStat{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PktStat) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PktStat) ProtoMessage() {}

func (x *PktStat) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[22]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*PktStat) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{22}
}

func (x *PktStat) GetPackets() uint64 {
	if x != nil {
		return x.Packets
	}
	return 0
}

func (x *PktStat) GetBytes() uint64 {
	if x != nil {
		return x.Bytes
	}
	return 0
}

type ZMetricConn struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	InPkts        *PktStat `protobuf:"bytes,1,opt,name=InPkts,proto3" json:"InPkts,omitempty"`
	OutPkts       *PktStat `protobuf:"bytes,2,opt,name=OutPkts,proto3" json:"OutPkts,omitempty"`
	ErrPkts       *PktStat `protobuf:"bytes,3,opt,name=ErrPkts,proto3" json:"ErrPkts,omitempty"`
	CarierErrPkts *PktStat `protobuf:"bytes,4,opt,name=CarierErrPkts,proto3" json:"CarierErrPkts,omitempty"`
}

func (x *ZMetricConn) Reset() {
	*x = ZMetricConn{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricConn) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricConn) ProtoMessage() {}

func (x *ZMetricConn) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[23]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZMetricConn) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{23}
}

func (x *ZMetricConn) GetInPkts() *PktStat {
	if x != nil {
		return x.InPkts
	}
	return nil
}

func (x *ZMetricConn) GetOutPkts() *PktStat {
	if x != nil {
		return x.OutPkts
	}
	return nil
}

func (x *ZMetricConn) GetErrPkts() *PktStat {
	if x != nil {
		return x.ErrPkts
	}
	return nil
}

func (x *ZMetricConn) GetCarierErrPkts() *PktStat {
	if x != nil {
		return x.CarierErrPkts
	}
	return nil
}

type ZMetricVpn struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ConnStat *ZMetricConn `protobuf:"bytes,1,opt,name=ConnStat,proto3" json:"ConnStat,omitempty"`
	IkeStat  *ZMetricConn `protobuf:"bytes,2,opt,name=IkeStat,proto3" json:"IkeStat,omitempty"`
	NatTStat *ZMetricConn `protobuf:"bytes,3,opt,name=NatTStat,proto3" json:"NatTStat,omitempty"`
	EspStat  *ZMetricConn `protobuf:"bytes,4,opt,name=EspStat,proto3" json:"EspStat,omitempty"`
}

func (x *ZMetricVpn) Reset() {
	*x = ZMetricVpn{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricVpn) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricVpn) ProtoMessage() {}

func (x *ZMetricVpn) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[24]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZMetricVpn) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{24}
}

func (x *ZMetricVpn) GetConnStat() *ZMetricConn {
	if x != nil {
		return x.ConnStat
	}
	return nil
}

func (x *ZMetricVpn) GetIkeStat() *ZMetricConn {
	if x != nil {
		return x.IkeStat
	}
	return nil
}

func (x *ZMetricVpn) GetNatTStat() *ZMetricConn {
	if x != nil {
		return x.NatTStat
	}
	return nil
}

func (x *ZMetricVpn) GetEspStat() *ZMetricConn {
	if x != nil {
		return x.EspStat
	}
	return nil
}

type ZMetricNone struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ZMetricNone) Reset() {
	*x = ZMetricNone{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricNone) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricNone) ProtoMessage() {}

func (x *ZMetricNone) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[25]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZMetricNone) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{25}
}

type ZMetricFlowLink struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Link  isZMetricFlowLink_Link `protobuf_oneof:"Link"`
	SpiId string                 `protobuf:"bytes,3,opt,name=spiId,proto3" json:"spiId,omitempty"` 
}

func (x *ZMetricFlowLink) Reset() {
	*x = ZMetricFlowLink{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricFlowLink) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricFlowLink) ProtoMessage() {}

func (x *ZMetricFlowLink) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[26]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZMetricFlowLink) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{26}
}

func (m *ZMetricFlowLink) GetLink() isZMetricFlowLink_Link {
	if m != nil {
		return m.Link
	}
	return nil
}

func (x *ZMetricFlowLink) GetSubNet() string {
	if x, ok := x.GetLink().(*ZMetricFlowLink_SubNet); ok {
		return x.SubNet
	}
	return ""
}

func (x *ZMetricFlowLink) GetSpiId() string {
	if x != nil {
		return x.SpiId
	}
	return ""
}

type isZMetricFlowLink_Link interface {
	isZMetricFlowLink_Link()
}

type ZMetricFlowLink_SubNet struct {
	SubNet string `protobuf:"bytes,1,opt,name=subNet,proto3,oneof"` 
}

func (*ZMetricFlowLink_SubNet) isZMetricFlowLink_Link() {}

type ZMetricFlowEndPoint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Endpoint isZMetricFlowEndPoint_Endpoint `protobuf_oneof:"Endpoint"`
	Link     []*ZMetricFlowLink             `protobuf:"bytes,5,rep,name=link,proto3" json:"link,omitempty"`
	Stats    *PktStat                       `protobuf:"bytes,10,opt,name=stats,proto3" json:"stats,omitempty"` 
}

func (x *ZMetricFlowEndPoint) Reset() {
	*x = ZMetricFlowEndPoint{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricFlowEndPoint) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricFlowEndPoint) ProtoMessage() {}

func (x *ZMetricFlowEndPoint) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[27]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZMetricFlowEndPoint) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{27}
}

func (m *ZMetricFlowEndPoint) GetEndpoint() isZMetricFlowEndPoint_Endpoint {
	if m != nil {
		return m.Endpoint
	}
	return nil
}

func (x *ZMetricFlowEndPoint) GetIpAddr() string {
	if x, ok := x.GetEndpoint().(*ZMetricFlowEndPoint_IpAddr); ok {
		return x.IpAddr
	}
	return ""
}

func (x *ZMetricFlowEndPoint) GetLink() []*ZMetricFlowLink {
	if x != nil {
		return x.Link
	}
	return nil
}

func (x *ZMetricFlowEndPoint) GetStats() *PktStat {
	if x != nil {
		return x.Stats
	}
	return nil
}

type isZMetricFlowEndPoint_Endpoint interface {
	isZMetricFlowEndPoint_Endpoint()
}

type ZMetricFlowEndPoint_IpAddr struct {
	IpAddr string `protobuf:"bytes,1,opt,name=ipAddr,proto3,oneof"` 
}

func (*ZMetricFlowEndPoint_IpAddr) isZMetricFlowEndPoint_Endpoint() {}

type ZMetricFlow struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id   string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`      
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`  
	Type uint32 `protobuf:"varint,3,opt,name=type,proto3" json:"type,omitempty"` 

	EstTime   uint64                 `protobuf:"varint,5,opt,name=estTime,proto3" json:"estTime,omitempty"` 
	LEndPoint *ZMetricFlowEndPoint   `protobuf:"bytes,10,opt,name=lEndPoint,proto3" json:"lEndPoint,omitempty"`
	REndPoint []*ZMetricFlowEndPoint `protobuf:"bytes,11,rep,name=rEndPoint,proto3" json:"rEndPoint,omitempty"`
}

func (x *ZMetricFlow) Reset() {
	*x = ZMetricFlow{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricFlow) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricFlow) ProtoMessage() {}

func (x *ZMetricFlow) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[28]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZMetricFlow) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{28}
}

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

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

func (x *ZMetricFlow) GetType() uint32 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *ZMetricFlow) GetEstTime() uint64 {
	if x != nil {
		return x.EstTime
	}
	return 0
}

func (x *ZMetricFlow) GetLEndPoint() *ZMetricFlowEndPoint {
	if x != nil {
		return x.LEndPoint
	}
	return nil
}

func (x *ZMetricFlow) GetREndPoint() []*ZMetricFlowEndPoint {
	if x != nil {
		return x.REndPoint
	}
	return nil
}

type NetworkStats struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TotalPackets uint64 `protobuf:"varint,1,opt,name=totalPackets,proto3" json:"totalPackets,omitempty"`
	Errors       uint64 `protobuf:"varint,2,opt,name=errors,proto3" json:"errors,omitempty"`
	Drops        uint64 `protobuf:"varint,3,opt,name=drops,proto3" json:"drops,omitempty"`
	TotalBytes   uint64 `protobuf:"varint,4,opt,name=totalBytes,proto3" json:"totalBytes,omitempty"`
}

func (x *NetworkStats) Reset() {
	*x = NetworkStats{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NetworkStats) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NetworkStats) ProtoMessage() {}

func (x *NetworkStats) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[29]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*NetworkStats) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{29}
}

func (x *NetworkStats) GetTotalPackets() uint64 {
	if x != nil {
		return x.TotalPackets
	}
	return 0
}

func (x *NetworkStats) GetErrors() uint64 {
	if x != nil {
		return x.Errors
	}
	return 0
}

func (x *NetworkStats) GetDrops() uint64 {
	if x != nil {
		return x.Drops
	}
	return 0
}

func (x *NetworkStats) GetTotalBytes() uint64 {
	if x != nil {
		return x.TotalBytes
	}
	return 0
}

type ZMetricNetworkStats struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Rx *NetworkStats `protobuf:"bytes,1,opt,name=rx,proto3" json:"rx,omitempty"`
	Tx *NetworkStats `protobuf:"bytes,2,opt,name=tx,proto3" json:"tx,omitempty"`
}

func (x *ZMetricNetworkStats) Reset() {
	*x = ZMetricNetworkStats{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricNetworkStats) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricNetworkStats) ProtoMessage() {}

func (x *ZMetricNetworkStats) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[30]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZMetricNetworkStats) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{30}
}

func (x *ZMetricNetworkStats) GetRx() *NetworkStats {
	if x != nil {
		return x.Rx
	}
	return nil
}

func (x *ZMetricNetworkStats) GetTx() *NetworkStats {
	if x != nil {
		return x.Tx
	}
	return nil
}

type ZProbeNIMetrics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CurrentIntf    string                              `protobuf:"bytes,1,opt,name=currentIntf,proto3" json:"currentIntf,omitempty"`        
	RemoteEndpoint string                              `protobuf:"bytes,2,opt,name=remoteEndpoint,proto3" json:"remoteEndpoint,omitempty"`  
	PingIntv       uint32                              `protobuf:"varint,3,opt,name=pingIntv,proto3" json:"pingIntv,omitempty"`             
	RemotePingIntv uint32                              `protobuf:"varint,4,opt,name=remotePingIntv,proto3" json:"remotePingIntv,omitempty"` 
	UplinkCnt      uint32                              `protobuf:"varint,5,opt,name=uplinkCnt,proto3" json:"uplinkCnt,omitempty"`           
	IntfMetric     []*ZProbeNIMetrics_ZProbeIntfMetric `protobuf:"bytes,10,rep,name=intfMetric,proto3" json:"intfMetric,omitempty"`         
}

func (x *ZProbeNIMetrics) Reset() {
	*x = ZProbeNIMetrics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZProbeNIMetrics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZProbeNIMetrics) ProtoMessage() {}

func (x *ZProbeNIMetrics) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[31]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZProbeNIMetrics) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{31}
}

func (x *ZProbeNIMetrics) GetCurrentIntf() string {
	if x != nil {
		return x.CurrentIntf
	}
	return ""
}

func (x *ZProbeNIMetrics) GetRemoteEndpoint() string {
	if x != nil {
		return x.RemoteEndpoint
	}
	return ""
}

func (x *ZProbeNIMetrics) GetPingIntv() uint32 {
	if x != nil {
		return x.PingIntv
	}
	return 0
}

func (x *ZProbeNIMetrics) GetRemotePingIntv() uint32 {
	if x != nil {
		return x.RemotePingIntv
	}
	return 0
}

func (x *ZProbeNIMetrics) GetUplinkCnt() uint32 {
	if x != nil {
		return x.UplinkCnt
	}
	return 0
}

func (x *ZProbeNIMetrics) GetIntfMetric() []*ZProbeNIMetrics_ZProbeIntfMetric {
	if x != nil {
		return x.IntfMetric
	}
	return nil
}

type ZMetricNetworkInstance struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NetworkID      string           `protobuf:"bytes,2,opt,name=networkID,proto3" json:"networkID,omitempty"` 
	NetworkVersion string           `protobuf:"bytes,3,opt,name=networkVersion,proto3" json:"networkVersion,omitempty"`
	InstType       uint32           `protobuf:"varint,5,opt,name=instType,proto3" json:"instType,omitempty"`       
	Displayname    string           `protobuf:"bytes,6,opt,name=displayname,proto3" json:"displayname,omitempty"`  
	Activated      bool             `protobuf:"varint,7,opt,name=activated,proto3" json:"activated,omitempty"`     
	Network        []*NetworkMetric `protobuf:"bytes,10,rep,name=network,proto3" json:"network,omitempty"`         
	ProbeMetric    *ZProbeNIMetrics `protobuf:"bytes,12,opt,name=probeMetric,proto3" json:"probeMetric,omitempty"` 

	InstanceContent isZMetricNetworkInstance_InstanceContent `protobuf_oneof:"InstanceContent"`
	FlowStats       []*ZMetricFlow                           `protobuf:"bytes,30,rep,name=flowStats,proto3" json:"flowStats,omitempty"`               
	NetworkStats    *ZMetricNetworkStats                     `protobuf:"bytes,40,opt,name=networkStats,proto3" json:"networkStats,omitempty"`         
	VlanInfo        *VlanInfo                                `protobuf:"bytes,41,opt,name=vlan_info,json=vlanInfo,proto3" json:"vlan_info,omitempty"` 
}

func (x *ZMetricNetworkInstance) Reset() {
	*x = ZMetricNetworkInstance{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricNetworkInstance) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricNetworkInstance) ProtoMessage() {}

func (x *ZMetricNetworkInstance) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[32]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZMetricNetworkInstance) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{32}
}

func (x *ZMetricNetworkInstance) GetNetworkID() string {
	if x != nil {
		return x.NetworkID
	}
	return ""
}

func (x *ZMetricNetworkInstance) GetNetworkVersion() string {
	if x != nil {
		return x.NetworkVersion
	}
	return ""
}

func (x *ZMetricNetworkInstance) GetInstType() uint32 {
	if x != nil {
		return x.InstType
	}
	return 0
}

func (x *ZMetricNetworkInstance) GetDisplayname() string {
	if x != nil {
		return x.Displayname
	}
	return ""
}

func (x *ZMetricNetworkInstance) GetActivated() bool {
	if x != nil {
		return x.Activated
	}
	return false
}

func (x *ZMetricNetworkInstance) GetNetwork() []*NetworkMetric {
	if x != nil {
		return x.Network
	}
	return nil
}

func (x *ZMetricNetworkInstance) GetProbeMetric() *ZProbeNIMetrics {
	if x != nil {
		return x.ProbeMetric
	}
	return nil
}

func (m *ZMetricNetworkInstance) GetInstanceContent() isZMetricNetworkInstance_InstanceContent {
	if m != nil {
		return m.InstanceContent
	}
	return nil
}

func (x *ZMetricNetworkInstance) GetVpnm() *ZMetricVpn {
	if x, ok := x.GetInstanceContent().(*ZMetricNetworkInstance_Vpnm); ok {
		return x.Vpnm
	}
	return nil
}

func (x *ZMetricNetworkInstance) GetNonem() *ZMetricNone {
	if x, ok := x.GetInstanceContent().(*ZMetricNetworkInstance_Nonem); ok {
		return x.Nonem
	}
	return nil
}

func (x *ZMetricNetworkInstance) GetFlowStats() []*ZMetricFlow {
	if x != nil {
		return x.FlowStats
	}
	return nil
}

func (x *ZMetricNetworkInstance) GetNetworkStats() *ZMetricNetworkStats {
	if x != nil {
		return x.NetworkStats
	}
	return nil
}

func (x *ZMetricNetworkInstance) GetVlanInfo() *VlanInfo {
	if x != nil {
		return x.VlanInfo
	}
	return nil
}

type isZMetricNetworkInstance_InstanceContent interface {
	isZMetricNetworkInstance_InstanceContent()
}

type ZMetricNetworkInstance_Vpnm struct {
	Vpnm *ZMetricVpn `protobuf:"bytes,20,opt,name=vpnm,proto3,oneof"`
}

type ZMetricNetworkInstance_Nonem struct {

	Nonem *ZMetricNone `protobuf:"bytes,22,opt,name=nonem,proto3,oneof"`
}

func (*ZMetricNetworkInstance_Vpnm) isZMetricNetworkInstance_InstanceContent() {}

func (*ZMetricNetworkInstance_Nonem) isZMetricNetworkInstance_InstanceContent() {}

type ZMetricVolume struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Uuid        string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`
	DisplayName string `protobuf:"bytes,2,opt,name=displayName,proto3" json:"displayName,omitempty"`
	ReadBytes   uint64 `protobuf:"varint,3,opt,name=readBytes,proto3" json:"readBytes,omitempty"`
	WriteBytes  uint64 `protobuf:"varint,4,opt,name=writeBytes,proto3" json:"writeBytes,omitempty"`
	ReadCount   uint64 `protobuf:"varint,5,opt,name=readCount,proto3" json:"readCount,omitempty"`
	WriteCount  uint64 `protobuf:"varint,6,opt,name=writeCount,proto3" json:"writeCount,omitempty"`
	TotalBytes  uint64 `protobuf:"varint,7,opt,name=totalBytes,proto3" json:"totalBytes,omitempty"`
	UsedBytes   uint64 `protobuf:"varint,8,opt,name=usedBytes,proto3" json:"usedBytes,omitempty"`
	FreeBytes   uint64 `protobuf:"varint,9,opt,name=freeBytes,proto3" json:"freeBytes,omitempty"`
}

func (x *ZMetricVolume) Reset() {
	*x = ZMetricVolume{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricVolume) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricVolume) ProtoMessage() {}

func (x *ZMetricVolume) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[33]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZMetricVolume) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{33}
}

func (x *ZMetricVolume) GetUuid() string {
	if x != nil {
		return x.Uuid
	}
	return ""
}

func (x *ZMetricVolume) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *ZMetricVolume) GetReadBytes() uint64 {
	if x != nil {
		return x.ReadBytes
	}
	return 0
}

func (x *ZMetricVolume) GetWriteBytes() uint64 {
	if x != nil {
		return x.WriteBytes
	}
	return 0
}

func (x *ZMetricVolume) GetReadCount() uint64 {
	if x != nil {
		return x.ReadCount
	}
	return 0
}

func (x *ZMetricVolume) GetWriteCount() uint64 {
	if x != nil {
		return x.WriteCount
	}
	return 0
}

func (x *ZMetricVolume) GetTotalBytes() uint64 {
	if x != nil {
		return x.TotalBytes
	}
	return 0
}

func (x *ZMetricVolume) GetUsedBytes() uint64 {
	if x != nil {
		return x.UsedBytes
	}
	return 0
}

func (x *ZMetricVolume) GetFreeBytes() uint64 {
	if x != nil {
		return x.FreeBytes
	}
	return 0
}

type ZMetricProcess struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pid           int32                `protobuf:"varint,1,opt,name=pid,proto3" json:"pid,omitempty"`
	Name          string               `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	UserProcess   bool                 `protobuf:"varint,3,opt,name=user_process,json=userProcess,proto3" json:"user_process,omitempty"`
	Watched       bool                 `protobuf:"varint,4,opt,name=watched,proto3" json:"watched,omitempty"`
	NumFds        int32                `protobuf:"varint,5,opt,name=num_fds,json=numFds,proto3" json:"num_fds,omitempty"`
	NumThreads    int32                `protobuf:"varint,6,opt,name=num_threads,json=numThreads,proto3" json:"num_threads,omitempty"`
	UserTime      float64              `protobuf:"fixed64,7,opt,name=user_time,json=userTime,proto3" json:"user_time,omitempty"`
	SystemTime    float64              `protobuf:"fixed64,8,opt,name=system_time,json=systemTime,proto3" json:"system_time,omitempty"`
	CpuPercent    float64              `protobuf:"fixed64,9,opt,name=cpu_percent,json=cpuPercent,proto3" json:"cpu_percent,omitempty"`
	CreateTime    *timestamp.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	VmBytes       uint64               `protobuf:"varint,11,opt,name=vm_bytes,json=vmBytes,proto3" json:"vm_bytes,omitempty"`
	RssBytes      uint64               `protobuf:"varint,12,opt,name=rss_bytes,json=rssBytes,proto3" json:"rss_bytes,omitempty"`
	MemoryPercent float32              `protobuf:"fixed32,13,opt,name=memory_percent,json=memoryPercent,proto3" json:"memory_percent,omitempty"`

	Stack string `protobuf:"bytes,14,opt,name=stack,proto3" json:"stack,omitempty"`
}

func (x *ZMetricProcess) Reset() {
	*x = ZMetricProcess{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricProcess) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricProcess) ProtoMessage() {}

func (x *ZMetricProcess) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[34]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZMetricProcess) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{34}
}

func (x *ZMetricProcess) GetPid() int32 {
	if x != nil {
		return x.Pid
	}
	return 0
}

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

func (x *ZMetricProcess) GetUserProcess() bool {
	if x != nil {
		return x.UserProcess
	}
	return false
}

func (x *ZMetricProcess) GetWatched() bool {
	if x != nil {
		return x.Watched
	}
	return false
}

func (x *ZMetricProcess) GetNumFds() int32 {
	if x != nil {
		return x.NumFds
	}
	return 0
}

func (x *ZMetricProcess) GetNumThreads() int32 {
	if x != nil {
		return x.NumThreads
	}
	return 0
}

func (x *ZMetricProcess) GetUserTime() float64 {
	if x != nil {
		return x.UserTime
	}
	return 0
}

func (x *ZMetricProcess) GetSystemTime() float64 {
	if x != nil {
		return x.SystemTime
	}
	return 0
}

func (x *ZMetricProcess) GetCpuPercent() float64 {
	if x != nil {
		return x.CpuPercent
	}
	return 0
}

func (x *ZMetricProcess) GetCreateTime() *timestamp.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *ZMetricProcess) GetVmBytes() uint64 {
	if x != nil {
		return x.VmBytes
	}
	return 0
}

func (x *ZMetricProcess) GetRssBytes() uint64 {
	if x != nil {
		return x.RssBytes
	}
	return 0
}

func (x *ZMetricProcess) GetMemoryPercent() float32 {
	if x != nil {
		return x.MemoryPercent
	}
	return 0
}

func (x *ZMetricProcess) GetStack() string {
	if x != nil {
		return x.Stack
	}
	return ""
}

type ZMetricMsg struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	DevID string `protobuf:"bytes,1,opt,name=devID,proto3" json:"devID,omitempty"`

	AtTimeStamp *timestamp.Timestamp `protobuf:"bytes,3,opt,name=atTimeStamp,proto3" json:"atTimeStamp,omitempty"`

	MetricContent isZMetricMsg_MetricContent `protobuf_oneof:"MetricContent"`
	Am            []*AppMetric               `protobuf:"bytes,5,rep,name=am,proto3" json:"am,omitempty"`

	Nm []*ZMetricNetworkInstance `protobuf:"bytes,7,rep,name=nm,proto3" json:"nm,omitempty"`
	Vm []*ZMetricVolume          `protobuf:"bytes,8,rep,name=vm,proto3" json:"vm,omitempty"`
	Pr []*ZMetricProcess         `protobuf:"bytes,9,rep,name=pr,proto3" json:"pr,omitempty"`
}

func (x *ZMetricMsg) Reset() {
	*x = ZMetricMsg{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricMsg) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricMsg) ProtoMessage() {}

func (x *ZMetricMsg) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[35]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZMetricMsg) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{35}
}

func (x *ZMetricMsg) GetDevID() string {
	if x != nil {
		return x.DevID
	}
	return ""
}

func (x *ZMetricMsg) GetAtTimeStamp() *timestamp.Timestamp {
	if x != nil {
		return x.AtTimeStamp
	}
	return nil
}

func (m *ZMetricMsg) GetMetricContent() isZMetricMsg_MetricContent {
	if m != nil {
		return m.MetricContent
	}
	return nil
}

func (x *ZMetricMsg) GetDm() *DeviceMetric {
	if x, ok := x.GetMetricContent().(*ZMetricMsg_Dm); ok {
		return x.Dm
	}
	return nil
}

func (x *ZMetricMsg) GetAm() []*AppMetric {
	if x != nil {
		return x.Am
	}
	return nil
}

func (x *ZMetricMsg) GetNm() []*ZMetricNetworkInstance {
	if x != nil {
		return x.Nm
	}
	return nil
}

func (x *ZMetricMsg) GetVm() []*ZMetricVolume {
	if x != nil {
		return x.Vm
	}
	return nil
}

func (x *ZMetricMsg) GetPr() []*ZMetricProcess {
	if x != nil {
		return x.Pr
	}
	return nil
}

type isZMetricMsg_MetricContent interface {
	isZMetricMsg_MetricContent()
}

type ZMetricMsg_Dm struct {
	Dm *DeviceMetric `protobuf:"bytes,4,opt,name=dm,proto3,oneof"`
}

func (*ZMetricMsg_Dm) isZMetricMsg_MetricContent() {}

type NewlogMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FailedToSend      bool                 `protobuf:"varint,1,opt,name=failedToSend,proto3" json:"failedToSend,omitempty"`
	FailSentStartTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=failSentStartTime,proto3" json:"failSentStartTime,omitempty"`

	TotalBytesUpload  uint64 `protobuf:"varint,3,opt,name=totalBytesUpload,proto3" json:"totalBytesUpload,omitempty"`
	Num4XxResponses   uint32 `protobuf:"varint,4,opt,name=num4xxResponses,proto3" json:"num4xxResponses,omitempty"`
	CurrentUploadIntv uint32 `protobuf:"varint,5,opt,name=currentUploadIntv,proto3" json:"currentUploadIntv,omitempty"`
	LogfileTimeout    uint32 `protobuf:"varint,6,opt,name=logfileTimeout,proto3" json:"logfileTimeout,omitempty"`
	MaxGzipFileSize   uint32 `protobuf:"varint,7,opt,name=maxGzipFileSize,proto3" json:"maxGzipFileSize,omitempty"`
	AvgGzipFileSize   uint32 `protobuf:"varint,8,opt,name=avgGzipFileSize,proto3" json:"avgGzipFileSize,omitempty"`

	MimUploadMsec  uint32 `protobuf:"varint,9,opt,name=mimUploadMsec,proto3" json:"mimUploadMsec,omitempty"`
	MaxUploadMsec  uint32 `protobuf:"varint,10,opt,name=maxUploadMsec,proto3" json:"maxUploadMsec,omitempty"`
	AvgUploadMsec  uint32 `protobuf:"varint,11,opt,name=avgUploadMsec,proto3" json:"avgUploadMsec,omitempty"`
	LastUploadMsec uint32 `protobuf:"varint,12,opt,name=lastUploadMsec,proto3" json:"lastUploadMsec,omitempty"`

	CurrentCPULoadPct   float32 `protobuf:"fixed32,13,opt,name=currentCPULoadPct,proto3" json:"currentCPULoadPct,omitempty"`
	AverageCPULoadPct   float32 `protobuf:"fixed32,14,opt,name=averageCPULoadPct,proto3" json:"averageCPULoadPct,omitempty"`
	CurrentProcessDelay uint32  `protobuf:"varint,15,opt,name=currentProcessDelay,proto3" json:"currentProcessDelay,omitempty"`
	AverageProcessDelay uint32  `protobuf:"varint,16,opt,name=averageProcessDelay,proto3" json:"averageProcessDelay,omitempty"`

	DeviceMetrics *LogfileMetrics `protobuf:"bytes,17,opt,name=deviceMetrics,proto3" json:"deviceMetrics,omitempty"`
	AppMetrics    *LogfileMetrics `protobuf:"bytes,18,opt,name=appMetrics,proto3" json:"appMetrics,omitempty"`

	Top10InputSources map[string]uint32 `protobuf:"bytes,19,rep,name=top10_input_sources,json=top10InputSources,proto3" json:"top10_input_sources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`

	GzipFilesRemoved uint32 `protobuf:"varint,20,opt,name=gzipFilesRemoved,proto3" json:"gzipFilesRemoved,omitempty"`

	TooManyRequest uint32 `protobuf:"varint,21,opt,name=tooManyRequest,proto3" json:"tooManyRequest,omitempty"`

	SkipUploadAppFile uint32 `protobuf:"varint,22,opt,name=skipUploadAppFile,proto3" json:"skipUploadAppFile,omitempty"`
}

func (x *NewlogMetric) Reset() {
	*x = NewlogMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NewlogMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NewlogMetric) ProtoMessage() {}

func (x *NewlogMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[36]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*NewlogMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{36}
}

func (x *NewlogMetric) GetFailedToSend() bool {
	if x != nil {
		return x.FailedToSend
	}
	return false
}

func (x *NewlogMetric) GetFailSentStartTime() *timestamp.Timestamp {
	if x != nil {
		return x.FailSentStartTime
	}
	return nil
}

func (x *NewlogMetric) GetTotalBytesUpload() uint64 {
	if x != nil {
		return x.TotalBytesUpload
	}
	return 0
}

func (x *NewlogMetric) GetNum4XxResponses() uint32 {
	if x != nil {
		return x.Num4XxResponses
	}
	return 0
}

func (x *NewlogMetric) GetCurrentUploadIntv() uint32 {
	if x != nil {
		return x.CurrentUploadIntv
	}
	return 0
}

func (x *NewlogMetric) GetLogfileTimeout() uint32 {
	if x != nil {
		return x.LogfileTimeout
	}
	return 0
}

func (x *NewlogMetric) GetMaxGzipFileSize() uint32 {
	if x != nil {
		return x.MaxGzipFileSize
	}
	return 0
}

func (x *NewlogMetric) GetAvgGzipFileSize() uint32 {
	if x != nil {
		return x.AvgGzipFileSize
	}
	return 0
}

func (x *NewlogMetric) GetMimUploadMsec() uint32 {
	if x != nil {
		return x.MimUploadMsec
	}
	return 0
}

func (x *NewlogMetric) GetMaxUploadMsec() uint32 {
	if x != nil {
		return x.MaxUploadMsec
	}
	return 0
}

func (x *NewlogMetric) GetAvgUploadMsec() uint32 {
	if x != nil {
		return x.AvgUploadMsec
	}
	return 0
}

func (x *NewlogMetric) GetLastUploadMsec() uint32 {
	if x != nil {
		return x.LastUploadMsec
	}
	return 0
}

func (x *NewlogMetric) GetCurrentCPULoadPct() float32 {
	if x != nil {
		return x.CurrentCPULoadPct
	}
	return 0
}

func (x *NewlogMetric) GetAverageCPULoadPct() float32 {
	if x != nil {
		return x.AverageCPULoadPct
	}
	return 0
}

func (x *NewlogMetric) GetCurrentProcessDelay() uint32 {
	if x != nil {
		return x.CurrentProcessDelay
	}
	return 0
}

func (x *NewlogMetric) GetAverageProcessDelay() uint32 {
	if x != nil {
		return x.AverageProcessDelay
	}
	return 0
}

func (x *NewlogMetric) GetDeviceMetrics() *LogfileMetrics {
	if x != nil {
		return x.DeviceMetrics
	}
	return nil
}

func (x *NewlogMetric) GetAppMetrics() *LogfileMetrics {
	if x != nil {
		return x.AppMetrics
	}
	return nil
}

func (x *NewlogMetric) GetTop10InputSources() map[string]uint32 {
	if x != nil {
		return x.Top10InputSources
	}
	return nil
}

func (x *NewlogMetric) GetGzipFilesRemoved() uint32 {
	if x != nil {
		return x.GzipFilesRemoved
	}
	return 0
}

func (x *NewlogMetric) GetTooManyRequest() uint32 {
	if x != nil {
		return x.TooManyRequest
	}
	return 0
}

func (x *NewlogMetric) GetSkipUploadAppFile() uint32 {
	if x != nil {
		return x.SkipUploadAppFile
	}
	return 0
}

type LogfileMetrics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NumGzipFileSent   uint64 `protobuf:"varint,1,opt,name=numGzipFileSent,proto3" json:"numGzipFileSent,omitempty"`
	NumGzipBytesWrite uint64 `protobuf:"varint,2,opt,name=numGzipBytesWrite,proto3" json:"numGzipBytesWrite,omitempty"`
	NumBytesWrite     uint64 `protobuf:"varint,3,opt,name=numBytesWrite,proto3" json:"numBytesWrite,omitempty"`
	NumGzipFileInDir  uint32 `protobuf:"varint,4,opt,name=numGzipFileInDir,proto3" json:"numGzipFileInDir,omitempty"`
	NumInputEvent     uint64 `protobuf:"varint,5,opt,name=numInputEvent,proto3" json:"numInputEvent,omitempty"`

	NumGzipFileRetry     uint64               `protobuf:"varint,6,opt,name=numGzipFileRetry,proto3" json:"numGzipFileRetry,omitempty"`
	NumGzipFileKeptLocal uint32               `protobuf:"varint,7,opt,name=numGzipFileKeptLocal,proto3" json:"numGzipFileKeptLocal,omitempty"`
	RecentGzipFileTime   *timestamp.Timestamp `protobuf:"bytes,8,opt,name=recentGzipFileTime,proto3" json:"recentGzipFileTime,omitempty"`
	LastGzipFileSendTime *timestamp.Timestamp `protobuf:"bytes,9,opt,name=lastGzipFileSendTime,proto3" json:"lastGzipFileSendTime,omitempty"`
}

func (x *LogfileMetrics) Reset() {
	*x = LogfileMetrics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LogfileMetrics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LogfileMetrics) ProtoMessage() {}

func (x *LogfileMetrics) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[37]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*LogfileMetrics) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{37}
}

func (x *LogfileMetrics) GetNumGzipFileSent() uint64 {
	if x != nil {
		return x.NumGzipFileSent
	}
	return 0
}

func (x *LogfileMetrics) GetNumGzipBytesWrite() uint64 {
	if x != nil {
		return x.NumGzipBytesWrite
	}
	return 0
}

func (x *LogfileMetrics) GetNumBytesWrite() uint64 {
	if x != nil {
		return x.NumBytesWrite
	}
	return 0
}

func (x *LogfileMetrics) GetNumGzipFileInDir() uint32 {
	if x != nil {
		return x.NumGzipFileInDir
	}
	return 0
}

func (x *LogfileMetrics) GetNumInputEvent() uint64 {
	if x != nil {
		return x.NumInputEvent
	}
	return 0
}

func (x *LogfileMetrics) GetNumGzipFileRetry() uint64 {
	if x != nil {
		return x.NumGzipFileRetry
	}
	return 0
}

func (x *LogfileMetrics) GetNumGzipFileKeptLocal() uint32 {
	if x != nil {
		return x.NumGzipFileKeptLocal
	}
	return 0
}

func (x *LogfileMetrics) GetRecentGzipFileTime() *timestamp.Timestamp {
	if x != nil {
		return x.RecentGzipFileTime
	}
	return nil
}

func (x *LogfileMetrics) GetLastGzipFileSendTime() *timestamp.Timestamp {
	if x != nil {
		return x.LastGzipFileSendTime
	}
	return nil
}

type ZedboxStats struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NumGoRoutines uint32 `protobuf:"varint,1,opt,name=numGoRoutines,proto3" json:"numGoRoutines,omitempty"`
}

func (x *ZedboxStats) Reset() {
	*x = ZedboxStats{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZedboxStats) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZedboxStats) ProtoMessage() {}

func (x *ZedboxStats) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[38]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZedboxStats) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{38}
}

func (x *ZedboxStats) GetNumGoRoutines() uint32 {
	if x != nil {
		return x.NumGoRoutines
	}
	return 0
}

type VlanInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NumTrunkPorts uint32            `protobuf:"varint,1,opt,name=num_trunk_ports,json=numTrunkPorts,proto3" json:"num_trunk_ports,omitempty"`                                                                               
	VlanCounts    map[uint32]uint32 `protobuf:"bytes,2,rep,name=vlan_counts,json=vlanCounts,proto3" json:"vlan_counts,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` 
}

func (x *VlanInfo) Reset() {
	*x = VlanInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *VlanInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*VlanInfo) ProtoMessage() {}

func (x *VlanInfo) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[39]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*VlanInfo) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{39}
}

func (x *VlanInfo) GetNumTrunkPorts() uint32 {
	if x != nil {
		return x.NumTrunkPorts
	}
	return 0
}

func (x *VlanInfo) GetVlanCounts() map[uint32]uint32 {
	if x != nil {
		return x.VlanCounts
	}
	return nil
}

type FlowlogMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Messages *FlowlogCounters `protobuf:"bytes,1,opt,name=messages,proto3" json:"messages,omitempty"`

	Flows *FlowlogCounters `protobuf:"bytes,2,opt,name=flows,proto3" json:"flows,omitempty"`

	DnsRequests *FlowlogCounters `protobuf:"bytes,3,opt,name=dns_requests,json=dnsRequests,proto3" json:"dns_requests,omitempty"`
}

func (x *FlowlogMetric) Reset() {
	*x = FlowlogMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FlowlogMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FlowlogMetric) ProtoMessage() {}

func (x *FlowlogMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[40]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*FlowlogMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{40}
}

func (x *FlowlogMetric) GetMessages() *FlowlogCounters {
	if x != nil {
		return x.Messages
	}
	return nil
}

func (x *FlowlogMetric) GetFlows() *FlowlogCounters {
	if x != nil {
		return x.Flows
	}
	return nil
}

func (x *FlowlogMetric) GetDnsRequests() *FlowlogCounters {
	if x != nil {
		return x.DnsRequests
	}
	return nil
}

type FlowlogCounters struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Success uint64 `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`

	Drops uint64 `protobuf:"varint,2,opt,name=drops,proto3" json:"drops,omitempty"`

	FailedAttempts uint64 `protobuf:"varint,3,opt,name=failed_attempts,json=failedAttempts,proto3" json:"failed_attempts,omitempty"`
}

func (x *FlowlogCounters) Reset() {
	*x = FlowlogCounters{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FlowlogCounters) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FlowlogCounters) ProtoMessage() {}

func (x *FlowlogCounters) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[41]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*FlowlogCounters) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{41}
}

func (x *FlowlogCounters) GetSuccess() uint64 {
	if x != nil {
		return x.Success
	}
	return 0
}

func (x *FlowlogCounters) GetDrops() uint64 {
	if x != nil {
		return x.Drops
	}
	return 0
}

func (x *FlowlogCounters) GetFailedAttempts() uint64 {
	if x != nil {
		return x.FailedAttempts
	}
	return 0
}

type ZProbeNIMetrics_ZProbeIntfMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	IntfName           string `protobuf:"bytes,11,opt,name=intfName,proto3" json:"intfName,omitempty"`                      
	GatewayNexhtop     string `protobuf:"bytes,12,opt,name=gatewayNexhtop,proto3" json:"gatewayNexhtop,omitempty"`          
	GatewayUP          bool   `protobuf:"varint,13,opt,name=gatewayUP,proto3" json:"gatewayUP,omitempty"`                   
	RemoteHostUP       bool   `protobuf:"varint,14,opt,name=remoteHostUP,proto3" json:"remoteHostUP,omitempty"`             
	NexthopUpCount     uint32 `protobuf:"varint,15,opt,name=nexthopUpCount,proto3" json:"nexthopUpCount,omitempty"`         
	NexthopDownCount   uint32 `protobuf:"varint,16,opt,name=nexthopDownCount,proto3" json:"nexthopDownCount,omitempty"`     
	RemoteUpCount      uint32 `protobuf:"varint,17,opt,name=remoteUpCount,proto3" json:"remoteUpCount,omitempty"`           
	RemoteDownCount    uint32 `protobuf:"varint,18,opt,name=remoteDownCount,proto3" json:"remoteDownCount,omitempty"`       
	RemoteProbeLatency uint32 `protobuf:"varint,19,opt,name=remoteProbeLatency,proto3" json:"remoteProbeLatency,omitempty"` 
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) Reset() {
	*x = ZProbeNIMetrics_ZProbeIntfMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZProbeNIMetrics_ZProbeIntfMetric) ProtoMessage() {}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[43]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

func (*ZProbeNIMetrics_ZProbeIntfMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{31, 0}
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetIntfName() string {
	if x != nil {
		return x.IntfName
	}
	return ""
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetGatewayNexhtop() string {
	if x != nil {
		return x.GatewayNexhtop
	}
	return ""
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetGatewayUP() bool {
	if x != nil {
		return x.GatewayUP
	}
	return false
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetRemoteHostUP() bool {
	if x != nil {
		return x.RemoteHostUP
	}
	return false
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetNexthopUpCount() uint32 {
	if x != nil {
		return x.NexthopUpCount
	}
	return 0
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetNexthopDownCount() uint32 {
	if x != nil {
		return x.NexthopDownCount
	}
	return 0
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetRemoteUpCount() uint32 {
	if x != nil {
		return x.RemoteUpCount
	}
	return 0
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetRemoteDownCount() uint32 {
	if x != nil {
		return x.RemoteDownCount
	}
	return 0
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetRemoteProbeLatency() uint32 {
	if x != nil {
		return x.RemoteProbeLatency
	}
	return 0
}

var File_metrics_metrics_proto protoreflect.FileDescriptor

var file_metrics_metrics_proto_rawDesc = []byte{
	0x0a, 0x15, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65,
	0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a,
	0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x22, 0x96, 0x01, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x07, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x61,
	0x76, 0x61, 0x69, 0x6c, 0x4d, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61,
	0x76, 0x61, 0x69, 0x6c, 0x4d, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x64, 0x50,
	0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52,
	0x0e, 0x75, 0x73, 0x65, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12,
	0x28, 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61,
	0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x50,
	0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0x4b, 0x0a, 0x0f, 0x41, 0x70, 0x70,
	0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x20, 0x0a, 0x0b,
	0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x42, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x42, 0x12, 0x16,
	0x0a, 0x06, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x42, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06,
	0x75, 0x73, 0x65, 0x64, 0x4d, 0x42, 0x22, 0xa3, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1a, 0x0a,
	0x08, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x42, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x08, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x42, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x4d, 0x42, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x41, 0x70,
	0x70, 0x73, 0x4d, 0x42, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65,
	0x64, 0x5f, 0x65, 0x76, 0x65, 0x4d, 0x42, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x61,
	0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x4d, 0x42, 0x12, 0x1d, 0x0a,
	0x0a, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x4d, 0x42, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x09, 0x75, 0x73, 0x65, 0x64, 0x45, 0x76, 0x65, 0x4d, 0x42, 0x22, 0xcd, 0x03, 0x0a,
	0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x14,
	0x0a, 0x05, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69,
	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x14, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x78,
	0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x78, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x18,
	0x0a, 0x07, 0x74, 0x78, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x07, 0x74, 0x78, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x78, 0x44, 0x72,
	0x6f, 0x70, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x72, 0x78, 0x44, 0x72, 0x6f,
	0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x50, 0x6b, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x06, 0x74, 0x78, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x78,
	0x50, 0x6b, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x78, 0x50, 0x6b,
	0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1a,
	0x0a, 0x08, 0x72, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x08, 0x72, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x78,
	0x41, 0x63, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a,
	0x74, 0x78, 0x41, 0x63, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x78,
	0x41, 0x63, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a,
	0x72, 0x78, 0x41, 0x63, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x74, 0x78,
	0x41, 0x63, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x72, 0x6f, 0x70,
	0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x74, 0x78, 0x41, 0x63, 0x6c, 0x52, 0x61,
	0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x30, 0x0a, 0x13,
	0x72, 0x78, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x72,
	0x6f, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x72, 0x78, 0x41, 0x63, 0x6c,
	0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x1c,
	0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xdd, 0x01, 0x0a,
	0x0e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12,
	0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61,
	0x62, 0x65, 0x6c, 0x12, 0x57, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74,
	0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x69,
	0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0e, 0x73, 0x69,
	0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4e, 0x0a, 0x0c,
	0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x65, 0x6c, 0x6c,
	0x75, 0x6c, 0x61, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
	0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x66, 0x0a, 0x16,
	0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74,
	0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x73, 0x69, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x73, 0x73, 0x69, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73,
	0x72, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x73, 0x72, 0x71, 0x12, 0x12,
	0x0a, 0x04, 0x72, 0x73, 0x72, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x73,
	0x72, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x03, 0x73, 0x6e, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x13, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61,
	0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x02,
	0x72, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c,
	0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x02,
	0x72, 0x78, 0x12, 0x34, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
	0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53,
	0x74, 0x61, 0x74, 0x73, 0x52, 0x02, 0x74, 0x78, 0x22, 0xd0, 0x02, 0x0a, 0x0e, 0x7a, 0x65, 0x64,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x69,
	0x66, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x66, 0x4e,
	0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12,
	0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x61, 0x73,
	0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74,
	0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x53,
	0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x75,
	0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x75, 0x72, 0x6c, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
	0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x2e, 0x75, 0x72, 0x6c, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x52, 0x0a, 0x75, 0x72, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2c, 0x0a,
	0x11, 0x61, 0x75, 0x74, 0x68, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75,
	0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x61, 0x75, 0x74, 0x68, 0x56, 0x65,
	0x72, 0x69, 0x66, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x22, 0xd2, 0x02, 0x0a, 0x0e,
	0x75, 0x72, 0x6c, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x10,
	0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
	0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x79, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x72, 0x79, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x79, 0x42, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x74, 0x72, 0x79, 0x42, 0x79, 0x74,
	0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x73,
	0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65,
	0x6e, 0x74, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65,
	0x6e, 0x74, 0x42, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x76, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x76, 0x4d, 0x73, 0x67, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x76, 0x42, 0x79, 0x74, 0x65,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x63,
	0x76, 0x42, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x53,
	0x70, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x73,
	0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0f, 0x73, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x22, 0xaa, 0x02, 0x0a, 0x0c, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65,
	0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x73, 0x75,
	0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61,
	0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61,
	0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73,
	0x74, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73,
	0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, 0x02, 0x74, 0x63, 0x18, 0x06,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67,
	0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x54, 0x79,
	0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x02, 0x74, 0x63, 0x22, 0x67, 0x0a,
	0x0b, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0a,
	0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76,
	0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65,
	0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x43, 0x70,
	0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x32, 0x0a, 0x06, 0x75, 0x70, 0x54, 0x69, 0x6d,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
	0x61, 0x6d, 0x70, 0x52, 0x06, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x6f, 0x74, 0x61, 0x6c,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x6f,
	0x74, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x73, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x73, 0x22, 0x6d,
	0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x49, 0x6e, 0x66,
	0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d,
	0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25,
	0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xda, 0x01,
	0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12,
	0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12,
	0x4a, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65,
	0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e,
	0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x73,
	0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x64,
	0x69, 0x73, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67,
	0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x05, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x22, 0xfc, 0x0a, 0x0a, 0x0c, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x3c, 0x0a, 0x06, 0x6d,
	0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x07, 0x6e, 0x65, 0x74,
	0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67,
	0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x42, 0x0a, 0x08, 0x7a, 0x65,
	0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x7a, 0x65, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x7a, 0x65, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x36,
	0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x12, 0x42, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
	0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x43, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52,
	0x09, 0x63, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65,
	0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49,
	0x74, 0x65, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73,
	0x12, 0x3a, 0x0a, 0x18, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61,
	0x67, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x4d, 0x42, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x18, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61,
	0x67, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x4d, 0x42, 0x12, 0x30, 0x0a, 0x13,
	0x61, 0x70, 0x70, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
	0x65, 0x4d, 0x42, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x61, 0x70, 0x70, 0x52, 0x75,
	0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x42, 0x12, 0x5c,
	0x0a, 0x16, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73,
	0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x42, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
	0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x52, 0x16, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76,
	0x69, 0x63, 0x65, 0x73, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x42, 0x12, 0x33, 0x0a, 0x03,
	0x6c, 0x6f, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
	0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x2e, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x03, 0x6c, 0x6f,
	0x67, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65,
	0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65,
	0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x12,
	0x33, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52,
	0x03, 0x61, 0x63, 0x6c, 0x12, 0x3c, 0x0a, 0x06, 0x6e, 0x65, 0x77, 0x6c, 0x6f, 0x67, 0x18, 0x0f,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67,
	0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65,
	0x77, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x6e, 0x65, 0x77, 0x6c,
	0x6f, 0x67, 0x12, 0x3b, 0x0a, 0x06, 0x7a, 0x65, 0x64, 0x62, 0x6f, 0x78, 0x18, 0x10, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x7a, 0x65, 0x64, 0x62,
	0x6f, 0x78, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x06, 0x7a, 0x65, 0x64, 0x62, 0x6f, 0x78, 0x12,
	0x4e, 0x0a, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18,
	0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64,
	0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x52, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12,
	0x4c, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64,
	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x52,
	0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 0x0a,
	0x15, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72,
	0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x42, 0x0a,
	0x08, 0x63, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65,
	0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61,
	0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x63, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61,
	0x72, 0x12, 0x3f, 0x0a, 0x07, 0x66, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x18, 0x15, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x46, 0x6c, 0x6f, 0x77,
	0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x66, 0x6c, 0x6f, 0x77, 0x6c,
	0x6f, 0x67, 0x12, 0x35, 0x0a, 0x17, 0x64, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x74, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x16, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x14, 0x64, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65,
	0x49, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x4e, 0x0a, 0x0f, 0x73, 0x74, 0x6f,
	0x72, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x17, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x72,
	0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61,
	0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x35, 0x0a, 0x09, 0x41, 0x63, 0x6c,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
	0x72, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x22, 0xb4, 0x03, 0x0a, 0x12, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
	0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x43, 0x6f,
	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x10, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e,
	0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x50,
	0x49, 0x44, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x50, 0x49, 0x44, 0x73, 0x12,
	0x36, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x43, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x3c, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
	0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66,
	0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x6d,
	0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65,
	0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e,
	0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6e,
	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x36, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67,
	0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x69,
	0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x12, 0x57,
	0x0a, 0x12, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65,
	0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67,
	0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x52, 0x12, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
	0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x22, 0x9b, 0x02, 0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65,
	0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0b, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x69, 0x6e,
	0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0b, 0x75, 0x69, 0x6e, 0x74,
	0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52,
	0x0b, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0a,
	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02,
	0x48, 0x00, 0x52, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22,
	0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf8, 0x01, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x6b, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79,
	0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74,
	0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64,
	0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04,
	0x66, 0x72, 0x65, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x66, 0x72, 0x65, 0x65,
	0x22, 0x8b, 0x01, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x44, 0x69, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x72, 0x6f,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08,
	0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x69, 0x72, 0x74,
	0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, 0x69, 0x72, 0x74, 0x79, 0x22, 0xde,
	0x03, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x14, 0x0a, 0x05,
	0x41, 0x70, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x70, 0x70,
	0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x03,
	0x63, 0x70, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
	0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x43, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52,
	0x03, 0x63, 0x70, 0x75, 0x12, 0x3c, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67,
	0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6d, 0x65,
	0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f,
	0x72, 0x79, 0x12, 0x3f, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65,
	0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x74,
	0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77,
	0x6f, 0x72, 0x6b, 0x12, 0x39, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65,
	0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x44, 0x69,
	0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x12, 0x48,
	0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65,
	0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x43, 0x6f,
	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x09, 0x63,
	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x4d,
	0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x52, 0x09, 0x61, 0x70, 0x70, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x22,
	0xae, 0x08, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x30, 0x0a,
	0x13, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
	0x53, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x12,
	0x32, 0x0a, 0x14, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64,
	0x6c, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x6e,
	0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x53,
	0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x41, 0x70, 0x70, 0x45, 0x76, 0x65,
	0x6e, 0x74, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6e,
	0x75, 0x6d, 0x41, 0x70, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x12,
	0x2c, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x41, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73,
	0x53, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x41,
	0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a,
	0x0f, 0x6e, 0x75, 0x6d, 0x34, 0x78, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x34, 0x78, 0x78, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x54,
	0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12,
	0x50, 0x0a, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65,
	0x53, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x15, 0x6c, 0x61, 0x73, 0x74,
	0x41, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d,
	0x65, 0x12, 0x38, 0x0a, 0x17, 0x69, 0x73, 0x4c, 0x6f, 0x67, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73,
	0x73, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x17, 0x69, 0x73, 0x4c, 0x6f, 0x67, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
	0x69, 0x6e, 0x67, 0x44, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6e,
	0x75, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x44, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x44,
	0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x4c,
	0x6f, 0x67, 0x44, 0x65, 0x66, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c,
	0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x44, 0x65, 0x66, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12,
	0x30, 0x0a, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x6f,
	0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x70, 0x75,
	0x74, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x4c, 0x6f, 0x67,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x41, 0x70, 0x70, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x32, 0x0a,
	0x14, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x6e, 0x75, 0x6d,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72,
	0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x41, 0x70, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6e, 0x75,
	0x6d, 0x41, 0x70, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12,
	0x44, 0x0a, 0x1d, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64,
	0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74,
	0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1d, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x79, 0x74, 0x65,
	0x73, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x1a, 0x6e, 0x75, 0x6d, 0x41, 0x70, 0x70, 0x42,
	0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53,
	0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1a, 0x6e, 0x75, 0x6d, 0x41, 0x70,
	0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x79, 0x74, 0x65,
	0x73, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x0d, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a,
	0x3f, 0x0a, 0x11, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x22, 0x39, 0x0a, 0x07, 0x50, 0x6b, 0x74, 0x53, 0x74, 0x61, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x50,
	0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x50, 0x61,
	0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x83, 0x02, 0x0a, 0x0b,
	0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x6e, 0x12, 0x37, 0x0a, 0x06, 0x49,
	0x6e, 0x50, 0x6b, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x6b, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x06, 0x49, 0x6e,
	0x50, 0x6b, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x4f, 0x75, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64,
	0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50,
	0x6b, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x07, 0x4f, 0x75, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x12,
	0x39, 0x0a, 0x07, 0x45, 0x72, 0x72, 0x50, 0x6b, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76,
	0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x6b, 0x74, 0x53, 0x74, 0x61,
	0x74, 0x52, 0x07, 0x45, 0x72, 0x72, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x45, 0x0a, 0x0d, 0x43, 0x61,
	0x72, 0x69, 0x65, 0x72, 0x45, 0x72, 0x72, 0x50, 0x6b, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65,
	0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x6b, 0x74, 0x53, 0x74,
	0x61, 0x74, 0x52, 0x0d, 0x43, 0x61, 0x72, 0x69, 0x65, 0x72, 0x45, 0x72, 0x72, 0x50, 0x6b, 0x74,
	0x73, 0x22, 0x8c, 0x02, 0x0a, 0x0a, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x70, 0x6e,
	0x12, 0x3f, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x6e, 0x52, 0x08, 0x43, 0x6f, 0x6e, 0x6e, 0x53, 0x74, 0x61,
	0x74, 0x12, 0x3d, 0x0a, 0x07, 0x49, 0x6b, 0x65, 0x53, 0x74, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x6e, 0x52, 0x07, 0x49, 0x6b, 0x65, 0x53, 0x74, 0x61, 0x74,
	0x12, 0x3f, 0x0a, 0x08, 0x4e, 0x61, 0x74, 0x54, 0x53, 0x74, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x6e, 0x52, 0x08, 0x4e, 0x61, 0x74, 0x54, 0x53, 0x74, 0x61,
	0x74, 0x12, 0x3d, 0x0a, 0x07, 0x45, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x6e, 0x52, 0x07, 0x45, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74,
	0x22, 0x0d, 0x0a, 0x0b, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x6e, 0x65, 0x22,
	0x49, 0x0a, 0x0f, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x69,
	0x6e, 0x6b, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05,
	0x73, 0x70, 0x69, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x70, 0x69,
	0x49, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0xaf, 0x01, 0x0a, 0x13, 0x5a,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69,
	0x6e, 0x74, 0x12, 0x18, 0x0a, 0x06, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x12, 0x3b, 0x0a, 0x04,
	0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67,
	0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x4c,
	0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61,
	0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c,
	0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x2e, 0x50, 0x6b, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73,
	0x42, 0x0a, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0xf5, 0x01, 0x0a,
	0x0b, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x49,
	0x0a, 0x09, 0x6c, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65,
	0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x09,
	0x6c, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x72, 0x45, 0x6e,
	0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f,
	0x77, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x09, 0x72, 0x45, 0x6e, 0x64, 0x50,
	0x6f, 0x69, 0x6e, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x0c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
	0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61,
	0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72,
	0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x05, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c,
	0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x13, 0x5a, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
	0x34, 0x0a, 0x02, 0x72, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74,
	0x73, 0x52, 0x02, 0x72, 0x78, 0x12, 0x34, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65,
	0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f,
	0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x02, 0x74, 0x78, 0x22, 0x86, 0x05, 0x0a, 0x0f,
	0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4e, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12,
	0x20, 0x0a, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x66, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74,
	0x66, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f,
	0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74,
	0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x69, 0x6e,
	0x67, 0x49, 0x6e, 0x74, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x69, 0x6e,
	0x67, 0x49, 0x6e, 0x74, 0x76, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50,
	0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x72,
	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x76, 0x12, 0x1c, 0x0a,
	0x09, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x09, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x0a, 0x69,
	0x6e, 0x74, 0x66, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x38, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65,
	0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4e,
	0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x49,
	0x6e, 0x74, 0x66, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x66, 0x4d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x1a, 0xec, 0x02, 0x0a, 0x10, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65,
	0x49, 0x6e, 0x74, 0x66, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e,
	0x74, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e,
	0x74, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61,
	0x79, 0x4e, 0x65, 0x78, 0x68, 0x74, 0x6f, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
	0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x65, 0x78, 0x68, 0x74, 0x6f, 0x70, 0x12, 0x1c,
	0x0a, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x50, 0x18, 0x0d, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x50, 0x12, 0x22, 0x0a, 0x0c,
	0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x50, 0x18, 0x0e, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x50,
	0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x55, 0x70, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f,
	0x70, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x65, 0x78, 0x74,
	0x68, 0x6f, 0x70, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x44, 0x6f, 0x77, 0x6e, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x55, 0x70,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x72, 0x65, 0x6d,
	0x6f, 0x74, 0x65, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65,
	0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x72,
	0x6f, 0x62, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4c, 0x61, 0x74,
	0x65, 0x6e, 0x63, 0x79, 0x22, 0xa3, 0x05, 0x0a, 0x16, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12,
	0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x26, 0x0a,
	0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70,
	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65,
	0x64, 0x12, 0x3f, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77,
	0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f,
	0x72, 0x6b, 0x12, 0x49, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66,
	0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x2e, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4e, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x52, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x38, 0x0a,
	0x04, 0x76, 0x70, 0x6e, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x70, 0x6e, 0x48,
	0x00, 0x52, 0x04, 0x76, 0x70, 0x6e, 0x6d, 0x12, 0x3b, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x65, 0x6d,
	0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65,
	0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e,
	0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x05, 0x6e,
	0x6f, 0x6e, 0x65, 0x6d, 0x12, 0x41, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74,
	0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66,
	0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x09, 0x66, 0x6c,
	0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f,
	0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
	0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x65,
	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0c, 0x6e, 0x65, 0x74, 0x77,
	0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x09, 0x76, 0x6c, 0x61, 0x6e,
	0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x76,
	0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x74, 0x61,
	0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x9d, 0x02, 0x0a, 0x0d, 0x5a,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04,
	0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64,
	0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73,
	0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73,
	0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e,
	0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e,
	0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1c,
	0x0a, 0x09, 0x75, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x09, 0x75, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09,
	0x66, 0x72, 0x65, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x09, 0x66, 0x72, 0x65, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xbe, 0x03, 0x0a, 0x0e, 0x5a,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a,
	0x03, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12,
	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x63,
	0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x50,
	0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65,
	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64,
	0x12, 0x17, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x46, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d,
	0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
	0x6e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73,
	0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x75,
	0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65,
	0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x73, 0x79,
	0x73, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x70, 0x75, 0x5f,
	0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x63,
	0x70, 0x75, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x6d, 0x5f, 0x62, 0x79, 0x74,
	0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x6d, 0x42, 0x79, 0x74, 0x65,
	0x73, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x73, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0c,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x73, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x25,
	0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
	0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x65,
	0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x0e,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x22, 0x8b, 0x03, 0x0a, 0x0a,
	0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65,
	0x76, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x76, 0x49, 0x44,
	0x12, 0x3c, 0x0a, 0x0b, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
	0x70, 0x52, 0x0b, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36,
	0x0a, 0x02, 0x64, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67,
	0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x48, 0x00, 0x52, 0x02, 0x64, 0x6d, 0x12, 0x31, 0x0a, 0x02, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x4d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x02, 0x61, 0x6d, 0x12, 0x3e, 0x0a, 0x02, 0x6e, 0x6d, 0x18,
	0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64,
	0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73,
	0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x02, 0x6e, 0x6d, 0x12, 0x35, 0x0a, 0x02, 0x76, 0x6d, 0x18,
	0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64,
	0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x02, 0x76, 0x6d,
	0x12, 0x36, 0x0a, 0x02, 0x70, 0x72, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x72, 0x6f,
	0x63, 0x65, 0x73, 0x73, 0x52, 0x02, 0x70, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0xa1, 0x09, 0x0a, 0x0c, 0x6e, 0x65,
	0x77, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x61,
	0x69, 0x6c, 0x65, 0x64, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x48,
	0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54,
	0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x74, 0x53,
	0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x55, 0x70,
	0x6c, 0x6f, 0x61, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x34, 0x78, 0x78, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6e,
	0x75, 0x6d, 0x34, 0x78, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x2c,
	0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49,
	0x6e, 0x74, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65,
	0x6e, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x74, 0x76, 0x12, 0x26, 0x0a, 0x0e,
	0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d,
	0x65, 0x6f, 0x75, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x47, 0x7a, 0x69, 0x70, 0x46,
	0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6d,
	0x61, 0x78, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x28,
	0x0a, 0x0f, 0x61, 0x76, 0x67, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a,
	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x61, 0x76, 0x67, 0x47, 0x7a, 0x69, 0x70,
	0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x69, 0x6d, 0x55,
	0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x0d, 0x6d, 0x69, 0x6d, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x12, 0x24,
	0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x18,
	0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64,
	0x4d, 0x73, 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x76, 0x67, 0x55, 0x70, 0x6c, 0x6f, 0x61,
	0x64, 0x4d, 0x73, 0x65, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x61, 0x76, 0x67,
	0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61,
	0x73, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x18, 0x0c, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73,
	0x65, 0x63, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x50, 0x55,
	0x4c, 0x6f, 0x61, 0x64, 0x50, 0x63, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x63,
	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x50, 0x55, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x63, 0x74,
	0x12, 0x2c, 0x0a, 0x11, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x43, 0x50, 0x55, 0x4c, 0x6f,
	0x61, 0x64, 0x50, 0x63, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x61, 0x76, 0x65,
	0x72, 0x61, 0x67, 0x65, 0x43, 0x50, 0x55, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x63, 0x74, 0x12, 0x30,
	0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
	0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x63, 0x75, 0x72,
	0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79,
	0x12, 0x30, 0x0a, 0x13, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65,
	0x73, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x61,
	0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c,
	0x61, 0x79, 0x12, 0x4c, 0x0a, 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
	0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x2e, 0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x12, 0x46, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x12,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67,
	0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6c, 0x6f,
	0x67, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0a, 0x61, 0x70,
	0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x6b, 0x0a, 0x13, 0x74, 0x6f, 0x70, 0x31,
	0x30, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18,
	0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64,
	0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6e,
	0x65, 0x77, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x54, 0x6f, 0x70, 0x31,
	0x30, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x11, 0x74, 0x6f, 0x70, 0x31, 0x30, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x67, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c,
	0x65, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x10, 0x67, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
	0x64, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x6f, 0x6f, 0x4d, 0x61,
	0x6e, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x6b, 0x69,
	0x70, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x70, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x16,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x73, 0x6b, 0x69, 0x70, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64,
	0x41, 0x70, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x1a, 0x44, 0x0a, 0x16, 0x54, 0x6f, 0x70, 0x31, 0x30,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdc, 0x03,
	0x0a, 0x0e, 0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53,
	0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x47, 0x7a,
	0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x6e, 0x75,
	0x6d, 0x47, 0x7a, 0x69, 0x70, 0x42, 0x79, 0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x42, 0x79,
	0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x0d, 0x6e, 0x75, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x2a,
	0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x44,
	0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69,
	0x70, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x44, 0x69, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x75,
	0x6d, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74,
	0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x52,
	0x65, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x47,
	0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x32, 0x0a, 0x14,
	0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x70, 0x74, 0x4c,
	0x6f, 0x63, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x47,
	0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x70, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c,
	0x12, 0x4a, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69,
	0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74,
	0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x14,
	0x6c, 0x61, 0x73, 0x74, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x64,
	0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x47, 0x7a, 0x69, 0x70,
	0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x33, 0x0a, 0x0b,
	0x7a, 0x65, 0x64, 0x62, 0x6f, 0x78, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6e,
	0x75, 0x6d, 0x47, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x47, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65,
	0x73, 0x22, 0xc4, 0x01, 0x0a, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26,
	0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x54, 0x72, 0x75, 0x6e,
	0x6b, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x0b, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x6c,
	0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x76,
	0x6c, 0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x56, 0x6c, 0x61,
	0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdf, 0x01, 0x0a, 0x0d, 0x46, 0x6c, 0x6f,
	0x77, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x43, 0x0a, 0x08, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12,
	0x3d, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
	0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x4a,
	0x0a, 0x0c, 0x64, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67,
	0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x46, 0x6c,
	0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0b, 0x64,
	0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x6a, 0x0a, 0x0f, 0x46, 0x6c,
	0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a,
	0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07,
	0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x72, 0x6f, 0x70, 0x73,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x27, 0x0a,
	0x0f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x74,
	0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x2a, 0x32, 0x0a, 0x0c, 0x5a, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x09, 0x0a, 0x05, 0x5a, 0x6d, 0x4e, 0x6f, 0x70, 0x10,
	0x00, 0x12, 0x0c, 0x0a, 0x08, 0x5a, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x10, 0x01, 0x12,
	0x09, 0x0a, 0x05, 0x5a, 0x6d, 0x41, 0x70, 0x70, 0x10, 0x03, 0x2a, 0x85, 0x02, 0x0a, 0x0b, 0x43,
	0x69, 0x70, 0x68, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x49,
	0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c,
	0x49, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45,
	0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x01,
	0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
	0x5f, 0x44, 0x45, 0x43, 0x52, 0x59, 0x50, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10,
	0x02, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f,
	0x52, 0x5f, 0x55, 0x4e, 0x4d, 0x41, 0x52, 0x53, 0x48, 0x41, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c,
	0x45, 0x44, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45,
	0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x46,
	0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x49, 0x50,
	0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e,
	0x47, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16,
	0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x5f,
	0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x49, 0x50, 0x48,
	0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41,
	0x10, 0x07, 0x2a, 0xf5, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f,
	0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f,
	0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x12,
	0x1b, 0x0a, 0x17, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55,
	0x53, 0x5f, 0x44, 0x45, 0x47, 0x52, 0x41, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16,
	0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46,
	0x41, 0x55, 0x4c, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52,
	0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x49,
	0x4e, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f,
	0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x10, 0x05,
	0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54,
	0x55, 0x53, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18,
	0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53,
	0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x07, 0x2a, 0x66, 0x0a, 0x0e, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x10,
	0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x47,
	0x61, 0x75, 0x67, 0x65, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x10, 0x02, 0x12, 0x13, 0x0a,
	0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65,
	0x10, 0x03, 0x42, 0x3f, 0x0a, 0x16, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65,
	0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5a, 0x25, 0x67, 0x69,
	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x66, 0x2d, 0x65, 0x64, 0x67, 0x65,
	0x2f, 0x65, 0x76, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_metrics_metrics_proto_rawDescOnce sync.Once
	file_metrics_metrics_proto_rawDescData = file_metrics_metrics_proto_rawDesc
)

func file_metrics_metrics_proto_rawDescGZIP() []byte {
	file_metrics_metrics_proto_rawDescOnce.Do(func() {
		file_metrics_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(file_metrics_metrics_proto_rawDescData)
	})
	return file_metrics_metrics_proto_rawDescData
}

var file_metrics_metrics_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
var file_metrics_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 46)
var file_metrics_metrics_proto_goTypes = []interface{}{
	(ZmetricTypes)(0),                        
	(CipherError)(0),                         
	(StorageStatus)(0),                       
	(MetricItemType)(0),                      
	(*MemoryMetric)(nil),                     
	(*AppMemoryMetric)(nil),                  
	(*DeviceMemoryMetric)(nil),               
	(*NetworkMetric)(nil),                    
	(*CellularMetric)(nil),                   
	(*CellularSignalStrength)(nil),           
	(*CellularPacketStats)(nil),              
	(*ZedcloudMetric)(nil),                   
	(*UrlcloudMetric)(nil),                   
	(*CipherMetric)(nil),                     
	(*TypeCounter)(nil),                      
	(*AppCpuMetric)(nil),                     
	(*StorageDiskInfo)(nil),                  
	(*StorageMetric)(nil),                    
	(*DeviceMetric)(nil),                     
	(*AclMetric)(nil),                        
	(*AppContainerMetric)(nil),               
	(*MetricItem)(nil),                       
	(*DiskMetric)(nil),                       
	(*AppDiskMetric)(nil),                    
	(*AppMetric)(nil),                        
	(*LogMetric)(nil),                        
	(*PktStat)(nil),                          
	(*ZMetricConn)(nil),                      
	(*ZMetricVpn)(nil),                       
	(*ZMetricNone)(nil),                      
	(*ZMetricFlowLink)(nil),                  
	(*ZMetricFlowEndPoint)(nil),              
	(*ZMetricFlow)(nil),                      
	(*NetworkStats)(nil),                     
	(*ZMetricNetworkStats)(nil),              
	(*ZProbeNIMetrics)(nil),                  
	(*ZMetricNetworkInstance)(nil),           
	(*ZMetricVolume)(nil),                    
	(*ZMetricProcess)(nil),                   
	(*ZMetricMsg)(nil),                       
	(*NewlogMetric)(nil),                     
	(*LogfileMetrics)(nil),                   
	(*ZedboxStats)(nil),                      
	(*VlanInfo)(nil),                         
	(*FlowlogMetric)(nil),                    
	(*FlowlogCounters)(nil),                  
	nil,                                      
	(*ZProbeNIMetrics_ZProbeIntfMetric)(nil), 
	nil,                                      
	nil,                                      
	(*timestamp.Timestamp)(nil),              
}
var file_metrics_metrics_proto_depIdxs = []int32{
	9,  
	10, 
	33, 
	33, 
	50, 
	50, 
	12, 
	50, 
	50, 
	14, 
	1,  
	50, 
	2,  
	2,  
	16, 
	4,  
	7,  
	11, 
	22, 
	15, 
	21, 
	4,  
	25, 
	13, 
	19, 
	40, 
	42, 
	6,  
	50, 
	50, 
	8,  
	44, 
	17, 
	15, 
	4,  
	7,  
	22, 
	5,  
	3,  
	15, 
	4,  
	7,  
	23, 
	20, 
	5,  
	50, 
	50, 
	50, 
	46, 
	26, 
	26, 
	26, 
	26, 
	27, 
	27, 
	27, 
	27, 
	30, 
	26, 
	31, 
	31, 
	33, 
	33, 
	47, 
	7,  
	35, 
	28, 
	29, 
	32, 
	34, 
	43, 
	50, 
	50, 
	18, 
	24, 
	36, 
	37, 
	38, 
	50, 
	41, 
	41, 
	48, 
	50, 
	50, 
	49, 
	45, 
	45, 
	45, 
	88, 
	88, 
	88, 
	88, 
	0,  
}

func init() { file_metrics_metrics_proto_init() }
func file_metrics_metrics_proto_init() {
	if File_metrics_metrics_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_metrics_metrics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MemoryMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppMemoryMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeviceMemoryMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NetworkMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CellularMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CellularSignalStrength); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CellularPacketStats); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZedcloudMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UrlcloudMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CipherMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TypeCounter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppCpuMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StorageDiskInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StorageMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeviceMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AclMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppContainerMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MetricItem); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DiskMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppDiskMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LogMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PktStat); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricConn); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricVpn); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricNone); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricFlowLink); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricFlowEndPoint); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricFlow); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NetworkStats); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricNetworkStats); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZProbeNIMetrics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricNetworkInstance); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricVolume); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricProcess); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricMsg); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NewlogMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LogfileMetrics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZedboxStats); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*VlanInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FlowlogMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FlowlogCounters); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZProbeNIMetrics_ZProbeIntfMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_metrics_metrics_proto_msgTypes[17].OneofWrappers = []interface{}{
		(*MetricItem_BoolValue)(nil),
		(*MetricItem_Uint32Value)(nil),
		(*MetricItem_Uint64Value)(nil),
		(*MetricItem_FloatValue)(nil),
		(*MetricItem_StringValue)(nil),
	}
	file_metrics_metrics_proto_msgTypes[26].OneofWrappers = []interface{}{
		(*ZMetricFlowLink_SubNet)(nil),
	}
	file_metrics_metrics_proto_msgTypes[27].OneofWrappers = []interface{}{
		(*ZMetricFlowEndPoint_IpAddr)(nil),
	}
	file_metrics_metrics_proto_msgTypes[32].OneofWrappers = []interface{}{
		(*ZMetricNetworkInstance_Vpnm)(nil),
		(*ZMetricNetworkInstance_Nonem)(nil),
	}
	file_metrics_metrics_proto_msgTypes[35].OneofWrappers = []interface{}{
		(*ZMetricMsg_Dm)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_metrics_metrics_proto_rawDesc,
			NumEnums:      4,
			NumMessages:   46,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_metrics_metrics_proto_goTypes,
		DependencyIndexes: file_metrics_metrics_proto_depIdxs,
		EnumInfos:         file_metrics_metrics_proto_enumTypes,
		MessageInfos:      file_metrics_metrics_proto_msgTypes,
	}.Build()
	File_metrics_metrics_proto = out.File
	file_metrics_metrics_proto_rawDesc = nil
	file_metrics_metrics_proto_goTypes = nil
	file_metrics_metrics_proto_depIdxs = nil
}
// Copyright(c) 2017-2018 Zededa, Inc.
// All rights reserved.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.27.1-devel
// 	protoc        v3.12.2
// source: metrics/metrics.proto

package metrics

import (
	timestamp "github.com/golang/protobuf/ptypes/timestamp"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type ZmetricTypes int32

const (
	ZmetricTypes_ZmNop    ZmetricTypes = 0
	ZmetricTypes_ZmDevice ZmetricTypes = 1
	ZmetricTypes_ZmApp    ZmetricTypes = 3
)

// Enum value maps for ZmetricTypes.
var (
	ZmetricTypes_name = map[int32]string{
		0: "ZmNop",
		1: "ZmDevice",
		3: "ZmApp",
	}
	ZmetricTypes_value = map[string]int32{
		"ZmNop":    0,
		"ZmDevice": 1,
		"ZmApp":    3,
	}
)

func (x ZmetricTypes) Enum() *ZmetricTypes {
	p := new(ZmetricTypes)
	*p = x
	return p
}

func (x ZmetricTypes) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ZmetricTypes) Descriptor() protoreflect.EnumDescriptor {
	return file_metrics_metrics_proto_enumTypes[0].Descriptor()
}

func (ZmetricTypes) Type() protoreflect.EnumType {
	return &file_metrics_metrics_proto_enumTypes[0]
}

func (x ZmetricTypes) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ZmetricTypes.Descriptor instead.
func (ZmetricTypes) EnumDescriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{0}
}

// Various error codes
// Note that CIPHER_ERROR_NO_DATA isn't really an error; means that there
// was no encrypted nor cleartext data.
// Must match CipherError in pkg/pillar/types
type CipherError int32

const (
	CipherError_CIPHER_ERROR_INVALID            CipherError = 0
	CipherError_CIPHER_ERROR_NOT_READY          CipherError = 1 // Not yet received ECDH controller cert
	CipherError_CIPHER_ERROR_DECRYPT_FAILED     CipherError = 2 // ECDH decrypt failed
	CipherError_CIPHER_ERROR_UNMARSHAL_FAILED   CipherError = 3 // Failed protobuf decode post decryption
	CipherError_CIPHER_ERROR_CLEARTEXT_FALLBACK CipherError = 4 // Failure then using cleartext
	CipherError_CIPHER_ERROR_MISSING_FALLBACK   CipherError = 5 // Failed and no cleartext to fall back to
	CipherError_CIPHER_ERROR_NO_CIPHER          CipherError = 6 // Only cleartext received
	CipherError_CIPHER_ERROR_NO_DATA            CipherError = 7 // No data to encrypt/decrypt
)

// Enum value maps for CipherError.
var (
	CipherError_name = map[int32]string{
		0: "CIPHER_ERROR_INVALID",
		1: "CIPHER_ERROR_NOT_READY",
		2: "CIPHER_ERROR_DECRYPT_FAILED",
		3: "CIPHER_ERROR_UNMARSHAL_FAILED",
		4: "CIPHER_ERROR_CLEARTEXT_FALLBACK",
		5: "CIPHER_ERROR_MISSING_FALLBACK",
		6: "CIPHER_ERROR_NO_CIPHER",
		7: "CIPHER_ERROR_NO_DATA",
	}
	CipherError_value = map[string]int32{
		"CIPHER_ERROR_INVALID":            0,
		"CIPHER_ERROR_NOT_READY":          1,
		"CIPHER_ERROR_DECRYPT_FAILED":     2,
		"CIPHER_ERROR_UNMARSHAL_FAILED":   3,
		"CIPHER_ERROR_CLEARTEXT_FALLBACK": 4,
		"CIPHER_ERROR_MISSING_FALLBACK":   5,
		"CIPHER_ERROR_NO_CIPHER":          6,
		"CIPHER_ERROR_NO_DATA":            7,
	}
)

func (x CipherError) Enum() *CipherError {
	p := new(CipherError)
	*p = x
	return p
}

func (x CipherError) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (CipherError) Descriptor() protoreflect.EnumDescriptor {
	return file_metrics_metrics_proto_enumTypes[1].Descriptor()
}

func (CipherError) Type() protoreflect.EnumType {
	return &file_metrics_metrics_proto_enumTypes[1]
}

func (x CipherError) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use CipherError.Descriptor instead.
func (CipherError) EnumDescriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{1}
}

type StorageStatus int32

const (
	StorageStatus_STORAGE_STATUS_UNSPECIFIED StorageStatus = 0
	StorageStatus_STORAGE_STATUS_ONLINE      StorageStatus = 1 // The device or virtual device is in normal working order.
	StorageStatus_STORAGE_STATUS_DEGRADED    StorageStatus = 2 // The virtual device has experienced a failure but can still function.
	StorageStatus_STORAGE_STATUS_FAULTED     StorageStatus = 3 // The device or virtual device is completely inaccessible.
	StorageStatus_STORAGE_STATUS_OFFLINE     StorageStatus = 4 // The device has been explicitly taken offline by the administrator.
	StorageStatus_STORAGE_STATUS_UNAVAIL     StorageStatus = 5 // The device or virtual device cannot be opened. In some cases, pools with UNAVAIL devices appear in DEGRADED mode.
	StorageStatus_STORAGE_STATUS_REMOVED     StorageStatus = 6 // The device was physically removed while the system was running.
	StorageStatus_STORAGE_STATUS_SUSPENDED   StorageStatus = 7 // A pool that is waiting for device connectivity to be restored.
)

// Enum value maps for StorageStatus.
var (
	StorageStatus_name = map[int32]string{
		0: "STORAGE_STATUS_UNSPECIFIED",
		1: "STORAGE_STATUS_ONLINE",
		2: "STORAGE_STATUS_DEGRADED",
		3: "STORAGE_STATUS_FAULTED",
		4: "STORAGE_STATUS_OFFLINE",
		5: "STORAGE_STATUS_UNAVAIL",
		6: "STORAGE_STATUS_REMOVED",
		7: "STORAGE_STATUS_SUSPENDED",
	}
	StorageStatus_value = map[string]int32{
		"STORAGE_STATUS_UNSPECIFIED": 0,
		"STORAGE_STATUS_ONLINE":      1,
		"STORAGE_STATUS_DEGRADED":    2,
		"STORAGE_STATUS_FAULTED":     3,
		"STORAGE_STATUS_OFFLINE":     4,
		"STORAGE_STATUS_UNAVAIL":     5,
		"STORAGE_STATUS_REMOVED":     6,
		"STORAGE_STATUS_SUSPENDED":   7,
	}
)

func (x StorageStatus) Enum() *StorageStatus {
	p := new(StorageStatus)
	*p = x
	return p
}

func (x StorageStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (StorageStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_metrics_metrics_proto_enumTypes[2].Descriptor()
}

func (StorageStatus) Type() protoreflect.EnumType {
	return &file_metrics_metrics_proto_enumTypes[2]
}

func (x StorageStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use StorageStatus.Descriptor instead.
func (StorageStatus) EnumDescriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{2}
}

type MetricItemType int32

const (
	MetricItemType_MetricItemOther   MetricItemType = 0 // E.g., a string like an ESSID
	MetricItemType_MetricItemGauge   MetricItemType = 1 // Goes up and down over time
	MetricItemType_MetricItemCounter MetricItemType = 2 // Monotonically increasing (until reboot)
	MetricItemType_MetricItemState   MetricItemType = 3 // Toggles on and off; count transitions
)

// Enum value maps for MetricItemType.
var (
	MetricItemType_name = map[int32]string{
		0: "MetricItemOther",
		1: "MetricItemGauge",
		2: "MetricItemCounter",
		3: "MetricItemState",
	}
	MetricItemType_value = map[string]int32{
		"MetricItemOther":   0,
		"MetricItemGauge":   1,
		"MetricItemCounter": 2,
		"MetricItemState":   3,
	}
)

func (x MetricItemType) Enum() *MetricItemType {
	p := new(MetricItemType)
	*p = x
	return p
}

func (x MetricItemType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (MetricItemType) Descriptor() protoreflect.EnumDescriptor {
	return file_metrics_metrics_proto_enumTypes[3].Descriptor()
}

func (MetricItemType) Type() protoreflect.EnumType {
	return &file_metrics_metrics_proto_enumTypes[3]
}

func (x MetricItemType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use MetricItemType.Descriptor instead.
func (MetricItemType) EnumDescriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{3}
}

// memoryMetric - DEPRECATED. DO NOT USE THIS.
type MemoryMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	UsedMem         uint32  `protobuf:"varint,2,opt,name=usedMem,proto3" json:"usedMem,omitempty"`                  //in MBytes
	AvailMem        uint32  `protobuf:"varint,3,opt,name=availMem,proto3" json:"availMem,omitempty"`                //in MBytes
	UsedPercentage  float64 `protobuf:"fixed64,4,opt,name=usedPercentage,proto3" json:"usedPercentage,omitempty"`   // Obsolete - No Longer Used.
	AvailPercentage float64 `protobuf:"fixed64,5,opt,name=availPercentage,proto3" json:"availPercentage,omitempty"` // Obsolete - No Longer Used.
}

func (x *MemoryMetric) Reset() {
	*x = MemoryMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MemoryMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MemoryMetric) ProtoMessage() {}

func (x *MemoryMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MemoryMetric.ProtoReflect.Descriptor instead.
func (*MemoryMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{0}
}

func (x *MemoryMetric) GetUsedMem() uint32 {
	if x != nil {
		return x.UsedMem
	}
	return 0
}

func (x *MemoryMetric) GetAvailMem() uint32 {
	if x != nil {
		return x.AvailMem
	}
	return 0
}

func (x *MemoryMetric) GetUsedPercentage() float64 {
	if x != nil {
		return x.UsedPercentage
	}
	return 0
}

func (x *MemoryMetric) GetAvailPercentage() float64 {
	if x != nil {
		return x.AvailPercentage
	}
	return 0
}

// App Memory Metric
type AppMemoryMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// allocatedMB - Memory allocated to app instance by EVE independent
	//  of the state of the App Instance.
	AllocatedMB uint32 `protobuf:"varint,1,opt,name=allocatedMB,proto3" json:"allocatedMB,omitempty"`
	// usedMB - Memory Used by app from totalMB Memory
	//  usedMB <= totalMB in normal cases.
	//  Enforcement of the allocatedMB could be lax, hence usedMB can sometimes
	//   exceed allocatedMB.
	UsedMB uint32 `protobuf:"varint,2,opt,name=usedMB,proto3" json:"usedMB,omitempty"`
}

func (x *AppMemoryMetric) Reset() {
	*x = AppMemoryMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AppMemoryMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AppMemoryMetric) ProtoMessage() {}

func (x *AppMemoryMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AppMemoryMetric.ProtoReflect.Descriptor instead.
func (*AppMemoryMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{1}
}

func (x *AppMemoryMetric) GetAllocatedMB() uint32 {
	if x != nil {
		return x.AllocatedMB
	}
	return 0
}

func (x *AppMemoryMetric) GetUsedMB() uint32 {
	if x != nil {
		return x.UsedMB
	}
	return 0
}

type DeviceMemoryMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// memoryMB - Total Device memory
	// This is the same as reported in the memory field in the
	// device info message. Repeated here for convenience of controller to process
	// the metrics message.
	MemoryMB uint32 `protobuf:"varint,1,opt,name=memoryMB,proto3" json:"memoryMB,omitempty"`
	// allocated_appsMB - Total memory Allocated to AppInstances
	// In steady state, this is the sum of all the AppMemoryMetric.allocatedMB
	// from all the app instances
	AllocatedAppsMB uint32 `protobuf:"varint,2,opt,name=allocated_appsMB,json=allocatedAppsMB,proto3" json:"allocated_appsMB,omitempty"`
	// allocated_eveMB - Total Allocated Memory for Eve
	AllocatedEveMB uint32 `protobuf:"varint,3,opt,name=allocated_eveMB,json=allocatedEveMB,proto3" json:"allocated_eveMB,omitempty"`
	// used_eveMB - Memory currently used by Eve.
	//    used_eveMB <= allocated_eveMB in normal case
	// Eve may not be able to enforce ie., used_eveMB might be greater than
	// allocated_eveMB.
	UsedEveMB uint32 `protobuf:"varint,4,opt,name=used_eveMB,json=usedEveMB,proto3" json:"used_eveMB,omitempty"`
}

func (x *DeviceMemoryMetric) Reset() {
	*x = DeviceMemoryMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeviceMemoryMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeviceMemoryMetric) ProtoMessage() {}

func (x *DeviceMemoryMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeviceMemoryMetric.ProtoReflect.Descriptor instead.
func (*DeviceMemoryMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{2}
}

func (x *DeviceMemoryMetric) GetMemoryMB() uint32 {
	if x != nil {
		return x.MemoryMB
	}
	return 0
}

func (x *DeviceMemoryMetric) GetAllocatedAppsMB() uint32 {
	if x != nil {
		return x.AllocatedAppsMB
	}
	return 0
}

func (x *DeviceMemoryMetric) GetAllocatedEveMB() uint32 {
	if x != nil {
		return x.AllocatedEveMB
	}
	return 0
}

func (x *DeviceMemoryMetric) GetUsedEveMB() uint32 {
	if x != nil {
		return x.UsedEveMB
	}
	return 0
}

type NetworkMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// iName - Set to SystemAdapter.Name which is the Logicallabel in phyio
	IName string `protobuf:"bytes,1,opt,name=iName,proto3" json:"iName,omitempty"` // name from config; displayName for network instance
	// alias - Set to SystemAdapter.alias
	Alias   string `protobuf:"bytes,20,opt,name=alias,proto3" json:"alias,omitempty"`
	TxBytes uint64 `protobuf:"varint,2,opt,name=txBytes,proto3" json:"txBytes,omitempty"` // in bytes
	RxBytes uint64 `protobuf:"varint,3,opt,name=rxBytes,proto3" json:"rxBytes,omitempty"` // in bytes
	TxDrops uint64 `protobuf:"varint,4,opt,name=txDrops,proto3" json:"txDrops,omitempty"`
	RxDrops uint64 `protobuf:"varint,5,opt,name=rxDrops,proto3" json:"rxDrops,omitempty"`
	// deprecated = 6;
	// deprecated = 7;
	TxPkts              uint64 `protobuf:"varint,8,opt,name=txPkts,proto3" json:"txPkts,omitempty"`
	RxPkts              uint64 `protobuf:"varint,9,opt,name=rxPkts,proto3" json:"rxPkts,omitempty"`
	TxErrors            uint64 `protobuf:"varint,10,opt,name=txErrors,proto3" json:"txErrors,omitempty"`
	RxErrors            uint64 `protobuf:"varint,11,opt,name=rxErrors,proto3" json:"rxErrors,omitempty"`
	TxAclDrops          uint64 `protobuf:"varint,12,opt,name=txAclDrops,proto3" json:"txAclDrops,omitempty"`
	RxAclDrops          uint64 `protobuf:"varint,13,opt,name=rxAclDrops,proto3" json:"rxAclDrops,omitempty"`
	TxAclRateLimitDrops uint64 `protobuf:"varint,14,opt,name=txAclRateLimitDrops,proto3" json:"txAclRateLimitDrops,omitempty"`
	RxAclRateLimitDrops uint64 `protobuf:"varint,15,opt,name=rxAclRateLimitDrops,proto3" json:"rxAclRateLimitDrops,omitempty"`
	// localName - Set to IfName of the Adapter
	LocalName string `protobuf:"bytes,16,opt,name=localName,proto3" json:"localName,omitempty"` // local vif name e.g., nbu*
}

func (x *NetworkMetric) Reset() {
	*x = NetworkMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NetworkMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NetworkMetric) ProtoMessage() {}

func (x *NetworkMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NetworkMetric.ProtoReflect.Descriptor instead.
func (*NetworkMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{3}
}

func (x *NetworkMetric) GetIName() string {
	if x != nil {
		return x.IName
	}
	return ""
}

func (x *NetworkMetric) GetAlias() string {
	if x != nil {
		return x.Alias
	}
	return ""
}

func (x *NetworkMetric) GetTxBytes() uint64 {
	if x != nil {
		return x.TxBytes
	}
	return 0
}

func (x *NetworkMetric) GetRxBytes() uint64 {
	if x != nil {
		return x.RxBytes
	}
	return 0
}

func (x *NetworkMetric) GetTxDrops() uint64 {
	if x != nil {
		return x.TxDrops
	}
	return 0
}

func (x *NetworkMetric) GetRxDrops() uint64 {
	if x != nil {
		return x.RxDrops
	}
	return 0
}

func (x *NetworkMetric) GetTxPkts() uint64 {
	if x != nil {
		return x.TxPkts
	}
	return 0
}

func (x *NetworkMetric) GetRxPkts() uint64 {
	if x != nil {
		return x.RxPkts
	}
	return 0
}

func (x *NetworkMetric) GetTxErrors() uint64 {
	if x != nil {
		return x.TxErrors
	}
	return 0
}

func (x *NetworkMetric) GetRxErrors() uint64 {
	if x != nil {
		return x.RxErrors
	}
	return 0
}

func (x *NetworkMetric) GetTxAclDrops() uint64 {
	if x != nil {
		return x.TxAclDrops
	}
	return 0
}

func (x *NetworkMetric) GetRxAclDrops() uint64 {
	if x != nil {
		return x.RxAclDrops
	}
	return 0
}

func (x *NetworkMetric) GetTxAclRateLimitDrops() uint64 {
	if x != nil {
		return x.TxAclRateLimitDrops
	}
	return 0
}

func (x *NetworkMetric) GetRxAclRateLimitDrops() uint64 {
	if x != nil {
		return x.RxAclRateLimitDrops
	}
	return 0
}

func (x *NetworkMetric) GetLocalName() string {
	if x != nil {
		return x.LocalName
	}
	return ""
}

type CellularMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Logical label assigned to the physical cellular modem.
	Logicallabel   string                  `protobuf:"bytes,1,opt,name=logicallabel,proto3" json:"logicallabel,omitempty"`
	SignalStrength *CellularSignalStrength `protobuf:"bytes,2,opt,name=signal_strength,json=signalStrength,proto3" json:"signal_strength,omitempty"`
	PacketStats    *CellularPacketStats    `protobuf:"bytes,3,opt,name=packet_stats,json=packetStats,proto3" json:"packet_stats,omitempty"`
}

func (x *CellularMetric) Reset() {
	*x = CellularMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CellularMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CellularMetric) ProtoMessage() {}

func (x *CellularMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CellularMetric.ProtoReflect.Descriptor instead.
func (*CellularMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{4}
}

func (x *CellularMetric) GetLogicallabel() string {
	if x != nil {
		return x.Logicallabel
	}
	return ""
}

func (x *CellularMetric) GetSignalStrength() *CellularSignalStrength {
	if x != nil {
		return x.SignalStrength
	}
	return nil
}

func (x *CellularMetric) GetPacketStats() *CellularPacketStats {
	if x != nil {
		return x.PacketStats
	}
	return nil
}

// CellularSignalStrength contains cellular signal strength information.
// The maximum value of int32 (0x7FFFFFFF) represents unspecified/unavailable metric.
type CellularSignalStrength struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Rssi int32 `protobuf:"varint,1,opt,name=rssi,proto3" json:"rssi,omitempty"`
	Rsrq int32 `protobuf:"varint,2,opt,name=rsrq,proto3" json:"rsrq,omitempty"`
	Rsrp int32 `protobuf:"varint,3,opt,name=rsrp,proto3" json:"rsrp,omitempty"`
	Snr  int32 `protobuf:"varint,4,opt,name=snr,proto3" json:"snr,omitempty"`
}

func (x *CellularSignalStrength) Reset() {
	*x = CellularSignalStrength{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CellularSignalStrength) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CellularSignalStrength) ProtoMessage() {}

func (x *CellularSignalStrength) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CellularSignalStrength.ProtoReflect.Descriptor instead.
func (*CellularSignalStrength) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{5}
}

func (x *CellularSignalStrength) GetRssi() int32 {
	if x != nil {
		return x.Rssi
	}
	return 0
}

func (x *CellularSignalStrength) GetRsrq() int32 {
	if x != nil {
		return x.Rsrq
	}
	return 0
}

func (x *CellularSignalStrength) GetRsrp() int32 {
	if x != nil {
		return x.Rsrp
	}
	return 0
}

func (x *CellularSignalStrength) GetSnr() int32 {
	if x != nil {
		return x.Snr
	}
	return 0
}

// Stats collected by the cellular modem itself.
type CellularPacketStats struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Rx *NetworkStats `protobuf:"bytes,1,opt,name=rx,proto3" json:"rx,omitempty"`
	Tx *NetworkStats `protobuf:"bytes,2,opt,name=tx,proto3" json:"tx,omitempty"`
}

func (x *CellularPacketStats) Reset() {
	*x = CellularPacketStats{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CellularPacketStats) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CellularPacketStats) ProtoMessage() {}

func (x *CellularPacketStats) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CellularPacketStats.ProtoReflect.Descriptor instead.
func (*CellularPacketStats) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{6}
}

func (x *CellularPacketStats) GetRx() *NetworkStats {
	if x != nil {
		return x.Rx
	}
	return nil
}

func (x *CellularPacketStats) GetTx() *NetworkStats {
	if x != nil {
		return x.Tx
	}
	return nil
}

// Failures and successes for commuication to zedcloud
// for each management port
type ZedcloudMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	IfName            string               `protobuf:"bytes,1,opt,name=ifName,proto3" json:"ifName,omitempty"` // interface name for management port
	Failures          uint64               `protobuf:"varint,2,opt,name=failures,proto3" json:"failures,omitempty"`
	Success           uint64               `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"`
	LastFailure       *timestamp.Timestamp `protobuf:"bytes,4,opt,name=lastFailure,proto3" json:"lastFailure,omitempty"`
	LastSuccess       *timestamp.Timestamp `protobuf:"bytes,5,opt,name=lastSuccess,proto3" json:"lastSuccess,omitempty"`
	UrlMetrics        []*UrlcloudMetric    `protobuf:"bytes,6,rep,name=urlMetrics,proto3" json:"urlMetrics,omitempty"`
	AuthVerifyFailure uint64               `protobuf:"varint,7,opt,name=authVerifyFailure,proto3" json:"authVerifyFailure,omitempty"` // networking success, authen verify fail count for V2 API
}

func (x *ZedcloudMetric) Reset() {
	*x = ZedcloudMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZedcloudMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZedcloudMetric) ProtoMessage() {}

func (x *ZedcloudMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZedcloudMetric.ProtoReflect.Descriptor instead.
func (*ZedcloudMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{7}
}

func (x *ZedcloudMetric) GetIfName() string {
	if x != nil {
		return x.IfName
	}
	return ""
}

func (x *ZedcloudMetric) GetFailures() uint64 {
	if x != nil {
		return x.Failures
	}
	return 0
}

func (x *ZedcloudMetric) GetSuccess() uint64 {
	if x != nil {
		return x.Success
	}
	return 0
}

func (x *ZedcloudMetric) GetLastFailure() *timestamp.Timestamp {
	if x != nil {
		return x.LastFailure
	}
	return nil
}

func (x *ZedcloudMetric) GetLastSuccess() *timestamp.Timestamp {
	if x != nil {
		return x.LastSuccess
	}
	return nil
}

func (x *ZedcloudMetric) GetUrlMetrics() []*UrlcloudMetric {
	if x != nil {
		return x.UrlMetrics
	}
	return nil
}

func (x *ZedcloudMetric) GetAuthVerifyFailure() uint64 {
	if x != nil {
		return x.AuthVerifyFailure
	}
	return 0
}

// Information for each API URL
type UrlcloudMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Url             string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
	TryMsgCount     int64  `protobuf:"varint,2,opt,name=tryMsgCount,proto3" json:"tryMsgCount,omitempty"`   // Things we might have tried to send
	TryByteCount    int64  `protobuf:"varint,3,opt,name=tryByteCount,proto3" json:"tryByteCount,omitempty"` // or it failed before we could send them.
	SentMsgCount    int64  `protobuf:"varint,4,opt,name=sentMsgCount,proto3" json:"sentMsgCount,omitempty"`
	SentByteCount   int64  `protobuf:"varint,5,opt,name=sentByteCount,proto3" json:"sentByteCount,omitempty"`
	RecvMsgCount    int64  `protobuf:"varint,6,opt,name=recvMsgCount,proto3" json:"recvMsgCount,omitempty"`
	RecvByteCount   int64  `protobuf:"varint,7,opt,name=recvByteCount,proto3" json:"recvByteCount,omitempty"`
	TotalTimeSpent  int64  `protobuf:"varint,8,opt,name=total_time_spent,json=totalTimeSpent,proto3" json:"total_time_spent,omitempty"`    // Total time spent servicing requests that succeeded
	SessResumeCount int64  `protobuf:"varint,9,opt,name=sess_resume_count,json=sessResumeCount,proto3" json:"sess_resume_count,omitempty"` // Total counts of the TLS session resumption
}

func (x *UrlcloudMetric) Reset() {
	*x = UrlcloudMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *UrlcloudMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UrlcloudMetric) ProtoMessage() {}

func (x *UrlcloudMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UrlcloudMetric.ProtoReflect.Descriptor instead.
func (*UrlcloudMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{8}
}

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

func (x *UrlcloudMetric) GetTryMsgCount() int64 {
	if x != nil {
		return x.TryMsgCount
	}
	return 0
}

func (x *UrlcloudMetric) GetTryByteCount() int64 {
	if x != nil {
		return x.TryByteCount
	}
	return 0
}

func (x *UrlcloudMetric) GetSentMsgCount() int64 {
	if x != nil {
		return x.SentMsgCount
	}
	return 0
}

func (x *UrlcloudMetric) GetSentByteCount() int64 {
	if x != nil {
		return x.SentByteCount
	}
	return 0
}

func (x *UrlcloudMetric) GetRecvMsgCount() int64 {
	if x != nil {
		return x.RecvMsgCount
	}
	return 0
}

func (x *UrlcloudMetric) GetRecvByteCount() int64 {
	if x != nil {
		return x.RecvByteCount
	}
	return 0
}

func (x *UrlcloudMetric) GetTotalTimeSpent() int64 {
	if x != nil {
		return x.TotalTimeSpent
	}
	return 0
}

func (x *UrlcloudMetric) GetSessResumeCount() int64 {
	if x != nil {
		return x.SessResumeCount
	}
	return 0
}

// Failures and successes for the object decryption
type CipherMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AgentName    string               `protobuf:"bytes,1,opt,name=agent_name,json=agentName,proto3" json:"agent_name,omitempty"`
	FailureCount uint64               `protobuf:"varint,2,opt,name=failure_count,json=failureCount,proto3" json:"failure_count,omitempty"`
	SuccessCount uint64               `protobuf:"varint,3,opt,name=success_count,json=successCount,proto3" json:"success_count,omitempty"`
	LastFailure  *timestamp.Timestamp `protobuf:"bytes,4,opt,name=last_failure,json=lastFailure,proto3" json:"last_failure,omitempty"`
	LastSuccess  *timestamp.Timestamp `protobuf:"bytes,5,opt,name=last_success,json=lastSuccess,proto3" json:"last_success,omitempty"`
	Tc           []*TypeCounter       `protobuf:"bytes,6,rep,name=tc,proto3" json:"tc,omitempty"`
}

func (x *CipherMetric) Reset() {
	*x = CipherMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CipherMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CipherMetric) ProtoMessage() {}

func (x *CipherMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CipherMetric.ProtoReflect.Descriptor instead.
func (*CipherMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{9}
}

func (x *CipherMetric) GetAgentName() string {
	if x != nil {
		return x.AgentName
	}
	return ""
}

func (x *CipherMetric) GetFailureCount() uint64 {
	if x != nil {
		return x.FailureCount
	}
	return 0
}

func (x *CipherMetric) GetSuccessCount() uint64 {
	if x != nil {
		return x.SuccessCount
	}
	return 0
}

func (x *CipherMetric) GetLastFailure() *timestamp.Timestamp {
	if x != nil {
		return x.LastFailure
	}
	return nil
}

func (x *CipherMetric) GetLastSuccess() *timestamp.Timestamp {
	if x != nil {
		return x.LastSuccess
	}
	return nil
}

func (x *CipherMetric) GetTc() []*TypeCounter {
	if x != nil {
		return x.Tc
	}
	return nil
}

// Counters for each of the different CipherError codes
type TypeCounter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ErrorCode CipherError `protobuf:"varint,1,opt,name=error_code,json=errorCode,proto3,enum=org.lfedge.eve.metrics.CipherError" json:"error_code,omitempty"`
	Count     uint64      `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
}

func (x *TypeCounter) Reset() {
	*x = TypeCounter{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TypeCounter) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TypeCounter) ProtoMessage() {}

func (x *TypeCounter) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TypeCounter.ProtoReflect.Descriptor instead.
func (*TypeCounter) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{10}
}

func (x *TypeCounter) GetErrorCode() CipherError {
	if x != nil {
		return x.ErrorCode
	}
	return CipherError_CIPHER_ERROR_INVALID
}

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

type AppCpuMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// deprecated = 2;
	// deprecated = 3;
	UpTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=upTime,proto3" json:"upTime,omitempty"`
	// should be deprecated
	Total       uint64 `protobuf:"varint,5,opt,name=total,proto3" json:"total,omitempty"`                    // cpu total in secs. In docker stats, it's the container user usage
	SystemTotal uint64 `protobuf:"varint,6,opt,name=systemTotal,proto3" json:"systemTotal,omitempty"`        // docker host system cpu total in secs. inc user, system and idle
	TotalNs     uint64 `protobuf:"varint,7,opt,name=total_ns,json=totalNs,proto3" json:"total_ns,omitempty"` // like 'total' but in nanoseconds. Overflow may happen after ~40 years without EVE restart
}

func (x *AppCpuMetric) Reset() {
	*x = AppCpuMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AppCpuMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AppCpuMetric) ProtoMessage() {}

func (x *AppCpuMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AppCpuMetric.ProtoReflect.Descriptor instead.
func (*AppCpuMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{11}
}

func (x *AppCpuMetric) GetUpTime() *timestamp.Timestamp {
	if x != nil {
		return x.UpTime
	}
	return nil
}

func (x *AppCpuMetric) GetTotal() uint64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *AppCpuMetric) GetSystemTotal() uint64 {
	if x != nil {
		return x.SystemTotal
	}
	return 0
}

func (x *AppCpuMetric) GetTotalNs() uint64 {
	if x != nil {
		return x.TotalNs
	}
	return 0
}

type StorageDiskInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	DiskName string        `protobuf:"bytes,1,opt,name=disk_name,json=diskName,proto3" json:"disk_name,omitempty"`
	Status   StorageStatus `protobuf:"varint,2,opt,name=status,proto3,enum=org.lfedge.eve.metrics.StorageStatus" json:"status,omitempty"` // In ZFS
}

func (x *StorageDiskInfo) Reset() {
	*x = StorageDiskInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StorageDiskInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StorageDiskInfo) ProtoMessage() {}

func (x *StorageDiskInfo) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StorageDiskInfo.ProtoReflect.Descriptor instead.
func (*StorageDiskInfo) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{12}
}

func (x *StorageDiskInfo) GetDiskName() string {
	if x != nil {
		return x.DiskName
	}
	return ""
}

func (x *StorageDiskInfo) GetStatus() StorageStatus {
	if x != nil {
		return x.Status
	}
	return StorageStatus_STORAGE_STATUS_UNSPECIFIED
}

type StorageMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PoolName     string             `protobuf:"bytes,1,opt,name=pool_name,json=poolName,proto3" json:"pool_name,omitempty"`
	CountVolume  uint32             `protobuf:"varint,2,opt,name=count_volume,json=countVolume,proto3" json:"count_volume,omitempty"`                                              // zvol
	StorageState StorageStatus      `protobuf:"varint,3,opt,name=storage_state,json=storageState,proto3,enum=org.lfedge.eve.metrics.StorageStatus" json:"storage_state,omitempty"` // zfs volume status
	Disks        []*StorageDiskInfo `protobuf:"bytes,4,rep,name=disks,proto3" json:"disks,omitempty"`                                                                              // Disks lists in EVE (use in storage)
}

func (x *StorageMetric) Reset() {
	*x = StorageMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StorageMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StorageMetric) ProtoMessage() {}

func (x *StorageMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use StorageMetric.ProtoReflect.Descriptor instead.
func (*StorageMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{13}
}

func (x *StorageMetric) GetPoolName() string {
	if x != nil {
		return x.PoolName
	}
	return ""
}

func (x *StorageMetric) GetCountVolume() uint32 {
	if x != nil {
		return x.CountVolume
	}
	return 0
}

func (x *StorageMetric) GetStorageState() StorageStatus {
	if x != nil {
		return x.StorageState
	}
	return StorageStatus_STORAGE_STATUS_UNSPECIFIED
}

func (x *StorageMetric) GetDisks() []*StorageDiskInfo {
	if x != nil {
		return x.Disks
	}
	return nil
}

type DeviceMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// memory - OBSOLETE. use DeviceMemoryMetric
	Memory   *MemoryMetric     `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"`
	Network  []*NetworkMetric  `protobuf:"bytes,3,rep,name=network,proto3" json:"network,omitempty"`
	Zedcloud []*ZedcloudMetric `protobuf:"bytes,4,rep,name=zedcloud,proto3" json:"zedcloud,omitempty"`
	// deprecated = 5;
	Disk                     []*DiskMetric `protobuf:"bytes,6,rep,name=disk,proto3" json:"disk,omitempty"`
	CpuMetric                *AppCpuMetric `protobuf:"bytes,7,opt,name=cpuMetric,proto3" json:"cpuMetric,omitempty"`
	MetricItems              []*MetricItem `protobuf:"bytes,8,rep,name=metricItems,proto3" json:"metricItems,omitempty"`
	RuntimeStorageOverheadMB uint64        `protobuf:"varint,9,opt,name=runtimeStorageOverheadMB,proto3" json:"runtimeStorageOverheadMB,omitempty"` // In MB
	AppRunTimeStorageMB      uint64        `protobuf:"varint,10,opt,name=appRunTimeStorageMB,proto3" json:"appRunTimeStorageMB,omitempty"`          // In MB
	// systemServicesMemoryMB - OBSOLETE. Will no longer be used.
	SystemServicesMemoryMB *MemoryMetric   `protobuf:"bytes,11,opt,name=systemServicesMemoryMB,proto3" json:"systemServicesMemoryMB,omitempty"` // In MB
	Log                    *LogMetric      `protobuf:"bytes,12,opt,name=log,proto3" json:"log,omitempty"`
	Cipher                 []*CipherMetric `protobuf:"bytes,13,rep,name=cipher,proto3" json:"cipher,omitempty"` // Object decryption
	Acl                    *AclMetric      `protobuf:"bytes,14,opt,name=acl,proto3" json:"acl,omitempty"`
	Newlog                 *NewlogMetric   `protobuf:"bytes,15,opt,name=newlog,proto3" json:"newlog,omitempty"`
	Zedbox                 *ZedboxStats    `protobuf:"bytes,16,opt,name=zedbox,proto3" json:"zedbox,omitempty"`
	// deviceMemory - Memory metrics.
	DeviceMemory *DeviceMemoryMetric `protobuf:"bytes,17,opt,name=deviceMemory,proto3" json:"deviceMemory,omitempty"`
	// Last change to EdgeDevConfig received by device from controller
	LastReceivedConfig *timestamp.Timestamp `protobuf:"bytes,18,opt,name=last_received_config,json=lastReceivedConfig,proto3" json:"last_received_config,omitempty"`
	// Last change to EdgeDevConfig processed by device
	LastProcessedConfig *timestamp.Timestamp `protobuf:"bytes,19,opt,name=last_processed_config,json=lastProcessedConfig,proto3" json:"last_processed_config,omitempty"`
	Cellular            []*CellularMetric    `protobuf:"bytes,20,rep,name=cellular,proto3" json:"cellular,omitempty"`
	Flowlog             *FlowlogMetric       `protobuf:"bytes,21,opt,name=flowlog,proto3" json:"flowlog,omitempty"`
	// Time to wait between metrics messages before marking an edge-node as
	// inactive in the controller. 'dormantTimeInSeconds' is subjected to change based
	// of network connectivity.
	DormantTimeInSeconds uint64           `protobuf:"varint,22,opt,name=dormant_time_in_seconds,json=dormantTimeInSeconds,proto3" json:"dormant_time_in_seconds,omitempty"`
	StorageMetrics       []*StorageMetric `protobuf:"bytes,23,rep,name=storage_metrics,json=storageMetrics,proto3" json:"storage_metrics,omitempty"`
}

func (x *DeviceMetric) Reset() {
	*x = DeviceMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DeviceMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeviceMetric) ProtoMessage() {}

func (x *DeviceMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeviceMetric.ProtoReflect.Descriptor instead.
func (*DeviceMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{14}
}

func (x *DeviceMetric) GetMemory() *MemoryMetric {
	if x != nil {
		return x.Memory
	}
	return nil
}

func (x *DeviceMetric) GetNetwork() []*NetworkMetric {
	if x != nil {
		return x.Network
	}
	return nil
}

func (x *DeviceMetric) GetZedcloud() []*ZedcloudMetric {
	if x != nil {
		return x.Zedcloud
	}
	return nil
}

func (x *DeviceMetric) GetDisk() []*DiskMetric {
	if x != nil {
		return x.Disk
	}
	return nil
}

func (x *DeviceMetric) GetCpuMetric() *AppCpuMetric {
	if x != nil {
		return x.CpuMetric
	}
	return nil
}

func (x *DeviceMetric) GetMetricItems() []*MetricItem {
	if x != nil {
		return x.MetricItems
	}
	return nil
}

func (x *DeviceMetric) GetRuntimeStorageOverheadMB() uint64 {
	if x != nil {
		return x.RuntimeStorageOverheadMB
	}
	return 0
}

func (x *DeviceMetric) GetAppRunTimeStorageMB() uint64 {
	if x != nil {
		return x.AppRunTimeStorageMB
	}
	return 0
}

func (x *DeviceMetric) GetSystemServicesMemoryMB() *MemoryMetric {
	if x != nil {
		return x.SystemServicesMemoryMB
	}
	return nil
}

func (x *DeviceMetric) GetLog() *LogMetric {
	if x != nil {
		return x.Log
	}
	return nil
}

func (x *DeviceMetric) GetCipher() []*CipherMetric {
	if x != nil {
		return x.Cipher
	}
	return nil
}

func (x *DeviceMetric) GetAcl() *AclMetric {
	if x != nil {
		return x.Acl
	}
	return nil
}

func (x *DeviceMetric) GetNewlog() *NewlogMetric {
	if x != nil {
		return x.Newlog
	}
	return nil
}

func (x *DeviceMetric) GetZedbox() *ZedboxStats {
	if x != nil {
		return x.Zedbox
	}
	return nil
}

func (x *DeviceMetric) GetDeviceMemory() *DeviceMemoryMetric {
	if x != nil {
		return x.DeviceMemory
	}
	return nil
}

func (x *DeviceMetric) GetLastReceivedConfig() *timestamp.Timestamp {
	if x != nil {
		return x.LastReceivedConfig
	}
	return nil
}

func (x *DeviceMetric) GetLastProcessedConfig() *timestamp.Timestamp {
	if x != nil {
		return x.LastProcessedConfig
	}
	return nil
}

func (x *DeviceMetric) GetCellular() []*CellularMetric {
	if x != nil {
		return x.Cellular
	}
	return nil
}

func (x *DeviceMetric) GetFlowlog() *FlowlogMetric {
	if x != nil {
		return x.Flowlog
	}
	return nil
}

func (x *DeviceMetric) GetDormantTimeInSeconds() uint64 {
	if x != nil {
		return x.DormantTimeInSeconds
	}
	return 0
}

func (x *DeviceMetric) GetStorageMetrics() []*StorageMetric {
	if x != nil {
		return x.StorageMetrics
	}
	return nil
}

type AclMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TotalRuleCount uint64 `protobuf:"varint,1,opt,name=total_rule_count,json=totalRuleCount,proto3" json:"total_rule_count,omitempty"` // Total number of rules found in filter (FORWARD), raw (PREROUTING) tables
}

func (x *AclMetric) Reset() {
	*x = AclMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AclMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AclMetric) ProtoMessage() {}

func (x *AclMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[15]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AclMetric.ProtoReflect.Descriptor instead.
func (*AclMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{15}
}

func (x *AclMetric) GetTotalRuleCount() uint64 {
	if x != nil {
		return x.TotalRuleCount
	}
	return 0
}

type AppContainerMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AppContainerName string        `protobuf:"bytes,1,opt,name=appContainerName,proto3" json:"appContainerName,omitempty"` // the unique key for the container in a VM or IoT Edge
	Status           string        `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`                     // Status string e.g. Uptime 3 hours
	PIDs             uint32        `protobuf:"varint,3,opt,name=PIDs,proto3" json:"PIDs,omitempty"`                        // Number of PIDs inside the container
	Cpu              *AppCpuMetric `protobuf:"bytes,4,opt,name=cpu,proto3" json:"cpu,omitempty"`                           // container cpu usage
	// memory - OBSOLETE. Use appContainerMemory instead
	Memory             *MemoryMetric    `protobuf:"bytes,5,opt,name=memory,proto3" json:"memory,omitempty"`   // container memory usage, will fill 'usedMem', 'availMem' initially
	Network            *NetworkMetric   `protobuf:"bytes,6,opt,name=network,proto3" json:"network,omitempty"` // container network usage, will fill 'txBytes', 'rxBytes' initially
	Disk               *DiskMetric      `protobuf:"bytes,7,opt,name=disk,proto3" json:"disk,omitempty"`       // container Block IO, will fill 'readBytes', 'writeBytes' initially
	AppContainerMemory *AppMemoryMetric `protobuf:"bytes,8,opt,name=appContainerMemory,proto3" json:"appContainerMemory,omitempty"`
}

func (x *AppContainerMetric) Reset() {
	*x = AppContainerMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AppContainerMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AppContainerMetric) ProtoMessage() {}

func (x *AppContainerMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[16]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AppContainerMetric.ProtoReflect.Descriptor instead.
func (*AppContainerMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{16}
}

func (x *AppContainerMetric) GetAppContainerName() string {
	if x != nil {
		return x.AppContainerName
	}
	return ""
}

func (x *AppContainerMetric) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *AppContainerMetric) GetPIDs() uint32 {
	if x != nil {
		return x.PIDs
	}
	return 0
}

func (x *AppContainerMetric) GetCpu() *AppCpuMetric {
	if x != nil {
		return x.Cpu
	}
	return nil
}

func (x *AppContainerMetric) GetMemory() *MemoryMetric {
	if x != nil {
		return x.Memory
	}
	return nil
}

func (x *AppContainerMetric) GetNetwork() *NetworkMetric {
	if x != nil {
		return x.Network
	}
	return nil
}

func (x *AppContainerMetric) GetDisk() *DiskMetric {
	if x != nil {
		return x.Disk
	}
	return nil
}

func (x *AppContainerMetric) GetAppContainerMemory() *AppMemoryMetric {
	if x != nil {
		return x.AppContainerMemory
	}
	return nil
}

// Open-ended metrics from different part of the device such as LTE modem
// metrics.
type MetricItem struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Key  string         `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // E.g., "lte-signal-strength"
	Type MetricItemType `protobuf:"varint,2,opt,name=type,proto3,enum=org.lfedge.eve.metrics.MetricItemType" json:"type,omitempty"`
	// Types that are assignable to MetricItemValue:
	//	*MetricItem_BoolValue
	//	*MetricItem_Uint32Value
	//	*MetricItem_Uint64Value
	//	*MetricItem_FloatValue
	//	*MetricItem_StringValue
	MetricItemValue isMetricItem_MetricItemValue `protobuf_oneof:"metricItemValue"`
}

func (x *MetricItem) Reset() {
	*x = MetricItem{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MetricItem) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MetricItem) ProtoMessage() {}

func (x *MetricItem) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[17]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MetricItem.ProtoReflect.Descriptor instead.
func (*MetricItem) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{17}
}

func (x *MetricItem) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *MetricItem) GetType() MetricItemType {
	if x != nil {
		return x.Type
	}
	return MetricItemType_MetricItemOther
}

func (m *MetricItem) GetMetricItemValue() isMetricItem_MetricItemValue {
	if m != nil {
		return m.MetricItemValue
	}
	return nil
}

func (x *MetricItem) GetBoolValue() bool {
	if x, ok := x.GetMetricItemValue().(*MetricItem_BoolValue); ok {
		return x.BoolValue
	}
	return false
}

func (x *MetricItem) GetUint32Value() uint32 {
	if x, ok := x.GetMetricItemValue().(*MetricItem_Uint32Value); ok {
		return x.Uint32Value
	}
	return 0
}

func (x *MetricItem) GetUint64Value() uint64 {
	if x, ok := x.GetMetricItemValue().(*MetricItem_Uint64Value); ok {
		return x.Uint64Value
	}
	return 0
}

func (x *MetricItem) GetFloatValue() float32 {
	if x, ok := x.GetMetricItemValue().(*MetricItem_FloatValue); ok {
		return x.FloatValue
	}
	return 0
}

func (x *MetricItem) GetStringValue() string {
	if x, ok := x.GetMetricItemValue().(*MetricItem_StringValue); ok {
		return x.StringValue
	}
	return ""
}

type isMetricItem_MetricItemValue interface {
	isMetricItem_MetricItemValue()
}

type MetricItem_BoolValue struct {
	BoolValue bool `protobuf:"varint,3,opt,name=boolValue,proto3,oneof"`
}

type MetricItem_Uint32Value struct {
	Uint32Value uint32 `protobuf:"varint,4,opt,name=uint32Value,proto3,oneof"` // If timer this is in seconds
}

type MetricItem_Uint64Value struct {
	Uint64Value uint64 `protobuf:"varint,5,opt,name=uint64Value,proto3,oneof"`
}

type MetricItem_FloatValue struct {
	FloatValue float32 `protobuf:"fixed32,6,opt,name=floatValue,proto3,oneof"`
}

type MetricItem_StringValue struct {
	StringValue string `protobuf:"bytes,7,opt,name=stringValue,proto3,oneof"` // Use with care
}

func (*MetricItem_BoolValue) isMetricItem_MetricItemValue() {}

func (*MetricItem_Uint32Value) isMetricItem_MetricItemValue() {}

func (*MetricItem_Uint64Value) isMetricItem_MetricItemValue() {}

func (*MetricItem_FloatValue) isMetricItem_MetricItemValue() {}

func (*MetricItem_StringValue) isMetricItem_MetricItemValue() {}

// For each partition; counts since boot
type DiskMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Disk       string `protobuf:"bytes,1,opt,name=disk,proto3" json:"disk,omitempty"`              // E.g., "mmcblk0p2"
	MountPath  string `protobuf:"bytes,2,opt,name=mountPath,proto3" json:"mountPath,omitempty"`    // E.g., "/config"
	ReadBytes  uint64 `protobuf:"varint,3,opt,name=readBytes,proto3" json:"readBytes,omitempty"`   // In MB
	WriteBytes uint64 `protobuf:"varint,4,opt,name=writeBytes,proto3" json:"writeBytes,omitempty"` // In MB
	ReadCount  uint64 `protobuf:"varint,5,opt,name=readCount,proto3" json:"readCount,omitempty"`   // Number of ops
	WriteCount uint64 `protobuf:"varint,6,opt,name=writeCount,proto3" json:"writeCount,omitempty"` // Number of ops
	Total      uint64 `protobuf:"varint,7,opt,name=total,proto3" json:"total,omitempty"`           // in MBytes; if we know the mountpath
	Used       uint64 `protobuf:"varint,8,opt,name=used,proto3" json:"used,omitempty"`             // in MBytes; if we know the mountpath
	Free       uint64 `protobuf:"varint,9,opt,name=free,proto3" json:"free,omitempty"`             // in MBytes; if we know the mountpath
}

func (x *DiskMetric) Reset() {
	*x = DiskMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DiskMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DiskMetric) ProtoMessage() {}

func (x *DiskMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[18]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DiskMetric.ProtoReflect.Descriptor instead.
func (*DiskMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{18}
}

func (x *DiskMetric) GetDisk() string {
	if x != nil {
		return x.Disk
	}
	return ""
}

func (x *DiskMetric) GetMountPath() string {
	if x != nil {
		return x.MountPath
	}
	return ""
}

func (x *DiskMetric) GetReadBytes() uint64 {
	if x != nil {
		return x.ReadBytes
	}
	return 0
}

func (x *DiskMetric) GetWriteBytes() uint64 {
	if x != nil {
		return x.WriteBytes
	}
	return 0
}

func (x *DiskMetric) GetReadCount() uint64 {
	if x != nil {
		return x.ReadCount
	}
	return 0
}

func (x *DiskMetric) GetWriteCount() uint64 {
	if x != nil {
		return x.WriteCount
	}
	return 0
}

func (x *DiskMetric) GetTotal() uint64 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *DiskMetric) GetUsed() uint64 {
	if x != nil {
		return x.Used
	}
	return 0
}

func (x *DiskMetric) GetFree() uint64 {
	if x != nil {
		return x.Free
	}
	return 0
}

type AppDiskMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Disk        string `protobuf:"bytes,1,opt,name=disk,proto3" json:"disk,omitempty"`                // E.g., "mmcblk0p2"
	Provisioned uint64 `protobuf:"varint,2,opt,name=provisioned,proto3" json:"provisioned,omitempty"` // in MBytes
	Used        uint64 `protobuf:"varint,3,opt,name=used,proto3" json:"used,omitempty"`               // in MBytes
	DiskType    string `protobuf:"bytes,4,opt,name=diskType,proto3" json:"diskType,omitempty"`        // Type of disk, e.g., QCOW2, RAW etc.
	Dirty       bool   `protobuf:"varint,5,opt,name=dirty,proto3" json:"dirty,omitempty"`             // Dirty flag
}

func (x *AppDiskMetric) Reset() {
	*x = AppDiskMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AppDiskMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AppDiskMetric) ProtoMessage() {}

func (x *AppDiskMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[19]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AppDiskMetric.ProtoReflect.Descriptor instead.
func (*AppDiskMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{19}
}

func (x *AppDiskMetric) GetDisk() string {
	if x != nil {
		return x.Disk
	}
	return ""
}

func (x *AppDiskMetric) GetProvisioned() uint64 {
	if x != nil {
		return x.Provisioned
	}
	return 0
}

func (x *AppDiskMetric) GetUsed() uint64 {
	if x != nil {
		return x.Used
	}
	return 0
}

func (x *AppDiskMetric) GetDiskType() string {
	if x != nil {
		return x.DiskType
	}
	return ""
}

func (x *AppDiskMetric) GetDirty() bool {
	if x != nil {
		return x.Dirty
	}
	return false
}

type AppMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AppID      string        `protobuf:"bytes,1,opt,name=AppID,proto3" json:"AppID,omitempty"`
	AppVersion string        `protobuf:"bytes,10,opt,name=appVersion,proto3" json:"appVersion,omitempty"`
	AppName    string        `protobuf:"bytes,2,opt,name=AppName,proto3" json:"AppName,omitempty"`
	Cpu        *AppCpuMetric `protobuf:"bytes,3,opt,name=cpu,proto3" json:"cpu,omitempty"`
	// memory - OBSOLETE. Use appMemory instead
	Memory    *MemoryMetric         `protobuf:"bytes,4,opt,name=memory,proto3" json:"memory,omitempty"`
	Network   []*NetworkMetric      `protobuf:"bytes,5,rep,name=network,proto3" json:"network,omitempty"`
	Disk      []*AppDiskMetric      `protobuf:"bytes,6,rep,name=disk,proto3" json:"disk,omitempty"`
	Container []*AppContainerMetric `protobuf:"bytes,7,rep,name=container,proto3" json:"container,omitempty"`
	AppMemory *AppMemoryMetric      `protobuf:"bytes,8,opt,name=appMemory,proto3" json:"appMemory,omitempty"`
}

func (x *AppMetric) Reset() {
	*x = AppMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AppMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AppMetric) ProtoMessage() {}

func (x *AppMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[20]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AppMetric.ProtoReflect.Descriptor instead.
func (*AppMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{20}
}

func (x *AppMetric) GetAppID() string {
	if x != nil {
		return x.AppID
	}
	return ""
}

func (x *AppMetric) GetAppVersion() string {
	if x != nil {
		return x.AppVersion
	}
	return ""
}

func (x *AppMetric) GetAppName() string {
	if x != nil {
		return x.AppName
	}
	return ""
}

func (x *AppMetric) GetCpu() *AppCpuMetric {
	if x != nil {
		return x.Cpu
	}
	return nil
}

func (x *AppMetric) GetMemory() *MemoryMetric {
	if x != nil {
		return x.Memory
	}
	return nil
}

func (x *AppMetric) GetNetwork() []*NetworkMetric {
	if x != nil {
		return x.Network
	}
	return nil
}

func (x *AppMetric) GetDisk() []*AppDiskMetric {
	if x != nil {
		return x.Disk
	}
	return nil
}

func (x *AppMetric) GetContainer() []*AppContainerMetric {
	if x != nil {
		return x.Container
	}
	return nil
}

func (x *AppMetric) GetAppMemory() *AppMemoryMetric {
	if x != nil {
		return x.AppMemory
	}
	return nil
}

// We track device and app logs separately with these counters.
// An event is counted as a log input that can be sent onwards (to cloud) or
// dropped for a few reason.
// Thus:
// totalAppLogInput = numAppEventsSent + numAppEventErrors + num4xxResponses
// totalDeviceLogInput = numDeviceEventsSent + numDeviceEventErrors
type LogMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Sent events count also includes events that the device tried to send but got deferred.
	// Because deferred logs will eventually reach cloud after network is restored.
	NumDeviceEventsSent  uint64 `protobuf:"varint,1,opt,name=numDeviceEventsSent,proto3" json:"numDeviceEventsSent,omitempty"`
	NumDeviceBundlesSent uint64 `protobuf:"varint,2,opt,name=numDeviceBundlesSent,proto3" json:"numDeviceBundlesSent,omitempty"`
	NumAppEventsSent     uint64 `protobuf:"varint,3,opt,name=numAppEventsSent,proto3" json:"numAppEventsSent,omitempty"`
	NumAppBundlesSent    uint64 `protobuf:"varint,4,opt,name=numAppBundlesSent,proto3" json:"numAppBundlesSent,omitempty"`
	// num4xxResponses: This counter is akin to event errors/drops.
	//
	// 4xx response for a device event bundle does not make sense, unless
	// there is a programming error in EVE code that sends device event bundles to cloud.
	// But, app instances can disappear from cloud and any futher logs sent by EVE to cloud
	// will result in a 4xx response back.
	// Any time an app log bundle gets rejected with 4xx response from cloud, num4xxResponses
	// should be incremented by the number of events present in that rejected bundle.
	Num4XxResponses          uint64               `protobuf:"varint,5,opt,name=num4xxResponses,proto3" json:"num4xxResponses,omitempty"`
	LastDeviceBundleSendTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=lastDeviceBundleSendTime,proto3" json:"lastDeviceBundleSendTime,omitempty"`
	LastAppBundleSendTime    *timestamp.Timestamp `protobuf:"bytes,7,opt,name=lastAppBundleSendTime,proto3" json:"lastAppBundleSendTime,omitempty"`
	IsLogProcessingDeferred  bool                 `protobuf:"varint,8,opt,name=isLogProcessingDeferred,proto3" json:"isLogProcessingDeferred,omitempty"`
	NumTimesDeferred         uint64               `protobuf:"varint,9,opt,name=numTimesDeferred,proto3" json:"numTimesDeferred,omitempty"`
	LastLogDeferTime         *timestamp.Timestamp `protobuf:"bytes,10,opt,name=lastLogDeferTime,proto3" json:"lastLogDeferTime,omitempty"`
	TotalDeviceLogInput      uint64               `protobuf:"varint,13,opt,name=totalDeviceLogInput,proto3" json:"totalDeviceLogInput,omitempty"`
	TotalAppLogInput         uint64               `protobuf:"varint,14,opt,name=totalAppLogInput,proto3" json:"totalAppLogInput,omitempty"`
	// eg:- Size of individual event is larger than the max proto buf size limit.
	NumDeviceEventErrors          uint64 `protobuf:"varint,15,opt,name=numDeviceEventErrors,proto3" json:"numDeviceEventErrors,omitempty"`
	NumAppEventErrors             uint64 `protobuf:"varint,16,opt,name=numAppEventErrors,proto3" json:"numAppEventErrors,omitempty"`
	NumDeviceBundleProtoBytesSent uint64 `protobuf:"varint,17,opt,name=numDeviceBundleProtoBytesSent,proto3" json:"numDeviceBundleProtoBytesSent,omitempty"`
	NumAppBundleProtoBytesSent    uint64 `protobuf:"varint,18,opt,name=numAppBundleProtoBytesSent,proto3" json:"numAppBundleProtoBytesSent,omitempty"`
	// Split of totalDeviceLogInput per source string
	InputSources map[string]uint64 `protobuf:"bytes,19,rep,name=input_sources,json=inputSources,proto3" json:"input_sources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
}

func (x *LogMetric) Reset() {
	*x = LogMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LogMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LogMetric) ProtoMessage() {}

func (x *LogMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[21]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LogMetric.ProtoReflect.Descriptor instead.
func (*LogMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{21}
}

func (x *LogMetric) GetNumDeviceEventsSent() uint64 {
	if x != nil {
		return x.NumDeviceEventsSent
	}
	return 0
}

func (x *LogMetric) GetNumDeviceBundlesSent() uint64 {
	if x != nil {
		return x.NumDeviceBundlesSent
	}
	return 0
}

func (x *LogMetric) GetNumAppEventsSent() uint64 {
	if x != nil {
		return x.NumAppEventsSent
	}
	return 0
}

func (x *LogMetric) GetNumAppBundlesSent() uint64 {
	if x != nil {
		return x.NumAppBundlesSent
	}
	return 0
}

func (x *LogMetric) GetNum4XxResponses() uint64 {
	if x != nil {
		return x.Num4XxResponses
	}
	return 0
}

func (x *LogMetric) GetLastDeviceBundleSendTime() *timestamp.Timestamp {
	if x != nil {
		return x.LastDeviceBundleSendTime
	}
	return nil
}

func (x *LogMetric) GetLastAppBundleSendTime() *timestamp.Timestamp {
	if x != nil {
		return x.LastAppBundleSendTime
	}
	return nil
}

func (x *LogMetric) GetIsLogProcessingDeferred() bool {
	if x != nil {
		return x.IsLogProcessingDeferred
	}
	return false
}

func (x *LogMetric) GetNumTimesDeferred() uint64 {
	if x != nil {
		return x.NumTimesDeferred
	}
	return 0
}

func (x *LogMetric) GetLastLogDeferTime() *timestamp.Timestamp {
	if x != nil {
		return x.LastLogDeferTime
	}
	return nil
}

func (x *LogMetric) GetTotalDeviceLogInput() uint64 {
	if x != nil {
		return x.TotalDeviceLogInput
	}
	return 0
}

func (x *LogMetric) GetTotalAppLogInput() uint64 {
	if x != nil {
		return x.TotalAppLogInput
	}
	return 0
}

func (x *LogMetric) GetNumDeviceEventErrors() uint64 {
	if x != nil {
		return x.NumDeviceEventErrors
	}
	return 0
}

func (x *LogMetric) GetNumAppEventErrors() uint64 {
	if x != nil {
		return x.NumAppEventErrors
	}
	return 0
}

func (x *LogMetric) GetNumDeviceBundleProtoBytesSent() uint64 {
	if x != nil {
		return x.NumDeviceBundleProtoBytesSent
	}
	return 0
}

func (x *LogMetric) GetNumAppBundleProtoBytesSent() uint64 {
	if x != nil {
		return x.NumAppBundleProtoBytesSent
	}
	return 0
}

func (x *LogMetric) GetInputSources() map[string]uint64 {
	if x != nil {
		return x.InputSources
	}
	return nil
}

// Lisp stats
type PktStat struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Packets uint64 `protobuf:"varint,1,opt,name=Packets,proto3" json:"Packets,omitempty"`
	Bytes   uint64 `protobuf:"varint,2,opt,name=Bytes,proto3" json:"Bytes,omitempty"`
}

func (x *PktStat) Reset() {
	*x = PktStat{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PktStat) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PktStat) ProtoMessage() {}

func (x *PktStat) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[22]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PktStat.ProtoReflect.Descriptor instead.
func (*PktStat) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{22}
}

func (x *PktStat) GetPackets() uint64 {
	if x != nil {
		return x.Packets
	}
	return 0
}

func (x *PktStat) GetBytes() uint64 {
	if x != nil {
		return x.Bytes
	}
	return 0
}

// Vpn Stats
type ZMetricConn struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	InPkts        *PktStat `protobuf:"bytes,1,opt,name=InPkts,proto3" json:"InPkts,omitempty"`
	OutPkts       *PktStat `protobuf:"bytes,2,opt,name=OutPkts,proto3" json:"OutPkts,omitempty"`
	ErrPkts       *PktStat `protobuf:"bytes,3,opt,name=ErrPkts,proto3" json:"ErrPkts,omitempty"`
	CarierErrPkts *PktStat `protobuf:"bytes,4,opt,name=CarierErrPkts,proto3" json:"CarierErrPkts,omitempty"`
}

func (x *ZMetricConn) Reset() {
	*x = ZMetricConn{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricConn) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricConn) ProtoMessage() {}

func (x *ZMetricConn) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[23]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZMetricConn.ProtoReflect.Descriptor instead.
func (*ZMetricConn) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{23}
}

func (x *ZMetricConn) GetInPkts() *PktStat {
	if x != nil {
		return x.InPkts
	}
	return nil
}

func (x *ZMetricConn) GetOutPkts() *PktStat {
	if x != nil {
		return x.OutPkts
	}
	return nil
}

func (x *ZMetricConn) GetErrPkts() *PktStat {
	if x != nil {
		return x.ErrPkts
	}
	return nil
}

func (x *ZMetricConn) GetCarierErrPkts() *PktStat {
	if x != nil {
		return x.CarierErrPkts
	}
	return nil
}

type ZMetricVpn struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ConnStat *ZMetricConn `protobuf:"bytes,1,opt,name=ConnStat,proto3" json:"ConnStat,omitempty"`
	IkeStat  *ZMetricConn `protobuf:"bytes,2,opt,name=IkeStat,proto3" json:"IkeStat,omitempty"`
	NatTStat *ZMetricConn `protobuf:"bytes,3,opt,name=NatTStat,proto3" json:"NatTStat,omitempty"`
	EspStat  *ZMetricConn `protobuf:"bytes,4,opt,name=EspStat,proto3" json:"EspStat,omitempty"`
}

func (x *ZMetricVpn) Reset() {
	*x = ZMetricVpn{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricVpn) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricVpn) ProtoMessage() {}

func (x *ZMetricVpn) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[24]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZMetricVpn.ProtoReflect.Descriptor instead.
func (*ZMetricVpn) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{24}
}

func (x *ZMetricVpn) GetConnStat() *ZMetricConn {
	if x != nil {
		return x.ConnStat
	}
	return nil
}

func (x *ZMetricVpn) GetIkeStat() *ZMetricConn {
	if x != nil {
		return x.IkeStat
	}
	return nil
}

func (x *ZMetricVpn) GetNatTStat() *ZMetricConn {
	if x != nil {
		return x.NatTStat
	}
	return nil
}

func (x *ZMetricVpn) GetEspStat() *ZMetricConn {
	if x != nil {
		return x.EspStat
	}
	return nil
}

// For other services with no specific metrics
type ZMetricNone struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *ZMetricNone) Reset() {
	*x = ZMetricNone{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricNone) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricNone) ProtoMessage() {}

func (x *ZMetricNone) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[25]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZMetricNone.ProtoReflect.Descriptor instead.
func (*ZMetricNone) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{25}
}

// flow stats
type ZMetricFlowLink struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Link:
	//	*ZMetricFlowLink_SubNet
	Link  isZMetricFlowLink_Link `protobuf_oneof:"Link"`
	SpiId string                 `protobuf:"bytes,3,opt,name=spiId,proto3" json:"spiId,omitempty"` // IpSec: SpiId
}

func (x *ZMetricFlowLink) Reset() {
	*x = ZMetricFlowLink{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricFlowLink) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricFlowLink) ProtoMessage() {}

func (x *ZMetricFlowLink) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[26]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZMetricFlowLink.ProtoReflect.Descriptor instead.
func (*ZMetricFlowLink) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{26}
}

func (m *ZMetricFlowLink) GetLink() isZMetricFlowLink_Link {
	if m != nil {
		return m.Link
	}
	return nil
}

func (x *ZMetricFlowLink) GetSubNet() string {
	if x, ok := x.GetLink().(*ZMetricFlowLink_SubNet); ok {
		return x.SubNet
	}
	return ""
}

func (x *ZMetricFlowLink) GetSpiId() string {
	if x != nil {
		return x.SpiId
	}
	return ""
}

type isZMetricFlowLink_Link interface {
	isZMetricFlowLink_Link()
}

type ZMetricFlowLink_SubNet struct {
	SubNet string `protobuf:"bytes,1,opt,name=subNet,proto3,oneof"` // IpSec: Subnet
}

func (*ZMetricFlowLink_SubNet) isZMetricFlowLink_Link() {}

type ZMetricFlowEndPoint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Endpoint:
	//	*ZMetricFlowEndPoint_IpAddr
	Endpoint isZMetricFlowEndPoint_Endpoint `protobuf_oneof:"Endpoint"`
	Link     []*ZMetricFlowLink             `protobuf:"bytes,5,rep,name=link,proto3" json:"link,omitempty"`
	Stats    *PktStat                       `protobuf:"bytes,10,opt,name=stats,proto3" json:"stats,omitempty"` // traffic
}

func (x *ZMetricFlowEndPoint) Reset() {
	*x = ZMetricFlowEndPoint{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricFlowEndPoint) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricFlowEndPoint) ProtoMessage() {}

func (x *ZMetricFlowEndPoint) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[27]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZMetricFlowEndPoint.ProtoReflect.Descriptor instead.
func (*ZMetricFlowEndPoint) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{27}
}

func (m *ZMetricFlowEndPoint) GetEndpoint() isZMetricFlowEndPoint_Endpoint {
	if m != nil {
		return m.Endpoint
	}
	return nil
}

func (x *ZMetricFlowEndPoint) GetIpAddr() string {
	if x, ok := x.GetEndpoint().(*ZMetricFlowEndPoint_IpAddr); ok {
		return x.IpAddr
	}
	return ""
}

func (x *ZMetricFlowEndPoint) GetLink() []*ZMetricFlowLink {
	if x != nil {
		return x.Link
	}
	return nil
}

func (x *ZMetricFlowEndPoint) GetStats() *PktStat {
	if x != nil {
		return x.Stats
	}
	return nil
}

type isZMetricFlowEndPoint_Endpoint interface {
	isZMetricFlowEndPoint_Endpoint()
}

type ZMetricFlowEndPoint_IpAddr struct {
	IpAddr string `protobuf:"bytes,1,opt,name=ipAddr,proto3,oneof"` // IpSec: Endpoint Ip Address
}

func (*ZMetricFlowEndPoint_IpAddr) isZMetricFlowEndPoint_Endpoint() {}

type ZMetricFlow struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id   string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`      // IpSec Conn-Id
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`  // IpSec Tun-Name
	Type uint32 `protobuf:"varint,3,opt,name=type,proto3" json:"type,omitempty"` // IpSec-Vpn
	// deprecated  = 4; uint64 iid  = 4
	EstTime   uint64                 `protobuf:"varint,5,opt,name=estTime,proto3" json:"estTime,omitempty"` // in seconds
	LEndPoint *ZMetricFlowEndPoint   `protobuf:"bytes,10,opt,name=lEndPoint,proto3" json:"lEndPoint,omitempty"`
	REndPoint []*ZMetricFlowEndPoint `protobuf:"bytes,11,rep,name=rEndPoint,proto3" json:"rEndPoint,omitempty"`
}

func (x *ZMetricFlow) Reset() {
	*x = ZMetricFlow{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricFlow) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricFlow) ProtoMessage() {}

func (x *ZMetricFlow) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[28]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZMetricFlow.ProtoReflect.Descriptor instead.
func (*ZMetricFlow) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{28}
}

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

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

func (x *ZMetricFlow) GetType() uint32 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *ZMetricFlow) GetEstTime() uint64 {
	if x != nil {
		return x.EstTime
	}
	return 0
}

func (x *ZMetricFlow) GetLEndPoint() *ZMetricFlowEndPoint {
	if x != nil {
		return x.LEndPoint
	}
	return nil
}

func (x *ZMetricFlow) GetREndPoint() []*ZMetricFlowEndPoint {
	if x != nil {
		return x.REndPoint
	}
	return nil
}

type NetworkStats struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TotalPackets uint64 `protobuf:"varint,1,opt,name=totalPackets,proto3" json:"totalPackets,omitempty"`
	Errors       uint64 `protobuf:"varint,2,opt,name=errors,proto3" json:"errors,omitempty"`
	Drops        uint64 `protobuf:"varint,3,opt,name=drops,proto3" json:"drops,omitempty"`
	TotalBytes   uint64 `protobuf:"varint,4,opt,name=totalBytes,proto3" json:"totalBytes,omitempty"`
}

func (x *NetworkStats) Reset() {
	*x = NetworkStats{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NetworkStats) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NetworkStats) ProtoMessage() {}

func (x *NetworkStats) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[29]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NetworkStats.ProtoReflect.Descriptor instead.
func (*NetworkStats) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{29}
}

func (x *NetworkStats) GetTotalPackets() uint64 {
	if x != nil {
		return x.TotalPackets
	}
	return 0
}

func (x *NetworkStats) GetErrors() uint64 {
	if x != nil {
		return x.Errors
	}
	return 0
}

func (x *NetworkStats) GetDrops() uint64 {
	if x != nil {
		return x.Drops
	}
	return 0
}

func (x *NetworkStats) GetTotalBytes() uint64 {
	if x != nil {
		return x.TotalBytes
	}
	return 0
}

type ZMetricNetworkStats struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Rx *NetworkStats `protobuf:"bytes,1,opt,name=rx,proto3" json:"rx,omitempty"`
	Tx *NetworkStats `protobuf:"bytes,2,opt,name=tx,proto3" json:"tx,omitempty"`
}

func (x *ZMetricNetworkStats) Reset() {
	*x = ZMetricNetworkStats{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricNetworkStats) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricNetworkStats) ProtoMessage() {}

func (x *ZMetricNetworkStats) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[30]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZMetricNetworkStats.ProtoReflect.Descriptor instead.
func (*ZMetricNetworkStats) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{30}
}

func (x *ZMetricNetworkStats) GetRx() *NetworkStats {
	if x != nil {
		return x.Rx
	}
	return nil
}

func (x *ZMetricNetworkStats) GetTx() *NetworkStats {
	if x != nil {
		return x.Tx
	}
	return nil
}

type ZProbeNIMetrics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CurrentIntf    string                              `protobuf:"bytes,1,opt,name=currentIntf,proto3" json:"currentIntf,omitempty"`        // current picked uplink interface
	RemoteEndpoint string                              `protobuf:"bytes,2,opt,name=remoteEndpoint,proto3" json:"remoteEndpoint,omitempty"`  // remote URL or IP address for probing
	PingIntv       uint32                              `protobuf:"varint,3,opt,name=pingIntv,proto3" json:"pingIntv,omitempty"`             // local ping interval in seconds
	RemotePingIntv uint32                              `protobuf:"varint,4,opt,name=remotePingIntv,proto3" json:"remotePingIntv,omitempty"` // remote probe interval in seconds
	UplinkCnt      uint32                              `protobuf:"varint,5,opt,name=uplinkCnt,proto3" json:"uplinkCnt,omitempty"`           // total number of uplink intf in consideration
	IntfMetric     []*ZProbeNIMetrics_ZProbeIntfMetric `protobuf:"bytes,10,rep,name=intfMetric,proto3" json:"intfMetric,omitempty"`         // per uplink intf probing stats
}

func (x *ZProbeNIMetrics) Reset() {
	*x = ZProbeNIMetrics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZProbeNIMetrics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZProbeNIMetrics) ProtoMessage() {}

func (x *ZProbeNIMetrics) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[31]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZProbeNIMetrics.ProtoReflect.Descriptor instead.
func (*ZProbeNIMetrics) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{31}
}

func (x *ZProbeNIMetrics) GetCurrentIntf() string {
	if x != nil {
		return x.CurrentIntf
	}
	return ""
}

func (x *ZProbeNIMetrics) GetRemoteEndpoint() string {
	if x != nil {
		return x.RemoteEndpoint
	}
	return ""
}

func (x *ZProbeNIMetrics) GetPingIntv() uint32 {
	if x != nil {
		return x.PingIntv
	}
	return 0
}

func (x *ZProbeNIMetrics) GetRemotePingIntv() uint32 {
	if x != nil {
		return x.RemotePingIntv
	}
	return 0
}

func (x *ZProbeNIMetrics) GetUplinkCnt() uint32 {
	if x != nil {
		return x.UplinkCnt
	}
	return 0
}

func (x *ZProbeNIMetrics) GetIntfMetric() []*ZProbeNIMetrics_ZProbeIntfMetric {
	if x != nil {
		return x.IntfMetric
	}
	return nil
}

type ZMetricNetworkInstance struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NetworkID      string           `protobuf:"bytes,2,opt,name=networkID,proto3" json:"networkID,omitempty"` // UUID
	NetworkVersion string           `protobuf:"bytes,3,opt,name=networkVersion,proto3" json:"networkVersion,omitempty"`
	InstType       uint32           `protobuf:"varint,5,opt,name=instType,proto3" json:"instType,omitempty"`       // ZNetworkInstType
	Displayname    string           `protobuf:"bytes,6,opt,name=displayname,proto3" json:"displayname,omitempty"`  // From NetworkInstance config
	Activated      bool             `protobuf:"varint,7,opt,name=activated,proto3" json:"activated,omitempty"`     // Forwarding enabled
	Network        []*NetworkMetric `protobuf:"bytes,10,rep,name=network,proto3" json:"network,omitempty"`         // Aggregate counters for bridge
	ProbeMetric    *ZProbeNIMetrics `protobuf:"bytes,12,opt,name=probeMetric,proto3" json:"probeMetric,omitempty"` // NI uplink probing stats
	// Types that are assignable to InstanceContent:
	//	*ZMetricNetworkInstance_Vpnm
	//	*ZMetricNetworkInstance_Nonem
	InstanceContent isZMetricNetworkInstance_InstanceContent `protobuf_oneof:"InstanceContent"`
	FlowStats       []*ZMetricFlow                           `protobuf:"bytes,30,rep,name=flowStats,proto3" json:"flowStats,omitempty"`               // deprecated = 31; ZMetricLispGlobal lispGlobalStats = 31
	NetworkStats    *ZMetricNetworkStats                     `protobuf:"bytes,40,opt,name=networkStats,proto3" json:"networkStats,omitempty"`         // Network bridge interface statistics
	VlanInfo        *VlanInfo                                `protobuf:"bytes,41,opt,name=vlan_info,json=vlanInfo,proto3" json:"vlan_info,omitempty"` // Information about vlans attached to this network instance
}

func (x *ZMetricNetworkInstance) Reset() {
	*x = ZMetricNetworkInstance{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricNetworkInstance) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricNetworkInstance) ProtoMessage() {}

func (x *ZMetricNetworkInstance) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[32]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZMetricNetworkInstance.ProtoReflect.Descriptor instead.
func (*ZMetricNetworkInstance) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{32}
}

func (x *ZMetricNetworkInstance) GetNetworkID() string {
	if x != nil {
		return x.NetworkID
	}
	return ""
}

func (x *ZMetricNetworkInstance) GetNetworkVersion() string {
	if x != nil {
		return x.NetworkVersion
	}
	return ""
}

func (x *ZMetricNetworkInstance) GetInstType() uint32 {
	if x != nil {
		return x.InstType
	}
	return 0
}

func (x *ZMetricNetworkInstance) GetDisplayname() string {
	if x != nil {
		return x.Displayname
	}
	return ""
}

func (x *ZMetricNetworkInstance) GetActivated() bool {
	if x != nil {
		return x.Activated
	}
	return false
}

func (x *ZMetricNetworkInstance) GetNetwork() []*NetworkMetric {
	if x != nil {
		return x.Network
	}
	return nil
}

func (x *ZMetricNetworkInstance) GetProbeMetric() *ZProbeNIMetrics {
	if x != nil {
		return x.ProbeMetric
	}
	return nil
}

func (m *ZMetricNetworkInstance) GetInstanceContent() isZMetricNetworkInstance_InstanceContent {
	if m != nil {
		return m.InstanceContent
	}
	return nil
}

func (x *ZMetricNetworkInstance) GetVpnm() *ZMetricVpn {
	if x, ok := x.GetInstanceContent().(*ZMetricNetworkInstance_Vpnm); ok {
		return x.Vpnm
	}
	return nil
}

func (x *ZMetricNetworkInstance) GetNonem() *ZMetricNone {
	if x, ok := x.GetInstanceContent().(*ZMetricNetworkInstance_Nonem); ok {
		return x.Nonem
	}
	return nil
}

func (x *ZMetricNetworkInstance) GetFlowStats() []*ZMetricFlow {
	if x != nil {
		return x.FlowStats
	}
	return nil
}

func (x *ZMetricNetworkInstance) GetNetworkStats() *ZMetricNetworkStats {
	if x != nil {
		return x.NetworkStats
	}
	return nil
}

func (x *ZMetricNetworkInstance) GetVlanInfo() *VlanInfo {
	if x != nil {
		return x.VlanInfo
	}
	return nil
}

type isZMetricNetworkInstance_InstanceContent interface {
	isZMetricNetworkInstance_InstanceContent()
}

type ZMetricNetworkInstance_Vpnm struct {
	Vpnm *ZMetricVpn `protobuf:"bytes,20,opt,name=vpnm,proto3,oneof"`
}

type ZMetricNetworkInstance_Nonem struct {
	// deprecated = 21; ZMetricLisp lispm = 21
	Nonem *ZMetricNone `protobuf:"bytes,22,opt,name=nonem,proto3,oneof"`
}

func (*ZMetricNetworkInstance_Vpnm) isZMetricNetworkInstance_InstanceContent() {}

func (*ZMetricNetworkInstance_Nonem) isZMetricNetworkInstance_InstanceContent() {}

type ZMetricVolume struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Uuid        string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"`
	DisplayName string `protobuf:"bytes,2,opt,name=displayName,proto3" json:"displayName,omitempty"`
	ReadBytes   uint64 `protobuf:"varint,3,opt,name=readBytes,proto3" json:"readBytes,omitempty"`
	WriteBytes  uint64 `protobuf:"varint,4,opt,name=writeBytes,proto3" json:"writeBytes,omitempty"`
	ReadCount   uint64 `protobuf:"varint,5,opt,name=readCount,proto3" json:"readCount,omitempty"`
	WriteCount  uint64 `protobuf:"varint,6,opt,name=writeCount,proto3" json:"writeCount,omitempty"`
	TotalBytes  uint64 `protobuf:"varint,7,opt,name=totalBytes,proto3" json:"totalBytes,omitempty"`
	UsedBytes   uint64 `protobuf:"varint,8,opt,name=usedBytes,proto3" json:"usedBytes,omitempty"`
	FreeBytes   uint64 `protobuf:"varint,9,opt,name=freeBytes,proto3" json:"freeBytes,omitempty"`
}

func (x *ZMetricVolume) Reset() {
	*x = ZMetricVolume{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricVolume) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricVolume) ProtoMessage() {}

func (x *ZMetricVolume) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[33]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZMetricVolume.ProtoReflect.Descriptor instead.
func (*ZMetricVolume) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{33}
}

func (x *ZMetricVolume) GetUuid() string {
	if x != nil {
		return x.Uuid
	}
	return ""
}

func (x *ZMetricVolume) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *ZMetricVolume) GetReadBytes() uint64 {
	if x != nil {
		return x.ReadBytes
	}
	return 0
}

func (x *ZMetricVolume) GetWriteBytes() uint64 {
	if x != nil {
		return x.WriteBytes
	}
	return 0
}

func (x *ZMetricVolume) GetReadCount() uint64 {
	if x != nil {
		return x.ReadCount
	}
	return 0
}

func (x *ZMetricVolume) GetWriteCount() uint64 {
	if x != nil {
		return x.WriteCount
	}
	return 0
}

func (x *ZMetricVolume) GetTotalBytes() uint64 {
	if x != nil {
		return x.TotalBytes
	}
	return 0
}

func (x *ZMetricVolume) GetUsedBytes() uint64 {
	if x != nil {
		return x.UsedBytes
	}
	return 0
}

func (x *ZMetricVolume) GetFreeBytes() uint64 {
	if x != nil {
		return x.FreeBytes
	}
	return 0
}

// metrics for a single process
type ZMetricProcess struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Pid           int32                `protobuf:"varint,1,opt,name=pid,proto3" json:"pid,omitempty"`
	Name          string               `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	UserProcess   bool                 `protobuf:"varint,3,opt,name=user_process,json=userProcess,proto3" json:"user_process,omitempty"`
	Watched       bool                 `protobuf:"varint,4,opt,name=watched,proto3" json:"watched,omitempty"`
	NumFds        int32                `protobuf:"varint,5,opt,name=num_fds,json=numFds,proto3" json:"num_fds,omitempty"`
	NumThreads    int32                `protobuf:"varint,6,opt,name=num_threads,json=numThreads,proto3" json:"num_threads,omitempty"`
	UserTime      float64              `protobuf:"fixed64,7,opt,name=user_time,json=userTime,proto3" json:"user_time,omitempty"`
	SystemTime    float64              `protobuf:"fixed64,8,opt,name=system_time,json=systemTime,proto3" json:"system_time,omitempty"`
	CpuPercent    float64              `protobuf:"fixed64,9,opt,name=cpu_percent,json=cpuPercent,proto3" json:"cpu_percent,omitempty"`
	CreateTime    *timestamp.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	VmBytes       uint64               `protobuf:"varint,11,opt,name=vm_bytes,json=vmBytes,proto3" json:"vm_bytes,omitempty"`
	RssBytes      uint64               `protobuf:"varint,12,opt,name=rss_bytes,json=rssBytes,proto3" json:"rss_bytes,omitempty"`
	MemoryPercent float32              `protobuf:"fixed32,13,opt,name=memory_percent,json=memoryPercent,proto3" json:"memory_percent,omitempty"`
	// We report the stack for !watched proceeses which have been running for a while
	Stack string `protobuf:"bytes,14,opt,name=stack,proto3" json:"stack,omitempty"`
}

func (x *ZMetricProcess) Reset() {
	*x = ZMetricProcess{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricProcess) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricProcess) ProtoMessage() {}

func (x *ZMetricProcess) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[34]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZMetricProcess.ProtoReflect.Descriptor instead.
func (*ZMetricProcess) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{34}
}

func (x *ZMetricProcess) GetPid() int32 {
	if x != nil {
		return x.Pid
	}
	return 0
}

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

func (x *ZMetricProcess) GetUserProcess() bool {
	if x != nil {
		return x.UserProcess
	}
	return false
}

func (x *ZMetricProcess) GetWatched() bool {
	if x != nil {
		return x.Watched
	}
	return false
}

func (x *ZMetricProcess) GetNumFds() int32 {
	if x != nil {
		return x.NumFds
	}
	return 0
}

func (x *ZMetricProcess) GetNumThreads() int32 {
	if x != nil {
		return x.NumThreads
	}
	return 0
}

func (x *ZMetricProcess) GetUserTime() float64 {
	if x != nil {
		return x.UserTime
	}
	return 0
}

func (x *ZMetricProcess) GetSystemTime() float64 {
	if x != nil {
		return x.SystemTime
	}
	return 0
}

func (x *ZMetricProcess) GetCpuPercent() float64 {
	if x != nil {
		return x.CpuPercent
	}
	return 0
}

func (x *ZMetricProcess) GetCreateTime() *timestamp.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *ZMetricProcess) GetVmBytes() uint64 {
	if x != nil {
		return x.VmBytes
	}
	return 0
}

func (x *ZMetricProcess) GetRssBytes() uint64 {
	if x != nil {
		return x.RssBytes
	}
	return 0
}

func (x *ZMetricProcess) GetMemoryPercent() float32 {
	if x != nil {
		return x.MemoryPercent
	}
	return 0
}

func (x *ZMetricProcess) GetStack() string {
	if x != nil {
		return x.Stack
	}
	return ""
}

// This is the request payload for POST /api/v1/edgeDevice/metrics
// ZMetricMsg carries periodic metrics; typically one message is sent for
// all of the objects on a device (the device itself plus all of the app instances
// and all of the network instances). As such there is normally no need to
// retransmit these messages if there is some network failure; the next periodic
// message will include the cumulative numbers.
// The message is assumed to be protected by a TLS session bound to the
// device certificate.
type ZMetricMsg struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	DevID string `protobuf:"bytes,1,opt,name=devID,proto3" json:"devID,omitempty"`
	// deprecated = 2;
	AtTimeStamp *timestamp.Timestamp `protobuf:"bytes,3,opt,name=atTimeStamp,proto3" json:"atTimeStamp,omitempty"`
	// Types that are assignable to MetricContent:
	//	*ZMetricMsg_Dm
	MetricContent isZMetricMsg_MetricContent `protobuf_oneof:"MetricContent"`
	Am            []*AppMetric               `protobuf:"bytes,5,rep,name=am,proto3" json:"am,omitempty"`
	// deprecated = 6;
	Nm []*ZMetricNetworkInstance `protobuf:"bytes,7,rep,name=nm,proto3" json:"nm,omitempty"`
	Vm []*ZMetricVolume          `protobuf:"bytes,8,rep,name=vm,proto3" json:"vm,omitempty"`
	Pr []*ZMetricProcess         `protobuf:"bytes,9,rep,name=pr,proto3" json:"pr,omitempty"`
}

func (x *ZMetricMsg) Reset() {
	*x = ZMetricMsg{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZMetricMsg) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZMetricMsg) ProtoMessage() {}

func (x *ZMetricMsg) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[35]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZMetricMsg.ProtoReflect.Descriptor instead.
func (*ZMetricMsg) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{35}
}

func (x *ZMetricMsg) GetDevID() string {
	if x != nil {
		return x.DevID
	}
	return ""
}

func (x *ZMetricMsg) GetAtTimeStamp() *timestamp.Timestamp {
	if x != nil {
		return x.AtTimeStamp
	}
	return nil
}

func (m *ZMetricMsg) GetMetricContent() isZMetricMsg_MetricContent {
	if m != nil {
		return m.MetricContent
	}
	return nil
}

func (x *ZMetricMsg) GetDm() *DeviceMetric {
	if x, ok := x.GetMetricContent().(*ZMetricMsg_Dm); ok {
		return x.Dm
	}
	return nil
}

func (x *ZMetricMsg) GetAm() []*AppMetric {
	if x != nil {
		return x.Am
	}
	return nil
}

func (x *ZMetricMsg) GetNm() []*ZMetricNetworkInstance {
	if x != nil {
		return x.Nm
	}
	return nil
}

func (x *ZMetricMsg) GetVm() []*ZMetricVolume {
	if x != nil {
		return x.Vm
	}
	return nil
}

func (x *ZMetricMsg) GetPr() []*ZMetricProcess {
	if x != nil {
		return x.Pr
	}
	return nil
}

type isZMetricMsg_MetricContent interface {
	isZMetricMsg_MetricContent()
}

type ZMetricMsg_Dm struct {
	Dm *DeviceMetric `protobuf:"bytes,4,opt,name=dm,proto3,oneof"`
}

func (*ZMetricMsg_Dm) isZMetricMsg_MetricContent() {}

// newlogMetric - stats for newlog
type NewlogMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Status of failed to send to controller and start time of fail to send
	FailedToSend      bool                 `protobuf:"varint,1,opt,name=failedToSend,proto3" json:"failedToSend,omitempty"`
	FailSentStartTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=failSentStartTime,proto3" json:"failSentStartTime,omitempty"`
	// Stats on total bytes uploaded to controller, the total 4xx responses
	// current upload interval in seconds, and current logfile timeout value in seconds
	// maximum gzip file size so far, and average gzip file size
	TotalBytesUpload  uint64 `protobuf:"varint,3,opt,name=totalBytesUpload,proto3" json:"totalBytesUpload,omitempty"`
	Num4XxResponses   uint32 `protobuf:"varint,4,opt,name=num4xxResponses,proto3" json:"num4xxResponses,omitempty"`
	CurrentUploadIntv uint32 `protobuf:"varint,5,opt,name=currentUploadIntv,proto3" json:"currentUploadIntv,omitempty"`
	LogfileTimeout    uint32 `protobuf:"varint,6,opt,name=logfileTimeout,proto3" json:"logfileTimeout,omitempty"`
	MaxGzipFileSize   uint32 `protobuf:"varint,7,opt,name=maxGzipFileSize,proto3" json:"maxGzipFileSize,omitempty"`
	AvgGzipFileSize   uint32 `protobuf:"varint,8,opt,name=avgGzipFileSize,proto3" json:"avgGzipFileSize,omitempty"`
	// Stats for upload to controller letency
	// the min, max and average upload delay in msec, and the last upload delay in msec
	MimUploadMsec  uint32 `protobuf:"varint,9,opt,name=mimUploadMsec,proto3" json:"mimUploadMsec,omitempty"`
	MaxUploadMsec  uint32 `protobuf:"varint,10,opt,name=maxUploadMsec,proto3" json:"maxUploadMsec,omitempty"`
	AvgUploadMsec  uint32 `protobuf:"varint,11,opt,name=avgUploadMsec,proto3" json:"avgUploadMsec,omitempty"`
	LastUploadMsec uint32 `protobuf:"varint,12,opt,name=lastUploadMsec,proto3" json:"lastUploadMsec,omitempty"`
	// Stats for controller server, the current and average CPU ussage in percentage
	// and the current and average processing delay in msec (from receiving newlog batch to reply to device)
	CurrentCPULoadPct   float32 `protobuf:"fixed32,13,opt,name=currentCPULoadPct,proto3" json:"currentCPULoadPct,omitempty"`
	AverageCPULoadPct   float32 `protobuf:"fixed32,14,opt,name=averageCPULoadPct,proto3" json:"averageCPULoadPct,omitempty"`
	CurrentProcessDelay uint32  `protobuf:"varint,15,opt,name=currentProcessDelay,proto3" json:"currentProcessDelay,omitempty"`
	AverageProcessDelay uint32  `protobuf:"varint,16,opt,name=averageProcessDelay,proto3" json:"averageProcessDelay,omitempty"`
	//
	DeviceMetrics *LogfileMetrics `protobuf:"bytes,17,opt,name=deviceMetrics,proto3" json:"deviceMetrics,omitempty"`
	AppMetrics    *LogfileMetrics `protobuf:"bytes,18,opt,name=appMetrics,proto3" json:"appMetrics,omitempty"`
	// top 10 device log (not app) source in total bytes in percentage
	Top10InputSources map[string]uint32 `protobuf:"bytes,19,rep,name=top10_input_sources,json=top10InputSources,proto3" json:"top10_input_sources,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
	// counter for not uploaded gzip files removed due to exceeding user defined or default quota
	GzipFilesRemoved uint32 `protobuf:"varint,20,opt,name=gzipFilesRemoved,proto3" json:"gzipFilesRemoved,omitempty"`
	// counter for 429 returned status code for uploading
	TooManyRequest uint32 `protobuf:"varint,21,opt,name=tooManyRequest,proto3" json:"tooManyRequest,omitempty"`
	// counter for gzip files bypassing the uploading to cloud
	SkipUploadAppFile uint32 `protobuf:"varint,22,opt,name=skipUploadAppFile,proto3" json:"skipUploadAppFile,omitempty"`
}

func (x *NewlogMetric) Reset() {
	*x = NewlogMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NewlogMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NewlogMetric) ProtoMessage() {}

func (x *NewlogMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[36]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NewlogMetric.ProtoReflect.Descriptor instead.
func (*NewlogMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{36}
}

func (x *NewlogMetric) GetFailedToSend() bool {
	if x != nil {
		return x.FailedToSend
	}
	return false
}

func (x *NewlogMetric) GetFailSentStartTime() *timestamp.Timestamp {
	if x != nil {
		return x.FailSentStartTime
	}
	return nil
}

func (x *NewlogMetric) GetTotalBytesUpload() uint64 {
	if x != nil {
		return x.TotalBytesUpload
	}
	return 0
}

func (x *NewlogMetric) GetNum4XxResponses() uint32 {
	if x != nil {
		return x.Num4XxResponses
	}
	return 0
}

func (x *NewlogMetric) GetCurrentUploadIntv() uint32 {
	if x != nil {
		return x.CurrentUploadIntv
	}
	return 0
}

func (x *NewlogMetric) GetLogfileTimeout() uint32 {
	if x != nil {
		return x.LogfileTimeout
	}
	return 0
}

func (x *NewlogMetric) GetMaxGzipFileSize() uint32 {
	if x != nil {
		return x.MaxGzipFileSize
	}
	return 0
}

func (x *NewlogMetric) GetAvgGzipFileSize() uint32 {
	if x != nil {
		return x.AvgGzipFileSize
	}
	return 0
}

func (x *NewlogMetric) GetMimUploadMsec() uint32 {
	if x != nil {
		return x.MimUploadMsec
	}
	return 0
}

func (x *NewlogMetric) GetMaxUploadMsec() uint32 {
	if x != nil {
		return x.MaxUploadMsec
	}
	return 0
}

func (x *NewlogMetric) GetAvgUploadMsec() uint32 {
	if x != nil {
		return x.AvgUploadMsec
	}
	return 0
}

func (x *NewlogMetric) GetLastUploadMsec() uint32 {
	if x != nil {
		return x.LastUploadMsec
	}
	return 0
}

func (x *NewlogMetric) GetCurrentCPULoadPct() float32 {
	if x != nil {
		return x.CurrentCPULoadPct
	}
	return 0
}

func (x *NewlogMetric) GetAverageCPULoadPct() float32 {
	if x != nil {
		return x.AverageCPULoadPct
	}
	return 0
}

func (x *NewlogMetric) GetCurrentProcessDelay() uint32 {
	if x != nil {
		return x.CurrentProcessDelay
	}
	return 0
}

func (x *NewlogMetric) GetAverageProcessDelay() uint32 {
	if x != nil {
		return x.AverageProcessDelay
	}
	return 0
}

func (x *NewlogMetric) GetDeviceMetrics() *LogfileMetrics {
	if x != nil {
		return x.DeviceMetrics
	}
	return nil
}

func (x *NewlogMetric) GetAppMetrics() *LogfileMetrics {
	if x != nil {
		return x.AppMetrics
	}
	return nil
}

func (x *NewlogMetric) GetTop10InputSources() map[string]uint32 {
	if x != nil {
		return x.Top10InputSources
	}
	return nil
}

func (x *NewlogMetric) GetGzipFilesRemoved() uint32 {
	if x != nil {
		return x.GzipFilesRemoved
	}
	return 0
}

func (x *NewlogMetric) GetTooManyRequest() uint32 {
	if x != nil {
		return x.TooManyRequest
	}
	return 0
}

func (x *NewlogMetric) GetSkipUploadAppFile() uint32 {
	if x != nil {
		return x.SkipUploadAppFile
	}
	return 0
}

// logfileMetrics - is shared for both device log and application log
type LogfileMetrics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//  Stats for gzip files been sent to controller, total bytes written into gzip files
	//  total bytes written into logfiles before compressed, number of gzip files currently
	//  remain in the gzip directory and total input events
	NumGzipFileSent   uint64 `protobuf:"varint,1,opt,name=numGzipFileSent,proto3" json:"numGzipFileSent,omitempty"`
	NumGzipBytesWrite uint64 `protobuf:"varint,2,opt,name=numGzipBytesWrite,proto3" json:"numGzipBytesWrite,omitempty"`
	NumBytesWrite     uint64 `protobuf:"varint,3,opt,name=numBytesWrite,proto3" json:"numBytesWrite,omitempty"`
	NumGzipFileInDir  uint32 `protobuf:"varint,4,opt,name=numGzipFileInDir,proto3" json:"numGzipFileInDir,omitempty"`
	NumInputEvent     uint64 `protobuf:"varint,5,opt,name=numInputEvent,proto3" json:"numInputEvent,omitempty"`
	// Stats for log upload file retries, the number of files can not be sent and kept on device
	// the most recent gzip file sent timestamp of the gzip file and the timestamp for sending that file
	NumGzipFileRetry     uint64               `protobuf:"varint,6,opt,name=numGzipFileRetry,proto3" json:"numGzipFileRetry,omitempty"`
	NumGzipFileKeptLocal uint32               `protobuf:"varint,7,opt,name=numGzipFileKeptLocal,proto3" json:"numGzipFileKeptLocal,omitempty"`
	RecentGzipFileTime   *timestamp.Timestamp `protobuf:"bytes,8,opt,name=recentGzipFileTime,proto3" json:"recentGzipFileTime,omitempty"`
	LastGzipFileSendTime *timestamp.Timestamp `protobuf:"bytes,9,opt,name=lastGzipFileSendTime,proto3" json:"lastGzipFileSendTime,omitempty"`
}

func (x *LogfileMetrics) Reset() {
	*x = LogfileMetrics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LogfileMetrics) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LogfileMetrics) ProtoMessage() {}

func (x *LogfileMetrics) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[37]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LogfileMetrics.ProtoReflect.Descriptor instead.
func (*LogfileMetrics) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{37}
}

func (x *LogfileMetrics) GetNumGzipFileSent() uint64 {
	if x != nil {
		return x.NumGzipFileSent
	}
	return 0
}

func (x *LogfileMetrics) GetNumGzipBytesWrite() uint64 {
	if x != nil {
		return x.NumGzipBytesWrite
	}
	return 0
}

func (x *LogfileMetrics) GetNumBytesWrite() uint64 {
	if x != nil {
		return x.NumBytesWrite
	}
	return 0
}

func (x *LogfileMetrics) GetNumGzipFileInDir() uint32 {
	if x != nil {
		return x.NumGzipFileInDir
	}
	return 0
}

func (x *LogfileMetrics) GetNumInputEvent() uint64 {
	if x != nil {
		return x.NumInputEvent
	}
	return 0
}

func (x *LogfileMetrics) GetNumGzipFileRetry() uint64 {
	if x != nil {
		return x.NumGzipFileRetry
	}
	return 0
}

func (x *LogfileMetrics) GetNumGzipFileKeptLocal() uint32 {
	if x != nil {
		return x.NumGzipFileKeptLocal
	}
	return 0
}

func (x *LogfileMetrics) GetRecentGzipFileTime() *timestamp.Timestamp {
	if x != nil {
		return x.RecentGzipFileTime
	}
	return nil
}

func (x *LogfileMetrics) GetLastGzipFileSendTime() *timestamp.Timestamp {
	if x != nil {
		return x.LastGzipFileSendTime
	}
	return nil
}

// zedboxStats - for zedbox process items
type ZedboxStats struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NumGoRoutines uint32 `protobuf:"varint,1,opt,name=numGoRoutines,proto3" json:"numGoRoutines,omitempty"`
}

func (x *ZedboxStats) Reset() {
	*x = ZedboxStats{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZedboxStats) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZedboxStats) ProtoMessage() {}

func (x *ZedboxStats) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[38]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZedboxStats.ProtoReflect.Descriptor instead.
func (*ZedboxStats) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{38}
}

func (x *ZedboxStats) GetNumGoRoutines() uint32 {
	if x != nil {
		return x.NumGoRoutines
	}
	return 0
}

// Contains information about the access vlans attached to network instance
type VlanInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NumTrunkPorts uint32            `protobuf:"varint,1,opt,name=num_trunk_ports,json=numTrunkPorts,proto3" json:"num_trunk_ports,omitempty"`                                                                               // Number of ports attached to this network instance that are designated trunk
	VlanCounts    map[uint32]uint32 `protobuf:"bytes,2,rep,name=vlan_counts,json=vlanCounts,proto3" json:"vlan_counts,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // vlan id to it's usage count map
}

func (x *VlanInfo) Reset() {
	*x = VlanInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *VlanInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*VlanInfo) ProtoMessage() {}

func (x *VlanInfo) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[39]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use VlanInfo.ProtoReflect.Descriptor instead.
func (*VlanInfo) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{39}
}

func (x *VlanInfo) GetNumTrunkPorts() uint32 {
	if x != nil {
		return x.NumTrunkPorts
	}
	return 0
}

func (x *VlanInfo) GetVlanCounts() map[uint32]uint32 {
	if x != nil {
		return x.VlanCounts
	}
	return nil
}

// Flowlog stats.
type FlowlogMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Counting FlowMessage instances.
	// Note that FlowMessage is used to package and carry a list of flows and DNS requests.
	Messages *FlowlogCounters `protobuf:"bytes,1,opt,name=messages,proto3" json:"messages,omitempty"`
	// Counting FlowMessage.Flows.
	Flows *FlowlogCounters `protobuf:"bytes,2,opt,name=flows,proto3" json:"flows,omitempty"`
	// Counting FlowMessage.DnsReqs.
	DnsRequests *FlowlogCounters `protobuf:"bytes,3,opt,name=dns_requests,json=dnsRequests,proto3" json:"dns_requests,omitempty"`
}

func (x *FlowlogMetric) Reset() {
	*x = FlowlogMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FlowlogMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FlowlogMetric) ProtoMessage() {}

func (x *FlowlogMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[40]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FlowlogMetric.ProtoReflect.Descriptor instead.
func (*FlowlogMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{40}
}

func (x *FlowlogMetric) GetMessages() *FlowlogCounters {
	if x != nil {
		return x.Messages
	}
	return nil
}

func (x *FlowlogMetric) GetFlows() *FlowlogCounters {
	if x != nil {
		return x.Flows
	}
	return nil
}

func (x *FlowlogMetric) GetDnsRequests() *FlowlogCounters {
	if x != nil {
		return x.DnsRequests
	}
	return nil
}

// Counters for published/dropped flowlog messages/flows or DNS requests.
// Note that every record is eventually either successfully published or dropped.
// In the process of publishing a flowlog record, one or more failed attempts can be made.
// This means that the total number of fully processed records (i.e. not queued anymore)
// equals the sum of "success" and "drops", while "failed_attempts" is an orthogonal metric.
type FlowlogCounters struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Flow records successfully published to zedcloud.
	Success uint64 `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	// Flow records dropped because the flowlog queue would not fit them.
	// This is either because the queue was already full when the record was created,
	// or the publish attempts would keep failing and the queue was nearing its capacity.
	Drops uint64 `protobuf:"varint,2,opt,name=drops,proto3" json:"drops,omitempty"`
	// The number of failed attempts to publish a flow record.
	FailedAttempts uint64 `protobuf:"varint,3,opt,name=failed_attempts,json=failedAttempts,proto3" json:"failed_attempts,omitempty"`
}

func (x *FlowlogCounters) Reset() {
	*x = FlowlogCounters{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FlowlogCounters) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FlowlogCounters) ProtoMessage() {}

func (x *FlowlogCounters) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[41]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FlowlogCounters.ProtoReflect.Descriptor instead.
func (*FlowlogCounters) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{41}
}

func (x *FlowlogCounters) GetSuccess() uint64 {
	if x != nil {
		return x.Success
	}
	return 0
}

func (x *FlowlogCounters) GetDrops() uint64 {
	if x != nil {
		return x.Drops
	}
	return 0
}

func (x *FlowlogCounters) GetFailedAttempts() uint64 {
	if x != nil {
		return x.FailedAttempts
	}
	return 0
}

type ZProbeNIMetrics_ZProbeIntfMetric struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	IntfName           string `protobuf:"bytes,11,opt,name=intfName,proto3" json:"intfName,omitempty"`                      // uplink interface name, e.g. eth1, wlan0
	GatewayNexhtop     string `protobuf:"bytes,12,opt,name=gatewayNexhtop,proto3" json:"gatewayNexhtop,omitempty"`          // intf nexthop IP address
	GatewayUP          bool   `protobuf:"varint,13,opt,name=gatewayUP,proto3" json:"gatewayUP,omitempty"`                   // local gateway status UP or not
	RemoteHostUP       bool   `protobuf:"varint,14,opt,name=remoteHostUP,proto3" json:"remoteHostUP,omitempty"`             // remote url/IP status UP or not
	NexthopUpCount     uint32 `protobuf:"varint,15,opt,name=nexthopUpCount,proto3" json:"nexthopUpCount,omitempty"`         // local ping success count
	NexthopDownCount   uint32 `protobuf:"varint,16,opt,name=nexthopDownCount,proto3" json:"nexthopDownCount,omitempty"`     // local ping failure count
	RemoteUpCount      uint32 `protobuf:"varint,17,opt,name=remoteUpCount,proto3" json:"remoteUpCount,omitempty"`           // remote probing success count
	RemoteDownCount    uint32 `protobuf:"varint,18,opt,name=remoteDownCount,proto3" json:"remoteDownCount,omitempty"`       // remote probing failure count
	RemoteProbeLatency uint32 `protobuf:"varint,19,opt,name=remoteProbeLatency,proto3" json:"remoteProbeLatency,omitempty"` // remote host probe latency in msec
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) Reset() {
	*x = ZProbeNIMetrics_ZProbeIntfMetric{}
	if protoimpl.UnsafeEnabled {
		mi := &file_metrics_metrics_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZProbeNIMetrics_ZProbeIntfMetric) ProtoMessage() {}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) ProtoReflect() protoreflect.Message {
	mi := &file_metrics_metrics_proto_msgTypes[43]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZProbeNIMetrics_ZProbeIntfMetric.ProtoReflect.Descriptor instead.
func (*ZProbeNIMetrics_ZProbeIntfMetric) Descriptor() ([]byte, []int) {
	return file_metrics_metrics_proto_rawDescGZIP(), []int{31, 0}
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetIntfName() string {
	if x != nil {
		return x.IntfName
	}
	return ""
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetGatewayNexhtop() string {
	if x != nil {
		return x.GatewayNexhtop
	}
	return ""
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetGatewayUP() bool {
	if x != nil {
		return x.GatewayUP
	}
	return false
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetRemoteHostUP() bool {
	if x != nil {
		return x.RemoteHostUP
	}
	return false
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetNexthopUpCount() uint32 {
	if x != nil {
		return x.NexthopUpCount
	}
	return 0
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetNexthopDownCount() uint32 {
	if x != nil {
		return x.NexthopDownCount
	}
	return 0
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetRemoteUpCount() uint32 {
	if x != nil {
		return x.RemoteUpCount
	}
	return 0
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetRemoteDownCount() uint32 {
	if x != nil {
		return x.RemoteDownCount
	}
	return 0
}

func (x *ZProbeNIMetrics_ZProbeIntfMetric) GetRemoteProbeLatency() uint32 {
	if x != nil {
		return x.RemoteProbeLatency
	}
	return 0
}

var File_metrics_metrics_proto protoreflect.FileDescriptor

var file_metrics_metrics_proto_rawDesc = []byte{
	0x0a, 0x15, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65,
	0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a,
	0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x22, 0x96, 0x01, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x07, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x61,
	0x76, 0x61, 0x69, 0x6c, 0x4d, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61,
	0x76, 0x61, 0x69, 0x6c, 0x4d, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x64, 0x50,
	0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52,
	0x0e, 0x75, 0x73, 0x65, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12,
	0x28, 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61,
	0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x50,
	0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0x4b, 0x0a, 0x0f, 0x41, 0x70, 0x70,
	0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x20, 0x0a, 0x0b,
	0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x42, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x42, 0x12, 0x16,
	0x0a, 0x06, 0x75, 0x73, 0x65, 0x64, 0x4d, 0x42, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06,
	0x75, 0x73, 0x65, 0x64, 0x4d, 0x42, 0x22, 0xa3, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1a, 0x0a,
	0x08, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x42, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x08, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x42, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x6c,
	0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x70, 0x73, 0x4d, 0x42, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x41, 0x70,
	0x70, 0x73, 0x4d, 0x42, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65,
	0x64, 0x5f, 0x65, 0x76, 0x65, 0x4d, 0x42, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x61,
	0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x4d, 0x42, 0x12, 0x1d, 0x0a,
	0x0a, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x4d, 0x42, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0d, 0x52, 0x09, 0x75, 0x73, 0x65, 0x64, 0x45, 0x76, 0x65, 0x4d, 0x42, 0x22, 0xcd, 0x03, 0x0a,
	0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x14,
	0x0a, 0x05, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69,
	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x14, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x78,
	0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x78, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x72, 0x78, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x18,
	0x0a, 0x07, 0x74, 0x78, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x07, 0x74, 0x78, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x78, 0x44, 0x72,
	0x6f, 0x70, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x72, 0x78, 0x44, 0x72, 0x6f,
	0x70, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x78, 0x50, 0x6b, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x06, 0x74, 0x78, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x78,
	0x50, 0x6b, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x78, 0x50, 0x6b,
	0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1a,
	0x0a, 0x08, 0x72, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x08, 0x72, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x78,
	0x41, 0x63, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a,
	0x74, 0x78, 0x41, 0x63, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x78,
	0x41, 0x63, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a,
	0x72, 0x78, 0x41, 0x63, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x74, 0x78,
	0x41, 0x63, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x72, 0x6f, 0x70,
	0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x74, 0x78, 0x41, 0x63, 0x6c, 0x52, 0x61,
	0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x30, 0x0a, 0x13,
	0x72, 0x78, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x72,
	0x6f, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x72, 0x78, 0x41, 0x63, 0x6c,
	0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x1c,
	0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xdd, 0x01, 0x0a,
	0x0e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12,
	0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61,
	0x62, 0x65, 0x6c, 0x12, 0x57, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74,
	0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x69,
	0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x0e, 0x73, 0x69,
	0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x4e, 0x0a, 0x0c,
	0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x65, 0x6c, 0x6c,
	0x75, 0x6c, 0x61, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
	0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x66, 0x0a, 0x16,
	0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74,
	0x72, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x73, 0x69, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x73, 0x73, 0x69, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73,
	0x72, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x73, 0x72, 0x71, 0x12, 0x12,
	0x0a, 0x04, 0x72, 0x73, 0x72, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x73,
	0x72, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x03, 0x73, 0x6e, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x13, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61,
	0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x02,
	0x72, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c,
	0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x02,
	0x72, 0x78, 0x12, 0x34, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
	0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53,
	0x74, 0x61, 0x74, 0x73, 0x52, 0x02, 0x74, 0x78, 0x22, 0xd0, 0x02, 0x0a, 0x0e, 0x7a, 0x65, 0x64,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x69,
	0x66, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x66, 0x4e,
	0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12,
	0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x61, 0x73,
	0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74,
	0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x53,
	0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x75,
	0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x75, 0x72, 0x6c, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
	0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x2e, 0x75, 0x72, 0x6c, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x52, 0x0a, 0x75, 0x72, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2c, 0x0a,
	0x11, 0x61, 0x75, 0x74, 0x68, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75,
	0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x61, 0x75, 0x74, 0x68, 0x56, 0x65,
	0x72, 0x69, 0x66, 0x79, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x22, 0xd2, 0x02, 0x0a, 0x0e,
	0x75, 0x72, 0x6c, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x10,
	0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
	0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x79, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x72, 0x79, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x79, 0x42, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x74, 0x72, 0x79, 0x42, 0x79, 0x74,
	0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x73,
	0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x65,
	0x6e, 0x74, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65,
	0x6e, 0x74, 0x42, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x03, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x76, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x76, 0x4d, 0x73, 0x67, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x76, 0x42, 0x79, 0x74, 0x65,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x63,
	0x76, 0x42, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x53,
	0x70, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x73,
	0x75, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0f, 0x73, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x22, 0xaa, 0x02, 0x0a, 0x0c, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65,
	0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
	0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x73, 0x75,
	0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61,
	0x73, 0x74, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61,
	0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x6c, 0x61, 0x73,
	0x74, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73,
	0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x33, 0x0a, 0x02, 0x74, 0x63, 0x18, 0x06,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67,
	0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x54, 0x79,
	0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x02, 0x74, 0x63, 0x22, 0x67, 0x0a,
	0x0b, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0a,
	0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76,
	0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65,
	0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x95, 0x01, 0x0a, 0x0c, 0x61, 0x70, 0x70, 0x43, 0x70,
	0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x32, 0x0a, 0x06, 0x75, 0x70, 0x54, 0x69, 0x6d,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
	0x61, 0x6d, 0x70, 0x52, 0x06, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74,
	0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x6f, 0x74, 0x61, 0x6c,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x6f,
	0x74, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x73, 0x18,
	0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x73, 0x22, 0x6d,
	0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x49, 0x6e, 0x66,
	0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d,
	0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25,
	0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53,
	0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xda, 0x01,
	0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12,
	0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12,
	0x4a, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65,
	0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e,
	0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0c, 0x73,
	0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x64,
	0x69, 0x73, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67,
	0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x05, 0x64, 0x69, 0x73, 0x6b, 0x73, 0x22, 0xfc, 0x0a, 0x0a, 0x0c, 0x64,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x3c, 0x0a, 0x06, 0x6d,
	0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x07, 0x6e, 0x65, 0x74,
	0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67,
	0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x42, 0x0a, 0x08, 0x7a, 0x65,
	0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x7a, 0x65, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x7a, 0x65, 0x64, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x36,
	0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x69, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x12, 0x42, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
	0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x43, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52,
	0x09, 0x63, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x44, 0x0a, 0x0b, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65,
	0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49,
	0x74, 0x65, 0x6d, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x73,
	0x12, 0x3a, 0x0a, 0x18, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61,
	0x67, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x4d, 0x42, 0x18, 0x09, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x18, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61,
	0x67, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x4d, 0x42, 0x12, 0x30, 0x0a, 0x13,
	0x61, 0x70, 0x70, 0x52, 0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
	0x65, 0x4d, 0x42, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x61, 0x70, 0x70, 0x52, 0x75,
	0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x42, 0x12, 0x5c,
	0x0a, 0x16, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73,
	0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x42, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
	0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x52, 0x16, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76,
	0x69, 0x63, 0x65, 0x73, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x42, 0x12, 0x33, 0x0a, 0x03,
	0x6c, 0x6f, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
	0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x2e, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x03, 0x6c, 0x6f,
	0x67, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65,
	0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65,
	0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x12,
	0x33, 0x0a, 0x03, 0x61, 0x63, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x41, 0x63, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52,
	0x03, 0x61, 0x63, 0x6c, 0x12, 0x3c, 0x0a, 0x06, 0x6e, 0x65, 0x77, 0x6c, 0x6f, 0x67, 0x18, 0x0f,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67,
	0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65,
	0x77, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x6e, 0x65, 0x77, 0x6c,
	0x6f, 0x67, 0x12, 0x3b, 0x0a, 0x06, 0x7a, 0x65, 0x64, 0x62, 0x6f, 0x78, 0x18, 0x10, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x7a, 0x65, 0x64, 0x62,
	0x6f, 0x78, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x06, 0x7a, 0x65, 0x64, 0x62, 0x6f, 0x78, 0x12,
	0x4e, 0x0a, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18,
	0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64,
	0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x52, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12,
	0x4c, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64,
	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x52,
	0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 0x0a,
	0x15, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72,
	0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x42, 0x0a,
	0x08, 0x63, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65,
	0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61,
	0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x08, 0x63, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61,
	0x72, 0x12, 0x3f, 0x0a, 0x07, 0x66, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x18, 0x15, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x46, 0x6c, 0x6f, 0x77,
	0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x66, 0x6c, 0x6f, 0x77, 0x6c,
	0x6f, 0x67, 0x12, 0x35, 0x0a, 0x17, 0x64, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x74, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x16, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x14, 0x64, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65,
	0x49, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x4e, 0x0a, 0x0f, 0x73, 0x74, 0x6f,
	0x72, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x17, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x72,
	0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61,
	0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x35, 0x0a, 0x09, 0x41, 0x63, 0x6c,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
	0x72, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x22, 0xb4, 0x03, 0x0a, 0x12, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
	0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x43, 0x6f,
	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x10, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4e,
	0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x50,
	0x49, 0x44, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x50, 0x49, 0x44, 0x73, 0x12,
	0x36, 0x0a, 0x03, 0x63, 0x70, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x43, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x52, 0x03, 0x63, 0x70, 0x75, 0x12, 0x3c, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72,
	0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66,
	0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x6d,
	0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x3f, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65,
	0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e,
	0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6e,
	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x36, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67,
	0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x69,
	0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x12, 0x57,
	0x0a, 0x12, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65,
	0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67,
	0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x52, 0x12, 0x61, 0x70, 0x70, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
	0x72, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x22, 0x9b, 0x02, 0x0a, 0x0a, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65,
	0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0b, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x69, 0x6e,
	0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0b, 0x75, 0x69, 0x6e, 0x74,
	0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52,
	0x0b, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0a,
	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02,
	0x48, 0x00, 0x52, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22,
	0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c,
	0x75, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf8, 0x01, 0x0a, 0x0a, 0x64, 0x69, 0x73, 0x6b, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x75,
	0x6e, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79,
	0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74,
	0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64,
	0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04,
	0x66, 0x72, 0x65, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x66, 0x72, 0x65, 0x65,
	0x22, 0x8b, 0x01, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x44, 0x69, 0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x72, 0x6f,
	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x64,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x75, 0x73, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08,
	0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x64, 0x69, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x69, 0x72, 0x74,
	0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, 0x69, 0x72, 0x74, 0x79, 0x22, 0xde,
	0x03, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x14, 0x0a, 0x05,
	0x41, 0x70, 0x70, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x70, 0x70,
	0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
	0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x56, 0x65, 0x72, 0x73, 0x69,
	0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x03,
	0x63, 0x70, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
	0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x43, 0x70, 0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52,
	0x03, 0x63, 0x70, 0x75, 0x12, 0x3c, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67,
	0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6d, 0x65,
	0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x6f,
	0x72, 0x79, 0x12, 0x3f, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65,
	0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x74,
	0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77,
	0x6f, 0x72, 0x6b, 0x12, 0x39, 0x0a, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65,
	0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x44, 0x69,
	0x73, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x04, 0x64, 0x69, 0x73, 0x6b, 0x12, 0x48,
	0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65,
	0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x43, 0x6f,
	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x09, 0x63,
	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x09, 0x61, 0x70, 0x70, 0x4d,
	0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x52, 0x09, 0x61, 0x70, 0x70, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x22,
	0xae, 0x08, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x30, 0x0a,
	0x13, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
	0x53, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x12,
	0x32, 0x0a, 0x14, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64,
	0x6c, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x6e,
	0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x53,
	0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x41, 0x70, 0x70, 0x45, 0x76, 0x65,
	0x6e, 0x74, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6e,
	0x75, 0x6d, 0x41, 0x70, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x12,
	0x2c, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x41, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73,
	0x53, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x41,
	0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a,
	0x0f, 0x6e, 0x75, 0x6d, 0x34, 0x78, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x34, 0x78, 0x78, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x44,
	0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x54,
	0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12,
	0x50, 0x0a, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65,
	0x53, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x15, 0x6c, 0x61, 0x73, 0x74,
	0x41, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d,
	0x65, 0x12, 0x38, 0x0a, 0x17, 0x69, 0x73, 0x4c, 0x6f, 0x67, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73,
	0x73, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x17, 0x69, 0x73, 0x4c, 0x6f, 0x67, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
	0x69, 0x6e, 0x67, 0x44, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x6e,
	0x75, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x44, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x44,
	0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x12, 0x46, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x4c,
	0x6f, 0x67, 0x44, 0x65, 0x66, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c,
	0x61, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x44, 0x65, 0x66, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12,
	0x30, 0x0a, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x6f,
	0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x70, 0x75,
	0x74, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x4c, 0x6f, 0x67,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x41, 0x70, 0x70, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x32, 0x0a,
	0x14, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x45,
	0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x6e, 0x75, 0x6d,
	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72,
	0x73, 0x12, 0x2c, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x41, 0x70, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6e, 0x75,
	0x6d, 0x41, 0x70, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12,
	0x44, 0x0a, 0x1d, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x75, 0x6e, 0x64,
	0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74,
	0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1d, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63,
	0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x79, 0x74, 0x65,
	0x73, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x1a, 0x6e, 0x75, 0x6d, 0x41, 0x70, 0x70, 0x42,
	0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53,
	0x65, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1a, 0x6e, 0x75, 0x6d, 0x41, 0x70,
	0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x79, 0x74, 0x65,
	0x73, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x0d, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x52, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a,
	0x3f, 0x0a, 0x11, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45,
	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
	0x22, 0x39, 0x0a, 0x07, 0x50, 0x6b, 0x74, 0x53, 0x74, 0x61, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x50,
	0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x50, 0x61,
	0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x83, 0x02, 0x0a, 0x0b,
	0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x6e, 0x12, 0x37, 0x0a, 0x06, 0x49,
	0x6e, 0x50, 0x6b, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x6b, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x06, 0x49, 0x6e,
	0x50, 0x6b, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x4f, 0x75, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64,
	0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50,
	0x6b, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x07, 0x4f, 0x75, 0x74, 0x50, 0x6b, 0x74, 0x73, 0x12,
	0x39, 0x0a, 0x07, 0x45, 0x72, 0x72, 0x50, 0x6b, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76,
	0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x6b, 0x74, 0x53, 0x74, 0x61,
	0x74, 0x52, 0x07, 0x45, 0x72, 0x72, 0x50, 0x6b, 0x74, 0x73, 0x12, 0x45, 0x0a, 0x0d, 0x43, 0x61,
	0x72, 0x69, 0x65, 0x72, 0x45, 0x72, 0x72, 0x50, 0x6b, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65,
	0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x50, 0x6b, 0x74, 0x53, 0x74,
	0x61, 0x74, 0x52, 0x0d, 0x43, 0x61, 0x72, 0x69, 0x65, 0x72, 0x45, 0x72, 0x72, 0x50, 0x6b, 0x74,
	0x73, 0x22, 0x8c, 0x02, 0x0a, 0x0a, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x70, 0x6e,
	0x12, 0x3f, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x6e, 0x52, 0x08, 0x43, 0x6f, 0x6e, 0x6e, 0x53, 0x74, 0x61,
	0x74, 0x12, 0x3d, 0x0a, 0x07, 0x49, 0x6b, 0x65, 0x53, 0x74, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x6e, 0x52, 0x07, 0x49, 0x6b, 0x65, 0x53, 0x74, 0x61, 0x74,
	0x12, 0x3f, 0x0a, 0x08, 0x4e, 0x61, 0x74, 0x54, 0x53, 0x74, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x6e, 0x52, 0x08, 0x4e, 0x61, 0x74, 0x54, 0x53, 0x74, 0x61,
	0x74, 0x12, 0x3d, 0x0a, 0x07, 0x45, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x6e, 0x52, 0x07, 0x45, 0x73, 0x70, 0x53, 0x74, 0x61, 0x74,
	0x22, 0x0d, 0x0a, 0x0b, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x6e, 0x65, 0x22,
	0x49, 0x0a, 0x0f, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x69,
	0x6e, 0x6b, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x75, 0x62, 0x4e, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05,
	0x73, 0x70, 0x69, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x70, 0x69,
	0x49, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0xaf, 0x01, 0x0a, 0x13, 0x5a,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69,
	0x6e, 0x74, 0x12, 0x18, 0x0a, 0x06, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x12, 0x3b, 0x0a, 0x04,
	0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67,
	0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x4c,
	0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61,
	0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c,
	0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x2e, 0x50, 0x6b, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73,
	0x42, 0x0a, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0xf5, 0x01, 0x0a,
	0x0b, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02,
	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x49,
	0x0a, 0x09, 0x6c, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65,
	0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x09,
	0x6c, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x49, 0x0a, 0x09, 0x72, 0x45, 0x6e,
	0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f,
	0x77, 0x45, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x09, 0x72, 0x45, 0x6e, 0x64, 0x50,
	0x6f, 0x69, 0x6e, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x0c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
	0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x61,
	0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72,
	0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x05, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c,
	0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x81, 0x01, 0x0a, 0x13, 0x5a, 0x4d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
	0x34, 0x0a, 0x02, 0x72, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74,
	0x73, 0x52, 0x02, 0x72, 0x78, 0x12, 0x34, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65,
	0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f,
	0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x02, 0x74, 0x78, 0x22, 0x86, 0x05, 0x0a, 0x0f,
	0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4e, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12,
	0x20, 0x0a, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x66, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74,
	0x66, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f,
	0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74,
	0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x69, 0x6e,
	0x67, 0x49, 0x6e, 0x74, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x69, 0x6e,
	0x67, 0x49, 0x6e, 0x74, 0x76, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50,
	0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x72,
	0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x76, 0x12, 0x1c, 0x0a,
	0x09, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x09, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x0a, 0x69,
	0x6e, 0x74, 0x66, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x38, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65,
	0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4e,
	0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x49,
	0x6e, 0x74, 0x66, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x66, 0x4d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x1a, 0xec, 0x02, 0x0a, 0x10, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65,
	0x49, 0x6e, 0x74, 0x66, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e,
	0x74, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e,
	0x74, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61,
	0x79, 0x4e, 0x65, 0x78, 0x68, 0x74, 0x6f, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
	0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x65, 0x78, 0x68, 0x74, 0x6f, 0x70, 0x12, 0x1c,
	0x0a, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x50, 0x18, 0x0d, 0x20, 0x01, 0x28,
	0x08, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x50, 0x12, 0x22, 0x0a, 0x0c,
	0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x50, 0x18, 0x0e, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x50,
	0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x55, 0x70, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f,
	0x70, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x65, 0x78, 0x74,
	0x68, 0x6f, 0x70, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x44, 0x6f, 0x77, 0x6e, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x55, 0x70,
	0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x72, 0x65, 0x6d,
	0x6f, 0x74, 0x65, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65,
	0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, 0x20,
	0x01, 0x28, 0x0d, 0x52, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x72,
	0x6f, 0x62, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d,
	0x52, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4c, 0x61, 0x74,
	0x65, 0x6e, 0x63, 0x79, 0x22, 0xa3, 0x05, 0x0a, 0x16, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12,
	0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x26, 0x0a,
	0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x65,
	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70,
	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65,
	0x64, 0x12, 0x3f, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77,
	0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f,
	0x72, 0x6b, 0x12, 0x49, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66,
	0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x2e, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4e, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x52, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x38, 0x0a,
	0x04, 0x76, 0x70, 0x6e, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x70, 0x6e, 0x48,
	0x00, 0x52, 0x04, 0x76, 0x70, 0x6e, 0x6d, 0x12, 0x3b, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x65, 0x6d,
	0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65,
	0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e,
	0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x05, 0x6e,
	0x6f, 0x6e, 0x65, 0x6d, 0x12, 0x41, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74,
	0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66,
	0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x09, 0x66, 0x6c,
	0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f,
	0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
	0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x65,
	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0c, 0x6e, 0x65, 0x74, 0x77,
	0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x09, 0x76, 0x6c, 0x61, 0x6e,
	0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x76,
	0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x74, 0x61,
	0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x9d, 0x02, 0x0a, 0x0d, 0x5a,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04,
	0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64,
	0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73,
	0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73,
	0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e,
	0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e,
	0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1c,
	0x0a, 0x09, 0x75, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x09, 0x75, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09,
	0x66, 0x72, 0x65, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x09, 0x66, 0x72, 0x65, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xbe, 0x03, 0x0a, 0x0e, 0x5a,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a,
	0x03, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12,
	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x63,
	0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x50,
	0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65,
	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64,
	0x12, 0x17, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x46, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d,
	0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
	0x6e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73,
	0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x75,
	0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65,
	0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x73, 0x79,
	0x73, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x70, 0x75, 0x5f,
	0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x63,
	0x70, 0x75, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x6d, 0x5f, 0x62, 0x79, 0x74,
	0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x6d, 0x42, 0x79, 0x74, 0x65,
	0x73, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x73, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0c,
	0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x73, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x25,
	0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
	0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x65,
	0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x0e,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x22, 0x8b, 0x03, 0x0a, 0x0a,
	0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65,
	0x76, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x76, 0x49, 0x44,
	0x12, 0x3c, 0x0a, 0x0b, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
	0x70, 0x52, 0x0b, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36,
	0x0a, 0x02, 0x64, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67,
	0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x48, 0x00, 0x52, 0x02, 0x64, 0x6d, 0x12, 0x31, 0x0a, 0x02, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e,
	0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x4d,
	0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x02, 0x61, 0x6d, 0x12, 0x3e, 0x0a, 0x02, 0x6e, 0x6d, 0x18,
	0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64,
	0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73,
	0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x02, 0x6e, 0x6d, 0x12, 0x35, 0x0a, 0x02, 0x76, 0x6d, 0x18,
	0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64,
	0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x02, 0x76, 0x6d,
	0x12, 0x36, 0x0a, 0x02, 0x70, 0x72, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x72, 0x6f,
	0x63, 0x65, 0x73, 0x73, 0x52, 0x02, 0x70, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0xa1, 0x09, 0x0a, 0x0c, 0x6e, 0x65,
	0x77, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x61,
	0x69, 0x6c, 0x65, 0x64, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x48,
	0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54,
	0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x74, 0x53,
	0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x55, 0x70,
	0x6c, 0x6f, 0x61, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x34, 0x78, 0x78, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6e,
	0x75, 0x6d, 0x34, 0x78, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x2c,
	0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49,
	0x6e, 0x74, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65,
	0x6e, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x74, 0x76, 0x12, 0x26, 0x0a, 0x0e,
	0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d,
	0x65, 0x6f, 0x75, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x47, 0x7a, 0x69, 0x70, 0x46,
	0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6d,
	0x61, 0x78, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x28,
	0x0a, 0x0f, 0x61, 0x76, 0x67, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a,
	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x61, 0x76, 0x67, 0x47, 0x7a, 0x69, 0x70,
	0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x69, 0x6d, 0x55,
	0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x0d, 0x6d, 0x69, 0x6d, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x12, 0x24,
	0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x18,
	0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64,
	0x4d, 0x73, 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x76, 0x67, 0x55, 0x70, 0x6c, 0x6f, 0x61,
	0x64, 0x4d, 0x73, 0x65, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x61, 0x76, 0x67,
	0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61,
	0x73, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x18, 0x0c, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73,
	0x65, 0x63, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x50, 0x55,
	0x4c, 0x6f, 0x61, 0x64, 0x50, 0x63, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x63,
	0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x50, 0x55, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x63, 0x74,
	0x12, 0x2c, 0x0a, 0x11, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x43, 0x50, 0x55, 0x4c, 0x6f,
	0x61, 0x64, 0x50, 0x63, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x61, 0x76, 0x65,
	0x72, 0x61, 0x67, 0x65, 0x43, 0x50, 0x55, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x63, 0x74, 0x12, 0x30,
	0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
	0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x63, 0x75, 0x72,
	0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79,
	0x12, 0x30, 0x0a, 0x13, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65,
	0x73, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x61,
	0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c,
	0x61, 0x79, 0x12, 0x4c, 0x0a, 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
	0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x73, 0x2e, 0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x12, 0x46, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x12,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67,
	0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6c, 0x6f,
	0x67, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0a, 0x61, 0x70,
	0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x6b, 0x0a, 0x13, 0x74, 0x6f, 0x70, 0x31,
	0x30, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18,
	0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64,
	0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6e,
	0x65, 0x77, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x54, 0x6f, 0x70, 0x31,
	0x30, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x11, 0x74, 0x6f, 0x70, 0x31, 0x30, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x67, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c,
	0x65, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52,
	0x10, 0x67, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
	0x64, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x6f, 0x6f, 0x4d, 0x61,
	0x6e, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x6b, 0x69,
	0x70, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x70, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x16,
	0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x73, 0x6b, 0x69, 0x70, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64,
	0x41, 0x70, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x1a, 0x44, 0x0a, 0x16, 0x54, 0x6f, 0x70, 0x31, 0x30,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdc, 0x03,
	0x0a, 0x0e, 0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
	0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53,
	0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x47, 0x7a,
	0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x6e, 0x75,
	0x6d, 0x47, 0x7a, 0x69, 0x70, 0x42, 0x79, 0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x42, 0x79,
	0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x42,
	0x79, 0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x0d, 0x6e, 0x75, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x2a,
	0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x44,
	0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69,
	0x70, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x44, 0x69, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x75,
	0x6d, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74,
	0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x52,
	0x65, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x47,
	0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x32, 0x0a, 0x14,
	0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x70, 0x74, 0x4c,
	0x6f, 0x63, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x47,
	0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x70, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c,
	0x12, 0x4a, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69,
	0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74,
	0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x14,
	0x6c, 0x61, 0x73, 0x74, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x64,
	0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x47, 0x7a, 0x69, 0x70,
	0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x33, 0x0a, 0x0b,
	0x7a, 0x65, 0x64, 0x62, 0x6f, 0x78, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6e,
	0x75, 0x6d, 0x47, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x47, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65,
	0x73, 0x22, 0xc4, 0x01, 0x0a, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26,
	0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x54, 0x72, 0x75, 0x6e,
	0x6b, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x0b, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x72,
	0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74,
	0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x6c,
	0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x76,
	0x6c, 0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x56, 0x6c, 0x61,
	0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdf, 0x01, 0x0a, 0x0d, 0x46, 0x6c, 0x6f,
	0x77, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x43, 0x0a, 0x08, 0x6d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f,
	0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12,
	0x3d, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
	0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e,
	0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43,
	0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x4a,
	0x0a, 0x0c, 0x64, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67,
	0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x46, 0x6c,
	0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0b, 0x64,
	0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x6a, 0x0a, 0x0f, 0x46, 0x6c,
	0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a,
	0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07,
	0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x72, 0x6f, 0x70, 0x73,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x27, 0x0a,
	0x0f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x74,
	0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x2a, 0x32, 0x0a, 0x0c, 0x5a, 0x6d, 0x65, 0x74, 0x72, 0x69,
	0x63, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x09, 0x0a, 0x05, 0x5a, 0x6d, 0x4e, 0x6f, 0x70, 0x10,
	0x00, 0x12, 0x0c, 0x0a, 0x08, 0x5a, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x10, 0x01, 0x12,
	0x09, 0x0a, 0x05, 0x5a, 0x6d, 0x41, 0x70, 0x70, 0x10, 0x03, 0x2a, 0x85, 0x02, 0x0a, 0x0b, 0x43,
	0x69, 0x70, 0x68, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x49,
	0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c,
	0x49, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45,
	0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x01,
	0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
	0x5f, 0x44, 0x45, 0x43, 0x52, 0x59, 0x50, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10,
	0x02, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f,
	0x52, 0x5f, 0x55, 0x4e, 0x4d, 0x41, 0x52, 0x53, 0x48, 0x41, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c,
	0x45, 0x44, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45,
	0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x46,
	0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x49, 0x50,
	0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e,
	0x47, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16,
	0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x5f,
	0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x49, 0x50, 0x48,
	0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41,
	0x10, 0x07, 0x2a, 0xf5, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x74,
	0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f,
	0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f,
	0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x12,
	0x1b, 0x0a, 0x17, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55,
	0x53, 0x5f, 0x44, 0x45, 0x47, 0x52, 0x41, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16,
	0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46,
	0x41, 0x55, 0x4c, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52,
	0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x49,
	0x4e, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f,
	0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x10, 0x05,
	0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54,
	0x55, 0x53, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18,
	0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53,
	0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x07, 0x2a, 0x66, 0x0a, 0x0e, 0x4d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f,
	0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x10,
	0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x47,
	0x61, 0x75, 0x67, 0x65, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x10, 0x02, 0x12, 0x13, 0x0a,
	0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65,
	0x10, 0x03, 0x42, 0x3f, 0x0a, 0x16, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65,
	0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5a, 0x25, 0x67, 0x69,
	0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x66, 0x2d, 0x65, 0x64, 0x67, 0x65,
	0x2f, 0x65, 0x76, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x72,
	0x69, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_metrics_metrics_proto_rawDescOnce sync.Once
	file_metrics_metrics_proto_rawDescData = file_metrics_metrics_proto_rawDesc
)

func file_metrics_metrics_proto_rawDescGZIP() []byte {
	file_metrics_metrics_proto_rawDescOnce.Do(func() {
		file_metrics_metrics_proto_rawDescData = protoimpl.X.CompressGZIP(file_metrics_metrics_proto_rawDescData)
	})
	return file_metrics_metrics_proto_rawDescData
}

var file_metrics_metrics_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
var file_metrics_metrics_proto_msgTypes = make([]protoimpl.MessageInfo, 46)
var file_metrics_metrics_proto_goTypes = []interface{}{
	(ZmetricTypes)(0),                        // 0: org.lfedge.eve.metrics.ZmetricTypes
	(CipherError)(0),                         // 1: org.lfedge.eve.metrics.CipherError
	(StorageStatus)(0),                       // 2: org.lfedge.eve.metrics.StorageStatus
	(MetricItemType)(0),                      // 3: org.lfedge.eve.metrics.MetricItemType
	(*MemoryMetric)(nil),                     // 4: org.lfedge.eve.metrics.memoryMetric
	(*AppMemoryMetric)(nil),                  // 5: org.lfedge.eve.metrics.AppMemoryMetric
	(*DeviceMemoryMetric)(nil),               // 6: org.lfedge.eve.metrics.DeviceMemoryMetric
	(*NetworkMetric)(nil),                    // 7: org.lfedge.eve.metrics.networkMetric
	(*CellularMetric)(nil),                   // 8: org.lfedge.eve.metrics.CellularMetric
	(*CellularSignalStrength)(nil),           // 9: org.lfedge.eve.metrics.CellularSignalStrength
	(*CellularPacketStats)(nil),              // 10: org.lfedge.eve.metrics.CellularPacketStats
	(*ZedcloudMetric)(nil),                   // 11: org.lfedge.eve.metrics.zedcloudMetric
	(*UrlcloudMetric)(nil),                   // 12: org.lfedge.eve.metrics.urlcloudMetric
	(*CipherMetric)(nil),                     // 13: org.lfedge.eve.metrics.CipherMetric
	(*TypeCounter)(nil),                      // 14: org.lfedge.eve.metrics.TypeCounter
	(*AppCpuMetric)(nil),                     // 15: org.lfedge.eve.metrics.appCpuMetric
	(*StorageDiskInfo)(nil),                  // 16: org.lfedge.eve.metrics.StorageDiskInfo
	(*StorageMetric)(nil),                    // 17: org.lfedge.eve.metrics.StorageMetric
	(*DeviceMetric)(nil),                     // 18: org.lfedge.eve.metrics.deviceMetric
	(*AclMetric)(nil),                        // 19: org.lfedge.eve.metrics.AclMetric
	(*AppContainerMetric)(nil),               // 20: org.lfedge.eve.metrics.appContainerMetric
	(*MetricItem)(nil),                       // 21: org.lfedge.eve.metrics.MetricItem
	(*DiskMetric)(nil),                       // 22: org.lfedge.eve.metrics.diskMetric
	(*AppDiskMetric)(nil),                    // 23: org.lfedge.eve.metrics.appDiskMetric
	(*AppMetric)(nil),                        // 24: org.lfedge.eve.metrics.appMetric
	(*LogMetric)(nil),                        // 25: org.lfedge.eve.metrics.logMetric
	(*PktStat)(nil),                          // 26: org.lfedge.eve.metrics.PktStat
	(*ZMetricConn)(nil),                      // 27: org.lfedge.eve.metrics.ZMetricConn
	(*ZMetricVpn)(nil),                       // 28: org.lfedge.eve.metrics.ZMetricVpn
	(*ZMetricNone)(nil),                      // 29: org.lfedge.eve.metrics.ZMetricNone
	(*ZMetricFlowLink)(nil),                  // 30: org.lfedge.eve.metrics.ZMetricFlowLink
	(*ZMetricFlowEndPoint)(nil),              // 31: org.lfedge.eve.metrics.ZMetricFlowEndPoint
	(*ZMetricFlow)(nil),                      // 32: org.lfedge.eve.metrics.ZMetricFlow
	(*NetworkStats)(nil),                     // 33: org.lfedge.eve.metrics.NetworkStats
	(*ZMetricNetworkStats)(nil),              // 34: org.lfedge.eve.metrics.ZMetricNetworkStats
	(*ZProbeNIMetrics)(nil),                  // 35: org.lfedge.eve.metrics.ZProbeNIMetrics
	(*ZMetricNetworkInstance)(nil),           // 36: org.lfedge.eve.metrics.ZMetricNetworkInstance
	(*ZMetricVolume)(nil),                    // 37: org.lfedge.eve.metrics.ZMetricVolume
	(*ZMetricProcess)(nil),                   // 38: org.lfedge.eve.metrics.ZMetricProcess
	(*ZMetricMsg)(nil),                       // 39: org.lfedge.eve.metrics.ZMetricMsg
	(*NewlogMetric)(nil),                     // 40: org.lfedge.eve.metrics.newlogMetric
	(*LogfileMetrics)(nil),                   // 41: org.lfedge.eve.metrics.logfileMetrics
	(*ZedboxStats)(nil),                      // 42: org.lfedge.eve.metrics.zedboxStats
	(*VlanInfo)(nil),                         // 43: org.lfedge.eve.metrics.vlanInfo
	(*FlowlogMetric)(nil),                    // 44: org.lfedge.eve.metrics.FlowlogMetric
	(*FlowlogCounters)(nil),                  // 45: org.lfedge.eve.metrics.FlowlogCounters
	nil,                                      // 46: org.lfedge.eve.metrics.logMetric.InputSourcesEntry
	(*ZProbeNIMetrics_ZProbeIntfMetric)(nil), // 47: org.lfedge.eve.metrics.ZProbeNIMetrics.ZProbeIntfMetric
	nil,                                      // 48: org.lfedge.eve.metrics.newlogMetric.Top10InputSourcesEntry
	nil,                                      // 49: org.lfedge.eve.metrics.vlanInfo.VlanCountsEntry
	(*timestamp.Timestamp)(nil),              // 50: google.protobuf.Timestamp
}
var file_metrics_metrics_proto_depIdxs = []int32{
	9,  // 0: org.lfedge.eve.metrics.CellularMetric.signal_strength:type_name -> org.lfedge.eve.metrics.CellularSignalStrength
	10, // 1: org.lfedge.eve.metrics.CellularMetric.packet_stats:type_name -> org.lfedge.eve.metrics.CellularPacketStats
	33, // 2: org.lfedge.eve.metrics.CellularPacketStats.rx:type_name -> org.lfedge.eve.metrics.NetworkStats
	33, // 3: org.lfedge.eve.metrics.CellularPacketStats.tx:type_name -> org.lfedge.eve.metrics.NetworkStats
	50, // 4: org.lfedge.eve.metrics.zedcloudMetric.lastFailure:type_name -> google.protobuf.Timestamp
	50, // 5: org.lfedge.eve.metrics.zedcloudMetric.lastSuccess:type_name -> google.protobuf.Timestamp
	12, // 6: org.lfedge.eve.metrics.zedcloudMetric.urlMetrics:type_name -> org.lfedge.eve.metrics.urlcloudMetric
	50, // 7: org.lfedge.eve.metrics.CipherMetric.last_failure:type_name -> google.protobuf.Timestamp
	50, // 8: org.lfedge.eve.metrics.CipherMetric.last_success:type_name -> google.protobuf.Timestamp
	14, // 9: org.lfedge.eve.metrics.CipherMetric.tc:type_name -> org.lfedge.eve.metrics.TypeCounter
	1,  // 10: org.lfedge.eve.metrics.TypeCounter.error_code:type_name -> org.lfedge.eve.metrics.CipherError
	50, // 11: org.lfedge.eve.metrics.appCpuMetric.upTime:type_name -> google.protobuf.Timestamp
	2,  // 12: org.lfedge.eve.metrics.StorageDiskInfo.status:type_name -> org.lfedge.eve.metrics.StorageStatus
	2,  // 13: org.lfedge.eve.metrics.StorageMetric.storage_state:type_name -> org.lfedge.eve.metrics.StorageStatus
	16, // 14: org.lfedge.eve.metrics.StorageMetric.disks:type_name -> org.lfedge.eve.metrics.StorageDiskInfo
	4,  // 15: org.lfedge.eve.metrics.deviceMetric.memory:type_name -> org.lfedge.eve.metrics.memoryMetric
	7,  // 16: org.lfedge.eve.metrics.deviceMetric.network:type_name -> org.lfedge.eve.metrics.networkMetric
	11, // 17: org.lfedge.eve.metrics.deviceMetric.zedcloud:type_name -> org.lfedge.eve.metrics.zedcloudMetric
	22, // 18: org.lfedge.eve.metrics.deviceMetric.disk:type_name -> org.lfedge.eve.metrics.diskMetric
	15, // 19: org.lfedge.eve.metrics.deviceMetric.cpuMetric:type_name -> org.lfedge.eve.metrics.appCpuMetric
	21, // 20: org.lfedge.eve.metrics.deviceMetric.metricItems:type_name -> org.lfedge.eve.metrics.MetricItem
	4,  // 21: org.lfedge.eve.metrics.deviceMetric.systemServicesMemoryMB:type_name -> org.lfedge.eve.metrics.memoryMetric
	25, // 22: org.lfedge.eve.metrics.deviceMetric.log:type_name -> org.lfedge.eve.metrics.logMetric
	13, // 23: org.lfedge.eve.metrics.deviceMetric.cipher:type_name -> org.lfedge.eve.metrics.CipherMetric
	19, // 24: org.lfedge.eve.metrics.deviceMetric.acl:type_name -> org.lfedge.eve.metrics.AclMetric
	40, // 25: org.lfedge.eve.metrics.deviceMetric.newlog:type_name -> org.lfedge.eve.metrics.newlogMetric
	42, // 26: org.lfedge.eve.metrics.deviceMetric.zedbox:type_name -> org.lfedge.eve.metrics.zedboxStats
	6,  // 27: org.lfedge.eve.metrics.deviceMetric.deviceMemory:type_name -> org.lfedge.eve.metrics.DeviceMemoryMetric
	50, // 28: org.lfedge.eve.metrics.deviceMetric.last_received_config:type_name -> google.protobuf.Timestamp
	50, // 29: org.lfedge.eve.metrics.deviceMetric.last_processed_config:type_name -> google.protobuf.Timestamp
	8,  // 30: org.lfedge.eve.metrics.deviceMetric.cellular:type_name -> org.lfedge.eve.metrics.CellularMetric
	44, // 31: org.lfedge.eve.metrics.deviceMetric.flowlog:type_name -> org.lfedge.eve.metrics.FlowlogMetric
	17, // 32: org.lfedge.eve.metrics.deviceMetric.storage_metrics:type_name -> org.lfedge.eve.metrics.StorageMetric
	15, // 33: org.lfedge.eve.metrics.appContainerMetric.cpu:type_name -> org.lfedge.eve.metrics.appCpuMetric
	4,  // 34: org.lfedge.eve.metrics.appContainerMetric.memory:type_name -> org.lfedge.eve.metrics.memoryMetric
	7,  // 35: org.lfedge.eve.metrics.appContainerMetric.network:type_name -> org.lfedge.eve.metrics.networkMetric
	22, // 36: org.lfedge.eve.metrics.appContainerMetric.disk:type_name -> org.lfedge.eve.metrics.diskMetric
	5,  // 37: org.lfedge.eve.metrics.appContainerMetric.appContainerMemory:type_name -> org.lfedge.eve.metrics.AppMemoryMetric
	3,  // 38: org.lfedge.eve.metrics.MetricItem.type:type_name -> org.lfedge.eve.metrics.MetricItemType
	15, // 39: org.lfedge.eve.metrics.appMetric.cpu:type_name -> org.lfedge.eve.metrics.appCpuMetric
	4,  // 40: org.lfedge.eve.metrics.appMetric.memory:type_name -> org.lfedge.eve.metrics.memoryMetric
	7,  // 41: org.lfedge.eve.metrics.appMetric.network:type_name -> org.lfedge.eve.metrics.networkMetric
	23, // 42: org.lfedge.eve.metrics.appMetric.disk:type_name -> org.lfedge.eve.metrics.appDiskMetric
	20, // 43: org.lfedge.eve.metrics.appMetric.container:type_name -> org.lfedge.eve.metrics.appContainerMetric
	5,  // 44: org.lfedge.eve.metrics.appMetric.appMemory:type_name -> org.lfedge.eve.metrics.AppMemoryMetric
	50, // 45: org.lfedge.eve.metrics.logMetric.lastDeviceBundleSendTime:type_name -> google.protobuf.Timestamp
	50, // 46: org.lfedge.eve.metrics.logMetric.lastAppBundleSendTime:type_name -> google.protobuf.Timestamp
	50, // 47: org.lfedge.eve.metrics.logMetric.lastLogDeferTime:type_name -> google.protobuf.Timestamp
	46, // 48: org.lfedge.eve.metrics.logMetric.input_sources:type_name -> org.lfedge.eve.metrics.logMetric.InputSourcesEntry
	26, // 49: org.lfedge.eve.metrics.ZMetricConn.InPkts:type_name -> org.lfedge.eve.metrics.PktStat
	26, // 50: org.lfedge.eve.metrics.ZMetricConn.OutPkts:type_name -> org.lfedge.eve.metrics.PktStat
	26, // 51: org.lfedge.eve.metrics.ZMetricConn.ErrPkts:type_name -> org.lfedge.eve.metrics.PktStat
	26, // 52: org.lfedge.eve.metrics.ZMetricConn.CarierErrPkts:type_name -> org.lfedge.eve.metrics.PktStat
	27, // 53: org.lfedge.eve.metrics.ZMetricVpn.ConnStat:type_name -> org.lfedge.eve.metrics.ZMetricConn
	27, // 54: org.lfedge.eve.metrics.ZMetricVpn.IkeStat:type_name -> org.lfedge.eve.metrics.ZMetricConn
	27, // 55: org.lfedge.eve.metrics.ZMetricVpn.NatTStat:type_name -> org.lfedge.eve.metrics.ZMetricConn
	27, // 56: org.lfedge.eve.metrics.ZMetricVpn.EspStat:type_name -> org.lfedge.eve.metrics.ZMetricConn
	30, // 57: org.lfedge.eve.metrics.ZMetricFlowEndPoint.link:type_name -> org.lfedge.eve.metrics.ZMetricFlowLink
	26, // 58: org.lfedge.eve.metrics.ZMetricFlowEndPoint.stats:type_name -> org.lfedge.eve.metrics.PktStat
	31, // 59: org.lfedge.eve.metrics.ZMetricFlow.lEndPoint:type_name -> org.lfedge.eve.metrics.ZMetricFlowEndPoint
	31, // 60: org.lfedge.eve.metrics.ZMetricFlow.rEndPoint:type_name -> org.lfedge.eve.metrics.ZMetricFlowEndPoint
	33, // 61: org.lfedge.eve.metrics.ZMetricNetworkStats.rx:type_name -> org.lfedge.eve.metrics.NetworkStats
	33, // 62: org.lfedge.eve.metrics.ZMetricNetworkStats.tx:type_name -> org.lfedge.eve.metrics.NetworkStats
	47, // 63: org.lfedge.eve.metrics.ZProbeNIMetrics.intfMetric:type_name -> org.lfedge.eve.metrics.ZProbeNIMetrics.ZProbeIntfMetric
	7,  // 64: org.lfedge.eve.metrics.ZMetricNetworkInstance.network:type_name -> org.lfedge.eve.metrics.networkMetric
	35, // 65: org.lfedge.eve.metrics.ZMetricNetworkInstance.probeMetric:type_name -> org.lfedge.eve.metrics.ZProbeNIMetrics
	28, // 66: org.lfedge.eve.metrics.ZMetricNetworkInstance.vpnm:type_name -> org.lfedge.eve.metrics.ZMetricVpn
	29, // 67: org.lfedge.eve.metrics.ZMetricNetworkInstance.nonem:type_name -> org.lfedge.eve.metrics.ZMetricNone
	32, // 68: org.lfedge.eve.metrics.ZMetricNetworkInstance.flowStats:type_name -> org.lfedge.eve.metrics.ZMetricFlow
	34, // 69: org.lfedge.eve.metrics.ZMetricNetworkInstance.networkStats:type_name -> org.lfedge.eve.metrics.ZMetricNetworkStats
	43, // 70: org.lfedge.eve.metrics.ZMetricNetworkInstance.vlan_info:type_name -> org.lfedge.eve.metrics.vlanInfo
	50, // 71: org.lfedge.eve.metrics.ZMetricProcess.create_time:type_name -> google.protobuf.Timestamp
	50, // 72: org.lfedge.eve.metrics.ZMetricMsg.atTimeStamp:type_name -> google.protobuf.Timestamp
	18, // 73: org.lfedge.eve.metrics.ZMetricMsg.dm:type_name -> org.lfedge.eve.metrics.deviceMetric
	24, // 74: org.lfedge.eve.metrics.ZMetricMsg.am:type_name -> org.lfedge.eve.metrics.appMetric
	36, // 75: org.lfedge.eve.metrics.ZMetricMsg.nm:type_name -> org.lfedge.eve.metrics.ZMetricNetworkInstance
	37, // 76: org.lfedge.eve.metrics.ZMetricMsg.vm:type_name -> org.lfedge.eve.metrics.ZMetricVolume
	38, // 77: org.lfedge.eve.metrics.ZMetricMsg.pr:type_name -> org.lfedge.eve.metrics.ZMetricProcess
	50, // 78: org.lfedge.eve.metrics.newlogMetric.failSentStartTime:type_name -> google.protobuf.Timestamp
	41, // 79: org.lfedge.eve.metrics.newlogMetric.deviceMetrics:type_name -> org.lfedge.eve.metrics.logfileMetrics
	41, // 80: org.lfedge.eve.metrics.newlogMetric.appMetrics:type_name -> org.lfedge.eve.metrics.logfileMetrics
	48, // 81: org.lfedge.eve.metrics.newlogMetric.top10_input_sources:type_name -> org.lfedge.eve.metrics.newlogMetric.Top10InputSourcesEntry
	50, // 82: org.lfedge.eve.metrics.logfileMetrics.recentGzipFileTime:type_name -> google.protobuf.Timestamp
	50, // 83: org.lfedge.eve.metrics.logfileMetrics.lastGzipFileSendTime:type_name -> google.protobuf.Timestamp
	49, // 84: org.lfedge.eve.metrics.vlanInfo.vlan_counts:type_name -> org.lfedge.eve.metrics.vlanInfo.VlanCountsEntry
	45, // 85: org.lfedge.eve.metrics.FlowlogMetric.messages:type_name -> org.lfedge.eve.metrics.FlowlogCounters
	45, // 86: org.lfedge.eve.metrics.FlowlogMetric.flows:type_name -> org.lfedge.eve.metrics.FlowlogCounters
	45, // 87: org.lfedge.eve.metrics.FlowlogMetric.dns_requests:type_name -> org.lfedge.eve.metrics.FlowlogCounters
	88, // [88:88] is the sub-list for method output_type
	88, // [88:88] is the sub-list for method input_type
	88, // [88:88] is the sub-list for extension type_name
	88, // [88:88] is the sub-list for extension extendee
	0,  // [0:88] is the sub-list for field type_name
}

func init() { file_metrics_metrics_proto_init() }
func file_metrics_metrics_proto_init() {
	if File_metrics_metrics_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_metrics_metrics_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MemoryMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppMemoryMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeviceMemoryMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NetworkMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CellularMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CellularSignalStrength); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CellularPacketStats); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZedcloudMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UrlcloudMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CipherMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TypeCounter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppCpuMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StorageDiskInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StorageMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DeviceMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AclMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppContainerMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MetricItem); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DiskMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppDiskMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AppMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LogMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PktStat); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricConn); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricVpn); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricNone); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricFlowLink); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricFlowEndPoint); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricFlow); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NetworkStats); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricNetworkStats); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZProbeNIMetrics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricNetworkInstance); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricVolume); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricProcess); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZMetricMsg); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NewlogMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LogfileMetrics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZedboxStats); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*VlanInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FlowlogMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FlowlogCounters); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_metrics_metrics_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZProbeNIMetrics_ZProbeIntfMetric); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_metrics_metrics_proto_msgTypes[17].OneofWrappers = []interface{}{
		(*MetricItem_BoolValue)(nil),
		(*MetricItem_Uint32Value)(nil),
		(*MetricItem_Uint64Value)(nil),
		(*MetricItem_FloatValue)(nil),
		(*MetricItem_StringValue)(nil),
	}
	file_metrics_metrics_proto_msgTypes[26].OneofWrappers = []interface{}{
		(*ZMetricFlowLink_SubNet)(nil),
	}
	file_metrics_metrics_proto_msgTypes[27].OneofWrappers = []interface{}{
		(*ZMetricFlowEndPoint_IpAddr)(nil),
	}
	file_metrics_metrics_proto_msgTypes[32].OneofWrappers = []interface{}{
		(*ZMetricNetworkInstance_Vpnm)(nil),
		(*ZMetricNetworkInstance_Nonem)(nil),
	}
	file_metrics_metrics_proto_msgTypes[35].OneofWrappers = []interface{}{
		(*ZMetricMsg_Dm)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_metrics_metrics_proto_rawDesc,
			NumEnums:      4,
			NumMessages:   46,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_metrics_metrics_proto_goTypes,
		DependencyIndexes: file_metrics_metrics_proto_depIdxs,
		EnumInfos:         file_metrics_metrics_proto_enumTypes,
		MessageInfos:      file_metrics_metrics_proto_msgTypes,
	}.Build()
	File_metrics_metrics_proto = out.File
	file_metrics_metrics_proto_rawDesc = nil
	file_metrics_metrics_proto_goTypes = nil
	file_metrics_metrics_proto_depIdxs = nil
}
