swh:1:snp:e77894886b450c6109aac4a3cdd519d6ed38b51f
Raw File
Tip revision: 84004c978c1a98cc5c46e7beb18f8861a32556cf authored by hougang liu on 25 February 2019, 03:02:46 UTC
add latest tag for katib images
Tip revision: 84004c9
api.pb.go
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: api.proto

/*
Package api is a generated protocol buffer package.

It is generated from these files:
	api.proto

It has these top-level messages:
	FeasibleSpace
	ParameterConfig
	Parameter
	MetricsLogSet
	Metrics
	MetricsValueTime
	MetricsLog
	SuggestionParameter
	EarlyStoppingParameter
	Tag
	StudyOverview
	Trial
	Worker
	NasConfig
	GraphConfig
	Operation
	StudyConfig
	CreateStudyRequest
	CreateStudyReply
	DeleteStudyRequest
	DeleteStudyReply
	GetStudyRequest
	GetStudyReply
	GetStudyListRequest
	GetStudyListReply
	CreateTrialRequest
	CreateTrialReply
	GetTrialsRequest
	GetTrialsReply
	GetTrialRequest
	GetTrialReply
	RegisterWorkerRequest
	RegisterWorkerReply
	StopWorkersRequest
	StopWorkersReply
	GetWorkersRequest
	GetWorkersReply
	UpdateWorkerStateRequest
	UpdateWorkerStateReply
	GetWorkerFullInfoRequest
	WorkerFullInfo
	GetWorkerFullInfoReply
	GetSuggestionsRequest
	GetSuggestionsReply
	GetShouldStopWorkersRequest
	GetShouldStopWorkersReply
	GetMetricsRequest
	GetMetricsReply
	ReportMetricsLogsRequest
	ReportMetricsLogsReply
	ModelInfo
	DataSetInfo
	SaveStudyRequest
	SaveStudyReply
	SaveModelRequest
	SaveModelReply
	GetSavedStudiesRequest
	GetSavedStudiesReply
	GetSavedModelsRequest
	GetSavedModelsReply
	GetSavedModelRequest
	GetSavedModelReply
	SetSuggestionParametersRequest
	SetSuggestionParametersReply
	GetSuggestionParametersRequest
	GetSuggestionParametersReply
	GetSuggestionParameterListRequest
	SuggestionParameterSet
	GetSuggestionParameterListReply
	StopSuggestionRequest
	StopSuggestionReply
	SetEarlyStoppingParametersRequest
	SetEarlyStoppingParametersReply
	GetEarlyStoppingParametersRequest
	GetEarlyStoppingParametersReply
	GetEarlyStoppingParameterListRequest
	EarlyStoppingParameterSet
	GetEarlyStoppingParameterListReply
*/
package api

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "google.golang.org/genproto/googleapis/api/annotations"

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

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

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

// *
// Types of value for HyperParameter.
type ParameterType int32

const (
	ParameterType_UNKNOWN_TYPE ParameterType = 0
	ParameterType_DOUBLE       ParameterType = 1
	ParameterType_INT          ParameterType = 2
	ParameterType_DISCRETE     ParameterType = 3
	ParameterType_CATEGORICAL  ParameterType = 4
)

var ParameterType_name = map[int32]string{
	0: "UNKNOWN_TYPE",
	1: "DOUBLE",
	2: "INT",
	3: "DISCRETE",
	4: "CATEGORICAL",
}
var ParameterType_value = map[string]int32{
	"UNKNOWN_TYPE": 0,
	"DOUBLE":       1,
	"INT":          2,
	"DISCRETE":     3,
	"CATEGORICAL":  4,
}

func (x ParameterType) String() string {
	return proto.EnumName(ParameterType_name, int32(x))
}
func (ParameterType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }

// *
// Direction of optimization. Minimize or Maximize.
type OptimizationType int32

const (
	OptimizationType_UNKNOWN_OPTIMIZATION OptimizationType = 0
	OptimizationType_MINIMIZE             OptimizationType = 1
	OptimizationType_MAXIMIZE             OptimizationType = 2
)

var OptimizationType_name = map[int32]string{
	0: "UNKNOWN_OPTIMIZATION",
	1: "MINIMIZE",
	2: "MAXIMIZE",
}
var OptimizationType_value = map[string]int32{
	"UNKNOWN_OPTIMIZATION": 0,
	"MINIMIZE":             1,
	"MAXIMIZE":             2,
}

func (x OptimizationType) String() string {
	return proto.EnumName(OptimizationType_name, int32(x))
}
func (OptimizationType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }

// *
// Status code for worker.
// This value is stored as TINYINT in MySQL.
type State int32

const (
	State_PENDING   State = 0
	State_RUNNING   State = 1
	State_COMPLETED State = 2
	State_KILLED    State = 3
	State_ERROR     State = 120
)

var State_name = map[int32]string{
	0:   "PENDING",
	1:   "RUNNING",
	2:   "COMPLETED",
	3:   "KILLED",
	120: "ERROR",
}
var State_value = map[string]int32{
	"PENDING":   0,
	"RUNNING":   1,
	"COMPLETED": 2,
	"KILLED":    3,
	"ERROR":     120,
}

func (x State) String() string {
	return proto.EnumName(State_name, int32(x))
}
func (State) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }

// *
// Feasible space for optimization.
// Int and Double type use Max/Min.
// Discrete and Categorical type use List.
type FeasibleSpace struct {
	Max  string   `protobuf:"bytes,1,opt,name=max" json:"max,omitempty"`
	Min  string   `protobuf:"bytes,2,opt,name=min" json:"min,omitempty"`
	List []string `protobuf:"bytes,3,rep,name=list" json:"list,omitempty"`
	Step string   `protobuf:"bytes,4,opt,name=step" json:"step,omitempty"`
}

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

func (m *FeasibleSpace) GetMax() string {
	if m != nil {
		return m.Max
	}
	return ""
}

func (m *FeasibleSpace) GetMin() string {
	if m != nil {
		return m.Min
	}
	return ""
}

func (m *FeasibleSpace) GetList() []string {
	if m != nil {
		return m.List
	}
	return nil
}

func (m *FeasibleSpace) GetStep() string {
	if m != nil {
		return m.Step
	}
	return ""
}

// *
// Config for a Hyper parameter.
// Katib will create each Hyper parameter from this config.
type ParameterConfig struct {
	Name          string         `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	ParameterType ParameterType  `protobuf:"varint,2,opt,name=parameter_type,json=parameterType,enum=api.ParameterType" json:"parameter_type,omitempty"`
	Feasible      *FeasibleSpace `protobuf:"bytes,3,opt,name=feasible" json:"feasible,omitempty"`
}

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

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

func (m *ParameterConfig) GetParameterType() ParameterType {
	if m != nil {
		return m.ParameterType
	}
	return ParameterType_UNKNOWN_TYPE
}

func (m *ParameterConfig) GetFeasible() *FeasibleSpace {
	if m != nil {
		return m.Feasible
	}
	return nil
}

// *
// Value of a Hyper parameter.
// This will be created from a correcponding Config.
type Parameter struct {
	Name          string        `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	ParameterType ParameterType `protobuf:"varint,2,opt,name=parameter_type,json=parameterType,enum=api.ParameterType" json:"parameter_type,omitempty"`
	Value         string        `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"`
}

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

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

func (m *Parameter) GetParameterType() ParameterType {
	if m != nil {
		return m.ParameterType
	}
	return ParameterType_UNKNOWN_TYPE
}

func (m *Parameter) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

// *
// Logs of metrics for a worker.
type MetricsLogSet struct {
	WorkerId     string        `protobuf:"bytes,1,opt,name=worker_id,json=workerId" json:"worker_id,omitempty"`
	MetricsLogs  []*MetricsLog `protobuf:"bytes,2,rep,name=metrics_logs,json=metricsLogs" json:"metrics_logs,omitempty"`
	WorkerStatus State         `protobuf:"varint,3,opt,name=worker_status,json=workerStatus,enum=api.State" json:"worker_status,omitempty"`
}

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

func (m *MetricsLogSet) GetWorkerId() string {
	if m != nil {
		return m.WorkerId
	}
	return ""
}

func (m *MetricsLogSet) GetMetricsLogs() []*MetricsLog {
	if m != nil {
		return m.MetricsLogs
	}
	return nil
}

func (m *MetricsLogSet) GetWorkerStatus() State {
	if m != nil {
		return m.WorkerStatus
	}
	return State_PENDING
}

// *
// Metrics of a worker
type Metrics struct {
	Name  string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
}

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

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

func (m *Metrics) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

// *
// Metrics of a worker with timestamp
type MetricsValueTime struct {
	Time  string `protobuf:"bytes,1,opt,name=time" json:"time,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
}

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

func (m *MetricsValueTime) GetTime() string {
	if m != nil {
		return m.Time
	}
	return ""
}

func (m *MetricsValueTime) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

// *
// Metrics logs of a worker
type MetricsLog struct {
	Name   string              `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Values []*MetricsValueTime `protobuf:"bytes,2,rep,name=values" json:"values,omitempty"`
}

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

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

func (m *MetricsLog) GetValues() []*MetricsValueTime {
	if m != nil {
		return m.Values
	}
	return nil
}

// *
// Parameter for Suggestion service. Key-value format.
type SuggestionParameter struct {
	Name  string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
}

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

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

func (m *SuggestionParameter) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

// *
// Parameter for EarlyStopping service. Key-value format.
type EarlyStoppingParameter struct {
	Name  string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
}

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

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

func (m *EarlyStoppingParameter) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

// *
// Tag for each resource.
type Tag struct {
	Name  string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
}

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

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

func (m *Tag) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

// *
// Overview of a study. For UI.
type StudyOverview struct {
	Name        string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Owner       string `protobuf:"bytes,2,opt,name=owner" json:"owner,omitempty"`
	Id          string `protobuf:"bytes,3,opt,name=id" json:"id,omitempty"`
	Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"`
}

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

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

func (m *StudyOverview) GetOwner() string {
	if m != nil {
		return m.Owner
	}
	return ""
}

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

