// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.28.1
// 	protoc        v3.21.9
// source: backend/operation/statistic.proto

package operationPb

import (
	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)
)

// SearchFormulaEstimateRequest 配方评估
type SearchFormulaEstimateRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartTime  string           `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`     // 开始时间
	EndTime    string           `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`           // 结束时间
	SearchType int32            `protobuf:"varint,3,opt,name=search_type,json=searchType,proto3" json:"search_type,omitempty"` // 查询方式  0 安照配方 1 按照栏舍
	ApiName    string           `protobuf:"bytes,4,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`           // 牧场端接口标识名称
	PastureId  int32            `protobuf:"varint,5,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"`    // 牧场id
	TemplateId int32            `protobuf:"varint,6,opt,name=template_id,json=templateId,proto3" json:"template_id,omitempty"` // 配方模板id
	BarnId     int32            `protobuf:"varint,7,opt,name=barn_id,json=barnId,proto3" json:"barn_id,omitempty"`             // 栏舍id
	Pagination *PaginationModel `protobuf:"bytes,8,opt,name=pagination,proto3" json:"pagination,omitempty"`                    // 分页
}

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

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

func (*SearchFormulaEstimateRequest) ProtoMessage() {}

func (x *SearchFormulaEstimateRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 SearchFormulaEstimateRequest.ProtoReflect.Descriptor instead.
func (*SearchFormulaEstimateRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{0}
}

func (x *SearchFormulaEstimateRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *SearchFormulaEstimateRequest) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *SearchFormulaEstimateRequest) GetSearchType() int32 {
	if x != nil {
		return x.SearchType
	}
	return 0
}

func (x *SearchFormulaEstimateRequest) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *SearchFormulaEstimateRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *SearchFormulaEstimateRequest) GetTemplateId() int32 {
	if x != nil {
		return x.TemplateId
	}
	return 0
}

func (x *SearchFormulaEstimateRequest) GetBarnId() int32 {
	if x != nil {
		return x.BarnId
	}
	return 0
}

func (x *SearchFormulaEstimateRequest) GetPagination() *PaginationModel {
	if x != nil {
		return x.Pagination
	}
	return nil
}

// SearchInventoryStatisticsRequest 库存管理-库存统计
type SearchInventoryStatisticsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartTime  string           `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`  // 开始时间
	EndTime    string           `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`        // 结束时间
	ApiName    string           `protobuf:"bytes,3,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`        // 牧场端接口标识名称
	FeedName   string           `protobuf:"bytes,4,opt,name=feed_name,json=feedName,proto3" json:"feed_name,omitempty"`     // 饲料名称
	PastureId  int32            `protobuf:"varint,5,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"` // 牧场id
	Pagination *PaginationModel `protobuf:"bytes,6,opt,name=pagination,proto3" json:"pagination,omitempty"`                 // 分页
}

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

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

func (*SearchInventoryStatisticsRequest) ProtoMessage() {}

func (x *SearchInventoryStatisticsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 SearchInventoryStatisticsRequest.ProtoReflect.Descriptor instead.
func (*SearchInventoryStatisticsRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{1}
}

func (x *SearchInventoryStatisticsRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *SearchInventoryStatisticsRequest) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *SearchInventoryStatisticsRequest) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *SearchInventoryStatisticsRequest) GetFeedName() string {
	if x != nil {
		return x.FeedName
	}
	return ""
}

func (x *SearchInventoryStatisticsRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *SearchInventoryStatisticsRequest) GetPagination() *PaginationModel {
	if x != nil {
		return x.Pagination
	}
	return nil
}

// SearchUserMaterialsStatisticsRequest 库存管理-用料分析
type SearchUserMaterialsStatisticsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartTime  string           `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`     // 开始时间
	EndTime    string           `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`           // 结束时间
	ApiName    string           `protobuf:"bytes,3,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`           // 牧场端接口标识名称
	PastureId  int32            `protobuf:"varint,4,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"`    // 牧场id
	ErrorCheck int32            `protobuf:"varint,5,opt,name=error_check,json=errorCheck,proto3" json:"error_check,omitempty"` // 误差是否选中 0 未选中 1 选中
	TypeCheck  int32            `protobuf:"varint,6,opt,name=type_check,json=typeCheck,proto3" json:"type_check,omitempty"`    // 返回实际或理论 1 理论 2 实际
	FeedName   string           `protobuf:"bytes,7,opt,name=feed_name,json=feedName,proto3" json:"feed_name,omitempty"`        // 名称
	Pagination *PaginationModel `protobuf:"bytes,8,opt,name=pagination,proto3" json:"pagination,omitempty"`                    // 分页
}

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

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

func (*SearchUserMaterialsStatisticsRequest) ProtoMessage() {}

func (x *SearchUserMaterialsStatisticsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 SearchUserMaterialsStatisticsRequest.ProtoReflect.Descriptor instead.
func (*SearchUserMaterialsStatisticsRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{2}
}

func (x *SearchUserMaterialsStatisticsRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *SearchUserMaterialsStatisticsRequest) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *SearchUserMaterialsStatisticsRequest) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *SearchUserMaterialsStatisticsRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *SearchUserMaterialsStatisticsRequest) GetErrorCheck() int32 {
	if x != nil {
		return x.ErrorCheck
	}
	return 0
}

func (x *SearchUserMaterialsStatisticsRequest) GetTypeCheck() int32 {
	if x != nil {
		return x.TypeCheck
	}
	return 0
}

func (x *SearchUserMaterialsStatisticsRequest) GetFeedName() string {
	if x != nil {
		return x.FeedName
	}
	return ""
}

func (x *SearchUserMaterialsStatisticsRequest) GetPagination() *PaginationModel {
	if x != nil {
		return x.Pagination
	}
	return nil
}

// SearchPriceStatisticsRequest 库存管理-价格分析
type SearchPriceStatisticsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartTime  string           `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`  // 开始时间
	EndTime    string           `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`        // 结束时间
	ApiName    string           `protobuf:"bytes,3,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`        // 牧场端接口标识名称
	PastureId  int32            `protobuf:"varint,4,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"` // 牧场id
	FeedName   string           `protobuf:"bytes,5,opt,name=feed_name,json=feedName,proto3" json:"feed_name,omitempty"`     // 名称
	Pagination *PaginationModel `protobuf:"bytes,6,opt,name=pagination,proto3" json:"pagination,omitempty"`                 // 分页
}

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

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

func (*SearchPriceStatisticsRequest) ProtoMessage() {}

func (x *SearchPriceStatisticsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 SearchPriceStatisticsRequest.ProtoReflect.Descriptor instead.
func (*SearchPriceStatisticsRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{3}
}

func (x *SearchPriceStatisticsRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *SearchPriceStatisticsRequest) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *SearchPriceStatisticsRequest) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *SearchPriceStatisticsRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *SearchPriceStatisticsRequest) GetFeedName() string {
	if x != nil {
		return x.FeedName
	}
	return ""
}

func (x *SearchPriceStatisticsRequest) GetPagination() *PaginationModel {
	if x != nil {
		return x.Pagination
	}
	return nil
}

// SearchFeedStatisticsRequest 饲喂效率-效率统计
type SearchFeedStatisticsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartTime          string           `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`                              // 开始时间
	ApiName            string           `protobuf:"bytes,2,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`                                    // 牧场端接口标识名称
	PastureId          []int32          `protobuf:"varint,3,rep,packed,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"`                      // 牧场id
	FormulaTemplate    string           `protobuf:"bytes,4,opt,name=formula_template,json=formulaTemplate,proto3" json:"formula_template,omitempty"`            // 配方模板名称
	BarnName           string           `protobuf:"bytes,5,opt,name=barn_name,json=barnName,proto3" json:"barn_name,omitempty"`                                 // 栏舍名称
	CattleCategoryName string           `protobuf:"bytes,6,opt,name=cattle_category_name,json=cattleCategoryName,proto3" json:"cattle_category_name,omitempty"` // 畜牧类别名称
	CattleCategoryId   int32            `protobuf:"varint,7,opt,name=cattle_category_id,json=cattleCategoryId,proto3" json:"cattle_category_id,omitempty"`      // 畜牧类别id
	ClassNumber        int32            `protobuf:"varint,8,opt,name=class_number,json=classNumber,proto3" json:"class_number,omitempty"`                       // 班次
	Pagination         *PaginationModel `protobuf:"bytes,9,opt,name=pagination,proto3" json:"pagination,omitempty"`                                             // 分页
	EndTime            string           `protobuf:"bytes,10,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`                                   // 结束时间
}

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

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

func (*SearchFeedStatisticsRequest) ProtoMessage() {}

func (x *SearchFeedStatisticsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 SearchFeedStatisticsRequest.ProtoReflect.Descriptor instead.
func (*SearchFeedStatisticsRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{4}
}

func (x *SearchFeedStatisticsRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *SearchFeedStatisticsRequest) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *SearchFeedStatisticsRequest) GetPastureId() []int32 {
	if x != nil {
		return x.PastureId
	}
	return nil
}

func (x *SearchFeedStatisticsRequest) GetFormulaTemplate() string {
	if x != nil {
		return x.FormulaTemplate
	}
	return ""
}

