func (in *OptimalTrial) DeepCopy() *OptimalTrial {
	if in == nil {
		return nil
	}
	out := new(OptimalTrial)
	in.DeepCopyInto(out)
	return out
}
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OptimalTrial.
package v1beta1
import (
	commonv1beta1 "github.com/kubeflow/katib/pkg/apis/controller/common/v1beta1"
	runtime "k8s.io/apimachinery/pkg/runtime"
)
func (in *ConfigMapSource) DeepCopyInto(out *ConfigMapSource) {
	*out = *in
	return
}
func (in *ConfigMapSource) DeepCopy() *ConfigMapSource {
	if in == nil {
		return nil
	}
	out := new(ConfigMapSource)
	in.DeepCopyInto(out)
	return out
}
func (in *Experiment) DeepCopyInto(out *Experiment) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}
func (in *Experiment) DeepCopy() *Experiment {
	if in == nil {
		return nil
	}
	out := new(Experiment)
	in.DeepCopyInto(out)
	return out
}
func (in *Experiment) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *ExperimentCondition) DeepCopyInto(out *ExperimentCondition) {
	*out = *in
	in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime)
	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
	return
}
func (in *ExperimentCondition) DeepCopy() *ExperimentCondition {
	if in == nil {
		return nil
	}
	out := new(ExperimentCondition)
	in.DeepCopyInto(out)
	return out
}
func (in *ExperimentList) DeepCopyInto(out *ExperimentList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]Experiment, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}
func (in *ExperimentList) DeepCopy() *ExperimentList {
	if in == nil {
		return nil
	}
	out := new(ExperimentList)
	in.DeepCopyInto(out)
	return out
}
func (in *ExperimentList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *ExperimentSpec) DeepCopyInto(out *ExperimentSpec) {
	*out = *in
	if in.Parameters != nil {
		in, out := &in.Parameters, &out.Parameters
		*out = make([]ParameterSpec, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Objective != nil {
		in, out := &in.Objective, &out.Objective
		*out = new(commonv1beta1.ObjectiveSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Algorithm != nil {
		in, out := &in.Algorithm, &out.Algorithm
		*out = new(commonv1beta1.AlgorithmSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.EarlyStopping != nil {
		in, out := &in.EarlyStopping, &out.EarlyStopping
		*out = new(commonv1beta1.EarlyStoppingSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.TrialTemplate != nil {
		in, out := &in.TrialTemplate, &out.TrialTemplate
		*out = new(TrialTemplate)
		(*in).DeepCopyInto(*out)
	}
	if in.ParallelTrialCount != nil {
		in, out := &in.ParallelTrialCount, &out.ParallelTrialCount
		*out = new(int32)
		**out = **in
	}
	if in.MaxTrialCount != nil {
		in, out := &in.MaxTrialCount, &out.MaxTrialCount
		*out = new(int32)
		**out = **in
	}
	if in.MaxFailedTrialCount != nil {
		in, out := &in.MaxFailedTrialCount, &out.MaxFailedTrialCount
		*out = new(int32)
		**out = **in
	}
	if in.MetricsCollectorSpec != nil {
		in, out := &in.MetricsCollectorSpec, &out.MetricsCollectorSpec
		*out = new(commonv1beta1.MetricsCollectorSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.NasConfig != nil {
		in, out := &in.NasConfig, &out.NasConfig
		*out = new(NasConfig)
		(*in).DeepCopyInto(*out)
	}
	return
}
func (in *ExperimentSpec) DeepCopy() *ExperimentSpec {
	if in == nil {
		return nil
	}
	out := new(ExperimentSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *ExperimentStatus) DeepCopyInto(out *ExperimentStatus) {
	*out = *in
	if in.StartTime != nil {
		in, out := &in.StartTime, &out.StartTime
		*out = (*in).DeepCopy()
	}
	if in.CompletionTime != nil {
		in, out := &in.CompletionTime, &out.CompletionTime
		*out = (*in).DeepCopy()
	}
	if in.LastReconcileTime != nil {
		in, out := &in.LastReconcileTime, &out.LastReconcileTime
		*out = (*in).DeepCopy()
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]ExperimentCondition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	in.CurrentOptimalTrial.DeepCopyInto(&out.CurrentOptimalTrial)
	if in.RunningTrialList != nil {
		in, out := &in.RunningTrialList, &out.RunningTrialList
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.PendingTrialList != nil {
		in, out := &in.PendingTrialList, &out.PendingTrialList
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.FailedTrialList != nil {
		in, out := &in.FailedTrialList, &out.FailedTrialList
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.SucceededTrialList != nil {
		in, out := &in.SucceededTrialList, &out.SucceededTrialList
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.KilledTrialList != nil {
		in, out := &in.KilledTrialList, &out.KilledTrialList
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.EarlyStoppedTrialList != nil {
		in, out := &in.EarlyStoppedTrialList, &out.EarlyStoppedTrialList
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}
func (in *ExperimentStatus) DeepCopy() *ExperimentStatus {
	if in == nil {
		return nil
	}
	out := new(ExperimentStatus)
	in.DeepCopyInto(out)
	return out
}
func (in *FeasibleSpace) DeepCopyInto(out *FeasibleSpace) {
	*out = *in
	if in.List != nil {
		in, out := &in.List, &out.List
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}
func (in *FeasibleSpace) DeepCopy() *FeasibleSpace {
	if in == nil {
		return nil
	}
	out := new(FeasibleSpace)
	in.DeepCopyInto(out)
	return out
}
func (in *GraphConfig) DeepCopyInto(out *GraphConfig) {
	*out = *in
	if in.NumLayers != nil {
		in, out := &in.NumLayers, &out.NumLayers
		*out = new(int32)
		**out = **in
	}
	if in.InputSizes != nil {
		in, out := &in.InputSizes, &out.InputSizes
		*out = make([]int32, len(*in))
		copy(*out, *in)
	}
	if in.OutputSizes != nil {
		in, out := &in.OutputSizes, &out.OutputSizes
		*out = make([]int32, len(*in))
		copy(*out, *in)
	}
	return
}
func (in *GraphConfig) DeepCopy() *GraphConfig {
	if in == nil {
		return nil
	}
	out := new(GraphConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *NasConfig) DeepCopyInto(out *NasConfig) {
	*out = *in
	in.GraphConfig.DeepCopyInto(&out.GraphConfig)
	if in.Operations != nil {
		in, out := &in.Operations, &out.Operations
		*out = make([]Operation, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}
func (in *NasConfig) DeepCopy() *NasConfig {
	if in == nil {
		return nil
	}
	out := new(NasConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *Operation) DeepCopyInto(out *Operation) {
	*out = *in
	if in.Parameters != nil {
		in, out := &in.Parameters, &out.Parameters
		*out = make([]ParameterSpec, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}
func (in *Operation) DeepCopy() *Operation {
	if in == nil {
		return nil
	}
	out := new(Operation)
	in.DeepCopyInto(out)
	return out
}
func (in *OptimalTrial) DeepCopyInto(out *OptimalTrial) {
	*out = *in
	if in.ParameterAssignments != nil {
		in, out := &in.ParameterAssignments, &out.ParameterAssignments
		*out = make([]commonv1beta1.ParameterAssignment, len(*in))
		copy(*out, *in)
	}
	in.Observation.DeepCopyInto(&out.Observation)
	return
}