func (m *StudyOverview) GetDescription() string {
	if m != nil {
		return m.Description
	}
	return ""
}

// *
// A set of Hyperparameter.
// In a study, multiple trials are evaluated by workers.
// Suggestion service will generate next trials.
type Trial struct {
	TrialId        string       `protobuf:"bytes,1,opt,name=trial_id,json=trialId" json:"trial_id,omitempty"`
	StudyId        string       `protobuf:"bytes,2,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
	ParameterSet   []*Parameter `protobuf:"bytes,3,rep,name=parameter_set,json=parameterSet" json:"parameter_set,omitempty"`
	ObjectiveValue string       `protobuf:"bytes,4,opt,name=objective_value,json=objectiveValue" json:"objective_value,omitempty"`
	Tags           []*Tag       `protobuf:"bytes,5,rep,name=tags" json:"tags,omitempty"`
}

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

func (m *Trial) GetTrialId() string {
	if m != nil {
		return m.TrialId
	}
	return ""
}

func (m *Trial) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

func (m *Trial) GetParameterSet() []*Parameter {
	if m != nil {
		return m.ParameterSet
	}
	return nil
}

func (m *Trial) GetObjectiveValue() string {
	if m != nil {
		return m.ObjectiveValue
	}
	return ""
}

func (m *Trial) GetTags() []*Tag {
	if m != nil {
		return m.Tags
	}
	return nil
}

// *
// A process of evaluation for a trial.
// Types of worker supported by Katib are k8s Job, TF-Job, and Pytorch-Job.
type Worker struct {
	WorkerId     string `protobuf:"bytes,1,opt,name=worker_id,json=workerId" json:"worker_id,omitempty"`
	StudyId      string `protobuf:"bytes,2,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
	TrialId      string `protobuf:"bytes,3,opt,name=trial_id,json=trialId" json:"trial_id,omitempty"`
	Type         string `protobuf:"bytes,4,opt,name=Type" json:"Type,omitempty"`
	Status       State  `protobuf:"varint,5,opt,name=status,enum=api.State" json:"status,omitempty"`
	TemplatePath string `protobuf:"bytes,6,opt,name=TemplatePath" json:"TemplatePath,omitempty"`
	Tags         []*Tag `protobuf:"bytes,7,rep,name=tags" json:"tags,omitempty"`
}

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

func (m *Worker) GetWorkerId() string {
	if m != nil {
		return m.WorkerId
	}
	return ""
}

func (m *Worker) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

func (m *Worker) GetTrialId() string {
	if m != nil {
		return m.TrialId
	}
	return ""
}

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

func (m *Worker) GetStatus() State {
	if m != nil {
		return m.Status
	}
	return State_PENDING
}

func (m *Worker) GetTemplatePath() string {
	if m != nil {
		return m.TemplatePath
	}
	return ""
}

func (m *Worker) GetTags() []*Tag {
	if m != nil {
		return m.Tags
	}
	return nil
}

// *
// NasConfig contains a config of NAS job
type NasConfig struct {
	GraphConfig *GraphConfig          `protobuf:"bytes,1,opt,name=graph_config,json=graphConfig" json:"graph_config,omitempty"`
	Operations  *NasConfig_Operations `protobuf:"bytes,2,opt,name=operations" json:"operations,omitempty"`
}

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

func (m *NasConfig) GetGraphConfig() *GraphConfig {
	if m != nil {
		return m.GraphConfig
	}
	return nil
}

func (m *NasConfig) GetOperations() *NasConfig_Operations {
	if m != nil {
		return m.Operations
	}
	return nil
}

type NasConfig_Operations struct {
	Operation []*Operation `protobuf:"bytes,1,rep,name=operation" json:"operation,omitempty"`
}

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

func (m *NasConfig_Operations) GetOperation() []*Operation {
	if m != nil {
		return m.Operation
	}
	return nil
}

// *
// GraphConfig contains a config of DAG
type GraphConfig struct {
	NumLayers  int32   `protobuf:"varint,1,opt,name=num_layers,json=numLayers" json:"num_layers,omitempty"`
	InputSize  []int32 `protobuf:"varint,2,rep,packed,name=input_size,json=inputSize" json:"input_size,omitempty"`
	OutputSize []int32 `protobuf:"varint,3,rep,packed,name=output_size,json=outputSize" json:"output_size,omitempty"`
}

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

func (m *GraphConfig) GetNumLayers() int32 {
	if m != nil {
		return m.NumLayers
	}
	return 0
}

func (m *GraphConfig) GetInputSize() []int32 {
	if m != nil {
		return m.InputSize
	}
	return nil
}

func (m *GraphConfig) GetOutputSize() []int32 {
	if m != nil {
		return m.OutputSize
	}
	return nil
}

// *
// Config for operations in DAG
type Operation struct {
	OperationType    string                      `protobuf:"bytes,1,opt,name=operationType" json:"operationType,omitempty"`
	ParameterConfigs *Operation_ParameterConfigs `protobuf:"bytes,2,opt,name=parameter_configs,json=parameterConfigs" json:"parameter_configs,omitempty"`
}

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

func (m *Operation) GetOperationType() string {
	if m != nil {
		return m.OperationType
	}
	return ""
}

func (m *Operation) GetParameterConfigs() *Operation_ParameterConfigs {
	if m != nil {
		return m.ParameterConfigs
	}
	return nil
}

// *
// List of ParameterConfig
type Operation_ParameterConfigs struct {
	Configs []*ParameterConfig `protobuf:"bytes,1,rep,name=configs" json:"configs,omitempty"`
}

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

func (m *Operation_ParameterConfigs) GetConfigs() []*ParameterConfig {
	if m != nil {
		return m.Configs
	}
	return nil
}

// *
// Config of a Study. Study represents a single optimization run over a feasible space.
// Each Study contains a configuration describing the feasible space, as well as a set of Trials.
// It is assumed that objective function f(x) does not change in the course of a Study.
type StudyConfig struct {
	Name               string                        `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Owner              string                        `protobuf:"bytes,2,opt,name=owner" json:"owner,omitempty"`
	OptimizationType   OptimizationType              `protobuf:"varint,3,opt,name=optimization_type,json=optimizationType,enum=api.OptimizationType" json:"optimization_type,omitempty"`
	OptimizationGoal   float64                       `protobuf:"fixed64,4,opt,name=optimization_goal,json=optimizationGoal" json:"optimization_goal,omitempty"`
	ParameterConfigs   *StudyConfig_ParameterConfigs `protobuf:"bytes,5,opt,name=parameter_configs,json=parameterConfigs" json:"parameter_configs,omitempty"`
	AccessPermissions  []string                      `protobuf:"bytes,6,rep,name=access_permissions,json=accessPermissions" json:"access_permissions,omitempty"`
	Tags               []*Tag                        `protobuf:"bytes,7,rep,name=tags" json:"tags,omitempty"`
	ObjectiveValueName string                        `protobuf:"bytes,8,opt,name=objective_value_name,json=objectiveValueName" json:"objective_value_name,omitempty"`
	Metrics            []string                      `protobuf:"bytes,9,rep,name=metrics" json:"metrics,omitempty"`
	JobId              string                        `protobuf:"bytes,10,opt,name=jobId" json:"jobId,omitempty"`
	NasConfig          *NasConfig                    `protobuf:"bytes,11,opt,name=nas_config,json=nasConfig" json:"nas_config,omitempty"`
	JobType            string                        `protobuf:"bytes,12,opt,name=job_type,json=jobType" json:"job_type,omitempty"`
}

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

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

func (m *StudyConfig) GetOwner() string {
	if m != nil {
		return m.Owner
	}
	return ""
}

func (m *StudyConfig) GetOptimizationType() OptimizationType {
	if m != nil {
		return m.OptimizationType
	}
	return OptimizationType_UNKNOWN_OPTIMIZATION
}

func (m *StudyConfig) GetOptimizationGoal() float64 {
	if m != nil {
		return m.OptimizationGoal
	}
	return 0
}

func (m *StudyConfig) GetParameterConfigs() *StudyConfig_ParameterConfigs {
	if m != nil {
		return m.ParameterConfigs
	}
	return nil
}

func (m *StudyConfig) GetAccessPermissions() []string {
	if m != nil {
		return m.AccessPermissions
	}
	return nil
}

func (m *StudyConfig) GetTags() []*Tag {
	if m != nil {
		return m.Tags
	}
	return nil
}

func (m *StudyConfig) GetObjectiveValueName() string {
	if m != nil {
		return m.ObjectiveValueName
	}
	return ""
}

func (m *StudyConfig) GetMetrics() []string {
	if m != nil {
		return m.Metrics
	}
	return nil
}

func (m *StudyConfig) GetJobId() string {
	if m != nil {
		return m.JobId
	}
	return ""
}

func (m *StudyConfig) GetNasConfig() *NasConfig {
	if m != nil {
		return m.NasConfig
	}
	return nil
}

func (m *StudyConfig) GetJobType() string {
	if m != nil {
		return m.JobType
	}
	return ""
}

// *
// List of ParameterConfig
type StudyConfig_ParameterConfigs struct {
	Configs []*ParameterConfig `protobuf:"bytes,1,rep,name=configs" json:"configs,omitempty"`
}

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

func (m *StudyConfig_ParameterConfigs) GetConfigs() []*ParameterConfig {
	if m != nil {
		return m.Configs
	}
	return nil
}

// *
// Create a Study from Study Config.
// Generate an unique ID and store the Study to DB.
type CreateStudyRequest struct {
	StudyConfig *StudyConfig `protobuf:"bytes,1,opt,name=study_config,json=studyConfig" json:"study_config,omitempty"`
}

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

func (m *CreateStudyRequest) GetStudyConfig() *StudyConfig {
	if m != nil {
		return m.StudyConfig
	}
	return nil
}

// *
// Return generated StudyID.
type CreateStudyReply struct {
	StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
}

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

func (m *CreateStudyReply) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

// *
// Delete a Study from DB by Study ID.
type DeleteStudyRequest struct {
	StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
}

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

func (m *DeleteStudyRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

// *
// Return deleted Study ID.
type DeleteStudyReply struct {
	StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
}

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

func (m *DeleteStudyReply) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

// *
// Get a Study Config from DB by ID of Study.
type GetStudyRequest struct {
	StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
}

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

func (m *GetStudyRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

// *
// Return a config of specified Study.
type GetStudyReply struct {
	StudyConfig *StudyConfig `protobuf:"bytes,1,opt,name=study_config,json=studyConfig" json:"study_config,omitempty"`
}

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

func (m *GetStudyReply) GetStudyConfig() *StudyConfig {
	if m != nil {
		return m.StudyConfig
	}
	return nil
}

// *
// Get all Study Configs from DB.
type GetStudyListRequest struct {
}

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

// *
// Return a overview list of Studies.
type GetStudyListReply struct {
	StudyOverviews []*StudyOverview `protobuf:"bytes,1,rep,name=study_overviews,json=studyOverviews" json:"study_overviews,omitempty"`
}

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

func (m *GetStudyListReply) GetStudyOverviews() []*StudyOverview {
	if m != nil {
		return m.StudyOverviews
	}
	return nil
}

// *
// Create a Trial from Trial Config.
// Generate an unique ID and store the Trial to DB.
type CreateTrialRequest struct {
	Trial *Trial `protobuf:"bytes,1,opt,name=trial" json:"trial,omitempty"`
}

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

func (m *CreateTrialRequest) GetTrial() *Trial {
	if m != nil {
		return m.Trial
	}
	return nil
}

// *
// Return generated TrialID.
type CreateTrialReply struct {
	TrialId string `protobuf:"bytes,1,opt,name=trial_id,json=trialId" json:"trial_id,omitempty"`
}

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

func (m *CreateTrialReply) GetTrialId() string {
	if m != nil {
		return m.TrialId
	}
	return ""
}

// *
// Get a Trial Configs from DB by ID of Study.
type GetTrialsRequest struct {
	StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
}

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

func (m *GetTrialsRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

// *
// Return a trial list in specified Study.
type GetTrialsReply struct {
	Trials []*Trial `protobuf:"bytes,1,rep,name=trials" json:"trials,omitempty"`
}

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

func (m *GetTrialsReply) GetTrials() []*Trial {
	if m != nil {
		return m.Trials
	}
	return nil
}

// *
// Get a trial configuration from DB by trial ID
type GetTrialRequest struct {
	TrialId string `protobuf:"bytes,1,opt,name=trial_id,json=trialId" json:"trial_id,omitempty"`
}

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

func (m *GetTrialRequest) GetTrialId() string {
	if m != nil {
		return m.TrialId
	}
	return ""
}

// *
// Return a trial configuration by specified trial ID
type GetTrialReply struct {
	Trial *Trial `protobuf:"bytes,1,opt,name=trial" json:"trial,omitempty"`
}

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

func (m *GetTrialReply) GetTrial() *Trial {
	if m != nil {
		return m.Trial
	}
	return nil
}

// *
// Create a Worker from Worker Config.
// Generate an unique ID and store the Worker to DB.
type RegisterWorkerRequest struct {
	Worker *Worker `protobuf:"bytes,1,opt,name=worker" json:"worker,omitempty"`
}

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

func (m *RegisterWorkerRequest) GetWorker() *Worker {
	if m != nil {
		return m.Worker
	}
	return nil
}

// *
// Return generated WorkerID.
type RegisterWorkerReply struct {
	WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId" json:"worker_id,omitempty"`
}

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

