//go:build !ignore_autogenerated
// +build !ignore_autogenerated

// Code generated by deepcopy-gen. DO NOT EDIT.

package v1alpha1

import (
	predictionv1alpha1 "github.com/gocrane/api/prediction/v1alpha1"
	v2beta2 "k8s.io/api/autoscaling/v2beta2"
	v1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	runtime "k8s.io/apimachinery/pkg/runtime"
	autoscalingk8siov1 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1"
)

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ContainerResourcePolicy) DeepCopyInto(out *ContainerResourcePolicy) {
	*out = *in
	if in.ScaleUpPolicy != nil {
		in, out := &in.ScaleUpPolicy, &out.ScaleUpPolicy
		*out = new(ContainerScalingPolicy)
		(*in).DeepCopyInto(*out)
	}
	if in.ScaleDownPolicy != nil {
		in, out := &in.ScaleDownPolicy, &out.ScaleDownPolicy
		*out = new(ContainerScalingPolicy)
		(*in).DeepCopyInto(*out)
	}
	if in.MinAllowed != nil {
		in, out := &in.MinAllowed, &out.MinAllowed
		*out = make(v1.ResourceList, len(*in))
		for key, val := range *in {
			(*out)[key] = val.DeepCopy()
		}
	}
	if in.MaxAllowed != nil {
		in, out := &in.MaxAllowed, &out.MaxAllowed
		*out = make(v1.ResourceList, len(*in))
		for key, val := range *in {
			(*out)[key] = val.DeepCopy()
		}
	}
	if in.ControlledResources != nil {
		in, out := &in.ControlledResources, &out.ControlledResources
		*out = new([]ResourceName)
		if **in != nil {
			in, out := *in, *out
			*out = make([]ResourceName, len(*in))
			copy(*out, *in)
		}
	}
	if in.ControlledValues != nil {
		in, out := &in.ControlledValues, &out.ControlledValues
		*out = new(autoscalingk8siov1.ContainerControlledValues)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerResourcePolicy.
func (in *ContainerResourcePolicy) DeepCopy() *ContainerResourcePolicy {
	if in == nil {
		return nil
	}
	out := new(ContainerResourcePolicy)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ContainerScalingPolicy) DeepCopyInto(out *ContainerScalingPolicy) {
	*out = *in
	if in.ScaleMode != nil {
		in, out := &in.ScaleMode, &out.ScaleMode
		*out = new(autoscalingk8siov1.ContainerScalingMode)
		**out = **in
	}
	if in.MetricThresholds != nil {
		in, out := &in.MetricThresholds, &out.MetricThresholds
		*out = new(ResourceMetricList)
		if **in != nil {
			in, out := *in, *out
			*out = make(map[ResourceName]ResourceMetric, len(*in))
			for key, val := range *in {
				(*out)[key] = *val.DeepCopy()
			}
		}
	}
	if in.StabilizationWindowSeconds != nil {
		in, out := &in.StabilizationWindowSeconds, &out.StabilizationWindowSeconds
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerScalingPolicy.
func (in *ContainerScalingPolicy) DeepCopy() *ContainerScalingPolicy {
	if in == nil {
		return nil
	}
	out := new(ContainerScalingPolicy)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CronSpec) DeepCopyInto(out *CronSpec) {
	*out = *in
	if in.TimeZone != nil {
		in, out := &in.TimeZone, &out.TimeZone
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CronSpec.
func (in *CronSpec) DeepCopy() *CronSpec {
	if in == nil {
		return nil
	}
	out := new(CronSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *EffectiveHorizontalPodAutoscaler) DeepCopyInto(out *EffectiveHorizontalPodAutoscaler) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EffectiveHorizontalPodAutoscaler.
func (in *EffectiveHorizontalPodAutoscaler) DeepCopy() *EffectiveHorizontalPodAutoscaler {
	if in == nil {
		return nil
	}
	out := new(EffectiveHorizontalPodAutoscaler)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *EffectiveHorizontalPodAutoscaler) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *EffectiveHorizontalPodAutoscalerList) DeepCopyInto(out *EffectiveHorizontalPodAutoscalerList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]EffectiveHorizontalPodAutoscaler, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EffectiveHorizontalPodAutoscalerList.
func (in *EffectiveHorizontalPodAutoscalerList) DeepCopy() *EffectiveHorizontalPodAutoscalerList {
	if in == nil {
		return nil
	}
	out := new(EffectiveHorizontalPodAutoscalerList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *EffectiveHorizontalPodAutoscalerList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *EffectiveHorizontalPodAutoscalerSpec) DeepCopyInto(out *EffectiveHorizontalPodAutoscalerSpec) {
	*out = *in
	out.ScaleTargetRef = in.ScaleTargetRef
	if in.MinReplicas != nil {
		in, out := &in.MinReplicas, &out.MinReplicas
		*out = new(int32)
		**out = **in
	}
	if in.SpecificReplicas != nil {
		in, out := &in.SpecificReplicas, &out.SpecificReplicas
		*out = new(int32)
		**out = **in
	}
	if in.Metrics != nil {
		in, out := &in.Metrics, &out.Metrics
		*out = make([]v2beta2.MetricSpec, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Crons != nil {
		in, out := &in.Crons, &out.Crons
		*out = make([]CronSpec, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Behavior != nil {
		in, out := &in.Behavior, &out.Behavior
		*out = new(v2beta2.HorizontalPodAutoscalerBehavior)
		(*in).DeepCopyInto(*out)
	}
	if in.Prediction != nil {
		in, out := &in.Prediction, &out.Prediction
		*out = new(Prediction)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EffectiveHorizontalPodAutoscalerSpec.
func (in *EffectiveHorizontalPodAutoscalerSpec) DeepCopy() *EffectiveHorizontalPodAutoscalerSpec {
	if in == nil {
		return nil
	}
	out := new(EffectiveHorizontalPodAutoscalerSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *EffectiveHorizontalPodAutoscalerStatus) DeepCopyInto(out *EffectiveHorizontalPodAutoscalerStatus) {
	*out = *in
	if in.ExpectReplicas != nil {
		in, out := &in.ExpectReplicas, &out.ExpectReplicas
		*out = new(int32)
		**out = **in
	}
	if in.CurrentReplicas != nil {
		in, out := &in.CurrentReplicas, &out.CurrentReplicas
		*out = new(int32)
		**out = **in
	}
	if in.LastScaleTime != nil {
		in, out := &in.LastScaleTime, &out.LastScaleTime
		*out = (*in).DeepCopy()
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EffectiveHorizontalPodAutoscalerStatus.
func (in *EffectiveHorizontalPodAutoscalerStatus) DeepCopy() *EffectiveHorizontalPodAutoscalerStatus {
	if in == nil {
		return nil
	}
	out := new(EffectiveHorizontalPodAutoscalerStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *EffectiveVerticalPodAutoscaler) DeepCopyInto(out *EffectiveVerticalPodAutoscaler) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EffectiveVerticalPodAutoscaler.
func (in *EffectiveVerticalPodAutoscaler) DeepCopy() *EffectiveVerticalPodAutoscaler {
	if in == nil {
		return nil
	}
	out := new(EffectiveVerticalPodAutoscaler)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *EffectiveVerticalPodAutoscaler) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *EffectiveVerticalPodAutoscalerList) DeepCopyInto(out *EffectiveVerticalPodAutoscalerList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]EffectiveVerticalPodAutoscaler, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EffectiveVerticalPodAutoscalerList.
func (in *EffectiveVerticalPodAutoscalerList) DeepCopy() *EffectiveVerticalPodAutoscalerList {
	if in == nil {
		return nil
	}
	out := new(EffectiveVerticalPodAutoscalerList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *EffectiveVerticalPodAutoscalerList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *EffectiveVerticalPodAutoscalerSpec) DeepCopyInto(out *EffectiveVerticalPodAutoscalerSpec) {
	*out = *in
	if in.TargetRef != nil {
		in, out := &in.TargetRef, &out.TargetRef
		*out = new(v2beta2.CrossVersionObjectReference)
		**out = **in
	}
	if in.UpdatePolicy != nil {
		in, out := &in.UpdatePolicy, &out.UpdatePolicy
		*out = new(autoscalingk8siov1.PodUpdatePolicy)
		(*in).DeepCopyInto(*out)
	}
	if in.ResourcePolicy != nil {
		in, out := &in.ResourcePolicy, &out.ResourcePolicy
		*out = new(PodResourcePolicy)
		(*in).DeepCopyInto(*out)
	}
	if in.ResourceEstimators != nil {
		in, out := &in.ResourceEstimators, &out.ResourceEstimators
		*out = make([]ResourceEstimator, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EffectiveVerticalPodAutoscalerSpec.
func (in *EffectiveVerticalPodAutoscalerSpec) DeepCopy() *EffectiveVerticalPodAutoscalerSpec {
	if in == nil {
		return nil
	}
	out := new(EffectiveVerticalPodAutoscalerSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *EffectiveVerticalPodAutoscalerStatus) DeepCopyInto(out *EffectiveVerticalPodAutoscalerStatus) {
	*out = *in
	if in.CurrentEstimators != nil {
		in, out := &in.CurrentEstimators, &out.CurrentEstimators
		*out = make([]ResourceEstimatorStatus, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Recommendation != nil {
		in, out := &in.Recommendation, &out.Recommendation
		*out = new(autoscalingk8siov1.RecommendedPodResources)
		(*in).DeepCopyInto(*out)
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EffectiveVerticalPodAutoscalerStatus.
func (in *EffectiveVerticalPodAutoscalerStatus) DeepCopy() *EffectiveVerticalPodAutoscalerStatus {
	if in == nil {
		return nil
	}
	out := new(EffectiveVerticalPodAutoscalerStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PodResourcePolicy) DeepCopyInto(out *PodResourcePolicy) {
	*out = *in
	if in.ContainerPolicies != nil {
		in, out := &in.ContainerPolicies, &out.ContainerPolicies
		*out = make([]ContainerResourcePolicy, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodResourcePolicy.
func (in *PodResourcePolicy) DeepCopy() *PodResourcePolicy {
	if in == nil {
		return nil
	}
	out := new(PodResourcePolicy)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Prediction) DeepCopyInto(out *Prediction) {
	*out = *in
	if in.PredictionWindowSeconds != nil {
		in, out := &in.PredictionWindowSeconds, &out.PredictionWindowSeconds
		*out = new(int32)
		**out = **in
	}
	if in.PredictionAlgorithm != nil {
		in, out := &in.PredictionAlgorithm, &out.PredictionAlgorithm
		*out = new(PredictionAlgorithm)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Prediction.
func (in *Prediction) DeepCopy() *Prediction {
	if in == nil {
		return nil
	}
	out := new(Prediction)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PredictionAlgorithm) DeepCopyInto(out *PredictionAlgorithm) {
	*out = *in
	if in.DSP != nil {
		in, out := &in.DSP, &out.DSP
		*out = new(predictionv1alpha1.DSP)
		(*in).DeepCopyInto(*out)
	}
	if in.Percentile != nil {
		in, out := &in.Percentile, &out.Percentile
		*out = new(predictionv1alpha1.Percentile)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PredictionAlgorithm.
func (in *PredictionAlgorithm) DeepCopy() *PredictionAlgorithm {
	if in == nil {
		return nil
	}
	out := new(PredictionAlgorithm)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ResourceEstimator) DeepCopyInto(out *ResourceEstimator) {
	*out = *in
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceEstimator.
func (in *ResourceEstimator) DeepCopy() *ResourceEstimator {
	if in == nil {
		return nil
	}
	out := new(ResourceEstimator)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ResourceEstimatorStatus) DeepCopyInto(out *ResourceEstimatorStatus) {
	*out = *in
	in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime)
	if in.Recommendation != nil {
		in, out := &in.Recommendation, &out.Recommendation
		*out = new(autoscalingk8siov1.RecommendedPodResources)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceEstimatorStatus.
func (in *ResourceEstimatorStatus) DeepCopy() *ResourceEstimatorStatus {
	if in == nil {
		return nil
	}
	out := new(ResourceEstimatorStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ResourceMetric) DeepCopyInto(out *ResourceMetric) {
	*out = *in
	if in.Utilization != nil {
		in, out := &in.Utilization, &out.Utilization
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceMetric.
func (in *ResourceMetric) DeepCopy() *ResourceMetric {
	if in == nil {
		return nil
	}
	out := new(ResourceMetric)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in ResourceMetricList) DeepCopyInto(out *ResourceMetricList) {
	{
		in := &in
		*out = make(ResourceMetricList, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
		return
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceMetricList.
func (in ResourceMetricList) DeepCopy() ResourceMetricList {
	if in == nil {
		return nil
	}
	out := new(ResourceMetricList)
	in.DeepCopyInto(out)
	return *out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Substitute) DeepCopyInto(out *Substitute) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	out.Spec = in.Spec
	out.Status = in.Status
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Substitute.
func (in *Substitute) DeepCopy() *Substitute {
	if in == nil {
		return nil
	}
	out := new(Substitute)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *Substitute) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SubstituteList) DeepCopyInto(out *SubstituteList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]Substitute, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubstituteList.
func (in *SubstituteList) DeepCopy() *SubstituteList {
	if in == nil {
		return nil
	}
	out := new(SubstituteList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *SubstituteList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SubstituteSpec) DeepCopyInto(out *SubstituteSpec) {
	*out = *in
	out.SubstituteTargetRef = in.SubstituteTargetRef
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubstituteSpec.
func (in *SubstituteSpec) DeepCopy() *SubstituteSpec {
	if in == nil {
		return nil
	}
	out := new(SubstituteSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SubstituteStatus) DeepCopyInto(out *SubstituteStatus) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubstituteStatus.
func (in *SubstituteStatus) DeepCopy() *SubstituteStatus {
	if in == nil {
		return nil
	}
	out := new(SubstituteStatus)
	in.DeepCopyInto(out)
	return out
}