func (x *SearchFeedStatisticsRequest) GetBarnName() string {
	if x != nil {
		return x.BarnName
	}
	return ""
}

func (x *SearchFeedStatisticsRequest) GetCattleCategoryName() string {
	if x != nil {
		return x.CattleCategoryName
	}
	return ""
}

func (x *SearchFeedStatisticsRequest) GetCattleCategoryId() int32 {
	if x != nil {
		return x.CattleCategoryId
	}
	return 0
}

func (x *SearchFeedStatisticsRequest) GetClassNumber() int32 {
	if x != nil {
		return x.ClassNumber
	}
	return 0
}

func (x *SearchFeedStatisticsRequest) GetPagination() *PaginationModel {
	if x != nil {
		return x.Pagination
	}
	return nil
}

func (x *SearchFeedStatisticsRequest) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

// FeedChartStatisticsRequest 饲喂效率chart图表
type FeedChartStatisticsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartTime string `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`  // 开始时间
	EndTime   string `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`        // 结束时间
	PastureId int32  `protobuf:"varint,3,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"` // 牧场id
	Status    int32  `protobuf:"varint,4,opt,name=status,proto3" json:"status,omitempty"`
	ApiType   string `protobuf:"bytes,5,opt,name=api_type,json=apiType,proto3" json:"api_type,omitempty"` // mr 泌乳牛干物质采食量 sl 牛栏剩料率 hl 混料时间统计 zh 转化率 cbft 成本分析
}

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

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

func (*FeedChartStatisticsRequest) ProtoMessage() {}

func (x *FeedChartStatisticsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 FeedChartStatisticsRequest.ProtoReflect.Descriptor instead.
func (*FeedChartStatisticsRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{5}
}

func (x *FeedChartStatisticsRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *FeedChartStatisticsRequest) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *FeedChartStatisticsRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *FeedChartStatisticsRequest) GetStatus() int32 {
	if x != nil {
		return x.Status
	}
	return 0
}

func (x *FeedChartStatisticsRequest) GetApiType() string {
	if x != nil {
		return x.ApiType
	}
	return ""
}

// CowsAnalysisRequest 饲喂效率-牛群评估
type CowsAnalysisRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartTime  string           `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`  // 开始时间
	ApiName    string           `protobuf:"bytes,2,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`        // 牧场端接口标识名称
	PastureId  int32            `protobuf:"varint,3,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"` // 牧场id
	Pagination *PaginationModel `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"`                 // 分页
}

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

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

func (*CowsAnalysisRequest) ProtoMessage() {}

func (x *CowsAnalysisRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 CowsAnalysisRequest.ProtoReflect.Descriptor instead.
func (*CowsAnalysisRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{6}
}

func (x *CowsAnalysisRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *CowsAnalysisRequest) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *CowsAnalysisRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *CowsAnalysisRequest) GetPagination() *PaginationModel {
	if x != nil {
		return x.Pagination
	}
	return nil
}

// AccuracyAggStatisticsRequest 准确性分析-汇总统计
type AccuracyAggStatisticsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartTime string `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`  // 开始时间
	EndTime   string `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`        // 结束时间
	PastureId int32  `protobuf:"varint,3,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"` // 牧场id
	Fname     string `protobuf:"bytes,4,opt,name=fname,proto3" json:"fname,omitempty"`                           // 查询名称
	Sort      string `protobuf:"bytes,5,opt,name=sort,proto3" json:"sort,omitempty"`
	Status    string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"`
	Genre     int32  `protobuf:"varint,7,opt,name=genre,proto3" json:"genre,omitempty"`
	Isdate    int32  `protobuf:"varint,8,opt,name=isdate,proto3" json:"isdate,omitempty"`
	Hlwc1     int32  `protobuf:"varint,9,opt,name=hlwc1,proto3" json:"hlwc1,omitempty"`
	Hlwc2     int32  `protobuf:"varint,10,opt,name=hlwc2,proto3" json:"hlwc2,omitempty"`
	Hlzq1     int32  `protobuf:"varint,11,opt,name=hlzq1,proto3" json:"hlzq1,omitempty"`
	Hlzq2     int32  `protobuf:"varint,12,opt,name=hlzq2,proto3" json:"hlzq2,omitempty"`
	Hlzql1    int32  `protobuf:"varint,13,opt,name=hlzql1,proto3" json:"hlzql1,omitempty"`
	Hlzql2    int32  `protobuf:"varint,14,opt,name=hlzql2,proto3" json:"hlzql2,omitempty"`
	Slwc1     int32  `protobuf:"varint,15,opt,name=slwc1,proto3" json:"slwc1,omitempty"`
	Slwc2     int32  `protobuf:"varint,16,opt,name=slwc2,proto3" json:"slwc2,omitempty"`
	Slzq1     int32  `protobuf:"varint,17,opt,name=slzq1,proto3" json:"slzq1,omitempty"`
	Slzq2     int32  `protobuf:"varint,18,opt,name=slzq2,proto3" json:"slzq2,omitempty"`
	Slzql1    int32  `protobuf:"varint,19,opt,name=slzql1,proto3" json:"slzql1,omitempty"`
	Slzql2    int32  `protobuf:"varint,20,opt,name=slzql2,proto3" json:"slzql2,omitempty"`
	Projname  string `protobuf:"bytes,21,opt,name=projname,proto3" json:"projname,omitempty"`
	Times     string `protobuf:"bytes,22,opt,name=Times,proto3" json:"Times,omitempty"`
	IsError   bool   `protobuf:"varint,23,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`
}

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

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

func (*AccuracyAggStatisticsRequest) ProtoMessage() {}