func (m *RegisterWorkerReply) GetWorkerId() string {
	if m != nil {
		return m.WorkerId
	}
	return ""
}

type StopWorkersRequest struct {
	StudyId    string   `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
	WorkerIds  []string `protobuf:"bytes,2,rep,name=worker_ids,json=workerIds" json:"worker_ids,omitempty"`
	IsComplete bool     `protobuf:"varint,3,opt,name=is_complete,json=isComplete" json:"is_complete,omitempty"`
}

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

func (m *StopWorkersRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

func (m *StopWorkersRequest) GetWorkerIds() []string {
	if m != nil {
		return m.WorkerIds
	}
	return nil
}

func (m *StopWorkersRequest) GetIsComplete() bool {
	if m != nil {
		return m.IsComplete
	}
	return false
}

type StopWorkersReply struct {
}

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

// *
// Get a configs and status of a Worker from DB by ID of Study, Trial or Worker.
type GetWorkersRequest struct {
	StudyId  string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
	TrialId  string `protobuf:"bytes,2,opt,name=trial_id,json=trialId" json:"trial_id,omitempty"`
	WorkerId string `protobuf:"bytes,3,opt,name=worker_id,json=workerId" json:"worker_id,omitempty"`
}

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

func (m *GetWorkersRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

func (m *GetWorkersRequest) GetTrialId() string {
	if m != nil {
		return m.TrialId
	}
	return ""
}

func (m *GetWorkersRequest) GetWorkerId() string {
	if m != nil {
		return m.WorkerId
	}
	return ""
}

// *
// Return a Worker list by specified condition.
type GetWorkersReply struct {
	Workers []*Worker `protobuf:"bytes,1,rep,name=workers" json:"workers,omitempty"`
}

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

func (m *GetWorkersReply) GetWorkers() []*Worker {
	if m != nil {
		return m.Workers
	}
	return nil
}

// *
// Update a Status of Worker.
type UpdateWorkerStateRequest struct {
	WorkerId string `protobuf:"bytes,1,opt,name=worker_id,json=workerId" json:"worker_id,omitempty"`
	Status   State  `protobuf:"varint,2,opt,name=status,enum=api.State" json:"status,omitempty"`
}

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

func (m *UpdateWorkerStateRequest) GetWorkerId() string {
	if m != nil {
		return m.WorkerId
	}
	return ""
}

func (m *UpdateWorkerStateRequest) GetStatus() State {
	if m != nil {
		return m.Status
	}
	return State_PENDING
}

type UpdateWorkerStateReply struct {
}

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

// *
// Get a full information related to specified Workers.
// It includes Worker Config, HyperParameters and Metrics Logs.
type GetWorkerFullInfoRequest struct {
	StudyId       string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
	TrialId       string `protobuf:"bytes,2,opt,name=trial_id,json=trialId" json:"trial_id,omitempty"`
	WorkerId      string `protobuf:"bytes,3,opt,name=worker_id,json=workerId" json:"worker_id,omitempty"`
	OnlyLatestLog bool   `protobuf:"varint,4,opt,name=only_latest_log,json=onlyLatestLog" json:"only_latest_log,omitempty"`
}

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

func (m *GetWorkerFullInfoRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

func (m *GetWorkerFullInfoRequest) GetTrialId() string {
	if m != nil {
		return m.TrialId
	}
	return ""
}

func (m *GetWorkerFullInfoRequest) GetWorkerId() string {
	if m != nil {
		return m.WorkerId
	}
	return ""
}

func (m *GetWorkerFullInfoRequest) GetOnlyLatestLog() bool {
	if m != nil {
		return m.OnlyLatestLog
	}
	return false
}

type WorkerFullInfo struct {
	Worker       *Worker       `protobuf:"bytes,1,opt,name=Worker" json:"Worker,omitempty"`
	ParameterSet []*Parameter  `protobuf:"bytes,2,rep,name=parameter_set,json=parameterSet" json:"parameter_set,omitempty"`
	MetricsLogs  []*MetricsLog `protobuf:"bytes,3,rep,name=metrics_logs,json=metricsLogs" json:"metrics_logs,omitempty"`
}

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

func (m *WorkerFullInfo) GetWorker() *Worker {
	if m != nil {
		return m.Worker
	}
	return nil
}

func (m *WorkerFullInfo) GetParameterSet() []*Parameter {
	if m != nil {
		return m.ParameterSet
	}
	return nil
}

func (m *WorkerFullInfo) GetMetricsLogs() []*MetricsLog {
	if m != nil {
		return m.MetricsLogs
	}
	return nil
}

type GetWorkerFullInfoReply struct {
	WorkerFullInfos []*WorkerFullInfo `protobuf:"bytes,1,rep,name=worker_full_infos,json=workerFullInfos" json:"worker_full_infos,omitempty"`
}

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

func (m *GetWorkerFullInfoReply) GetWorkerFullInfos() []*WorkerFullInfo {
	if m != nil {
		return m.WorkerFullInfos
	}
	return nil
}

type GetSuggestionsRequest struct {
	StudyId             string   `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
	SuggestionAlgorithm string   `protobuf:"bytes,2,opt,name=suggestion_algorithm,json=suggestionAlgorithm" json:"suggestion_algorithm,omitempty"`
	RequestNumber       int32    `protobuf:"varint,3,opt,name=request_number,json=requestNumber" json:"request_number,omitempty"`
	LogWorkerIds        []string `protobuf:"bytes,4,rep,name=log_worker_ids,json=logWorkerIds" json:"log_worker_ids,omitempty"`
	ParamId             string   `protobuf:"bytes,5,opt,name=param_id,json=paramId" json:"param_id,omitempty"`
}

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

func (m *GetSuggestionsRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

func (m *GetSuggestionsRequest) GetSuggestionAlgorithm() string {
	if m != nil {
		return m.SuggestionAlgorithm
	}
	return ""
}

func (m *GetSuggestionsRequest) GetRequestNumber() int32 {
	if m != nil {
		return m.RequestNumber
	}
	return 0
}

func (m *GetSuggestionsRequest) GetLogWorkerIds() []string {
	if m != nil {
		return m.LogWorkerIds
	}
	return nil
}

func (m *GetSuggestionsRequest) GetParamId() string {
	if m != nil {
		return m.ParamId
	}
	return ""
}

type GetSuggestionsReply struct {
	Trials []*Trial `protobuf:"bytes,1,rep,name=trials" json:"trials,omitempty"`
}

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

func (m *GetSuggestionsReply) GetTrials() []*Trial {
	if m != nil {
		return m.Trials
	}
	return nil
}

type GetShouldStopWorkersRequest struct {
	StudyId                string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
	EarlyStoppingAlgorithm string `protobuf:"bytes,2,opt,name=early_stopping_algorithm,json=earlyStoppingAlgorithm" json:"early_stopping_algorithm,omitempty"`
	ParamId                string `protobuf:"bytes,5,opt,name=param_id,json=paramId" json:"param_id,omitempty"`
}

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

func (m *GetShouldStopWorkersRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

func (m *GetShouldStopWorkersRequest) GetEarlyStoppingAlgorithm() string {
	if m != nil {
		return m.EarlyStoppingAlgorithm
	}
	return ""
}

func (m *GetShouldStopWorkersRequest) GetParamId() string {
	if m != nil {
		return m.ParamId
	}
	return ""
}

type GetShouldStopWorkersReply struct {
	ShouldStopWorkerIds []string `protobuf:"bytes,1,rep,name=should_stop_worker_ids,json=shouldStopWorkerIds" json:"should_stop_worker_ids,omitempty"`
}

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

func (m *GetShouldStopWorkersReply) GetShouldStopWorkerIds() []string {
	if m != nil {
		return m.ShouldStopWorkerIds
	}
	return nil
}

type GetMetricsRequest struct {
	StudyId      string   `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
	WorkerIds    []string `protobuf:"bytes,2,rep,name=worker_ids,json=workerIds" json:"worker_ids,omitempty"`
	MetricsNames []string `protobuf:"bytes,3,rep,name=metrics_names,json=metricsNames" json:"metrics_names,omitempty"`
}

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

func (m *GetMetricsRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

func (m *GetMetricsRequest) GetWorkerIds() []string {
	if m != nil {
		return m.WorkerIds
	}
	return nil
}

func (m *GetMetricsRequest) GetMetricsNames() []string {
	if m != nil {
		return m.MetricsNames
	}
	return nil
}

type GetMetricsReply struct {
	MetricsLogSets []*MetricsLogSet `protobuf:"bytes,1,rep,name=metrics_log_sets,json=metricsLogSets" json:"metrics_log_sets,omitempty"`
}

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

func (m *GetMetricsReply) GetMetricsLogSets() []*MetricsLogSet {
	if m != nil {
		return m.MetricsLogSets
	}
	return nil
}

type ReportMetricsLogsRequest struct {
	StudyId        string           `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
	MetricsLogSets []*MetricsLogSet `protobuf:"bytes,3,rep,name=metrics_log_sets,json=metricsLogSets" json:"metrics_log_sets,omitempty"`
}

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

func (m *ReportMetricsLogsRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

func (m *ReportMetricsLogsRequest) GetMetricsLogSets() []*MetricsLogSet {
	if m != nil {
		return m.MetricsLogSets
	}
	return nil
}

type ReportMetricsLogsReply struct {
}

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

type ModelInfo struct {
	StudyName  string       `protobuf:"bytes,1,opt,name=study_name,json=studyName" json:"study_name,omitempty"`
	WorkerId   string       `protobuf:"bytes,2,opt,name=worker_id,json=workerId" json:"worker_id,omitempty"`
	Parameters []*Parameter `protobuf:"bytes,3,rep,name=parameters" json:"parameters,omitempty"`
	Metrics    []*Metrics   `protobuf:"bytes,4,rep,name=metrics" json:"metrics,omitempty"`
	ModelPath  string       `protobuf:"bytes,5,opt,name=model_path,json=modelPath" json:"model_path,omitempty"`
}

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

func (m *ModelInfo) GetStudyName() string {
	if m != nil {
		return m.StudyName
	}
	return ""
}

func (m *ModelInfo) GetWorkerId() string {
	if m != nil {
		return m.WorkerId
	}
	return ""
}

func (m *ModelInfo) GetParameters() []*Parameter {
	if m != nil {
		return m.Parameters
	}
	return nil
}

func (m *ModelInfo) GetMetrics() []*Metrics {
	if m != nil {
		return m.Metrics
	}
	return nil
}

func (m *ModelInfo) GetModelPath() string {
	if m != nil {
		return m.ModelPath
	}
	return ""
}

type DataSetInfo struct {
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	Path string `protobuf:"bytes,2,opt,name=path" json:"path,omitempty"`
}

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

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

func (m *DataSetInfo) GetPath() string {
	if m != nil {
		return m.Path
	}
	return ""
}

type SaveStudyRequest struct {
	StudyName   string `protobuf:"bytes,1,opt,name=study_name,json=studyName" json:"study_name,omitempty"`
	Owner       string `protobuf:"bytes,2,opt,name=owner" json:"owner,omitempty"`
	Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"`
}

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

func (m *SaveStudyRequest) GetStudyName() string {
	if m != nil {
		return m.StudyName
	}
	return ""
}

func (m *SaveStudyRequest) GetOwner() string {
	if m != nil {
		return m.Owner
	}
	return ""
}

func (m *SaveStudyRequest) GetDescription() string {
	if m != nil {
		return m.Description
	}
	return ""
}

type SaveStudyReply struct {
}

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

type SaveModelRequest struct {
	Model       *ModelInfo   `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"`
	DataSet     *DataSetInfo `protobuf:"bytes,2,opt,name=data_set,json=dataSet" json:"data_set,omitempty"`
	TensorBoard bool         `protobuf:"varint,3,opt,name=tensor_board,json=tensorBoard" json:"tensor_board,omitempty"`
}

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

func (m *SaveModelRequest) GetModel() *ModelInfo {
	if m != nil {
		return m.Model
	}
	return nil
}

func (m *SaveModelRequest) GetDataSet() *DataSetInfo {
	if m != nil {
		return m.DataSet
	}
	return nil
}

func (m *SaveModelRequest) GetTensorBoard() bool {
	if m != nil {
		return m.TensorBoard
	}
	return false
}

type SaveModelReply struct {
}

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

type GetSavedStudiesRequest struct {
}

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

type GetSavedStudiesReply struct {
	Studies []*StudyOverview `protobuf:"bytes,1,rep,name=studies" json:"studies,omitempty"`
}

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

func (m *GetSavedStudiesReply) GetStudies() []*StudyOverview {
	if m != nil {
		return m.Studies
	}
	return nil
}

type GetSavedModelsRequest struct {
	StudyName string `protobuf:"bytes,1,opt,name=study_name,json=studyName" json:"study_name,omitempty"`
}

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

func (m *GetSavedModelsRequest) GetStudyName() string {
	if m != nil {
		return m.StudyName
	}
	return ""
}

type GetSavedModelsReply struct {
	Models []*ModelInfo `protobuf:"bytes,1,rep,name=models" json:"models,omitempty"`
}

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

func (m *GetSavedModelsReply) GetModels() []*ModelInfo {
	if m != nil {
		return m.Models
	}
	return nil
}

type GetSavedModelRequest struct {
	StudyName string `protobuf:"bytes,1,opt,name=study_name,json=studyName" json:"study_name,omitempty"`
	WorkerId  string `protobuf:"bytes,2,opt,name=worker_id,json=workerId" json:"worker_id,omitempty"`
}

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

func (m *GetSavedModelRequest) GetStudyName() string {
	if m != nil {
		return m.StudyName
	}
	return ""
}

func (m *GetSavedModelRequest) GetWorkerId() string {
	if m != nil {
		return m.WorkerId
	}
	return ""
}

type GetSavedModelReply struct {
	Model *ModelInfo `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"`
}

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

func (m *GetSavedModelReply) GetModel() *ModelInfo {
	if m != nil {
		return m.Model
	}
	return nil
}

type SetSuggestionParametersRequest struct {
	StudyId              string                 `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
	SuggestionAlgorithm  string                 `protobuf:"bytes,2,opt,name=suggestion_algorithm,json=suggestionAlgorithm" json:"suggestion_algorithm,omitempty"`
	ParamId              string                 `protobuf:"bytes,3,opt,name=param_id,json=paramId" json:"param_id,omitempty"`
	SuggestionParameters []*SuggestionParameter `protobuf:"bytes,4,rep,name=suggestion_parameters,json=suggestionParameters" json:"suggestion_parameters,omitempty"`
}

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

func (m *SetSuggestionParametersRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

func (m *SetSuggestionParametersRequest) GetSuggestionAlgorithm() string {
	if m != nil {
		return m.SuggestionAlgorithm
	}
	return ""
}

func (m *SetSuggestionParametersRequest) GetParamId() string {
	if m != nil {
		return m.ParamId
	}
	return ""
}

func (m *SetSuggestionParametersRequest) GetSuggestionParameters() []*SuggestionParameter {
	if m != nil {
		return m.SuggestionParameters
	}
	return nil
}

type SetSuggestionParametersReply struct {
	ParamId string `protobuf:"bytes,1,opt,name=param_id,json=paramId" json:"param_id,omitempty"`
}

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

func (m *SetSuggestionParametersReply) GetParamId() string {
	if m != nil {
		return m.ParamId
	}
	return ""
}

type GetSuggestionParametersRequest struct {
	ParamId string `protobuf:"bytes,1,opt,name=param_id,json=paramId" json:"param_id,omitempty"`
}

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

func (m *GetSuggestionParametersRequest) GetParamId() string {
	if m != nil {
		return m.ParamId
	}
	return ""
}

type GetSuggestionParametersReply struct {
	SuggestionParameters []*SuggestionParameter `protobuf:"bytes,1,rep,name=suggestion_parameters,json=suggestionParameters" json:"suggestion_parameters,omitempty"`
}

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

func (m *GetSuggestionParametersReply) GetSuggestionParameters() []*SuggestionParameter {
	if m != nil {
		return m.SuggestionParameters
	}
	return nil
}

type GetSuggestionParameterListRequest struct {
	StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
}

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

func (m *GetSuggestionParameterListRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

type SuggestionParameterSet struct {
	ParamId              string                 `protobuf:"bytes,1,opt,name=param_id,json=paramId" json:"param_id,omitempty"`
	SuggestionAlgorithm  string                 `protobuf:"bytes,2,opt,name=suggestion_algorithm,json=suggestionAlgorithm" json:"suggestion_algorithm,omitempty"`
	SuggestionParameters []*SuggestionParameter `protobuf:"bytes,3,rep,name=suggestion_parameters,json=suggestionParameters" json:"suggestion_parameters,omitempty"`
}

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

func (m *SuggestionParameterSet) GetParamId() string {
	if m != nil {
		return m.ParamId
	}
	return ""
}

func (m *SuggestionParameterSet) GetSuggestionAlgorithm() string {
	if m != nil {
		return m.SuggestionAlgorithm
	}
	return ""
}

func (m *SuggestionParameterSet) GetSuggestionParameters() []*SuggestionParameter {
	if m != nil {
		return m.SuggestionParameters
	}
	return nil
}

type GetSuggestionParameterListReply struct {
	SuggestionParameterSets []*SuggestionParameterSet `protobuf:"bytes,1,rep,name=suggestion_parameter_sets,json=suggestionParameterSets" json:"suggestion_parameter_sets,omitempty"`
}

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

func (m *GetSuggestionParameterListReply) GetSuggestionParameterSets() []*SuggestionParameterSet {
	if m != nil {
		return m.SuggestionParameterSets
	}
	return nil
}

type StopSuggestionRequest struct {
	StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
}

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

func (m *StopSuggestionRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

type StopSuggestionReply struct {
}

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

type SetEarlyStoppingParametersRequest struct {
	StudyId                 string                    `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
	EarlyStoppingAlgorithm  string                    `protobuf:"bytes,2,opt,name=early_stopping_algorithm,json=earlyStoppingAlgorithm" json:"early_stopping_algorithm,omitempty"`
	ParamId                 string                    `protobuf:"bytes,3,opt,name=param_id,json=paramId" json:"param_id,omitempty"`
	EarlyStoppingParameters []*EarlyStoppingParameter `protobuf:"bytes,4,rep,name=early_stopping_parameters,json=earlyStoppingParameters" json:"early_stopping_parameters,omitempty"`
}

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

func (m *SetEarlyStoppingParametersRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

func (m *SetEarlyStoppingParametersRequest) GetEarlyStoppingAlgorithm() string {
	if m != nil {
		return m.EarlyStoppingAlgorithm
	}
	return ""
}

func (m *SetEarlyStoppingParametersRequest) GetParamId() string {
	if m != nil {
		return m.ParamId
	}
	return ""
}

func (m *SetEarlyStoppingParametersRequest) GetEarlyStoppingParameters() []*EarlyStoppingParameter {
	if m != nil {
		return m.EarlyStoppingParameters
	}
	return nil
}

type SetEarlyStoppingParametersReply struct {
	ParamId string `protobuf:"bytes,1,opt,name=param_id,json=paramId" json:"param_id,omitempty"`
}

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

func (m *SetEarlyStoppingParametersReply) GetParamId() string {
	if m != nil {
		return m.ParamId
	}
	return ""
}

type GetEarlyStoppingParametersRequest struct {
	ParamId string `protobuf:"bytes,1,opt,name=param_id,json=paramId" json:"param_id,omitempty"`
}

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

func (m *GetEarlyStoppingParametersRequest) GetParamId() string {
	if m != nil {
		return m.ParamId
	}
	return ""
}

type GetEarlyStoppingParametersReply struct {
	EarlyStoppingParameters []*EarlyStoppingParameter `protobuf:"bytes,1,rep,name=early_stopping_parameters,json=earlyStoppingParameters" json:"early_stopping_parameters,omitempty"`
}

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

func (m *GetEarlyStoppingParametersReply) GetEarlyStoppingParameters() []*EarlyStoppingParameter {
	if m != nil {
		return m.EarlyStoppingParameters
	}
	return nil
}

type GetEarlyStoppingParameterListRequest struct {
	StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"`
}

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

func (m *GetEarlyStoppingParameterListRequest) GetStudyId() string {
	if m != nil {
		return m.StudyId
	}
	return ""
}

type EarlyStoppingParameterSet struct {
	ParamId                 string                    `protobuf:"bytes,1,opt,name=param_id,json=paramId" json:"param_id,omitempty"`
	EarlyStoppingAlgorithm  string                    `protobuf:"bytes,2,opt,name=early_stopping_algorithm,json=earlyStoppingAlgorithm" json:"early_stopping_algorithm,omitempty"`
	EarlyStoppingParameters []*EarlyStoppingParameter `protobuf:"bytes,3,rep,name=early_stopping_parameters,json=earlyStoppingParameters" json:"early_stopping_parameters,omitempty"`
}

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

func (m *EarlyStoppingParameterSet) GetParamId() string {
	if m != nil {
		return m.ParamId
	}
	return ""
}

func (m *EarlyStoppingParameterSet) GetEarlyStoppingAlgorithm() string {
	if m != nil {
		return m.EarlyStoppingAlgorithm
	}
	return ""
}

func (m *EarlyStoppingParameterSet) GetEarlyStoppingParameters() []*EarlyStoppingParameter {
	if m != nil {
		return m.EarlyStoppingParameters
	}
	return nil
}

type GetEarlyStoppingParameterListReply struct {
	EarlyStoppingParameterSets []*EarlyStoppingParameterSet `protobuf:"bytes,1,rep,name=early_stopping_parameter_sets,json=earlyStoppingParameterSets" json:"early_stopping_parameter_sets,omitempty"`
}

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

func (m *GetEarlyStoppingParameterListReply) GetEarlyStoppingParameterSets() []*EarlyStoppingParameterSet {
	if m != nil {
		return m.EarlyStoppingParameterSets
	}
	return nil
}

func init() {
	proto.RegisterType((*FeasibleSpace)(nil), "api.FeasibleSpace")
	proto.RegisterType((*ParameterConfig)(nil), "api.ParameterConfig")
	proto.RegisterType((*Parameter)(nil), "api.Parameter")
	proto.RegisterType((*MetricsLogSet)(nil), "api.MetricsLogSet")
	proto.RegisterType((*Metrics)(nil), "api.Metrics")
	proto.RegisterType((*MetricsValueTime)(nil), "api.MetricsValueTime")
	proto.RegisterType((*MetricsLog)(nil), "api.MetricsLog")
	proto.RegisterType((*SuggestionParameter)(nil), "api.SuggestionParameter")
	proto.RegisterType((*EarlyStoppingParameter)(nil), "api.EarlyStoppingParameter")
	proto.RegisterType((*Tag)(nil), "api.Tag")
	proto.RegisterType((*StudyOverview)(nil), "api.StudyOverview")
	proto.RegisterType((*Trial)(nil), "api.Trial")
	proto.RegisterType((*Worker)(nil), "api.Worker")
	proto.RegisterType((*NasConfig)(nil), "api.NasConfig")
	proto.RegisterType((*NasConfig_Operations)(nil), "api.NasConfig.Operations")
	proto.RegisterType((*GraphConfig)(nil), "api.GraphConfig")
	proto.RegisterType((*Operation)(nil), "api.Operation")
	proto.RegisterType((*Operation_ParameterConfigs)(nil), "api.Operation.ParameterConfigs")
	proto.RegisterType((*StudyConfig)(nil), "api.StudyConfig")
	proto.RegisterType((*StudyConfig_ParameterConfigs)(nil), "api.StudyConfig.ParameterConfigs")
	proto.RegisterType((*CreateStudyRequest)(nil), "api.CreateStudyRequest")
	proto.RegisterType((*CreateStudyReply)(nil), "api.CreateStudyReply")
	proto.RegisterType((*DeleteStudyRequest)(nil), "api.DeleteStudyRequest")
	proto.RegisterType((*DeleteStudyReply)(nil), "api.DeleteStudyReply")
	proto.RegisterType((*GetStudyRequest)(nil), "api.GetStudyRequest")
	proto.RegisterType((*GetStudyReply)(nil), "api.GetStudyReply")
	proto.RegisterType((*GetStudyListRequest)(nil), "api.GetStudyListRequest")
	proto.RegisterType((*GetStudyListReply)(nil), "api.GetStudyListReply")
	proto.RegisterType((*CreateTrialRequest)(nil), "api.CreateTrialRequest")
	proto.RegisterType((*CreateTrialReply)(nil), "api.CreateTrialReply")
	proto.RegisterType((*GetTrialsRequest)(nil), "api.GetTrialsRequest")
	proto.RegisterType((*GetTrialsReply)(nil), "api.GetTrialsReply")
	proto.RegisterType((*GetTrialRequest)(nil), "api.GetTrialRequest")
	proto.RegisterType((*GetTrialReply)(nil), "api.GetTrialReply")
	proto.RegisterType((*RegisterWorkerRequest)(nil), "api.RegisterWorkerRequest")
	proto.RegisterType((*RegisterWorkerReply)(nil), "api.RegisterWorkerReply")
	proto.RegisterType((*StopWorkersRequest)(nil), "api.StopWorkersRequest")
	proto.RegisterType((*StopWorkersReply)(nil), "api.StopWorkersReply")
	proto.RegisterType((*GetWorkersRequest)(nil), "api.GetWorkersRequest")
	proto.RegisterType((*GetWorkersReply)(nil), "api.GetWorkersReply")
	proto.RegisterType((*UpdateWorkerStateRequest)(nil), "api.UpdateWorkerStateRequest")
	proto.RegisterType((*UpdateWorkerStateReply)(nil), "api.UpdateWorkerStateReply")
	proto.RegisterType((*GetWorkerFullInfoRequest)(nil), "api.GetWorkerFullInfoRequest")
	proto.RegisterType((*WorkerFullInfo)(nil), "api.WorkerFullInfo")
	proto.RegisterType((*GetWorkerFullInfoReply)(nil), "api.GetWorkerFullInfoReply")
	proto.RegisterType((*GetSuggestionsRequest)(nil), "api.GetSuggestionsRequest")
	proto.RegisterType((*GetSuggestionsReply)(nil), "api.GetSuggestionsReply")
	proto.RegisterType((*GetShouldStopWorkersRequest)(nil), "api.GetShouldStopWorkersRequest")
	proto.RegisterType((*GetShouldStopWorkersReply)(nil), "api.GetShouldStopWorkersReply")
	proto.RegisterType((*GetMetricsRequest)(nil), "api.GetMetricsRequest")
	proto.RegisterType((*GetMetricsReply)(nil), "api.GetMetricsReply")
	proto.RegisterType((*ReportMetricsLogsRequest)(nil), "api.ReportMetricsLogsRequest")
	proto.RegisterType((*ReportMetricsLogsReply)(nil), "api.ReportMetricsLogsReply")
	proto.RegisterType((*ModelInfo)(nil), "api.ModelInfo")
	proto.RegisterType((*DataSetInfo)(nil), "api.DataSetInfo")
	proto.RegisterType((*SaveStudyRequest)(nil), "api.SaveStudyRequest")
	proto.RegisterType((*SaveStudyReply)(nil), "api.SaveStudyReply")
	proto.RegisterType((*SaveModelRequest)(nil), "api.SaveModelRequest")
	proto.RegisterType((*SaveModelReply)(nil), "api.SaveModelReply")
	proto.RegisterType((*GetSavedStudiesRequest)(nil), "api.GetSavedStudiesRequest")
	proto.RegisterType((*GetSavedStudiesReply)(nil), "api.GetSavedStudiesReply")
	proto.RegisterType((*GetSavedModelsRequest)(nil), "api.GetSavedModelsRequest")
	proto.RegisterType((*GetSavedModelsReply)(nil), "api.GetSavedModelsReply")
	proto.RegisterType((*GetSavedModelRequest)(nil), "api.GetSavedModelRequest")
	proto.RegisterType((*GetSavedModelReply)(nil), "api.GetSavedModelReply")
	proto.RegisterType((*SetSuggestionParametersRequest)(nil), "api.SetSuggestionParametersRequest")
	proto.RegisterType((*SetSuggestionParametersReply)(nil), "api.SetSuggestionParametersReply")
	proto.RegisterType((*GetSuggestionParametersRequest)(nil), "api.GetSuggestionParametersRequest")
	proto.RegisterType((*GetSuggestionParametersReply)(nil), "api.GetSuggestionParametersReply")
	proto.RegisterType((*GetSuggestionParameterListRequest)(nil), "api.GetSuggestionParameterListRequest")
	proto.RegisterType((*SuggestionParameterSet)(nil), "api.SuggestionParameterSet")
	proto.RegisterType((*GetSuggestionParameterListReply)(nil), "api.GetSuggestionParameterListReply")
	proto.RegisterType((*StopSuggestionRequest)(nil), "api.StopSuggestionRequest")
	proto.RegisterType((*StopSuggestionReply)(nil), "api.StopSuggestionReply")
	proto.RegisterType((*SetEarlyStoppingParametersRequest)(nil), "api.SetEarlyStoppingParametersRequest")
	proto.RegisterType((*SetEarlyStoppingParametersReply)(nil), "api.SetEarlyStoppingParametersReply")
	proto.RegisterType((*GetEarlyStoppingParametersRequest)(nil), "api.GetEarlyStoppingParametersRequest")
	proto.RegisterType((*GetEarlyStoppingParametersReply)(nil), "api.GetEarlyStoppingParametersReply")
	proto.RegisterType((*GetEarlyStoppingParameterListRequest)(nil), "api.GetEarlyStoppingParameterListRequest")
	proto.RegisterType((*EarlyStoppingParameterSet)(nil), "api.EarlyStoppingParameterSet")
	proto.RegisterType((*GetEarlyStoppingParameterListReply)(nil), "api.GetEarlyStoppingParameterListReply")
	proto.RegisterEnum("api.ParameterType", ParameterType_name, ParameterType_value)
	proto.RegisterEnum("api.OptimizationType", OptimizationType_name, OptimizationType_value)
	proto.RegisterEnum("api.State", State_name, State_value)
}

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

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

// Client API for Manager service

type ManagerClient interface {
	// *
	// Create a Study from Study Config.
	// Generate a unique ID and store the Study to DB.
	CreateStudy(ctx context.Context, in *CreateStudyRequest, opts ...grpc.CallOption) (*CreateStudyReply, error)
	// *
	// Get a Study Config from DB by ID of Study.
	GetStudy(ctx context.Context, in *GetStudyRequest, opts ...grpc.CallOption) (*GetStudyReply, error)
	// *
	// Delete a Study from DB by Study ID.
	DeleteStudy(ctx context.Context, in *DeleteStudyRequest, opts ...grpc.CallOption) (*DeleteStudyReply, error)
	// *
	// Get all Study Configs from DB.
	GetStudyList(ctx context.Context, in *GetStudyListRequest, opts ...grpc.CallOption) (*GetStudyListReply, error)
	// *
	// Create a Trial from Trial Config.
	// Generate a unique ID and store the Trial to DB.
	CreateTrial(ctx context.Context, in *CreateTrialRequest, opts ...grpc.CallOption) (*CreateTrialReply, error)
	// *
	// Get a Trial Configs from DB by ID of Study.
	GetTrials(ctx context.Context, in *GetTrialsRequest, opts ...grpc.CallOption) (*GetTrialsReply, error)
	// *
	// Get a Trial Configuration from DB by ID of Trial.
	GetTrial(ctx context.Context, in *GetTrialRequest, opts ...grpc.CallOption) (*GetTrialReply, error)
	// *
	// Create a Worker from Worker Config.
	// Generate a unique ID and store the Worker to DB.
	RegisterWorker(ctx context.Context, in *RegisterWorkerRequest, opts ...grpc.CallOption) (*RegisterWorkerReply, error)
	// *
	// Get a Worker Configs and Status from DB by ID of Study, Trial or Worker.
	GetWorkers(ctx context.Context, in *GetWorkersRequest, opts ...grpc.CallOption) (*GetWorkersReply, error)
	// *
	// Update a Status of Worker.
	UpdateWorkerState(ctx context.Context, in *UpdateWorkerStateRequest, opts ...grpc.CallOption) (*UpdateWorkerStateReply, error)
	// *
	// Get full information related to specified Workers.
	// It includes Worker Config, HyperParameters and Metrics Logs.
	GetWorkerFullInfo(ctx context.Context, in *GetWorkerFullInfoRequest, opts ...grpc.CallOption) (*GetWorkerFullInfoReply, error)
	// *
	// Get Suggestions from a Suggestion service.
	GetSuggestions(ctx context.Context, in *GetSuggestionsRequest, opts ...grpc.CallOption) (*GetSuggestionsReply, error)
	GetShouldStopWorkers(ctx context.Context, in *GetShouldStopWorkersRequest, opts ...grpc.CallOption) (*GetShouldStopWorkersReply, error)
	// *
	// Get metrics of workers.
	// You can get all logs of metrics since start of the worker.
	GetMetrics(ctx context.Context, in *GetMetricsRequest, opts ...grpc.CallOption) (*GetMetricsReply, error)
	// *
	// Create or Update parameter set for a suggestion service.
	// If you specify an ID of parameter set, it will update the parameter set by your request.
	// If you don't specify an ID, it will create a new parameter set for corresponding study and suggestion service.
	// The parameters are key-value format.
	SetSuggestionParameters(ctx context.Context, in *SetSuggestionParametersRequest, opts ...grpc.CallOption) (*SetSuggestionParametersReply, error)
	// *
	// Get suggestion parameter set from DB specified.
	GetSuggestionParameters(ctx context.Context, in *GetSuggestionParametersRequest, opts ...grpc.CallOption) (*GetSuggestionParametersReply, error)
	// *
	// Get all suggestion parameter sets from DB.
	GetSuggestionParameterList(ctx context.Context, in *GetSuggestionParameterListRequest, opts ...grpc.CallOption) (*GetSuggestionParameterListReply, error)
	SetEarlyStoppingParameters(ctx context.Context, in *SetEarlyStoppingParametersRequest, opts ...grpc.CallOption) (*SetEarlyStoppingParametersReply, error)
	GetEarlyStoppingParameters(ctx context.Context, in *GetEarlyStoppingParametersRequest, opts ...grpc.CallOption) (*GetEarlyStoppingParametersReply, error)
	GetEarlyStoppingParameterList(ctx context.Context, in *GetEarlyStoppingParameterListRequest, opts ...grpc.CallOption) (*GetEarlyStoppingParameterListReply, error)
	SaveStudy(ctx context.Context, in *SaveStudyRequest, opts ...grpc.CallOption) (*SaveStudyReply, error)
	SaveModel(ctx context.Context, in *SaveModelRequest, opts ...grpc.CallOption) (*SaveModelReply, error)
	// *
	// Report a logs of metrics for workers.
	// The logs for each worker must have timestamp and must be ordered in time series.
	// When the log you reported are already reported before, it will be dismissed and get no error.
	ReportMetricsLogs(ctx context.Context, in *ReportMetricsLogsRequest, opts ...grpc.CallOption) (*ReportMetricsLogsReply, error)
	GetSavedStudies(ctx context.Context, in *GetSavedStudiesRequest, opts ...grpc.CallOption) (*GetSavedStudiesReply, error)
	GetSavedModels(ctx context.Context, in *GetSavedModelsRequest, opts ...grpc.CallOption) (*GetSavedModelsReply, error)
}

type managerClient struct {
	cc *grpc.ClientConn
}

func NewManagerClient(cc *grpc.ClientConn) ManagerClient {
	return &managerClient{cc}
}

func (c *managerClient) CreateStudy(ctx context.Context, in *CreateStudyRequest, opts ...grpc.CallOption) (*CreateStudyReply, error) {
	out := new(CreateStudyReply)
	err := grpc.Invoke(ctx, "/api.Manager/CreateStudy", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetStudy(ctx context.Context, in *GetStudyRequest, opts ...grpc.CallOption) (*GetStudyReply, error) {
	out := new(GetStudyReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetStudy", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) DeleteStudy(ctx context.Context, in *DeleteStudyRequest, opts ...grpc.CallOption) (*DeleteStudyReply, error) {
	out := new(DeleteStudyReply)
	err := grpc.Invoke(ctx, "/api.Manager/DeleteStudy", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetStudyList(ctx context.Context, in *GetStudyListRequest, opts ...grpc.CallOption) (*GetStudyListReply, error) {
	out := new(GetStudyListReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetStudyList", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) CreateTrial(ctx context.Context, in *CreateTrialRequest, opts ...grpc.CallOption) (*CreateTrialReply, error) {
	out := new(CreateTrialReply)
	err := grpc.Invoke(ctx, "/api.Manager/CreateTrial", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetTrials(ctx context.Context, in *GetTrialsRequest, opts ...grpc.CallOption) (*GetTrialsReply, error) {
	out := new(GetTrialsReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetTrials", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetTrial(ctx context.Context, in *GetTrialRequest, opts ...grpc.CallOption) (*GetTrialReply, error) {
	out := new(GetTrialReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetTrial", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) RegisterWorker(ctx context.Context, in *RegisterWorkerRequest, opts ...grpc.CallOption) (*RegisterWorkerReply, error) {
	out := new(RegisterWorkerReply)
	err := grpc.Invoke(ctx, "/api.Manager/RegisterWorker", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetWorkers(ctx context.Context, in *GetWorkersRequest, opts ...grpc.CallOption) (*GetWorkersReply, error) {
	out := new(GetWorkersReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetWorkers", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) UpdateWorkerState(ctx context.Context, in *UpdateWorkerStateRequest, opts ...grpc.CallOption) (*UpdateWorkerStateReply, error) {
	out := new(UpdateWorkerStateReply)
	err := grpc.Invoke(ctx, "/api.Manager/UpdateWorkerState", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetWorkerFullInfo(ctx context.Context, in *GetWorkerFullInfoRequest, opts ...grpc.CallOption) (*GetWorkerFullInfoReply, error) {
	out := new(GetWorkerFullInfoReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetWorkerFullInfo", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetSuggestions(ctx context.Context, in *GetSuggestionsRequest, opts ...grpc.CallOption) (*GetSuggestionsReply, error) {
	out := new(GetSuggestionsReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetSuggestions", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetShouldStopWorkers(ctx context.Context, in *GetShouldStopWorkersRequest, opts ...grpc.CallOption) (*GetShouldStopWorkersReply, error) {
	out := new(GetShouldStopWorkersReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetShouldStopWorkers", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetMetrics(ctx context.Context, in *GetMetricsRequest, opts ...grpc.CallOption) (*GetMetricsReply, error) {
	out := new(GetMetricsReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetMetrics", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) SetSuggestionParameters(ctx context.Context, in *SetSuggestionParametersRequest, opts ...grpc.CallOption) (*SetSuggestionParametersReply, error) {
	out := new(SetSuggestionParametersReply)
	err := grpc.Invoke(ctx, "/api.Manager/SetSuggestionParameters", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetSuggestionParameters(ctx context.Context, in *GetSuggestionParametersRequest, opts ...grpc.CallOption) (*GetSuggestionParametersReply, error) {
	out := new(GetSuggestionParametersReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetSuggestionParameters", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetSuggestionParameterList(ctx context.Context, in *GetSuggestionParameterListRequest, opts ...grpc.CallOption) (*GetSuggestionParameterListReply, error) {
	out := new(GetSuggestionParameterListReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetSuggestionParameterList", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) SetEarlyStoppingParameters(ctx context.Context, in *SetEarlyStoppingParametersRequest, opts ...grpc.CallOption) (*SetEarlyStoppingParametersReply, error) {
	out := new(SetEarlyStoppingParametersReply)
	err := grpc.Invoke(ctx, "/api.Manager/SetEarlyStoppingParameters", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetEarlyStoppingParameters(ctx context.Context, in *GetEarlyStoppingParametersRequest, opts ...grpc.CallOption) (*GetEarlyStoppingParametersReply, error) {
	out := new(GetEarlyStoppingParametersReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetEarlyStoppingParameters", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetEarlyStoppingParameterList(ctx context.Context, in *GetEarlyStoppingParameterListRequest, opts ...grpc.CallOption) (*GetEarlyStoppingParameterListReply, error) {
	out := new(GetEarlyStoppingParameterListReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetEarlyStoppingParameterList", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) SaveStudy(ctx context.Context, in *SaveStudyRequest, opts ...grpc.CallOption) (*SaveStudyReply, error) {
	out := new(SaveStudyReply)
	err := grpc.Invoke(ctx, "/api.Manager/SaveStudy", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) SaveModel(ctx context.Context, in *SaveModelRequest, opts ...grpc.CallOption) (*SaveModelReply, error) {
	out := new(SaveModelReply)
	err := grpc.Invoke(ctx, "/api.Manager/SaveModel", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) ReportMetricsLogs(ctx context.Context, in *ReportMetricsLogsRequest, opts ...grpc.CallOption) (*ReportMetricsLogsReply, error) {
	out := new(ReportMetricsLogsReply)
	err := grpc.Invoke(ctx, "/api.Manager/ReportMetricsLogs", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetSavedStudies(ctx context.Context, in *GetSavedStudiesRequest, opts ...grpc.CallOption) (*GetSavedStudiesReply, error) {
	out := new(GetSavedStudiesReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetSavedStudies", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *managerClient) GetSavedModels(ctx context.Context, in *GetSavedModelsRequest, opts ...grpc.CallOption) (*GetSavedModelsReply, error) {
	out := new(GetSavedModelsReply)
	err := grpc.Invoke(ctx, "/api.Manager/GetSavedModels", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Server API for Manager service

type ManagerServer interface {
	// *
	// Create a Study from Study Config.
	// Generate a unique ID and store the Study to DB.
	CreateStudy(context.Context, *CreateStudyRequest) (*CreateStudyReply, error)
	// *
	// Get a Study Config from DB by ID of Study.
	GetStudy(context.Context, *GetStudyRequest) (*GetStudyReply, error)
	// *
	// Delete a Study from DB by Study ID.
	DeleteStudy(context.Context, *DeleteStudyRequest) (*DeleteStudyReply, error)
	// *
	// Get all Study Configs from DB.
	GetStudyList(context.Context, *GetStudyListRequest) (*GetStudyListReply, error)
	// *
	// Create a Trial from Trial Config.
	// Generate a unique ID and store the Trial to DB.
	CreateTrial(context.Context, *CreateTrialRequest) (*CreateTrialReply, error)
	// *
	// Get a Trial Configs from DB by ID of Study.
	GetTrials(context.Context, *GetTrialsRequest) (*GetTrialsReply, error)
	// *
	// Get a Trial Configuration from DB by ID of Trial.
	GetTrial(context.Context, *GetTrialRequest) (*GetTrialReply, error)
	// *
	// Create a Worker from Worker Config.
	// Generate a unique ID and store the Worker to DB.
	RegisterWorker(context.Context, *RegisterWorkerRequest) (*RegisterWorkerReply, error)
	// *
	// Get a Worker Configs and Status from DB by ID of Study, Trial or Worker.
	GetWorkers(context.Context, *GetWorkersRequest) (*GetWorkersReply, error)
	// *
	// Update a Status of Worker.
	UpdateWorkerState(context.Context, *UpdateWorkerStateRequest) (*UpdateWorkerStateReply, error)
	// *
	// Get full information related to specified Workers.
	// It includes Worker Config, HyperParameters and Metrics Logs.
	GetWorkerFullInfo(context.Context, *GetWorkerFullInfoRequest) (*GetWorkerFullInfoReply, error)
	// *
	// Get Suggestions from a Suggestion service.
	GetSuggestions(context.Context, *GetSuggestionsRequest) (*GetSuggestionsReply, error)
	GetShouldStopWorkers(context.Context, *GetShouldStopWorkersRequest) (*GetShouldStopWorkersReply, error)
	// *
	// Get metrics of workers.
	// You can get all logs of metrics since start of the worker.
	GetMetrics(context.Context, *GetMetricsRequest) (*GetMetricsReply, error)
	// *
	// Create or Update parameter set for a suggestion service.
	// If you specify an ID of parameter set, it will update the parameter set by your request.
	// If you don't specify an ID, it will create a new parameter set for corresponding study and suggestion service.
	// The parameters are key-value format.
	SetSuggestionParameters(context.Context, *SetSuggestionParametersRequest) (*SetSuggestionParametersReply, error)
	// *
	// Get suggestion parameter set from DB specified.
	GetSuggestionParameters(context.Context, *GetSuggestionParametersRequest) (*GetSuggestionParametersReply, error)
	// *
	// Get all suggestion parameter sets from DB.
	GetSuggestionParameterList(context.Context, *GetSuggestionParameterListRequest) (*GetSuggestionParameterListReply, error)
	SetEarlyStoppingParameters(context.Context, *SetEarlyStoppingParametersRequest) (*SetEarlyStoppingParametersReply, error)
	GetEarlyStoppingParameters(context.Context, *GetEarlyStoppingParametersRequest) (*GetEarlyStoppingParametersReply, error)
	GetEarlyStoppingParameterList(context.Context, *GetEarlyStoppingParameterListRequest) (*GetEarlyStoppingParameterListReply, error)
	SaveStudy(context.Context, *SaveStudyRequest) (*SaveStudyReply, error)
	SaveModel(context.Context, *SaveModelRequest) (*SaveModelReply, error)
	// *
	// Report a logs of metrics for workers.
	// The logs for each worker must have timestamp and must be ordered in time series.
	// When the log you reported are already reported before, it will be dismissed and get no error.
	ReportMetricsLogs(context.Context, *ReportMetricsLogsRequest) (*ReportMetricsLogsReply, error)
	GetSavedStudies(context.Context, *GetSavedStudiesRequest) (*GetSavedStudiesReply, error)
	GetSavedModels(context.Context, *GetSavedModelsRequest) (*GetSavedModelsReply, error)
}

func RegisterManagerServer(s *grpc.Server, srv ManagerServer) {
	s.RegisterService(&_Manager_serviceDesc, srv)
}

func _Manager_CreateStudy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateStudyRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).CreateStudy(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/CreateStudy",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).CreateStudy(ctx, req.(*CreateStudyRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetStudy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetStudyRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetStudy(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetStudy",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetStudy(ctx, req.(*GetStudyRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_DeleteStudy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteStudyRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).DeleteStudy(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/DeleteStudy",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).DeleteStudy(ctx, req.(*DeleteStudyRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetStudyList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetStudyListRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetStudyList(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetStudyList",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetStudyList(ctx, req.(*GetStudyListRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_CreateTrial_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(CreateTrialRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).CreateTrial(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/CreateTrial",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).CreateTrial(ctx, req.(*CreateTrialRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetTrials_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetTrialsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetTrials(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetTrials",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetTrials(ctx, req.(*GetTrialsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetTrial_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetTrialRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetTrial(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetTrial",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetTrial(ctx, req.(*GetTrialRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_RegisterWorker_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(RegisterWorkerRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).RegisterWorker(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/RegisterWorker",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).RegisterWorker(ctx, req.(*RegisterWorkerRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetWorkers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetWorkersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetWorkers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetWorkers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetWorkers(ctx, req.(*GetWorkersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_UpdateWorkerState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(UpdateWorkerStateRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).UpdateWorkerState(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/UpdateWorkerState",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).UpdateWorkerState(ctx, req.(*UpdateWorkerStateRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetWorkerFullInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetWorkerFullInfoRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetWorkerFullInfo(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetWorkerFullInfo",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetWorkerFullInfo(ctx, req.(*GetWorkerFullInfoRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetSuggestions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetSuggestionsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetSuggestions(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetSuggestions",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetSuggestions(ctx, req.(*GetSuggestionsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetShouldStopWorkers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetShouldStopWorkersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetShouldStopWorkers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetShouldStopWorkers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetShouldStopWorkers(ctx, req.(*GetShouldStopWorkersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetMetrics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetMetricsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetMetrics(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetMetrics",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetMetrics(ctx, req.(*GetMetricsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_SetSuggestionParameters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SetSuggestionParametersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).SetSuggestionParameters(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/SetSuggestionParameters",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).SetSuggestionParameters(ctx, req.(*SetSuggestionParametersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetSuggestionParameters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetSuggestionParametersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetSuggestionParameters(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetSuggestionParameters",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetSuggestionParameters(ctx, req.(*GetSuggestionParametersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetSuggestionParameterList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetSuggestionParameterListRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetSuggestionParameterList(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetSuggestionParameterList",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetSuggestionParameterList(ctx, req.(*GetSuggestionParameterListRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_SetEarlyStoppingParameters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SetEarlyStoppingParametersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).SetEarlyStoppingParameters(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/SetEarlyStoppingParameters",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).SetEarlyStoppingParameters(ctx, req.(*SetEarlyStoppingParametersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetEarlyStoppingParameters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetEarlyStoppingParametersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetEarlyStoppingParameters(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetEarlyStoppingParameters",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetEarlyStoppingParameters(ctx, req.(*GetEarlyStoppingParametersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetEarlyStoppingParameterList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetEarlyStoppingParameterListRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetEarlyStoppingParameterList(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetEarlyStoppingParameterList",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetEarlyStoppingParameterList(ctx, req.(*GetEarlyStoppingParameterListRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_SaveStudy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SaveStudyRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).SaveStudy(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/SaveStudy",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).SaveStudy(ctx, req.(*SaveStudyRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_SaveModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SaveModelRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).SaveModel(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/SaveModel",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).SaveModel(ctx, req.(*SaveModelRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_ReportMetricsLogs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ReportMetricsLogsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).ReportMetricsLogs(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/ReportMetricsLogs",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).ReportMetricsLogs(ctx, req.(*ReportMetricsLogsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetSavedStudies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetSavedStudiesRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetSavedStudies(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetSavedStudies",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetSavedStudies(ctx, req.(*GetSavedStudiesRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _Manager_GetSavedModels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetSavedModelsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ManagerServer).GetSavedModels(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Manager/GetSavedModels",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ManagerServer).GetSavedModels(ctx, req.(*GetSavedModelsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _Manager_serviceDesc = grpc.ServiceDesc{
	ServiceName: "api.Manager",
	HandlerType: (*ManagerServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "CreateStudy",
			Handler:    _Manager_CreateStudy_Handler,
		},
		{
			MethodName: "GetStudy",
			Handler:    _Manager_GetStudy_Handler,
		},
		{
			MethodName: "DeleteStudy",
			Handler:    _Manager_DeleteStudy_Handler,
		},
		{
			MethodName: "GetStudyList",
			Handler:    _Manager_GetStudyList_Handler,
		},
		{
			MethodName: "CreateTrial",
			Handler:    _Manager_CreateTrial_Handler,
		},
		{
			MethodName: "GetTrials",
			Handler:    _Manager_GetTrials_Handler,
		},
		{
			MethodName: "GetTrial",
			Handler:    _Manager_GetTrial_Handler,
		},
		{
			MethodName: "RegisterWorker",
			Handler:    _Manager_RegisterWorker_Handler,
		},
		{
			MethodName: "GetWorkers",
			Handler:    _Manager_GetWorkers_Handler,
		},
		{
			MethodName: "UpdateWorkerState",
			Handler:    _Manager_UpdateWorkerState_Handler,
		},
		{
			MethodName: "GetWorkerFullInfo",
			Handler:    _Manager_GetWorkerFullInfo_Handler,
		},
		{
			MethodName: "GetSuggestions",
			Handler:    _Manager_GetSuggestions_Handler,
		},
		{
			MethodName: "GetShouldStopWorkers",
			Handler:    _Manager_GetShouldStopWorkers_Handler,
		},
		{
			MethodName: "GetMetrics",
			Handler:    _Manager_GetMetrics_Handler,
		},
		{
			MethodName: "SetSuggestionParameters",
			Handler:    _Manager_SetSuggestionParameters_Handler,
		},
		{
			MethodName: "GetSuggestionParameters",
			Handler:    _Manager_GetSuggestionParameters_Handler,
		},
		{
			MethodName: "GetSuggestionParameterList",
			Handler:    _Manager_GetSuggestionParameterList_Handler,
		},
		{
			MethodName: "SetEarlyStoppingParameters",
			Handler:    _Manager_SetEarlyStoppingParameters_Handler,
		},
		{
			MethodName: "GetEarlyStoppingParameters",
			Handler:    _Manager_GetEarlyStoppingParameters_Handler,
		},
		{
			MethodName: "GetEarlyStoppingParameterList",
			Handler:    _Manager_GetEarlyStoppingParameterList_Handler,
		},
		{
			MethodName: "SaveStudy",
			Handler:    _Manager_SaveStudy_Handler,
		},
		{
			MethodName: "SaveModel",
			Handler:    _Manager_SaveModel_Handler,
		},
		{
			MethodName: "ReportMetricsLogs",
			Handler:    _Manager_ReportMetricsLogs_Handler,
		},
		{
			MethodName: "GetSavedStudies",
			Handler:    _Manager_GetSavedStudies_Handler,
		},
		{
			MethodName: "GetSavedModels",
			Handler:    _Manager_GetSavedModels_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "api.proto",
}

// Client API for Suggestion service

type SuggestionClient interface {
	GetSuggestions(ctx context.Context, in *GetSuggestionsRequest, opts ...grpc.CallOption) (*GetSuggestionsReply, error)
}

type suggestionClient struct {
	cc *grpc.ClientConn
}

func NewSuggestionClient(cc *grpc.ClientConn) SuggestionClient {
	return &suggestionClient{cc}
}

func (c *suggestionClient) GetSuggestions(ctx context.Context, in *GetSuggestionsRequest, opts ...grpc.CallOption) (*GetSuggestionsReply, error) {
	out := new(GetSuggestionsReply)
	err := grpc.Invoke(ctx, "/api.Suggestion/GetSuggestions", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Server API for Suggestion service

type SuggestionServer interface {
	GetSuggestions(context.Context, *GetSuggestionsRequest) (*GetSuggestionsReply, error)
}

func RegisterSuggestionServer(s *grpc.Server, srv SuggestionServer) {
	s.RegisterService(&_Suggestion_serviceDesc, srv)
}

func _Suggestion_GetSuggestions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetSuggestionsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SuggestionServer).GetSuggestions(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.Suggestion/GetSuggestions",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SuggestionServer).GetSuggestions(ctx, req.(*GetSuggestionsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _Suggestion_serviceDesc = grpc.ServiceDesc{
	ServiceName: "api.Suggestion",
	HandlerType: (*SuggestionServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetSuggestions",
			Handler:    _Suggestion_GetSuggestions_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "api.proto",
}

// Client API for EarlyStopping service

type EarlyStoppingClient interface {
	GetShouldStopWorkers(ctx context.Context, in *GetShouldStopWorkersRequest, opts ...grpc.CallOption) (*GetShouldStopWorkersReply, error)
}

type earlyStoppingClient struct {
	cc *grpc.ClientConn
}

func NewEarlyStoppingClient(cc *grpc.ClientConn) EarlyStoppingClient {
	return &earlyStoppingClient{cc}
}

func (c *earlyStoppingClient) GetShouldStopWorkers(ctx context.Context, in *GetShouldStopWorkersRequest, opts ...grpc.CallOption) (*GetShouldStopWorkersReply, error) {
	out := new(GetShouldStopWorkersReply)
	err := grpc.Invoke(ctx, "/api.EarlyStopping/GetShouldStopWorkers", in, out, c.cc, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// Server API for EarlyStopping service

type EarlyStoppingServer interface {
	GetShouldStopWorkers(context.Context, *GetShouldStopWorkersRequest) (*GetShouldStopWorkersReply, error)
}

func RegisterEarlyStoppingServer(s *grpc.Server, srv EarlyStoppingServer) {
	s.RegisterService(&_EarlyStopping_serviceDesc, srv)
}

func _EarlyStopping_GetShouldStopWorkers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetShouldStopWorkersRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(EarlyStoppingServer).GetShouldStopWorkers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/api.EarlyStopping/GetShouldStopWorkers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(EarlyStoppingServer).GetShouldStopWorkers(ctx, req.(*GetShouldStopWorkersRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _EarlyStopping_serviceDesc = grpc.ServiceDesc{
	ServiceName: "api.EarlyStopping",
	HandlerType: (*EarlyStoppingServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetShouldStopWorkers",
			Handler:    _EarlyStopping_GetShouldStopWorkers_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "api.proto",
}

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

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