func (x *AccuracyAggStatisticsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 AccuracyAggStatisticsRequest.ProtoReflect.Descriptor instead.
func (*AccuracyAggStatisticsRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{7}
}

func (x *AccuracyAggStatisticsRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *AccuracyAggStatisticsRequest) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *AccuracyAggStatisticsRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetFname() string {
	if x != nil {
		return x.Fname
	}
	return ""
}

func (x *AccuracyAggStatisticsRequest) GetSort() string {
	if x != nil {
		return x.Sort
	}
	return ""
}

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

func (x *AccuracyAggStatisticsRequest) GetGenre() int32 {
	if x != nil {
		return x.Genre
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetIsdate() int32 {
	if x != nil {
		return x.Isdate
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetHlwc1() int32 {
	if x != nil {
		return x.Hlwc1
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetHlwc2() int32 {
	if x != nil {
		return x.Hlwc2
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetHlzq1() int32 {
	if x != nil {
		return x.Hlzq1
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetHlzq2() int32 {
	if x != nil {
		return x.Hlzq2
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetHlzql1() int32 {
	if x != nil {
		return x.Hlzql1
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetHlzql2() int32 {
	if x != nil {
		return x.Hlzql2
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetSlwc1() int32 {
	if x != nil {
		return x.Slwc1
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetSlwc2() int32 {
	if x != nil {
		return x.Slwc2
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetSlzq1() int32 {
	if x != nil {
		return x.Slzq1
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetSlzq2() int32 {
	if x != nil {
		return x.Slzq2
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetSlzql1() int32 {
	if x != nil {
		return x.Slzql1
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetSlzql2() int32 {
	if x != nil {
		return x.Slzql2
	}
	return 0
}

func (x *AccuracyAggStatisticsRequest) GetProjname() string {
	if x != nil {
		return x.Projname
	}
	return ""
}

func (x *AccuracyAggStatisticsRequest) GetTimes() string {
	if x != nil {
		return x.Times
	}
	return ""
}

func (x *AccuracyAggStatisticsRequest) GetIsError() bool {
	if x != nil {
		return x.IsError
	}
	return false
}

// MixFeedStatisticsRequest 准确性分析-混料统计
type MixFeedStatisticsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartTime       string           `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`                   // 开始时间
	EndTime         string           `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`                         // 结束时间
	ApiName         string           `protobuf:"bytes,3,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`                         // 牧场端接口标识名称
	PastureId       int32            `protobuf:"varint,4,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"`                  // 牧场id
	EquipmentName   string           `protobuf:"bytes,5,opt,name=equipment_name,json=equipmentName,proto3" json:"equipment_name,omitempty"`       // 设备名称
	TrainNumber     string           `protobuf:"bytes,6,opt,name=train_number,json=trainNumber,proto3" json:"train_number,omitempty"`             // 车次
	ClassNumber     int32            `protobuf:"varint,7,opt,name=class_number,json=classNumber,proto3" json:"class_number,omitempty"`            // 班次
	FormulationName string           `protobuf:"bytes,8,opt,name=formulation_name,json=formulationName,proto3" json:"formulation_name,omitempty"` // 配方名称
	JumpType        int32            `protobuf:"varint,9,opt,name=jump_type,json=jumpType,proto3" json:"jump_type,omitempty"`                     // 跳转方式 0 手动跳转 1 自动跳转
	Hlwc1           int32            `protobuf:"varint,10,opt,name=hlwc1,proto3" json:"hlwc1,omitempty"`                                          // 混料误差值1
	Hlwc2           int32            `protobuf:"varint,11,opt,name=hlwc2,proto3" json:"hlwc2,omitempty"`                                          // 混料误差值2
	Hlzq1           int32            `protobuf:"varint,12,opt,name=hlzq1,proto3" json:"hlzq1,omitempty"`                                          // 混料准确率1
	Hlzq2           int32            `protobuf:"varint,13,opt,name=hlzq2,proto3" json:"hlzq2,omitempty"`                                          // 混料准确率2
	Hlzql1          int32            `protobuf:"varint,14,opt,name=hlzql1,proto3" json:"hlzql1,omitempty"`                                        // 混料正确率1
	Hlzql2          int32            `protobuf:"varint,15,opt,name=hlzql2,proto3" json:"hlzql2,omitempty"`                                        // 混料正确率2
	IsError         bool             `protobuf:"varint,16,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`                       // 只看超出预设值数据
	ButtonType      string           `protobuf:"bytes,17,opt,name=button_type,json=buttonType,proto3" json:"button_type,omitempty"`
	IsUse           string           `protobuf:"bytes,18,opt,name=is_use,json=isUse,proto3" json:"is_use,omitempty"`
	Pagination      *PaginationModel `protobuf:"bytes,19,opt,name=pagination,proto3" json:"pagination,omitempty"` // 分页
}

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

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

func (*MixFeedStatisticsRequest) ProtoMessage() {}

func (x *MixFeedStatisticsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 MixFeedStatisticsRequest.ProtoReflect.Descriptor instead.
func (*MixFeedStatisticsRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{8}
}

func (x *MixFeedStatisticsRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *MixFeedStatisticsRequest) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *MixFeedStatisticsRequest) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *MixFeedStatisticsRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *MixFeedStatisticsRequest) GetEquipmentName() string {
	if x != nil {
		return x.EquipmentName
	}
	return ""
}

func (x *MixFeedStatisticsRequest) GetTrainNumber() string {
	if x != nil {
		return x.TrainNumber
	}
	return ""
}

func (x *MixFeedStatisticsRequest) GetClassNumber() int32 {
	if x != nil {
		return x.ClassNumber
	}
	return 0
}

func (x *MixFeedStatisticsRequest) GetFormulationName() string {
	if x != nil {
		return x.FormulationName
	}
	return ""
}

func (x *MixFeedStatisticsRequest) GetJumpType() int32 {
	if x != nil {
		return x.JumpType
	}
	return 0
}

func (x *MixFeedStatisticsRequest) GetHlwc1() int32 {
	if x != nil {
		return x.Hlwc1
	}
	return 0
}

func (x *MixFeedStatisticsRequest) GetHlwc2() int32 {
	if x != nil {
		return x.Hlwc2
	}
	return 0
}

func (x *MixFeedStatisticsRequest) GetHlzq1() int32 {
	if x != nil {
		return x.Hlzq1
	}
	return 0
}

func (x *MixFeedStatisticsRequest) GetHlzq2() int32 {
	if x != nil {
		return x.Hlzq2
	}
	return 0
}

func (x *MixFeedStatisticsRequest) GetHlzql1() int32 {
	if x != nil {
		return x.Hlzql1
	}
	return 0
}

func (x *MixFeedStatisticsRequest) GetHlzql2() int32 {
	if x != nil {
		return x.Hlzql2
	}
	return 0
}

func (x *MixFeedStatisticsRequest) GetIsError() bool {
	if x != nil {
		return x.IsError
	}
	return false
}

func (x *MixFeedStatisticsRequest) GetButtonType() string {
	if x != nil {
		return x.ButtonType
	}
	return ""
}

func (x *MixFeedStatisticsRequest) GetIsUse() string {
	if x != nil {
		return x.IsUse
	}
	return ""
}

func (x *MixFeedStatisticsRequest) GetPagination() *PaginationModel {
	if x != nil {
		return x.Pagination
	}
	return nil
}

// SprinkleStatisticsRequest 准确性分析-撒料统计
type SprinkleStatisticsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartTime       string           `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`                   // 开始时间
	EndTime         string           `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`                         // 结束时间
	ApiName         string           `protobuf:"bytes,3,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`                         // 牧场端接口标识名称
	PastureId       int32            `protobuf:"varint,4,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"`                  // 牧场id
	EquipmentName   string           `protobuf:"bytes,5,opt,name=equipment_name,json=equipmentName,proto3" json:"equipment_name,omitempty"`       // tmr设备名称
	TrainNumber     string           `protobuf:"bytes,6,opt,name=train_number,json=trainNumber,proto3" json:"train_number,omitempty"`             // 车次
	ClassNumber     int32            `protobuf:"varint,7,opt,name=class_number,json=classNumber,proto3" json:"class_number,omitempty"`            // 班次
	FormulationName string           `protobuf:"bytes,8,opt,name=formulation_name,json=formulationName,proto3" json:"formulation_name,omitempty"` // 配方名称
	BarnName        string           `protobuf:"bytes,9,opt,name=barn_name,json=barnName,proto3" json:"barn_name,omitempty"`                      // 栏舍名称
	JumpType        int32            `protobuf:"varint,10,opt,name=jump_type,json=jumpType,proto3" json:"jump_type,omitempty"`                    // 跳转方式 0 手动跳转 1 自动跳转
	Slwc1           int32            `protobuf:"varint,11,opt,name=slwc1,proto3" json:"slwc1,omitempty"`                                          // 撒料误差值1
	Slwc2           int32            `protobuf:"varint,12,opt,name=slwc2,proto3" json:"slwc2,omitempty"`                                          // 撒料误差值2
	Slzq1           int32            `protobuf:"varint,13,opt,name=slzq1,proto3" json:"slzq1,omitempty"`                                          // 撒料准确率1
	Slzq2           int32            `protobuf:"varint,14,opt,name=slzq2,proto3" json:"slzq2,omitempty"`                                          // 撒料准确率2
	Slzql1          int32            `protobuf:"varint,15,opt,name=slzql1,proto3" json:"slzql1,omitempty"`                                        // 撒料正确率1
	Slzql2          int32            `protobuf:"varint,16,opt,name=slzql2,proto3" json:"slzql2,omitempty"`                                        // 撒料正确率2
	IsError         bool             `protobuf:"varint,17,opt,name=is_error,json=isError,proto3" json:"is_error,omitempty"`                       // 只看超出预设值数据
	ButtonType      string           `protobuf:"bytes,18,opt,name=button_type,json=buttonType,proto3" json:"button_type,omitempty"`
	IsUse           string           `protobuf:"bytes,19,opt,name=is_use,json=isUse,proto3" json:"is_use,omitempty"`
	Pagination      *PaginationModel `protobuf:"bytes,20,opt,name=pagination,proto3" json:"pagination,omitempty"` // 分页
}

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

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

func (*SprinkleStatisticsRequest) ProtoMessage() {}

func (x *SprinkleStatisticsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 SprinkleStatisticsRequest.ProtoReflect.Descriptor instead.
func (*SprinkleStatisticsRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{9}
}

func (x *SprinkleStatisticsRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *SprinkleStatisticsRequest) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *SprinkleStatisticsRequest) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *SprinkleStatisticsRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *SprinkleStatisticsRequest) GetEquipmentName() string {
	if x != nil {
		return x.EquipmentName
	}
	return ""
}

func (x *SprinkleStatisticsRequest) GetTrainNumber() string {
	if x != nil {
		return x.TrainNumber
	}
	return ""
}

func (x *SprinkleStatisticsRequest) GetClassNumber() int32 {
	if x != nil {
		return x.ClassNumber
	}
	return 0
}

func (x *SprinkleStatisticsRequest) GetFormulationName() string {
	if x != nil {
		return x.FormulationName
	}
	return ""
}

func (x *SprinkleStatisticsRequest) GetBarnName() string {
	if x != nil {
		return x.BarnName
	}
	return ""
}

func (x *SprinkleStatisticsRequest) GetJumpType() int32 {
	if x != nil {
		return x.JumpType
	}
	return 0
}

func (x *SprinkleStatisticsRequest) GetSlwc1() int32 {
	if x != nil {
		return x.Slwc1
	}
	return 0
}

func (x *SprinkleStatisticsRequest) GetSlwc2() int32 {
	if x != nil {
		return x.Slwc2
	}
	return 0
}

func (x *SprinkleStatisticsRequest) GetSlzq1() int32 {
	if x != nil {
		return x.Slzq1
	}
	return 0
}

func (x *SprinkleStatisticsRequest) GetSlzq2() int32 {
	if x != nil {
		return x.Slzq2
	}
	return 0
}

func (x *SprinkleStatisticsRequest) GetSlzql1() int32 {
	if x != nil {
		return x.Slzql1
	}
	return 0
}

func (x *SprinkleStatisticsRequest) GetSlzql2() int32 {
	if x != nil {
		return x.Slzql2
	}
	return 0
}

func (x *SprinkleStatisticsRequest) GetIsError() bool {
	if x != nil {
		return x.IsError
	}
	return false
}

func (x *SprinkleStatisticsRequest) GetButtonType() string {
	if x != nil {
		return x.ButtonType
	}
	return ""
}

func (x *SprinkleStatisticsRequest) GetIsUse() string {
	if x != nil {
		return x.IsUse
	}
	return ""
}

func (x *SprinkleStatisticsRequest) GetPagination() *PaginationModel {
	if x != nil {
		return x.Pagination
	}
	return nil
}

// GetDataByNameRequest
type GetDataByNameRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartTime string `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`  // 开始时间
	EndTime   string `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`        // 结束时间
	ApiName   string `protobuf:"bytes,3,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`        // 牧场端接口标识名称
	PastureId int32  `protobuf:"varint,4,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"` // 牧场id
}

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

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

func (*GetDataByNameRequest) ProtoMessage() {}

func (x *GetDataByNameRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 GetDataByNameRequest.ProtoReflect.Descriptor instead.
func (*GetDataByNameRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{10}
}

func (x *GetDataByNameRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *GetDataByNameRequest) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *GetDataByNameRequest) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *GetDataByNameRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

// ProcessAnalysisRequest 过程分析
type ProcessAnalysisRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StartTime   string           `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`         // 开始时间
	EndTime     string           `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`               // 结束时间
	ApiName     string           `protobuf:"bytes,3,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`               // 牧场端接口标识名称
	PastureId   int32            `protobuf:"varint,4,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"`        // 牧场id
	PlanType    int32            `protobuf:"varint,5,opt,name=plan_type,json=planType,proto3" json:"plan_type,omitempty"`           // 计划类型
	TmrName     []string         `protobuf:"bytes,6,rep,name=tmr_name,json=tmrName,proto3" json:"tmr_name,omitempty"`               // TMR名称
	ErrorRange  string           `protobuf:"bytes,7,opt,name=error_range,json=errorRange,proto3" json:"error_range,omitempty"`      // 误差筛选范围
	WorkStatus  string           `protobuf:"bytes,8,opt,name=work_status,json=workStatus,proto3" json:"work_status,omitempty"`      // 工作状态
	MixFeedType string           `protobuf:"bytes,9,opt,name=mix_feed_type,json=mixFeedType,proto3" json:"mix_feed_type,omitempty"` // 混料类别
	Hlwc1       int32            `protobuf:"varint,10,opt,name=hlwc1,proto3" json:"hlwc1,omitempty"`                                // 混料误差值1
	Hlwc2       int32            `protobuf:"varint,11,opt,name=hlwc2,proto3" json:"hlwc2,omitempty"`                                // 混料误差值2
	Hlzq1       int32            `protobuf:"varint,12,opt,name=hlzq1,proto3" json:"hlzq1,omitempty"`                                // 混料准确率1
	Hlzq2       int32            `protobuf:"varint,13,opt,name=hlzq2,proto3" json:"hlzq2,omitempty"`                                // 混料准确率2
	Slwc1       int32            `protobuf:"varint,14,opt,name=slwc1,proto3" json:"slwc1,omitempty"`                                // 撒料误差值1
	Slwc2       int32            `protobuf:"varint,15,opt,name=slwc2,proto3" json:"slwc2,omitempty"`                                // 撒料误差值2
	Slzq1       int32            `protobuf:"varint,16,opt,name=slzq1,proto3" json:"slzq1,omitempty"`                                // 撒料准确率1
	Slzq2       int32            `protobuf:"varint,17,opt,name=slzq2,proto3" json:"slzq2,omitempty"`                                // 撒料准确率2
	Pagination  *PaginationModel `protobuf:"bytes,18,opt,name=pagination,proto3" json:"pagination,omitempty"`                       // 分页
}

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

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

func (*ProcessAnalysisRequest) ProtoMessage() {}

func (x *ProcessAnalysisRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 ProcessAnalysisRequest.ProtoReflect.Descriptor instead.
func (*ProcessAnalysisRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{11}
}

func (x *ProcessAnalysisRequest) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *ProcessAnalysisRequest) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

func (x *ProcessAnalysisRequest) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *ProcessAnalysisRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *ProcessAnalysisRequest) GetPlanType() int32 {
	if x != nil {
		return x.PlanType
	}
	return 0
}

func (x *ProcessAnalysisRequest) GetTmrName() []string {
	if x != nil {
		return x.TmrName
	}
	return nil
}

func (x *ProcessAnalysisRequest) GetErrorRange() string {
	if x != nil {
		return x.ErrorRange
	}
	return ""
}

func (x *ProcessAnalysisRequest) GetWorkStatus() string {
	if x != nil {
		return x.WorkStatus
	}
	return ""
}

func (x *ProcessAnalysisRequest) GetMixFeedType() string {
	if x != nil {
		return x.MixFeedType
	}
	return ""
}

func (x *ProcessAnalysisRequest) GetHlwc1() int32 {
	if x != nil {
		return x.Hlwc1
	}
	return 0
}

func (x *ProcessAnalysisRequest) GetHlwc2() int32 {
	if x != nil {
		return x.Hlwc2
	}
	return 0
}

func (x *ProcessAnalysisRequest) GetHlzq1() int32 {
	if x != nil {
		return x.Hlzq1
	}
	return 0
}

func (x *ProcessAnalysisRequest) GetHlzq2() int32 {
	if x != nil {
		return x.Hlzq2
	}
	return 0
}

func (x *ProcessAnalysisRequest) GetSlwc1() int32 {
	if x != nil {
		return x.Slwc1
	}
	return 0
}

func (x *ProcessAnalysisRequest) GetSlwc2() int32 {
	if x != nil {
		return x.Slwc2
	}
	return 0
}

func (x *ProcessAnalysisRequest) GetSlzq1() int32 {
	if x != nil {
		return x.Slzq1
	}
	return 0
}

func (x *ProcessAnalysisRequest) GetSlzq2() int32 {
	if x != nil {
		return x.Slzq2
	}
	return 0
}

func (x *ProcessAnalysisRequest) GetPagination() *PaginationModel {
	if x != nil {
		return x.Pagination
	}
	return nil
}

// ProcessMixedSprinkleDetailRequest
type ProcessMixedSprinkleDetailRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ApiName    string           `protobuf:"bytes,1,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`
	PastureId  int32            `protobuf:"varint,2,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"`
	Pid        string           `protobuf:"bytes,3,opt,name=pid,proto3" json:"pid,omitempty"`
	FclassId   string           `protobuf:"bytes,4,opt,name=fclass_id,json=fclassId,proto3" json:"fclass_id,omitempty"`
	Id         string           `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"`
	Pagination *PaginationModel `protobuf:"bytes,6,opt,name=pagination,proto3" json:"pagination,omitempty"` // 分页
}

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

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

func (*ProcessMixedSprinkleDetailRequest) ProtoMessage() {}

func (x *ProcessMixedSprinkleDetailRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 ProcessMixedSprinkleDetailRequest.ProtoReflect.Descriptor instead.
func (*ProcessMixedSprinkleDetailRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{12}
}

func (x *ProcessMixedSprinkleDetailRequest) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *ProcessMixedSprinkleDetailRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *ProcessMixedSprinkleDetailRequest) GetPid() string {
	if x != nil {
		return x.Pid
	}
	return ""
}

func (x *ProcessMixedSprinkleDetailRequest) GetFclassId() string {
	if x != nil {
		return x.FclassId
	}
	return ""
}

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

func (x *ProcessMixedSprinkleDetailRequest) GetPagination() *PaginationModel {
	if x != nil {
		return x.Pagination
	}
	return nil
}

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

	ApiName    string           `protobuf:"bytes,1,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`        // 牧场端接口标识名称
	PastureId  int32            `protobuf:"varint,2,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"` // 牧场id
	InfoName   string           `protobuf:"bytes,3,opt,name=info_name,json=infoName,proto3" json:"info_name,omitempty"`
	Pagination *PaginationModel `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` // 分页
}

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

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

func (*TrainNumberRequest) ProtoMessage() {}

func (x *TrainNumberRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 TrainNumberRequest.ProtoReflect.Descriptor instead.
func (*TrainNumberRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{13}
}

func (x *TrainNumberRequest) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *TrainNumberRequest) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *TrainNumberRequest) GetInfoName() string {
	if x != nil {
		return x.InfoName
	}
	return ""
}

func (x *TrainNumberRequest) GetPagination() *PaginationModel {
	if x != nil {
		return x.Pagination
	}
	return nil
}

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

	Code int32            `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Msg  string           `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"`
	Data *TrainNumberData `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*TrainNumberResponse) ProtoMessage() {}

func (x *TrainNumberResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 TrainNumberResponse.ProtoReflect.Descriptor instead.
func (*TrainNumberResponse) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{14}
}

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

func (x *TrainNumberResponse) GetMsg() string {
	if x != nil {
		return x.Msg
	}
	return ""
}

func (x *TrainNumberResponse) GetData() *TrainNumberData {
	if x != nil {
		return x.Data
	}
	return nil
}

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

	List []*FormulaOptionEnum `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
}

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

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

func (*TrainNumberData) ProtoMessage() {}

func (x *TrainNumberData) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 TrainNumberData.ProtoReflect.Descriptor instead.
func (*TrainNumberData) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{15}
}

func (x *TrainNumberData) GetList() []*FormulaOptionEnum {
	if x != nil {
		return x.List
	}
	return nil
}

// 首页 dashboard 准确性分析
type SearchAnalysisAccuracyRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CattleParentCategoryId CattleCategoryParent_Kind `protobuf:"varint,1,opt,name=cattle_parent_category_id,json=cattleParentCategoryId,proto3,enum=backend.operation.CattleCategoryParent_Kind" json:"cattle_parent_category_id,omitempty"` // 牧畜分类id 泌乳牛
	FeedFormulaId          int32                     `protobuf:"varint,2,opt,name=feed_formula_id,json=feedFormulaId,proto3" json:"feed_formula_id,omitempty"`                                                                               // 配方id
	StartDate              string                    `protobuf:"bytes,3,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"`                                                                                              // 开始时间
	EndDate                string                    `protobuf:"bytes,4,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"`                                                                                                    // 结束时间
	PastureIds             []int32                   `protobuf:"varint,5,rep,packed,name=pasture_ids,json=pastureIds,proto3" json:"pasture_ids,omitempty"`                                                                                   //牧场ids
	TopRandStart           float32                   `protobuf:"fixed32,6,opt,name=top_rand_start,json=topRandStart,proto3" json:"top_rand_start,omitempty"`                                                                                 // 排名区间开始位
	TopRandEnd             float32                   `protobuf:"fixed32,7,opt,name=top_rand_end,json=topRandEnd,proto3" json:"top_rand_end,omitempty"`                                                                                       // 排名区间结束位
	DashboardTopType       DashboardTopType_Kind     `protobuf:"varint,8,opt,name=dashboard_top_type,json=dashboardTopType,proto3,enum=backend.operation.DashboardTopType_Kind" json:"dashboard_top_type,omitempty"`                         // 排序区间标识
}

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

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

func (*SearchAnalysisAccuracyRequest) ProtoMessage() {}

func (x *SearchAnalysisAccuracyRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 SearchAnalysisAccuracyRequest.ProtoReflect.Descriptor instead.
func (*SearchAnalysisAccuracyRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{16}
}

func (x *SearchAnalysisAccuracyRequest) GetCattleParentCategoryId() CattleCategoryParent_Kind {
	if x != nil {
		return x.CattleParentCategoryId
	}
	return CattleCategoryParent_INVALID
}

func (x *SearchAnalysisAccuracyRequest) GetFeedFormulaId() int32 {
	if x != nil {
		return x.FeedFormulaId
	}
	return 0
}

func (x *SearchAnalysisAccuracyRequest) GetStartDate() string {
	if x != nil {
		return x.StartDate
	}
	return ""
}

func (x *SearchAnalysisAccuracyRequest) GetEndDate() string {
	if x != nil {
		return x.EndDate
	}
	return ""
}

func (x *SearchAnalysisAccuracyRequest) GetPastureIds() []int32 {
	if x != nil {
		return x.PastureIds
	}
	return nil
}

func (x *SearchAnalysisAccuracyRequest) GetTopRandStart() float32 {
	if x != nil {
		return x.TopRandStart
	}
	return 0
}

func (x *SearchAnalysisAccuracyRequest) GetTopRandEnd() float32 {
	if x != nil {
		return x.TopRandEnd
	}
	return 0
}

func (x *SearchAnalysisAccuracyRequest) GetDashboardTopType() DashboardTopType_Kind {
	if x != nil {
		return x.DashboardTopType
	}
	return DashboardTopType_INVALID
}

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

	Code int32             `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
	Msg  string            `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"`
	Data *AnalysisAccuracy `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
}

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

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

func (*SearchAnalysisAccuracyResponse) ProtoMessage() {}

func (x *SearchAnalysisAccuracyResponse) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 SearchAnalysisAccuracyResponse.ProtoReflect.Descriptor instead.
func (*SearchAnalysisAccuracyResponse) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{17}
}

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

func (x *SearchAnalysisAccuracyResponse) GetMsg() string {
	if x != nil {
		return x.Msg
	}
	return ""
}

func (x *SearchAnalysisAccuracyResponse) GetData() *AnalysisAccuracy {
	if x != nil {
		return x.Data
	}
	return nil
}

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

	Chart *Chart `protobuf:"bytes,1,opt,name=chart,proto3" json:"chart,omitempty"`
	Table *Table `protobuf:"bytes,2,opt,name=table,proto3" json:"table,omitempty"`
}

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

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

func (*AnalysisAccuracy) ProtoMessage() {}

func (x *AnalysisAccuracy) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 AnalysisAccuracy.ProtoReflect.Descriptor instead.
func (*AnalysisAccuracy) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{18}
}

func (x *AnalysisAccuracy) GetChart() *Chart {
	if x != nil {
		return x.Chart
	}
	return nil
}

func (x *AnalysisAccuracy) GetTable() *Table {
	if x != nil {
		return x.Table
	}
	return nil
}

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

	MixedFodderAccurateRatio    *CommonValueRatio `protobuf:"bytes,4,opt,name=mixed_fodder_accurate_ratio,json=mixedFodderAccurateRatio,proto3" json:"mixed_fodder_accurate_ratio,omitempty"`          // 混料准确率
	MixedFodderCorrectRatio     *CommonValueRatio `protobuf:"bytes,5,opt,name=mixed_fodder_correct_ratio,json=mixedFodderCorrectRatio,proto3" json:"mixed_fodder_correct_ratio,omitempty"`             // 混料正确率
	SprinkleFodderAccurateRatio *CommonValueRatio `protobuf:"bytes,6,opt,name=sprinkle_fodder_accurate_ratio,json=sprinkleFodderAccurateRatio,proto3" json:"sprinkle_fodder_accurate_ratio,omitempty"` // 撒料准确率
	SprinkleFodderCorrectRatio  *CommonValueRatio `protobuf:"bytes,7,opt,name=sprinkle_fodder_correct_ratio,json=sprinkleFodderCorrectRatio,proto3" json:"sprinkle_fodder_correct_ratio,omitempty"`    // 撒料正确率
}

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

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

func (*Chart) ProtoMessage() {}

func (x *Chart) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 Chart.ProtoReflect.Descriptor instead.
func (*Chart) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{19}
}

func (x *Chart) GetMixedFodderAccurateRatio() *CommonValueRatio {
	if x != nil {
		return x.MixedFodderAccurateRatio
	}
	return nil
}

func (x *Chart) GetMixedFodderCorrectRatio() *CommonValueRatio {
	if x != nil {
		return x.MixedFodderCorrectRatio
	}
	return nil
}

func (x *Chart) GetSprinkleFodderAccurateRatio() *CommonValueRatio {
	if x != nil {
		return x.SprinkleFodderAccurateRatio
	}
	return nil
}

func (x *Chart) GetSprinkleFodderCorrectRatio() *CommonValueRatio {
	if x != nil {
		return x.SprinkleFodderCorrectRatio
	}
	return nil
}

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

	TableList []*Table_TableList `protobuf:"bytes,1,rep,name=table_list,json=tableList,proto3" json:"table_list,omitempty"`
}

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

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

func (*Table) ProtoMessage() {}

func (x *Table) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 Table.ProtoReflect.Descriptor instead.
func (*Table) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{20}
}

func (x *Table) GetTableList() []*Table_TableList {
	if x != nil {
		return x.TableList
	}
	return nil
}

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

	MaxValue    string        `protobuf:"bytes,1,opt,name=max_value,json=maxValue,proto3" json:"max_value,omitempty"`          // 最高值
	MiddleValue string        `protobuf:"bytes,2,opt,name=middle_value,json=middleValue,proto3" json:"middle_value,omitempty"` // 中位值
	MinValue    string        `protobuf:"bytes,3,opt,name=min_value,json=minValue,proto3" json:"min_value,omitempty"`          // 最低值
	DataList    []*ValueRatio `protobuf:"bytes,4,rep,name=data_list,json=dataList,proto3" json:"data_list,omitempty"`          // 数据集合
	PastureName []string      `protobuf:"bytes,5,rep,name=pasture_name,json=pastureName,proto3" json:"pasture_name,omitempty"` // 牧场名称集合
	DateDay     []string      `protobuf:"bytes,6,rep,name=date_day,json=dateDay,proto3" json:"date_day,omitempty"`             // 日期集合
}

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

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

func (*CommonValueRatio) ProtoMessage() {}

func (x *CommonValueRatio) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 CommonValueRatio.ProtoReflect.Descriptor instead.
func (*CommonValueRatio) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{21}
}

func (x *CommonValueRatio) GetMaxValue() string {
	if x != nil {
		return x.MaxValue
	}
	return ""
}

func (x *CommonValueRatio) GetMiddleValue() string {
	if x != nil {
		return x.MiddleValue
	}
	return ""
}

func (x *CommonValueRatio) GetMinValue() string {
	if x != nil {
		return x.MinValue
	}
	return ""
}

func (x *CommonValueRatio) GetDataList() []*ValueRatio {
	if x != nil {
		return x.DataList
	}
	return nil
}

func (x *CommonValueRatio) GetPastureName() []string {
	if x != nil {
		return x.PastureName
	}
	return nil
}

func (x *CommonValueRatio) GetDateDay() []string {
	if x != nil {
		return x.DateDay
	}
	return nil
}

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

	ValueRatio []string `protobuf:"bytes,1,rep,name=value_ratio,json=valueRatio,proto3" json:"value_ratio,omitempty"`
}

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

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

func (*ValueRatio) ProtoMessage() {}

func (x *ValueRatio) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 ValueRatio.ProtoReflect.Descriptor instead.
func (*ValueRatio) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{22}
}

func (x *ValueRatio) GetValueRatio() []string {
	if x != nil {
		return x.ValueRatio
	}
	return nil
}

// 首页 dashboard 撒料时间统计分析
type SprinkleFeedTimeRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	FeedFormulaId int32   `protobuf:"varint,1,opt,name=feed_formula_id,json=feedFormulaId,proto3" json:"feed_formula_id,omitempty"` // 配方id
	StartDate     string  `protobuf:"bytes,2,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"`                // 开始时间
	EndDate       string  `protobuf:"bytes,3,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"`                      // 结束时间
	PastureIds    []int32 `protobuf:"varint,4,rep,packed,name=pasture_ids,json=pastureIds,proto3" json:"pasture_ids,omitempty"`     //牧场ids
	DataType      int32   `protobuf:"varint,5,opt,name=data_type,json=dataType,proto3" json:"data_type,omitempty"`                  // 过滤的数据类型 0 不过滤 1 正常 2 异常
}

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

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

func (*SprinkleFeedTimeRequest) ProtoMessage() {}

func (x *SprinkleFeedTimeRequest) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 SprinkleFeedTimeRequest.ProtoReflect.Descriptor instead.
func (*SprinkleFeedTimeRequest) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{23}
}

func (x *SprinkleFeedTimeRequest) GetFeedFormulaId() int32 {
	if x != nil {
		return x.FeedFormulaId
	}
	return 0
}

func (x *SprinkleFeedTimeRequest) GetStartDate() string {
	if x != nil {
		return x.StartDate
	}
	return ""
}

func (x *SprinkleFeedTimeRequest) GetEndDate() string {
	if x != nil {
		return x.EndDate
	}
	return ""
}

func (x *SprinkleFeedTimeRequest) GetPastureIds() []int32 {
	if x != nil {
		return x.PastureIds
	}
	return nil
}

func (x *SprinkleFeedTimeRequest) GetDataType() int32 {
	if x != nil {
		return x.DataType
	}
	return 0
}

// MixedCategoryTmrName tmr名称和混料类别
type MixedCategoryTmrName struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ApiName   string `protobuf:"bytes,1,opt,name=api_name,json=apiName,proto3" json:"api_name,omitempty"`
	PastureId int32  `protobuf:"varint,2,opt,name=pasture_id,json=pastureId,proto3" json:"pasture_id,omitempty"`
	StartTime string `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	EndTime   string `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
}

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

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

func (*MixedCategoryTmrName) ProtoMessage() {}

func (x *MixedCategoryTmrName) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 MixedCategoryTmrName.ProtoReflect.Descriptor instead.
func (*MixedCategoryTmrName) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{24}
}

func (x *MixedCategoryTmrName) GetApiName() string {
	if x != nil {
		return x.ApiName
	}
	return ""
}

func (x *MixedCategoryTmrName) GetPastureId() int32 {
	if x != nil {
		return x.PastureId
	}
	return 0
}

func (x *MixedCategoryTmrName) GetStartTime() string {
	if x != nil {
		return x.StartTime
	}
	return ""
}

func (x *MixedCategoryTmrName) GetEndTime() string {
	if x != nil {
		return x.EndTime
	}
	return ""
}

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

	Id   int32  `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
}

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

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

func (*Table_TableList) ProtoMessage() {}

func (x *Table_TableList) ProtoReflect() protoreflect.Message {
	mi := &file_backend_operation_statistic_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 Table_TableList.ProtoReflect.Descriptor instead.
func (*Table_TableList) Descriptor() ([]byte, []int) {
	return file_backend_operation_statistic_proto_rawDescGZIP(), []int{20, 0}
}

func (x *Table_TableList) GetId() int32 {
	if x != nil {
		return x.Id
	}
	return 0
}

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

var File_backend_operation_statistic_proto protoreflect.FileDescriptor

var file_backend_operation_statistic_proto_rawDesc = []byte{
	0x0a, 0x21, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x12, 0x11, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70, 0x65,
	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x22, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f,
	0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x62, 0x61, 0x63, 0x6b,
	0x65, 0x6e, 0x64, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x65, 0x6e,
	0x75, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e,
	0x64, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x70, 0x61, 0x73, 0x74,
	0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb1, 0x02, 0x0a, 0x1c, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x46, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x45, 0x73, 0x74, 0x69, 0x6d,
	0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74,
	0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64,
	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64,
	0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65,
	0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12,
	0x1f, 0x0a, 0x0b, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x64,
	0x12, 0x17, 0x0a, 0x07, 0x62, 0x61, 0x72, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x06, 0x62, 0x61, 0x72, 0x6e, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x67,
	0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
	0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf7, 0x01,
	0x0a, 0x20, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72,
	0x79, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d,
	0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08,
	0x61, 0x70, 0x69, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x61, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x64, 0x5f,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x65, 0x64,
	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x5f,
	0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72,
	0x65, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e,
	0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x67, 0x69,
	0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x0a, 0x70, 0x61, 0x67,
	0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbb, 0x02, 0x0a, 0x24, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x73, 0x53,
	0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12,
	0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70,
	0x69, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70,
	0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65,
	0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x73, 0x74, 0x75,
	0x72, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x68,
	0x65, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72,
	0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x63, 0x68,
	0x65, 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x79, 0x70, 0x65, 0x43,
	0x68, 0x65, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x65, 0x64, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e,
	0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf3, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x50, 0x72, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
	0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
	0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x09, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x65,
	0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66,
	0x65, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x61,
	0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52,
	0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa0, 0x03, 0x0a, 0x1b,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x65, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73,
	0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73,
	0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70,
	0x69, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70,
	0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65,
	0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x73, 0x74, 0x75,
	0x72, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x5f,
	0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
	0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12,
	0x1b, 0x0a, 0x09, 0x62, 0x61, 0x72, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x72, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14,
	0x63, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x61, 0x74, 0x74,
	0x6c, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c,
	0x0a, 0x12, 0x63, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72,
	0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x61, 0x74, 0x74,
	0x6c, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c,
	0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x0b, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12,
	0x42, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
	0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa8,
	0x01, 0x0a, 0x1a, 0x46, 0x65, 0x65, 0x64, 0x43, 0x68, 0x61, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74,
	0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a,
	0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08,
	0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x75,
	0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x73,
	0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19,
	0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x61, 0x70, 0x69, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x13, 0x43, 0x6f,
	0x77, 0x73, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65,
	0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
	0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x09, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61,
	0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22,
	0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64,
	0x65, 0x6c, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc4,
	0x04, 0x0a, 0x1c, 0x41, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x41, 0x67, 0x67, 0x53, 0x74,
	0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
	0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19,
	0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x73,
	0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70,
	0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12,
	0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6f,
	0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x65,
	0x6e, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x65, 0x6e, 0x72, 0x65,
	0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x64, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x06, 0x69, 0x73, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6c, 0x77, 0x63,
	0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x6c, 0x77, 0x63, 0x31, 0x12, 0x14,
	0x0a, 0x05, 0x68, 0x6c, 0x77, 0x63, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68,
	0x6c, 0x77, 0x63, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6c, 0x7a, 0x71, 0x31, 0x18, 0x0b, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x6c, 0x7a, 0x71, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6c,
	0x7a, 0x71, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x6c, 0x7a, 0x71, 0x32,
	0x12, 0x16, 0x0a, 0x06, 0x68, 0x6c, 0x7a, 0x71, 0x6c, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x06, 0x68, 0x6c, 0x7a, 0x71, 0x6c, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x6c, 0x7a, 0x71,
	0x6c, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x6c, 0x7a, 0x71, 0x6c, 0x32,
	0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c, 0x77, 0x63, 0x31, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x05, 0x73, 0x6c, 0x77, 0x63, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c, 0x77, 0x63, 0x32, 0x18,
	0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x6c, 0x77, 0x63, 0x32, 0x12, 0x14, 0x0a, 0x05,
	0x73, 0x6c, 0x7a, 0x71, 0x31, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x6c, 0x7a,
	0x71, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c, 0x7a, 0x71, 0x32, 0x18, 0x12, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x05, 0x73, 0x6c, 0x7a, 0x71, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6c, 0x7a, 0x71,
	0x6c, 0x31, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x6c, 0x7a, 0x71, 0x6c, 0x31,
	0x12, 0x16, 0x0a, 0x06, 0x73, 0x6c, 0x7a, 0x71, 0x6c, 0x32, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x06, 0x73, 0x6c, 0x7a, 0x71, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a,
	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x16, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73,
	0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73,
	0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xe2, 0x04, 0x0a, 0x18, 0x4d, 0x69, 0x78, 0x46, 0x65, 0x65,
	0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d,
	0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08,
	0x61, 0x70, 0x69, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x61, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x75,
	0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x73,
	0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x71, 0x75, 0x69, 0x70, 0x6d,
	0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
	0x65, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a,
	0x0c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72,
	0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x75, 0x6d,
	0x62, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x66,
	0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b,
	0x0a, 0x09, 0x6a, 0x75, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x08, 0x6a, 0x75, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x68,
	0x6c, 0x77, 0x63, 0x31, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x6c, 0x77, 0x63,
	0x31, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6c, 0x77, 0x63, 0x32, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x05, 0x68, 0x6c, 0x77, 0x63, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6c, 0x7a, 0x71, 0x31,
	0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x6c, 0x7a, 0x71, 0x31, 0x12, 0x14, 0x0a,
	0x05, 0x68, 0x6c, 0x7a, 0x71, 0x32, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x6c,
	0x7a, 0x71, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x6c, 0x7a, 0x71, 0x6c, 0x31, 0x18, 0x0e, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x6c, 0x7a, 0x71, 0x6c, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x68,
	0x6c, 0x7a, 0x71, 0x6c, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x6c, 0x7a,
	0x71, 0x6c, 0x32, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
	0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1f,
	0x0a, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x11, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x15, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x69, 0x73, 0x55, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x61, 0x63,
	0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50,
	0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x0a,
	0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x80, 0x05, 0x0a, 0x19, 0x53,
	0x70, 0x72, 0x69, 0x6e, 0x6b, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74,
	0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74,
	0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69,
	0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a,
	0x0a, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x09, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e,
	0x65, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x4e,
	0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x75, 0x6d,
	0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x69, 0x6e,
	0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f,
	0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6c,
	0x61, 0x73, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x6f, 0x72,
	0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x72, 0x6e, 0x5f, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x72, 0x6e, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x75, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6a, 0x75, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14,
	0x0a, 0x05, 0x73, 0x6c, 0x77, 0x63, 0x31, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73,
	0x6c, 0x77, 0x63, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c, 0x77, 0x63, 0x32, 0x18, 0x0c, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x6c, 0x77, 0x63, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c,
	0x7a, 0x71, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x6c, 0x7a, 0x71, 0x31,
	0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c, 0x7a, 0x71, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x05, 0x73, 0x6c, 0x7a, 0x71, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6c, 0x7a, 0x71, 0x6c, 0x31,
	0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x6c, 0x7a, 0x71, 0x6c, 0x31, 0x12, 0x16,
	0x0a, 0x06, 0x73, 0x6c, 0x7a, 0x71, 0x6c, 0x32, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
	0x73, 0x6c, 0x7a, 0x71, 0x6c, 0x32, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x69, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x13, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x05, 0x69, 0x73, 0x55, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x67,
	0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
	0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x01,
	0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x42, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
	0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
	0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x09, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x22, 0x9e, 0x04, 0x0a, 0x16, 0x50,
	0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74,
	0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74,
	0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12,
	0x19, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61,
	0x73, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
	0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61,
	0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c,
	0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6d, 0x72, 0x5f, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6d, 0x72, 0x4e, 0x61, 0x6d,
	0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x61, 0x6e,
	0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61,
	0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x69, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x64, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x69, 0x78, 0x46,
	0x65, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6c, 0x77, 0x63, 0x31,
	0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x6c, 0x77, 0x63, 0x31, 0x12, 0x14, 0x0a,
	0x05, 0x68, 0x6c, 0x77, 0x63, 0x32, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x6c,
	0x77, 0x63, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6c, 0x7a, 0x71, 0x31, 0x18, 0x0c, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x05, 0x68, 0x6c, 0x7a, 0x71, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6c, 0x7a,
	0x71, 0x32, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x68, 0x6c, 0x7a, 0x71, 0x32, 0x12,
	0x14, 0x0a, 0x05, 0x73, 0x6c, 0x77, 0x63, 0x31, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
	0x73, 0x6c, 0x77, 0x63, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c, 0x77, 0x63, 0x32, 0x18, 0x0f,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x6c, 0x77, 0x63, 0x32, 0x12, 0x14, 0x0a, 0x05, 0x73,
	0x6c, 0x7a, 0x71, 0x31, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x6c, 0x7a, 0x71,
	0x31, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x6c, 0x7a, 0x71, 0x32, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x05, 0x73, 0x6c, 0x7a, 0x71, 0x32, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x61,
	0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52,
	0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe0, 0x01, 0x0a, 0x21,
	0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x78, 0x65, 0x64, 0x53, 0x70, 0x72, 0x69,
	0x6e, 0x6b, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
	0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x09, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x70,
	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x1b, 0x0a,
	0x09, 0x66, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x66, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x61,
	0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22,
	0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64,
	0x65, 0x6c, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf,
	0x01, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65,
	0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12,
	0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0a,
	0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x22, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
	0x6f, 0x64, 0x65, 0x6c, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x22, 0x73, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d,
	0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x36, 0x0a,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x61,
	0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
	0x54, 0x72, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52,
	0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4b, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4e, 0x75,
	0x6d, 0x62, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64,
	0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x75,
	0x6c, 0x61, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x04, 0x6c, 0x69,
	0x73, 0x74, 0x22, 0xab, 0x03, 0x0a, 0x1d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x6e, 0x61,
	0x6c, 0x79, 0x73, 0x69, 0x73, 0x41, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x12, 0x67, 0x0a, 0x19, 0x63, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x70,
	0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x5f, 0x69,
	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e,
	0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x61, 0x74, 0x74,
	0x6c, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74,
	0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x16, 0x63, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x50, 0x61, 0x72,
	0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x26, 0x0a,
	0x0f, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x5f, 0x69, 0x64,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x6d,
	0x75, 0x6c, 0x61, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64,
	0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74,
	0x44, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12,
	0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05,
	0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x73,
	0x12, 0x24, 0x0a, 0x0e, 0x74, 0x6f, 0x70, 0x5f, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x73, 0x74, 0x61,
	0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x74, 0x6f, 0x70, 0x52, 0x61, 0x6e,
	0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x74, 0x6f, 0x70, 0x5f, 0x72, 0x61,
	0x6e, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x74, 0x6f,
	0x70, 0x52, 0x61, 0x6e, 0x64, 0x45, 0x6e, 0x64, 0x12, 0x56, 0x0a, 0x12, 0x64, 0x61, 0x73, 0x68,
	0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x6f, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08,
	0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f,
	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
	0x72, 0x64, 0x54, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x10,
	0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65,
	0x22, 0x7f, 0x0a, 0x1e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73,
	0x69, 0x73, 0x41, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64,
	0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79,
	0x73, 0x69, 0x73, 0x41, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74,
	0x61, 0x22, 0x72, 0x0a, 0x10, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x41, 0x63, 0x63,
	0x75, 0x72, 0x61, 0x63, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x72, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f,
	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x74, 0x52, 0x05,
	0x63, 0x68, 0x61, 0x72, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f,
	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05,
	0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x9f, 0x03, 0x0a, 0x05, 0x43, 0x68, 0x61, 0x72, 0x74, 0x12,
	0x62, 0x0a, 0x1b, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x64, 0x64, 0x65, 0x72, 0x5f,
	0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f,
	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x18, 0x6d, 0x69, 0x78, 0x65, 0x64,
	0x46, 0x6f, 0x64, 0x64, 0x65, 0x72, 0x41, 0x63, 0x63, 0x75, 0x72, 0x61, 0x74, 0x65, 0x52, 0x61,
	0x74, 0x69, 0x6f, 0x12, 0x60, 0x0a, 0x1a, 0x6d, 0x69, 0x78, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x64,
	0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69,
	0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e,
	0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x17, 0x6d, 0x69,
	0x78, 0x65, 0x64, 0x46, 0x6f, 0x64, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74,
	0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x68, 0x0a, 0x1e, 0x73, 0x70, 0x72, 0x69, 0x6e, 0x6b, 0x6c,
	0x65, 0x5f, 0x66, 0x6f, 0x64, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x74,
	0x65, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e,
	0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x74,
	0x69, 0x6f, 0x52, 0x1b, 0x73, 0x70, 0x72, 0x69, 0x6e, 0x6b, 0x6c, 0x65, 0x46, 0x6f, 0x64, 0x64,
	0x65, 0x72, 0x41, 0x63, 0x63, 0x75, 0x72, 0x61, 0x74, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12,
	0x66, 0x0a, 0x1d, 0x73, 0x70, 0x72, 0x69, 0x6e, 0x6b, 0x6c, 0x65, 0x5f, 0x66, 0x6f, 0x64, 0x64,
	0x65, 0x72, 0x5f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f,
	0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64,
	0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x1a, 0x73, 0x70, 0x72,
	0x69, 0x6e, 0x6b, 0x6c, 0x65, 0x46, 0x6f, 0x64, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x72, 0x72, 0x65,
	0x63, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x7b, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65,
	0x12, 0x41, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2e, 0x6f,
	0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x54,
	0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4c,
	0x69, 0x73, 0x74, 0x1a, 0x2f, 0x0a, 0x09, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74,
	0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64,
	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe9, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78,
	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61,
	0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65,
	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x69,
	0x64, 0x64, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x6e,
	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69,
	0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c,
	0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x61, 0x63, 0x6b,
	0x65, 0x6e, 0x64, 0x2e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x56, 0x61,
	0x6c, 0x75, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x4c, 0x69,
	0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72,
	0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x61,
	0x79, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x79,
	0x22, 0x2d, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1f,
	0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22,
	0xb9, 0x01, 0x0a, 0x17, 0x53, 0x70, 0x72, 0x69, 0x6e, 0x6b, 0x6c, 0x65, 0x46, 0x65, 0x65, 0x64,
	0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x66,
	0x65, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x75, 0x6c, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x6d, 0x75, 0x6c,
	0x61, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61,
	0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a,
	0x0b, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03,
	0x28, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1b,
	0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x14,
	0x4d, 0x69, 0x78, 0x65, 0x64, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x6d, 0x72,
	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x70, 0x69, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x69, 0x4e, 0x61, 0x6d, 0x65, 0x12,
	0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x73, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x1d,
	0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a,
	0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x3b, 0x6f, 0x70,
	0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x33,
}

var (
	file_backend_operation_statistic_proto_rawDescOnce sync.Once
	file_backend_operation_statistic_proto_rawDescData = file_backend_operation_statistic_proto_rawDesc
)

func file_backend_operation_statistic_proto_rawDescGZIP() []byte {
	file_backend_operation_statistic_proto_rawDescOnce.Do(func() {
		file_backend_operation_statistic_proto_rawDescData = protoimpl.X.CompressGZIP(file_backend_operation_statistic_proto_rawDescData)
	})
	return file_backend_operation_statistic_proto_rawDescData
}

var file_backend_operation_statistic_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
var file_backend_operation_statistic_proto_goTypes = []interface{}{
	(*SearchFormulaEstimateRequest)(nil),         // 0: backend.operation.SearchFormulaEstimateRequest
	(*SearchInventoryStatisticsRequest)(nil),     // 1: backend.operation.SearchInventoryStatisticsRequest
	(*SearchUserMaterialsStatisticsRequest)(nil), // 2: backend.operation.SearchUserMaterialsStatisticsRequest
	(*SearchPriceStatisticsRequest)(nil),         // 3: backend.operation.SearchPriceStatisticsRequest
	(*SearchFeedStatisticsRequest)(nil),          // 4: backend.operation.SearchFeedStatisticsRequest
	(*FeedChartStatisticsRequest)(nil),           // 5: backend.operation.FeedChartStatisticsRequest
	(*CowsAnalysisRequest)(nil),                  // 6: backend.operation.CowsAnalysisRequest
	(*AccuracyAggStatisticsRequest)(nil),         // 7: backend.operation.AccuracyAggStatisticsRequest
	(*MixFeedStatisticsRequest)(nil),             // 8: backend.operation.MixFeedStatisticsRequest
	(*SprinkleStatisticsRequest)(nil),            // 9: backend.operation.SprinkleStatisticsRequest
	(*GetDataByNameRequest)(nil),                 // 10: backend.operation.GetDataByNameRequest
	(*ProcessAnalysisRequest)(nil),               // 11: backend.operation.ProcessAnalysisRequest
	(*ProcessMixedSprinkleDetailRequest)(nil),    // 12: backend.operation.ProcessMixedSprinkleDetailRequest
	(*TrainNumberRequest)(nil),                   // 13: backend.operation.TrainNumberRequest
	(*TrainNumberResponse)(nil),                  // 14: backend.operation.TrainNumberResponse
	(*TrainNumberData)(nil),                      // 15: backend.operation.TrainNumberData
	(*SearchAnalysisAccuracyRequest)(nil),        // 16: backend.operation.SearchAnalysisAccuracyRequest
	(*SearchAnalysisAccuracyResponse)(nil),       // 17: backend.operation.SearchAnalysisAccuracyResponse
	(*AnalysisAccuracy)(nil),                     // 18: backend.operation.AnalysisAccuracy
	(*Chart)(nil),                                // 19: backend.operation.Chart
	(*Table)(nil),                                // 20: backend.operation.Table
	(*CommonValueRatio)(nil),                     // 21: backend.operation.CommonValueRatio
	(*ValueRatio)(nil),                           // 22: backend.operation.ValueRatio
	(*SprinkleFeedTimeRequest)(nil),              // 23: backend.operation.SprinkleFeedTimeRequest
	(*MixedCategoryTmrName)(nil),                 // 24: backend.operation.MixedCategoryTmrName
	(*Table_TableList)(nil),                      // 25: backend.operation.Table.TableList
	(*PaginationModel)(nil),                      // 26: backend.operation.PaginationModel
	(*FormulaOptionEnum)(nil),                    // 27: backend.operation.FormulaOptionEnum
	(CattleCategoryParent_Kind)(0),               // 28: backend.operation.CattleCategoryParent.Kind
	(DashboardTopType_Kind)(0),                   // 29: backend.operation.DashboardTopType.Kind
}
var file_backend_operation_statistic_proto_depIdxs = []int32{
	26, // 0: backend.operation.SearchFormulaEstimateRequest.pagination:type_name -> backend.operation.PaginationModel
	26, // 1: backend.operation.SearchInventoryStatisticsRequest.pagination:type_name -> backend.operation.PaginationModel
	26, // 2: backend.operation.SearchUserMaterialsStatisticsRequest.pagination:type_name -> backend.operation.PaginationModel
	26, // 3: backend.operation.SearchPriceStatisticsRequest.pagination:type_name -> backend.operation.PaginationModel
	26, // 4: backend.operation.SearchFeedStatisticsRequest.pagination:type_name -> backend.operation.PaginationModel
	26, // 5: backend.operation.CowsAnalysisRequest.pagination:type_name -> backend.operation.PaginationModel
	26, // 6: backend.operation.MixFeedStatisticsRequest.pagination:type_name -> backend.operation.PaginationModel
	26, // 7: backend.operation.SprinkleStatisticsRequest.pagination:type_name -> backend.operation.PaginationModel
	26, // 8: backend.operation.ProcessAnalysisRequest.pagination:type_name -> backend.operation.PaginationModel
	26, // 9: backend.operation.ProcessMixedSprinkleDetailRequest.pagination:type_name -> backend.operation.PaginationModel
	26, // 10: backend.operation.TrainNumberRequest.pagination:type_name -> backend.operation.PaginationModel
	15, // 11: backend.operation.TrainNumberResponse.data:type_name -> backend.operation.TrainNumberData
	27, // 12: backend.operation.TrainNumberData.list:type_name -> backend.operation.FormulaOptionEnum
	28, // 13: backend.operation.SearchAnalysisAccuracyRequest.cattle_parent_category_id:type_name -> backend.operation.CattleCategoryParent.Kind
	29, // 14: backend.operation.SearchAnalysisAccuracyRequest.dashboard_top_type:type_name -> backend.operation.DashboardTopType.Kind
	18, // 15: backend.operation.SearchAnalysisAccuracyResponse.data:type_name -> backend.operation.AnalysisAccuracy
	19, // 16: backend.operation.AnalysisAccuracy.chart:type_name -> backend.operation.Chart
	20, // 17: backend.operation.AnalysisAccuracy.table:type_name -> backend.operation.Table
	21, // 18: backend.operation.Chart.mixed_fodder_accurate_ratio:type_name -> backend.operation.CommonValueRatio
	21, // 19: backend.operation.Chart.mixed_fodder_correct_ratio:type_name -> backend.operation.CommonValueRatio
	21, // 20: backend.operation.Chart.sprinkle_fodder_accurate_ratio:type_name -> backend.operation.CommonValueRatio
	21, // 21: backend.operation.Chart.sprinkle_fodder_correct_ratio:type_name -> backend.operation.CommonValueRatio
	25, // 22: backend.operation.Table.table_list:type_name -> backend.operation.Table.TableList
	22, // 23: backend.operation.CommonValueRatio.data_list:type_name -> backend.operation.ValueRatio
	24, // [24:24] is the sub-list for method output_type
	24, // [24:24] is the sub-list for method input_type
	24, // [24:24] is the sub-list for extension type_name
	24, // [24:24] is the sub-list for extension extendee
	0,  // [0:24] is the sub-list for field type_name
}

func init() { file_backend_operation_statistic_proto_init() }
func file_backend_operation_statistic_proto_init() {
	if File_backend_operation_statistic_proto != nil {
		return
	}
	file_backend_operation_pagination_proto_init()
	file_backend_operation_enum_proto_init()
	file_backend_operation_pasture_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_backend_operation_statistic_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchFormulaEstimateRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchInventoryStatisticsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchUserMaterialsStatisticsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchPriceStatisticsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchFeedStatisticsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FeedChartStatisticsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CowsAnalysisRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AccuracyAggStatisticsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MixFeedStatisticsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SprinkleStatisticsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetDataByNameRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ProcessAnalysisRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ProcessMixedSprinkleDetailRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TrainNumberRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TrainNumberResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TrainNumberData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchAnalysisAccuracyRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SearchAnalysisAccuracyResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AnalysisAccuracy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Chart); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Table); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CommonValueRatio); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ValueRatio); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SprinkleFeedTimeRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MixedCategoryTmrName); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_backend_operation_statistic_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Table_TableList); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_backend_operation_statistic_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   26,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_backend_operation_statistic_proto_goTypes,
		DependencyIndexes: file_backend_operation_statistic_proto_depIdxs,
		MessageInfos:      file_backend_operation_statistic_proto_msgTypes,
	}.Build()
	File_backend_operation_statistic_proto = out.File
	file_backend_operation_statistic_proto_rawDesc = nil
	file_backend_operation_statistic_proto_goTypes = nil
	file_backend_operation_statistic_proto_depIdxs = nil
}