// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: vitis/ai/proto/dpu_model_param.proto

#include "vitis/ai/proto/dpu_model_param.pb.h"

#include <algorithm>

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/wire_format_lite.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>

PROTOBUF_PRAGMA_INIT_SEG

namespace _pb = ::PROTOBUF_NAMESPACE_ID;
namespace _pbi = _pb::internal;

namespace vitis {
namespace ai {
namespace proto {
PROTOBUF_CONSTEXPR YoloV3Param::YoloV3Param(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.biases_)*/{}
  , /*decltype(_impl_.layer_name_)*/{}
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_.anchorcnt_)*/0
  , /*decltype(_impl_.conf_threshold_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.test_map_)*/false
  , /*decltype(_impl_.type_)*/0
  , /*decltype(_impl_.iou_type_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct YoloV3ParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR YoloV3ParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~YoloV3ParamDefaultTypeInternal() {}
  union {
    YoloV3Param _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 YoloV3ParamDefaultTypeInternal _YoloV3Param_default_instance_;
PROTOBUF_CONSTEXPR MedicalPriorBoxParam::MedicalPriorBoxParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.input_shape_)*/{}
  , /*decltype(_impl_._input_shape_cached_byte_size_)*/{0}
  , /*decltype(_impl_.feature_shapes_)*/{}
  , /*decltype(_impl_._feature_shapes_cached_byte_size_)*/{0}
  , /*decltype(_impl_.min_sizes_)*/{}
  , /*decltype(_impl_._min_sizes_cached_byte_size_)*/{0}
  , /*decltype(_impl_.max_sizes_)*/{}
  , /*decltype(_impl_._max_sizes_cached_byte_size_)*/{0}
  , /*decltype(_impl_.aspect_ratios_)*/{}
  , /*decltype(_impl_.steps_)*/{}
  , /*decltype(_impl_._steps_cached_byte_size_)*/{0}
  , /*decltype(_impl_.offset_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct MedicalPriorBoxParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MedicalPriorBoxParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~MedicalPriorBoxParamDefaultTypeInternal() {}
  union {
    MedicalPriorBoxParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MedicalPriorBoxParamDefaultTypeInternal _MedicalPriorBoxParam_default_instance_;
PROTOBUF_CONSTEXPR PriorBoxParam::PriorBoxParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.variances_)*/{}
  , /*decltype(_impl_.min_sizes_)*/{}
  , /*decltype(_impl_.max_sizes_)*/{}
  , /*decltype(_impl_.aspect_ratios_)*/{}
  , /*decltype(_impl_.layer_width_)*/0
  , /*decltype(_impl_.layer_height_)*/0
  , /*decltype(_impl_.offset_)*/0
  , /*decltype(_impl_.step_width_)*/0
  , /*decltype(_impl_.step_height_)*/0
  , /*decltype(_impl_.flip_)*/false
  , /*decltype(_impl_.clip_)*/false
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PriorBoxParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PriorBoxParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PriorBoxParamDefaultTypeInternal() {}
  union {
    PriorBoxParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PriorBoxParamDefaultTypeInternal _PriorBoxParam_default_instance_;
PROTOBUF_CONSTEXPR SSDParam_OutputInfo::SSDParam_OutputInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.type_)*/0
  , /*decltype(_impl_.order_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct SSDParam_OutputInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR SSDParam_OutputInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~SSDParam_OutputInfoDefaultTypeInternal() {}
  union {
    SSDParam_OutputInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SSDParam_OutputInfoDefaultTypeInternal _SSDParam_OutputInfo_default_instance_;
PROTOBUF_CONSTEXPR SSDParam::SSDParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.prior_box_param_)*/{}
  , /*decltype(_impl_.conf_threshold_)*/{}
  , /*decltype(_impl_.bbox_layer_index_)*/{}
  , /*decltype(_impl_._bbox_layer_index_cached_byte_size_)*/{0}
  , /*decltype(_impl_.output_info_)*/{}
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.keep_top_k_)*/0
  , /*decltype(_impl_.top_k_)*/0
  , /*decltype(_impl_.is_mlperf_)*/false
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct SSDParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR SSDParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~SSDParamDefaultTypeInternal() {}
  union {
    SSDParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SSDParamDefaultTypeInternal _SSDParam_default_instance_;
PROTOBUF_CONSTEXPR RetinaNetParam::RetinaNetParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.box_threshold_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.conf_threshold_)*/0
  , /*decltype(_impl_.top_k_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct RetinaNetParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR RetinaNetParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~RetinaNetParamDefaultTypeInternal() {}
  union {
    RetinaNetParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RetinaNetParamDefaultTypeInternal _RetinaNetParam_default_instance_;
PROTOBUF_CONSTEXPR FairMotParam::FairMotParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.layer_name_)*/{}
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.conf_threshold_)*/0
  , /*decltype(_impl_.keep_top_k_)*/0
  , /*decltype(_impl_.top_k_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct FairMotParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR FairMotParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~FairMotParamDefaultTypeInternal() {}
  union {
    FairMotParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FairMotParamDefaultTypeInternal _FairMotParam_default_instance_;
PROTOBUF_CONSTEXPR MovenetParam::MovenetParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.layer_name_)*/{}
  , /*decltype(_impl_.center_weight_)*/{}
  , /*decltype(_impl_.conf_threshold_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct MovenetParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MovenetParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~MovenetParamDefaultTypeInternal() {}
  union {
    MovenetParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MovenetParamDefaultTypeInternal _MovenetParam_default_instance_;
PROTOBUF_CONSTEXPR RefineDetParam::RefineDetParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.prior_box_param_)*/{}
  , /*decltype(_impl_.conf_threshold_)*/{}
  , /*decltype(_impl_.layer_name_)*/{}
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.keep_top_k_)*/0
  , /*decltype(_impl_.top_k_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct RefineDetParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR RefineDetParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~RefineDetParamDefaultTypeInternal() {}
  union {
    RefineDetParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RefineDetParamDefaultTypeInternal _RefineDetParam_default_instance_;
PROTOBUF_CONSTEXPR TFRefineDetParam::TFRefineDetParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.layer_name_)*/{}
  , /*decltype(_impl_.prior_box_param_)*/nullptr
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.conf_threshold_)*/0
  , /*decltype(_impl_.keep_top_k_)*/0
  , /*decltype(_impl_.top_k_)*/0
  , /*decltype(_impl_.scale_xy_)*/0
  , /*decltype(_impl_.scale_wh_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct TFRefineDetParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR TFRefineDetParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~TFRefineDetParamDefaultTypeInternal() {}
  union {
    TFRefineDetParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TFRefineDetParamDefaultTypeInternal _TFRefineDetParam_default_instance_;
PROTOBUF_CONSTEXPR MedicalRefineDetParam_OutputInfo::MedicalRefineDetParam_OutputInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.type_)*/0
  , /*decltype(_impl_.order_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct MedicalRefineDetParam_OutputInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MedicalRefineDetParam_OutputInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~MedicalRefineDetParam_OutputInfoDefaultTypeInternal() {}
  union {
    MedicalRefineDetParam_OutputInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MedicalRefineDetParam_OutputInfoDefaultTypeInternal _MedicalRefineDetParam_OutputInfo_default_instance_;
PROTOBUF_CONSTEXPR MedicalRefineDetParam::MedicalRefineDetParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.output_info_)*/{}
  , /*decltype(_impl_.medical_prior_box_param_)*/nullptr
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_.scale_xy_)*/0
  , /*decltype(_impl_.scale_wh_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.conf_threshold_)*/0
  , /*decltype(_impl_.keep_top_k_)*/0
  , /*decltype(_impl_.top_k_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct MedicalRefineDetParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MedicalRefineDetParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~MedicalRefineDetParamDefaultTypeInternal() {}
  union {
    MedicalRefineDetParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MedicalRefineDetParamDefaultTypeInternal _MedicalRefineDetParam_default_instance_;
PROTOBUF_CONSTEXPR ReidParam::ReidParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.bn_means_)*/{}
  , /*decltype(_impl_.bn_weights_)*/{}
  , /*decltype(_impl_.bn_vars_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct ReidParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ReidParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ReidParamDefaultTypeInternal() {}
  union {
    ReidParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ReidParamDefaultTypeInternal _ReidParam_default_instance_;
PROTOBUF_CONSTEXPR OpenPoseParam::OpenPoseParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.layer_name_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct OpenPoseParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR OpenPoseParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~OpenPoseParamDefaultTypeInternal() {}
  union {
    OpenPoseParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 OpenPoseParamDefaultTypeInternal _OpenPoseParam_default_instance_;
PROTOBUF_CONSTEXPR ClassificationParam_AvgPoolParam::ClassificationParam_AvgPoolParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.scale_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct ClassificationParam_AvgPoolParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ClassificationParam_AvgPoolParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ClassificationParam_AvgPoolParamDefaultTypeInternal() {}
  union {
    ClassificationParam_AvgPoolParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ClassificationParam_AvgPoolParamDefaultTypeInternal _ClassificationParam_AvgPoolParam_default_instance_;
PROTOBUF_CONSTEXPR ClassificationParam::ClassificationParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.layer_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.label_type_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.avg_pool_param_)*/nullptr
  , /*decltype(_impl_.top_k_)*/0
  , /*decltype(_impl_.test_accuracy_)*/false
  , /*decltype(_impl_.preprocess_type_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct ClassificationParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ClassificationParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ClassificationParamDefaultTypeInternal() {}
  union {
    ClassificationParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ClassificationParamDefaultTypeInternal _ClassificationParam_default_instance_;
PROTOBUF_CONSTEXPR DenseBoxParam::DenseBoxParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.num_of_classes_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.det_threshold_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DenseBoxParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DenseBoxParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~DenseBoxParamDefaultTypeInternal() {}
  union {
    DenseBoxParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DenseBoxParamDefaultTypeInternal _DenseBoxParam_default_instance_;
PROTOBUF_CONSTEXPR MultiTaskParam::MultiTaskParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.th_conf_)*/{}
  , /*decltype(_impl_.prior_box_param_)*/{}
  , /*decltype(_impl_.loc_name_)*/{}
  , /*decltype(_impl_.conf_name_)*/{}
  , /*decltype(_impl_.centerness_name_)*/{}
  , /*decltype(_impl_.seg_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.drivable_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.depth_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.lane_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.num_of_detection_classes_)*/0
  , /*decltype(_impl_.num_of_segmentation_classes_)*/0
  , /*decltype(_impl_.keep_top_k_)*/0
  , /*decltype(_impl_.top_k_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct MultiTaskParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MultiTaskParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~MultiTaskParamDefaultTypeInternal() {}
  union {
    MultiTaskParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MultiTaskParamDefaultTypeInternal _MultiTaskParam_default_instance_;
PROTOBUF_CONSTEXPR RoadlineParam::RoadlineParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.layer_name_)*/{}
  , /*decltype(_impl_.ratio_)*/0
  , /*decltype(_impl_.ipm_width_)*/0
  , /*decltype(_impl_.ipm_height_)*/0
  , /*decltype(_impl_.ipm_left_)*/0
  , /*decltype(_impl_.ipm_right_)*/0
  , /*decltype(_impl_.ipm_top_)*/0
  , /*decltype(_impl_.ipm_bottom_)*/0
  , /*decltype(_impl_.ipm_interpolation_)*/0
  , /*decltype(_impl_.ipm_vp_portion_)*/0
  , /*decltype(_impl_.focal_length_x_)*/0
  , /*decltype(_impl_.focal_length_y_)*/0
  , /*decltype(_impl_.optical_center_x_)*/0
  , /*decltype(_impl_.optical_center_y_)*/0
  , /*decltype(_impl_.camera_height_)*/0
  , /*decltype(_impl_.pitch_)*/0
  , /*decltype(_impl_.yaw_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct RoadlineParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR RoadlineParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~RoadlineParamDefaultTypeInternal() {}
  union {
    RoadlineParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RoadlineParamDefaultTypeInternal _RoadlineParam_default_instance_;
PROTOBUF_CONSTEXPR RcanParam::RcanParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.scale_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct RcanParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR RcanParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~RcanParamDefaultTypeInternal() {}
  union {
    RcanParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RcanParamDefaultTypeInternal _RcanParam_default_instance_;
PROTOBUF_CONSTEXPR RoadlineDeephiParam::RoadlineDeephiParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.resize_w_)*/0
  , /*decltype(_impl_.resize_h_)*/0
  , /*decltype(_impl_.crop_x_)*/0
  , /*decltype(_impl_.crop_y_)*/0
  , /*decltype(_impl_.crop_w_)*/0
  , /*decltype(_impl_.crop_h_)*/0
  , /*decltype(_impl_.area_threshold_)*/0
  , /*decltype(_impl_.epow_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct RoadlineDeephiParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR RoadlineDeephiParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~RoadlineDeephiParamDefaultTypeInternal() {}
  union {
    RoadlineDeephiParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RoadlineDeephiParamDefaultTypeInternal _RoadlineDeephiParam_default_instance_;
PROTOBUF_CONSTEXPR SegmentationParam::SegmentationParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.color1_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.color2_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.color3_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.output_tensor_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.specify_output_layer_)*/false
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct SegmentationParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR SegmentationParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~SegmentationParamDefaultTypeInternal() {}
  union {
    SegmentationParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SegmentationParamDefaultTypeInternal _SegmentationParam_default_instance_;
PROTOBUF_CONSTEXPR PlatenumParam::PlatenumParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.first_)*/{}
  , /*decltype(_impl_._first_cached_byte_size_)*/{0}
  , /*decltype(_impl_.second_)*/{}
  , /*decltype(_impl_._second_cached_byte_size_)*/{0}
  , /*decltype(_impl_.output_tensor_name_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PlatenumParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PlatenumParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PlatenumParamDefaultTypeInternal() {}
  union {
    PlatenumParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PlatenumParamDefaultTypeInternal _PlatenumParam_default_instance_;
PROTOBUF_CONSTEXPR SoloParam::SoloParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.first_)*/{}
  , /*decltype(_impl_._first_cached_byte_size_)*/{0}
  , /*decltype(_impl_.second_)*/{}
  , /*decltype(_impl_._second_cached_byte_size_)*/{0}
  , /*decltype(_impl_.input_tensor_name_)*/{}
  , /*decltype(_impl_.output_tensor_name_)*/{}
  , /*decltype(_impl_.score_thr_)*/0
  , /*decltype(_impl_.mask_thr_)*/0
  , /*decltype(_impl_.nms_pre_)*/0u
  , /*decltype(_impl_.update_thr_)*/0
  , /*decltype(_impl_.max_per_img_)*/0u
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct SoloParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR SoloParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~SoloParamDefaultTypeInternal() {}
  union {
    SoloParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SoloParamDefaultTypeInternal _SoloParam_default_instance_;
PROTOBUF_CONSTEXPR LaneParam::LaneParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.roi_x_)*/0
  , /*decltype(_impl_.roi_y_)*/0
  , /*decltype(_impl_.expect_height_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct LaneParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR LaneParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~LaneParamDefaultTypeInternal() {}
  union {
    LaneParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 LaneParamDefaultTypeInternal _LaneParam_default_instance_;
PROTOBUF_CONSTEXPR BlinkerParam::BlinkerParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.prior_box_param_)*/{}
  , /*decltype(_impl_.conf_threshold_)*/{}
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.keep_top_k_)*/0
  , /*decltype(_impl_.top_k_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct BlinkerParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR BlinkerParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~BlinkerParamDefaultTypeInternal() {}
  union {
    BlinkerParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 BlinkerParamDefaultTypeInternal _BlinkerParam_default_instance_;
PROTOBUF_CONSTEXPR SegdetParam::SegdetParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.prior_box_param_)*/{}
  , /*decltype(_impl_.conf_threshold_)*/{}
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.keep_top_k_)*/0
  , /*decltype(_impl_.top_k_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct SegdetParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR SegdetParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~SegdetParamDefaultTypeInternal() {}
  union {
    SegdetParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SegdetParamDefaultTypeInternal _SegdetParam_default_instance_;
PROTOBUF_CONSTEXPR FaceQuality5ptParam::FaceQuality5ptParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.quality_layer_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.point_layer_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.use_day_night_mode_)*/false
  , /*decltype(_impl_.original_quality_)*/false
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct FaceQuality5ptParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR FaceQuality5ptParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~FaceQuality5ptParamDefaultTypeInternal() {}
  union {
    FaceQuality5ptParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FaceQuality5ptParamDefaultTypeInternal _FaceQuality5ptParam_default_instance_;
PROTOBUF_CONSTEXPR RetinaFaceParam_OutputAnchorInfo::RetinaFaceParam_OutputAnchorInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.type_)*/0
  , /*decltype(_impl_.index_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct RetinaFaceParam_OutputAnchorInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR RetinaFaceParam_OutputAnchorInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~RetinaFaceParam_OutputAnchorInfoDefaultTypeInternal() {}
  union {
    RetinaFaceParam_OutputAnchorInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RetinaFaceParam_OutputAnchorInfoDefaultTypeInternal _RetinaFaceParam_OutputAnchorInfo_default_instance_;
PROTOBUF_CONSTEXPR RetinaFaceParam_OutputInfo::RetinaFaceParam_OutputInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.output_anchor_info_)*/nullptr
  , /*decltype(_impl_.type_)*/0
  , /*decltype(_impl_.stride_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct RetinaFaceParam_OutputInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR RetinaFaceParam_OutputInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~RetinaFaceParam_OutputInfoDefaultTypeInternal() {}
  union {
    RetinaFaceParam_OutputInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RetinaFaceParam_OutputInfoDefaultTypeInternal _RetinaFaceParam_OutputInfo_default_instance_;
PROTOBUF_CONSTEXPR RetinaFaceParam_AnchorParam::RetinaFaceParam_AnchorParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.ratios_)*/{}
  , /*decltype(_impl_.scales_)*/{}
  , /*decltype(_impl_._scales_cached_byte_size_)*/{0}
  , /*decltype(_impl_.stride_)*/0
  , /*decltype(_impl_.base_size_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct RetinaFaceParam_AnchorParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR RetinaFaceParam_AnchorParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~RetinaFaceParam_AnchorParamDefaultTypeInternal() {}
  union {
    RetinaFaceParam_AnchorParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RetinaFaceParam_AnchorParamDefaultTypeInternal _RetinaFaceParam_AnchorParam_default_instance_;
PROTOBUF_CONSTEXPR RetinaFaceParam::RetinaFaceParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.output_info_)*/{}
  , /*decltype(_impl_.anchor_param_)*/{}
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.det_threshold_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct RetinaFaceParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR RetinaFaceParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~RetinaFaceParamDefaultTypeInternal() {}
  union {
    RetinaFaceParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RetinaFaceParamDefaultTypeInternal _RetinaFaceParam_default_instance_;
PROTOBUF_CONSTEXPR DpuKernelParam::DpuKernelParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.mean_)*/{}
  , /*decltype(_impl_.scale_)*/{}
  , /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DpuKernelParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DpuKernelParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~DpuKernelParamDefaultTypeInternal() {}
  union {
    DpuKernelParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DpuKernelParamDefaultTypeInternal _DpuKernelParam_default_instance_;
PROTOBUF_CONSTEXPR TfssdParam_OutputInfo::TfssdParam_OutputInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.type_)*/0
  , /*decltype(_impl_.order_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct TfssdParam_OutputInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR TfssdParam_OutputInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~TfssdParam_OutputInfoDefaultTypeInternal() {}
  union {
    TfssdParam_OutputInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TfssdParam_OutputInfoDefaultTypeInternal _TfssdParam_OutputInfo_default_instance_;
PROTOBUF_CONSTEXPR TfssdParam::TfssdParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.output_info_)*/{}
  , /*decltype(_impl_.feature_map_list_)*/{}
  , /*decltype(_impl_._feature_map_list_cached_byte_size_)*/{0}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct TfssdParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR TfssdParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~TfssdParamDefaultTypeInternal() {}
  union {
    TfssdParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TfssdParamDefaultTypeInternal _TfssdParam_default_instance_;
PROTOBUF_CONSTEXPR PointPillarsNusParam_AnchorInfo_Ranges::PointPillarsNusParam_AnchorInfo_Ranges(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.single_range_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PointPillarsNusParam_AnchorInfo_RangesDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PointPillarsNusParam_AnchorInfo_RangesDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PointPillarsNusParam_AnchorInfo_RangesDefaultTypeInternal() {}
  union {
    PointPillarsNusParam_AnchorInfo_Ranges _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PointPillarsNusParam_AnchorInfo_RangesDefaultTypeInternal _PointPillarsNusParam_AnchorInfo_Ranges_default_instance_;
PROTOBUF_CONSTEXPR PointPillarsNusParam_AnchorInfo_Sizes::PointPillarsNusParam_AnchorInfo_Sizes(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.single_size_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PointPillarsNusParam_AnchorInfo_SizesDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PointPillarsNusParam_AnchorInfo_SizesDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PointPillarsNusParam_AnchorInfo_SizesDefaultTypeInternal() {}
  union {
    PointPillarsNusParam_AnchorInfo_Sizes _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PointPillarsNusParam_AnchorInfo_SizesDefaultTypeInternal _PointPillarsNusParam_AnchorInfo_Sizes_default_instance_;
PROTOBUF_CONSTEXPR PointPillarsNusParam_AnchorInfo::PointPillarsNusParam_AnchorInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.ranges_)*/{}
  , /*decltype(_impl_.sizes_)*/{}
  , /*decltype(_impl_.rotations_)*/{}
  , /*decltype(_impl_.custom_value_)*/{}
  , /*decltype(_impl_.align_corner_)*/false
  , /*decltype(_impl_.scale_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PointPillarsNusParam_AnchorInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PointPillarsNusParam_AnchorInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PointPillarsNusParam_AnchorInfoDefaultTypeInternal() {}
  union {
    PointPillarsNusParam_AnchorInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PointPillarsNusParam_AnchorInfoDefaultTypeInternal _PointPillarsNusParam_AnchorInfo_default_instance_;
PROTOBUF_CONSTEXPR PointPillarsNusParam::PointPillarsNusParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.point_cloud_range_)*/{}
  , /*decltype(_impl_.featmap_size_)*/{}
  , /*decltype(_impl_._featmap_size_cached_byte_size_)*/{0}
  , /*decltype(_impl_.score_layer_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.bbox_layer_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.dir_layer_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.anchor_info_)*/nullptr
  , /*decltype(_impl_.in_channels_)*/0
  , /*decltype(_impl_.max_points_num_)*/0
  , /*decltype(_impl_.max_voxels_num_)*/0
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_.nms_pre_)*/0
  , /*decltype(_impl_.nms_thresh_)*/0
  , /*decltype(_impl_.max_num_)*/0
  , /*decltype(_impl_.score_thresh_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PointPillarsNusParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PointPillarsNusParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PointPillarsNusParamDefaultTypeInternal() {}
  union {
    PointPillarsNusParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PointPillarsNusParamDefaultTypeInternal _PointPillarsNusParam_default_instance_;
PROTOBUF_CONSTEXPR Segmentation3DParam::Segmentation3DParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.enable_knn_)*/false
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct Segmentation3DParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR Segmentation3DParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~Segmentation3DParamDefaultTypeInternal() {}
  union {
    Segmentation3DParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 Segmentation3DParamDefaultTypeInternal _Segmentation3DParam_default_instance_;
PROTOBUF_CONSTEXPR YoloV5Param::YoloV5Param(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.stride_)*/{}
  , /*decltype(_impl_.yolo_param_)*/nullptr
  , /*decltype(_impl_.max_boxes_num_)*/0
  , /*decltype(_impl_.max_nms_num_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct YoloV5ParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR YoloV5ParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~YoloV5ParamDefaultTypeInternal() {}
  union {
    YoloV5Param _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 YoloV5ParamDefaultTypeInternal _YoloV5Param_default_instance_;
PROTOBUF_CONSTEXPR YoloV6Param::YoloV6Param(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.biases_)*/{}
  , /*decltype(_impl_.bbox_layer_name_)*/{}
  , /*decltype(_impl_.cls_layer_name_)*/{}
  , /*decltype(_impl_.stride_)*/{}
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_.anchorcnt_)*/0
  , /*decltype(_impl_.conf_threshold_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.test_map_)*/false
  , /*decltype(_impl_.without_dfl_)*/false
  , /*decltype(_impl_.max_boxes_num_)*/0
  , /*decltype(_impl_.max_nms_num_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct YoloV6ParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR YoloV6ParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~YoloV6ParamDefaultTypeInternal() {}
  union {
    YoloV6Param _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 YoloV6ParamDefaultTypeInternal _YoloV6Param_default_instance_;
PROTOBUF_CONSTEXPR YoloV7Param::YoloV7Param(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.detect_layer_name_)*/{}
  , /*decltype(_impl_.biases_)*/{}
  , /*decltype(_impl_.conf_thresh_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct YoloV7ParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR YoloV7ParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~YoloV7ParamDefaultTypeInternal() {}
  union {
    YoloV7Param _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 YoloV7ParamDefaultTypeInternal _YoloV7Param_default_instance_;
PROTOBUF_CONSTEXPR YoloV8Param::YoloV8Param(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.detect_layer_name_)*/{}
  , /*decltype(_impl_.stride_)*/{}
  , /*decltype(_impl_.conf_thresh_)*/0
  , /*decltype(_impl_.max_boxes_num_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.max_nms_num_)*/0
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct YoloV8ParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR YoloV8ParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~YoloV8ParamDefaultTypeInternal() {}
  union {
    YoloV8Param _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 YoloV8ParamDefaultTypeInternal _YoloV8Param_default_instance_;
PROTOBUF_CONSTEXPR FcosParam::FcosParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.center_layer_name_)*/{}
  , /*decltype(_impl_.cls_layer_name_)*/{}
  , /*decltype(_impl_.offset_layer_name_)*/{}
  , /*decltype(_impl_.stride_)*/{}
  , /*decltype(_impl_.pre_nms_thresh_)*/0
  , /*decltype(_impl_.pre_nms_top_n_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.fpn_post_nms_top_n_)*/0
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct FcosParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR FcosParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~FcosParamDefaultTypeInternal() {}
  union {
    FcosParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FcosParamDefaultTypeInternal _FcosParam_default_instance_;
PROTOBUF_CONSTEXPR BTSParam::BTSParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.mul_factor_)*/0
  , /*decltype(_impl_.depth_scaled_factor_)*/0
  , /*decltype(_impl_.hard_sigmoid_output_scale_)*/0
  , /*decltype(_impl_.multiple_output_scale_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct BTSParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR BTSParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~BTSParamDefaultTypeInternal() {}
  union {
    BTSParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 BTSParamDefaultTypeInternal _BTSParam_default_instance_;
PROTOBUF_CONSTEXPR PointPillarsBaseParam::PointPillarsBaseParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.point_cloud_range_)*/{}
  , /*decltype(_impl_.voxel_size_)*/{}
  , /*decltype(_impl_.points_dim_)*/0
  , /*decltype(_impl_.max_points_num_)*/0
  , /*decltype(_impl_.max_voxels_num_)*/0
  , /*decltype(_impl_.in_channels_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PointPillarsBaseParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PointPillarsBaseParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PointPillarsBaseParamDefaultTypeInternal() {}
  union {
    PointPillarsBaseParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PointPillarsBaseParamDefaultTypeInternal _PointPillarsBaseParam_default_instance_;
PROTOBUF_CONSTEXPR PointPillarsKittiParam::PointPillarsKittiParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.base_)*/nullptr
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PointPillarsKittiParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PointPillarsKittiParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PointPillarsKittiParamDefaultTypeInternal() {}
  union {
    PointPillarsKittiParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PointPillarsKittiParamDefaultTypeInternal _PointPillarsKittiParam_default_instance_;
PROTOBUF_CONSTEXPR X_Autonomous3DParam_CenterPointOutputLayer::X_Autonomous3DParam_CenterPointOutputLayer(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.reg_layer_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.height_layer_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.dim_layer_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.rot_layer_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.heatmap_layer_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.iou_quality_layer_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct X_Autonomous3DParam_CenterPointOutputLayerDefaultTypeInternal {
  PROTOBUF_CONSTEXPR X_Autonomous3DParam_CenterPointOutputLayerDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~X_Autonomous3DParam_CenterPointOutputLayerDefaultTypeInternal() {}
  union {
    X_Autonomous3DParam_CenterPointOutputLayer _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 X_Autonomous3DParam_CenterPointOutputLayerDefaultTypeInternal _X_Autonomous3DParam_CenterPointOutputLayer_default_instance_;
PROTOBUF_CONSTEXPR X_Autonomous3DParam::X_Autonomous3DParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.point_cloud_range_)*/{}
  , /*decltype(_impl_.voxel_size_)*/{}
  , /*decltype(_impl_.iou_quality_alpha_)*/{}
  , /*decltype(_impl_.post_point_cloud_range_)*/{}
  , /*decltype(_impl_.nms_thresh_)*/{}
  , /*decltype(_impl_.output_names_)*/nullptr
  , /*decltype(_impl_.points_dim_)*/0
  , /*decltype(_impl_.max_points_num_)*/0
  , /*decltype(_impl_.max_voxels_num_)*/0
  , /*decltype(_impl_.in_channels_)*/0
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_.out_size_facter_)*/0
  , /*decltype(_impl_.bbox_pre_size_)*/0
  , /*decltype(_impl_.bbox_max_size_)*/0
  , /*decltype(_impl_.score_thresh_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct X_Autonomous3DParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR X_Autonomous3DParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~X_Autonomous3DParamDefaultTypeInternal() {}
  union {
    X_Autonomous3DParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 X_Autonomous3DParamDefaultTypeInternal _X_Autonomous3DParam_default_instance_;
PROTOBUF_CONSTEXPR EfficientDetD2Param_OutputInfo::EfficientDetD2Param_OutputInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.type_)*/0
  , /*decltype(_impl_.level_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct EfficientDetD2Param_OutputInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR EfficientDetD2Param_OutputInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~EfficientDetD2Param_OutputInfoDefaultTypeInternal() {}
  union {
    EfficientDetD2Param_OutputInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 EfficientDetD2Param_OutputInfoDefaultTypeInternal _EfficientDetD2Param_OutputInfo_default_instance_;
PROTOBUF_CONSTEXPR EfficientDetD2Param_AnchorInfo::EfficientDetD2Param_AnchorInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.anchor_scales_)*/{}
  , /*decltype(_impl_.aspect_ratio_)*/{}
  , /*decltype(_impl_.min_level_)*/0
  , /*decltype(_impl_.max_level_)*/0
  , /*decltype(_impl_.num_scales_)*/0
  , /*decltype(_impl_.image_width_)*/0
  , /*decltype(_impl_.image_height_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct EfficientDetD2Param_AnchorInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR EfficientDetD2Param_AnchorInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~EfficientDetD2Param_AnchorInfoDefaultTypeInternal() {}
  union {
    EfficientDetD2Param_AnchorInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 EfficientDetD2Param_AnchorInfoDefaultTypeInternal _EfficientDetD2Param_AnchorInfo_default_instance_;
PROTOBUF_CONSTEXPR EfficientDetD2Param::EfficientDetD2Param(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.output_info_)*/{}
  , /*decltype(_impl_.anchor_info_)*/nullptr
  , /*decltype(_impl_.num_classes_)*/0
  , /*decltype(_impl_.pre_nms_num_)*/0
  , /*decltype(_impl_.nms_threshold_)*/0
  , /*decltype(_impl_.conf_threshold_)*/0
  , /*decltype(_impl_.nms_output_num_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct EfficientDetD2ParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR EfficientDetD2ParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~EfficientDetD2ParamDefaultTypeInternal() {}
  union {
    EfficientDetD2Param _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 EfficientDetD2ParamDefaultTypeInternal _EfficientDetD2Param_default_instance_;
PROTOBUF_CONSTEXPR SubgraphParam_InputParam::SubgraphParam_InputParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.previous_output_tensor_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.previous_model_idx_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct SubgraphParam_InputParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR SubgraphParam_InputParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~SubgraphParam_InputParamDefaultTypeInternal() {}
  union {
    SubgraphParam_InputParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SubgraphParam_InputParamDefaultTypeInternal _SubgraphParam_InputParam_default_instance_;
PROTOBUF_CONSTEXPR SubgraphParam::SubgraphParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.input_)*/{}
  , /*decltype(_impl_.subgraph_idx_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.cycles_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct SubgraphParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR SubgraphParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~SubgraphParamDefaultTypeInternal() {}
  union {
    SubgraphParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SubgraphParamDefaultTypeInternal _SubgraphParam_default_instance_;
PROTOBUF_CONSTEXPR DpuModelParam::DpuModelParam(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.kernel_)*/{}
  , /*decltype(_impl_.subgraph_)*/{}
  , /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.refine_det_param_)*/nullptr
  , /*decltype(_impl_.yolo_v3_param_)*/nullptr
  , /*decltype(_impl_.ssd_param_)*/nullptr
  , /*decltype(_impl_.classification_param_)*/nullptr
  , /*decltype(_impl_.dense_box_param_)*/nullptr
  , /*decltype(_impl_.multi_task_param_)*/nullptr
  , /*decltype(_impl_.roadline_param_)*/nullptr
  , /*decltype(_impl_.segmentation_param_)*/nullptr
  , /*decltype(_impl_.lane_param_)*/nullptr
  , /*decltype(_impl_.blinker_param_)*/nullptr
  , /*decltype(_impl_.segdet_param_)*/nullptr
  , /*decltype(_impl_.roadline_dp_param_)*/nullptr
  , /*decltype(_impl_.face_quality5pt_param_)*/nullptr
  , /*decltype(_impl_.tfssd_param_)*/nullptr
  , /*decltype(_impl_.open_pose_param_)*/nullptr
  , /*decltype(_impl_.reid_param_)*/nullptr
  , /*decltype(_impl_.medical_refine_det_param_)*/nullptr
  , /*decltype(_impl_.platenum_param_)*/nullptr
  , /*decltype(_impl_.retinaface_param_)*/nullptr
  , /*decltype(_impl_.tfrefinedet_param_)*/nullptr
  , /*decltype(_impl_.pointpillars_nus_param_)*/nullptr
  , /*decltype(_impl_.segmentation_3d_param_)*/nullptr
  , /*decltype(_impl_.yolo_v5_param_)*/nullptr
  , /*decltype(_impl_.bts_param_)*/nullptr
  , /*decltype(_impl_.fair_mot_param_)*/nullptr
  , /*decltype(_impl_.x_autonomous3d_param_)*/nullptr
  , /*decltype(_impl_.pointpillars_kitti_param_)*/nullptr
  , /*decltype(_impl_.solo_param_)*/nullptr
  , /*decltype(_impl_.vehicleclassification_param_)*/nullptr
  , /*decltype(_impl_.efficientdet_d2_param_)*/nullptr
  , /*decltype(_impl_.movenet_param_)*/nullptr
  , /*decltype(_impl_.rcan_param_)*/nullptr
  , /*decltype(_impl_.yolo_v6_param_)*/nullptr
  , /*decltype(_impl_.fcos_param_)*/nullptr
  , /*decltype(_impl_.yolo_v8_param_)*/nullptr
  , /*decltype(_impl_.retinanet_param_)*/nullptr
  , /*decltype(_impl_.yolo_v7_param_)*/nullptr
  , /*decltype(_impl_.model_type_)*/0
  , /*decltype(_impl_.use_graph_runner_)*/false
  , /*decltype(_impl_.is_tf_)*/false
  , /*decltype(_impl_.order_type_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DpuModelParamDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DpuModelParamDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~DpuModelParamDefaultTypeInternal() {}
  union {
    DpuModelParam _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DpuModelParamDefaultTypeInternal _DpuModelParam_default_instance_;
PROTOBUF_CONSTEXPR DpuModelParamList::DpuModelParamList(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.model_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DpuModelParamListDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DpuModelParamListDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~DpuModelParamListDefaultTypeInternal() {}
  union {
    DpuModelParamList _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DpuModelParamListDefaultTypeInternal _DpuModelParamList_default_instance_;
PROTOBUF_CONSTEXPR Attribute::Attribute(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.label_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.value_)*/0u
  , /*decltype(_impl_.score_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct AttributeDefaultTypeInternal {
  PROTOBUF_CONSTEXPR AttributeDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~AttributeDefaultTypeInternal() {}
  union {
    Attribute _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AttributeDefaultTypeInternal _Attribute_default_instance_;
PROTOBUF_CONSTEXPR Point::Point(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.x_)*/0
  , /*decltype(_impl_.y_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PointDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PointDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PointDefaultTypeInternal() {}
  union {
    Point _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PointDefaultTypeInternal _Point_default_instance_;
PROTOBUF_CONSTEXPR Size::Size(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.width_)*/0
  , /*decltype(_impl_.height_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct SizeDefaultTypeInternal {
  PROTOBUF_CONSTEXPR SizeDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~SizeDefaultTypeInternal() {}
  union {
    Size _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SizeDefaultTypeInternal _Size_default_instance_;
PROTOBUF_CONSTEXPR BoundingBox::BoundingBox(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.label_)*/nullptr
  , /*decltype(_impl_.top_left_)*/nullptr
  , /*decltype(_impl_.size_)*/nullptr
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct BoundingBoxDefaultTypeInternal {
  PROTOBUF_CONSTEXPR BoundingBoxDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~BoundingBoxDefaultTypeInternal() {}
  union {
    BoundingBox _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 BoundingBoxDefaultTypeInternal _BoundingBox_default_instance_;
PROTOBUF_CONSTEXPR AttributeResult::AttributeResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.attribute_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct AttributeResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR AttributeResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~AttributeResultDefaultTypeInternal() {}
  union {
    AttributeResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AttributeResultDefaultTypeInternal _AttributeResult_default_instance_;
PROTOBUF_CONSTEXPR LandmarkResult::LandmarkResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.point_)*/{}
  , /*decltype(_impl_.score_)*/0
  , /*decltype(_impl_.gender_)*/0u
  , /*decltype(_impl_.age_)*/0u
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct LandmarkResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR LandmarkResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~LandmarkResultDefaultTypeInternal() {}
  union {
    LandmarkResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 LandmarkResultDefaultTypeInternal _LandmarkResult_default_instance_;
PROTOBUF_CONSTEXPR DetectResult::DetectResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.bounding_box_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct DetectResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DetectResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~DetectResultDefaultTypeInternal() {}
  union {
    DetectResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DetectResultDefaultTypeInternal _DetectResult_default_instance_;
PROTOBUF_CONSTEXPR LineAttribute::LineAttribute(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.point_)*/{}
  , /*decltype(_impl_.type_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct LineAttributeDefaultTypeInternal {
  PROTOBUF_CONSTEXPR LineAttributeDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~LineAttributeDefaultTypeInternal() {}
  union {
    LineAttribute _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 LineAttributeDefaultTypeInternal _LineAttribute_default_instance_;
PROTOBUF_CONSTEXPR RoadlineResult::RoadlineResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.line_attribute_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct RoadlineResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR RoadlineResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~RoadlineResultDefaultTypeInternal() {}
  union {
    RoadlineResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RoadlineResultDefaultTypeInternal _RoadlineResult_default_instance_;
PROTOBUF_CONSTEXPR Score::Score(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.index_)*/0
  , /*decltype(_impl_.score_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct ScoreDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ScoreDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ScoreDefaultTypeInternal() {}
  union {
    Score _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ScoreDefaultTypeInternal _Score_default_instance_;
PROTOBUF_CONSTEXPR ClassificationLabel::ClassificationLabel(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.index_)*/0u
  , /*decltype(_impl_.score_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct ClassificationLabelDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ClassificationLabelDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ClassificationLabelDefaultTypeInternal() {}
  union {
    ClassificationLabel _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ClassificationLabelDefaultTypeInternal _ClassificationLabel_default_instance_;
PROTOBUF_CONSTEXPR ClassificationResult::ClassificationResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.topk_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct ClassificationResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ClassificationResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ClassificationResultDefaultTypeInternal() {}
  union {
    ClassificationResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ClassificationResultDefaultTypeInternal _ClassificationResult_default_instance_;
PROTOBUF_CONSTEXPR FaceLandmarkResult::FaceLandmarkResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.point_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct FaceLandmarkResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR FaceLandmarkResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~FaceLandmarkResultDefaultTypeInternal() {}
  union {
    FaceLandmarkResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FaceLandmarkResultDefaultTypeInternal _FaceLandmarkResult_default_instance_;
PROTOBUF_CONSTEXPR PlateDetectResult::PlateDetectResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.bounding_box_)*/nullptr
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PlateDetectResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PlateDetectResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PlateDetectResultDefaultTypeInternal() {}
  union {
    PlateDetectResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PlateDetectResultDefaultTypeInternal _PlateDetectResult_default_instance_;
PROTOBUF_CONSTEXPR PlateNumberResult::PlateNumberResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.plate_number_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.plate_color_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PlateNumberResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PlateNumberResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PlateNumberResultDefaultTypeInternal() {}
  union {
    PlateNumberResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PlateNumberResultDefaultTypeInternal _PlateNumberResult_default_instance_;
PROTOBUF_CONSTEXPR PlateRecogResult::PlateRecogResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.plate_number_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.plate_color_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.bounding_box_)*/nullptr
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PlateRecogResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PlateRecogResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PlateRecogResultDefaultTypeInternal() {}
  union {
    PlateRecogResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PlateRecogResultDefaultTypeInternal _PlateRecogResult_default_instance_;
PROTOBUF_CONSTEXPR PoseDetectResult::PoseDetectResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.right_shoulder_)*/nullptr
  , /*decltype(_impl_.right_elbow_)*/nullptr
  , /*decltype(_impl_.right_wrist_)*/nullptr
  , /*decltype(_impl_.left_shoulder_)*/nullptr
  , /*decltype(_impl_.left_elbow_)*/nullptr
  , /*decltype(_impl_.left_wrist_)*/nullptr
  , /*decltype(_impl_.right_hip_)*/nullptr
  , /*decltype(_impl_.right_knee_)*/nullptr
  , /*decltype(_impl_.right_ankle_)*/nullptr
  , /*decltype(_impl_.left_hip_)*/nullptr
  , /*decltype(_impl_.left_knee_)*/nullptr
  , /*decltype(_impl_.left_ankle_)*/nullptr
  , /*decltype(_impl_.head_)*/nullptr
  , /*decltype(_impl_.neck_)*/nullptr
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct PoseDetectResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR PoseDetectResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~PoseDetectResultDefaultTypeInternal() {}
  union {
    PoseDetectResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PoseDetectResultDefaultTypeInternal _PoseDetectResult_default_instance_;
PROTOBUF_CONSTEXPR FaceFeatureResult::FaceFeatureResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.float_vec_)*/{}
  , /*decltype(_impl_.fix_vec_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.scale_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct FaceFeatureResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR FaceFeatureResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~FaceFeatureResultDefaultTypeInternal() {}
  union {
    FaceFeatureResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FaceFeatureResultDefaultTypeInternal _FaceFeatureResult_default_instance_;
PROTOBUF_CONSTEXPR FaceDetectRecogResult::FaceDetectRecogResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.bounding_box_)*/{}
  , /*decltype(_impl_.feature_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct FaceDetectRecogResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR FaceDetectRecogResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~FaceDetectRecogResultDefaultTypeInternal() {}
  union {
    FaceDetectRecogResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FaceDetectRecogResultDefaultTypeInternal _FaceDetectRecogResult_default_instance_;
PROTOBUF_CONSTEXPR SegmetationResult::SegmetationResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.data_)*/{}
  , /*decltype(_impl_._data_cached_byte_size_)*/{0}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct SegmetationResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR SegmetationResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~SegmetationResultDefaultTypeInternal() {}
  union {
    SegmetationResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SegmetationResultDefaultTypeInternal _SegmetationResult_default_instance_;
PROTOBUF_CONSTEXPR MedicalSegmetationResult::MedicalSegmetationResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.segmentation_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct MedicalSegmetationResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MedicalSegmetationResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~MedicalSegmetationResultDefaultTypeInternal() {}
  union {
    MedicalSegmetationResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MedicalSegmetationResultDefaultTypeInternal _MedicalSegmetationResult_default_instance_;
PROTOBUF_CONSTEXPR VehicleResult::VehicleResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.label_)*/0
  , /*decltype(_impl_.score_)*/0
  , /*decltype(_impl_.x_)*/0
  , /*decltype(_impl_.y_)*/0
  , /*decltype(_impl_.width_)*/0
  , /*decltype(_impl_.height_)*/0
  , /*decltype(_impl_.angle_)*/0
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct VehicleResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR VehicleResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~VehicleResultDefaultTypeInternal() {}
  union {
    VehicleResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 VehicleResultDefaultTypeInternal _VehicleResult_default_instance_;
PROTOBUF_CONSTEXPR MultiTaskResult::MultiTaskResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.vehicle_reuslt_)*/{}
  , /*decltype(_impl_.segmentation_)*/nullptr
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct MultiTaskResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR MultiTaskResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~MultiTaskResultDefaultTypeInternal() {}
  union {
    MultiTaskResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MultiTaskResultDefaultTypeInternal _MultiTaskResult_default_instance_;
PROTOBUF_CONSTEXPR ReidResult::ReidResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.data_)*/{}
  , /*decltype(_impl_._data_cached_byte_size_)*/{0}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct ReidResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ReidResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ReidResultDefaultTypeInternal() {}
  union {
    ReidResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ReidResultDefaultTypeInternal _ReidResult_default_instance_;
PROTOBUF_CONSTEXPR DpuModelResult::DpuModelResult(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.dpu_model_result_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_._oneof_case_)*/{}} {}
struct DpuModelResultDefaultTypeInternal {
  PROTOBUF_CONSTEXPR DpuModelResultDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~DpuModelResultDefaultTypeInternal() {}
  union {
    DpuModelResult _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 DpuModelResultDefaultTypeInternal _DpuModelResult_default_instance_;
}  // namespace proto
}  // namespace ai
}  // namespace vitis
static ::_pb::Metadata file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[82];
static const ::_pb::EnumDescriptor* file_level_enum_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[10];
static constexpr ::_pb::ServiceDescriptor const** file_level_service_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto = nullptr;

const uint32_t TableStruct_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV3Param, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV3Param, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV3Param, _impl_.anchorcnt_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV3Param, _impl_.conf_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV3Param, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV3Param, _impl_.biases_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV3Param, _impl_.test_map_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV3Param, _impl_.layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV3Param, _impl_.type_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV3Param, _impl_.iou_type_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalPriorBoxParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalPriorBoxParam, _impl_.input_shape_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalPriorBoxParam, _impl_.feature_shapes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalPriorBoxParam, _impl_.min_sizes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalPriorBoxParam, _impl_.max_sizes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalPriorBoxParam, _impl_.aspect_ratios_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalPriorBoxParam, _impl_.steps_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalPriorBoxParam, _impl_.offset_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PriorBoxParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PriorBoxParam, _impl_.layer_width_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PriorBoxParam, _impl_.layer_height_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PriorBoxParam, _impl_.variances_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PriorBoxParam, _impl_.min_sizes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PriorBoxParam, _impl_.max_sizes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PriorBoxParam, _impl_.aspect_ratios_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PriorBoxParam, _impl_.offset_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PriorBoxParam, _impl_.step_width_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PriorBoxParam, _impl_.step_height_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PriorBoxParam, _impl_.flip_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PriorBoxParam, _impl_.clip_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam_OutputInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam_OutputInfo, _impl_.type_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam_OutputInfo, _impl_.order_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam_OutputInfo, _impl_.name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam, _impl_.prior_box_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam, _impl_.conf_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam, _impl_.keep_top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam, _impl_.top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam, _impl_.is_mlperf_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam, _impl_.bbox_layer_index_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SSDParam, _impl_.output_info_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaNetParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaNetParam, _impl_.box_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaNetParam, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaNetParam, _impl_.conf_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaNetParam, _impl_.top_k_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FairMotParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FairMotParam, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FairMotParam, _impl_.conf_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FairMotParam, _impl_.keep_top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FairMotParam, _impl_.top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FairMotParam, _impl_.layer_name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MovenetParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MovenetParam, _impl_.conf_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MovenetParam, _impl_.layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MovenetParam, _impl_.center_weight_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RefineDetParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RefineDetParam, _impl_.prior_box_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RefineDetParam, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RefineDetParam, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RefineDetParam, _impl_.conf_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RefineDetParam, _impl_.keep_top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RefineDetParam, _impl_.top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RefineDetParam, _impl_.layer_name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TFRefineDetParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TFRefineDetParam, _impl_.prior_box_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TFRefineDetParam, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TFRefineDetParam, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TFRefineDetParam, _impl_.conf_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TFRefineDetParam, _impl_.keep_top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TFRefineDetParam, _impl_.top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TFRefineDetParam, _impl_.layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TFRefineDetParam, _impl_.scale_xy_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TFRefineDetParam, _impl_.scale_wh_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam_OutputInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam_OutputInfo, _impl_.type_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam_OutputInfo, _impl_.order_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam_OutputInfo, _impl_.name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam, _impl_.scale_xy_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam, _impl_.scale_wh_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam, _impl_.conf_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam, _impl_.keep_top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam, _impl_.top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam, _impl_.medical_prior_box_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalRefineDetParam, _impl_.output_info_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ReidParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ReidParam, _impl_.bn_means_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ReidParam, _impl_.bn_weights_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ReidParam, _impl_.bn_vars_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::OpenPoseParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::OpenPoseParam, _impl_.layer_name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationParam_AvgPoolParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationParam_AvgPoolParam, _impl_.scale_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationParam, _impl_.top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationParam, _impl_.test_accuracy_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationParam, _impl_.preprocess_type_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationParam, _impl_.layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationParam, _impl_.label_type_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationParam, _impl_.avg_pool_param_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DenseBoxParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DenseBoxParam, _impl_.num_of_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DenseBoxParam, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DenseBoxParam, _impl_.det_threshold_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.th_conf_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.num_of_detection_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.num_of_segmentation_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.keep_top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.prior_box_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.loc_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.conf_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.centerness_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.seg_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.drivable_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.depth_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskParam, _impl_.lane_name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.ratio_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.ipm_width_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.ipm_height_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.ipm_left_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.ipm_right_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.ipm_top_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.ipm_bottom_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.ipm_interpolation_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.ipm_vp_portion_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.focal_length_x_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.focal_length_y_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.optical_center_x_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.optical_center_y_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.camera_height_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.pitch_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.yaw_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineParam, _impl_.layer_name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RcanParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RcanParam, _impl_.scale_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineDeephiParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineDeephiParam, _impl_.resize_w_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineDeephiParam, _impl_.resize_h_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineDeephiParam, _impl_.crop_x_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineDeephiParam, _impl_.crop_y_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineDeephiParam, _impl_.crop_w_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineDeephiParam, _impl_.crop_h_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineDeephiParam, _impl_.area_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineDeephiParam, _impl_.epow_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegmentationParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegmentationParam, _impl_.color1_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegmentationParam, _impl_.color2_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegmentationParam, _impl_.color3_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegmentationParam, _impl_.specify_output_layer_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegmentationParam, _impl_.output_tensor_name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlatenumParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlatenumParam, _impl_.first_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlatenumParam, _impl_.second_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlatenumParam, _impl_.output_tensor_name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SoloParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SoloParam, _impl_.first_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SoloParam, _impl_.second_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SoloParam, _impl_.input_tensor_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SoloParam, _impl_.output_tensor_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SoloParam, _impl_.score_thr_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SoloParam, _impl_.mask_thr_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SoloParam, _impl_.nms_pre_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SoloParam, _impl_.update_thr_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SoloParam, _impl_.max_per_img_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::LaneParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::LaneParam, _impl_.roi_x_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::LaneParam, _impl_.roi_y_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::LaneParam, _impl_.expect_height_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BlinkerParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BlinkerParam, _impl_.prior_box_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BlinkerParam, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BlinkerParam, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BlinkerParam, _impl_.conf_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BlinkerParam, _impl_.keep_top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BlinkerParam, _impl_.top_k_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegdetParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegdetParam, _impl_.prior_box_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegdetParam, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegdetParam, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegdetParam, _impl_.conf_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegdetParam, _impl_.keep_top_k_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegdetParam, _impl_.top_k_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceQuality5ptParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceQuality5ptParam, _impl_.use_day_night_mode_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceQuality5ptParam, _impl_.original_quality_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceQuality5ptParam, _impl_.quality_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceQuality5ptParam, _impl_.point_layer_name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_OutputAnchorInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_OutputAnchorInfo, _impl_.type_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_OutputAnchorInfo, _impl_.index_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_OutputInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_OutputInfo, _impl_.type_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_OutputInfo, _impl_.stride_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_OutputInfo, _impl_.name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_OutputInfo, _impl_.output_anchor_info_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_AnchorParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_AnchorParam, _impl_.stride_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_AnchorParam, _impl_.base_size_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_AnchorParam, _impl_.ratios_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam_AnchorParam, _impl_.scales_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam, _impl_.output_info_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam, _impl_.det_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RetinaFaceParam, _impl_.anchor_param_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuKernelParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuKernelParam, _impl_.name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuKernelParam, _impl_.mean_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuKernelParam, _impl_.scale_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TfssdParam_OutputInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TfssdParam_OutputInfo, _impl_.type_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TfssdParam_OutputInfo, _impl_.order_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TfssdParam_OutputInfo, _impl_.name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TfssdParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TfssdParam, _impl_.output_info_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::TfssdParam, _impl_.feature_map_list_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo_Ranges, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo_Ranges, _impl_.single_range_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo_Sizes, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo_Sizes, _impl_.single_size_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo, _impl_.ranges_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo, _impl_.sizes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo, _impl_.rotations_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo, _impl_.custom_value_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo, _impl_.align_corner_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo, _impl_.scale_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.point_cloud_range_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.in_channels_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.max_points_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.max_voxels_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.featmap_size_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.anchor_info_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.nms_pre_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.nms_thresh_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.max_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.score_thresh_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.score_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.bbox_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsNusParam, _impl_.dir_layer_name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Segmentation3DParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Segmentation3DParam, _impl_.enable_knn_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV5Param, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV5Param, _impl_.yolo_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV5Param, _impl_.stride_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV5Param, _impl_.max_boxes_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV5Param, _impl_.max_nms_num_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _impl_.anchorcnt_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _impl_.conf_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _impl_.biases_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _impl_.test_map_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _impl_.bbox_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _impl_.cls_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _impl_.stride_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _impl_.max_boxes_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _impl_.max_nms_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV6Param, _impl_.without_dfl_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV7Param, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV7Param, _impl_.conf_thresh_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV7Param, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV7Param, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV7Param, _impl_.detect_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV7Param, _impl_.biases_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV8Param, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV8Param, _impl_.conf_thresh_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV8Param, _impl_.max_boxes_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV8Param, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV8Param, _impl_.max_nms_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV8Param, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV8Param, _impl_.detect_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::YoloV8Param, _impl_.stride_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FcosParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FcosParam, _impl_.pre_nms_thresh_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FcosParam, _impl_.pre_nms_top_n_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FcosParam, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FcosParam, _impl_.fpn_post_nms_top_n_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FcosParam, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FcosParam, _impl_.center_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FcosParam, _impl_.cls_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FcosParam, _impl_.offset_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FcosParam, _impl_.stride_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BTSParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BTSParam, _impl_.mul_factor_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BTSParam, _impl_.depth_scaled_factor_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BTSParam, _impl_.hard_sigmoid_output_scale_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BTSParam, _impl_.multiple_output_scale_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsBaseParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsBaseParam, _impl_.point_cloud_range_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsBaseParam, _impl_.voxel_size_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsBaseParam, _impl_.points_dim_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsBaseParam, _impl_.max_points_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsBaseParam, _impl_.max_voxels_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsBaseParam, _impl_.in_channels_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsKittiParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PointPillarsKittiParam, _impl_.base_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer, _impl_.reg_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer, _impl_.height_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer, _impl_.dim_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer, _impl_.rot_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer, _impl_.heatmap_layer_name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer, _impl_.iou_quality_layer_name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.point_cloud_range_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.voxel_size_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.points_dim_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.max_points_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.max_voxels_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.in_channels_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.output_names_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.out_size_facter_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.iou_quality_alpha_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.post_point_cloud_range_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.bbox_pre_size_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.bbox_max_size_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.nms_thresh_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::X_Autonomous3DParam, _impl_.score_thresh_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param_OutputInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param_OutputInfo, _impl_.type_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param_OutputInfo, _impl_.level_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param_OutputInfo, _impl_.name_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param_AnchorInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param_AnchorInfo, _impl_.min_level_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param_AnchorInfo, _impl_.max_level_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param_AnchorInfo, _impl_.num_scales_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param_AnchorInfo, _impl_.anchor_scales_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param_AnchorInfo, _impl_.aspect_ratio_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param_AnchorInfo, _impl_.image_width_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param_AnchorInfo, _impl_.image_height_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param, _impl_.anchor_info_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param, _impl_.num_classes_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param, _impl_.pre_nms_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param, _impl_.nms_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param, _impl_.conf_threshold_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param, _impl_.nms_output_num_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::EfficientDetD2Param, _impl_.output_info_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SubgraphParam_InputParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SubgraphParam_InputParam, _impl_.name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SubgraphParam_InputParam, _impl_.previous_model_idx_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SubgraphParam_InputParam, _impl_.previous_output_tensor_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SubgraphParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SubgraphParam, _impl_.cycles_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SubgraphParam, _impl_.subgraph_idx_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SubgraphParam, _impl_.input_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.kernel_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.use_graph_runner_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.model_type_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.refine_det_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.yolo_v3_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.ssd_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.classification_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.dense_box_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.multi_task_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.roadline_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.segmentation_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.lane_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.blinker_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.segdet_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.roadline_dp_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.is_tf_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.face_quality5pt_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.tfssd_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.open_pose_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.reid_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.medical_refine_det_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.platenum_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.order_type_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.retinaface_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.tfrefinedet_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.pointpillars_nus_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.segmentation_3d_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.yolo_v5_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.bts_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.fair_mot_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.x_autonomous3d_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.pointpillars_kitti_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.solo_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.subgraph_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.vehicleclassification_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.efficientdet_d2_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.movenet_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.rcan_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.yolo_v6_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.fcos_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.yolo_v8_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.retinanet_param_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParam, _impl_.yolo_v7_param_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParamList, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelParamList, _impl_.model_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Attribute, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Attribute, _impl_.label_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Attribute, _impl_.value_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Attribute, _impl_.score_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Point, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Point, _impl_.x_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Point, _impl_.y_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Size, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Size, _impl_.width_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Size, _impl_.height_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BoundingBox, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BoundingBox, _impl_.label_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BoundingBox, _impl_.top_left_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::BoundingBox, _impl_.size_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::AttributeResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::AttributeResult, _impl_.attribute_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::LandmarkResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::LandmarkResult, _impl_.score_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::LandmarkResult, _impl_.point_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::LandmarkResult, _impl_.gender_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::LandmarkResult, _impl_.age_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DetectResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DetectResult, _impl_.bounding_box_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::LineAttribute, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::LineAttribute, _impl_.type_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::LineAttribute, _impl_.point_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::RoadlineResult, _impl_.line_attribute_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Score, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Score, _impl_.index_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::Score, _impl_.score_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationLabel, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationLabel, _impl_.name_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationLabel, _impl_.index_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationLabel, _impl_.score_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ClassificationResult, _impl_.topk_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceLandmarkResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceLandmarkResult, _impl_.point_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlateDetectResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlateDetectResult, _impl_.bounding_box_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlateNumberResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlateNumberResult, _impl_.plate_number_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlateNumberResult, _impl_.plate_color_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlateRecogResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlateRecogResult, _impl_.bounding_box_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlateRecogResult, _impl_.plate_number_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PlateRecogResult, _impl_.plate_color_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.right_shoulder_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.right_elbow_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.right_wrist_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.left_shoulder_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.left_elbow_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.left_wrist_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.right_hip_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.right_knee_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.right_ankle_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.left_hip_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.left_knee_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.left_ankle_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.head_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::PoseDetectResult, _impl_.neck_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceFeatureResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceFeatureResult, _impl_.float_vec_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceFeatureResult, _impl_.fix_vec_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceFeatureResult, _impl_.scale_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceDetectRecogResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceDetectRecogResult, _impl_.bounding_box_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::FaceDetectRecogResult, _impl_.feature_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegmetationResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::SegmetationResult, _impl_.data_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalSegmetationResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MedicalSegmetationResult, _impl_.segmentation_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::VehicleResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::VehicleResult, _impl_.label_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::VehicleResult, _impl_.score_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::VehicleResult, _impl_.x_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::VehicleResult, _impl_.y_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::VehicleResult, _impl_.width_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::VehicleResult, _impl_.height_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::VehicleResult, _impl_.angle_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskResult, _impl_.segmentation_),
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::MultiTaskResult, _impl_.vehicle_reuslt_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ReidResult, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::ReidResult, _impl_.data_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelResult, _internal_metadata_),
  ~0u,  // no _extensions_
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelResult, _impl_._oneof_case_[0]),
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  ::_pbi::kInvalidFieldOffsetTag,
  PROTOBUF_FIELD_OFFSET(::vitis::ai::proto::DpuModelResult, _impl_.dpu_model_result_),
};
static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, -1, sizeof(::vitis::ai::proto::YoloV3Param)},
  { 15, -1, -1, sizeof(::vitis::ai::proto::MedicalPriorBoxParam)},
  { 28, -1, -1, sizeof(::vitis::ai::proto::PriorBoxParam)},
  { 45, -1, -1, sizeof(::vitis::ai::proto::SSDParam_OutputInfo)},
  { 54, -1, -1, sizeof(::vitis::ai::proto::SSDParam)},
  { 69, -1, -1, sizeof(::vitis::ai::proto::RetinaNetParam)},
  { 79, -1, -1, sizeof(::vitis::ai::proto::FairMotParam)},
  { 90, -1, -1, sizeof(::vitis::ai::proto::MovenetParam)},
  { 99, -1, -1, sizeof(::vitis::ai::proto::RefineDetParam)},
  { 112, -1, -1, sizeof(::vitis::ai::proto::TFRefineDetParam)},
  { 127, -1, -1, sizeof(::vitis::ai::proto::MedicalRefineDetParam_OutputInfo)},
  { 136, -1, -1, sizeof(::vitis::ai::proto::MedicalRefineDetParam)},
  { 151, -1, -1, sizeof(::vitis::ai::proto::ReidParam)},
  { 160, -1, -1, sizeof(::vitis::ai::proto::OpenPoseParam)},
  { 167, -1, -1, sizeof(::vitis::ai::proto::ClassificationParam_AvgPoolParam)},
  { 174, -1, -1, sizeof(::vitis::ai::proto::ClassificationParam)},
  { 186, -1, -1, sizeof(::vitis::ai::proto::DenseBoxParam)},
  { 195, -1, -1, sizeof(::vitis::ai::proto::MultiTaskParam)},
  { 215, -1, -1, sizeof(::vitis::ai::proto::RoadlineParam)},
  { 238, -1, -1, sizeof(::vitis::ai::proto::RcanParam)},
  { 245, -1, -1, sizeof(::vitis::ai::proto::RoadlineDeephiParam)},
  { 259, -1, -1, sizeof(::vitis::ai::proto::SegmentationParam)},
  { 270, -1, -1, sizeof(::vitis::ai::proto::PlatenumParam)},
  { 279, -1, -1, sizeof(::vitis::ai::proto::SoloParam)},
  { 294, -1, -1, sizeof(::vitis::ai::proto::LaneParam)},
  { 303, -1, -1, sizeof(::vitis::ai::proto::BlinkerParam)},
  { 315, -1, -1, sizeof(::vitis::ai::proto::SegdetParam)},
  { 327, -1, -1, sizeof(::vitis::ai::proto::FaceQuality5ptParam)},
  { 337, -1, -1, sizeof(::vitis::ai::proto::RetinaFaceParam_OutputAnchorInfo)},
  { 345, -1, -1, sizeof(::vitis::ai::proto::RetinaFaceParam_OutputInfo)},
  { 355, -1, -1, sizeof(::vitis::ai::proto::RetinaFaceParam_AnchorParam)},
  { 365, -1, -1, sizeof(::vitis::ai::proto::RetinaFaceParam)},
  { 375, -1, -1, sizeof(::vitis::ai::proto::DpuKernelParam)},
  { 384, -1, -1, sizeof(::vitis::ai::proto::TfssdParam_OutputInfo)},
  { 393, -1, -1, sizeof(::vitis::ai::proto::TfssdParam)},
  { 401, -1, -1, sizeof(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo_Ranges)},
  { 408, -1, -1, sizeof(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo_Sizes)},
  { 415, -1, -1, sizeof(::vitis::ai::proto::PointPillarsNusParam_AnchorInfo)},
  { 427, -1, -1, sizeof(::vitis::ai::proto::PointPillarsNusParam)},
  { 447, -1, -1, sizeof(::vitis::ai::proto::Segmentation3DParam)},
  { 454, -1, -1, sizeof(::vitis::ai::proto::YoloV5Param)},
  { 464, -1, -1, sizeof(::vitis::ai::proto::YoloV6Param)},
  { 482, -1, -1, sizeof(::vitis::ai::proto::YoloV7Param)},
  { 493, -1, -1, sizeof(::vitis::ai::proto::YoloV8Param)},
  { 506, -1, -1, sizeof(::vitis::ai::proto::FcosParam)},
  { 521, -1, -1, sizeof(::vitis::ai::proto::BTSParam)},
  { 531, -1, -1, sizeof(::vitis::ai::proto::PointPillarsBaseParam)},
  { 543, -1, -1, sizeof(::vitis::ai::proto::PointPillarsKittiParam)},
  { 550, -1, -1, sizeof(::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer)},
  { 562, -1, -1, sizeof(::vitis::ai::proto::X_Autonomous3DParam)},
  { 583, -1, -1, sizeof(::vitis::ai::proto::EfficientDetD2Param_OutputInfo)},
  { 592, -1, -1, sizeof(::vitis::ai::proto::EfficientDetD2Param_AnchorInfo)},
  { 605, -1, -1, sizeof(::vitis::ai::proto::EfficientDetD2Param)},
  { 618, -1, -1, sizeof(::vitis::ai::proto::SubgraphParam_InputParam)},
  { 627, -1, -1, sizeof(::vitis::ai::proto::SubgraphParam)},
  { 636, -1, -1, sizeof(::vitis::ai::proto::DpuModelParam)},
  { 686, -1, -1, sizeof(::vitis::ai::proto::DpuModelParamList)},
  { 693, -1, -1, sizeof(::vitis::ai::proto::Attribute)},
  { 702, -1, -1, sizeof(::vitis::ai::proto::Point)},
  { 710, -1, -1, sizeof(::vitis::ai::proto::Size)},
  { 718, -1, -1, sizeof(::vitis::ai::proto::BoundingBox)},
  { 727, -1, -1, sizeof(::vitis::ai::proto::AttributeResult)},
  { 734, -1, -1, sizeof(::vitis::ai::proto::LandmarkResult)},
  { 744, -1, -1, sizeof(::vitis::ai::proto::DetectResult)},
  { 751, -1, -1, sizeof(::vitis::ai::proto::LineAttribute)},
  { 759, -1, -1, sizeof(::vitis::ai::proto::RoadlineResult)},
  { 766, -1, -1, sizeof(::vitis::ai::proto::Score)},
  { 774, -1, -1, sizeof(::vitis::ai::proto::ClassificationLabel)},
  { 783, -1, -1, sizeof(::vitis::ai::proto::ClassificationResult)},
  { 790, -1, -1, sizeof(::vitis::ai::proto::FaceLandmarkResult)},
  { 797, -1, -1, sizeof(::vitis::ai::proto::PlateDetectResult)},
  { 804, -1, -1, sizeof(::vitis::ai::proto::PlateNumberResult)},
  { 812, -1, -1, sizeof(::vitis::ai::proto::PlateRecogResult)},
  { 821, -1, -1, sizeof(::vitis::ai::proto::PoseDetectResult)},
  { 841, -1, -1, sizeof(::vitis::ai::proto::FaceFeatureResult)},
  { 850, -1, -1, sizeof(::vitis::ai::proto::FaceDetectRecogResult)},
  { 858, -1, -1, sizeof(::vitis::ai::proto::SegmetationResult)},
  { 865, -1, -1, sizeof(::vitis::ai::proto::MedicalSegmetationResult)},
  { 872, -1, -1, sizeof(::vitis::ai::proto::VehicleResult)},
  { 885, -1, -1, sizeof(::vitis::ai::proto::MultiTaskResult)},
  { 893, -1, -1, sizeof(::vitis::ai::proto::ReidResult)},
  { 900, -1, -1, sizeof(::vitis::ai::proto::DpuModelResult)},
};

static const ::_pb::Message* const file_default_instances[] = {
  &::vitis::ai::proto::_YoloV3Param_default_instance_._instance,
  &::vitis::ai::proto::_MedicalPriorBoxParam_default_instance_._instance,
  &::vitis::ai::proto::_PriorBoxParam_default_instance_._instance,
  &::vitis::ai::proto::_SSDParam_OutputInfo_default_instance_._instance,
  &::vitis::ai::proto::_SSDParam_default_instance_._instance,
  &::vitis::ai::proto::_RetinaNetParam_default_instance_._instance,
  &::vitis::ai::proto::_FairMotParam_default_instance_._instance,
  &::vitis::ai::proto::_MovenetParam_default_instance_._instance,
  &::vitis::ai::proto::_RefineDetParam_default_instance_._instance,
  &::vitis::ai::proto::_TFRefineDetParam_default_instance_._instance,
  &::vitis::ai::proto::_MedicalRefineDetParam_OutputInfo_default_instance_._instance,
  &::vitis::ai::proto::_MedicalRefineDetParam_default_instance_._instance,
  &::vitis::ai::proto::_ReidParam_default_instance_._instance,
  &::vitis::ai::proto::_OpenPoseParam_default_instance_._instance,
  &::vitis::ai::proto::_ClassificationParam_AvgPoolParam_default_instance_._instance,
  &::vitis::ai::proto::_ClassificationParam_default_instance_._instance,
  &::vitis::ai::proto::_DenseBoxParam_default_instance_._instance,
  &::vitis::ai::proto::_MultiTaskParam_default_instance_._instance,
  &::vitis::ai::proto::_RoadlineParam_default_instance_._instance,
  &::vitis::ai::proto::_RcanParam_default_instance_._instance,
  &::vitis::ai::proto::_RoadlineDeephiParam_default_instance_._instance,
  &::vitis::ai::proto::_SegmentationParam_default_instance_._instance,
  &::vitis::ai::proto::_PlatenumParam_default_instance_._instance,
  &::vitis::ai::proto::_SoloParam_default_instance_._instance,
  &::vitis::ai::proto::_LaneParam_default_instance_._instance,
  &::vitis::ai::proto::_BlinkerParam_default_instance_._instance,
  &::vitis::ai::proto::_SegdetParam_default_instance_._instance,
  &::vitis::ai::proto::_FaceQuality5ptParam_default_instance_._instance,
  &::vitis::ai::proto::_RetinaFaceParam_OutputAnchorInfo_default_instance_._instance,
  &::vitis::ai::proto::_RetinaFaceParam_OutputInfo_default_instance_._instance,
  &::vitis::ai::proto::_RetinaFaceParam_AnchorParam_default_instance_._instance,
  &::vitis::ai::proto::_RetinaFaceParam_default_instance_._instance,
  &::vitis::ai::proto::_DpuKernelParam_default_instance_._instance,
  &::vitis::ai::proto::_TfssdParam_OutputInfo_default_instance_._instance,
  &::vitis::ai::proto::_TfssdParam_default_instance_._instance,
  &::vitis::ai::proto::_PointPillarsNusParam_AnchorInfo_Ranges_default_instance_._instance,
  &::vitis::ai::proto::_PointPillarsNusParam_AnchorInfo_Sizes_default_instance_._instance,
  &::vitis::ai::proto::_PointPillarsNusParam_AnchorInfo_default_instance_._instance,
  &::vitis::ai::proto::_PointPillarsNusParam_default_instance_._instance,
  &::vitis::ai::proto::_Segmentation3DParam_default_instance_._instance,
  &::vitis::ai::proto::_YoloV5Param_default_instance_._instance,
  &::vitis::ai::proto::_YoloV6Param_default_instance_._instance,
  &::vitis::ai::proto::_YoloV7Param_default_instance_._instance,
  &::vitis::ai::proto::_YoloV8Param_default_instance_._instance,
  &::vitis::ai::proto::_FcosParam_default_instance_._instance,
  &::vitis::ai::proto::_BTSParam_default_instance_._instance,
  &::vitis::ai::proto::_PointPillarsBaseParam_default_instance_._instance,
  &::vitis::ai::proto::_PointPillarsKittiParam_default_instance_._instance,
  &::vitis::ai::proto::_X_Autonomous3DParam_CenterPointOutputLayer_default_instance_._instance,
  &::vitis::ai::proto::_X_Autonomous3DParam_default_instance_._instance,
  &::vitis::ai::proto::_EfficientDetD2Param_OutputInfo_default_instance_._instance,
  &::vitis::ai::proto::_EfficientDetD2Param_AnchorInfo_default_instance_._instance,
  &::vitis::ai::proto::_EfficientDetD2Param_default_instance_._instance,
  &::vitis::ai::proto::_SubgraphParam_InputParam_default_instance_._instance,
  &::vitis::ai::proto::_SubgraphParam_default_instance_._instance,
  &::vitis::ai::proto::_DpuModelParam_default_instance_._instance,
  &::vitis::ai::proto::_DpuModelParamList_default_instance_._instance,
  &::vitis::ai::proto::_Attribute_default_instance_._instance,
  &::vitis::ai::proto::_Point_default_instance_._instance,
  &::vitis::ai::proto::_Size_default_instance_._instance,
  &::vitis::ai::proto::_BoundingBox_default_instance_._instance,
  &::vitis::ai::proto::_AttributeResult_default_instance_._instance,
  &::vitis::ai::proto::_LandmarkResult_default_instance_._instance,
  &::vitis::ai::proto::_DetectResult_default_instance_._instance,
  &::vitis::ai::proto::_LineAttribute_default_instance_._instance,
  &::vitis::ai::proto::_RoadlineResult_default_instance_._instance,
  &::vitis::ai::proto::_Score_default_instance_._instance,
  &::vitis::ai::proto::_ClassificationLabel_default_instance_._instance,
  &::vitis::ai::proto::_ClassificationResult_default_instance_._instance,
  &::vitis::ai::proto::_FaceLandmarkResult_default_instance_._instance,
  &::vitis::ai::proto::_PlateDetectResult_default_instance_._instance,
  &::vitis::ai::proto::_PlateNumberResult_default_instance_._instance,
  &::vitis::ai::proto::_PlateRecogResult_default_instance_._instance,
  &::vitis::ai::proto::_PoseDetectResult_default_instance_._instance,
  &::vitis::ai::proto::_FaceFeatureResult_default_instance_._instance,
  &::vitis::ai::proto::_FaceDetectRecogResult_default_instance_._instance,
  &::vitis::ai::proto::_SegmetationResult_default_instance_._instance,
  &::vitis::ai::proto::_MedicalSegmetationResult_default_instance_._instance,
  &::vitis::ai::proto::_VehicleResult_default_instance_._instance,
  &::vitis::ai::proto::_MultiTaskResult_default_instance_._instance,
  &::vitis::ai::proto::_ReidResult_default_instance_._instance,
  &::vitis::ai::proto::_DpuModelResult_default_instance_._instance,
};

const char descriptor_table_protodef_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n$vitis/ai/proto/dpu_model_param.proto\022\016"
  "vitis.ai.proto\"\234\002\n\013YoloV3Param\022\023\n\013num_cl"
  "asses\030\001 \001(\005\022\021\n\tanchorCnt\030\002 \001(\005\022\026\n\016conf_t"
  "hreshold\030\003 \001(\002\022\025\n\rnms_threshold\030\004 \001(\002\022\016\n"
  "\006biases\030\005 \003(\002\022\020\n\010test_mAP\030\006 \001(\010\022\022\n\nlayer"
  "_name\030\007 \003(\t\022.\n\004type\030\010 \001(\0162 .vitis.ai.pro"
  "to.YoloV3Param.Type\022\020\n\010iou_type\030\t \001(\005\">\n"
  "\004Type\022\n\n\006NORMAL\020\000\022\016\n\nYOLOV4_CSP\020\001\022\n\n\006YOL"
  "OV5\020\002\022\016\n\nYOLOX_NANO\020\003\"\237\001\n\024MedicalPriorBo"
  "xParam\022\023\n\013input_shape\030\001 \003(\005\022\026\n\016feature_s"
  "hapes\030\002 \003(\005\022\021\n\tmin_sizes\030\003 \003(\005\022\021\n\tmax_si"
  "zes\030\004 \003(\005\022\025\n\raspect_ratios\030\005 \003(\002\022\r\n\005step"
  "s\030\006 \003(\005\022\016\n\006offset\030\007 \001(\002\"\337\001\n\rPriorBoxPara"
  "m\022\023\n\013layer_width\030\001 \001(\005\022\024\n\014layer_height\030\002"
  " \001(\005\022\021\n\tvariances\030\004 \003(\002\022\021\n\tmin_sizes\030\005 \003"
  "(\002\022\021\n\tmax_sizes\030\006 \003(\002\022\025\n\raspect_ratios\030\007"
  " \003(\002\022\016\n\006offset\030\010 \001(\002\022\022\n\nstep_width\030\t \001(\002"
  "\022\023\n\013step_height\030\n \001(\002\022\014\n\004flip\030\013 \001(\010\022\014\n\004c"
  "lip\030\014 \001(\010\"\255\003\n\010SSDParam\0226\n\017prior_box_para"
  "m\030\001 \003(\0132\035.vitis.ai.proto.PriorBoxParam\022\023"
  "\n\013num_classes\030\002 \001(\005\022\025\n\rnms_threshold\030\003 \001"
  "(\002\022\026\n\016conf_threshold\030\004 \003(\002\022\022\n\nkeep_top_k"
  "\030\005 \001(\005\022\r\n\005top_k\030\006 \001(\005\022\021\n\tis_mlperf\030\007 \001(\010"
  "\022\030\n\020bbox_layer_index\030\010 \003(\005\0228\n\013output_inf"
  "o\030\t \003(\0132#.vitis.ai.proto.SSDParam.Output"
  "Info\032\\\n\nOutputInfo\0221\n\004type\030\001 \001(\0162#.vitis"
  ".ai.proto.SSDParam.OutputType\022\r\n\005order\030\002"
  " \001(\005\022\014\n\004name\030\003 \001(\t\"=\n\nOutputType\022\013\n\007USEL"
  "ESS\020\000\022\010\n\004CONF\020\001\022\010\n\004BBOX\020\002\022\016\n\nFUNCTIONAL\020"
  "\003\"e\n\016RetinaNetParam\022\025\n\rbox_threshold\030\001 \001"
  "(\002\022\025\n\rnms_threshold\030\002 \001(\002\022\026\n\016conf_thresh"
  "old\030\003 \001(\002\022\r\n\005top_k\030\004 \001(\005\"t\n\014FairMotParam"
  "\022\025\n\rnms_threshold\030\001 \001(\002\022\026\n\016conf_threshol"
  "d\030\002 \001(\002\022\022\n\nkeep_top_k\030\003 \001(\005\022\r\n\005top_k\030\004 \001"
  "(\005\022\022\n\nlayer_name\030\005 \003(\t\"Q\n\014MovenetParam\022\026"
  "\n\016conf_threshold\030\001 \001(\002\022\022\n\nlayer_name\030\002 \003"
  "(\t\022\025\n\rcenter_weight\030\003 \003(\002\"\303\001\n\016RefineDetP"
  "aram\0226\n\017prior_box_param\030\001 \003(\0132\035.vitis.ai"
  ".proto.PriorBoxParam\022\023\n\013num_classes\030\002 \001("
  "\005\022\025\n\rnms_threshold\030\003 \001(\002\022\026\n\016conf_thresho"
  "ld\030\004 \003(\002\022\022\n\nkeep_top_k\030\005 \001(\005\022\r\n\005top_k\030\006 "
  "\001(\005\022\022\n\nlayer_name\030\007 \003(\t\"\360\001\n\020TFRefineDetP"
  "aram\022=\n\017prior_box_param\030\001 \001(\0132$.vitis.ai"
  ".proto.MedicalPriorBoxParam\022\023\n\013num_class"
  "es\030\002 \001(\005\022\025\n\rnms_threshold\030\003 \001(\002\022\026\n\016conf_"
  "threshold\030\004 \001(\002\022\022\n\nkeep_top_k\030\005 \001(\005\022\r\n\005t"
  "op_k\030\006 \001(\005\022\022\n\nlayer_name\030\007 \003(\t\022\020\n\010scale_"
  "xy\030\010 \001(\002\022\020\n\010scale_wh\030\t \001(\002\"\356\003\n\025MedicalRe"
  "fineDetParam\022\023\n\013num_classes\030\001 \001(\005\022\020\n\010sca"
  "le_xy\030\002 \001(\002\022\020\n\010scale_wh\030\003 \001(\002\022\025\n\rnms_thr"
  "eshold\030\004 \001(\002\022\026\n\016conf_threshold\030\005 \001(\002\022\022\n\n"
  "keep_top_k\030\006 \001(\005\022\r\n\005top_k\030\007 \001(\005\022E\n\027medic"
  "al_prior_box_param\030\010 \001(\0132$.vitis.ai.prot"
  "o.MedicalPriorBoxParam\022E\n\013output_info\030\t "
  "\003(\01320.vitis.ai.proto.MedicalRefineDetPar"
  "am.OutputInfo\032i\n\nOutputInfo\022>\n\004type\030\001 \001("
  "\01620.vitis.ai.proto.MedicalRefineDetParam"
  ".OutputType\022\r\n\005order\030\002 \001(\005\022\014\n\004name\030\003 \001(\t"
  "\"Q\n\nOutputType\022\013\n\007USELESS\020\000\022\014\n\010ARM_CONF\020"
  "\001\022\014\n\010ARM_BBOX\020\002\022\014\n\010ODM_CONF\020\003\022\014\n\010ODM_BBO"
  "X\020\004\"B\n\tReidParam\022\020\n\010bn_means\030\001 \003(\002\022\022\n\nbn"
  "_weights\030\002 \003(\002\022\017\n\007bn_vars\030\003 \003(\002\"#\n\rOpenP"
  "oseParam\022\022\n\nlayer_name\030\001 \003(\t\"\220\004\n\023Classif"
  "icationParam\022\r\n\005top_k\030\001 \001(\005\022\025\n\rtest_accu"
  "racy\030\002 \001(\010\022K\n\017preprocess_type\030\003 \001(\01622.vi"
  "tis.ai.proto.ClassificationParam.Preproc"
  "essType\022\022\n\nlayer_name\030\004 \001(\t\022\022\n\nlabel_typ"
  "e\030\005 \001(\t\022H\n\016avg_pool_param\030\006 \001(\01320.vitis."
  "ai.proto.ClassificationParam.AvgPoolPara"
  "m\032\035\n\014AvgPoolParam\022\r\n\005scale\030\001 \001(\005\"\364\001\n\016Pre"
  "processType\022\020\n\014UNKNOWN_TYPE\020\000\022\t\n\005CAFFE\020\001"
  "\022\022\n\016VGG_PREPROCESS\020\002\022\030\n\024INCEPTION_PREPRO"
  "CESS\020\003\022\020\n\014INCEPTION_PT\020\004\022\020\n\014RESNET50_TF2"
  "\020\005\022\033\n\027EFFICIENTNET_PREPROCESS\020\006\022\023\n\017OFA_R"
  "ESNET50_PT\020\007\022\027\n\023OFA_DEPTHWISE_RES50\020\010\022\022\n"
  "\016RGB_PREPROCESS\020\t\022\024\n\020OFA_RESNET50_PT2\020\n\""
  "U\n\rDenseBoxParam\022\026\n\016num_of_classes\030\001 \001(\005"
  "\022\025\n\rnms_threshold\030\002 \001(\002\022\025\n\rdet_threshold"
  "\030\003 \001(\002\"\350\002\n\016MultiTaskParam\022\017\n\007th_conf\030\001 \003"
  "(\002\022 \n\030num_of_detection_classes\030\002 \001(\005\022#\n\033"
  "num_of_segmentation_classes\030\003 \001(\005\022\022\n\nkee"
  "p_top_k\030\004 \001(\005\022\r\n\005top_k\030\005 \001(\005\022\025\n\rnms_thre"
  "shold\030\006 \001(\002\0226\n\017prior_box_param\030\007 \003(\0132\035.v"
  "itis.ai.proto.PriorBoxParam\022\020\n\010loc_name\030"
  "\010 \003(\t\022\021\n\tconf_name\030\t \003(\t\022\027\n\017centerness_n"
  "ame\030\n \003(\t\022\020\n\010seg_name\030\013 \001(\t\022\025\n\rdrivable_"
  "name\030\014 \001(\t\022\022\n\ndepth_name\030\r \001(\t\022\021\n\tlane_n"
  "ame\030\016 \001(\t\"\355\002\n\rRoadlineParam\022\r\n\005ratio\030\001 \001"
  "(\005\022\021\n\tipm_width\030\002 \001(\002\022\022\n\nipm_height\030\003 \001("
  "\002\022\020\n\010ipm_left\030\004 \001(\002\022\021\n\tipm_right\030\005 \001(\002\022\017"
  "\n\007ipm_top\030\006 \001(\002\022\022\n\nipm_bottom\030\007 \001(\002\022\031\n\021i"
  "pm_interpolation\030\010 \001(\002\022\026\n\016ipm_vp_portion"
  "\030\t \001(\002\022\026\n\016focal_length_x\030\n \001(\002\022\026\n\016focal_"
  "length_y\030\013 \001(\002\022\030\n\020optical_center_x\030\014 \001(\002"
  "\022\030\n\020optical_center_y\030\r \001(\002\022\025\n\rcamera_hei"
  "ght\030\016 \001(\002\022\r\n\005pitch\030\017 \001(\002\022\013\n\003yaw\030\020 \001(\002\022\022\n"
  "\nlayer_name\030\021 \003(\t\"\032\n\tRcanParam\022\r\n\005scale\030"
  "\001 \001(\002\"\237\001\n\023RoadlineDeephiParam\022\020\n\010resize_"
  "w\030\001 \001(\005\022\020\n\010resize_h\030\002 \001(\005\022\016\n\006crop_x\030\003 \001("
  "\005\022\016\n\006crop_y\030\004 \001(\005\022\016\n\006crop_w\030\005 \001(\005\022\016\n\006cro"
  "p_h\030\006 \001(\005\022\026\n\016area_threshold\030\007 \001(\005\022\014\n\004epo"
  "w\030\010 \001(\005\"}\n\021SegmentationParam\022\016\n\006color1\030\001"
  " \001(\t\022\016\n\006color2\030\002 \001(\t\022\016\n\006color3\030\003 \001(\t\022\034\n\024"
  "specify_output_layer\030\004 \001(\010\022\032\n\022output_ten"
  "sor_name\030\005 \001(\t\"J\n\rPlatenumParam\022\r\n\005first"
  "\030\001 \003(\005\022\016\n\006second\030\002 \003(\005\022\032\n\022output_tensor_"
  "name\030\003 \003(\t\"\300\001\n\tSoloParam\022\r\n\005first\030\001 \003(\005\022"
  "\016\n\006second\030\002 \003(\005\022\031\n\021input_tensor_name\030\003 \003"
  "(\t\022\032\n\022output_tensor_name\030\004 \003(\t\022\021\n\tscore_"
  "thr\030\005 \001(\002\022\020\n\010mask_thr\030\006 \001(\002\022\017\n\007nms_pre\030\007"
  " \001(\r\022\022\n\nupdate_thr\030\010 \001(\002\022\023\n\013max_per_img\030"
  "\t \001(\r\"@\n\tLaneParam\022\r\n\005roi_x\030\001 \001(\005\022\r\n\005roi"
  "_y\030\002 \001(\005\022\025\n\rexpect_height\030\003 \001(\005\"\255\001\n\014Blin"
  "kerParam\0226\n\017prior_box_param\030\001 \003(\0132\035.viti"
  "s.ai.proto.PriorBoxParam\022\023\n\013num_classes\030"
  "\002 \001(\005\022\025\n\rnms_threshold\030\003 \001(\002\022\026\n\016conf_thr"
  "eshold\030\004 \003(\002\022\022\n\nkeep_top_k\030\005 \001(\005\022\r\n\005top_"
  "k\030\006 \001(\005\"\254\001\n\013SegdetParam\0226\n\017prior_box_par"
  "am\030\001 \003(\0132\035.vitis.ai.proto.PriorBoxParam\022"
  "\023\n\013num_classes\030\002 \001(\005\022\025\n\rnms_threshold\030\003 "
  "\001(\002\022\026\n\016conf_threshold\030\004 \003(\002\022\022\n\nkeep_top_"
  "k\030\005 \001(\005\022\r\n\005top_k\030\006 \001(\005\"\201\001\n\023FaceQuality5p"
  "tParam\022\032\n\022use_day_night_mode\030\001 \001(\010\022\030\n\020or"
  "iginal_quality\030\002 \001(\010\022\032\n\022quality_layer_na"
  "me\030\003 \001(\t\022\030\n\020point_layer_name\030\004 \001(\t\"\202\005\n\017R"
  "etinaFaceParam\022\?\n\013output_info\030\001 \003(\0132*.vi"
  "tis.ai.proto.RetinaFaceParam.OutputInfo\022"
  "\025\n\rnms_threshold\030\002 \001(\002\022\025\n\rdet_threshold\030"
  "\003 \001(\002\022A\n\014anchor_param\030\004 \003(\0132+.vitis.ai.p"
  "roto.RetinaFaceParam.AnchorParam\032[\n\020Outp"
  "utAnchorInfo\0228\n\004type\030\001 \001(\0162*.vitis.ai.pr"
  "oto.RetinaFaceParam.AnchorType\022\r\n\005index\030"
  "\002 \001(\005\032\262\001\n\nOutputInfo\0228\n\004type\030\001 \001(\0162*.vit"
  "is.ai.proto.RetinaFaceParam.OutputType\022\016"
  "\n\006stride\030\002 \001(\005\022\014\n\004name\030\003 \001(\t\022L\n\022output_a"
  "nchor_info\030\004 \001(\01320.vitis.ai.proto.Retina"
  "FaceParam.OutputAnchorInfo\032P\n\013AnchorPara"
  "m\022\016\n\006stride\030\001 \001(\005\022\021\n\tbase_size\030\002 \001(\005\022\016\n\006"
  "ratios\030\003 \003(\002\022\016\n\006scales\030\004 \003(\005\";\n\nOutputTy"
  "pe\022\013\n\007USELESS\020\000\022\010\n\004CONF\020\001\022\010\n\004BBOX\020\002\022\014\n\010L"
  "ANDMARK\020\003\"\034\n\nAnchorType\022\006\n\002BG\020\000\022\006\n\002FG\020\001\""
  ";\n\016DpuKernelParam\022\014\n\004name\030\001 \001(\t\022\014\n\004mean\030"
  "\002 \003(\002\022\r\n\005scale\030\003 \003(\002\"\361\001\n\nTfssdParam\022:\n\013o"
  "utput_info\030\001 \003(\0132%.vitis.ai.proto.TfssdP"
  "aram.OutputInfo\022\030\n\020feature_map_list\030\002 \003("
  "\005\032^\n\nOutputInfo\0223\n\004type\030\001 \001(\0162%.vitis.ai"
  ".proto.TfssdParam.OutputType\022\r\n\005order\030\002 "
  "\001(\005\022\014\n\004name\030\003 \001(\t\"-\n\nOutputType\022\013\n\007USELE"
  "SS\020\000\022\010\n\004CONF\020\001\022\010\n\004BBOX\020\002\"\247\005\n\024PointPillar"
  "sNusParam\022\031\n\021point_cloud_range\030\001 \003(\002\022\023\n\013"
  "in_channels\030\002 \001(\005\022\026\n\016max_points_num\030\003 \001("
  "\005\022\026\n\016max_voxels_num\030\004 \001(\005\022\024\n\014featmap_siz"
  "e\030\005 \003(\005\022D\n\013anchor_info\030\006 \001(\0132/.vitis.ai."
  "proto.PointPillarsNusParam.AnchorInfo\022\023\n"
  "\013num_classes\030\007 \001(\005\022\017\n\007nms_pre\030\010 \001(\002\022\022\n\nn"
  "ms_thresh\030\t \001(\002\022\017\n\007max_num\030\n \001(\002\022\024\n\014scor"
  "e_thresh\030\013 \001(\002\022\030\n\020score_layer_name\030\014 \001(\t"
  "\022\027\n\017bbox_layer_name\030\r \001(\t\022\026\n\016dir_layer_n"
  "ame\030\016 \001(\t\032\246\002\n\nAnchorInfo\022F\n\006ranges\030\001 \003(\013"
  "26.vitis.ai.proto.PointPillarsNusParam.A"
  "nchorInfo.Ranges\022D\n\005sizes\030\002 \003(\01325.vitis."
  "ai.proto.PointPillarsNusParam.AnchorInfo"
  ".Sizes\022\021\n\trotations\030\003 \003(\002\022\024\n\014custom_valu"
  "e\030\004 \003(\002\022\024\n\014align_corner\030\005 \001(\010\022\r\n\005scale\030\006"
  " \001(\002\032\036\n\006Ranges\022\024\n\014single_range\030\001 \003(\002\032\034\n\005"
  "Sizes\022\023\n\013single_size\030\001 \003(\002\")\n\023Segmentati"
  "on3DParam\022\022\n\nenable_knn\030\001 \001(\010\"z\n\013YoloV5P"
  "aram\022/\n\nyolo_param\030\001 \001(\0132\033.vitis.ai.prot"
  "o.YoloV3Param\022\016\n\006stride\030\002 \003(\002\022\025\n\rmax_box"
  "es_num\030\003 \001(\002\022\023\n\013max_nms_num\030\004 \001(\002\"\210\002\n\013Yo"
  "loV6Param\022\023\n\013num_classes\030\001 \001(\005\022\021\n\tanchor"
  "Cnt\030\002 \001(\005\022\026\n\016conf_threshold\030\003 \001(\002\022\025\n\rnms"
  "_threshold\030\004 \001(\002\022\016\n\006biases\030\005 \003(\002\022\020\n\010test"
  "_mAP\030\006 \001(\010\022\027\n\017bbox_layer_name\030\007 \003(\t\022\026\n\016c"
  "ls_layer_name\030\010 \003(\t\022\016\n\006stride\030\t \003(\002\022\025\n\rm"
  "ax_boxes_num\030\n \001(\002\022\023\n\013max_nms_num\030\013 \001(\002\022"
  "\023\n\013without_dfl\030\014 \001(\010\"y\n\013YoloV7Param\022\023\n\013c"
  "onf_thresh\030\001 \001(\002\022\025\n\rnms_threshold\030\002 \001(\002\022"
  "\023\n\013num_classes\030\003 \001(\005\022\031\n\021detect_layer_nam"
  "e\030\004 \003(\t\022\016\n\006biases\030\005 \003(\002\"\245\001\n\013YoloV8Param\022"
  "\023\n\013conf_thresh\030\001 \001(\002\022\025\n\rmax_boxes_num\030\002 "
  "\001(\002\022\025\n\rnms_threshold\030\003 \001(\002\022\023\n\013max_nms_nu"
  "m\030\004 \001(\002\022\023\n\013num_classes\030\005 \001(\005\022\031\n\021detect_l"
  "ayer_name\030\006 \003(\t\022\016\n\006stride\030\007 \003(\002\"\340\001\n\tFcos"
  "Param\022\026\n\016pre_nms_thresh\030\001 \001(\002\022\025\n\rpre_nms"
  "_top_n\030\002 \001(\005\022\025\n\rnms_threshold\030\003 \001(\002\022\032\n\022f"
  "pn_post_nms_top_n\030\004 \001(\002\022\023\n\013num_classes\030\005"
  " \001(\005\022\031\n\021center_layer_name\030\006 \003(\t\022\026\n\016cls_l"
  "ayer_name\030\007 \003(\t\022\031\n\021offset_layer_name\030\010 \003"
  "(\t\022\016\n\006stride\030\t \003(\002\"}\n\010BTSParam\022\022\n\nmul_fa"
  "ctor\030\001 \001(\002\022\033\n\023depth_scaled_factor\030\002 \001(\002\022"
  "!\n\031hard_sigmoid_output_scale\030\003 \001(\002\022\035\n\025mu"
  "ltiple_output_scale\030\004 \001(\002\"\237\001\n\025PointPilla"
  "rsBaseParam\022\031\n\021point_cloud_range\030\001 \003(\002\022\022"
  "\n\nvoxel_size\030\002 \003(\002\022\022\n\npoints_dim\030\003 \001(\005\022\026"
  "\n\016max_points_num\030\004 \001(\005\022\026\n\016max_voxels_num"
  "\030\005 \001(\005\022\023\n\013in_channels\030\006 \001(\005\"M\n\026PointPill"
  "arsKittiParam\0223\n\004base\030\001 \001(\0132%.vitis.ai.p"
  "roto.PointPillarsBaseParam\"\352\004\n\023X_Autonom"
  "ous3DParam\022\031\n\021point_cloud_range\030\001 \003(\002\022\022\n"
  "\nvoxel_size\030\002 \003(\002\022\022\n\npoints_dim\030\003 \001(\005\022\026\n"
  "\016max_points_num\030\004 \001(\005\022\026\n\016max_voxels_num\030"
  "\005 \001(\005\022\023\n\013in_channels\030\006 \001(\005\022P\n\014output_nam"
  "es\030\007 \001(\0132:.vitis.ai.proto.X_Autonomous3D"
  "Param.CenterPointOutputLayer\022\023\n\013num_clas"
  "ses\030\010 \001(\005\022\027\n\017out_size_facter\030\t \001(\002\022\031\n\021io"
  "u_quality_alpha\030\n \003(\002\022\036\n\026post_point_clou"
  "d_range\030\013 \003(\002\022\025\n\rbbox_pre_size\030\014 \001(\005\022\025\n\r"
  "bbox_max_size\030\r \001(\005\022\022\n\nnms_thresh\030\016 \003(\002\022"
  "\024\n\014score_thresh\030\017 \001(\002\032\267\001\n\026CenterPointOut"
  "putLayer\022\026\n\016reg_layer_name\030\001 \001(\t\022\031\n\021heig"
  "ht_layer_name\030\002 \001(\t\022\026\n\016dim_layer_name\030\003 "
  "\001(\t\022\026\n\016rot_layer_name\030\004 \001(\t\022\032\n\022heatmap_l"
  "ayer_name\030\005 \001(\t\022\036\n\026iou_quality_layer_nam"
  "e\030\006 \001(\t\"\311\004\n\023EfficientDetD2Param\022C\n\013ancho"
  "r_info\030\001 \001(\0132..vitis.ai.proto.EfficientD"
  "etD2Param.AnchorInfo\022\023\n\013num_classes\030\002 \001("
  "\005\022\023\n\013pre_nms_num\030\003 \001(\005\022\025\n\rnms_threshold\030"
  "\004 \001(\002\022\026\n\016conf_threshold\030\005 \001(\002\022\026\n\016nms_out"
  "put_num\030\006 \001(\005\022C\n\013output_info\030\007 \003(\0132..vit"
  "is.ai.proto.EfficientDetD2Param.OutputIn"
  "fo\032g\n\nOutputInfo\022<\n\004type\030\001 \001(\0162..vitis.a"
  "i.proto.EfficientDetD2Param.OutputType\022\r"
  "\n\005level\030\002 \001(\005\022\014\n\004name\030\003 \001(\t\032\236\001\n\nAnchorIn"
  "fo\022\021\n\tmin_level\030\001 \001(\005\022\021\n\tmax_level\030\002 \001(\005"
  "\022\022\n\nnum_scales\030\003 \001(\005\022\025\n\ranchor_scales\030\004 "
  "\003(\002\022\024\n\014aspect_ratio\030\005 \003(\002\022\023\n\013image_width"
  "\030\006 \001(\005\022\024\n\014image_height\030\007 \001(\005\"-\n\nOutputTy"
  "pe\022\013\n\007USELESS\020\000\022\010\n\004CONF\020\001\022\010\n\004BBOX\020\002\"\306\001\n\r"
  "SubgraphParam\022\016\n\006cycles\030\001 \001(\005\022\024\n\014subgrap"
  "h_idx\030\002 \001(\t\0227\n\005input\030\003 \003(\0132(.vitis.ai.pr"
  "oto.SubgraphParam.InputParam\032V\n\nInputPar"
  "am\022\014\n\004name\030\001 \001(\t\022\032\n\022previous_model_idx\030\002"
  " \001(\005\022\036\n\026previous_output_tensor\030\003 \001(\t\"\262\031\n"
  "\rDpuModelParam\022\014\n\004name\030\001 \001(\t\022.\n\006kernel\030\002"
  " \003(\0132\036.vitis.ai.proto.DpuKernelParam\022\030\n\020"
  "use_graph_runner\030\034 \001(\010\022;\n\nmodel_type\030\003 \001"
  "(\0162\'.vitis.ai.proto.DpuModelParam.ModelT"
  "ype\0228\n\020refine_det_param\030\004 \001(\0132\036.vitis.ai"
  ".proto.RefineDetParam\0222\n\ryolo_v3_param\030\005"
  " \001(\0132\033.vitis.ai.proto.YoloV3Param\022+\n\tssd"
  "_param\030\006 \001(\0132\030.vitis.ai.proto.SSDParam\022A"
  "\n\024classification_param\030\007 \001(\0132#.vitis.ai."
  "proto.ClassificationParam\0226\n\017dense_box_p"
  "aram\030\010 \001(\0132\035.vitis.ai.proto.DenseBoxPara"
  "m\0228\n\020multi_task_param\030\t \001(\0132\036.vitis.ai.p"
  "roto.MultiTaskParam\0225\n\016roadline_param\030\n "
  "\001(\0132\035.vitis.ai.proto.RoadlineParam\022=\n\022se"
  "gmentation_param\030\013 \001(\0132!.vitis.ai.proto."
  "SegmentationParam\022-\n\nlane_param\030\014 \001(\0132\031."
  "vitis.ai.proto.LaneParam\0223\n\rblinker_para"
  "m\030\r \001(\0132\034.vitis.ai.proto.BlinkerParam\0221\n"
  "\014segdet_param\030\016 \001(\0132\033.vitis.ai.proto.Seg"
  "detParam\022>\n\021roadline_dp_param\030\017 \001(\0132#.vi"
  "tis.ai.proto.RoadlineDeephiParam\022\r\n\005is_t"
  "f\030\020 \001(\010\022B\n\025face_quality5pt_param\030\021 \001(\0132#"
  ".vitis.ai.proto.FaceQuality5ptParam\022/\n\013t"
  "fssd_param\030\022 \001(\0132\032.vitis.ai.proto.TfssdP"
  "aram\0226\n\017open_pose_param\030\023 \001(\0132\035.vitis.ai"
  ".proto.OpenPoseParam\022-\n\nreid_param\030\024 \001(\013"
  "2\031.vitis.ai.proto.ReidParam\022G\n\030medical_r"
  "efine_det_param\030\025 \001(\0132%.vitis.ai.proto.M"
  "edicalRefineDetParam\0225\n\016platenum_param\030\026"
  " \001(\0132\035.vitis.ai.proto.PlatenumParam\022;\n\no"
  "rder_type\030\027 \001(\0162\'.vitis.ai.proto.DpuMode"
  "lParam.OrderType\0229\n\020retinaface_param\030\030 \001"
  "(\0132\037.vitis.ai.proto.RetinaFaceParam\022;\n\021t"
  "frefinedet_param\030\031 \001(\0132 .vitis.ai.proto."
  "TFRefineDetParam\022D\n\026pointpillars_nus_par"
  "am\030\032 \001(\0132$.vitis.ai.proto.PointPillarsNu"
  "sParam\022B\n\025segmentation_3d_param\030\033 \001(\0132#."
  "vitis.ai.proto.Segmentation3DParam\0222\n\ryo"
  "lo_v5_param\030\035 \001(\0132\033.vitis.ai.proto.YoloV"
  "5Param\022+\n\tbts_param\030\036 \001(\0132\030.vitis.ai.pro"
  "to.BTSParam\0224\n\016fair_mot_param\030\037 \001(\0132\034.vi"
  "tis.ai.proto.FairMotParam\022A\n\024x_autonomou"
  "s3d_param\030  \001(\0132#.vitis.ai.proto.X_Auton"
  "omous3DParam\022H\n\030pointpillars_kitti_param"
  "\030! \001(\0132&.vitis.ai.proto.PointPillarsKitt"
  "iParam\022-\n\nsolo_param\030\" \001(\0132\031.vitis.ai.pr"
  "oto.SoloParam\022/\n\010subgraph\030# \003(\0132\035.vitis."
  "ai.proto.SubgraphParam\022H\n\033vehicleclassif"
  "ication_param\030$ \001(\0132#.vitis.ai.proto.Cla"
  "ssificationParam\022B\n\025efficientdet_d2_para"
  "m\030% \001(\0132#.vitis.ai.proto.EfficientDetD2P"
  "aram\0223\n\rmovenet_param\030& \001(\0132\034.vitis.ai.p"
  "roto.MovenetParam\022-\n\nrcan_param\030\' \001(\0132\031."
  "vitis.ai.proto.RcanParam\0222\n\ryolo_v6_para"
  "m\030( \001(\0132\033.vitis.ai.proto.YoloV6Param\022-\n\n"
  "fcos_param\030) \001(\0132\031.vitis.ai.proto.FcosPa"
  "ram\0222\n\ryolo_v8_param\030* \001(\0132\033.vitis.ai.pr"
  "oto.YoloV8Param\0227\n\017retinanet_param\030+ \001(\013"
  "2\036.vitis.ai.proto.RetinaNetParam\0222\n\ryolo"
  "_v7_param\030, \001(\0132\033.vitis.ai.proto.YoloV7P"
  "aram\"\217\006\n\tModelType\022\020\n\014UNKNOWN_TYPE\020\000\022\r\n\t"
  "REFINEDET\020\001\022\007\n\003SSD\020\002\022\n\n\006YOLOv3\020\003\022\022\n\016CLAS"
  "SIFICATION\020\004\022\r\n\tDENSE_BOX\020\005\022\016\n\nMULTI_TAS"
  "K\020\006\022\014\n\010OPENPOSE\020\007\022\014\n\010ROADLINE\020\010\022\020\n\014SEGME"
  "NTATION\020\t\022\016\n\nPOSEDETECT\020\n\022\010\n\004LANE\020\013\022\013\n\007B"
  "LINKER\020\014\022\n\n\006SEGDET\020\r\022\023\n\017ROADLINE_DEEPHI\020"
  "\016\022\022\n\016FACEQUALITY5PT\020\017\022\010\n\004REID\020\020\022\n\n\006YOLOv"
  "2\020\021\022\t\n\005TFSSD\020\022\022\020\n\014FACELANDMARK\020\023\022\017\n\013PLAT"
  "EDETECT\020\024\022\014\n\010PLATENUM\020\025\022\016\n\nPLATERECOG\020\026\022"
  "\017\n\013FACEFEATURE\020\027\022\024\n\020SEGMENTATION8UC1\020\030\022\024"
  "\n\020SEGMENTATION8UC3\020\031\022\027\n\023MEDICALSEGMENTAT"
  "ION\020\032\022\021\n\rMULTITASK8UC1\020\033\022\021\n\rMULTITASK8UC"
  "3\020\034\022\024\n\020MEDICALREFINEDET\020\035\022\023\n\017FACEDETECTR"
  "ECOG\020\036\022\r\n\tHOURGLASS\020\037\022\016\n\nRETINAFACE\020 \022\017\n"
  "\013TFREFINEDET\020!\022\024\n\020POINTPILLARS_NUS\020\"\022\n\n\006"
  "YOLOv5\020#\022\014\n\010BTSParam\020$\022\013\n\007FAIRMOT\020%\022\022\n\016X"
  "_AUTONOMOUS3D\020&\022\020\n\014POINTPILLARS\020\'\022\010\n\004SOL"
  "O\020(\022\031\n\025VEHICLECLASSIFICATION\020)\022\023\n\017EFFICI"
  "ENTDET_D2\020*\022\013\n\007MOVENET\020+\022\n\n\006YOLOv6\020,\022\010\n\004"
  "FCOS\020-\022\n\n\006YOLOv8\020.\022\n\n\006YOLOv7\020/\"9\n\tOrderT"
  "ype\022\020\n\014UNKNOWNORDER\020\000\022\007\n\003BGR\020\001\022\007\n\003RGB\020\002\022"
  "\010\n\004GREY\020\003\"A\n\021DpuModelParamList\022,\n\005model\030"
  "\001 \003(\0132\035.vitis.ai.proto.DpuModelParam\"8\n\t"
  "Attribute\022\r\n\005label\030\001 \001(\t\022\r\n\005value\030\002 \001(\r\022"
  "\r\n\005score\030\003 \001(\002\"\035\n\005Point\022\t\n\001x\030\001 \001(\002\022\t\n\001y\030"
  "\002 \001(\002\"%\n\004Size\022\r\n\005width\030\001 \001(\002\022\016\n\006height\030\002"
  " \001(\002\"\216\001\n\013BoundingBox\0222\n\005label\030\001 \001(\0132#.vi"
  "tis.ai.proto.ClassificationLabel\022\'\n\010top_"
  "left\030\003 \001(\0132\025.vitis.ai.proto.Point\022\"\n\004siz"
  "e\030\004 \001(\0132\024.vitis.ai.proto.Size\"\?\n\017Attribu"
  "teResult\022,\n\tattribute\030\001 \003(\0132\031.vitis.ai.p"
  "roto.Attribute\"b\n\016LandmarkResult\022\r\n\005scor"
  "e\030\001 \001(\002\022$\n\005point\030\002 \003(\0132\025.vitis.ai.proto."
  "Point\022\016\n\006gender\030\003 \001(\r\022\013\n\003age\030\004 \001(\r\"A\n\014De"
  "tectResult\0221\n\014bounding_box\030\001 \003(\0132\033.vitis"
  ".ai.proto.BoundingBox\"C\n\rLineAttribute\022\014"
  "\n\004type\030\001 \001(\005\022$\n\005point\030\002 \003(\0132\025.vitis.ai.p"
  "roto.Point\"G\n\016RoadlineResult\0225\n\016line_att"
  "ribute\030\001 \003(\0132\035.vitis.ai.proto.LineAttrib"
  "ute\"%\n\005Score\022\r\n\005index\030\001 \001(\005\022\r\n\005score\030\002 \001"
  "(\002\"A\n\023ClassificationLabel\022\014\n\004name\030\001 \001(\t\022"
  "\r\n\005index\030\002 \001(\r\022\r\n\005score\030\003 \001(\002\"I\n\024Classif"
  "icationResult\0221\n\004topk\030\001 \003(\0132#.vitis.ai.p"
  "roto.ClassificationLabel\":\n\022FaceLandmark"
  "Result\022$\n\005point\030\001 \003(\0132\025.vitis.ai.proto.P"
  "oint\"F\n\021PlateDetectResult\0221\n\014bounding_bo"
  "x\030\001 \001(\0132\033.vitis.ai.proto.BoundingBox\">\n\021"
  "PlateNumberResult\022\024\n\014plate_number\030\001 \001(\t\022"
  "\023\n\013plate_color\030\002 \001(\t\"p\n\020PlateRecogResult"
  "\0221\n\014bounding_box\030\001 \001(\0132\033.vitis.ai.proto."
  "BoundingBox\022\024\n\014plate_number\030\002 \001(\t\022\023\n\013pla"
  "te_color\030\003 \001(\t\"\346\004\n\020PoseDetectResult\022-\n\016r"
  "ight_shoulder\030\001 \001(\0132\025.vitis.ai.proto.Poi"
  "nt\022*\n\013right_elbow\030\002 \001(\0132\025.vitis.ai.proto"
  ".Point\022*\n\013right_wrist\030\003 \001(\0132\025.vitis.ai.p"
  "roto.Point\022,\n\rleft_shoulder\030\004 \001(\0132\025.viti"
  "s.ai.proto.Point\022)\n\nleft_elbow\030\005 \001(\0132\025.v"
  "itis.ai.proto.Point\022)\n\nleft_wrist\030\006 \001(\0132"
  "\025.vitis.ai.proto.Point\022(\n\tright_hip\030\007 \001("
  "\0132\025.vitis.ai.proto.Point\022)\n\nright_knee\030\010"
  " \001(\0132\025.vitis.ai.proto.Point\022*\n\013right_ank"
  "le\030\t \001(\0132\025.vitis.ai.proto.Point\022\'\n\010left_"
  "hip\030\n \001(\0132\025.vitis.ai.proto.Point\022(\n\tleft"
  "_knee\030\013 \001(\0132\025.vitis.ai.proto.Point\022)\n\nle"
  "ft_ankle\030\014 \001(\0132\025.vitis.ai.proto.Point\022#\n"
  "\004head\030\r \001(\0132\025.vitis.ai.proto.Point\022#\n\004ne"
  "ck\030\016 \001(\0132\025.vitis.ai.proto.Point\"F\n\021FaceF"
  "eatureResult\022\021\n\tfloat_vec\030\001 \003(\002\022\017\n\007fix_v"
  "ec\030\002 \001(\014\022\r\n\005scale\030\003 \001(\002\"~\n\025FaceDetectRec"
  "ogResult\0221\n\014bounding_box\030\001 \003(\0132\033.vitis.a"
  "i.proto.BoundingBox\0222\n\007feature\030\002 \003(\0132!.v"
  "itis.ai.proto.FaceFeatureResult\"!\n\021Segme"
  "tationResult\022\014\n\004data\030\001 \003(\r\"S\n\030MedicalSeg"
  "metationResult\0227\n\014segmentation\030\001 \003(\0132!.v"
  "itis.ai.proto.SegmetationResult\"q\n\rVehic"
  "leResult\022\r\n\005label\030\001 \001(\005\022\r\n\005score\030\002 \001(\002\022\t"
  "\n\001x\030\003 \001(\002\022\t\n\001y\030\004 \001(\002\022\r\n\005width\030\005 \001(\002\022\016\n\006h"
  "eight\030\006 \001(\002\022\r\n\005angle\030\007 \001(\002\"\201\001\n\017MultiTask"
  "Result\0227\n\014segmentation\030\001 \001(\0132!.vitis.ai."
  "proto.SegmetationResult\0225\n\016vehicle_reusl"
  "t\030\002 \003(\0132\035.vitis.ai.proto.VehicleResult\"\032"
  "\n\nReidResult\022\014\n\004data\030\001 \003(\r\"\265\t\n\016DpuModelR"
  "esult\0229\n\017landmark_result\030\001 \001(\0132\036.vitis.a"
  "i.proto.LandmarkResultH\000\0225\n\rdetect_resul"
  "t\030\002 \001(\0132\034.vitis.ai.proto.DetectResultH\000\022"
  ";\n\020attribute_result\030\003 \001(\0132\037.vitis.ai.pro"
  "to.AttributeResultH\000\0229\n\021refine_det_resul"
  "t\030\004 \001(\0132\034.vitis.ai.proto.DetectResultH\000\022"
  "E\n\025classification_result\030\005 \001(\0132$.vitis.a"
  "i.proto.ClassificationResultH\000\0229\n\017roadli"
  "ne_result\030\006 \001(\0132\036.vitis.ai.proto.Roadlin"
  "eResultH\000\022A\n\023facelandmark_result\030\007 \001(\0132\""
  ".vitis.ai.proto.FaceLandmarkResultH\000\022@\n\023"
  "plate_detect_result\030\010 \001(\0132!.vitis.ai.pro"
  "to.PlateDetectResultH\000\022@\n\023plate_number_r"
  "esult\030\t \001(\0132!.vitis.ai.proto.PlateNumber"
  "ResultH\000\022>\n\022plate_recog_result\030\n \001(\0132 .v"
  "itis.ai.proto.PlateRecogResultH\000\022>\n\022pose"
  "_detect_result\030\013 \001(\0132 .vitis.ai.proto.Po"
  "seDetectResultH\000\022@\n\023face_feature_result\030"
  "\014 \001(\0132!.vitis.ai.proto.FaceFeatureResult"
  "H\000\022@\n\023segmentation_result\030\r \001(\0132!.vitis."
  "ai.proto.SegmetationResultH\000\022O\n\033medical_"
  "segmentation_result\030\016 \001(\0132(.vitis.ai.pro"
  "to.MedicalSegmetationResultH\000\022;\n\020multita"
  "sk_result\030\017 \001(\0132\037.vitis.ai.proto.MultiTa"
  "skResultH\000\0221\n\013reid_result\030\020 \001(\0132\032.vitis."
  "ai.proto.ReidResultH\000\022I\n\030face_detect_rec"
  "og_result\030\021 \001(\0132%.vitis.ai.proto.FaceDet"
  "ectRecogResultH\000\022L\n\034vehicleclassificatio"
  "n_result\030\022 \001(\0132$.vitis.ai.proto.Classifi"
  "cationResultH\000B\022\n\020dpu_model_resultb\006prot"
  "o3"
  ;
static ::_pbi::once_flag descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto = {
    false, false, 16242, descriptor_table_protodef_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto,
    "vitis/ai/proto/dpu_model_param.proto",
    &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once, nullptr, 0, 82,
    schemas, file_default_instances, TableStruct_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto::offsets,
    file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto, file_level_enum_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto,
    file_level_service_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::_pbi::DescriptorTable* descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter() {
  return &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::_pbi::AddDescriptorsRunner dynamic_init_dummy_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto(&descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto);
namespace vitis {
namespace ai {
namespace proto {
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* YoloV3Param_Type_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto);
  return file_level_enum_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[0];
}
bool YoloV3Param_Type_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr YoloV3Param_Type YoloV3Param::NORMAL;
constexpr YoloV3Param_Type YoloV3Param::YOLOV4_CSP;
constexpr YoloV3Param_Type YoloV3Param::YOLOV5;
constexpr YoloV3Param_Type YoloV3Param::YOLOX_NANO;
constexpr YoloV3Param_Type YoloV3Param::Type_MIN;
constexpr YoloV3Param_Type YoloV3Param::Type_MAX;
constexpr int YoloV3Param::Type_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* SSDParam_OutputType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto);
  return file_level_enum_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[1];
}
bool SSDParam_OutputType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr SSDParam_OutputType SSDParam::USELESS;
constexpr SSDParam_OutputType SSDParam::CONF;
constexpr SSDParam_OutputType SSDParam::BBOX;
constexpr SSDParam_OutputType SSDParam::FUNCTIONAL;
constexpr SSDParam_OutputType SSDParam::OutputType_MIN;
constexpr SSDParam_OutputType SSDParam::OutputType_MAX;
constexpr int SSDParam::OutputType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MedicalRefineDetParam_OutputType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto);
  return file_level_enum_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[2];
}
bool MedicalRefineDetParam_OutputType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr MedicalRefineDetParam_OutputType MedicalRefineDetParam::USELESS;
constexpr MedicalRefineDetParam_OutputType MedicalRefineDetParam::ARM_CONF;
constexpr MedicalRefineDetParam_OutputType MedicalRefineDetParam::ARM_BBOX;
constexpr MedicalRefineDetParam_OutputType MedicalRefineDetParam::ODM_CONF;
constexpr MedicalRefineDetParam_OutputType MedicalRefineDetParam::ODM_BBOX;
constexpr MedicalRefineDetParam_OutputType MedicalRefineDetParam::OutputType_MIN;
constexpr MedicalRefineDetParam_OutputType MedicalRefineDetParam::OutputType_MAX;
constexpr int MedicalRefineDetParam::OutputType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ClassificationParam_PreprocessType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto);
  return file_level_enum_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[3];
}
bool ClassificationParam_PreprocessType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr ClassificationParam_PreprocessType ClassificationParam::UNKNOWN_TYPE;
constexpr ClassificationParam_PreprocessType ClassificationParam::CAFFE;
constexpr ClassificationParam_PreprocessType ClassificationParam::VGG_PREPROCESS;
constexpr ClassificationParam_PreprocessType ClassificationParam::INCEPTION_PREPROCESS;
constexpr ClassificationParam_PreprocessType ClassificationParam::INCEPTION_PT;
constexpr ClassificationParam_PreprocessType ClassificationParam::RESNET50_TF2;
constexpr ClassificationParam_PreprocessType ClassificationParam::EFFICIENTNET_PREPROCESS;
constexpr ClassificationParam_PreprocessType ClassificationParam::OFA_RESNET50_PT;
constexpr ClassificationParam_PreprocessType ClassificationParam::OFA_DEPTHWISE_RES50;
constexpr ClassificationParam_PreprocessType ClassificationParam::RGB_PREPROCESS;
constexpr ClassificationParam_PreprocessType ClassificationParam::OFA_RESNET50_PT2;
constexpr ClassificationParam_PreprocessType ClassificationParam::PreprocessType_MIN;
constexpr ClassificationParam_PreprocessType ClassificationParam::PreprocessType_MAX;
constexpr int ClassificationParam::PreprocessType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RetinaFaceParam_OutputType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto);
  return file_level_enum_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[4];
}
bool RetinaFaceParam_OutputType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr RetinaFaceParam_OutputType RetinaFaceParam::USELESS;
constexpr RetinaFaceParam_OutputType RetinaFaceParam::CONF;
constexpr RetinaFaceParam_OutputType RetinaFaceParam::BBOX;
constexpr RetinaFaceParam_OutputType RetinaFaceParam::LANDMARK;
constexpr RetinaFaceParam_OutputType RetinaFaceParam::OutputType_MIN;
constexpr RetinaFaceParam_OutputType RetinaFaceParam::OutputType_MAX;
constexpr int RetinaFaceParam::OutputType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RetinaFaceParam_AnchorType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto);
  return file_level_enum_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[5];
}
bool RetinaFaceParam_AnchorType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr RetinaFaceParam_AnchorType RetinaFaceParam::BG;
constexpr RetinaFaceParam_AnchorType RetinaFaceParam::FG;
constexpr RetinaFaceParam_AnchorType RetinaFaceParam::AnchorType_MIN;
constexpr RetinaFaceParam_AnchorType RetinaFaceParam::AnchorType_MAX;
constexpr int RetinaFaceParam::AnchorType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TfssdParam_OutputType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto);
  return file_level_enum_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[6];
}
bool TfssdParam_OutputType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr TfssdParam_OutputType TfssdParam::USELESS;
constexpr TfssdParam_OutputType TfssdParam::CONF;
constexpr TfssdParam_OutputType TfssdParam::BBOX;
constexpr TfssdParam_OutputType TfssdParam::OutputType_MIN;
constexpr TfssdParam_OutputType TfssdParam::OutputType_MAX;
constexpr int TfssdParam::OutputType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* EfficientDetD2Param_OutputType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto);
  return file_level_enum_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[7];
}
bool EfficientDetD2Param_OutputType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr EfficientDetD2Param_OutputType EfficientDetD2Param::USELESS;
constexpr EfficientDetD2Param_OutputType EfficientDetD2Param::CONF;
constexpr EfficientDetD2Param_OutputType EfficientDetD2Param::BBOX;
constexpr EfficientDetD2Param_OutputType EfficientDetD2Param::OutputType_MIN;
constexpr EfficientDetD2Param_OutputType EfficientDetD2Param::OutputType_MAX;
constexpr int EfficientDetD2Param::OutputType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DpuModelParam_ModelType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto);
  return file_level_enum_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[8];
}
bool DpuModelParam_ModelType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
    case 21:
    case 22:
    case 23:
    case 24:
    case 25:
    case 26:
    case 27:
    case 28:
    case 29:
    case 30:
    case 31:
    case 32:
    case 33:
    case 34:
    case 35:
    case 36:
    case 37:
    case 38:
    case 39:
    case 40:
    case 41:
    case 42:
    case 43:
    case 44:
    case 45:
    case 46:
    case 47:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr DpuModelParam_ModelType DpuModelParam::UNKNOWN_TYPE;
constexpr DpuModelParam_ModelType DpuModelParam::REFINEDET;
constexpr DpuModelParam_ModelType DpuModelParam::SSD;
constexpr DpuModelParam_ModelType DpuModelParam::YOLOv3;
constexpr DpuModelParam_ModelType DpuModelParam::CLASSIFICATION;
constexpr DpuModelParam_ModelType DpuModelParam::DENSE_BOX;
constexpr DpuModelParam_ModelType DpuModelParam::MULTI_TASK;
constexpr DpuModelParam_ModelType DpuModelParam::OPENPOSE;
constexpr DpuModelParam_ModelType DpuModelParam::ROADLINE;
constexpr DpuModelParam_ModelType DpuModelParam::SEGMENTATION;
constexpr DpuModelParam_ModelType DpuModelParam::POSEDETECT;
constexpr DpuModelParam_ModelType DpuModelParam::LANE;
constexpr DpuModelParam_ModelType DpuModelParam::BLINKER;
constexpr DpuModelParam_ModelType DpuModelParam::SEGDET;
constexpr DpuModelParam_ModelType DpuModelParam::ROADLINE_DEEPHI;
constexpr DpuModelParam_ModelType DpuModelParam::FACEQUALITY5PT;
constexpr DpuModelParam_ModelType DpuModelParam::REID;
constexpr DpuModelParam_ModelType DpuModelParam::YOLOv2;
constexpr DpuModelParam_ModelType DpuModelParam::TFSSD;
constexpr DpuModelParam_ModelType DpuModelParam::FACELANDMARK;
constexpr DpuModelParam_ModelType DpuModelParam::PLATEDETECT;
constexpr DpuModelParam_ModelType DpuModelParam::PLATENUM;
constexpr DpuModelParam_ModelType DpuModelParam::PLATERECOG;
constexpr DpuModelParam_ModelType DpuModelParam::FACEFEATURE;
constexpr DpuModelParam_ModelType DpuModelParam::SEGMENTATION8UC1;
constexpr DpuModelParam_ModelType DpuModelParam::SEGMENTATION8UC3;
constexpr DpuModelParam_ModelType DpuModelParam::MEDICALSEGMENTATION;
constexpr DpuModelParam_ModelType DpuModelParam::MULTITASK8UC1;
constexpr DpuModelParam_ModelType DpuModelParam::MULTITASK8UC3;
constexpr DpuModelParam_ModelType DpuModelParam::MEDICALREFINEDET;
constexpr DpuModelParam_ModelType DpuModelParam::FACEDETECTRECOG;
constexpr DpuModelParam_ModelType DpuModelParam::HOURGLASS;
constexpr DpuModelParam_ModelType DpuModelParam::RETINAFACE;
constexpr DpuModelParam_ModelType DpuModelParam::TFREFINEDET;
constexpr DpuModelParam_ModelType DpuModelParam::POINTPILLARS_NUS;
constexpr DpuModelParam_ModelType DpuModelParam::YOLOv5;
constexpr DpuModelParam_ModelType DpuModelParam::BTSParam;
constexpr DpuModelParam_ModelType DpuModelParam::FAIRMOT;
constexpr DpuModelParam_ModelType DpuModelParam::X_AUTONOMOUS3D;
constexpr DpuModelParam_ModelType DpuModelParam::POINTPILLARS;
constexpr DpuModelParam_ModelType DpuModelParam::SOLO;
constexpr DpuModelParam_ModelType DpuModelParam::VEHICLECLASSIFICATION;
constexpr DpuModelParam_ModelType DpuModelParam::EFFICIENTDET_D2;
constexpr DpuModelParam_ModelType DpuModelParam::MOVENET;
constexpr DpuModelParam_ModelType DpuModelParam::YOLOv6;
constexpr DpuModelParam_ModelType DpuModelParam::FCOS;
constexpr DpuModelParam_ModelType DpuModelParam::YOLOv8;
constexpr DpuModelParam_ModelType DpuModelParam::YOLOv7;
constexpr DpuModelParam_ModelType DpuModelParam::ModelType_MIN;
constexpr DpuModelParam_ModelType DpuModelParam::ModelType_MAX;
constexpr int DpuModelParam::ModelType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* DpuModelParam_OrderType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto);
  return file_level_enum_descriptors_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[9];
}
bool DpuModelParam_OrderType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr DpuModelParam_OrderType DpuModelParam::UNKNOWNORDER;
constexpr DpuModelParam_OrderType DpuModelParam::BGR;
constexpr DpuModelParam_OrderType DpuModelParam::RGB;
constexpr DpuModelParam_OrderType DpuModelParam::GREY;
constexpr DpuModelParam_OrderType DpuModelParam::OrderType_MIN;
constexpr DpuModelParam_OrderType DpuModelParam::OrderType_MAX;
constexpr int DpuModelParam::OrderType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))

// ===================================================================

class YoloV3Param::_Internal {
 public:
};

YoloV3Param::YoloV3Param(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.YoloV3Param)
}
YoloV3Param::YoloV3Param(const YoloV3Param& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  YoloV3Param* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.biases_){from._impl_.biases_}
    , decltype(_impl_.layer_name_){from._impl_.layer_name_}
    , decltype(_impl_.num_classes_){}
    , decltype(_impl_.anchorcnt_){}
    , decltype(_impl_.conf_threshold_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.test_map_){}
    , decltype(_impl_.type_){}
    , decltype(_impl_.iou_type_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.num_classes_, &from._impl_.num_classes_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.iou_type_) -
    reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.iou_type_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.YoloV3Param)
}

inline void YoloV3Param::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.biases_){arena}
    , decltype(_impl_.layer_name_){arena}
    , decltype(_impl_.num_classes_){0}
    , decltype(_impl_.anchorcnt_){0}
    , decltype(_impl_.conf_threshold_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.test_map_){false}
    , decltype(_impl_.type_){0}
    , decltype(_impl_.iou_type_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

YoloV3Param::~YoloV3Param() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.YoloV3Param)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void YoloV3Param::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.biases_.~RepeatedField();
  _impl_.layer_name_.~RepeatedPtrField();
}

void YoloV3Param::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void YoloV3Param::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.YoloV3Param)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.biases_.Clear();
  _impl_.layer_name_.Clear();
  ::memset(&_impl_.num_classes_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.iou_type_) -
      reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.iou_type_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* YoloV3Param::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 num_classes = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 anchorCnt = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.anchorcnt_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float conf_threshold = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.conf_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float biases = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_biases(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 45) {
          _internal_add_biases(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // bool test_mAP = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.test_map_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string layer_name = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.YoloV3Param.layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.YoloV3Param.Type type = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 64)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_type(static_cast<::vitis::ai::proto::YoloV3Param_Type>(val));
        } else
          goto handle_unusual;
        continue;
      // int32 iou_type = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 72)) {
          _impl_.iou_type_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* YoloV3Param::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.YoloV3Param)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 num_classes = 1;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_num_classes(), target);
  }

  // int32 anchorCnt = 2;
  if (this->_internal_anchorcnt() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_anchorcnt(), target);
  }

  // float conf_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_conf_threshold(), target);
  }

  // float nms_threshold = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(4, this->_internal_nms_threshold(), target);
  }

  // repeated float biases = 5;
  if (this->_internal_biases_size() > 0) {
    target = stream->WriteFixedPacked(5, _internal_biases(), target);
  }

  // bool test_mAP = 6;
  if (this->_internal_test_map() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(6, this->_internal_test_map(), target);
  }

  // repeated string layer_name = 7;
  for (int i = 0, n = this->_internal_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.YoloV3Param.layer_name");
    target = stream->WriteString(7, s, target);
  }

  // .vitis.ai.proto.YoloV3Param.Type type = 8;
  if (this->_internal_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      8, this->_internal_type(), target);
  }

  // int32 iou_type = 9;
  if (this->_internal_iou_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(9, this->_internal_iou_type(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.YoloV3Param)
  return target;
}

size_t YoloV3Param::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.YoloV3Param)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float biases = 5;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_biases_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated string layer_name = 7;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.layer_name_.size());
  for (int i = 0, n = _impl_.layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.layer_name_.Get(i));
  }

  // int32 num_classes = 1;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  // int32 anchorCnt = 2;
  if (this->_internal_anchorcnt() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_anchorcnt());
  }

  // float conf_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    total_size += 1 + 4;
  }

  // float nms_threshold = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // bool test_mAP = 6;
  if (this->_internal_test_map() != 0) {
    total_size += 1 + 1;
  }

  // .vitis.ai.proto.YoloV3Param.Type type = 8;
  if (this->_internal_type() != 0) {
    total_size += 1 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_type());
  }

  // int32 iou_type = 9;
  if (this->_internal_iou_type() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_iou_type());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData YoloV3Param::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    YoloV3Param::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*YoloV3Param::GetClassData() const { return &_class_data_; }


void YoloV3Param::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<YoloV3Param*>(&to_msg);
  auto& from = static_cast<const YoloV3Param&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.YoloV3Param)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.biases_.MergeFrom(from._impl_.biases_);
  _this->_impl_.layer_name_.MergeFrom(from._impl_.layer_name_);
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  if (from._internal_anchorcnt() != 0) {
    _this->_internal_set_anchorcnt(from._internal_anchorcnt());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = from._internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    _this->_internal_set_conf_threshold(from._internal_conf_threshold());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  if (from._internal_test_map() != 0) {
    _this->_internal_set_test_map(from._internal_test_map());
  }
  if (from._internal_type() != 0) {
    _this->_internal_set_type(from._internal_type());
  }
  if (from._internal_iou_type() != 0) {
    _this->_internal_set_iou_type(from._internal_iou_type());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void YoloV3Param::CopyFrom(const YoloV3Param& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.YoloV3Param)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool YoloV3Param::IsInitialized() const {
  return true;
}

void YoloV3Param::InternalSwap(YoloV3Param* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.biases_.InternalSwap(&other->_impl_.biases_);
  _impl_.layer_name_.InternalSwap(&other->_impl_.layer_name_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(YoloV3Param, _impl_.iou_type_)
      + sizeof(YoloV3Param::_impl_.iou_type_)
      - PROTOBUF_FIELD_OFFSET(YoloV3Param, _impl_.num_classes_)>(
          reinterpret_cast<char*>(&_impl_.num_classes_),
          reinterpret_cast<char*>(&other->_impl_.num_classes_));
}

::PROTOBUF_NAMESPACE_ID::Metadata YoloV3Param::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[0]);
}

// ===================================================================

class MedicalPriorBoxParam::_Internal {
 public:
};

MedicalPriorBoxParam::MedicalPriorBoxParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.MedicalPriorBoxParam)
}
MedicalPriorBoxParam::MedicalPriorBoxParam(const MedicalPriorBoxParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  MedicalPriorBoxParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.input_shape_){from._impl_.input_shape_}
    , /*decltype(_impl_._input_shape_cached_byte_size_)*/{0}
    , decltype(_impl_.feature_shapes_){from._impl_.feature_shapes_}
    , /*decltype(_impl_._feature_shapes_cached_byte_size_)*/{0}
    , decltype(_impl_.min_sizes_){from._impl_.min_sizes_}
    , /*decltype(_impl_._min_sizes_cached_byte_size_)*/{0}
    , decltype(_impl_.max_sizes_){from._impl_.max_sizes_}
    , /*decltype(_impl_._max_sizes_cached_byte_size_)*/{0}
    , decltype(_impl_.aspect_ratios_){from._impl_.aspect_ratios_}
    , decltype(_impl_.steps_){from._impl_.steps_}
    , /*decltype(_impl_._steps_cached_byte_size_)*/{0}
    , decltype(_impl_.offset_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _this->_impl_.offset_ = from._impl_.offset_;
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.MedicalPriorBoxParam)
}

inline void MedicalPriorBoxParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.input_shape_){arena}
    , /*decltype(_impl_._input_shape_cached_byte_size_)*/{0}
    , decltype(_impl_.feature_shapes_){arena}
    , /*decltype(_impl_._feature_shapes_cached_byte_size_)*/{0}
    , decltype(_impl_.min_sizes_){arena}
    , /*decltype(_impl_._min_sizes_cached_byte_size_)*/{0}
    , decltype(_impl_.max_sizes_){arena}
    , /*decltype(_impl_._max_sizes_cached_byte_size_)*/{0}
    , decltype(_impl_.aspect_ratios_){arena}
    , decltype(_impl_.steps_){arena}
    , /*decltype(_impl_._steps_cached_byte_size_)*/{0}
    , decltype(_impl_.offset_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

MedicalPriorBoxParam::~MedicalPriorBoxParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.MedicalPriorBoxParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MedicalPriorBoxParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.input_shape_.~RepeatedField();
  _impl_.feature_shapes_.~RepeatedField();
  _impl_.min_sizes_.~RepeatedField();
  _impl_.max_sizes_.~RepeatedField();
  _impl_.aspect_ratios_.~RepeatedField();
  _impl_.steps_.~RepeatedField();
}

void MedicalPriorBoxParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MedicalPriorBoxParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.MedicalPriorBoxParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.input_shape_.Clear();
  _impl_.feature_shapes_.Clear();
  _impl_.min_sizes_.Clear();
  _impl_.max_sizes_.Clear();
  _impl_.aspect_ratios_.Clear();
  _impl_.steps_.Clear();
  _impl_.offset_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* MedicalPriorBoxParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated int32 input_shape = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_input_shape(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 8) {
          _internal_add_input_shape(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 feature_shapes = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_feature_shapes(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 16) {
          _internal_add_feature_shapes(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 min_sizes = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_min_sizes(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 24) {
          _internal_add_min_sizes(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 max_sizes = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_max_sizes(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 32) {
          _internal_add_max_sizes(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated float aspect_ratios = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_aspect_ratios(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 45) {
          _internal_add_aspect_ratios(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 steps = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_steps(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 48) {
          _internal_add_steps(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float offset = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 61)) {
          _impl_.offset_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* MedicalPriorBoxParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.MedicalPriorBoxParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated int32 input_shape = 1;
  {
    int byte_size = _impl_._input_shape_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          1, _internal_input_shape(), byte_size, target);
    }
  }

  // repeated int32 feature_shapes = 2;
  {
    int byte_size = _impl_._feature_shapes_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          2, _internal_feature_shapes(), byte_size, target);
    }
  }

  // repeated int32 min_sizes = 3;
  {
    int byte_size = _impl_._min_sizes_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          3, _internal_min_sizes(), byte_size, target);
    }
  }

  // repeated int32 max_sizes = 4;
  {
    int byte_size = _impl_._max_sizes_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          4, _internal_max_sizes(), byte_size, target);
    }
  }

  // repeated float aspect_ratios = 5;
  if (this->_internal_aspect_ratios_size() > 0) {
    target = stream->WriteFixedPacked(5, _internal_aspect_ratios(), target);
  }

  // repeated int32 steps = 6;
  {
    int byte_size = _impl_._steps_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          6, _internal_steps(), byte_size, target);
    }
  }

  // float offset = 7;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_offset = this->_internal_offset();
  uint32_t raw_offset;
  memcpy(&raw_offset, &tmp_offset, sizeof(tmp_offset));
  if (raw_offset != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(7, this->_internal_offset(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.MedicalPriorBoxParam)
  return target;
}

size_t MedicalPriorBoxParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.MedicalPriorBoxParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated int32 input_shape = 1;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.input_shape_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._input_shape_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // repeated int32 feature_shapes = 2;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.feature_shapes_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._feature_shapes_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // repeated int32 min_sizes = 3;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.min_sizes_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._min_sizes_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // repeated int32 max_sizes = 4;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.max_sizes_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._max_sizes_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // repeated float aspect_ratios = 5;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_aspect_ratios_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated int32 steps = 6;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.steps_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._steps_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // float offset = 7;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_offset = this->_internal_offset();
  uint32_t raw_offset;
  memcpy(&raw_offset, &tmp_offset, sizeof(tmp_offset));
  if (raw_offset != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MedicalPriorBoxParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    MedicalPriorBoxParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MedicalPriorBoxParam::GetClassData() const { return &_class_data_; }


void MedicalPriorBoxParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<MedicalPriorBoxParam*>(&to_msg);
  auto& from = static_cast<const MedicalPriorBoxParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.MedicalPriorBoxParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.input_shape_.MergeFrom(from._impl_.input_shape_);
  _this->_impl_.feature_shapes_.MergeFrom(from._impl_.feature_shapes_);
  _this->_impl_.min_sizes_.MergeFrom(from._impl_.min_sizes_);
  _this->_impl_.max_sizes_.MergeFrom(from._impl_.max_sizes_);
  _this->_impl_.aspect_ratios_.MergeFrom(from._impl_.aspect_ratios_);
  _this->_impl_.steps_.MergeFrom(from._impl_.steps_);
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_offset = from._internal_offset();
  uint32_t raw_offset;
  memcpy(&raw_offset, &tmp_offset, sizeof(tmp_offset));
  if (raw_offset != 0) {
    _this->_internal_set_offset(from._internal_offset());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void MedicalPriorBoxParam::CopyFrom(const MedicalPriorBoxParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.MedicalPriorBoxParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MedicalPriorBoxParam::IsInitialized() const {
  return true;
}

void MedicalPriorBoxParam::InternalSwap(MedicalPriorBoxParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.input_shape_.InternalSwap(&other->_impl_.input_shape_);
  _impl_.feature_shapes_.InternalSwap(&other->_impl_.feature_shapes_);
  _impl_.min_sizes_.InternalSwap(&other->_impl_.min_sizes_);
  _impl_.max_sizes_.InternalSwap(&other->_impl_.max_sizes_);
  _impl_.aspect_ratios_.InternalSwap(&other->_impl_.aspect_ratios_);
  _impl_.steps_.InternalSwap(&other->_impl_.steps_);
  swap(_impl_.offset_, other->_impl_.offset_);
}

::PROTOBUF_NAMESPACE_ID::Metadata MedicalPriorBoxParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[1]);
}

// ===================================================================

class PriorBoxParam::_Internal {
 public:
};

PriorBoxParam::PriorBoxParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.PriorBoxParam)
}
PriorBoxParam::PriorBoxParam(const PriorBoxParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PriorBoxParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.variances_){from._impl_.variances_}
    , decltype(_impl_.min_sizes_){from._impl_.min_sizes_}
    , decltype(_impl_.max_sizes_){from._impl_.max_sizes_}
    , decltype(_impl_.aspect_ratios_){from._impl_.aspect_ratios_}
    , decltype(_impl_.layer_width_){}
    , decltype(_impl_.layer_height_){}
    , decltype(_impl_.offset_){}
    , decltype(_impl_.step_width_){}
    , decltype(_impl_.step_height_){}
    , decltype(_impl_.flip_){}
    , decltype(_impl_.clip_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.layer_width_, &from._impl_.layer_width_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.clip_) -
    reinterpret_cast<char*>(&_impl_.layer_width_)) + sizeof(_impl_.clip_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.PriorBoxParam)
}

inline void PriorBoxParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.variances_){arena}
    , decltype(_impl_.min_sizes_){arena}
    , decltype(_impl_.max_sizes_){arena}
    , decltype(_impl_.aspect_ratios_){arena}
    , decltype(_impl_.layer_width_){0}
    , decltype(_impl_.layer_height_){0}
    , decltype(_impl_.offset_){0}
    , decltype(_impl_.step_width_){0}
    , decltype(_impl_.step_height_){0}
    , decltype(_impl_.flip_){false}
    , decltype(_impl_.clip_){false}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

PriorBoxParam::~PriorBoxParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.PriorBoxParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PriorBoxParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.variances_.~RepeatedField();
  _impl_.min_sizes_.~RepeatedField();
  _impl_.max_sizes_.~RepeatedField();
  _impl_.aspect_ratios_.~RepeatedField();
}

void PriorBoxParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PriorBoxParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.PriorBoxParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.variances_.Clear();
  _impl_.min_sizes_.Clear();
  _impl_.max_sizes_.Clear();
  _impl_.aspect_ratios_.Clear();
  ::memset(&_impl_.layer_width_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.clip_) -
      reinterpret_cast<char*>(&_impl_.layer_width_)) + sizeof(_impl_.clip_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PriorBoxParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 layer_width = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.layer_width_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 layer_height = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.layer_height_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated float variances = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_variances(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 37) {
          _internal_add_variances(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float min_sizes = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_min_sizes(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 45) {
          _internal_add_min_sizes(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float max_sizes = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_max_sizes(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 53) {
          _internal_add_max_sizes(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float aspect_ratios = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_aspect_ratios(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 61) {
          _internal_add_aspect_ratios(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float offset = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 69)) {
          _impl_.offset_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float step_width = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 77)) {
          _impl_.step_width_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float step_height = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 85)) {
          _impl_.step_height_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // bool flip = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 88)) {
          _impl_.flip_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool clip = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 96)) {
          _impl_.clip_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PriorBoxParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.PriorBoxParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 layer_width = 1;
  if (this->_internal_layer_width() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_layer_width(), target);
  }

  // int32 layer_height = 2;
  if (this->_internal_layer_height() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_layer_height(), target);
  }

  // repeated float variances = 4;
  if (this->_internal_variances_size() > 0) {
    target = stream->WriteFixedPacked(4, _internal_variances(), target);
  }

  // repeated float min_sizes = 5;
  if (this->_internal_min_sizes_size() > 0) {
    target = stream->WriteFixedPacked(5, _internal_min_sizes(), target);
  }

  // repeated float max_sizes = 6;
  if (this->_internal_max_sizes_size() > 0) {
    target = stream->WriteFixedPacked(6, _internal_max_sizes(), target);
  }

  // repeated float aspect_ratios = 7;
  if (this->_internal_aspect_ratios_size() > 0) {
    target = stream->WriteFixedPacked(7, _internal_aspect_ratios(), target);
  }

  // float offset = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_offset = this->_internal_offset();
  uint32_t raw_offset;
  memcpy(&raw_offset, &tmp_offset, sizeof(tmp_offset));
  if (raw_offset != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(8, this->_internal_offset(), target);
  }

  // float step_width = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_step_width = this->_internal_step_width();
  uint32_t raw_step_width;
  memcpy(&raw_step_width, &tmp_step_width, sizeof(tmp_step_width));
  if (raw_step_width != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(9, this->_internal_step_width(), target);
  }

  // float step_height = 10;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_step_height = this->_internal_step_height();
  uint32_t raw_step_height;
  memcpy(&raw_step_height, &tmp_step_height, sizeof(tmp_step_height));
  if (raw_step_height != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(10, this->_internal_step_height(), target);
  }

  // bool flip = 11;
  if (this->_internal_flip() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(11, this->_internal_flip(), target);
  }

  // bool clip = 12;
  if (this->_internal_clip() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(12, this->_internal_clip(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.PriorBoxParam)
  return target;
}

size_t PriorBoxParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.PriorBoxParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float variances = 4;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_variances_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float min_sizes = 5;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_min_sizes_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float max_sizes = 6;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_max_sizes_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float aspect_ratios = 7;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_aspect_ratios_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // int32 layer_width = 1;
  if (this->_internal_layer_width() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_layer_width());
  }

  // int32 layer_height = 2;
  if (this->_internal_layer_height() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_layer_height());
  }

  // float offset = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_offset = this->_internal_offset();
  uint32_t raw_offset;
  memcpy(&raw_offset, &tmp_offset, sizeof(tmp_offset));
  if (raw_offset != 0) {
    total_size += 1 + 4;
  }

  // float step_width = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_step_width = this->_internal_step_width();
  uint32_t raw_step_width;
  memcpy(&raw_step_width, &tmp_step_width, sizeof(tmp_step_width));
  if (raw_step_width != 0) {
    total_size += 1 + 4;
  }

  // float step_height = 10;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_step_height = this->_internal_step_height();
  uint32_t raw_step_height;
  memcpy(&raw_step_height, &tmp_step_height, sizeof(tmp_step_height));
  if (raw_step_height != 0) {
    total_size += 1 + 4;
  }

  // bool flip = 11;
  if (this->_internal_flip() != 0) {
    total_size += 1 + 1;
  }

  // bool clip = 12;
  if (this->_internal_clip() != 0) {
    total_size += 1 + 1;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PriorBoxParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PriorBoxParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PriorBoxParam::GetClassData() const { return &_class_data_; }


void PriorBoxParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PriorBoxParam*>(&to_msg);
  auto& from = static_cast<const PriorBoxParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.PriorBoxParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.variances_.MergeFrom(from._impl_.variances_);
  _this->_impl_.min_sizes_.MergeFrom(from._impl_.min_sizes_);
  _this->_impl_.max_sizes_.MergeFrom(from._impl_.max_sizes_);
  _this->_impl_.aspect_ratios_.MergeFrom(from._impl_.aspect_ratios_);
  if (from._internal_layer_width() != 0) {
    _this->_internal_set_layer_width(from._internal_layer_width());
  }
  if (from._internal_layer_height() != 0) {
    _this->_internal_set_layer_height(from._internal_layer_height());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_offset = from._internal_offset();
  uint32_t raw_offset;
  memcpy(&raw_offset, &tmp_offset, sizeof(tmp_offset));
  if (raw_offset != 0) {
    _this->_internal_set_offset(from._internal_offset());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_step_width = from._internal_step_width();
  uint32_t raw_step_width;
  memcpy(&raw_step_width, &tmp_step_width, sizeof(tmp_step_width));
  if (raw_step_width != 0) {
    _this->_internal_set_step_width(from._internal_step_width());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_step_height = from._internal_step_height();
  uint32_t raw_step_height;
  memcpy(&raw_step_height, &tmp_step_height, sizeof(tmp_step_height));
  if (raw_step_height != 0) {
    _this->_internal_set_step_height(from._internal_step_height());
  }
  if (from._internal_flip() != 0) {
    _this->_internal_set_flip(from._internal_flip());
  }
  if (from._internal_clip() != 0) {
    _this->_internal_set_clip(from._internal_clip());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PriorBoxParam::CopyFrom(const PriorBoxParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.PriorBoxParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PriorBoxParam::IsInitialized() const {
  return true;
}

void PriorBoxParam::InternalSwap(PriorBoxParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.variances_.InternalSwap(&other->_impl_.variances_);
  _impl_.min_sizes_.InternalSwap(&other->_impl_.min_sizes_);
  _impl_.max_sizes_.InternalSwap(&other->_impl_.max_sizes_);
  _impl_.aspect_ratios_.InternalSwap(&other->_impl_.aspect_ratios_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PriorBoxParam, _impl_.clip_)
      + sizeof(PriorBoxParam::_impl_.clip_)
      - PROTOBUF_FIELD_OFFSET(PriorBoxParam, _impl_.layer_width_)>(
          reinterpret_cast<char*>(&_impl_.layer_width_),
          reinterpret_cast<char*>(&other->_impl_.layer_width_));
}

::PROTOBUF_NAMESPACE_ID::Metadata PriorBoxParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[2]);
}

// ===================================================================

class SSDParam_OutputInfo::_Internal {
 public:
};

SSDParam_OutputInfo::SSDParam_OutputInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.SSDParam.OutputInfo)
}
SSDParam_OutputInfo::SSDParam_OutputInfo(const SSDParam_OutputInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  SSDParam_OutputInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.type_){}
    , decltype(_impl_.order_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.type_, &from._impl_.type_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.order_) -
    reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.order_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.SSDParam.OutputInfo)
}

inline void SSDParam_OutputInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.type_){0}
    , decltype(_impl_.order_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

SSDParam_OutputInfo::~SSDParam_OutputInfo() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.SSDParam.OutputInfo)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void SSDParam_OutputInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.name_.Destroy();
}

void SSDParam_OutputInfo::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void SSDParam_OutputInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.SSDParam.OutputInfo)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.name_.ClearToEmpty();
  ::memset(&_impl_.type_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.order_) -
      reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.order_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SSDParam_OutputInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.SSDParam.OutputType type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_type(static_cast<::vitis::ai::proto::SSDParam_OutputType>(val));
        } else
          goto handle_unusual;
        continue;
      // int32 order = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.order_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string name = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.SSDParam.OutputInfo.name"));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* SSDParam_OutputInfo::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.SSDParam.OutputInfo)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.SSDParam.OutputType type = 1;
  if (this->_internal_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      1, this->_internal_type(), target);
  }

  // int32 order = 2;
  if (this->_internal_order() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_order(), target);
  }

  // string name = 3;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.SSDParam.OutputInfo.name");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_name(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.SSDParam.OutputInfo)
  return target;
}

size_t SSDParam_OutputInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.SSDParam.OutputInfo)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string name = 3;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // .vitis.ai.proto.SSDParam.OutputType type = 1;
  if (this->_internal_type() != 0) {
    total_size += 1 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_type());
  }

  // int32 order = 2;
  if (this->_internal_order() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_order());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData SSDParam_OutputInfo::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    SSDParam_OutputInfo::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SSDParam_OutputInfo::GetClassData() const { return &_class_data_; }


void SSDParam_OutputInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<SSDParam_OutputInfo*>(&to_msg);
  auto& from = static_cast<const SSDParam_OutputInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.SSDParam.OutputInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_name().empty()) {
    _this->_internal_set_name(from._internal_name());
  }
  if (from._internal_type() != 0) {
    _this->_internal_set_type(from._internal_type());
  }
  if (from._internal_order() != 0) {
    _this->_internal_set_order(from._internal_order());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void SSDParam_OutputInfo::CopyFrom(const SSDParam_OutputInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.SSDParam.OutputInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SSDParam_OutputInfo::IsInitialized() const {
  return true;
}

void SSDParam_OutputInfo::InternalSwap(SSDParam_OutputInfo* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(SSDParam_OutputInfo, _impl_.order_)
      + sizeof(SSDParam_OutputInfo::_impl_.order_)
      - PROTOBUF_FIELD_OFFSET(SSDParam_OutputInfo, _impl_.type_)>(
          reinterpret_cast<char*>(&_impl_.type_),
          reinterpret_cast<char*>(&other->_impl_.type_));
}

::PROTOBUF_NAMESPACE_ID::Metadata SSDParam_OutputInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[3]);
}

// ===================================================================

class SSDParam::_Internal {
 public:
};

SSDParam::SSDParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.SSDParam)
}
SSDParam::SSDParam(const SSDParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  SSDParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.prior_box_param_){from._impl_.prior_box_param_}
    , decltype(_impl_.conf_threshold_){from._impl_.conf_threshold_}
    , decltype(_impl_.bbox_layer_index_){from._impl_.bbox_layer_index_}
    , /*decltype(_impl_._bbox_layer_index_cached_byte_size_)*/{0}
    , decltype(_impl_.output_info_){from._impl_.output_info_}
    , decltype(_impl_.num_classes_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.keep_top_k_){}
    , decltype(_impl_.top_k_){}
    , decltype(_impl_.is_mlperf_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.num_classes_, &from._impl_.num_classes_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.is_mlperf_) -
    reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.is_mlperf_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.SSDParam)
}

inline void SSDParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.prior_box_param_){arena}
    , decltype(_impl_.conf_threshold_){arena}
    , decltype(_impl_.bbox_layer_index_){arena}
    , /*decltype(_impl_._bbox_layer_index_cached_byte_size_)*/{0}
    , decltype(_impl_.output_info_){arena}
    , decltype(_impl_.num_classes_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.keep_top_k_){0}
    , decltype(_impl_.top_k_){0}
    , decltype(_impl_.is_mlperf_){false}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

SSDParam::~SSDParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.SSDParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void SSDParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.prior_box_param_.~RepeatedPtrField();
  _impl_.conf_threshold_.~RepeatedField();
  _impl_.bbox_layer_index_.~RepeatedField();
  _impl_.output_info_.~RepeatedPtrField();
}

void SSDParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void SSDParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.SSDParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.prior_box_param_.Clear();
  _impl_.conf_threshold_.Clear();
  _impl_.bbox_layer_index_.Clear();
  _impl_.output_info_.Clear();
  ::memset(&_impl_.num_classes_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.is_mlperf_) -
      reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.is_mlperf_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SSDParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_prior_box_param(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // int32 num_classes = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float conf_threshold = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_conf_threshold(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 37) {
          _internal_add_conf_threshold(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 keep_top_k = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _impl_.keep_top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 top_k = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool is_mlperf = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _impl_.is_mlperf_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 bbox_layer_index = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_bbox_layer_index(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 64) {
          _internal_add_bbox_layer_index(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.SSDParam.OutputInfo output_info = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_output_info(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<74>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* SSDParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.SSDParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_prior_box_param_size()); i < n; i++) {
    const auto& repfield = this->_internal_prior_box_param(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  // int32 num_classes = 2;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_num_classes(), target);
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_nms_threshold(), target);
  }

  // repeated float conf_threshold = 4;
  if (this->_internal_conf_threshold_size() > 0) {
    target = stream->WriteFixedPacked(4, _internal_conf_threshold(), target);
  }

  // int32 keep_top_k = 5;
  if (this->_internal_keep_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(5, this->_internal_keep_top_k(), target);
  }

  // int32 top_k = 6;
  if (this->_internal_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(6, this->_internal_top_k(), target);
  }

  // bool is_mlperf = 7;
  if (this->_internal_is_mlperf() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(7, this->_internal_is_mlperf(), target);
  }

  // repeated int32 bbox_layer_index = 8;
  {
    int byte_size = _impl_._bbox_layer_index_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          8, _internal_bbox_layer_index(), byte_size, target);
    }
  }

  // repeated .vitis.ai.proto.SSDParam.OutputInfo output_info = 9;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_output_info_size()); i < n; i++) {
    const auto& repfield = this->_internal_output_info(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(9, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.SSDParam)
  return target;
}

size_t SSDParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.SSDParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 1;
  total_size += 1UL * this->_internal_prior_box_param_size();
  for (const auto& msg : this->_impl_.prior_box_param_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated float conf_threshold = 4;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_conf_threshold_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated int32 bbox_layer_index = 8;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.bbox_layer_index_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._bbox_layer_index_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // repeated .vitis.ai.proto.SSDParam.OutputInfo output_info = 9;
  total_size += 1UL * this->_internal_output_info_size();
  for (const auto& msg : this->_impl_.output_info_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // int32 num_classes = 2;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // int32 keep_top_k = 5;
  if (this->_internal_keep_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_keep_top_k());
  }

  // int32 top_k = 6;
  if (this->_internal_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_top_k());
  }

  // bool is_mlperf = 7;
  if (this->_internal_is_mlperf() != 0) {
    total_size += 1 + 1;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData SSDParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    SSDParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SSDParam::GetClassData() const { return &_class_data_; }


void SSDParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<SSDParam*>(&to_msg);
  auto& from = static_cast<const SSDParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.SSDParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.prior_box_param_.MergeFrom(from._impl_.prior_box_param_);
  _this->_impl_.conf_threshold_.MergeFrom(from._impl_.conf_threshold_);
  _this->_impl_.bbox_layer_index_.MergeFrom(from._impl_.bbox_layer_index_);
  _this->_impl_.output_info_.MergeFrom(from._impl_.output_info_);
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  if (from._internal_keep_top_k() != 0) {
    _this->_internal_set_keep_top_k(from._internal_keep_top_k());
  }
  if (from._internal_top_k() != 0) {
    _this->_internal_set_top_k(from._internal_top_k());
  }
  if (from._internal_is_mlperf() != 0) {
    _this->_internal_set_is_mlperf(from._internal_is_mlperf());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void SSDParam::CopyFrom(const SSDParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.SSDParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SSDParam::IsInitialized() const {
  return true;
}

void SSDParam::InternalSwap(SSDParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.prior_box_param_.InternalSwap(&other->_impl_.prior_box_param_);
  _impl_.conf_threshold_.InternalSwap(&other->_impl_.conf_threshold_);
  _impl_.bbox_layer_index_.InternalSwap(&other->_impl_.bbox_layer_index_);
  _impl_.output_info_.InternalSwap(&other->_impl_.output_info_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(SSDParam, _impl_.is_mlperf_)
      + sizeof(SSDParam::_impl_.is_mlperf_)
      - PROTOBUF_FIELD_OFFSET(SSDParam, _impl_.num_classes_)>(
          reinterpret_cast<char*>(&_impl_.num_classes_),
          reinterpret_cast<char*>(&other->_impl_.num_classes_));
}

::PROTOBUF_NAMESPACE_ID::Metadata SSDParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[4]);
}

// ===================================================================

class RetinaNetParam::_Internal {
 public:
};

RetinaNetParam::RetinaNetParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.RetinaNetParam)
}
RetinaNetParam::RetinaNetParam(const RetinaNetParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  RetinaNetParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.box_threshold_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.conf_threshold_){}
    , decltype(_impl_.top_k_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.box_threshold_, &from._impl_.box_threshold_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.top_k_) -
    reinterpret_cast<char*>(&_impl_.box_threshold_)) + sizeof(_impl_.top_k_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.RetinaNetParam)
}

inline void RetinaNetParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.box_threshold_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.conf_threshold_){0}
    , decltype(_impl_.top_k_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

RetinaNetParam::~RetinaNetParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.RetinaNetParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void RetinaNetParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void RetinaNetParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void RetinaNetParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.RetinaNetParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.box_threshold_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.top_k_) -
      reinterpret_cast<char*>(&_impl_.box_threshold_)) + sizeof(_impl_.top_k_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* RetinaNetParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float box_threshold = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _impl_.box_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float conf_threshold = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.conf_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 top_k = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _impl_.top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* RetinaNetParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.RetinaNetParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float box_threshold = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_box_threshold = this->_internal_box_threshold();
  uint32_t raw_box_threshold;
  memcpy(&raw_box_threshold, &tmp_box_threshold, sizeof(tmp_box_threshold));
  if (raw_box_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(1, this->_internal_box_threshold(), target);
  }

  // float nms_threshold = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_nms_threshold(), target);
  }

  // float conf_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_conf_threshold(), target);
  }

  // int32 top_k = 4;
  if (this->_internal_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(4, this->_internal_top_k(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.RetinaNetParam)
  return target;
}

size_t RetinaNetParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.RetinaNetParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // float box_threshold = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_box_threshold = this->_internal_box_threshold();
  uint32_t raw_box_threshold;
  memcpy(&raw_box_threshold, &tmp_box_threshold, sizeof(tmp_box_threshold));
  if (raw_box_threshold != 0) {
    total_size += 1 + 4;
  }

  // float nms_threshold = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // float conf_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    total_size += 1 + 4;
  }

  // int32 top_k = 4;
  if (this->_internal_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_top_k());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RetinaNetParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    RetinaNetParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RetinaNetParam::GetClassData() const { return &_class_data_; }


void RetinaNetParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<RetinaNetParam*>(&to_msg);
  auto& from = static_cast<const RetinaNetParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.RetinaNetParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_box_threshold = from._internal_box_threshold();
  uint32_t raw_box_threshold;
  memcpy(&raw_box_threshold, &tmp_box_threshold, sizeof(tmp_box_threshold));
  if (raw_box_threshold != 0) {
    _this->_internal_set_box_threshold(from._internal_box_threshold());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = from._internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    _this->_internal_set_conf_threshold(from._internal_conf_threshold());
  }
  if (from._internal_top_k() != 0) {
    _this->_internal_set_top_k(from._internal_top_k());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void RetinaNetParam::CopyFrom(const RetinaNetParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.RetinaNetParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RetinaNetParam::IsInitialized() const {
  return true;
}

void RetinaNetParam::InternalSwap(RetinaNetParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(RetinaNetParam, _impl_.top_k_)
      + sizeof(RetinaNetParam::_impl_.top_k_)
      - PROTOBUF_FIELD_OFFSET(RetinaNetParam, _impl_.box_threshold_)>(
          reinterpret_cast<char*>(&_impl_.box_threshold_),
          reinterpret_cast<char*>(&other->_impl_.box_threshold_));
}

::PROTOBUF_NAMESPACE_ID::Metadata RetinaNetParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[5]);
}

// ===================================================================

class FairMotParam::_Internal {
 public:
};

FairMotParam::FairMotParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.FairMotParam)
}
FairMotParam::FairMotParam(const FairMotParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  FairMotParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.layer_name_){from._impl_.layer_name_}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.conf_threshold_){}
    , decltype(_impl_.keep_top_k_){}
    , decltype(_impl_.top_k_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.nms_threshold_, &from._impl_.nms_threshold_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.top_k_) -
    reinterpret_cast<char*>(&_impl_.nms_threshold_)) + sizeof(_impl_.top_k_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.FairMotParam)
}

inline void FairMotParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.layer_name_){arena}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.conf_threshold_){0}
    , decltype(_impl_.keep_top_k_){0}
    , decltype(_impl_.top_k_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

FairMotParam::~FairMotParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.FairMotParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void FairMotParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.layer_name_.~RepeatedPtrField();
}

void FairMotParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void FairMotParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.FairMotParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.layer_name_.Clear();
  ::memset(&_impl_.nms_threshold_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.top_k_) -
      reinterpret_cast<char*>(&_impl_.nms_threshold_)) + sizeof(_impl_.top_k_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* FairMotParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float nms_threshold = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float conf_threshold = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.conf_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 keep_top_k = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.keep_top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 top_k = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _impl_.top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string layer_name = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.FairMotParam.layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* FairMotParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.FairMotParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float nms_threshold = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(1, this->_internal_nms_threshold(), target);
  }

  // float conf_threshold = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_conf_threshold(), target);
  }

  // int32 keep_top_k = 3;
  if (this->_internal_keep_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_keep_top_k(), target);
  }

  // int32 top_k = 4;
  if (this->_internal_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(4, this->_internal_top_k(), target);
  }

  // repeated string layer_name = 5;
  for (int i = 0, n = this->_internal_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.FairMotParam.layer_name");
    target = stream->WriteString(5, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.FairMotParam)
  return target;
}

size_t FairMotParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.FairMotParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string layer_name = 5;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.layer_name_.size());
  for (int i = 0, n = _impl_.layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.layer_name_.Get(i));
  }

  // float nms_threshold = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // float conf_threshold = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    total_size += 1 + 4;
  }

  // int32 keep_top_k = 3;
  if (this->_internal_keep_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_keep_top_k());
  }

  // int32 top_k = 4;
  if (this->_internal_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_top_k());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData FairMotParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    FairMotParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*FairMotParam::GetClassData() const { return &_class_data_; }


void FairMotParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<FairMotParam*>(&to_msg);
  auto& from = static_cast<const FairMotParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.FairMotParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.layer_name_.MergeFrom(from._impl_.layer_name_);
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = from._internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    _this->_internal_set_conf_threshold(from._internal_conf_threshold());
  }
  if (from._internal_keep_top_k() != 0) {
    _this->_internal_set_keep_top_k(from._internal_keep_top_k());
  }
  if (from._internal_top_k() != 0) {
    _this->_internal_set_top_k(from._internal_top_k());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void FairMotParam::CopyFrom(const FairMotParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.FairMotParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool FairMotParam::IsInitialized() const {
  return true;
}

void FairMotParam::InternalSwap(FairMotParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.layer_name_.InternalSwap(&other->_impl_.layer_name_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(FairMotParam, _impl_.top_k_)
      + sizeof(FairMotParam::_impl_.top_k_)
      - PROTOBUF_FIELD_OFFSET(FairMotParam, _impl_.nms_threshold_)>(
          reinterpret_cast<char*>(&_impl_.nms_threshold_),
          reinterpret_cast<char*>(&other->_impl_.nms_threshold_));
}

::PROTOBUF_NAMESPACE_ID::Metadata FairMotParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[6]);
}

// ===================================================================

class MovenetParam::_Internal {
 public:
};

MovenetParam::MovenetParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.MovenetParam)
}
MovenetParam::MovenetParam(const MovenetParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  MovenetParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.layer_name_){from._impl_.layer_name_}
    , decltype(_impl_.center_weight_){from._impl_.center_weight_}
    , decltype(_impl_.conf_threshold_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _this->_impl_.conf_threshold_ = from._impl_.conf_threshold_;
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.MovenetParam)
}

inline void MovenetParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.layer_name_){arena}
    , decltype(_impl_.center_weight_){arena}
    , decltype(_impl_.conf_threshold_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

MovenetParam::~MovenetParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.MovenetParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MovenetParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.layer_name_.~RepeatedPtrField();
  _impl_.center_weight_.~RepeatedField();
}

void MovenetParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MovenetParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.MovenetParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.layer_name_.Clear();
  _impl_.center_weight_.Clear();
  _impl_.conf_threshold_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* MovenetParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float conf_threshold = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _impl_.conf_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated string layer_name = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.MovenetParam.layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated float center_weight = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_center_weight(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 29) {
          _internal_add_center_weight(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* MovenetParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.MovenetParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float conf_threshold = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(1, this->_internal_conf_threshold(), target);
  }

  // repeated string layer_name = 2;
  for (int i = 0, n = this->_internal_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.MovenetParam.layer_name");
    target = stream->WriteString(2, s, target);
  }

  // repeated float center_weight = 3;
  if (this->_internal_center_weight_size() > 0) {
    target = stream->WriteFixedPacked(3, _internal_center_weight(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.MovenetParam)
  return target;
}

size_t MovenetParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.MovenetParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string layer_name = 2;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.layer_name_.size());
  for (int i = 0, n = _impl_.layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.layer_name_.Get(i));
  }

  // repeated float center_weight = 3;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_center_weight_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // float conf_threshold = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MovenetParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    MovenetParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MovenetParam::GetClassData() const { return &_class_data_; }


void MovenetParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<MovenetParam*>(&to_msg);
  auto& from = static_cast<const MovenetParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.MovenetParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.layer_name_.MergeFrom(from._impl_.layer_name_);
  _this->_impl_.center_weight_.MergeFrom(from._impl_.center_weight_);
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = from._internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    _this->_internal_set_conf_threshold(from._internal_conf_threshold());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void MovenetParam::CopyFrom(const MovenetParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.MovenetParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MovenetParam::IsInitialized() const {
  return true;
}

void MovenetParam::InternalSwap(MovenetParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.layer_name_.InternalSwap(&other->_impl_.layer_name_);
  _impl_.center_weight_.InternalSwap(&other->_impl_.center_weight_);
  swap(_impl_.conf_threshold_, other->_impl_.conf_threshold_);
}

::PROTOBUF_NAMESPACE_ID::Metadata MovenetParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[7]);
}

// ===================================================================

class RefineDetParam::_Internal {
 public:
};

RefineDetParam::RefineDetParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.RefineDetParam)
}
RefineDetParam::RefineDetParam(const RefineDetParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  RefineDetParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.prior_box_param_){from._impl_.prior_box_param_}
    , decltype(_impl_.conf_threshold_){from._impl_.conf_threshold_}
    , decltype(_impl_.layer_name_){from._impl_.layer_name_}
    , decltype(_impl_.num_classes_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.keep_top_k_){}
    , decltype(_impl_.top_k_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.num_classes_, &from._impl_.num_classes_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.top_k_) -
    reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.top_k_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.RefineDetParam)
}

inline void RefineDetParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.prior_box_param_){arena}
    , decltype(_impl_.conf_threshold_){arena}
    , decltype(_impl_.layer_name_){arena}
    , decltype(_impl_.num_classes_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.keep_top_k_){0}
    , decltype(_impl_.top_k_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

RefineDetParam::~RefineDetParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.RefineDetParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void RefineDetParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.prior_box_param_.~RepeatedPtrField();
  _impl_.conf_threshold_.~RepeatedField();
  _impl_.layer_name_.~RepeatedPtrField();
}

void RefineDetParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void RefineDetParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.RefineDetParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.prior_box_param_.Clear();
  _impl_.conf_threshold_.Clear();
  _impl_.layer_name_.Clear();
  ::memset(&_impl_.num_classes_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.top_k_) -
      reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.top_k_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* RefineDetParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_prior_box_param(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // int32 num_classes = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float conf_threshold = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_conf_threshold(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 37) {
          _internal_add_conf_threshold(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 keep_top_k = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _impl_.keep_top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 top_k = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string layer_name = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.RefineDetParam.layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* RefineDetParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.RefineDetParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_prior_box_param_size()); i < n; i++) {
    const auto& repfield = this->_internal_prior_box_param(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  // int32 num_classes = 2;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_num_classes(), target);
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_nms_threshold(), target);
  }

  // repeated float conf_threshold = 4;
  if (this->_internal_conf_threshold_size() > 0) {
    target = stream->WriteFixedPacked(4, _internal_conf_threshold(), target);
  }

  // int32 keep_top_k = 5;
  if (this->_internal_keep_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(5, this->_internal_keep_top_k(), target);
  }

  // int32 top_k = 6;
  if (this->_internal_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(6, this->_internal_top_k(), target);
  }

  // repeated string layer_name = 7;
  for (int i = 0, n = this->_internal_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.RefineDetParam.layer_name");
    target = stream->WriteString(7, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.RefineDetParam)
  return target;
}

size_t RefineDetParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.RefineDetParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 1;
  total_size += 1UL * this->_internal_prior_box_param_size();
  for (const auto& msg : this->_impl_.prior_box_param_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated float conf_threshold = 4;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_conf_threshold_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated string layer_name = 7;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.layer_name_.size());
  for (int i = 0, n = _impl_.layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.layer_name_.Get(i));
  }

  // int32 num_classes = 2;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // int32 keep_top_k = 5;
  if (this->_internal_keep_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_keep_top_k());
  }

  // int32 top_k = 6;
  if (this->_internal_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_top_k());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RefineDetParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    RefineDetParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RefineDetParam::GetClassData() const { return &_class_data_; }


void RefineDetParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<RefineDetParam*>(&to_msg);
  auto& from = static_cast<const RefineDetParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.RefineDetParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.prior_box_param_.MergeFrom(from._impl_.prior_box_param_);
  _this->_impl_.conf_threshold_.MergeFrom(from._impl_.conf_threshold_);
  _this->_impl_.layer_name_.MergeFrom(from._impl_.layer_name_);
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  if (from._internal_keep_top_k() != 0) {
    _this->_internal_set_keep_top_k(from._internal_keep_top_k());
  }
  if (from._internal_top_k() != 0) {
    _this->_internal_set_top_k(from._internal_top_k());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void RefineDetParam::CopyFrom(const RefineDetParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.RefineDetParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RefineDetParam::IsInitialized() const {
  return true;
}

void RefineDetParam::InternalSwap(RefineDetParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.prior_box_param_.InternalSwap(&other->_impl_.prior_box_param_);
  _impl_.conf_threshold_.InternalSwap(&other->_impl_.conf_threshold_);
  _impl_.layer_name_.InternalSwap(&other->_impl_.layer_name_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(RefineDetParam, _impl_.top_k_)
      + sizeof(RefineDetParam::_impl_.top_k_)
      - PROTOBUF_FIELD_OFFSET(RefineDetParam, _impl_.num_classes_)>(
          reinterpret_cast<char*>(&_impl_.num_classes_),
          reinterpret_cast<char*>(&other->_impl_.num_classes_));
}

::PROTOBUF_NAMESPACE_ID::Metadata RefineDetParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[8]);
}

// ===================================================================

class TFRefineDetParam::_Internal {
 public:
  static const ::vitis::ai::proto::MedicalPriorBoxParam& prior_box_param(const TFRefineDetParam* msg);
};

const ::vitis::ai::proto::MedicalPriorBoxParam&
TFRefineDetParam::_Internal::prior_box_param(const TFRefineDetParam* msg) {
  return *msg->_impl_.prior_box_param_;
}
TFRefineDetParam::TFRefineDetParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.TFRefineDetParam)
}
TFRefineDetParam::TFRefineDetParam(const TFRefineDetParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  TFRefineDetParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.layer_name_){from._impl_.layer_name_}
    , decltype(_impl_.prior_box_param_){nullptr}
    , decltype(_impl_.num_classes_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.conf_threshold_){}
    , decltype(_impl_.keep_top_k_){}
    , decltype(_impl_.top_k_){}
    , decltype(_impl_.scale_xy_){}
    , decltype(_impl_.scale_wh_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_prior_box_param()) {
    _this->_impl_.prior_box_param_ = new ::vitis::ai::proto::MedicalPriorBoxParam(*from._impl_.prior_box_param_);
  }
  ::memcpy(&_impl_.num_classes_, &from._impl_.num_classes_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.scale_wh_) -
    reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.scale_wh_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.TFRefineDetParam)
}

inline void TFRefineDetParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.layer_name_){arena}
    , decltype(_impl_.prior_box_param_){nullptr}
    , decltype(_impl_.num_classes_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.conf_threshold_){0}
    , decltype(_impl_.keep_top_k_){0}
    , decltype(_impl_.top_k_){0}
    , decltype(_impl_.scale_xy_){0}
    , decltype(_impl_.scale_wh_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

TFRefineDetParam::~TFRefineDetParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.TFRefineDetParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void TFRefineDetParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.layer_name_.~RepeatedPtrField();
  if (this != internal_default_instance()) delete _impl_.prior_box_param_;
}

void TFRefineDetParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void TFRefineDetParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.TFRefineDetParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.layer_name_.Clear();
  if (GetArenaForAllocation() == nullptr && _impl_.prior_box_param_ != nullptr) {
    delete _impl_.prior_box_param_;
  }
  _impl_.prior_box_param_ = nullptr;
  ::memset(&_impl_.num_classes_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.scale_wh_) -
      reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.scale_wh_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* TFRefineDetParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.MedicalPriorBoxParam prior_box_param = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_prior_box_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 num_classes = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float conf_threshold = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          _impl_.conf_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 keep_top_k = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _impl_.keep_top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 top_k = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string layer_name = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.TFRefineDetParam.layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
        } else
          goto handle_unusual;
        continue;
      // float scale_xy = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 69)) {
          _impl_.scale_xy_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float scale_wh = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 77)) {
          _impl_.scale_wh_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* TFRefineDetParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.TFRefineDetParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.MedicalPriorBoxParam prior_box_param = 1;
  if (this->_internal_has_prior_box_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::prior_box_param(this),
        _Internal::prior_box_param(this).GetCachedSize(), target, stream);
  }

  // int32 num_classes = 2;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_num_classes(), target);
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_nms_threshold(), target);
  }

  // float conf_threshold = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(4, this->_internal_conf_threshold(), target);
  }

  // int32 keep_top_k = 5;
  if (this->_internal_keep_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(5, this->_internal_keep_top_k(), target);
  }

  // int32 top_k = 6;
  if (this->_internal_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(6, this->_internal_top_k(), target);
  }

  // repeated string layer_name = 7;
  for (int i = 0, n = this->_internal_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.TFRefineDetParam.layer_name");
    target = stream->WriteString(7, s, target);
  }

  // float scale_xy = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale_xy = this->_internal_scale_xy();
  uint32_t raw_scale_xy;
  memcpy(&raw_scale_xy, &tmp_scale_xy, sizeof(tmp_scale_xy));
  if (raw_scale_xy != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(8, this->_internal_scale_xy(), target);
  }

  // float scale_wh = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale_wh = this->_internal_scale_wh();
  uint32_t raw_scale_wh;
  memcpy(&raw_scale_wh, &tmp_scale_wh, sizeof(tmp_scale_wh));
  if (raw_scale_wh != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(9, this->_internal_scale_wh(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.TFRefineDetParam)
  return target;
}

size_t TFRefineDetParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.TFRefineDetParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string layer_name = 7;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.layer_name_.size());
  for (int i = 0, n = _impl_.layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.layer_name_.Get(i));
  }

  // .vitis.ai.proto.MedicalPriorBoxParam prior_box_param = 1;
  if (this->_internal_has_prior_box_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.prior_box_param_);
  }

  // int32 num_classes = 2;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // float conf_threshold = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    total_size += 1 + 4;
  }

  // int32 keep_top_k = 5;
  if (this->_internal_keep_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_keep_top_k());
  }

  // int32 top_k = 6;
  if (this->_internal_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_top_k());
  }

  // float scale_xy = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale_xy = this->_internal_scale_xy();
  uint32_t raw_scale_xy;
  memcpy(&raw_scale_xy, &tmp_scale_xy, sizeof(tmp_scale_xy));
  if (raw_scale_xy != 0) {
    total_size += 1 + 4;
  }

  // float scale_wh = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale_wh = this->_internal_scale_wh();
  uint32_t raw_scale_wh;
  memcpy(&raw_scale_wh, &tmp_scale_wh, sizeof(tmp_scale_wh));
  if (raw_scale_wh != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData TFRefineDetParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    TFRefineDetParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*TFRefineDetParam::GetClassData() const { return &_class_data_; }


void TFRefineDetParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<TFRefineDetParam*>(&to_msg);
  auto& from = static_cast<const TFRefineDetParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.TFRefineDetParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.layer_name_.MergeFrom(from._impl_.layer_name_);
  if (from._internal_has_prior_box_param()) {
    _this->_internal_mutable_prior_box_param()->::vitis::ai::proto::MedicalPriorBoxParam::MergeFrom(
        from._internal_prior_box_param());
  }
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = from._internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    _this->_internal_set_conf_threshold(from._internal_conf_threshold());
  }
  if (from._internal_keep_top_k() != 0) {
    _this->_internal_set_keep_top_k(from._internal_keep_top_k());
  }
  if (from._internal_top_k() != 0) {
    _this->_internal_set_top_k(from._internal_top_k());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale_xy = from._internal_scale_xy();
  uint32_t raw_scale_xy;
  memcpy(&raw_scale_xy, &tmp_scale_xy, sizeof(tmp_scale_xy));
  if (raw_scale_xy != 0) {
    _this->_internal_set_scale_xy(from._internal_scale_xy());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale_wh = from._internal_scale_wh();
  uint32_t raw_scale_wh;
  memcpy(&raw_scale_wh, &tmp_scale_wh, sizeof(tmp_scale_wh));
  if (raw_scale_wh != 0) {
    _this->_internal_set_scale_wh(from._internal_scale_wh());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void TFRefineDetParam::CopyFrom(const TFRefineDetParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.TFRefineDetParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TFRefineDetParam::IsInitialized() const {
  return true;
}

void TFRefineDetParam::InternalSwap(TFRefineDetParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.layer_name_.InternalSwap(&other->_impl_.layer_name_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(TFRefineDetParam, _impl_.scale_wh_)
      + sizeof(TFRefineDetParam::_impl_.scale_wh_)
      - PROTOBUF_FIELD_OFFSET(TFRefineDetParam, _impl_.prior_box_param_)>(
          reinterpret_cast<char*>(&_impl_.prior_box_param_),
          reinterpret_cast<char*>(&other->_impl_.prior_box_param_));
}

::PROTOBUF_NAMESPACE_ID::Metadata TFRefineDetParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[9]);
}

// ===================================================================

class MedicalRefineDetParam_OutputInfo::_Internal {
 public:
};

MedicalRefineDetParam_OutputInfo::MedicalRefineDetParam_OutputInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.MedicalRefineDetParam.OutputInfo)
}
MedicalRefineDetParam_OutputInfo::MedicalRefineDetParam_OutputInfo(const MedicalRefineDetParam_OutputInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  MedicalRefineDetParam_OutputInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.type_){}
    , decltype(_impl_.order_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.type_, &from._impl_.type_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.order_) -
    reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.order_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.MedicalRefineDetParam.OutputInfo)
}

inline void MedicalRefineDetParam_OutputInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.type_){0}
    , decltype(_impl_.order_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

MedicalRefineDetParam_OutputInfo::~MedicalRefineDetParam_OutputInfo() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.MedicalRefineDetParam.OutputInfo)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MedicalRefineDetParam_OutputInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.name_.Destroy();
}

void MedicalRefineDetParam_OutputInfo::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MedicalRefineDetParam_OutputInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.MedicalRefineDetParam.OutputInfo)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.name_.ClearToEmpty();
  ::memset(&_impl_.type_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.order_) -
      reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.order_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* MedicalRefineDetParam_OutputInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.MedicalRefineDetParam.OutputType type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_type(static_cast<::vitis::ai::proto::MedicalRefineDetParam_OutputType>(val));
        } else
          goto handle_unusual;
        continue;
      // int32 order = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.order_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string name = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.MedicalRefineDetParam.OutputInfo.name"));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* MedicalRefineDetParam_OutputInfo::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.MedicalRefineDetParam.OutputInfo)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.MedicalRefineDetParam.OutputType type = 1;
  if (this->_internal_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      1, this->_internal_type(), target);
  }

  // int32 order = 2;
  if (this->_internal_order() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_order(), target);
  }

  // string name = 3;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.MedicalRefineDetParam.OutputInfo.name");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_name(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.MedicalRefineDetParam.OutputInfo)
  return target;
}

size_t MedicalRefineDetParam_OutputInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.MedicalRefineDetParam.OutputInfo)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string name = 3;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // .vitis.ai.proto.MedicalRefineDetParam.OutputType type = 1;
  if (this->_internal_type() != 0) {
    total_size += 1 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_type());
  }

  // int32 order = 2;
  if (this->_internal_order() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_order());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MedicalRefineDetParam_OutputInfo::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    MedicalRefineDetParam_OutputInfo::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MedicalRefineDetParam_OutputInfo::GetClassData() const { return &_class_data_; }


void MedicalRefineDetParam_OutputInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<MedicalRefineDetParam_OutputInfo*>(&to_msg);
  auto& from = static_cast<const MedicalRefineDetParam_OutputInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.MedicalRefineDetParam.OutputInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_name().empty()) {
    _this->_internal_set_name(from._internal_name());
  }
  if (from._internal_type() != 0) {
    _this->_internal_set_type(from._internal_type());
  }
  if (from._internal_order() != 0) {
    _this->_internal_set_order(from._internal_order());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void MedicalRefineDetParam_OutputInfo::CopyFrom(const MedicalRefineDetParam_OutputInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.MedicalRefineDetParam.OutputInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MedicalRefineDetParam_OutputInfo::IsInitialized() const {
  return true;
}

void MedicalRefineDetParam_OutputInfo::InternalSwap(MedicalRefineDetParam_OutputInfo* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MedicalRefineDetParam_OutputInfo, _impl_.order_)
      + sizeof(MedicalRefineDetParam_OutputInfo::_impl_.order_)
      - PROTOBUF_FIELD_OFFSET(MedicalRefineDetParam_OutputInfo, _impl_.type_)>(
          reinterpret_cast<char*>(&_impl_.type_),
          reinterpret_cast<char*>(&other->_impl_.type_));
}

::PROTOBUF_NAMESPACE_ID::Metadata MedicalRefineDetParam_OutputInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[10]);
}

// ===================================================================

class MedicalRefineDetParam::_Internal {
 public:
  static const ::vitis::ai::proto::MedicalPriorBoxParam& medical_prior_box_param(const MedicalRefineDetParam* msg);
};

const ::vitis::ai::proto::MedicalPriorBoxParam&
MedicalRefineDetParam::_Internal::medical_prior_box_param(const MedicalRefineDetParam* msg) {
  return *msg->_impl_.medical_prior_box_param_;
}
MedicalRefineDetParam::MedicalRefineDetParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.MedicalRefineDetParam)
}
MedicalRefineDetParam::MedicalRefineDetParam(const MedicalRefineDetParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  MedicalRefineDetParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.output_info_){from._impl_.output_info_}
    , decltype(_impl_.medical_prior_box_param_){nullptr}
    , decltype(_impl_.num_classes_){}
    , decltype(_impl_.scale_xy_){}
    , decltype(_impl_.scale_wh_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.conf_threshold_){}
    , decltype(_impl_.keep_top_k_){}
    , decltype(_impl_.top_k_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_medical_prior_box_param()) {
    _this->_impl_.medical_prior_box_param_ = new ::vitis::ai::proto::MedicalPriorBoxParam(*from._impl_.medical_prior_box_param_);
  }
  ::memcpy(&_impl_.num_classes_, &from._impl_.num_classes_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.top_k_) -
    reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.top_k_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.MedicalRefineDetParam)
}

inline void MedicalRefineDetParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.output_info_){arena}
    , decltype(_impl_.medical_prior_box_param_){nullptr}
    , decltype(_impl_.num_classes_){0}
    , decltype(_impl_.scale_xy_){0}
    , decltype(_impl_.scale_wh_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.conf_threshold_){0}
    , decltype(_impl_.keep_top_k_){0}
    , decltype(_impl_.top_k_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

MedicalRefineDetParam::~MedicalRefineDetParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.MedicalRefineDetParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MedicalRefineDetParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.output_info_.~RepeatedPtrField();
  if (this != internal_default_instance()) delete _impl_.medical_prior_box_param_;
}

void MedicalRefineDetParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MedicalRefineDetParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.MedicalRefineDetParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.output_info_.Clear();
  if (GetArenaForAllocation() == nullptr && _impl_.medical_prior_box_param_ != nullptr) {
    delete _impl_.medical_prior_box_param_;
  }
  _impl_.medical_prior_box_param_ = nullptr;
  ::memset(&_impl_.num_classes_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.top_k_) -
      reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.top_k_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* MedicalRefineDetParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 num_classes = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float scale_xy = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.scale_xy_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float scale_wh = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.scale_wh_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float conf_threshold = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 45)) {
          _impl_.conf_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 keep_top_k = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.keep_top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 top_k = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _impl_.top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.MedicalPriorBoxParam medical_prior_box_param = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_medical_prior_box_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.MedicalRefineDetParam.OutputInfo output_info = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_output_info(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<74>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* MedicalRefineDetParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.MedicalRefineDetParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 num_classes = 1;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_num_classes(), target);
  }

  // float scale_xy = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale_xy = this->_internal_scale_xy();
  uint32_t raw_scale_xy;
  memcpy(&raw_scale_xy, &tmp_scale_xy, sizeof(tmp_scale_xy));
  if (raw_scale_xy != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_scale_xy(), target);
  }

  // float scale_wh = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale_wh = this->_internal_scale_wh();
  uint32_t raw_scale_wh;
  memcpy(&raw_scale_wh, &tmp_scale_wh, sizeof(tmp_scale_wh));
  if (raw_scale_wh != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_scale_wh(), target);
  }

  // float nms_threshold = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(4, this->_internal_nms_threshold(), target);
  }

  // float conf_threshold = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(5, this->_internal_conf_threshold(), target);
  }

  // int32 keep_top_k = 6;
  if (this->_internal_keep_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(6, this->_internal_keep_top_k(), target);
  }

  // int32 top_k = 7;
  if (this->_internal_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(7, this->_internal_top_k(), target);
  }

  // .vitis.ai.proto.MedicalPriorBoxParam medical_prior_box_param = 8;
  if (this->_internal_has_medical_prior_box_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(8, _Internal::medical_prior_box_param(this),
        _Internal::medical_prior_box_param(this).GetCachedSize(), target, stream);
  }

  // repeated .vitis.ai.proto.MedicalRefineDetParam.OutputInfo output_info = 9;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_output_info_size()); i < n; i++) {
    const auto& repfield = this->_internal_output_info(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(9, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.MedicalRefineDetParam)
  return target;
}

size_t MedicalRefineDetParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.MedicalRefineDetParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.MedicalRefineDetParam.OutputInfo output_info = 9;
  total_size += 1UL * this->_internal_output_info_size();
  for (const auto& msg : this->_impl_.output_info_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // .vitis.ai.proto.MedicalPriorBoxParam medical_prior_box_param = 8;
  if (this->_internal_has_medical_prior_box_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.medical_prior_box_param_);
  }

  // int32 num_classes = 1;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  // float scale_xy = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale_xy = this->_internal_scale_xy();
  uint32_t raw_scale_xy;
  memcpy(&raw_scale_xy, &tmp_scale_xy, sizeof(tmp_scale_xy));
  if (raw_scale_xy != 0) {
    total_size += 1 + 4;
  }

  // float scale_wh = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale_wh = this->_internal_scale_wh();
  uint32_t raw_scale_wh;
  memcpy(&raw_scale_wh, &tmp_scale_wh, sizeof(tmp_scale_wh));
  if (raw_scale_wh != 0) {
    total_size += 1 + 4;
  }

  // float nms_threshold = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // float conf_threshold = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    total_size += 1 + 4;
  }

  // int32 keep_top_k = 6;
  if (this->_internal_keep_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_keep_top_k());
  }

  // int32 top_k = 7;
  if (this->_internal_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_top_k());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MedicalRefineDetParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    MedicalRefineDetParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MedicalRefineDetParam::GetClassData() const { return &_class_data_; }


void MedicalRefineDetParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<MedicalRefineDetParam*>(&to_msg);
  auto& from = static_cast<const MedicalRefineDetParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.MedicalRefineDetParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.output_info_.MergeFrom(from._impl_.output_info_);
  if (from._internal_has_medical_prior_box_param()) {
    _this->_internal_mutable_medical_prior_box_param()->::vitis::ai::proto::MedicalPriorBoxParam::MergeFrom(
        from._internal_medical_prior_box_param());
  }
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale_xy = from._internal_scale_xy();
  uint32_t raw_scale_xy;
  memcpy(&raw_scale_xy, &tmp_scale_xy, sizeof(tmp_scale_xy));
  if (raw_scale_xy != 0) {
    _this->_internal_set_scale_xy(from._internal_scale_xy());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale_wh = from._internal_scale_wh();
  uint32_t raw_scale_wh;
  memcpy(&raw_scale_wh, &tmp_scale_wh, sizeof(tmp_scale_wh));
  if (raw_scale_wh != 0) {
    _this->_internal_set_scale_wh(from._internal_scale_wh());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = from._internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    _this->_internal_set_conf_threshold(from._internal_conf_threshold());
  }
  if (from._internal_keep_top_k() != 0) {
    _this->_internal_set_keep_top_k(from._internal_keep_top_k());
  }
  if (from._internal_top_k() != 0) {
    _this->_internal_set_top_k(from._internal_top_k());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void MedicalRefineDetParam::CopyFrom(const MedicalRefineDetParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.MedicalRefineDetParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MedicalRefineDetParam::IsInitialized() const {
  return true;
}

void MedicalRefineDetParam::InternalSwap(MedicalRefineDetParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.output_info_.InternalSwap(&other->_impl_.output_info_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MedicalRefineDetParam, _impl_.top_k_)
      + sizeof(MedicalRefineDetParam::_impl_.top_k_)
      - PROTOBUF_FIELD_OFFSET(MedicalRefineDetParam, _impl_.medical_prior_box_param_)>(
          reinterpret_cast<char*>(&_impl_.medical_prior_box_param_),
          reinterpret_cast<char*>(&other->_impl_.medical_prior_box_param_));
}

::PROTOBUF_NAMESPACE_ID::Metadata MedicalRefineDetParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[11]);
}

// ===================================================================

class ReidParam::_Internal {
 public:
};

ReidParam::ReidParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.ReidParam)
}
ReidParam::ReidParam(const ReidParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  ReidParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.bn_means_){from._impl_.bn_means_}
    , decltype(_impl_.bn_weights_){from._impl_.bn_weights_}
    , decltype(_impl_.bn_vars_){from._impl_.bn_vars_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.ReidParam)
}

inline void ReidParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.bn_means_){arena}
    , decltype(_impl_.bn_weights_){arena}
    , decltype(_impl_.bn_vars_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

ReidParam::~ReidParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.ReidParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void ReidParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.bn_means_.~RepeatedField();
  _impl_.bn_weights_.~RepeatedField();
  _impl_.bn_vars_.~RepeatedField();
}

void ReidParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void ReidParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.ReidParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.bn_means_.Clear();
  _impl_.bn_weights_.Clear();
  _impl_.bn_vars_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ReidParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated float bn_means = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_bn_means(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 13) {
          _internal_add_bn_means(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float bn_weights = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_bn_weights(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 21) {
          _internal_add_bn_weights(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float bn_vars = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_bn_vars(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 29) {
          _internal_add_bn_vars(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ReidParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.ReidParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated float bn_means = 1;
  if (this->_internal_bn_means_size() > 0) {
    target = stream->WriteFixedPacked(1, _internal_bn_means(), target);
  }

  // repeated float bn_weights = 2;
  if (this->_internal_bn_weights_size() > 0) {
    target = stream->WriteFixedPacked(2, _internal_bn_weights(), target);
  }

  // repeated float bn_vars = 3;
  if (this->_internal_bn_vars_size() > 0) {
    target = stream->WriteFixedPacked(3, _internal_bn_vars(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.ReidParam)
  return target;
}

size_t ReidParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.ReidParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float bn_means = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_bn_means_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float bn_weights = 2;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_bn_weights_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float bn_vars = 3;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_bn_vars_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ReidParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    ReidParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ReidParam::GetClassData() const { return &_class_data_; }


void ReidParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<ReidParam*>(&to_msg);
  auto& from = static_cast<const ReidParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.ReidParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.bn_means_.MergeFrom(from._impl_.bn_means_);
  _this->_impl_.bn_weights_.MergeFrom(from._impl_.bn_weights_);
  _this->_impl_.bn_vars_.MergeFrom(from._impl_.bn_vars_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void ReidParam::CopyFrom(const ReidParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.ReidParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ReidParam::IsInitialized() const {
  return true;
}

void ReidParam::InternalSwap(ReidParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.bn_means_.InternalSwap(&other->_impl_.bn_means_);
  _impl_.bn_weights_.InternalSwap(&other->_impl_.bn_weights_);
  _impl_.bn_vars_.InternalSwap(&other->_impl_.bn_vars_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ReidParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[12]);
}

// ===================================================================

class OpenPoseParam::_Internal {
 public:
};

OpenPoseParam::OpenPoseParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.OpenPoseParam)
}
OpenPoseParam::OpenPoseParam(const OpenPoseParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  OpenPoseParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.layer_name_){from._impl_.layer_name_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.OpenPoseParam)
}

inline void OpenPoseParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.layer_name_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

OpenPoseParam::~OpenPoseParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.OpenPoseParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void OpenPoseParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.layer_name_.~RepeatedPtrField();
}

void OpenPoseParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void OpenPoseParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.OpenPoseParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.layer_name_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* OpenPoseParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated string layer_name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.OpenPoseParam.layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* OpenPoseParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.OpenPoseParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated string layer_name = 1;
  for (int i = 0, n = this->_internal_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.OpenPoseParam.layer_name");
    target = stream->WriteString(1, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.OpenPoseParam)
  return target;
}

size_t OpenPoseParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.OpenPoseParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string layer_name = 1;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.layer_name_.size());
  for (int i = 0, n = _impl_.layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.layer_name_.Get(i));
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData OpenPoseParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    OpenPoseParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*OpenPoseParam::GetClassData() const { return &_class_data_; }


void OpenPoseParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<OpenPoseParam*>(&to_msg);
  auto& from = static_cast<const OpenPoseParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.OpenPoseParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.layer_name_.MergeFrom(from._impl_.layer_name_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void OpenPoseParam::CopyFrom(const OpenPoseParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.OpenPoseParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool OpenPoseParam::IsInitialized() const {
  return true;
}

void OpenPoseParam::InternalSwap(OpenPoseParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.layer_name_.InternalSwap(&other->_impl_.layer_name_);
}

::PROTOBUF_NAMESPACE_ID::Metadata OpenPoseParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[13]);
}

// ===================================================================

class ClassificationParam_AvgPoolParam::_Internal {
 public:
};

ClassificationParam_AvgPoolParam::ClassificationParam_AvgPoolParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.ClassificationParam.AvgPoolParam)
}
ClassificationParam_AvgPoolParam::ClassificationParam_AvgPoolParam(const ClassificationParam_AvgPoolParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  ClassificationParam_AvgPoolParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.scale_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _this->_impl_.scale_ = from._impl_.scale_;
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.ClassificationParam.AvgPoolParam)
}

inline void ClassificationParam_AvgPoolParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.scale_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

ClassificationParam_AvgPoolParam::~ClassificationParam_AvgPoolParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.ClassificationParam.AvgPoolParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void ClassificationParam_AvgPoolParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void ClassificationParam_AvgPoolParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void ClassificationParam_AvgPoolParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.ClassificationParam.AvgPoolParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.scale_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ClassificationParam_AvgPoolParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 scale = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.scale_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ClassificationParam_AvgPoolParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.ClassificationParam.AvgPoolParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 scale = 1;
  if (this->_internal_scale() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_scale(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.ClassificationParam.AvgPoolParam)
  return target;
}

size_t ClassificationParam_AvgPoolParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.ClassificationParam.AvgPoolParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 scale = 1;
  if (this->_internal_scale() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_scale());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ClassificationParam_AvgPoolParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    ClassificationParam_AvgPoolParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ClassificationParam_AvgPoolParam::GetClassData() const { return &_class_data_; }


void ClassificationParam_AvgPoolParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<ClassificationParam_AvgPoolParam*>(&to_msg);
  auto& from = static_cast<const ClassificationParam_AvgPoolParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.ClassificationParam.AvgPoolParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_scale() != 0) {
    _this->_internal_set_scale(from._internal_scale());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void ClassificationParam_AvgPoolParam::CopyFrom(const ClassificationParam_AvgPoolParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.ClassificationParam.AvgPoolParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClassificationParam_AvgPoolParam::IsInitialized() const {
  return true;
}

void ClassificationParam_AvgPoolParam::InternalSwap(ClassificationParam_AvgPoolParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.scale_, other->_impl_.scale_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ClassificationParam_AvgPoolParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[14]);
}

// ===================================================================

class ClassificationParam::_Internal {
 public:
  static const ::vitis::ai::proto::ClassificationParam_AvgPoolParam& avg_pool_param(const ClassificationParam* msg);
};

const ::vitis::ai::proto::ClassificationParam_AvgPoolParam&
ClassificationParam::_Internal::avg_pool_param(const ClassificationParam* msg) {
  return *msg->_impl_.avg_pool_param_;
}
ClassificationParam::ClassificationParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.ClassificationParam)
}
ClassificationParam::ClassificationParam(const ClassificationParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  ClassificationParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.layer_name_){}
    , decltype(_impl_.label_type_){}
    , decltype(_impl_.avg_pool_param_){nullptr}
    , decltype(_impl_.top_k_){}
    , decltype(_impl_.test_accuracy_){}
    , decltype(_impl_.preprocess_type_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_layer_name().empty()) {
    _this->_impl_.layer_name_.Set(from._internal_layer_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.label_type_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.label_type_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_label_type().empty()) {
    _this->_impl_.label_type_.Set(from._internal_label_type(), 
      _this->GetArenaForAllocation());
  }
  if (from._internal_has_avg_pool_param()) {
    _this->_impl_.avg_pool_param_ = new ::vitis::ai::proto::ClassificationParam_AvgPoolParam(*from._impl_.avg_pool_param_);
  }
  ::memcpy(&_impl_.top_k_, &from._impl_.top_k_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.preprocess_type_) -
    reinterpret_cast<char*>(&_impl_.top_k_)) + sizeof(_impl_.preprocess_type_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.ClassificationParam)
}

inline void ClassificationParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.layer_name_){}
    , decltype(_impl_.label_type_){}
    , decltype(_impl_.avg_pool_param_){nullptr}
    , decltype(_impl_.top_k_){0}
    , decltype(_impl_.test_accuracy_){false}
    , decltype(_impl_.preprocess_type_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.label_type_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.label_type_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

ClassificationParam::~ClassificationParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.ClassificationParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void ClassificationParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.layer_name_.Destroy();
  _impl_.label_type_.Destroy();
  if (this != internal_default_instance()) delete _impl_.avg_pool_param_;
}

void ClassificationParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void ClassificationParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.ClassificationParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.layer_name_.ClearToEmpty();
  _impl_.label_type_.ClearToEmpty();
  if (GetArenaForAllocation() == nullptr && _impl_.avg_pool_param_ != nullptr) {
    delete _impl_.avg_pool_param_;
  }
  _impl_.avg_pool_param_ = nullptr;
  ::memset(&_impl_.top_k_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.preprocess_type_) -
      reinterpret_cast<char*>(&_impl_.top_k_)) + sizeof(_impl_.preprocess_type_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ClassificationParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 top_k = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool test_accuracy = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.test_accuracy_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.ClassificationParam.PreprocessType preprocess_type = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_preprocess_type(static_cast<::vitis::ai::proto::ClassificationParam_PreprocessType>(val));
        } else
          goto handle_unusual;
        continue;
      // string layer_name = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          auto str = _internal_mutable_layer_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.ClassificationParam.layer_name"));
        } else
          goto handle_unusual;
        continue;
      // string label_type = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          auto str = _internal_mutable_label_type();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.ClassificationParam.label_type"));
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.ClassificationParam.AvgPoolParam avg_pool_param = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_avg_pool_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ClassificationParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.ClassificationParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 top_k = 1;
  if (this->_internal_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_top_k(), target);
  }

  // bool test_accuracy = 2;
  if (this->_internal_test_accuracy() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(2, this->_internal_test_accuracy(), target);
  }

  // .vitis.ai.proto.ClassificationParam.PreprocessType preprocess_type = 3;
  if (this->_internal_preprocess_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      3, this->_internal_preprocess_type(), target);
  }

  // string layer_name = 4;
  if (!this->_internal_layer_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_layer_name().data(), static_cast<int>(this->_internal_layer_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.ClassificationParam.layer_name");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_layer_name(), target);
  }

  // string label_type = 5;
  if (!this->_internal_label_type().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_label_type().data(), static_cast<int>(this->_internal_label_type().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.ClassificationParam.label_type");
    target = stream->WriteStringMaybeAliased(
        5, this->_internal_label_type(), target);
  }

  // .vitis.ai.proto.ClassificationParam.AvgPoolParam avg_pool_param = 6;
  if (this->_internal_has_avg_pool_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(6, _Internal::avg_pool_param(this),
        _Internal::avg_pool_param(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.ClassificationParam)
  return target;
}

size_t ClassificationParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.ClassificationParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string layer_name = 4;
  if (!this->_internal_layer_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_layer_name());
  }

  // string label_type = 5;
  if (!this->_internal_label_type().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_label_type());
  }

  // .vitis.ai.proto.ClassificationParam.AvgPoolParam avg_pool_param = 6;
  if (this->_internal_has_avg_pool_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.avg_pool_param_);
  }

  // int32 top_k = 1;
  if (this->_internal_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_top_k());
  }

  // bool test_accuracy = 2;
  if (this->_internal_test_accuracy() != 0) {
    total_size += 1 + 1;
  }

  // .vitis.ai.proto.ClassificationParam.PreprocessType preprocess_type = 3;
  if (this->_internal_preprocess_type() != 0) {
    total_size += 1 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_preprocess_type());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ClassificationParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    ClassificationParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ClassificationParam::GetClassData() const { return &_class_data_; }


void ClassificationParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<ClassificationParam*>(&to_msg);
  auto& from = static_cast<const ClassificationParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.ClassificationParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_layer_name().empty()) {
    _this->_internal_set_layer_name(from._internal_layer_name());
  }
  if (!from._internal_label_type().empty()) {
    _this->_internal_set_label_type(from._internal_label_type());
  }
  if (from._internal_has_avg_pool_param()) {
    _this->_internal_mutable_avg_pool_param()->::vitis::ai::proto::ClassificationParam_AvgPoolParam::MergeFrom(
        from._internal_avg_pool_param());
  }
  if (from._internal_top_k() != 0) {
    _this->_internal_set_top_k(from._internal_top_k());
  }
  if (from._internal_test_accuracy() != 0) {
    _this->_internal_set_test_accuracy(from._internal_test_accuracy());
  }
  if (from._internal_preprocess_type() != 0) {
    _this->_internal_set_preprocess_type(from._internal_preprocess_type());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void ClassificationParam::CopyFrom(const ClassificationParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.ClassificationParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClassificationParam::IsInitialized() const {
  return true;
}

void ClassificationParam::InternalSwap(ClassificationParam* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.layer_name_, lhs_arena,
      &other->_impl_.layer_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.label_type_, lhs_arena,
      &other->_impl_.label_type_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ClassificationParam, _impl_.preprocess_type_)
      + sizeof(ClassificationParam::_impl_.preprocess_type_)
      - PROTOBUF_FIELD_OFFSET(ClassificationParam, _impl_.avg_pool_param_)>(
          reinterpret_cast<char*>(&_impl_.avg_pool_param_),
          reinterpret_cast<char*>(&other->_impl_.avg_pool_param_));
}

::PROTOBUF_NAMESPACE_ID::Metadata ClassificationParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[15]);
}

// ===================================================================

class DenseBoxParam::_Internal {
 public:
};

DenseBoxParam::DenseBoxParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.DenseBoxParam)
}
DenseBoxParam::DenseBoxParam(const DenseBoxParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  DenseBoxParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.num_of_classes_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.det_threshold_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.num_of_classes_, &from._impl_.num_of_classes_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.det_threshold_) -
    reinterpret_cast<char*>(&_impl_.num_of_classes_)) + sizeof(_impl_.det_threshold_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.DenseBoxParam)
}

inline void DenseBoxParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.num_of_classes_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.det_threshold_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

DenseBoxParam::~DenseBoxParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.DenseBoxParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DenseBoxParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void DenseBoxParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DenseBoxParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.DenseBoxParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.num_of_classes_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.det_threshold_) -
      reinterpret_cast<char*>(&_impl_.num_of_classes_)) + sizeof(_impl_.det_threshold_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* DenseBoxParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 num_of_classes = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.num_of_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float det_threshold = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.det_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* DenseBoxParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.DenseBoxParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 num_of_classes = 1;
  if (this->_internal_num_of_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_num_of_classes(), target);
  }

  // float nms_threshold = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_nms_threshold(), target);
  }

  // float det_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_det_threshold = this->_internal_det_threshold();
  uint32_t raw_det_threshold;
  memcpy(&raw_det_threshold, &tmp_det_threshold, sizeof(tmp_det_threshold));
  if (raw_det_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_det_threshold(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.DenseBoxParam)
  return target;
}

size_t DenseBoxParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.DenseBoxParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 num_of_classes = 1;
  if (this->_internal_num_of_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_of_classes());
  }

  // float nms_threshold = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // float det_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_det_threshold = this->_internal_det_threshold();
  uint32_t raw_det_threshold;
  memcpy(&raw_det_threshold, &tmp_det_threshold, sizeof(tmp_det_threshold));
  if (raw_det_threshold != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData DenseBoxParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    DenseBoxParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*DenseBoxParam::GetClassData() const { return &_class_data_; }


void DenseBoxParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<DenseBoxParam*>(&to_msg);
  auto& from = static_cast<const DenseBoxParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.DenseBoxParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_num_of_classes() != 0) {
    _this->_internal_set_num_of_classes(from._internal_num_of_classes());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_det_threshold = from._internal_det_threshold();
  uint32_t raw_det_threshold;
  memcpy(&raw_det_threshold, &tmp_det_threshold, sizeof(tmp_det_threshold));
  if (raw_det_threshold != 0) {
    _this->_internal_set_det_threshold(from._internal_det_threshold());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void DenseBoxParam::CopyFrom(const DenseBoxParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.DenseBoxParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DenseBoxParam::IsInitialized() const {
  return true;
}

void DenseBoxParam::InternalSwap(DenseBoxParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(DenseBoxParam, _impl_.det_threshold_)
      + sizeof(DenseBoxParam::_impl_.det_threshold_)
      - PROTOBUF_FIELD_OFFSET(DenseBoxParam, _impl_.num_of_classes_)>(
          reinterpret_cast<char*>(&_impl_.num_of_classes_),
          reinterpret_cast<char*>(&other->_impl_.num_of_classes_));
}

::PROTOBUF_NAMESPACE_ID::Metadata DenseBoxParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[16]);
}

// ===================================================================

class MultiTaskParam::_Internal {
 public:
};

MultiTaskParam::MultiTaskParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.MultiTaskParam)
}
MultiTaskParam::MultiTaskParam(const MultiTaskParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  MultiTaskParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.th_conf_){from._impl_.th_conf_}
    , decltype(_impl_.prior_box_param_){from._impl_.prior_box_param_}
    , decltype(_impl_.loc_name_){from._impl_.loc_name_}
    , decltype(_impl_.conf_name_){from._impl_.conf_name_}
    , decltype(_impl_.centerness_name_){from._impl_.centerness_name_}
    , decltype(_impl_.seg_name_){}
    , decltype(_impl_.drivable_name_){}
    , decltype(_impl_.depth_name_){}
    , decltype(_impl_.lane_name_){}
    , decltype(_impl_.num_of_detection_classes_){}
    , decltype(_impl_.num_of_segmentation_classes_){}
    , decltype(_impl_.keep_top_k_){}
    , decltype(_impl_.top_k_){}
    , decltype(_impl_.nms_threshold_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.seg_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.seg_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_seg_name().empty()) {
    _this->_impl_.seg_name_.Set(from._internal_seg_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.drivable_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.drivable_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_drivable_name().empty()) {
    _this->_impl_.drivable_name_.Set(from._internal_drivable_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.depth_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.depth_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_depth_name().empty()) {
    _this->_impl_.depth_name_.Set(from._internal_depth_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.lane_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.lane_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_lane_name().empty()) {
    _this->_impl_.lane_name_.Set(from._internal_lane_name(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.num_of_detection_classes_, &from._impl_.num_of_detection_classes_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.nms_threshold_) -
    reinterpret_cast<char*>(&_impl_.num_of_detection_classes_)) + sizeof(_impl_.nms_threshold_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.MultiTaskParam)
}

inline void MultiTaskParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.th_conf_){arena}
    , decltype(_impl_.prior_box_param_){arena}
    , decltype(_impl_.loc_name_){arena}
    , decltype(_impl_.conf_name_){arena}
    , decltype(_impl_.centerness_name_){arena}
    , decltype(_impl_.seg_name_){}
    , decltype(_impl_.drivable_name_){}
    , decltype(_impl_.depth_name_){}
    , decltype(_impl_.lane_name_){}
    , decltype(_impl_.num_of_detection_classes_){0}
    , decltype(_impl_.num_of_segmentation_classes_){0}
    , decltype(_impl_.keep_top_k_){0}
    , decltype(_impl_.top_k_){0}
    , decltype(_impl_.nms_threshold_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.seg_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.seg_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.drivable_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.drivable_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.depth_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.depth_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.lane_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.lane_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

MultiTaskParam::~MultiTaskParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.MultiTaskParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MultiTaskParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.th_conf_.~RepeatedField();
  _impl_.prior_box_param_.~RepeatedPtrField();
  _impl_.loc_name_.~RepeatedPtrField();
  _impl_.conf_name_.~RepeatedPtrField();
  _impl_.centerness_name_.~RepeatedPtrField();
  _impl_.seg_name_.Destroy();
  _impl_.drivable_name_.Destroy();
  _impl_.depth_name_.Destroy();
  _impl_.lane_name_.Destroy();
}

void MultiTaskParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MultiTaskParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.MultiTaskParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.th_conf_.Clear();
  _impl_.prior_box_param_.Clear();
  _impl_.loc_name_.Clear();
  _impl_.conf_name_.Clear();
  _impl_.centerness_name_.Clear();
  _impl_.seg_name_.ClearToEmpty();
  _impl_.drivable_name_.ClearToEmpty();
  _impl_.depth_name_.ClearToEmpty();
  _impl_.lane_name_.ClearToEmpty();
  ::memset(&_impl_.num_of_detection_classes_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.nms_threshold_) -
      reinterpret_cast<char*>(&_impl_.num_of_detection_classes_)) + sizeof(_impl_.nms_threshold_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* MultiTaskParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated float th_conf = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_th_conf(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 13) {
          _internal_add_th_conf(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 num_of_detection_classes = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.num_of_detection_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 num_of_segmentation_classes = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.num_of_segmentation_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 keep_top_k = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _impl_.keep_top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 top_k = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _impl_.top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 53)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_prior_box_param(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string loc_name = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_loc_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.MultiTaskParam.loc_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string conf_name = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_conf_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.MultiTaskParam.conf_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<74>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string centerness_name = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_centerness_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.MultiTaskParam.centerness_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<82>(ptr));
        } else
          goto handle_unusual;
        continue;
      // string seg_name = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          auto str = _internal_mutable_seg_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.MultiTaskParam.seg_name"));
        } else
          goto handle_unusual;
        continue;
      // string drivable_name = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          auto str = _internal_mutable_drivable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.MultiTaskParam.drivable_name"));
        } else
          goto handle_unusual;
        continue;
      // string depth_name = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 106)) {
          auto str = _internal_mutable_depth_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.MultiTaskParam.depth_name"));
        } else
          goto handle_unusual;
        continue;
      // string lane_name = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          auto str = _internal_mutable_lane_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.MultiTaskParam.lane_name"));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* MultiTaskParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.MultiTaskParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated float th_conf = 1;
  if (this->_internal_th_conf_size() > 0) {
    target = stream->WriteFixedPacked(1, _internal_th_conf(), target);
  }

  // int32 num_of_detection_classes = 2;
  if (this->_internal_num_of_detection_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_num_of_detection_classes(), target);
  }

  // int32 num_of_segmentation_classes = 3;
  if (this->_internal_num_of_segmentation_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_num_of_segmentation_classes(), target);
  }

  // int32 keep_top_k = 4;
  if (this->_internal_keep_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(4, this->_internal_keep_top_k(), target);
  }

  // int32 top_k = 5;
  if (this->_internal_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(5, this->_internal_top_k(), target);
  }

  // float nms_threshold = 6;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(6, this->_internal_nms_threshold(), target);
  }

  // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 7;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_prior_box_param_size()); i < n; i++) {
    const auto& repfield = this->_internal_prior_box_param(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream);
  }

  // repeated string loc_name = 8;
  for (int i = 0, n = this->_internal_loc_name_size(); i < n; i++) {
    const auto& s = this->_internal_loc_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.MultiTaskParam.loc_name");
    target = stream->WriteString(8, s, target);
  }

  // repeated string conf_name = 9;
  for (int i = 0, n = this->_internal_conf_name_size(); i < n; i++) {
    const auto& s = this->_internal_conf_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.MultiTaskParam.conf_name");
    target = stream->WriteString(9, s, target);
  }

  // repeated string centerness_name = 10;
  for (int i = 0, n = this->_internal_centerness_name_size(); i < n; i++) {
    const auto& s = this->_internal_centerness_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.MultiTaskParam.centerness_name");
    target = stream->WriteString(10, s, target);
  }

  // string seg_name = 11;
  if (!this->_internal_seg_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_seg_name().data(), static_cast<int>(this->_internal_seg_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.MultiTaskParam.seg_name");
    target = stream->WriteStringMaybeAliased(
        11, this->_internal_seg_name(), target);
  }

  // string drivable_name = 12;
  if (!this->_internal_drivable_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_drivable_name().data(), static_cast<int>(this->_internal_drivable_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.MultiTaskParam.drivable_name");
    target = stream->WriteStringMaybeAliased(
        12, this->_internal_drivable_name(), target);
  }

  // string depth_name = 13;
  if (!this->_internal_depth_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_depth_name().data(), static_cast<int>(this->_internal_depth_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.MultiTaskParam.depth_name");
    target = stream->WriteStringMaybeAliased(
        13, this->_internal_depth_name(), target);
  }

  // string lane_name = 14;
  if (!this->_internal_lane_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_lane_name().data(), static_cast<int>(this->_internal_lane_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.MultiTaskParam.lane_name");
    target = stream->WriteStringMaybeAliased(
        14, this->_internal_lane_name(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.MultiTaskParam)
  return target;
}

size_t MultiTaskParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.MultiTaskParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float th_conf = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_th_conf_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 7;
  total_size += 1UL * this->_internal_prior_box_param_size();
  for (const auto& msg : this->_impl_.prior_box_param_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated string loc_name = 8;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.loc_name_.size());
  for (int i = 0, n = _impl_.loc_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.loc_name_.Get(i));
  }

  // repeated string conf_name = 9;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.conf_name_.size());
  for (int i = 0, n = _impl_.conf_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.conf_name_.Get(i));
  }

  // repeated string centerness_name = 10;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.centerness_name_.size());
  for (int i = 0, n = _impl_.centerness_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.centerness_name_.Get(i));
  }

  // string seg_name = 11;
  if (!this->_internal_seg_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_seg_name());
  }

  // string drivable_name = 12;
  if (!this->_internal_drivable_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_drivable_name());
  }

  // string depth_name = 13;
  if (!this->_internal_depth_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_depth_name());
  }

  // string lane_name = 14;
  if (!this->_internal_lane_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_lane_name());
  }

  // int32 num_of_detection_classes = 2;
  if (this->_internal_num_of_detection_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_of_detection_classes());
  }

  // int32 num_of_segmentation_classes = 3;
  if (this->_internal_num_of_segmentation_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_of_segmentation_classes());
  }

  // int32 keep_top_k = 4;
  if (this->_internal_keep_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_keep_top_k());
  }

  // int32 top_k = 5;
  if (this->_internal_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_top_k());
  }

  // float nms_threshold = 6;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MultiTaskParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    MultiTaskParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MultiTaskParam::GetClassData() const { return &_class_data_; }


void MultiTaskParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<MultiTaskParam*>(&to_msg);
  auto& from = static_cast<const MultiTaskParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.MultiTaskParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.th_conf_.MergeFrom(from._impl_.th_conf_);
  _this->_impl_.prior_box_param_.MergeFrom(from._impl_.prior_box_param_);
  _this->_impl_.loc_name_.MergeFrom(from._impl_.loc_name_);
  _this->_impl_.conf_name_.MergeFrom(from._impl_.conf_name_);
  _this->_impl_.centerness_name_.MergeFrom(from._impl_.centerness_name_);
  if (!from._internal_seg_name().empty()) {
    _this->_internal_set_seg_name(from._internal_seg_name());
  }
  if (!from._internal_drivable_name().empty()) {
    _this->_internal_set_drivable_name(from._internal_drivable_name());
  }
  if (!from._internal_depth_name().empty()) {
    _this->_internal_set_depth_name(from._internal_depth_name());
  }
  if (!from._internal_lane_name().empty()) {
    _this->_internal_set_lane_name(from._internal_lane_name());
  }
  if (from._internal_num_of_detection_classes() != 0) {
    _this->_internal_set_num_of_detection_classes(from._internal_num_of_detection_classes());
  }
  if (from._internal_num_of_segmentation_classes() != 0) {
    _this->_internal_set_num_of_segmentation_classes(from._internal_num_of_segmentation_classes());
  }
  if (from._internal_keep_top_k() != 0) {
    _this->_internal_set_keep_top_k(from._internal_keep_top_k());
  }
  if (from._internal_top_k() != 0) {
    _this->_internal_set_top_k(from._internal_top_k());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void MultiTaskParam::CopyFrom(const MultiTaskParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.MultiTaskParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MultiTaskParam::IsInitialized() const {
  return true;
}

void MultiTaskParam::InternalSwap(MultiTaskParam* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.th_conf_.InternalSwap(&other->_impl_.th_conf_);
  _impl_.prior_box_param_.InternalSwap(&other->_impl_.prior_box_param_);
  _impl_.loc_name_.InternalSwap(&other->_impl_.loc_name_);
  _impl_.conf_name_.InternalSwap(&other->_impl_.conf_name_);
  _impl_.centerness_name_.InternalSwap(&other->_impl_.centerness_name_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.seg_name_, lhs_arena,
      &other->_impl_.seg_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.drivable_name_, lhs_arena,
      &other->_impl_.drivable_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.depth_name_, lhs_arena,
      &other->_impl_.depth_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.lane_name_, lhs_arena,
      &other->_impl_.lane_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(MultiTaskParam, _impl_.nms_threshold_)
      + sizeof(MultiTaskParam::_impl_.nms_threshold_)
      - PROTOBUF_FIELD_OFFSET(MultiTaskParam, _impl_.num_of_detection_classes_)>(
          reinterpret_cast<char*>(&_impl_.num_of_detection_classes_),
          reinterpret_cast<char*>(&other->_impl_.num_of_detection_classes_));
}

::PROTOBUF_NAMESPACE_ID::Metadata MultiTaskParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[17]);
}

// ===================================================================

class RoadlineParam::_Internal {
 public:
};

RoadlineParam::RoadlineParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.RoadlineParam)
}
RoadlineParam::RoadlineParam(const RoadlineParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  RoadlineParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.layer_name_){from._impl_.layer_name_}
    , decltype(_impl_.ratio_){}
    , decltype(_impl_.ipm_width_){}
    , decltype(_impl_.ipm_height_){}
    , decltype(_impl_.ipm_left_){}
    , decltype(_impl_.ipm_right_){}
    , decltype(_impl_.ipm_top_){}
    , decltype(_impl_.ipm_bottom_){}
    , decltype(_impl_.ipm_interpolation_){}
    , decltype(_impl_.ipm_vp_portion_){}
    , decltype(_impl_.focal_length_x_){}
    , decltype(_impl_.focal_length_y_){}
    , decltype(_impl_.optical_center_x_){}
    , decltype(_impl_.optical_center_y_){}
    , decltype(_impl_.camera_height_){}
    , decltype(_impl_.pitch_){}
    , decltype(_impl_.yaw_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.ratio_, &from._impl_.ratio_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.yaw_) -
    reinterpret_cast<char*>(&_impl_.ratio_)) + sizeof(_impl_.yaw_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.RoadlineParam)
}

inline void RoadlineParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.layer_name_){arena}
    , decltype(_impl_.ratio_){0}
    , decltype(_impl_.ipm_width_){0}
    , decltype(_impl_.ipm_height_){0}
    , decltype(_impl_.ipm_left_){0}
    , decltype(_impl_.ipm_right_){0}
    , decltype(_impl_.ipm_top_){0}
    , decltype(_impl_.ipm_bottom_){0}
    , decltype(_impl_.ipm_interpolation_){0}
    , decltype(_impl_.ipm_vp_portion_){0}
    , decltype(_impl_.focal_length_x_){0}
    , decltype(_impl_.focal_length_y_){0}
    , decltype(_impl_.optical_center_x_){0}
    , decltype(_impl_.optical_center_y_){0}
    , decltype(_impl_.camera_height_){0}
    , decltype(_impl_.pitch_){0}
    , decltype(_impl_.yaw_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

RoadlineParam::~RoadlineParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.RoadlineParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void RoadlineParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.layer_name_.~RepeatedPtrField();
}

void RoadlineParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void RoadlineParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.RoadlineParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.layer_name_.Clear();
  ::memset(&_impl_.ratio_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.yaw_) -
      reinterpret_cast<char*>(&_impl_.ratio_)) + sizeof(_impl_.yaw_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* RoadlineParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 ratio = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.ratio_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float ipm_width = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.ipm_width_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float ipm_height = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.ipm_height_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float ipm_left = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          _impl_.ipm_left_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float ipm_right = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 45)) {
          _impl_.ipm_right_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float ipm_top = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 53)) {
          _impl_.ipm_top_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float ipm_bottom = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 61)) {
          _impl_.ipm_bottom_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float ipm_interpolation = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 69)) {
          _impl_.ipm_interpolation_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float ipm_vp_portion = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 77)) {
          _impl_.ipm_vp_portion_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float focal_length_x = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 85)) {
          _impl_.focal_length_x_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float focal_length_y = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 93)) {
          _impl_.focal_length_y_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float optical_center_x = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 101)) {
          _impl_.optical_center_x_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float optical_center_y = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 109)) {
          _impl_.optical_center_y_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float camera_height = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 117)) {
          _impl_.camera_height_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float pitch = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 125)) {
          _impl_.pitch_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float yaw = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 133)) {
          _impl_.yaw_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated string layer_name = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 138)) {
          ptr -= 2;
          do {
            ptr += 2;
            auto str = _internal_add_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.RoadlineParam.layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<138>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* RoadlineParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.RoadlineParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 ratio = 1;
  if (this->_internal_ratio() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_ratio(), target);
  }

  // float ipm_width = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_width = this->_internal_ipm_width();
  uint32_t raw_ipm_width;
  memcpy(&raw_ipm_width, &tmp_ipm_width, sizeof(tmp_ipm_width));
  if (raw_ipm_width != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_ipm_width(), target);
  }

  // float ipm_height = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_height = this->_internal_ipm_height();
  uint32_t raw_ipm_height;
  memcpy(&raw_ipm_height, &tmp_ipm_height, sizeof(tmp_ipm_height));
  if (raw_ipm_height != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_ipm_height(), target);
  }

  // float ipm_left = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_left = this->_internal_ipm_left();
  uint32_t raw_ipm_left;
  memcpy(&raw_ipm_left, &tmp_ipm_left, sizeof(tmp_ipm_left));
  if (raw_ipm_left != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(4, this->_internal_ipm_left(), target);
  }

  // float ipm_right = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_right = this->_internal_ipm_right();
  uint32_t raw_ipm_right;
  memcpy(&raw_ipm_right, &tmp_ipm_right, sizeof(tmp_ipm_right));
  if (raw_ipm_right != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(5, this->_internal_ipm_right(), target);
  }

  // float ipm_top = 6;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_top = this->_internal_ipm_top();
  uint32_t raw_ipm_top;
  memcpy(&raw_ipm_top, &tmp_ipm_top, sizeof(tmp_ipm_top));
  if (raw_ipm_top != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(6, this->_internal_ipm_top(), target);
  }

  // float ipm_bottom = 7;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_bottom = this->_internal_ipm_bottom();
  uint32_t raw_ipm_bottom;
  memcpy(&raw_ipm_bottom, &tmp_ipm_bottom, sizeof(tmp_ipm_bottom));
  if (raw_ipm_bottom != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(7, this->_internal_ipm_bottom(), target);
  }

  // float ipm_interpolation = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_interpolation = this->_internal_ipm_interpolation();
  uint32_t raw_ipm_interpolation;
  memcpy(&raw_ipm_interpolation, &tmp_ipm_interpolation, sizeof(tmp_ipm_interpolation));
  if (raw_ipm_interpolation != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(8, this->_internal_ipm_interpolation(), target);
  }

  // float ipm_vp_portion = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_vp_portion = this->_internal_ipm_vp_portion();
  uint32_t raw_ipm_vp_portion;
  memcpy(&raw_ipm_vp_portion, &tmp_ipm_vp_portion, sizeof(tmp_ipm_vp_portion));
  if (raw_ipm_vp_portion != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(9, this->_internal_ipm_vp_portion(), target);
  }

  // float focal_length_x = 10;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_focal_length_x = this->_internal_focal_length_x();
  uint32_t raw_focal_length_x;
  memcpy(&raw_focal_length_x, &tmp_focal_length_x, sizeof(tmp_focal_length_x));
  if (raw_focal_length_x != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(10, this->_internal_focal_length_x(), target);
  }

  // float focal_length_y = 11;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_focal_length_y = this->_internal_focal_length_y();
  uint32_t raw_focal_length_y;
  memcpy(&raw_focal_length_y, &tmp_focal_length_y, sizeof(tmp_focal_length_y));
  if (raw_focal_length_y != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(11, this->_internal_focal_length_y(), target);
  }

  // float optical_center_x = 12;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_optical_center_x = this->_internal_optical_center_x();
  uint32_t raw_optical_center_x;
  memcpy(&raw_optical_center_x, &tmp_optical_center_x, sizeof(tmp_optical_center_x));
  if (raw_optical_center_x != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(12, this->_internal_optical_center_x(), target);
  }

  // float optical_center_y = 13;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_optical_center_y = this->_internal_optical_center_y();
  uint32_t raw_optical_center_y;
  memcpy(&raw_optical_center_y, &tmp_optical_center_y, sizeof(tmp_optical_center_y));
  if (raw_optical_center_y != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(13, this->_internal_optical_center_y(), target);
  }

  // float camera_height = 14;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_camera_height = this->_internal_camera_height();
  uint32_t raw_camera_height;
  memcpy(&raw_camera_height, &tmp_camera_height, sizeof(tmp_camera_height));
  if (raw_camera_height != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(14, this->_internal_camera_height(), target);
  }

  // float pitch = 15;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_pitch = this->_internal_pitch();
  uint32_t raw_pitch;
  memcpy(&raw_pitch, &tmp_pitch, sizeof(tmp_pitch));
  if (raw_pitch != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(15, this->_internal_pitch(), target);
  }

  // float yaw = 16;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_yaw = this->_internal_yaw();
  uint32_t raw_yaw;
  memcpy(&raw_yaw, &tmp_yaw, sizeof(tmp_yaw));
  if (raw_yaw != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(16, this->_internal_yaw(), target);
  }

  // repeated string layer_name = 17;
  for (int i = 0, n = this->_internal_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.RoadlineParam.layer_name");
    target = stream->WriteString(17, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.RoadlineParam)
  return target;
}

size_t RoadlineParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.RoadlineParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string layer_name = 17;
  total_size += 2 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.layer_name_.size());
  for (int i = 0, n = _impl_.layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.layer_name_.Get(i));
  }

  // int32 ratio = 1;
  if (this->_internal_ratio() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_ratio());
  }

  // float ipm_width = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_width = this->_internal_ipm_width();
  uint32_t raw_ipm_width;
  memcpy(&raw_ipm_width, &tmp_ipm_width, sizeof(tmp_ipm_width));
  if (raw_ipm_width != 0) {
    total_size += 1 + 4;
  }

  // float ipm_height = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_height = this->_internal_ipm_height();
  uint32_t raw_ipm_height;
  memcpy(&raw_ipm_height, &tmp_ipm_height, sizeof(tmp_ipm_height));
  if (raw_ipm_height != 0) {
    total_size += 1 + 4;
  }

  // float ipm_left = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_left = this->_internal_ipm_left();
  uint32_t raw_ipm_left;
  memcpy(&raw_ipm_left, &tmp_ipm_left, sizeof(tmp_ipm_left));
  if (raw_ipm_left != 0) {
    total_size += 1 + 4;
  }

  // float ipm_right = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_right = this->_internal_ipm_right();
  uint32_t raw_ipm_right;
  memcpy(&raw_ipm_right, &tmp_ipm_right, sizeof(tmp_ipm_right));
  if (raw_ipm_right != 0) {
    total_size += 1 + 4;
  }

  // float ipm_top = 6;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_top = this->_internal_ipm_top();
  uint32_t raw_ipm_top;
  memcpy(&raw_ipm_top, &tmp_ipm_top, sizeof(tmp_ipm_top));
  if (raw_ipm_top != 0) {
    total_size += 1 + 4;
  }

  // float ipm_bottom = 7;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_bottom = this->_internal_ipm_bottom();
  uint32_t raw_ipm_bottom;
  memcpy(&raw_ipm_bottom, &tmp_ipm_bottom, sizeof(tmp_ipm_bottom));
  if (raw_ipm_bottom != 0) {
    total_size += 1 + 4;
  }

  // float ipm_interpolation = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_interpolation = this->_internal_ipm_interpolation();
  uint32_t raw_ipm_interpolation;
  memcpy(&raw_ipm_interpolation, &tmp_ipm_interpolation, sizeof(tmp_ipm_interpolation));
  if (raw_ipm_interpolation != 0) {
    total_size += 1 + 4;
  }

  // float ipm_vp_portion = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_vp_portion = this->_internal_ipm_vp_portion();
  uint32_t raw_ipm_vp_portion;
  memcpy(&raw_ipm_vp_portion, &tmp_ipm_vp_portion, sizeof(tmp_ipm_vp_portion));
  if (raw_ipm_vp_portion != 0) {
    total_size += 1 + 4;
  }

  // float focal_length_x = 10;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_focal_length_x = this->_internal_focal_length_x();
  uint32_t raw_focal_length_x;
  memcpy(&raw_focal_length_x, &tmp_focal_length_x, sizeof(tmp_focal_length_x));
  if (raw_focal_length_x != 0) {
    total_size += 1 + 4;
  }

  // float focal_length_y = 11;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_focal_length_y = this->_internal_focal_length_y();
  uint32_t raw_focal_length_y;
  memcpy(&raw_focal_length_y, &tmp_focal_length_y, sizeof(tmp_focal_length_y));
  if (raw_focal_length_y != 0) {
    total_size += 1 + 4;
  }

  // float optical_center_x = 12;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_optical_center_x = this->_internal_optical_center_x();
  uint32_t raw_optical_center_x;
  memcpy(&raw_optical_center_x, &tmp_optical_center_x, sizeof(tmp_optical_center_x));
  if (raw_optical_center_x != 0) {
    total_size += 1 + 4;
  }

  // float optical_center_y = 13;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_optical_center_y = this->_internal_optical_center_y();
  uint32_t raw_optical_center_y;
  memcpy(&raw_optical_center_y, &tmp_optical_center_y, sizeof(tmp_optical_center_y));
  if (raw_optical_center_y != 0) {
    total_size += 1 + 4;
  }

  // float camera_height = 14;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_camera_height = this->_internal_camera_height();
  uint32_t raw_camera_height;
  memcpy(&raw_camera_height, &tmp_camera_height, sizeof(tmp_camera_height));
  if (raw_camera_height != 0) {
    total_size += 1 + 4;
  }

  // float pitch = 15;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_pitch = this->_internal_pitch();
  uint32_t raw_pitch;
  memcpy(&raw_pitch, &tmp_pitch, sizeof(tmp_pitch));
  if (raw_pitch != 0) {
    total_size += 1 + 4;
  }

  // float yaw = 16;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_yaw = this->_internal_yaw();
  uint32_t raw_yaw;
  memcpy(&raw_yaw, &tmp_yaw, sizeof(tmp_yaw));
  if (raw_yaw != 0) {
    total_size += 2 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RoadlineParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    RoadlineParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RoadlineParam::GetClassData() const { return &_class_data_; }


void RoadlineParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<RoadlineParam*>(&to_msg);
  auto& from = static_cast<const RoadlineParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.RoadlineParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.layer_name_.MergeFrom(from._impl_.layer_name_);
  if (from._internal_ratio() != 0) {
    _this->_internal_set_ratio(from._internal_ratio());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_width = from._internal_ipm_width();
  uint32_t raw_ipm_width;
  memcpy(&raw_ipm_width, &tmp_ipm_width, sizeof(tmp_ipm_width));
  if (raw_ipm_width != 0) {
    _this->_internal_set_ipm_width(from._internal_ipm_width());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_height = from._internal_ipm_height();
  uint32_t raw_ipm_height;
  memcpy(&raw_ipm_height, &tmp_ipm_height, sizeof(tmp_ipm_height));
  if (raw_ipm_height != 0) {
    _this->_internal_set_ipm_height(from._internal_ipm_height());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_left = from._internal_ipm_left();
  uint32_t raw_ipm_left;
  memcpy(&raw_ipm_left, &tmp_ipm_left, sizeof(tmp_ipm_left));
  if (raw_ipm_left != 0) {
    _this->_internal_set_ipm_left(from._internal_ipm_left());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_right = from._internal_ipm_right();
  uint32_t raw_ipm_right;
  memcpy(&raw_ipm_right, &tmp_ipm_right, sizeof(tmp_ipm_right));
  if (raw_ipm_right != 0) {
    _this->_internal_set_ipm_right(from._internal_ipm_right());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_top = from._internal_ipm_top();
  uint32_t raw_ipm_top;
  memcpy(&raw_ipm_top, &tmp_ipm_top, sizeof(tmp_ipm_top));
  if (raw_ipm_top != 0) {
    _this->_internal_set_ipm_top(from._internal_ipm_top());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_bottom = from._internal_ipm_bottom();
  uint32_t raw_ipm_bottom;
  memcpy(&raw_ipm_bottom, &tmp_ipm_bottom, sizeof(tmp_ipm_bottom));
  if (raw_ipm_bottom != 0) {
    _this->_internal_set_ipm_bottom(from._internal_ipm_bottom());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_interpolation = from._internal_ipm_interpolation();
  uint32_t raw_ipm_interpolation;
  memcpy(&raw_ipm_interpolation, &tmp_ipm_interpolation, sizeof(tmp_ipm_interpolation));
  if (raw_ipm_interpolation != 0) {
    _this->_internal_set_ipm_interpolation(from._internal_ipm_interpolation());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_ipm_vp_portion = from._internal_ipm_vp_portion();
  uint32_t raw_ipm_vp_portion;
  memcpy(&raw_ipm_vp_portion, &tmp_ipm_vp_portion, sizeof(tmp_ipm_vp_portion));
  if (raw_ipm_vp_portion != 0) {
    _this->_internal_set_ipm_vp_portion(from._internal_ipm_vp_portion());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_focal_length_x = from._internal_focal_length_x();
  uint32_t raw_focal_length_x;
  memcpy(&raw_focal_length_x, &tmp_focal_length_x, sizeof(tmp_focal_length_x));
  if (raw_focal_length_x != 0) {
    _this->_internal_set_focal_length_x(from._internal_focal_length_x());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_focal_length_y = from._internal_focal_length_y();
  uint32_t raw_focal_length_y;
  memcpy(&raw_focal_length_y, &tmp_focal_length_y, sizeof(tmp_focal_length_y));
  if (raw_focal_length_y != 0) {
    _this->_internal_set_focal_length_y(from._internal_focal_length_y());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_optical_center_x = from._internal_optical_center_x();
  uint32_t raw_optical_center_x;
  memcpy(&raw_optical_center_x, &tmp_optical_center_x, sizeof(tmp_optical_center_x));
  if (raw_optical_center_x != 0) {
    _this->_internal_set_optical_center_x(from._internal_optical_center_x());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_optical_center_y = from._internal_optical_center_y();
  uint32_t raw_optical_center_y;
  memcpy(&raw_optical_center_y, &tmp_optical_center_y, sizeof(tmp_optical_center_y));
  if (raw_optical_center_y != 0) {
    _this->_internal_set_optical_center_y(from._internal_optical_center_y());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_camera_height = from._internal_camera_height();
  uint32_t raw_camera_height;
  memcpy(&raw_camera_height, &tmp_camera_height, sizeof(tmp_camera_height));
  if (raw_camera_height != 0) {
    _this->_internal_set_camera_height(from._internal_camera_height());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_pitch = from._internal_pitch();
  uint32_t raw_pitch;
  memcpy(&raw_pitch, &tmp_pitch, sizeof(tmp_pitch));
  if (raw_pitch != 0) {
    _this->_internal_set_pitch(from._internal_pitch());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_yaw = from._internal_yaw();
  uint32_t raw_yaw;
  memcpy(&raw_yaw, &tmp_yaw, sizeof(tmp_yaw));
  if (raw_yaw != 0) {
    _this->_internal_set_yaw(from._internal_yaw());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void RoadlineParam::CopyFrom(const RoadlineParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.RoadlineParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RoadlineParam::IsInitialized() const {
  return true;
}

void RoadlineParam::InternalSwap(RoadlineParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.layer_name_.InternalSwap(&other->_impl_.layer_name_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(RoadlineParam, _impl_.yaw_)
      + sizeof(RoadlineParam::_impl_.yaw_)
      - PROTOBUF_FIELD_OFFSET(RoadlineParam, _impl_.ratio_)>(
          reinterpret_cast<char*>(&_impl_.ratio_),
          reinterpret_cast<char*>(&other->_impl_.ratio_));
}

::PROTOBUF_NAMESPACE_ID::Metadata RoadlineParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[18]);
}

// ===================================================================

class RcanParam::_Internal {
 public:
};

RcanParam::RcanParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.RcanParam)
}
RcanParam::RcanParam(const RcanParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  RcanParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.scale_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _this->_impl_.scale_ = from._impl_.scale_;
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.RcanParam)
}

inline void RcanParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.scale_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

RcanParam::~RcanParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.RcanParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void RcanParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void RcanParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void RcanParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.RcanParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.scale_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* RcanParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float scale = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _impl_.scale_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* RcanParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.RcanParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float scale = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale = this->_internal_scale();
  uint32_t raw_scale;
  memcpy(&raw_scale, &tmp_scale, sizeof(tmp_scale));
  if (raw_scale != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(1, this->_internal_scale(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.RcanParam)
  return target;
}

size_t RcanParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.RcanParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // float scale = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale = this->_internal_scale();
  uint32_t raw_scale;
  memcpy(&raw_scale, &tmp_scale, sizeof(tmp_scale));
  if (raw_scale != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RcanParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    RcanParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RcanParam::GetClassData() const { return &_class_data_; }


void RcanParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<RcanParam*>(&to_msg);
  auto& from = static_cast<const RcanParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.RcanParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale = from._internal_scale();
  uint32_t raw_scale;
  memcpy(&raw_scale, &tmp_scale, sizeof(tmp_scale));
  if (raw_scale != 0) {
    _this->_internal_set_scale(from._internal_scale());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void RcanParam::CopyFrom(const RcanParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.RcanParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RcanParam::IsInitialized() const {
  return true;
}

void RcanParam::InternalSwap(RcanParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.scale_, other->_impl_.scale_);
}

::PROTOBUF_NAMESPACE_ID::Metadata RcanParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[19]);
}

// ===================================================================

class RoadlineDeephiParam::_Internal {
 public:
};

RoadlineDeephiParam::RoadlineDeephiParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.RoadlineDeephiParam)
}
RoadlineDeephiParam::RoadlineDeephiParam(const RoadlineDeephiParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  RoadlineDeephiParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.resize_w_){}
    , decltype(_impl_.resize_h_){}
    , decltype(_impl_.crop_x_){}
    , decltype(_impl_.crop_y_){}
    , decltype(_impl_.crop_w_){}
    , decltype(_impl_.crop_h_){}
    , decltype(_impl_.area_threshold_){}
    , decltype(_impl_.epow_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.resize_w_, &from._impl_.resize_w_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.epow_) -
    reinterpret_cast<char*>(&_impl_.resize_w_)) + sizeof(_impl_.epow_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.RoadlineDeephiParam)
}

inline void RoadlineDeephiParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.resize_w_){0}
    , decltype(_impl_.resize_h_){0}
    , decltype(_impl_.crop_x_){0}
    , decltype(_impl_.crop_y_){0}
    , decltype(_impl_.crop_w_){0}
    , decltype(_impl_.crop_h_){0}
    , decltype(_impl_.area_threshold_){0}
    , decltype(_impl_.epow_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

RoadlineDeephiParam::~RoadlineDeephiParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.RoadlineDeephiParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void RoadlineDeephiParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void RoadlineDeephiParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void RoadlineDeephiParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.RoadlineDeephiParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.resize_w_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.epow_) -
      reinterpret_cast<char*>(&_impl_.resize_w_)) + sizeof(_impl_.epow_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* RoadlineDeephiParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 resize_w = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.resize_w_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 resize_h = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.resize_h_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 crop_x = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.crop_x_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 crop_y = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _impl_.crop_y_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 crop_w = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _impl_.crop_w_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 crop_h = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.crop_h_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 area_threshold = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _impl_.area_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 epow = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 64)) {
          _impl_.epow_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* RoadlineDeephiParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.RoadlineDeephiParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 resize_w = 1;
  if (this->_internal_resize_w() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_resize_w(), target);
  }

  // int32 resize_h = 2;
  if (this->_internal_resize_h() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_resize_h(), target);
  }

  // int32 crop_x = 3;
  if (this->_internal_crop_x() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_crop_x(), target);
  }

  // int32 crop_y = 4;
  if (this->_internal_crop_y() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(4, this->_internal_crop_y(), target);
  }

  // int32 crop_w = 5;
  if (this->_internal_crop_w() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(5, this->_internal_crop_w(), target);
  }

  // int32 crop_h = 6;
  if (this->_internal_crop_h() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(6, this->_internal_crop_h(), target);
  }

  // int32 area_threshold = 7;
  if (this->_internal_area_threshold() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(7, this->_internal_area_threshold(), target);
  }

  // int32 epow = 8;
  if (this->_internal_epow() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(8, this->_internal_epow(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.RoadlineDeephiParam)
  return target;
}

size_t RoadlineDeephiParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.RoadlineDeephiParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 resize_w = 1;
  if (this->_internal_resize_w() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_resize_w());
  }

  // int32 resize_h = 2;
  if (this->_internal_resize_h() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_resize_h());
  }

  // int32 crop_x = 3;
  if (this->_internal_crop_x() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_crop_x());
  }

  // int32 crop_y = 4;
  if (this->_internal_crop_y() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_crop_y());
  }

  // int32 crop_w = 5;
  if (this->_internal_crop_w() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_crop_w());
  }

  // int32 crop_h = 6;
  if (this->_internal_crop_h() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_crop_h());
  }

  // int32 area_threshold = 7;
  if (this->_internal_area_threshold() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_area_threshold());
  }

  // int32 epow = 8;
  if (this->_internal_epow() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_epow());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RoadlineDeephiParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    RoadlineDeephiParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RoadlineDeephiParam::GetClassData() const { return &_class_data_; }


void RoadlineDeephiParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<RoadlineDeephiParam*>(&to_msg);
  auto& from = static_cast<const RoadlineDeephiParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.RoadlineDeephiParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_resize_w() != 0) {
    _this->_internal_set_resize_w(from._internal_resize_w());
  }
  if (from._internal_resize_h() != 0) {
    _this->_internal_set_resize_h(from._internal_resize_h());
  }
  if (from._internal_crop_x() != 0) {
    _this->_internal_set_crop_x(from._internal_crop_x());
  }
  if (from._internal_crop_y() != 0) {
    _this->_internal_set_crop_y(from._internal_crop_y());
  }
  if (from._internal_crop_w() != 0) {
    _this->_internal_set_crop_w(from._internal_crop_w());
  }
  if (from._internal_crop_h() != 0) {
    _this->_internal_set_crop_h(from._internal_crop_h());
  }
  if (from._internal_area_threshold() != 0) {
    _this->_internal_set_area_threshold(from._internal_area_threshold());
  }
  if (from._internal_epow() != 0) {
    _this->_internal_set_epow(from._internal_epow());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void RoadlineDeephiParam::CopyFrom(const RoadlineDeephiParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.RoadlineDeephiParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RoadlineDeephiParam::IsInitialized() const {
  return true;
}

void RoadlineDeephiParam::InternalSwap(RoadlineDeephiParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(RoadlineDeephiParam, _impl_.epow_)
      + sizeof(RoadlineDeephiParam::_impl_.epow_)
      - PROTOBUF_FIELD_OFFSET(RoadlineDeephiParam, _impl_.resize_w_)>(
          reinterpret_cast<char*>(&_impl_.resize_w_),
          reinterpret_cast<char*>(&other->_impl_.resize_w_));
}

::PROTOBUF_NAMESPACE_ID::Metadata RoadlineDeephiParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[20]);
}

// ===================================================================

class SegmentationParam::_Internal {
 public:
};

SegmentationParam::SegmentationParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.SegmentationParam)
}
SegmentationParam::SegmentationParam(const SegmentationParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  SegmentationParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.color1_){}
    , decltype(_impl_.color2_){}
    , decltype(_impl_.color3_){}
    , decltype(_impl_.output_tensor_name_){}
    , decltype(_impl_.specify_output_layer_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.color1_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.color1_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_color1().empty()) {
    _this->_impl_.color1_.Set(from._internal_color1(), 
      _this->GetArenaForAllocation());
  }
  _impl_.color2_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.color2_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_color2().empty()) {
    _this->_impl_.color2_.Set(from._internal_color2(), 
      _this->GetArenaForAllocation());
  }
  _impl_.color3_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.color3_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_color3().empty()) {
    _this->_impl_.color3_.Set(from._internal_color3(), 
      _this->GetArenaForAllocation());
  }
  _impl_.output_tensor_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.output_tensor_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_output_tensor_name().empty()) {
    _this->_impl_.output_tensor_name_.Set(from._internal_output_tensor_name(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.specify_output_layer_ = from._impl_.specify_output_layer_;
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.SegmentationParam)
}

inline void SegmentationParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.color1_){}
    , decltype(_impl_.color2_){}
    , decltype(_impl_.color3_){}
    , decltype(_impl_.output_tensor_name_){}
    , decltype(_impl_.specify_output_layer_){false}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.color1_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.color1_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.color2_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.color2_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.color3_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.color3_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.output_tensor_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.output_tensor_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

SegmentationParam::~SegmentationParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.SegmentationParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void SegmentationParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.color1_.Destroy();
  _impl_.color2_.Destroy();
  _impl_.color3_.Destroy();
  _impl_.output_tensor_name_.Destroy();
}

void SegmentationParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void SegmentationParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.SegmentationParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.color1_.ClearToEmpty();
  _impl_.color2_.ClearToEmpty();
  _impl_.color3_.ClearToEmpty();
  _impl_.output_tensor_name_.ClearToEmpty();
  _impl_.specify_output_layer_ = false;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SegmentationParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string color1 = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_color1();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.SegmentationParam.color1"));
        } else
          goto handle_unusual;
        continue;
      // string color2 = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_color2();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.SegmentationParam.color2"));
        } else
          goto handle_unusual;
        continue;
      // string color3 = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_color3();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.SegmentationParam.color3"));
        } else
          goto handle_unusual;
        continue;
      // bool specify_output_layer = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _impl_.specify_output_layer_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string output_tensor_name = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          auto str = _internal_mutable_output_tensor_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.SegmentationParam.output_tensor_name"));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* SegmentationParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.SegmentationParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string color1 = 1;
  if (!this->_internal_color1().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_color1().data(), static_cast<int>(this->_internal_color1().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.SegmentationParam.color1");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_color1(), target);
  }

  // string color2 = 2;
  if (!this->_internal_color2().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_color2().data(), static_cast<int>(this->_internal_color2().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.SegmentationParam.color2");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_color2(), target);
  }

  // string color3 = 3;
  if (!this->_internal_color3().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_color3().data(), static_cast<int>(this->_internal_color3().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.SegmentationParam.color3");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_color3(), target);
  }

  // bool specify_output_layer = 4;
  if (this->_internal_specify_output_layer() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(4, this->_internal_specify_output_layer(), target);
  }

  // string output_tensor_name = 5;
  if (!this->_internal_output_tensor_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_output_tensor_name().data(), static_cast<int>(this->_internal_output_tensor_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.SegmentationParam.output_tensor_name");
    target = stream->WriteStringMaybeAliased(
        5, this->_internal_output_tensor_name(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.SegmentationParam)
  return target;
}

size_t SegmentationParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.SegmentationParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string color1 = 1;
  if (!this->_internal_color1().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_color1());
  }

  // string color2 = 2;
  if (!this->_internal_color2().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_color2());
  }

  // string color3 = 3;
  if (!this->_internal_color3().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_color3());
  }

  // string output_tensor_name = 5;
  if (!this->_internal_output_tensor_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_output_tensor_name());
  }

  // bool specify_output_layer = 4;
  if (this->_internal_specify_output_layer() != 0) {
    total_size += 1 + 1;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData SegmentationParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    SegmentationParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SegmentationParam::GetClassData() const { return &_class_data_; }


void SegmentationParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<SegmentationParam*>(&to_msg);
  auto& from = static_cast<const SegmentationParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.SegmentationParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_color1().empty()) {
    _this->_internal_set_color1(from._internal_color1());
  }
  if (!from._internal_color2().empty()) {
    _this->_internal_set_color2(from._internal_color2());
  }
  if (!from._internal_color3().empty()) {
    _this->_internal_set_color3(from._internal_color3());
  }
  if (!from._internal_output_tensor_name().empty()) {
    _this->_internal_set_output_tensor_name(from._internal_output_tensor_name());
  }
  if (from._internal_specify_output_layer() != 0) {
    _this->_internal_set_specify_output_layer(from._internal_specify_output_layer());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void SegmentationParam::CopyFrom(const SegmentationParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.SegmentationParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SegmentationParam::IsInitialized() const {
  return true;
}

void SegmentationParam::InternalSwap(SegmentationParam* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.color1_, lhs_arena,
      &other->_impl_.color1_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.color2_, lhs_arena,
      &other->_impl_.color2_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.color3_, lhs_arena,
      &other->_impl_.color3_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.output_tensor_name_, lhs_arena,
      &other->_impl_.output_tensor_name_, rhs_arena
  );
  swap(_impl_.specify_output_layer_, other->_impl_.specify_output_layer_);
}

::PROTOBUF_NAMESPACE_ID::Metadata SegmentationParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[21]);
}

// ===================================================================

class PlatenumParam::_Internal {
 public:
};

PlatenumParam::PlatenumParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.PlatenumParam)
}
PlatenumParam::PlatenumParam(const PlatenumParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PlatenumParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.first_){from._impl_.first_}
    , /*decltype(_impl_._first_cached_byte_size_)*/{0}
    , decltype(_impl_.second_){from._impl_.second_}
    , /*decltype(_impl_._second_cached_byte_size_)*/{0}
    , decltype(_impl_.output_tensor_name_){from._impl_.output_tensor_name_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.PlatenumParam)
}

inline void PlatenumParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.first_){arena}
    , /*decltype(_impl_._first_cached_byte_size_)*/{0}
    , decltype(_impl_.second_){arena}
    , /*decltype(_impl_._second_cached_byte_size_)*/{0}
    , decltype(_impl_.output_tensor_name_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

PlatenumParam::~PlatenumParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.PlatenumParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PlatenumParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.first_.~RepeatedField();
  _impl_.second_.~RepeatedField();
  _impl_.output_tensor_name_.~RepeatedPtrField();
}

void PlatenumParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PlatenumParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.PlatenumParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.first_.Clear();
  _impl_.second_.Clear();
  _impl_.output_tensor_name_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PlatenumParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated int32 first = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_first(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 8) {
          _internal_add_first(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 second = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_second(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 16) {
          _internal_add_second(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string output_tensor_name = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_output_tensor_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.PlatenumParam.output_tensor_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PlatenumParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.PlatenumParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated int32 first = 1;
  {
    int byte_size = _impl_._first_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          1, _internal_first(), byte_size, target);
    }
  }

  // repeated int32 second = 2;
  {
    int byte_size = _impl_._second_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          2, _internal_second(), byte_size, target);
    }
  }

  // repeated string output_tensor_name = 3;
  for (int i = 0, n = this->_internal_output_tensor_name_size(); i < n; i++) {
    const auto& s = this->_internal_output_tensor_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.PlatenumParam.output_tensor_name");
    target = stream->WriteString(3, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.PlatenumParam)
  return target;
}

size_t PlatenumParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.PlatenumParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated int32 first = 1;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.first_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._first_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // repeated int32 second = 2;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.second_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._second_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // repeated string output_tensor_name = 3;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.output_tensor_name_.size());
  for (int i = 0, n = _impl_.output_tensor_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.output_tensor_name_.Get(i));
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PlatenumParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PlatenumParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PlatenumParam::GetClassData() const { return &_class_data_; }


void PlatenumParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PlatenumParam*>(&to_msg);
  auto& from = static_cast<const PlatenumParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.PlatenumParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.first_.MergeFrom(from._impl_.first_);
  _this->_impl_.second_.MergeFrom(from._impl_.second_);
  _this->_impl_.output_tensor_name_.MergeFrom(from._impl_.output_tensor_name_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PlatenumParam::CopyFrom(const PlatenumParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.PlatenumParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PlatenumParam::IsInitialized() const {
  return true;
}

void PlatenumParam::InternalSwap(PlatenumParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.first_.InternalSwap(&other->_impl_.first_);
  _impl_.second_.InternalSwap(&other->_impl_.second_);
  _impl_.output_tensor_name_.InternalSwap(&other->_impl_.output_tensor_name_);
}

::PROTOBUF_NAMESPACE_ID::Metadata PlatenumParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[22]);
}

// ===================================================================

class SoloParam::_Internal {
 public:
};

SoloParam::SoloParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.SoloParam)
}
SoloParam::SoloParam(const SoloParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  SoloParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.first_){from._impl_.first_}
    , /*decltype(_impl_._first_cached_byte_size_)*/{0}
    , decltype(_impl_.second_){from._impl_.second_}
    , /*decltype(_impl_._second_cached_byte_size_)*/{0}
    , decltype(_impl_.input_tensor_name_){from._impl_.input_tensor_name_}
    , decltype(_impl_.output_tensor_name_){from._impl_.output_tensor_name_}
    , decltype(_impl_.score_thr_){}
    , decltype(_impl_.mask_thr_){}
    , decltype(_impl_.nms_pre_){}
    , decltype(_impl_.update_thr_){}
    , decltype(_impl_.max_per_img_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.score_thr_, &from._impl_.score_thr_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.max_per_img_) -
    reinterpret_cast<char*>(&_impl_.score_thr_)) + sizeof(_impl_.max_per_img_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.SoloParam)
}

inline void SoloParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.first_){arena}
    , /*decltype(_impl_._first_cached_byte_size_)*/{0}
    , decltype(_impl_.second_){arena}
    , /*decltype(_impl_._second_cached_byte_size_)*/{0}
    , decltype(_impl_.input_tensor_name_){arena}
    , decltype(_impl_.output_tensor_name_){arena}
    , decltype(_impl_.score_thr_){0}
    , decltype(_impl_.mask_thr_){0}
    , decltype(_impl_.nms_pre_){0u}
    , decltype(_impl_.update_thr_){0}
    , decltype(_impl_.max_per_img_){0u}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

SoloParam::~SoloParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.SoloParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void SoloParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.first_.~RepeatedField();
  _impl_.second_.~RepeatedField();
  _impl_.input_tensor_name_.~RepeatedPtrField();
  _impl_.output_tensor_name_.~RepeatedPtrField();
}

void SoloParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void SoloParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.SoloParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.first_.Clear();
  _impl_.second_.Clear();
  _impl_.input_tensor_name_.Clear();
  _impl_.output_tensor_name_.Clear();
  ::memset(&_impl_.score_thr_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.max_per_img_) -
      reinterpret_cast<char*>(&_impl_.score_thr_)) + sizeof(_impl_.max_per_img_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SoloParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated int32 first = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_first(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 8) {
          _internal_add_first(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 second = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_second(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 16) {
          _internal_add_second(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string input_tensor_name = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_input_tensor_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.SoloParam.input_tensor_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string output_tensor_name = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_output_tensor_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.SoloParam.output_tensor_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      // float score_thr = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 45)) {
          _impl_.score_thr_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float mask_thr = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 53)) {
          _impl_.mask_thr_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // uint32 nms_pre = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _impl_.nms_pre_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float update_thr = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 69)) {
          _impl_.update_thr_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // uint32 max_per_img = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 72)) {
          _impl_.max_per_img_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* SoloParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.SoloParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated int32 first = 1;
  {
    int byte_size = _impl_._first_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          1, _internal_first(), byte_size, target);
    }
  }

  // repeated int32 second = 2;
  {
    int byte_size = _impl_._second_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          2, _internal_second(), byte_size, target);
    }
  }

  // repeated string input_tensor_name = 3;
  for (int i = 0, n = this->_internal_input_tensor_name_size(); i < n; i++) {
    const auto& s = this->_internal_input_tensor_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.SoloParam.input_tensor_name");
    target = stream->WriteString(3, s, target);
  }

  // repeated string output_tensor_name = 4;
  for (int i = 0, n = this->_internal_output_tensor_name_size(); i < n; i++) {
    const auto& s = this->_internal_output_tensor_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.SoloParam.output_tensor_name");
    target = stream->WriteString(4, s, target);
  }

  // float score_thr = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score_thr = this->_internal_score_thr();
  uint32_t raw_score_thr;
  memcpy(&raw_score_thr, &tmp_score_thr, sizeof(tmp_score_thr));
  if (raw_score_thr != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(5, this->_internal_score_thr(), target);
  }

  // float mask_thr = 6;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_mask_thr = this->_internal_mask_thr();
  uint32_t raw_mask_thr;
  memcpy(&raw_mask_thr, &tmp_mask_thr, sizeof(tmp_mask_thr));
  if (raw_mask_thr != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(6, this->_internal_mask_thr(), target);
  }

  // uint32 nms_pre = 7;
  if (this->_internal_nms_pre() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(7, this->_internal_nms_pre(), target);
  }

  // float update_thr = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_update_thr = this->_internal_update_thr();
  uint32_t raw_update_thr;
  memcpy(&raw_update_thr, &tmp_update_thr, sizeof(tmp_update_thr));
  if (raw_update_thr != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(8, this->_internal_update_thr(), target);
  }

  // uint32 max_per_img = 9;
  if (this->_internal_max_per_img() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(9, this->_internal_max_per_img(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.SoloParam)
  return target;
}

size_t SoloParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.SoloParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated int32 first = 1;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.first_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._first_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // repeated int32 second = 2;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.second_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._second_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // repeated string input_tensor_name = 3;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.input_tensor_name_.size());
  for (int i = 0, n = _impl_.input_tensor_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.input_tensor_name_.Get(i));
  }

  // repeated string output_tensor_name = 4;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.output_tensor_name_.size());
  for (int i = 0, n = _impl_.output_tensor_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.output_tensor_name_.Get(i));
  }

  // float score_thr = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score_thr = this->_internal_score_thr();
  uint32_t raw_score_thr;
  memcpy(&raw_score_thr, &tmp_score_thr, sizeof(tmp_score_thr));
  if (raw_score_thr != 0) {
    total_size += 1 + 4;
  }

  // float mask_thr = 6;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_mask_thr = this->_internal_mask_thr();
  uint32_t raw_mask_thr;
  memcpy(&raw_mask_thr, &tmp_mask_thr, sizeof(tmp_mask_thr));
  if (raw_mask_thr != 0) {
    total_size += 1 + 4;
  }

  // uint32 nms_pre = 7;
  if (this->_internal_nms_pre() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_nms_pre());
  }

  // float update_thr = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_update_thr = this->_internal_update_thr();
  uint32_t raw_update_thr;
  memcpy(&raw_update_thr, &tmp_update_thr, sizeof(tmp_update_thr));
  if (raw_update_thr != 0) {
    total_size += 1 + 4;
  }

  // uint32 max_per_img = 9;
  if (this->_internal_max_per_img() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_max_per_img());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData SoloParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    SoloParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SoloParam::GetClassData() const { return &_class_data_; }


void SoloParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<SoloParam*>(&to_msg);
  auto& from = static_cast<const SoloParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.SoloParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.first_.MergeFrom(from._impl_.first_);
  _this->_impl_.second_.MergeFrom(from._impl_.second_);
  _this->_impl_.input_tensor_name_.MergeFrom(from._impl_.input_tensor_name_);
  _this->_impl_.output_tensor_name_.MergeFrom(from._impl_.output_tensor_name_);
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score_thr = from._internal_score_thr();
  uint32_t raw_score_thr;
  memcpy(&raw_score_thr, &tmp_score_thr, sizeof(tmp_score_thr));
  if (raw_score_thr != 0) {
    _this->_internal_set_score_thr(from._internal_score_thr());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_mask_thr = from._internal_mask_thr();
  uint32_t raw_mask_thr;
  memcpy(&raw_mask_thr, &tmp_mask_thr, sizeof(tmp_mask_thr));
  if (raw_mask_thr != 0) {
    _this->_internal_set_mask_thr(from._internal_mask_thr());
  }
  if (from._internal_nms_pre() != 0) {
    _this->_internal_set_nms_pre(from._internal_nms_pre());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_update_thr = from._internal_update_thr();
  uint32_t raw_update_thr;
  memcpy(&raw_update_thr, &tmp_update_thr, sizeof(tmp_update_thr));
  if (raw_update_thr != 0) {
    _this->_internal_set_update_thr(from._internal_update_thr());
  }
  if (from._internal_max_per_img() != 0) {
    _this->_internal_set_max_per_img(from._internal_max_per_img());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void SoloParam::CopyFrom(const SoloParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.SoloParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SoloParam::IsInitialized() const {
  return true;
}

void SoloParam::InternalSwap(SoloParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.first_.InternalSwap(&other->_impl_.first_);
  _impl_.second_.InternalSwap(&other->_impl_.second_);
  _impl_.input_tensor_name_.InternalSwap(&other->_impl_.input_tensor_name_);
  _impl_.output_tensor_name_.InternalSwap(&other->_impl_.output_tensor_name_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(SoloParam, _impl_.max_per_img_)
      + sizeof(SoloParam::_impl_.max_per_img_)
      - PROTOBUF_FIELD_OFFSET(SoloParam, _impl_.score_thr_)>(
          reinterpret_cast<char*>(&_impl_.score_thr_),
          reinterpret_cast<char*>(&other->_impl_.score_thr_));
}

::PROTOBUF_NAMESPACE_ID::Metadata SoloParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[23]);
}

// ===================================================================

class LaneParam::_Internal {
 public:
};

LaneParam::LaneParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.LaneParam)
}
LaneParam::LaneParam(const LaneParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  LaneParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.roi_x_){}
    , decltype(_impl_.roi_y_){}
    , decltype(_impl_.expect_height_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.roi_x_, &from._impl_.roi_x_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.expect_height_) -
    reinterpret_cast<char*>(&_impl_.roi_x_)) + sizeof(_impl_.expect_height_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.LaneParam)
}

inline void LaneParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.roi_x_){0}
    , decltype(_impl_.roi_y_){0}
    , decltype(_impl_.expect_height_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

LaneParam::~LaneParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.LaneParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void LaneParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void LaneParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void LaneParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.LaneParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.roi_x_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.expect_height_) -
      reinterpret_cast<char*>(&_impl_.roi_x_)) + sizeof(_impl_.expect_height_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* LaneParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 roi_x = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.roi_x_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 roi_y = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.roi_y_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 expect_height = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.expect_height_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* LaneParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.LaneParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 roi_x = 1;
  if (this->_internal_roi_x() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_roi_x(), target);
  }

  // int32 roi_y = 2;
  if (this->_internal_roi_y() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_roi_y(), target);
  }

  // int32 expect_height = 3;
  if (this->_internal_expect_height() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_expect_height(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.LaneParam)
  return target;
}

size_t LaneParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.LaneParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 roi_x = 1;
  if (this->_internal_roi_x() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_roi_x());
  }

  // int32 roi_y = 2;
  if (this->_internal_roi_y() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_roi_y());
  }

  // int32 expect_height = 3;
  if (this->_internal_expect_height() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_expect_height());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData LaneParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    LaneParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*LaneParam::GetClassData() const { return &_class_data_; }


void LaneParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<LaneParam*>(&to_msg);
  auto& from = static_cast<const LaneParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.LaneParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_roi_x() != 0) {
    _this->_internal_set_roi_x(from._internal_roi_x());
  }
  if (from._internal_roi_y() != 0) {
    _this->_internal_set_roi_y(from._internal_roi_y());
  }
  if (from._internal_expect_height() != 0) {
    _this->_internal_set_expect_height(from._internal_expect_height());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void LaneParam::CopyFrom(const LaneParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.LaneParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool LaneParam::IsInitialized() const {
  return true;
}

void LaneParam::InternalSwap(LaneParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(LaneParam, _impl_.expect_height_)
      + sizeof(LaneParam::_impl_.expect_height_)
      - PROTOBUF_FIELD_OFFSET(LaneParam, _impl_.roi_x_)>(
          reinterpret_cast<char*>(&_impl_.roi_x_),
          reinterpret_cast<char*>(&other->_impl_.roi_x_));
}

::PROTOBUF_NAMESPACE_ID::Metadata LaneParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[24]);
}

// ===================================================================

class BlinkerParam::_Internal {
 public:
};

BlinkerParam::BlinkerParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.BlinkerParam)
}
BlinkerParam::BlinkerParam(const BlinkerParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  BlinkerParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.prior_box_param_){from._impl_.prior_box_param_}
    , decltype(_impl_.conf_threshold_){from._impl_.conf_threshold_}
    , decltype(_impl_.num_classes_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.keep_top_k_){}
    , decltype(_impl_.top_k_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.num_classes_, &from._impl_.num_classes_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.top_k_) -
    reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.top_k_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.BlinkerParam)
}

inline void BlinkerParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.prior_box_param_){arena}
    , decltype(_impl_.conf_threshold_){arena}
    , decltype(_impl_.num_classes_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.keep_top_k_){0}
    , decltype(_impl_.top_k_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

BlinkerParam::~BlinkerParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.BlinkerParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void BlinkerParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.prior_box_param_.~RepeatedPtrField();
  _impl_.conf_threshold_.~RepeatedField();
}

void BlinkerParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void BlinkerParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.BlinkerParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.prior_box_param_.Clear();
  _impl_.conf_threshold_.Clear();
  ::memset(&_impl_.num_classes_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.top_k_) -
      reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.top_k_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* BlinkerParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_prior_box_param(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // int32 num_classes = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float conf_threshold = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_conf_threshold(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 37) {
          _internal_add_conf_threshold(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 keep_top_k = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _impl_.keep_top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 top_k = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* BlinkerParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.BlinkerParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_prior_box_param_size()); i < n; i++) {
    const auto& repfield = this->_internal_prior_box_param(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  // int32 num_classes = 2;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_num_classes(), target);
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_nms_threshold(), target);
  }

  // repeated float conf_threshold = 4;
  if (this->_internal_conf_threshold_size() > 0) {
    target = stream->WriteFixedPacked(4, _internal_conf_threshold(), target);
  }

  // int32 keep_top_k = 5;
  if (this->_internal_keep_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(5, this->_internal_keep_top_k(), target);
  }

  // int32 top_k = 6;
  if (this->_internal_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(6, this->_internal_top_k(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.BlinkerParam)
  return target;
}

size_t BlinkerParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.BlinkerParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 1;
  total_size += 1UL * this->_internal_prior_box_param_size();
  for (const auto& msg : this->_impl_.prior_box_param_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated float conf_threshold = 4;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_conf_threshold_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // int32 num_classes = 2;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // int32 keep_top_k = 5;
  if (this->_internal_keep_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_keep_top_k());
  }

  // int32 top_k = 6;
  if (this->_internal_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_top_k());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData BlinkerParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    BlinkerParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*BlinkerParam::GetClassData() const { return &_class_data_; }


void BlinkerParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<BlinkerParam*>(&to_msg);
  auto& from = static_cast<const BlinkerParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.BlinkerParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.prior_box_param_.MergeFrom(from._impl_.prior_box_param_);
  _this->_impl_.conf_threshold_.MergeFrom(from._impl_.conf_threshold_);
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  if (from._internal_keep_top_k() != 0) {
    _this->_internal_set_keep_top_k(from._internal_keep_top_k());
  }
  if (from._internal_top_k() != 0) {
    _this->_internal_set_top_k(from._internal_top_k());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void BlinkerParam::CopyFrom(const BlinkerParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.BlinkerParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool BlinkerParam::IsInitialized() const {
  return true;
}

void BlinkerParam::InternalSwap(BlinkerParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.prior_box_param_.InternalSwap(&other->_impl_.prior_box_param_);
  _impl_.conf_threshold_.InternalSwap(&other->_impl_.conf_threshold_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(BlinkerParam, _impl_.top_k_)
      + sizeof(BlinkerParam::_impl_.top_k_)
      - PROTOBUF_FIELD_OFFSET(BlinkerParam, _impl_.num_classes_)>(
          reinterpret_cast<char*>(&_impl_.num_classes_),
          reinterpret_cast<char*>(&other->_impl_.num_classes_));
}

::PROTOBUF_NAMESPACE_ID::Metadata BlinkerParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[25]);
}

// ===================================================================

class SegdetParam::_Internal {
 public:
};

SegdetParam::SegdetParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.SegdetParam)
}
SegdetParam::SegdetParam(const SegdetParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  SegdetParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.prior_box_param_){from._impl_.prior_box_param_}
    , decltype(_impl_.conf_threshold_){from._impl_.conf_threshold_}
    , decltype(_impl_.num_classes_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.keep_top_k_){}
    , decltype(_impl_.top_k_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.num_classes_, &from._impl_.num_classes_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.top_k_) -
    reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.top_k_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.SegdetParam)
}

inline void SegdetParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.prior_box_param_){arena}
    , decltype(_impl_.conf_threshold_){arena}
    , decltype(_impl_.num_classes_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.keep_top_k_){0}
    , decltype(_impl_.top_k_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

SegdetParam::~SegdetParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.SegdetParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void SegdetParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.prior_box_param_.~RepeatedPtrField();
  _impl_.conf_threshold_.~RepeatedField();
}

void SegdetParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void SegdetParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.SegdetParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.prior_box_param_.Clear();
  _impl_.conf_threshold_.Clear();
  ::memset(&_impl_.num_classes_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.top_k_) -
      reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.top_k_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SegdetParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_prior_box_param(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // int32 num_classes = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float conf_threshold = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_conf_threshold(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 37) {
          _internal_add_conf_threshold(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 keep_top_k = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _impl_.keep_top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 top_k = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.top_k_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* SegdetParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.SegdetParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_prior_box_param_size()); i < n; i++) {
    const auto& repfield = this->_internal_prior_box_param(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  // int32 num_classes = 2;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_num_classes(), target);
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_nms_threshold(), target);
  }

  // repeated float conf_threshold = 4;
  if (this->_internal_conf_threshold_size() > 0) {
    target = stream->WriteFixedPacked(4, _internal_conf_threshold(), target);
  }

  // int32 keep_top_k = 5;
  if (this->_internal_keep_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(5, this->_internal_keep_top_k(), target);
  }

  // int32 top_k = 6;
  if (this->_internal_top_k() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(6, this->_internal_top_k(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.SegdetParam)
  return target;
}

size_t SegdetParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.SegdetParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.PriorBoxParam prior_box_param = 1;
  total_size += 1UL * this->_internal_prior_box_param_size();
  for (const auto& msg : this->_impl_.prior_box_param_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated float conf_threshold = 4;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_conf_threshold_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // int32 num_classes = 2;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // int32 keep_top_k = 5;
  if (this->_internal_keep_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_keep_top_k());
  }

  // int32 top_k = 6;
  if (this->_internal_top_k() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_top_k());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData SegdetParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    SegdetParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SegdetParam::GetClassData() const { return &_class_data_; }


void SegdetParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<SegdetParam*>(&to_msg);
  auto& from = static_cast<const SegdetParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.SegdetParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.prior_box_param_.MergeFrom(from._impl_.prior_box_param_);
  _this->_impl_.conf_threshold_.MergeFrom(from._impl_.conf_threshold_);
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  if (from._internal_keep_top_k() != 0) {
    _this->_internal_set_keep_top_k(from._internal_keep_top_k());
  }
  if (from._internal_top_k() != 0) {
    _this->_internal_set_top_k(from._internal_top_k());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void SegdetParam::CopyFrom(const SegdetParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.SegdetParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SegdetParam::IsInitialized() const {
  return true;
}

void SegdetParam::InternalSwap(SegdetParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.prior_box_param_.InternalSwap(&other->_impl_.prior_box_param_);
  _impl_.conf_threshold_.InternalSwap(&other->_impl_.conf_threshold_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(SegdetParam, _impl_.top_k_)
      + sizeof(SegdetParam::_impl_.top_k_)
      - PROTOBUF_FIELD_OFFSET(SegdetParam, _impl_.num_classes_)>(
          reinterpret_cast<char*>(&_impl_.num_classes_),
          reinterpret_cast<char*>(&other->_impl_.num_classes_));
}

::PROTOBUF_NAMESPACE_ID::Metadata SegdetParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[26]);
}

// ===================================================================

class FaceQuality5ptParam::_Internal {
 public:
};

FaceQuality5ptParam::FaceQuality5ptParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.FaceQuality5ptParam)
}
FaceQuality5ptParam::FaceQuality5ptParam(const FaceQuality5ptParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  FaceQuality5ptParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.quality_layer_name_){}
    , decltype(_impl_.point_layer_name_){}
    , decltype(_impl_.use_day_night_mode_){}
    , decltype(_impl_.original_quality_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.quality_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.quality_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_quality_layer_name().empty()) {
    _this->_impl_.quality_layer_name_.Set(from._internal_quality_layer_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.point_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.point_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_point_layer_name().empty()) {
    _this->_impl_.point_layer_name_.Set(from._internal_point_layer_name(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.use_day_night_mode_, &from._impl_.use_day_night_mode_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.original_quality_) -
    reinterpret_cast<char*>(&_impl_.use_day_night_mode_)) + sizeof(_impl_.original_quality_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.FaceQuality5ptParam)
}

inline void FaceQuality5ptParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.quality_layer_name_){}
    , decltype(_impl_.point_layer_name_){}
    , decltype(_impl_.use_day_night_mode_){false}
    , decltype(_impl_.original_quality_){false}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.quality_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.quality_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.point_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.point_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

FaceQuality5ptParam::~FaceQuality5ptParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.FaceQuality5ptParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void FaceQuality5ptParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.quality_layer_name_.Destroy();
  _impl_.point_layer_name_.Destroy();
}

void FaceQuality5ptParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void FaceQuality5ptParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.FaceQuality5ptParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.quality_layer_name_.ClearToEmpty();
  _impl_.point_layer_name_.ClearToEmpty();
  ::memset(&_impl_.use_day_night_mode_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.original_quality_) -
      reinterpret_cast<char*>(&_impl_.use_day_night_mode_)) + sizeof(_impl_.original_quality_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* FaceQuality5ptParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // bool use_day_night_mode = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.use_day_night_mode_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool original_quality = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.original_quality_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string quality_layer_name = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_quality_layer_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.FaceQuality5ptParam.quality_layer_name"));
        } else
          goto handle_unusual;
        continue;
      // string point_layer_name = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          auto str = _internal_mutable_point_layer_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.FaceQuality5ptParam.point_layer_name"));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* FaceQuality5ptParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.FaceQuality5ptParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // bool use_day_night_mode = 1;
  if (this->_internal_use_day_night_mode() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(1, this->_internal_use_day_night_mode(), target);
  }

  // bool original_quality = 2;
  if (this->_internal_original_quality() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(2, this->_internal_original_quality(), target);
  }

  // string quality_layer_name = 3;
  if (!this->_internal_quality_layer_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_quality_layer_name().data(), static_cast<int>(this->_internal_quality_layer_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.FaceQuality5ptParam.quality_layer_name");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_quality_layer_name(), target);
  }

  // string point_layer_name = 4;
  if (!this->_internal_point_layer_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_point_layer_name().data(), static_cast<int>(this->_internal_point_layer_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.FaceQuality5ptParam.point_layer_name");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_point_layer_name(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.FaceQuality5ptParam)
  return target;
}

size_t FaceQuality5ptParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.FaceQuality5ptParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string quality_layer_name = 3;
  if (!this->_internal_quality_layer_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_quality_layer_name());
  }

  // string point_layer_name = 4;
  if (!this->_internal_point_layer_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_point_layer_name());
  }

  // bool use_day_night_mode = 1;
  if (this->_internal_use_day_night_mode() != 0) {
    total_size += 1 + 1;
  }

  // bool original_quality = 2;
  if (this->_internal_original_quality() != 0) {
    total_size += 1 + 1;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData FaceQuality5ptParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    FaceQuality5ptParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*FaceQuality5ptParam::GetClassData() const { return &_class_data_; }


void FaceQuality5ptParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<FaceQuality5ptParam*>(&to_msg);
  auto& from = static_cast<const FaceQuality5ptParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.FaceQuality5ptParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_quality_layer_name().empty()) {
    _this->_internal_set_quality_layer_name(from._internal_quality_layer_name());
  }
  if (!from._internal_point_layer_name().empty()) {
    _this->_internal_set_point_layer_name(from._internal_point_layer_name());
  }
  if (from._internal_use_day_night_mode() != 0) {
    _this->_internal_set_use_day_night_mode(from._internal_use_day_night_mode());
  }
  if (from._internal_original_quality() != 0) {
    _this->_internal_set_original_quality(from._internal_original_quality());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void FaceQuality5ptParam::CopyFrom(const FaceQuality5ptParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.FaceQuality5ptParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool FaceQuality5ptParam::IsInitialized() const {
  return true;
}

void FaceQuality5ptParam::InternalSwap(FaceQuality5ptParam* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.quality_layer_name_, lhs_arena,
      &other->_impl_.quality_layer_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.point_layer_name_, lhs_arena,
      &other->_impl_.point_layer_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(FaceQuality5ptParam, _impl_.original_quality_)
      + sizeof(FaceQuality5ptParam::_impl_.original_quality_)
      - PROTOBUF_FIELD_OFFSET(FaceQuality5ptParam, _impl_.use_day_night_mode_)>(
          reinterpret_cast<char*>(&_impl_.use_day_night_mode_),
          reinterpret_cast<char*>(&other->_impl_.use_day_night_mode_));
}

::PROTOBUF_NAMESPACE_ID::Metadata FaceQuality5ptParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[27]);
}

// ===================================================================

class RetinaFaceParam_OutputAnchorInfo::_Internal {
 public:
};

RetinaFaceParam_OutputAnchorInfo::RetinaFaceParam_OutputAnchorInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.RetinaFaceParam.OutputAnchorInfo)
}
RetinaFaceParam_OutputAnchorInfo::RetinaFaceParam_OutputAnchorInfo(const RetinaFaceParam_OutputAnchorInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  RetinaFaceParam_OutputAnchorInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){}
    , decltype(_impl_.index_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.type_, &from._impl_.type_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.index_) -
    reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.index_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.RetinaFaceParam.OutputAnchorInfo)
}

inline void RetinaFaceParam_OutputAnchorInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.type_){0}
    , decltype(_impl_.index_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

RetinaFaceParam_OutputAnchorInfo::~RetinaFaceParam_OutputAnchorInfo() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.RetinaFaceParam.OutputAnchorInfo)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void RetinaFaceParam_OutputAnchorInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void RetinaFaceParam_OutputAnchorInfo::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void RetinaFaceParam_OutputAnchorInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.RetinaFaceParam.OutputAnchorInfo)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.type_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.index_) -
      reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.index_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* RetinaFaceParam_OutputAnchorInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.RetinaFaceParam.AnchorType type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_type(static_cast<::vitis::ai::proto::RetinaFaceParam_AnchorType>(val));
        } else
          goto handle_unusual;
        continue;
      // int32 index = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.index_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* RetinaFaceParam_OutputAnchorInfo::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.RetinaFaceParam.OutputAnchorInfo)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.RetinaFaceParam.AnchorType type = 1;
  if (this->_internal_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      1, this->_internal_type(), target);
  }

  // int32 index = 2;
  if (this->_internal_index() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_index(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.RetinaFaceParam.OutputAnchorInfo)
  return target;
}

size_t RetinaFaceParam_OutputAnchorInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.RetinaFaceParam.OutputAnchorInfo)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .vitis.ai.proto.RetinaFaceParam.AnchorType type = 1;
  if (this->_internal_type() != 0) {
    total_size += 1 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_type());
  }

  // int32 index = 2;
  if (this->_internal_index() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_index());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RetinaFaceParam_OutputAnchorInfo::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    RetinaFaceParam_OutputAnchorInfo::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RetinaFaceParam_OutputAnchorInfo::GetClassData() const { return &_class_data_; }


void RetinaFaceParam_OutputAnchorInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<RetinaFaceParam_OutputAnchorInfo*>(&to_msg);
  auto& from = static_cast<const RetinaFaceParam_OutputAnchorInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.RetinaFaceParam.OutputAnchorInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_type() != 0) {
    _this->_internal_set_type(from._internal_type());
  }
  if (from._internal_index() != 0) {
    _this->_internal_set_index(from._internal_index());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void RetinaFaceParam_OutputAnchorInfo::CopyFrom(const RetinaFaceParam_OutputAnchorInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.RetinaFaceParam.OutputAnchorInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RetinaFaceParam_OutputAnchorInfo::IsInitialized() const {
  return true;
}

void RetinaFaceParam_OutputAnchorInfo::InternalSwap(RetinaFaceParam_OutputAnchorInfo* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(RetinaFaceParam_OutputAnchorInfo, _impl_.index_)
      + sizeof(RetinaFaceParam_OutputAnchorInfo::_impl_.index_)
      - PROTOBUF_FIELD_OFFSET(RetinaFaceParam_OutputAnchorInfo, _impl_.type_)>(
          reinterpret_cast<char*>(&_impl_.type_),
          reinterpret_cast<char*>(&other->_impl_.type_));
}

::PROTOBUF_NAMESPACE_ID::Metadata RetinaFaceParam_OutputAnchorInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[28]);
}

// ===================================================================

class RetinaFaceParam_OutputInfo::_Internal {
 public:
  static const ::vitis::ai::proto::RetinaFaceParam_OutputAnchorInfo& output_anchor_info(const RetinaFaceParam_OutputInfo* msg);
};

const ::vitis::ai::proto::RetinaFaceParam_OutputAnchorInfo&
RetinaFaceParam_OutputInfo::_Internal::output_anchor_info(const RetinaFaceParam_OutputInfo* msg) {
  return *msg->_impl_.output_anchor_info_;
}
RetinaFaceParam_OutputInfo::RetinaFaceParam_OutputInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.RetinaFaceParam.OutputInfo)
}
RetinaFaceParam_OutputInfo::RetinaFaceParam_OutputInfo(const RetinaFaceParam_OutputInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  RetinaFaceParam_OutputInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.output_anchor_info_){nullptr}
    , decltype(_impl_.type_){}
    , decltype(_impl_.stride_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  if (from._internal_has_output_anchor_info()) {
    _this->_impl_.output_anchor_info_ = new ::vitis::ai::proto::RetinaFaceParam_OutputAnchorInfo(*from._impl_.output_anchor_info_);
  }
  ::memcpy(&_impl_.type_, &from._impl_.type_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.stride_) -
    reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.stride_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.RetinaFaceParam.OutputInfo)
}

inline void RetinaFaceParam_OutputInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.output_anchor_info_){nullptr}
    , decltype(_impl_.type_){0}
    , decltype(_impl_.stride_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

RetinaFaceParam_OutputInfo::~RetinaFaceParam_OutputInfo() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.RetinaFaceParam.OutputInfo)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void RetinaFaceParam_OutputInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.name_.Destroy();
  if (this != internal_default_instance()) delete _impl_.output_anchor_info_;
}

void RetinaFaceParam_OutputInfo::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void RetinaFaceParam_OutputInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.RetinaFaceParam.OutputInfo)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.name_.ClearToEmpty();
  if (GetArenaForAllocation() == nullptr && _impl_.output_anchor_info_ != nullptr) {
    delete _impl_.output_anchor_info_;
  }
  _impl_.output_anchor_info_ = nullptr;
  ::memset(&_impl_.type_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.stride_) -
      reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.stride_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* RetinaFaceParam_OutputInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.RetinaFaceParam.OutputType type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_type(static_cast<::vitis::ai::proto::RetinaFaceParam_OutputType>(val));
        } else
          goto handle_unusual;
        continue;
      // int32 stride = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.stride_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string name = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.RetinaFaceParam.OutputInfo.name"));
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.RetinaFaceParam.OutputAnchorInfo output_anchor_info = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_output_anchor_info(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* RetinaFaceParam_OutputInfo::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.RetinaFaceParam.OutputInfo)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.RetinaFaceParam.OutputType type = 1;
  if (this->_internal_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      1, this->_internal_type(), target);
  }

  // int32 stride = 2;
  if (this->_internal_stride() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_stride(), target);
  }

  // string name = 3;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.RetinaFaceParam.OutputInfo.name");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_name(), target);
  }

  // .vitis.ai.proto.RetinaFaceParam.OutputAnchorInfo output_anchor_info = 4;
  if (this->_internal_has_output_anchor_info()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, _Internal::output_anchor_info(this),
        _Internal::output_anchor_info(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.RetinaFaceParam.OutputInfo)
  return target;
}

size_t RetinaFaceParam_OutputInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.RetinaFaceParam.OutputInfo)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string name = 3;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // .vitis.ai.proto.RetinaFaceParam.OutputAnchorInfo output_anchor_info = 4;
  if (this->_internal_has_output_anchor_info()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.output_anchor_info_);
  }

  // .vitis.ai.proto.RetinaFaceParam.OutputType type = 1;
  if (this->_internal_type() != 0) {
    total_size += 1 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_type());
  }

  // int32 stride = 2;
  if (this->_internal_stride() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_stride());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RetinaFaceParam_OutputInfo::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    RetinaFaceParam_OutputInfo::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RetinaFaceParam_OutputInfo::GetClassData() const { return &_class_data_; }


void RetinaFaceParam_OutputInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<RetinaFaceParam_OutputInfo*>(&to_msg);
  auto& from = static_cast<const RetinaFaceParam_OutputInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.RetinaFaceParam.OutputInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_name().empty()) {
    _this->_internal_set_name(from._internal_name());
  }
  if (from._internal_has_output_anchor_info()) {
    _this->_internal_mutable_output_anchor_info()->::vitis::ai::proto::RetinaFaceParam_OutputAnchorInfo::MergeFrom(
        from._internal_output_anchor_info());
  }
  if (from._internal_type() != 0) {
    _this->_internal_set_type(from._internal_type());
  }
  if (from._internal_stride() != 0) {
    _this->_internal_set_stride(from._internal_stride());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void RetinaFaceParam_OutputInfo::CopyFrom(const RetinaFaceParam_OutputInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.RetinaFaceParam.OutputInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RetinaFaceParam_OutputInfo::IsInitialized() const {
  return true;
}

void RetinaFaceParam_OutputInfo::InternalSwap(RetinaFaceParam_OutputInfo* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(RetinaFaceParam_OutputInfo, _impl_.stride_)
      + sizeof(RetinaFaceParam_OutputInfo::_impl_.stride_)
      - PROTOBUF_FIELD_OFFSET(RetinaFaceParam_OutputInfo, _impl_.output_anchor_info_)>(
          reinterpret_cast<char*>(&_impl_.output_anchor_info_),
          reinterpret_cast<char*>(&other->_impl_.output_anchor_info_));
}

::PROTOBUF_NAMESPACE_ID::Metadata RetinaFaceParam_OutputInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[29]);
}

// ===================================================================

class RetinaFaceParam_AnchorParam::_Internal {
 public:
};

RetinaFaceParam_AnchorParam::RetinaFaceParam_AnchorParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.RetinaFaceParam.AnchorParam)
}
RetinaFaceParam_AnchorParam::RetinaFaceParam_AnchorParam(const RetinaFaceParam_AnchorParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  RetinaFaceParam_AnchorParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.ratios_){from._impl_.ratios_}
    , decltype(_impl_.scales_){from._impl_.scales_}
    , /*decltype(_impl_._scales_cached_byte_size_)*/{0}
    , decltype(_impl_.stride_){}
    , decltype(_impl_.base_size_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.stride_, &from._impl_.stride_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.base_size_) -
    reinterpret_cast<char*>(&_impl_.stride_)) + sizeof(_impl_.base_size_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.RetinaFaceParam.AnchorParam)
}

inline void RetinaFaceParam_AnchorParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.ratios_){arena}
    , decltype(_impl_.scales_){arena}
    , /*decltype(_impl_._scales_cached_byte_size_)*/{0}
    , decltype(_impl_.stride_){0}
    , decltype(_impl_.base_size_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

RetinaFaceParam_AnchorParam::~RetinaFaceParam_AnchorParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.RetinaFaceParam.AnchorParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void RetinaFaceParam_AnchorParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.ratios_.~RepeatedField();
  _impl_.scales_.~RepeatedField();
}

void RetinaFaceParam_AnchorParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void RetinaFaceParam_AnchorParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.RetinaFaceParam.AnchorParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.ratios_.Clear();
  _impl_.scales_.Clear();
  ::memset(&_impl_.stride_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.base_size_) -
      reinterpret_cast<char*>(&_impl_.stride_)) + sizeof(_impl_.base_size_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* RetinaFaceParam_AnchorParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 stride = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.stride_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 base_size = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.base_size_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated float ratios = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_ratios(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 29) {
          _internal_add_ratios(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 scales = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_scales(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 32) {
          _internal_add_scales(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* RetinaFaceParam_AnchorParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.RetinaFaceParam.AnchorParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 stride = 1;
  if (this->_internal_stride() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_stride(), target);
  }

  // int32 base_size = 2;
  if (this->_internal_base_size() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_base_size(), target);
  }

  // repeated float ratios = 3;
  if (this->_internal_ratios_size() > 0) {
    target = stream->WriteFixedPacked(3, _internal_ratios(), target);
  }

  // repeated int32 scales = 4;
  {
    int byte_size = _impl_._scales_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          4, _internal_scales(), byte_size, target);
    }
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.RetinaFaceParam.AnchorParam)
  return target;
}

size_t RetinaFaceParam_AnchorParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.RetinaFaceParam.AnchorParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float ratios = 3;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_ratios_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated int32 scales = 4;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.scales_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._scales_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // int32 stride = 1;
  if (this->_internal_stride() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_stride());
  }

  // int32 base_size = 2;
  if (this->_internal_base_size() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_base_size());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RetinaFaceParam_AnchorParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    RetinaFaceParam_AnchorParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RetinaFaceParam_AnchorParam::GetClassData() const { return &_class_data_; }


void RetinaFaceParam_AnchorParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<RetinaFaceParam_AnchorParam*>(&to_msg);
  auto& from = static_cast<const RetinaFaceParam_AnchorParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.RetinaFaceParam.AnchorParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.ratios_.MergeFrom(from._impl_.ratios_);
  _this->_impl_.scales_.MergeFrom(from._impl_.scales_);
  if (from._internal_stride() != 0) {
    _this->_internal_set_stride(from._internal_stride());
  }
  if (from._internal_base_size() != 0) {
    _this->_internal_set_base_size(from._internal_base_size());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void RetinaFaceParam_AnchorParam::CopyFrom(const RetinaFaceParam_AnchorParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.RetinaFaceParam.AnchorParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RetinaFaceParam_AnchorParam::IsInitialized() const {
  return true;
}

void RetinaFaceParam_AnchorParam::InternalSwap(RetinaFaceParam_AnchorParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.ratios_.InternalSwap(&other->_impl_.ratios_);
  _impl_.scales_.InternalSwap(&other->_impl_.scales_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(RetinaFaceParam_AnchorParam, _impl_.base_size_)
      + sizeof(RetinaFaceParam_AnchorParam::_impl_.base_size_)
      - PROTOBUF_FIELD_OFFSET(RetinaFaceParam_AnchorParam, _impl_.stride_)>(
          reinterpret_cast<char*>(&_impl_.stride_),
          reinterpret_cast<char*>(&other->_impl_.stride_));
}

::PROTOBUF_NAMESPACE_ID::Metadata RetinaFaceParam_AnchorParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[30]);
}

// ===================================================================

class RetinaFaceParam::_Internal {
 public:
};

RetinaFaceParam::RetinaFaceParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.RetinaFaceParam)
}
RetinaFaceParam::RetinaFaceParam(const RetinaFaceParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  RetinaFaceParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.output_info_){from._impl_.output_info_}
    , decltype(_impl_.anchor_param_){from._impl_.anchor_param_}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.det_threshold_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.nms_threshold_, &from._impl_.nms_threshold_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.det_threshold_) -
    reinterpret_cast<char*>(&_impl_.nms_threshold_)) + sizeof(_impl_.det_threshold_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.RetinaFaceParam)
}

inline void RetinaFaceParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.output_info_){arena}
    , decltype(_impl_.anchor_param_){arena}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.det_threshold_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

RetinaFaceParam::~RetinaFaceParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.RetinaFaceParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void RetinaFaceParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.output_info_.~RepeatedPtrField();
  _impl_.anchor_param_.~RepeatedPtrField();
}

void RetinaFaceParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void RetinaFaceParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.RetinaFaceParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.output_info_.Clear();
  _impl_.anchor_param_.Clear();
  ::memset(&_impl_.nms_threshold_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.det_threshold_) -
      reinterpret_cast<char*>(&_impl_.nms_threshold_)) + sizeof(_impl_.det_threshold_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* RetinaFaceParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.RetinaFaceParam.OutputInfo output_info = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_output_info(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float det_threshold = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.det_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.RetinaFaceParam.AnchorParam anchor_param = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_anchor_param(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* RetinaFaceParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.RetinaFaceParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.RetinaFaceParam.OutputInfo output_info = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_output_info_size()); i < n; i++) {
    const auto& repfield = this->_internal_output_info(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  // float nms_threshold = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_nms_threshold(), target);
  }

  // float det_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_det_threshold = this->_internal_det_threshold();
  uint32_t raw_det_threshold;
  memcpy(&raw_det_threshold, &tmp_det_threshold, sizeof(tmp_det_threshold));
  if (raw_det_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_det_threshold(), target);
  }

  // repeated .vitis.ai.proto.RetinaFaceParam.AnchorParam anchor_param = 4;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_anchor_param_size()); i < n; i++) {
    const auto& repfield = this->_internal_anchor_param(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.RetinaFaceParam)
  return target;
}

size_t RetinaFaceParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.RetinaFaceParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.RetinaFaceParam.OutputInfo output_info = 1;
  total_size += 1UL * this->_internal_output_info_size();
  for (const auto& msg : this->_impl_.output_info_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .vitis.ai.proto.RetinaFaceParam.AnchorParam anchor_param = 4;
  total_size += 1UL * this->_internal_anchor_param_size();
  for (const auto& msg : this->_impl_.anchor_param_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // float nms_threshold = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // float det_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_det_threshold = this->_internal_det_threshold();
  uint32_t raw_det_threshold;
  memcpy(&raw_det_threshold, &tmp_det_threshold, sizeof(tmp_det_threshold));
  if (raw_det_threshold != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RetinaFaceParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    RetinaFaceParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RetinaFaceParam::GetClassData() const { return &_class_data_; }


void RetinaFaceParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<RetinaFaceParam*>(&to_msg);
  auto& from = static_cast<const RetinaFaceParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.RetinaFaceParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.output_info_.MergeFrom(from._impl_.output_info_);
  _this->_impl_.anchor_param_.MergeFrom(from._impl_.anchor_param_);
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_det_threshold = from._internal_det_threshold();
  uint32_t raw_det_threshold;
  memcpy(&raw_det_threshold, &tmp_det_threshold, sizeof(tmp_det_threshold));
  if (raw_det_threshold != 0) {
    _this->_internal_set_det_threshold(from._internal_det_threshold());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void RetinaFaceParam::CopyFrom(const RetinaFaceParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.RetinaFaceParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RetinaFaceParam::IsInitialized() const {
  return true;
}

void RetinaFaceParam::InternalSwap(RetinaFaceParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.output_info_.InternalSwap(&other->_impl_.output_info_);
  _impl_.anchor_param_.InternalSwap(&other->_impl_.anchor_param_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(RetinaFaceParam, _impl_.det_threshold_)
      + sizeof(RetinaFaceParam::_impl_.det_threshold_)
      - PROTOBUF_FIELD_OFFSET(RetinaFaceParam, _impl_.nms_threshold_)>(
          reinterpret_cast<char*>(&_impl_.nms_threshold_),
          reinterpret_cast<char*>(&other->_impl_.nms_threshold_));
}

::PROTOBUF_NAMESPACE_ID::Metadata RetinaFaceParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[31]);
}

// ===================================================================

class DpuKernelParam::_Internal {
 public:
};

DpuKernelParam::DpuKernelParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.DpuKernelParam)
}
DpuKernelParam::DpuKernelParam(const DpuKernelParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  DpuKernelParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.mean_){from._impl_.mean_}
    , decltype(_impl_.scale_){from._impl_.scale_}
    , decltype(_impl_.name_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.DpuKernelParam)
}

inline void DpuKernelParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.mean_){arena}
    , decltype(_impl_.scale_){arena}
    , decltype(_impl_.name_){}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

DpuKernelParam::~DpuKernelParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.DpuKernelParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DpuKernelParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.mean_.~RepeatedField();
  _impl_.scale_.~RepeatedField();
  _impl_.name_.Destroy();
}

void DpuKernelParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DpuKernelParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.DpuKernelParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.mean_.Clear();
  _impl_.scale_.Clear();
  _impl_.name_.ClearToEmpty();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* DpuKernelParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.DpuKernelParam.name"));
        } else
          goto handle_unusual;
        continue;
      // repeated float mean = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_mean(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 21) {
          _internal_add_mean(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float scale = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_scale(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 29) {
          _internal_add_scale(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* DpuKernelParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.DpuKernelParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.DpuKernelParam.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // repeated float mean = 2;
  if (this->_internal_mean_size() > 0) {
    target = stream->WriteFixedPacked(2, _internal_mean(), target);
  }

  // repeated float scale = 3;
  if (this->_internal_scale_size() > 0) {
    target = stream->WriteFixedPacked(3, _internal_scale(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.DpuKernelParam)
  return target;
}

size_t DpuKernelParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.DpuKernelParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float mean = 2;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_mean_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float scale = 3;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_scale_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // string name = 1;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData DpuKernelParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    DpuKernelParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*DpuKernelParam::GetClassData() const { return &_class_data_; }


void DpuKernelParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<DpuKernelParam*>(&to_msg);
  auto& from = static_cast<const DpuKernelParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.DpuKernelParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.mean_.MergeFrom(from._impl_.mean_);
  _this->_impl_.scale_.MergeFrom(from._impl_.scale_);
  if (!from._internal_name().empty()) {
    _this->_internal_set_name(from._internal_name());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void DpuKernelParam::CopyFrom(const DpuKernelParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.DpuKernelParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DpuKernelParam::IsInitialized() const {
  return true;
}

void DpuKernelParam::InternalSwap(DpuKernelParam* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.mean_.InternalSwap(&other->_impl_.mean_);
  _impl_.scale_.InternalSwap(&other->_impl_.scale_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata DpuKernelParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[32]);
}

// ===================================================================

class TfssdParam_OutputInfo::_Internal {
 public:
};

TfssdParam_OutputInfo::TfssdParam_OutputInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.TfssdParam.OutputInfo)
}
TfssdParam_OutputInfo::TfssdParam_OutputInfo(const TfssdParam_OutputInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  TfssdParam_OutputInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.type_){}
    , decltype(_impl_.order_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.type_, &from._impl_.type_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.order_) -
    reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.order_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.TfssdParam.OutputInfo)
}

inline void TfssdParam_OutputInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.type_){0}
    , decltype(_impl_.order_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

TfssdParam_OutputInfo::~TfssdParam_OutputInfo() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.TfssdParam.OutputInfo)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void TfssdParam_OutputInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.name_.Destroy();
}

void TfssdParam_OutputInfo::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void TfssdParam_OutputInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.TfssdParam.OutputInfo)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.name_.ClearToEmpty();
  ::memset(&_impl_.type_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.order_) -
      reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.order_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* TfssdParam_OutputInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.TfssdParam.OutputType type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_type(static_cast<::vitis::ai::proto::TfssdParam_OutputType>(val));
        } else
          goto handle_unusual;
        continue;
      // int32 order = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.order_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string name = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.TfssdParam.OutputInfo.name"));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* TfssdParam_OutputInfo::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.TfssdParam.OutputInfo)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.TfssdParam.OutputType type = 1;
  if (this->_internal_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      1, this->_internal_type(), target);
  }

  // int32 order = 2;
  if (this->_internal_order() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_order(), target);
  }

  // string name = 3;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.TfssdParam.OutputInfo.name");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_name(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.TfssdParam.OutputInfo)
  return target;
}

size_t TfssdParam_OutputInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.TfssdParam.OutputInfo)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string name = 3;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // .vitis.ai.proto.TfssdParam.OutputType type = 1;
  if (this->_internal_type() != 0) {
    total_size += 1 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_type());
  }

  // int32 order = 2;
  if (this->_internal_order() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_order());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData TfssdParam_OutputInfo::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    TfssdParam_OutputInfo::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*TfssdParam_OutputInfo::GetClassData() const { return &_class_data_; }


void TfssdParam_OutputInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<TfssdParam_OutputInfo*>(&to_msg);
  auto& from = static_cast<const TfssdParam_OutputInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.TfssdParam.OutputInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_name().empty()) {
    _this->_internal_set_name(from._internal_name());
  }
  if (from._internal_type() != 0) {
    _this->_internal_set_type(from._internal_type());
  }
  if (from._internal_order() != 0) {
    _this->_internal_set_order(from._internal_order());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void TfssdParam_OutputInfo::CopyFrom(const TfssdParam_OutputInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.TfssdParam.OutputInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TfssdParam_OutputInfo::IsInitialized() const {
  return true;
}

void TfssdParam_OutputInfo::InternalSwap(TfssdParam_OutputInfo* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(TfssdParam_OutputInfo, _impl_.order_)
      + sizeof(TfssdParam_OutputInfo::_impl_.order_)
      - PROTOBUF_FIELD_OFFSET(TfssdParam_OutputInfo, _impl_.type_)>(
          reinterpret_cast<char*>(&_impl_.type_),
          reinterpret_cast<char*>(&other->_impl_.type_));
}

::PROTOBUF_NAMESPACE_ID::Metadata TfssdParam_OutputInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[33]);
}

// ===================================================================

class TfssdParam::_Internal {
 public:
};

TfssdParam::TfssdParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.TfssdParam)
}
TfssdParam::TfssdParam(const TfssdParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  TfssdParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.output_info_){from._impl_.output_info_}
    , decltype(_impl_.feature_map_list_){from._impl_.feature_map_list_}
    , /*decltype(_impl_._feature_map_list_cached_byte_size_)*/{0}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.TfssdParam)
}

inline void TfssdParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.output_info_){arena}
    , decltype(_impl_.feature_map_list_){arena}
    , /*decltype(_impl_._feature_map_list_cached_byte_size_)*/{0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

TfssdParam::~TfssdParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.TfssdParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void TfssdParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.output_info_.~RepeatedPtrField();
  _impl_.feature_map_list_.~RepeatedField();
}

void TfssdParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void TfssdParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.TfssdParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.output_info_.Clear();
  _impl_.feature_map_list_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* TfssdParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.TfssdParam.OutputInfo output_info = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_output_info(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated int32 feature_map_list = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_feature_map_list(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 16) {
          _internal_add_feature_map_list(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* TfssdParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.TfssdParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.TfssdParam.OutputInfo output_info = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_output_info_size()); i < n; i++) {
    const auto& repfield = this->_internal_output_info(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  // repeated int32 feature_map_list = 2;
  {
    int byte_size = _impl_._feature_map_list_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          2, _internal_feature_map_list(), byte_size, target);
    }
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.TfssdParam)
  return target;
}

size_t TfssdParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.TfssdParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.TfssdParam.OutputInfo output_info = 1;
  total_size += 1UL * this->_internal_output_info_size();
  for (const auto& msg : this->_impl_.output_info_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated int32 feature_map_list = 2;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.feature_map_list_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._feature_map_list_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData TfssdParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    TfssdParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*TfssdParam::GetClassData() const { return &_class_data_; }


void TfssdParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<TfssdParam*>(&to_msg);
  auto& from = static_cast<const TfssdParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.TfssdParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.output_info_.MergeFrom(from._impl_.output_info_);
  _this->_impl_.feature_map_list_.MergeFrom(from._impl_.feature_map_list_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void TfssdParam::CopyFrom(const TfssdParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.TfssdParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TfssdParam::IsInitialized() const {
  return true;
}

void TfssdParam::InternalSwap(TfssdParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.output_info_.InternalSwap(&other->_impl_.output_info_);
  _impl_.feature_map_list_.InternalSwap(&other->_impl_.feature_map_list_);
}

::PROTOBUF_NAMESPACE_ID::Metadata TfssdParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[34]);
}

// ===================================================================

class PointPillarsNusParam_AnchorInfo_Ranges::_Internal {
 public:
};

PointPillarsNusParam_AnchorInfo_Ranges::PointPillarsNusParam_AnchorInfo_Ranges(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Ranges)
}
PointPillarsNusParam_AnchorInfo_Ranges::PointPillarsNusParam_AnchorInfo_Ranges(const PointPillarsNusParam_AnchorInfo_Ranges& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PointPillarsNusParam_AnchorInfo_Ranges* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.single_range_){from._impl_.single_range_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Ranges)
}

inline void PointPillarsNusParam_AnchorInfo_Ranges::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.single_range_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

PointPillarsNusParam_AnchorInfo_Ranges::~PointPillarsNusParam_AnchorInfo_Ranges() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Ranges)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PointPillarsNusParam_AnchorInfo_Ranges::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.single_range_.~RepeatedField();
}

void PointPillarsNusParam_AnchorInfo_Ranges::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PointPillarsNusParam_AnchorInfo_Ranges::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Ranges)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.single_range_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PointPillarsNusParam_AnchorInfo_Ranges::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated float single_range = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_single_range(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 13) {
          _internal_add_single_range(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PointPillarsNusParam_AnchorInfo_Ranges::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Ranges)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated float single_range = 1;
  if (this->_internal_single_range_size() > 0) {
    target = stream->WriteFixedPacked(1, _internal_single_range(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Ranges)
  return target;
}

size_t PointPillarsNusParam_AnchorInfo_Ranges::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Ranges)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float single_range = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_single_range_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PointPillarsNusParam_AnchorInfo_Ranges::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PointPillarsNusParam_AnchorInfo_Ranges::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PointPillarsNusParam_AnchorInfo_Ranges::GetClassData() const { return &_class_data_; }


void PointPillarsNusParam_AnchorInfo_Ranges::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PointPillarsNusParam_AnchorInfo_Ranges*>(&to_msg);
  auto& from = static_cast<const PointPillarsNusParam_AnchorInfo_Ranges&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Ranges)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.single_range_.MergeFrom(from._impl_.single_range_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PointPillarsNusParam_AnchorInfo_Ranges::CopyFrom(const PointPillarsNusParam_AnchorInfo_Ranges& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Ranges)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PointPillarsNusParam_AnchorInfo_Ranges::IsInitialized() const {
  return true;
}

void PointPillarsNusParam_AnchorInfo_Ranges::InternalSwap(PointPillarsNusParam_AnchorInfo_Ranges* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.single_range_.InternalSwap(&other->_impl_.single_range_);
}

::PROTOBUF_NAMESPACE_ID::Metadata PointPillarsNusParam_AnchorInfo_Ranges::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[35]);
}

// ===================================================================

class PointPillarsNusParam_AnchorInfo_Sizes::_Internal {
 public:
};

PointPillarsNusParam_AnchorInfo_Sizes::PointPillarsNusParam_AnchorInfo_Sizes(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Sizes)
}
PointPillarsNusParam_AnchorInfo_Sizes::PointPillarsNusParam_AnchorInfo_Sizes(const PointPillarsNusParam_AnchorInfo_Sizes& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PointPillarsNusParam_AnchorInfo_Sizes* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.single_size_){from._impl_.single_size_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Sizes)
}

inline void PointPillarsNusParam_AnchorInfo_Sizes::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.single_size_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

PointPillarsNusParam_AnchorInfo_Sizes::~PointPillarsNusParam_AnchorInfo_Sizes() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Sizes)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PointPillarsNusParam_AnchorInfo_Sizes::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.single_size_.~RepeatedField();
}

void PointPillarsNusParam_AnchorInfo_Sizes::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PointPillarsNusParam_AnchorInfo_Sizes::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Sizes)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.single_size_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PointPillarsNusParam_AnchorInfo_Sizes::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated float single_size = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_single_size(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 13) {
          _internal_add_single_size(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PointPillarsNusParam_AnchorInfo_Sizes::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Sizes)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated float single_size = 1;
  if (this->_internal_single_size_size() > 0) {
    target = stream->WriteFixedPacked(1, _internal_single_size(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Sizes)
  return target;
}

size_t PointPillarsNusParam_AnchorInfo_Sizes::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Sizes)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float single_size = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_single_size_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PointPillarsNusParam_AnchorInfo_Sizes::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PointPillarsNusParam_AnchorInfo_Sizes::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PointPillarsNusParam_AnchorInfo_Sizes::GetClassData() const { return &_class_data_; }


void PointPillarsNusParam_AnchorInfo_Sizes::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PointPillarsNusParam_AnchorInfo_Sizes*>(&to_msg);
  auto& from = static_cast<const PointPillarsNusParam_AnchorInfo_Sizes&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Sizes)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.single_size_.MergeFrom(from._impl_.single_size_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PointPillarsNusParam_AnchorInfo_Sizes::CopyFrom(const PointPillarsNusParam_AnchorInfo_Sizes& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Sizes)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PointPillarsNusParam_AnchorInfo_Sizes::IsInitialized() const {
  return true;
}

void PointPillarsNusParam_AnchorInfo_Sizes::InternalSwap(PointPillarsNusParam_AnchorInfo_Sizes* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.single_size_.InternalSwap(&other->_impl_.single_size_);
}

::PROTOBUF_NAMESPACE_ID::Metadata PointPillarsNusParam_AnchorInfo_Sizes::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[36]);
}

// ===================================================================

class PointPillarsNusParam_AnchorInfo::_Internal {
 public:
};

PointPillarsNusParam_AnchorInfo::PointPillarsNusParam_AnchorInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.PointPillarsNusParam.AnchorInfo)
}
PointPillarsNusParam_AnchorInfo::PointPillarsNusParam_AnchorInfo(const PointPillarsNusParam_AnchorInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PointPillarsNusParam_AnchorInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.ranges_){from._impl_.ranges_}
    , decltype(_impl_.sizes_){from._impl_.sizes_}
    , decltype(_impl_.rotations_){from._impl_.rotations_}
    , decltype(_impl_.custom_value_){from._impl_.custom_value_}
    , decltype(_impl_.align_corner_){}
    , decltype(_impl_.scale_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.align_corner_, &from._impl_.align_corner_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.scale_) -
    reinterpret_cast<char*>(&_impl_.align_corner_)) + sizeof(_impl_.scale_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.PointPillarsNusParam.AnchorInfo)
}

inline void PointPillarsNusParam_AnchorInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.ranges_){arena}
    , decltype(_impl_.sizes_){arena}
    , decltype(_impl_.rotations_){arena}
    , decltype(_impl_.custom_value_){arena}
    , decltype(_impl_.align_corner_){false}
    , decltype(_impl_.scale_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

PointPillarsNusParam_AnchorInfo::~PointPillarsNusParam_AnchorInfo() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.PointPillarsNusParam.AnchorInfo)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PointPillarsNusParam_AnchorInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.ranges_.~RepeatedPtrField();
  _impl_.sizes_.~RepeatedPtrField();
  _impl_.rotations_.~RepeatedField();
  _impl_.custom_value_.~RepeatedField();
}

void PointPillarsNusParam_AnchorInfo::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PointPillarsNusParam_AnchorInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.ranges_.Clear();
  _impl_.sizes_.Clear();
  _impl_.rotations_.Clear();
  _impl_.custom_value_.Clear();
  ::memset(&_impl_.align_corner_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.scale_) -
      reinterpret_cast<char*>(&_impl_.align_corner_)) + sizeof(_impl_.scale_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PointPillarsNusParam_AnchorInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Ranges ranges = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_ranges(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Sizes sizes = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_sizes(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated float rotations = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_rotations(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 29) {
          _internal_add_rotations(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float custom_value = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_custom_value(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 37) {
          _internal_add_custom_value(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // bool align_corner = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _impl_.align_corner_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float scale = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 53)) {
          _impl_.scale_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PointPillarsNusParam_AnchorInfo::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Ranges ranges = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_ranges_size()); i < n; i++) {
    const auto& repfield = this->_internal_ranges(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  // repeated .vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Sizes sizes = 2;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_sizes_size()); i < n; i++) {
    const auto& repfield = this->_internal_sizes(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream);
  }

  // repeated float rotations = 3;
  if (this->_internal_rotations_size() > 0) {
    target = stream->WriteFixedPacked(3, _internal_rotations(), target);
  }

  // repeated float custom_value = 4;
  if (this->_internal_custom_value_size() > 0) {
    target = stream->WriteFixedPacked(4, _internal_custom_value(), target);
  }

  // bool align_corner = 5;
  if (this->_internal_align_corner() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(5, this->_internal_align_corner(), target);
  }

  // float scale = 6;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale = this->_internal_scale();
  uint32_t raw_scale;
  memcpy(&raw_scale, &tmp_scale, sizeof(tmp_scale));
  if (raw_scale != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(6, this->_internal_scale(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.PointPillarsNusParam.AnchorInfo)
  return target;
}

size_t PointPillarsNusParam_AnchorInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Ranges ranges = 1;
  total_size += 1UL * this->_internal_ranges_size();
  for (const auto& msg : this->_impl_.ranges_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .vitis.ai.proto.PointPillarsNusParam.AnchorInfo.Sizes sizes = 2;
  total_size += 1UL * this->_internal_sizes_size();
  for (const auto& msg : this->_impl_.sizes_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated float rotations = 3;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_rotations_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float custom_value = 4;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_custom_value_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // bool align_corner = 5;
  if (this->_internal_align_corner() != 0) {
    total_size += 1 + 1;
  }

  // float scale = 6;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale = this->_internal_scale();
  uint32_t raw_scale;
  memcpy(&raw_scale, &tmp_scale, sizeof(tmp_scale));
  if (raw_scale != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PointPillarsNusParam_AnchorInfo::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PointPillarsNusParam_AnchorInfo::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PointPillarsNusParam_AnchorInfo::GetClassData() const { return &_class_data_; }


void PointPillarsNusParam_AnchorInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PointPillarsNusParam_AnchorInfo*>(&to_msg);
  auto& from = static_cast<const PointPillarsNusParam_AnchorInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.ranges_.MergeFrom(from._impl_.ranges_);
  _this->_impl_.sizes_.MergeFrom(from._impl_.sizes_);
  _this->_impl_.rotations_.MergeFrom(from._impl_.rotations_);
  _this->_impl_.custom_value_.MergeFrom(from._impl_.custom_value_);
  if (from._internal_align_corner() != 0) {
    _this->_internal_set_align_corner(from._internal_align_corner());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale = from._internal_scale();
  uint32_t raw_scale;
  memcpy(&raw_scale, &tmp_scale, sizeof(tmp_scale));
  if (raw_scale != 0) {
    _this->_internal_set_scale(from._internal_scale());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PointPillarsNusParam_AnchorInfo::CopyFrom(const PointPillarsNusParam_AnchorInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.PointPillarsNusParam.AnchorInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PointPillarsNusParam_AnchorInfo::IsInitialized() const {
  return true;
}

void PointPillarsNusParam_AnchorInfo::InternalSwap(PointPillarsNusParam_AnchorInfo* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.ranges_.InternalSwap(&other->_impl_.ranges_);
  _impl_.sizes_.InternalSwap(&other->_impl_.sizes_);
  _impl_.rotations_.InternalSwap(&other->_impl_.rotations_);
  _impl_.custom_value_.InternalSwap(&other->_impl_.custom_value_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PointPillarsNusParam_AnchorInfo, _impl_.scale_)
      + sizeof(PointPillarsNusParam_AnchorInfo::_impl_.scale_)
      - PROTOBUF_FIELD_OFFSET(PointPillarsNusParam_AnchorInfo, _impl_.align_corner_)>(
          reinterpret_cast<char*>(&_impl_.align_corner_),
          reinterpret_cast<char*>(&other->_impl_.align_corner_));
}

::PROTOBUF_NAMESPACE_ID::Metadata PointPillarsNusParam_AnchorInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[37]);
}

// ===================================================================

class PointPillarsNusParam::_Internal {
 public:
  static const ::vitis::ai::proto::PointPillarsNusParam_AnchorInfo& anchor_info(const PointPillarsNusParam* msg);
};

const ::vitis::ai::proto::PointPillarsNusParam_AnchorInfo&
PointPillarsNusParam::_Internal::anchor_info(const PointPillarsNusParam* msg) {
  return *msg->_impl_.anchor_info_;
}
PointPillarsNusParam::PointPillarsNusParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.PointPillarsNusParam)
}
PointPillarsNusParam::PointPillarsNusParam(const PointPillarsNusParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PointPillarsNusParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.point_cloud_range_){from._impl_.point_cloud_range_}
    , decltype(_impl_.featmap_size_){from._impl_.featmap_size_}
    , /*decltype(_impl_._featmap_size_cached_byte_size_)*/{0}
    , decltype(_impl_.score_layer_name_){}
    , decltype(_impl_.bbox_layer_name_){}
    , decltype(_impl_.dir_layer_name_){}
    , decltype(_impl_.anchor_info_){nullptr}
    , decltype(_impl_.in_channels_){}
    , decltype(_impl_.max_points_num_){}
    , decltype(_impl_.max_voxels_num_){}
    , decltype(_impl_.num_classes_){}
    , decltype(_impl_.nms_pre_){}
    , decltype(_impl_.nms_thresh_){}
    , decltype(_impl_.max_num_){}
    , decltype(_impl_.score_thresh_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.score_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.score_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_score_layer_name().empty()) {
    _this->_impl_.score_layer_name_.Set(from._internal_score_layer_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.bbox_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.bbox_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_bbox_layer_name().empty()) {
    _this->_impl_.bbox_layer_name_.Set(from._internal_bbox_layer_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.dir_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.dir_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_dir_layer_name().empty()) {
    _this->_impl_.dir_layer_name_.Set(from._internal_dir_layer_name(), 
      _this->GetArenaForAllocation());
  }
  if (from._internal_has_anchor_info()) {
    _this->_impl_.anchor_info_ = new ::vitis::ai::proto::PointPillarsNusParam_AnchorInfo(*from._impl_.anchor_info_);
  }
  ::memcpy(&_impl_.in_channels_, &from._impl_.in_channels_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.score_thresh_) -
    reinterpret_cast<char*>(&_impl_.in_channels_)) + sizeof(_impl_.score_thresh_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.PointPillarsNusParam)
}

inline void PointPillarsNusParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.point_cloud_range_){arena}
    , decltype(_impl_.featmap_size_){arena}
    , /*decltype(_impl_._featmap_size_cached_byte_size_)*/{0}
    , decltype(_impl_.score_layer_name_){}
    , decltype(_impl_.bbox_layer_name_){}
    , decltype(_impl_.dir_layer_name_){}
    , decltype(_impl_.anchor_info_){nullptr}
    , decltype(_impl_.in_channels_){0}
    , decltype(_impl_.max_points_num_){0}
    , decltype(_impl_.max_voxels_num_){0}
    , decltype(_impl_.num_classes_){0}
    , decltype(_impl_.nms_pre_){0}
    , decltype(_impl_.nms_thresh_){0}
    , decltype(_impl_.max_num_){0}
    , decltype(_impl_.score_thresh_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.score_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.score_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.bbox_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.bbox_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.dir_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.dir_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

PointPillarsNusParam::~PointPillarsNusParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.PointPillarsNusParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PointPillarsNusParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.point_cloud_range_.~RepeatedField();
  _impl_.featmap_size_.~RepeatedField();
  _impl_.score_layer_name_.Destroy();
  _impl_.bbox_layer_name_.Destroy();
  _impl_.dir_layer_name_.Destroy();
  if (this != internal_default_instance()) delete _impl_.anchor_info_;
}

void PointPillarsNusParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PointPillarsNusParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.PointPillarsNusParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.point_cloud_range_.Clear();
  _impl_.featmap_size_.Clear();
  _impl_.score_layer_name_.ClearToEmpty();
  _impl_.bbox_layer_name_.ClearToEmpty();
  _impl_.dir_layer_name_.ClearToEmpty();
  if (GetArenaForAllocation() == nullptr && _impl_.anchor_info_ != nullptr) {
    delete _impl_.anchor_info_;
  }
  _impl_.anchor_info_ = nullptr;
  ::memset(&_impl_.in_channels_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.score_thresh_) -
      reinterpret_cast<char*>(&_impl_.in_channels_)) + sizeof(_impl_.score_thresh_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PointPillarsNusParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated float point_cloud_range = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_point_cloud_range(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 13) {
          _internal_add_point_cloud_range(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 in_channels = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.in_channels_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 max_points_num = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.max_points_num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 max_voxels_num = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _impl_.max_voxels_num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated int32 featmap_size = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_featmap_size(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 40) {
          _internal_add_featmap_size(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.PointPillarsNusParam.AnchorInfo anchor_info = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_anchor_info(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 num_classes = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float nms_pre = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 69)) {
          _impl_.nms_pre_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float nms_thresh = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 77)) {
          _impl_.nms_thresh_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float max_num = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 85)) {
          _impl_.max_num_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float score_thresh = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 93)) {
          _impl_.score_thresh_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // string score_layer_name = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          auto str = _internal_mutable_score_layer_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.PointPillarsNusParam.score_layer_name"));
        } else
          goto handle_unusual;
        continue;
      // string bbox_layer_name = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 106)) {
          auto str = _internal_mutable_bbox_layer_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.PointPillarsNusParam.bbox_layer_name"));
        } else
          goto handle_unusual;
        continue;
      // string dir_layer_name = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          auto str = _internal_mutable_dir_layer_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.PointPillarsNusParam.dir_layer_name"));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PointPillarsNusParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.PointPillarsNusParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated float point_cloud_range = 1;
  if (this->_internal_point_cloud_range_size() > 0) {
    target = stream->WriteFixedPacked(1, _internal_point_cloud_range(), target);
  }

  // int32 in_channels = 2;
  if (this->_internal_in_channels() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_in_channels(), target);
  }

  // int32 max_points_num = 3;
  if (this->_internal_max_points_num() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_max_points_num(), target);
  }

  // int32 max_voxels_num = 4;
  if (this->_internal_max_voxels_num() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(4, this->_internal_max_voxels_num(), target);
  }

  // repeated int32 featmap_size = 5;
  {
    int byte_size = _impl_._featmap_size_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          5, _internal_featmap_size(), byte_size, target);
    }
  }

  // .vitis.ai.proto.PointPillarsNusParam.AnchorInfo anchor_info = 6;
  if (this->_internal_has_anchor_info()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(6, _Internal::anchor_info(this),
        _Internal::anchor_info(this).GetCachedSize(), target, stream);
  }

  // int32 num_classes = 7;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(7, this->_internal_num_classes(), target);
  }

  // float nms_pre = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_pre = this->_internal_nms_pre();
  uint32_t raw_nms_pre;
  memcpy(&raw_nms_pre, &tmp_nms_pre, sizeof(tmp_nms_pre));
  if (raw_nms_pre != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(8, this->_internal_nms_pre(), target);
  }

  // float nms_thresh = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_thresh = this->_internal_nms_thresh();
  uint32_t raw_nms_thresh;
  memcpy(&raw_nms_thresh, &tmp_nms_thresh, sizeof(tmp_nms_thresh));
  if (raw_nms_thresh != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(9, this->_internal_nms_thresh(), target);
  }

  // float max_num = 10;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_num = this->_internal_max_num();
  uint32_t raw_max_num;
  memcpy(&raw_max_num, &tmp_max_num, sizeof(tmp_max_num));
  if (raw_max_num != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(10, this->_internal_max_num(), target);
  }

  // float score_thresh = 11;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score_thresh = this->_internal_score_thresh();
  uint32_t raw_score_thresh;
  memcpy(&raw_score_thresh, &tmp_score_thresh, sizeof(tmp_score_thresh));
  if (raw_score_thresh != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(11, this->_internal_score_thresh(), target);
  }

  // string score_layer_name = 12;
  if (!this->_internal_score_layer_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_score_layer_name().data(), static_cast<int>(this->_internal_score_layer_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.PointPillarsNusParam.score_layer_name");
    target = stream->WriteStringMaybeAliased(
        12, this->_internal_score_layer_name(), target);
  }

  // string bbox_layer_name = 13;
  if (!this->_internal_bbox_layer_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_bbox_layer_name().data(), static_cast<int>(this->_internal_bbox_layer_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.PointPillarsNusParam.bbox_layer_name");
    target = stream->WriteStringMaybeAliased(
        13, this->_internal_bbox_layer_name(), target);
  }

  // string dir_layer_name = 14;
  if (!this->_internal_dir_layer_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_dir_layer_name().data(), static_cast<int>(this->_internal_dir_layer_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.PointPillarsNusParam.dir_layer_name");
    target = stream->WriteStringMaybeAliased(
        14, this->_internal_dir_layer_name(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.PointPillarsNusParam)
  return target;
}

size_t PointPillarsNusParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.PointPillarsNusParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float point_cloud_range = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_point_cloud_range_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated int32 featmap_size = 5;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.featmap_size_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._featmap_size_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // string score_layer_name = 12;
  if (!this->_internal_score_layer_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_score_layer_name());
  }

  // string bbox_layer_name = 13;
  if (!this->_internal_bbox_layer_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_bbox_layer_name());
  }

  // string dir_layer_name = 14;
  if (!this->_internal_dir_layer_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_dir_layer_name());
  }

  // .vitis.ai.proto.PointPillarsNusParam.AnchorInfo anchor_info = 6;
  if (this->_internal_has_anchor_info()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.anchor_info_);
  }

  // int32 in_channels = 2;
  if (this->_internal_in_channels() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_in_channels());
  }

  // int32 max_points_num = 3;
  if (this->_internal_max_points_num() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_max_points_num());
  }

  // int32 max_voxels_num = 4;
  if (this->_internal_max_voxels_num() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_max_voxels_num());
  }

  // int32 num_classes = 7;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  // float nms_pre = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_pre = this->_internal_nms_pre();
  uint32_t raw_nms_pre;
  memcpy(&raw_nms_pre, &tmp_nms_pre, sizeof(tmp_nms_pre));
  if (raw_nms_pre != 0) {
    total_size += 1 + 4;
  }

  // float nms_thresh = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_thresh = this->_internal_nms_thresh();
  uint32_t raw_nms_thresh;
  memcpy(&raw_nms_thresh, &tmp_nms_thresh, sizeof(tmp_nms_thresh));
  if (raw_nms_thresh != 0) {
    total_size += 1 + 4;
  }

  // float max_num = 10;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_num = this->_internal_max_num();
  uint32_t raw_max_num;
  memcpy(&raw_max_num, &tmp_max_num, sizeof(tmp_max_num));
  if (raw_max_num != 0) {
    total_size += 1 + 4;
  }

  // float score_thresh = 11;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score_thresh = this->_internal_score_thresh();
  uint32_t raw_score_thresh;
  memcpy(&raw_score_thresh, &tmp_score_thresh, sizeof(tmp_score_thresh));
  if (raw_score_thresh != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PointPillarsNusParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PointPillarsNusParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PointPillarsNusParam::GetClassData() const { return &_class_data_; }


void PointPillarsNusParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PointPillarsNusParam*>(&to_msg);
  auto& from = static_cast<const PointPillarsNusParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.PointPillarsNusParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.point_cloud_range_.MergeFrom(from._impl_.point_cloud_range_);
  _this->_impl_.featmap_size_.MergeFrom(from._impl_.featmap_size_);
  if (!from._internal_score_layer_name().empty()) {
    _this->_internal_set_score_layer_name(from._internal_score_layer_name());
  }
  if (!from._internal_bbox_layer_name().empty()) {
    _this->_internal_set_bbox_layer_name(from._internal_bbox_layer_name());
  }
  if (!from._internal_dir_layer_name().empty()) {
    _this->_internal_set_dir_layer_name(from._internal_dir_layer_name());
  }
  if (from._internal_has_anchor_info()) {
    _this->_internal_mutable_anchor_info()->::vitis::ai::proto::PointPillarsNusParam_AnchorInfo::MergeFrom(
        from._internal_anchor_info());
  }
  if (from._internal_in_channels() != 0) {
    _this->_internal_set_in_channels(from._internal_in_channels());
  }
  if (from._internal_max_points_num() != 0) {
    _this->_internal_set_max_points_num(from._internal_max_points_num());
  }
  if (from._internal_max_voxels_num() != 0) {
    _this->_internal_set_max_voxels_num(from._internal_max_voxels_num());
  }
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_pre = from._internal_nms_pre();
  uint32_t raw_nms_pre;
  memcpy(&raw_nms_pre, &tmp_nms_pre, sizeof(tmp_nms_pre));
  if (raw_nms_pre != 0) {
    _this->_internal_set_nms_pre(from._internal_nms_pre());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_thresh = from._internal_nms_thresh();
  uint32_t raw_nms_thresh;
  memcpy(&raw_nms_thresh, &tmp_nms_thresh, sizeof(tmp_nms_thresh));
  if (raw_nms_thresh != 0) {
    _this->_internal_set_nms_thresh(from._internal_nms_thresh());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_num = from._internal_max_num();
  uint32_t raw_max_num;
  memcpy(&raw_max_num, &tmp_max_num, sizeof(tmp_max_num));
  if (raw_max_num != 0) {
    _this->_internal_set_max_num(from._internal_max_num());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score_thresh = from._internal_score_thresh();
  uint32_t raw_score_thresh;
  memcpy(&raw_score_thresh, &tmp_score_thresh, sizeof(tmp_score_thresh));
  if (raw_score_thresh != 0) {
    _this->_internal_set_score_thresh(from._internal_score_thresh());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PointPillarsNusParam::CopyFrom(const PointPillarsNusParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.PointPillarsNusParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PointPillarsNusParam::IsInitialized() const {
  return true;
}

void PointPillarsNusParam::InternalSwap(PointPillarsNusParam* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.point_cloud_range_.InternalSwap(&other->_impl_.point_cloud_range_);
  _impl_.featmap_size_.InternalSwap(&other->_impl_.featmap_size_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.score_layer_name_, lhs_arena,
      &other->_impl_.score_layer_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.bbox_layer_name_, lhs_arena,
      &other->_impl_.bbox_layer_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.dir_layer_name_, lhs_arena,
      &other->_impl_.dir_layer_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PointPillarsNusParam, _impl_.score_thresh_)
      + sizeof(PointPillarsNusParam::_impl_.score_thresh_)
      - PROTOBUF_FIELD_OFFSET(PointPillarsNusParam, _impl_.anchor_info_)>(
          reinterpret_cast<char*>(&_impl_.anchor_info_),
          reinterpret_cast<char*>(&other->_impl_.anchor_info_));
}

::PROTOBUF_NAMESPACE_ID::Metadata PointPillarsNusParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[38]);
}

// ===================================================================

class Segmentation3DParam::_Internal {
 public:
};

Segmentation3DParam::Segmentation3DParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.Segmentation3DParam)
}
Segmentation3DParam::Segmentation3DParam(const Segmentation3DParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Segmentation3DParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.enable_knn_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _this->_impl_.enable_knn_ = from._impl_.enable_knn_;
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.Segmentation3DParam)
}

inline void Segmentation3DParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.enable_knn_){false}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

Segmentation3DParam::~Segmentation3DParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.Segmentation3DParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Segmentation3DParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Segmentation3DParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Segmentation3DParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.Segmentation3DParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.enable_knn_ = false;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Segmentation3DParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // bool enable_knn = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.enable_knn_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Segmentation3DParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.Segmentation3DParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // bool enable_knn = 1;
  if (this->_internal_enable_knn() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(1, this->_internal_enable_knn(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.Segmentation3DParam)
  return target;
}

size_t Segmentation3DParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.Segmentation3DParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // bool enable_knn = 1;
  if (this->_internal_enable_knn() != 0) {
    total_size += 1 + 1;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Segmentation3DParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Segmentation3DParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Segmentation3DParam::GetClassData() const { return &_class_data_; }


void Segmentation3DParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Segmentation3DParam*>(&to_msg);
  auto& from = static_cast<const Segmentation3DParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.Segmentation3DParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_enable_knn() != 0) {
    _this->_internal_set_enable_knn(from._internal_enable_knn());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Segmentation3DParam::CopyFrom(const Segmentation3DParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.Segmentation3DParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Segmentation3DParam::IsInitialized() const {
  return true;
}

void Segmentation3DParam::InternalSwap(Segmentation3DParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.enable_knn_, other->_impl_.enable_knn_);
}

::PROTOBUF_NAMESPACE_ID::Metadata Segmentation3DParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[39]);
}

// ===================================================================

class YoloV5Param::_Internal {
 public:
  static const ::vitis::ai::proto::YoloV3Param& yolo_param(const YoloV5Param* msg);
};

const ::vitis::ai::proto::YoloV3Param&
YoloV5Param::_Internal::yolo_param(const YoloV5Param* msg) {
  return *msg->_impl_.yolo_param_;
}
YoloV5Param::YoloV5Param(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.YoloV5Param)
}
YoloV5Param::YoloV5Param(const YoloV5Param& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  YoloV5Param* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.stride_){from._impl_.stride_}
    , decltype(_impl_.yolo_param_){nullptr}
    , decltype(_impl_.max_boxes_num_){}
    , decltype(_impl_.max_nms_num_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_yolo_param()) {
    _this->_impl_.yolo_param_ = new ::vitis::ai::proto::YoloV3Param(*from._impl_.yolo_param_);
  }
  ::memcpy(&_impl_.max_boxes_num_, &from._impl_.max_boxes_num_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.max_nms_num_) -
    reinterpret_cast<char*>(&_impl_.max_boxes_num_)) + sizeof(_impl_.max_nms_num_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.YoloV5Param)
}

inline void YoloV5Param::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.stride_){arena}
    , decltype(_impl_.yolo_param_){nullptr}
    , decltype(_impl_.max_boxes_num_){0}
    , decltype(_impl_.max_nms_num_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

YoloV5Param::~YoloV5Param() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.YoloV5Param)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void YoloV5Param::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.stride_.~RepeatedField();
  if (this != internal_default_instance()) delete _impl_.yolo_param_;
}

void YoloV5Param::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void YoloV5Param::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.YoloV5Param)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.stride_.Clear();
  if (GetArenaForAllocation() == nullptr && _impl_.yolo_param_ != nullptr) {
    delete _impl_.yolo_param_;
  }
  _impl_.yolo_param_ = nullptr;
  ::memset(&_impl_.max_boxes_num_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.max_nms_num_) -
      reinterpret_cast<char*>(&_impl_.max_boxes_num_)) + sizeof(_impl_.max_nms_num_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* YoloV5Param::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.YoloV3Param yolo_param = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_yolo_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated float stride = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_stride(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 21) {
          _internal_add_stride(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float max_boxes_num = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.max_boxes_num_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float max_nms_num = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          _impl_.max_nms_num_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* YoloV5Param::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.YoloV5Param)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.YoloV3Param yolo_param = 1;
  if (this->_internal_has_yolo_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::yolo_param(this),
        _Internal::yolo_param(this).GetCachedSize(), target, stream);
  }

  // repeated float stride = 2;
  if (this->_internal_stride_size() > 0) {
    target = stream->WriteFixedPacked(2, _internal_stride(), target);
  }

  // float max_boxes_num = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_boxes_num = this->_internal_max_boxes_num();
  uint32_t raw_max_boxes_num;
  memcpy(&raw_max_boxes_num, &tmp_max_boxes_num, sizeof(tmp_max_boxes_num));
  if (raw_max_boxes_num != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_max_boxes_num(), target);
  }

  // float max_nms_num = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_nms_num = this->_internal_max_nms_num();
  uint32_t raw_max_nms_num;
  memcpy(&raw_max_nms_num, &tmp_max_nms_num, sizeof(tmp_max_nms_num));
  if (raw_max_nms_num != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(4, this->_internal_max_nms_num(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.YoloV5Param)
  return target;
}

size_t YoloV5Param::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.YoloV5Param)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float stride = 2;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_stride_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // .vitis.ai.proto.YoloV3Param yolo_param = 1;
  if (this->_internal_has_yolo_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.yolo_param_);
  }

  // float max_boxes_num = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_boxes_num = this->_internal_max_boxes_num();
  uint32_t raw_max_boxes_num;
  memcpy(&raw_max_boxes_num, &tmp_max_boxes_num, sizeof(tmp_max_boxes_num));
  if (raw_max_boxes_num != 0) {
    total_size += 1 + 4;
  }

  // float max_nms_num = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_nms_num = this->_internal_max_nms_num();
  uint32_t raw_max_nms_num;
  memcpy(&raw_max_nms_num, &tmp_max_nms_num, sizeof(tmp_max_nms_num));
  if (raw_max_nms_num != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData YoloV5Param::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    YoloV5Param::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*YoloV5Param::GetClassData() const { return &_class_data_; }


void YoloV5Param::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<YoloV5Param*>(&to_msg);
  auto& from = static_cast<const YoloV5Param&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.YoloV5Param)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.stride_.MergeFrom(from._impl_.stride_);
  if (from._internal_has_yolo_param()) {
    _this->_internal_mutable_yolo_param()->::vitis::ai::proto::YoloV3Param::MergeFrom(
        from._internal_yolo_param());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_boxes_num = from._internal_max_boxes_num();
  uint32_t raw_max_boxes_num;
  memcpy(&raw_max_boxes_num, &tmp_max_boxes_num, sizeof(tmp_max_boxes_num));
  if (raw_max_boxes_num != 0) {
    _this->_internal_set_max_boxes_num(from._internal_max_boxes_num());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_nms_num = from._internal_max_nms_num();
  uint32_t raw_max_nms_num;
  memcpy(&raw_max_nms_num, &tmp_max_nms_num, sizeof(tmp_max_nms_num));
  if (raw_max_nms_num != 0) {
    _this->_internal_set_max_nms_num(from._internal_max_nms_num());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void YoloV5Param::CopyFrom(const YoloV5Param& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.YoloV5Param)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool YoloV5Param::IsInitialized() const {
  return true;
}

void YoloV5Param::InternalSwap(YoloV5Param* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.stride_.InternalSwap(&other->_impl_.stride_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(YoloV5Param, _impl_.max_nms_num_)
      + sizeof(YoloV5Param::_impl_.max_nms_num_)
      - PROTOBUF_FIELD_OFFSET(YoloV5Param, _impl_.yolo_param_)>(
          reinterpret_cast<char*>(&_impl_.yolo_param_),
          reinterpret_cast<char*>(&other->_impl_.yolo_param_));
}

::PROTOBUF_NAMESPACE_ID::Metadata YoloV5Param::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[40]);
}

// ===================================================================

class YoloV6Param::_Internal {
 public:
};

YoloV6Param::YoloV6Param(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.YoloV6Param)
}
YoloV6Param::YoloV6Param(const YoloV6Param& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  YoloV6Param* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.biases_){from._impl_.biases_}
    , decltype(_impl_.bbox_layer_name_){from._impl_.bbox_layer_name_}
    , decltype(_impl_.cls_layer_name_){from._impl_.cls_layer_name_}
    , decltype(_impl_.stride_){from._impl_.stride_}
    , decltype(_impl_.num_classes_){}
    , decltype(_impl_.anchorcnt_){}
    , decltype(_impl_.conf_threshold_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.test_map_){}
    , decltype(_impl_.without_dfl_){}
    , decltype(_impl_.max_boxes_num_){}
    , decltype(_impl_.max_nms_num_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.num_classes_, &from._impl_.num_classes_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.max_nms_num_) -
    reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.max_nms_num_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.YoloV6Param)
}

inline void YoloV6Param::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.biases_){arena}
    , decltype(_impl_.bbox_layer_name_){arena}
    , decltype(_impl_.cls_layer_name_){arena}
    , decltype(_impl_.stride_){arena}
    , decltype(_impl_.num_classes_){0}
    , decltype(_impl_.anchorcnt_){0}
    , decltype(_impl_.conf_threshold_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.test_map_){false}
    , decltype(_impl_.without_dfl_){false}
    , decltype(_impl_.max_boxes_num_){0}
    , decltype(_impl_.max_nms_num_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

YoloV6Param::~YoloV6Param() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.YoloV6Param)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void YoloV6Param::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.biases_.~RepeatedField();
  _impl_.bbox_layer_name_.~RepeatedPtrField();
  _impl_.cls_layer_name_.~RepeatedPtrField();
  _impl_.stride_.~RepeatedField();
}

void YoloV6Param::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void YoloV6Param::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.YoloV6Param)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.biases_.Clear();
  _impl_.bbox_layer_name_.Clear();
  _impl_.cls_layer_name_.Clear();
  _impl_.stride_.Clear();
  ::memset(&_impl_.num_classes_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.max_nms_num_) -
      reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.max_nms_num_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* YoloV6Param::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 num_classes = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 anchorCnt = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.anchorcnt_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float conf_threshold = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.conf_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float biases = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_biases(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 45) {
          _internal_add_biases(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // bool test_mAP = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.test_map_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string bbox_layer_name = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_bbox_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.YoloV6Param.bbox_layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string cls_layer_name = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_cls_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.YoloV6Param.cls_layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated float stride = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_stride(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 77) {
          _internal_add_stride(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float max_boxes_num = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 85)) {
          _impl_.max_boxes_num_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float max_nms_num = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 93)) {
          _impl_.max_nms_num_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // bool without_dfl = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 96)) {
          _impl_.without_dfl_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* YoloV6Param::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.YoloV6Param)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 num_classes = 1;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_num_classes(), target);
  }

  // int32 anchorCnt = 2;
  if (this->_internal_anchorcnt() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_anchorcnt(), target);
  }

  // float conf_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_conf_threshold(), target);
  }

  // float nms_threshold = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(4, this->_internal_nms_threshold(), target);
  }

  // repeated float biases = 5;
  if (this->_internal_biases_size() > 0) {
    target = stream->WriteFixedPacked(5, _internal_biases(), target);
  }

  // bool test_mAP = 6;
  if (this->_internal_test_map() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(6, this->_internal_test_map(), target);
  }

  // repeated string bbox_layer_name = 7;
  for (int i = 0, n = this->_internal_bbox_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_bbox_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.YoloV6Param.bbox_layer_name");
    target = stream->WriteString(7, s, target);
  }

  // repeated string cls_layer_name = 8;
  for (int i = 0, n = this->_internal_cls_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_cls_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.YoloV6Param.cls_layer_name");
    target = stream->WriteString(8, s, target);
  }

  // repeated float stride = 9;
  if (this->_internal_stride_size() > 0) {
    target = stream->WriteFixedPacked(9, _internal_stride(), target);
  }

  // float max_boxes_num = 10;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_boxes_num = this->_internal_max_boxes_num();
  uint32_t raw_max_boxes_num;
  memcpy(&raw_max_boxes_num, &tmp_max_boxes_num, sizeof(tmp_max_boxes_num));
  if (raw_max_boxes_num != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(10, this->_internal_max_boxes_num(), target);
  }

  // float max_nms_num = 11;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_nms_num = this->_internal_max_nms_num();
  uint32_t raw_max_nms_num;
  memcpy(&raw_max_nms_num, &tmp_max_nms_num, sizeof(tmp_max_nms_num));
  if (raw_max_nms_num != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(11, this->_internal_max_nms_num(), target);
  }

  // bool without_dfl = 12;
  if (this->_internal_without_dfl() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(12, this->_internal_without_dfl(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.YoloV6Param)
  return target;
}

size_t YoloV6Param::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.YoloV6Param)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float biases = 5;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_biases_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated string bbox_layer_name = 7;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.bbox_layer_name_.size());
  for (int i = 0, n = _impl_.bbox_layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.bbox_layer_name_.Get(i));
  }

  // repeated string cls_layer_name = 8;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.cls_layer_name_.size());
  for (int i = 0, n = _impl_.cls_layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.cls_layer_name_.Get(i));
  }

  // repeated float stride = 9;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_stride_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // int32 num_classes = 1;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  // int32 anchorCnt = 2;
  if (this->_internal_anchorcnt() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_anchorcnt());
  }

  // float conf_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    total_size += 1 + 4;
  }

  // float nms_threshold = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // bool test_mAP = 6;
  if (this->_internal_test_map() != 0) {
    total_size += 1 + 1;
  }

  // bool without_dfl = 12;
  if (this->_internal_without_dfl() != 0) {
    total_size += 1 + 1;
  }

  // float max_boxes_num = 10;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_boxes_num = this->_internal_max_boxes_num();
  uint32_t raw_max_boxes_num;
  memcpy(&raw_max_boxes_num, &tmp_max_boxes_num, sizeof(tmp_max_boxes_num));
  if (raw_max_boxes_num != 0) {
    total_size += 1 + 4;
  }

  // float max_nms_num = 11;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_nms_num = this->_internal_max_nms_num();
  uint32_t raw_max_nms_num;
  memcpy(&raw_max_nms_num, &tmp_max_nms_num, sizeof(tmp_max_nms_num));
  if (raw_max_nms_num != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData YoloV6Param::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    YoloV6Param::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*YoloV6Param::GetClassData() const { return &_class_data_; }


void YoloV6Param::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<YoloV6Param*>(&to_msg);
  auto& from = static_cast<const YoloV6Param&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.YoloV6Param)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.biases_.MergeFrom(from._impl_.biases_);
  _this->_impl_.bbox_layer_name_.MergeFrom(from._impl_.bbox_layer_name_);
  _this->_impl_.cls_layer_name_.MergeFrom(from._impl_.cls_layer_name_);
  _this->_impl_.stride_.MergeFrom(from._impl_.stride_);
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  if (from._internal_anchorcnt() != 0) {
    _this->_internal_set_anchorcnt(from._internal_anchorcnt());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = from._internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    _this->_internal_set_conf_threshold(from._internal_conf_threshold());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  if (from._internal_test_map() != 0) {
    _this->_internal_set_test_map(from._internal_test_map());
  }
  if (from._internal_without_dfl() != 0) {
    _this->_internal_set_without_dfl(from._internal_without_dfl());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_boxes_num = from._internal_max_boxes_num();
  uint32_t raw_max_boxes_num;
  memcpy(&raw_max_boxes_num, &tmp_max_boxes_num, sizeof(tmp_max_boxes_num));
  if (raw_max_boxes_num != 0) {
    _this->_internal_set_max_boxes_num(from._internal_max_boxes_num());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_nms_num = from._internal_max_nms_num();
  uint32_t raw_max_nms_num;
  memcpy(&raw_max_nms_num, &tmp_max_nms_num, sizeof(tmp_max_nms_num));
  if (raw_max_nms_num != 0) {
    _this->_internal_set_max_nms_num(from._internal_max_nms_num());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void YoloV6Param::CopyFrom(const YoloV6Param& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.YoloV6Param)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool YoloV6Param::IsInitialized() const {
  return true;
}

void YoloV6Param::InternalSwap(YoloV6Param* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.biases_.InternalSwap(&other->_impl_.biases_);
  _impl_.bbox_layer_name_.InternalSwap(&other->_impl_.bbox_layer_name_);
  _impl_.cls_layer_name_.InternalSwap(&other->_impl_.cls_layer_name_);
  _impl_.stride_.InternalSwap(&other->_impl_.stride_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(YoloV6Param, _impl_.max_nms_num_)
      + sizeof(YoloV6Param::_impl_.max_nms_num_)
      - PROTOBUF_FIELD_OFFSET(YoloV6Param, _impl_.num_classes_)>(
          reinterpret_cast<char*>(&_impl_.num_classes_),
          reinterpret_cast<char*>(&other->_impl_.num_classes_));
}

::PROTOBUF_NAMESPACE_ID::Metadata YoloV6Param::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[41]);
}

// ===================================================================

class YoloV7Param::_Internal {
 public:
};

YoloV7Param::YoloV7Param(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.YoloV7Param)
}
YoloV7Param::YoloV7Param(const YoloV7Param& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  YoloV7Param* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.detect_layer_name_){from._impl_.detect_layer_name_}
    , decltype(_impl_.biases_){from._impl_.biases_}
    , decltype(_impl_.conf_thresh_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.num_classes_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.conf_thresh_, &from._impl_.conf_thresh_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.num_classes_) -
    reinterpret_cast<char*>(&_impl_.conf_thresh_)) + sizeof(_impl_.num_classes_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.YoloV7Param)
}

inline void YoloV7Param::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.detect_layer_name_){arena}
    , decltype(_impl_.biases_){arena}
    , decltype(_impl_.conf_thresh_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.num_classes_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

YoloV7Param::~YoloV7Param() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.YoloV7Param)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void YoloV7Param::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.detect_layer_name_.~RepeatedPtrField();
  _impl_.biases_.~RepeatedField();
}

void YoloV7Param::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void YoloV7Param::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.YoloV7Param)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.detect_layer_name_.Clear();
  _impl_.biases_.Clear();
  ::memset(&_impl_.conf_thresh_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.num_classes_) -
      reinterpret_cast<char*>(&_impl_.conf_thresh_)) + sizeof(_impl_.num_classes_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* YoloV7Param::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float conf_thresh = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _impl_.conf_thresh_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 num_classes = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string detect_layer_name = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_detect_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.YoloV7Param.detect_layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated float biases = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_biases(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 45) {
          _internal_add_biases(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* YoloV7Param::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.YoloV7Param)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float conf_thresh = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_thresh = this->_internal_conf_thresh();
  uint32_t raw_conf_thresh;
  memcpy(&raw_conf_thresh, &tmp_conf_thresh, sizeof(tmp_conf_thresh));
  if (raw_conf_thresh != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(1, this->_internal_conf_thresh(), target);
  }

  // float nms_threshold = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_nms_threshold(), target);
  }

  // int32 num_classes = 3;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_num_classes(), target);
  }

  // repeated string detect_layer_name = 4;
  for (int i = 0, n = this->_internal_detect_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_detect_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.YoloV7Param.detect_layer_name");
    target = stream->WriteString(4, s, target);
  }

  // repeated float biases = 5;
  if (this->_internal_biases_size() > 0) {
    target = stream->WriteFixedPacked(5, _internal_biases(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.YoloV7Param)
  return target;
}

size_t YoloV7Param::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.YoloV7Param)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string detect_layer_name = 4;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.detect_layer_name_.size());
  for (int i = 0, n = _impl_.detect_layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.detect_layer_name_.Get(i));
  }

  // repeated float biases = 5;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_biases_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // float conf_thresh = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_thresh = this->_internal_conf_thresh();
  uint32_t raw_conf_thresh;
  memcpy(&raw_conf_thresh, &tmp_conf_thresh, sizeof(tmp_conf_thresh));
  if (raw_conf_thresh != 0) {
    total_size += 1 + 4;
  }

  // float nms_threshold = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // int32 num_classes = 3;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData YoloV7Param::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    YoloV7Param::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*YoloV7Param::GetClassData() const { return &_class_data_; }


void YoloV7Param::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<YoloV7Param*>(&to_msg);
  auto& from = static_cast<const YoloV7Param&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.YoloV7Param)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.detect_layer_name_.MergeFrom(from._impl_.detect_layer_name_);
  _this->_impl_.biases_.MergeFrom(from._impl_.biases_);
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_thresh = from._internal_conf_thresh();
  uint32_t raw_conf_thresh;
  memcpy(&raw_conf_thresh, &tmp_conf_thresh, sizeof(tmp_conf_thresh));
  if (raw_conf_thresh != 0) {
    _this->_internal_set_conf_thresh(from._internal_conf_thresh());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void YoloV7Param::CopyFrom(const YoloV7Param& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.YoloV7Param)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool YoloV7Param::IsInitialized() const {
  return true;
}

void YoloV7Param::InternalSwap(YoloV7Param* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.detect_layer_name_.InternalSwap(&other->_impl_.detect_layer_name_);
  _impl_.biases_.InternalSwap(&other->_impl_.biases_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(YoloV7Param, _impl_.num_classes_)
      + sizeof(YoloV7Param::_impl_.num_classes_)
      - PROTOBUF_FIELD_OFFSET(YoloV7Param, _impl_.conf_thresh_)>(
          reinterpret_cast<char*>(&_impl_.conf_thresh_),
          reinterpret_cast<char*>(&other->_impl_.conf_thresh_));
}

::PROTOBUF_NAMESPACE_ID::Metadata YoloV7Param::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[42]);
}

// ===================================================================

class YoloV8Param::_Internal {
 public:
};

YoloV8Param::YoloV8Param(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.YoloV8Param)
}
YoloV8Param::YoloV8Param(const YoloV8Param& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  YoloV8Param* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.detect_layer_name_){from._impl_.detect_layer_name_}
    , decltype(_impl_.stride_){from._impl_.stride_}
    , decltype(_impl_.conf_thresh_){}
    , decltype(_impl_.max_boxes_num_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.max_nms_num_){}
    , decltype(_impl_.num_classes_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.conf_thresh_, &from._impl_.conf_thresh_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.num_classes_) -
    reinterpret_cast<char*>(&_impl_.conf_thresh_)) + sizeof(_impl_.num_classes_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.YoloV8Param)
}

inline void YoloV8Param::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.detect_layer_name_){arena}
    , decltype(_impl_.stride_){arena}
    , decltype(_impl_.conf_thresh_){0}
    , decltype(_impl_.max_boxes_num_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.max_nms_num_){0}
    , decltype(_impl_.num_classes_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

YoloV8Param::~YoloV8Param() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.YoloV8Param)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void YoloV8Param::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.detect_layer_name_.~RepeatedPtrField();
  _impl_.stride_.~RepeatedField();
}

void YoloV8Param::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void YoloV8Param::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.YoloV8Param)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.detect_layer_name_.Clear();
  _impl_.stride_.Clear();
  ::memset(&_impl_.conf_thresh_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.num_classes_) -
      reinterpret_cast<char*>(&_impl_.conf_thresh_)) + sizeof(_impl_.num_classes_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* YoloV8Param::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float conf_thresh = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _impl_.conf_thresh_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float max_boxes_num = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.max_boxes_num_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float max_nms_num = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          _impl_.max_nms_num_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 num_classes = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string detect_layer_name = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_detect_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.YoloV8Param.detect_layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated float stride = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_stride(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 61) {
          _internal_add_stride(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* YoloV8Param::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.YoloV8Param)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float conf_thresh = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_thresh = this->_internal_conf_thresh();
  uint32_t raw_conf_thresh;
  memcpy(&raw_conf_thresh, &tmp_conf_thresh, sizeof(tmp_conf_thresh));
  if (raw_conf_thresh != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(1, this->_internal_conf_thresh(), target);
  }

  // float max_boxes_num = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_boxes_num = this->_internal_max_boxes_num();
  uint32_t raw_max_boxes_num;
  memcpy(&raw_max_boxes_num, &tmp_max_boxes_num, sizeof(tmp_max_boxes_num));
  if (raw_max_boxes_num != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_max_boxes_num(), target);
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_nms_threshold(), target);
  }

  // float max_nms_num = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_nms_num = this->_internal_max_nms_num();
  uint32_t raw_max_nms_num;
  memcpy(&raw_max_nms_num, &tmp_max_nms_num, sizeof(tmp_max_nms_num));
  if (raw_max_nms_num != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(4, this->_internal_max_nms_num(), target);
  }

  // int32 num_classes = 5;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(5, this->_internal_num_classes(), target);
  }

  // repeated string detect_layer_name = 6;
  for (int i = 0, n = this->_internal_detect_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_detect_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.YoloV8Param.detect_layer_name");
    target = stream->WriteString(6, s, target);
  }

  // repeated float stride = 7;
  if (this->_internal_stride_size() > 0) {
    target = stream->WriteFixedPacked(7, _internal_stride(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.YoloV8Param)
  return target;
}

size_t YoloV8Param::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.YoloV8Param)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string detect_layer_name = 6;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.detect_layer_name_.size());
  for (int i = 0, n = _impl_.detect_layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.detect_layer_name_.Get(i));
  }

  // repeated float stride = 7;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_stride_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // float conf_thresh = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_thresh = this->_internal_conf_thresh();
  uint32_t raw_conf_thresh;
  memcpy(&raw_conf_thresh, &tmp_conf_thresh, sizeof(tmp_conf_thresh));
  if (raw_conf_thresh != 0) {
    total_size += 1 + 4;
  }

  // float max_boxes_num = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_boxes_num = this->_internal_max_boxes_num();
  uint32_t raw_max_boxes_num;
  memcpy(&raw_max_boxes_num, &tmp_max_boxes_num, sizeof(tmp_max_boxes_num));
  if (raw_max_boxes_num != 0) {
    total_size += 1 + 4;
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // float max_nms_num = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_nms_num = this->_internal_max_nms_num();
  uint32_t raw_max_nms_num;
  memcpy(&raw_max_nms_num, &tmp_max_nms_num, sizeof(tmp_max_nms_num));
  if (raw_max_nms_num != 0) {
    total_size += 1 + 4;
  }

  // int32 num_classes = 5;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData YoloV8Param::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    YoloV8Param::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*YoloV8Param::GetClassData() const { return &_class_data_; }


void YoloV8Param::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<YoloV8Param*>(&to_msg);
  auto& from = static_cast<const YoloV8Param&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.YoloV8Param)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.detect_layer_name_.MergeFrom(from._impl_.detect_layer_name_);
  _this->_impl_.stride_.MergeFrom(from._impl_.stride_);
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_thresh = from._internal_conf_thresh();
  uint32_t raw_conf_thresh;
  memcpy(&raw_conf_thresh, &tmp_conf_thresh, sizeof(tmp_conf_thresh));
  if (raw_conf_thresh != 0) {
    _this->_internal_set_conf_thresh(from._internal_conf_thresh());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_boxes_num = from._internal_max_boxes_num();
  uint32_t raw_max_boxes_num;
  memcpy(&raw_max_boxes_num, &tmp_max_boxes_num, sizeof(tmp_max_boxes_num));
  if (raw_max_boxes_num != 0) {
    _this->_internal_set_max_boxes_num(from._internal_max_boxes_num());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_max_nms_num = from._internal_max_nms_num();
  uint32_t raw_max_nms_num;
  memcpy(&raw_max_nms_num, &tmp_max_nms_num, sizeof(tmp_max_nms_num));
  if (raw_max_nms_num != 0) {
    _this->_internal_set_max_nms_num(from._internal_max_nms_num());
  }
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void YoloV8Param::CopyFrom(const YoloV8Param& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.YoloV8Param)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool YoloV8Param::IsInitialized() const {
  return true;
}

void YoloV8Param::InternalSwap(YoloV8Param* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.detect_layer_name_.InternalSwap(&other->_impl_.detect_layer_name_);
  _impl_.stride_.InternalSwap(&other->_impl_.stride_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(YoloV8Param, _impl_.num_classes_)
      + sizeof(YoloV8Param::_impl_.num_classes_)
      - PROTOBUF_FIELD_OFFSET(YoloV8Param, _impl_.conf_thresh_)>(
          reinterpret_cast<char*>(&_impl_.conf_thresh_),
          reinterpret_cast<char*>(&other->_impl_.conf_thresh_));
}

::PROTOBUF_NAMESPACE_ID::Metadata YoloV8Param::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[43]);
}

// ===================================================================

class FcosParam::_Internal {
 public:
};

FcosParam::FcosParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.FcosParam)
}
FcosParam::FcosParam(const FcosParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  FcosParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.center_layer_name_){from._impl_.center_layer_name_}
    , decltype(_impl_.cls_layer_name_){from._impl_.cls_layer_name_}
    , decltype(_impl_.offset_layer_name_){from._impl_.offset_layer_name_}
    , decltype(_impl_.stride_){from._impl_.stride_}
    , decltype(_impl_.pre_nms_thresh_){}
    , decltype(_impl_.pre_nms_top_n_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.fpn_post_nms_top_n_){}
    , decltype(_impl_.num_classes_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.pre_nms_thresh_, &from._impl_.pre_nms_thresh_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.num_classes_) -
    reinterpret_cast<char*>(&_impl_.pre_nms_thresh_)) + sizeof(_impl_.num_classes_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.FcosParam)
}

inline void FcosParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.center_layer_name_){arena}
    , decltype(_impl_.cls_layer_name_){arena}
    , decltype(_impl_.offset_layer_name_){arena}
    , decltype(_impl_.stride_){arena}
    , decltype(_impl_.pre_nms_thresh_){0}
    , decltype(_impl_.pre_nms_top_n_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.fpn_post_nms_top_n_){0}
    , decltype(_impl_.num_classes_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

FcosParam::~FcosParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.FcosParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void FcosParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.center_layer_name_.~RepeatedPtrField();
  _impl_.cls_layer_name_.~RepeatedPtrField();
  _impl_.offset_layer_name_.~RepeatedPtrField();
  _impl_.stride_.~RepeatedField();
}

void FcosParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void FcosParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.FcosParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.center_layer_name_.Clear();
  _impl_.cls_layer_name_.Clear();
  _impl_.offset_layer_name_.Clear();
  _impl_.stride_.Clear();
  ::memset(&_impl_.pre_nms_thresh_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.num_classes_) -
      reinterpret_cast<char*>(&_impl_.pre_nms_thresh_)) + sizeof(_impl_.num_classes_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* FcosParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float pre_nms_thresh = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _impl_.pre_nms_thresh_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 pre_nms_top_n = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.pre_nms_top_n_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float fpn_post_nms_top_n = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          _impl_.fpn_post_nms_top_n_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 num_classes = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string center_layer_name = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_center_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.FcosParam.center_layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string cls_layer_name = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_cls_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.FcosParam.cls_layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string offset_layer_name = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_offset_layer_name();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.FcosParam.offset_layer_name"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated float stride = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_stride(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 77) {
          _internal_add_stride(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* FcosParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.FcosParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float pre_nms_thresh = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_pre_nms_thresh = this->_internal_pre_nms_thresh();
  uint32_t raw_pre_nms_thresh;
  memcpy(&raw_pre_nms_thresh, &tmp_pre_nms_thresh, sizeof(tmp_pre_nms_thresh));
  if (raw_pre_nms_thresh != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(1, this->_internal_pre_nms_thresh(), target);
  }

  // int32 pre_nms_top_n = 2;
  if (this->_internal_pre_nms_top_n() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_pre_nms_top_n(), target);
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_nms_threshold(), target);
  }

  // float fpn_post_nms_top_n = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_fpn_post_nms_top_n = this->_internal_fpn_post_nms_top_n();
  uint32_t raw_fpn_post_nms_top_n;
  memcpy(&raw_fpn_post_nms_top_n, &tmp_fpn_post_nms_top_n, sizeof(tmp_fpn_post_nms_top_n));
  if (raw_fpn_post_nms_top_n != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(4, this->_internal_fpn_post_nms_top_n(), target);
  }

  // int32 num_classes = 5;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(5, this->_internal_num_classes(), target);
  }

  // repeated string center_layer_name = 6;
  for (int i = 0, n = this->_internal_center_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_center_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.FcosParam.center_layer_name");
    target = stream->WriteString(6, s, target);
  }

  // repeated string cls_layer_name = 7;
  for (int i = 0, n = this->_internal_cls_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_cls_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.FcosParam.cls_layer_name");
    target = stream->WriteString(7, s, target);
  }

  // repeated string offset_layer_name = 8;
  for (int i = 0, n = this->_internal_offset_layer_name_size(); i < n; i++) {
    const auto& s = this->_internal_offset_layer_name(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.FcosParam.offset_layer_name");
    target = stream->WriteString(8, s, target);
  }

  // repeated float stride = 9;
  if (this->_internal_stride_size() > 0) {
    target = stream->WriteFixedPacked(9, _internal_stride(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.FcosParam)
  return target;
}

size_t FcosParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.FcosParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string center_layer_name = 6;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.center_layer_name_.size());
  for (int i = 0, n = _impl_.center_layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.center_layer_name_.Get(i));
  }

  // repeated string cls_layer_name = 7;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.cls_layer_name_.size());
  for (int i = 0, n = _impl_.cls_layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.cls_layer_name_.Get(i));
  }

  // repeated string offset_layer_name = 8;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.offset_layer_name_.size());
  for (int i = 0, n = _impl_.offset_layer_name_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.offset_layer_name_.Get(i));
  }

  // repeated float stride = 9;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_stride_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // float pre_nms_thresh = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_pre_nms_thresh = this->_internal_pre_nms_thresh();
  uint32_t raw_pre_nms_thresh;
  memcpy(&raw_pre_nms_thresh, &tmp_pre_nms_thresh, sizeof(tmp_pre_nms_thresh));
  if (raw_pre_nms_thresh != 0) {
    total_size += 1 + 4;
  }

  // int32 pre_nms_top_n = 2;
  if (this->_internal_pre_nms_top_n() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_pre_nms_top_n());
  }

  // float nms_threshold = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // float fpn_post_nms_top_n = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_fpn_post_nms_top_n = this->_internal_fpn_post_nms_top_n();
  uint32_t raw_fpn_post_nms_top_n;
  memcpy(&raw_fpn_post_nms_top_n, &tmp_fpn_post_nms_top_n, sizeof(tmp_fpn_post_nms_top_n));
  if (raw_fpn_post_nms_top_n != 0) {
    total_size += 1 + 4;
  }

  // int32 num_classes = 5;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData FcosParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    FcosParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*FcosParam::GetClassData() const { return &_class_data_; }


void FcosParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<FcosParam*>(&to_msg);
  auto& from = static_cast<const FcosParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.FcosParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.center_layer_name_.MergeFrom(from._impl_.center_layer_name_);
  _this->_impl_.cls_layer_name_.MergeFrom(from._impl_.cls_layer_name_);
  _this->_impl_.offset_layer_name_.MergeFrom(from._impl_.offset_layer_name_);
  _this->_impl_.stride_.MergeFrom(from._impl_.stride_);
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_pre_nms_thresh = from._internal_pre_nms_thresh();
  uint32_t raw_pre_nms_thresh;
  memcpy(&raw_pre_nms_thresh, &tmp_pre_nms_thresh, sizeof(tmp_pre_nms_thresh));
  if (raw_pre_nms_thresh != 0) {
    _this->_internal_set_pre_nms_thresh(from._internal_pre_nms_thresh());
  }
  if (from._internal_pre_nms_top_n() != 0) {
    _this->_internal_set_pre_nms_top_n(from._internal_pre_nms_top_n());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_fpn_post_nms_top_n = from._internal_fpn_post_nms_top_n();
  uint32_t raw_fpn_post_nms_top_n;
  memcpy(&raw_fpn_post_nms_top_n, &tmp_fpn_post_nms_top_n, sizeof(tmp_fpn_post_nms_top_n));
  if (raw_fpn_post_nms_top_n != 0) {
    _this->_internal_set_fpn_post_nms_top_n(from._internal_fpn_post_nms_top_n());
  }
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void FcosParam::CopyFrom(const FcosParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.FcosParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool FcosParam::IsInitialized() const {
  return true;
}

void FcosParam::InternalSwap(FcosParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.center_layer_name_.InternalSwap(&other->_impl_.center_layer_name_);
  _impl_.cls_layer_name_.InternalSwap(&other->_impl_.cls_layer_name_);
  _impl_.offset_layer_name_.InternalSwap(&other->_impl_.offset_layer_name_);
  _impl_.stride_.InternalSwap(&other->_impl_.stride_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(FcosParam, _impl_.num_classes_)
      + sizeof(FcosParam::_impl_.num_classes_)
      - PROTOBUF_FIELD_OFFSET(FcosParam, _impl_.pre_nms_thresh_)>(
          reinterpret_cast<char*>(&_impl_.pre_nms_thresh_),
          reinterpret_cast<char*>(&other->_impl_.pre_nms_thresh_));
}

::PROTOBUF_NAMESPACE_ID::Metadata FcosParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[44]);
}

// ===================================================================

class BTSParam::_Internal {
 public:
};

BTSParam::BTSParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.BTSParam)
}
BTSParam::BTSParam(const BTSParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  BTSParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.mul_factor_){}
    , decltype(_impl_.depth_scaled_factor_){}
    , decltype(_impl_.hard_sigmoid_output_scale_){}
    , decltype(_impl_.multiple_output_scale_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.mul_factor_, &from._impl_.mul_factor_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.multiple_output_scale_) -
    reinterpret_cast<char*>(&_impl_.mul_factor_)) + sizeof(_impl_.multiple_output_scale_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.BTSParam)
}

inline void BTSParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.mul_factor_){0}
    , decltype(_impl_.depth_scaled_factor_){0}
    , decltype(_impl_.hard_sigmoid_output_scale_){0}
    , decltype(_impl_.multiple_output_scale_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

BTSParam::~BTSParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.BTSParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void BTSParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void BTSParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void BTSParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.BTSParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.mul_factor_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.multiple_output_scale_) -
      reinterpret_cast<char*>(&_impl_.mul_factor_)) + sizeof(_impl_.multiple_output_scale_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* BTSParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float mul_factor = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _impl_.mul_factor_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float depth_scaled_factor = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.depth_scaled_factor_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float hard_sigmoid_output_scale = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.hard_sigmoid_output_scale_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float multiple_output_scale = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          _impl_.multiple_output_scale_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* BTSParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.BTSParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float mul_factor = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_mul_factor = this->_internal_mul_factor();
  uint32_t raw_mul_factor;
  memcpy(&raw_mul_factor, &tmp_mul_factor, sizeof(tmp_mul_factor));
  if (raw_mul_factor != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(1, this->_internal_mul_factor(), target);
  }

  // float depth_scaled_factor = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_depth_scaled_factor = this->_internal_depth_scaled_factor();
  uint32_t raw_depth_scaled_factor;
  memcpy(&raw_depth_scaled_factor, &tmp_depth_scaled_factor, sizeof(tmp_depth_scaled_factor));
  if (raw_depth_scaled_factor != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_depth_scaled_factor(), target);
  }

  // float hard_sigmoid_output_scale = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_hard_sigmoid_output_scale = this->_internal_hard_sigmoid_output_scale();
  uint32_t raw_hard_sigmoid_output_scale;
  memcpy(&raw_hard_sigmoid_output_scale, &tmp_hard_sigmoid_output_scale, sizeof(tmp_hard_sigmoid_output_scale));
  if (raw_hard_sigmoid_output_scale != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_hard_sigmoid_output_scale(), target);
  }

  // float multiple_output_scale = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_multiple_output_scale = this->_internal_multiple_output_scale();
  uint32_t raw_multiple_output_scale;
  memcpy(&raw_multiple_output_scale, &tmp_multiple_output_scale, sizeof(tmp_multiple_output_scale));
  if (raw_multiple_output_scale != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(4, this->_internal_multiple_output_scale(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.BTSParam)
  return target;
}

size_t BTSParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.BTSParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // float mul_factor = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_mul_factor = this->_internal_mul_factor();
  uint32_t raw_mul_factor;
  memcpy(&raw_mul_factor, &tmp_mul_factor, sizeof(tmp_mul_factor));
  if (raw_mul_factor != 0) {
    total_size += 1 + 4;
  }

  // float depth_scaled_factor = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_depth_scaled_factor = this->_internal_depth_scaled_factor();
  uint32_t raw_depth_scaled_factor;
  memcpy(&raw_depth_scaled_factor, &tmp_depth_scaled_factor, sizeof(tmp_depth_scaled_factor));
  if (raw_depth_scaled_factor != 0) {
    total_size += 1 + 4;
  }

  // float hard_sigmoid_output_scale = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_hard_sigmoid_output_scale = this->_internal_hard_sigmoid_output_scale();
  uint32_t raw_hard_sigmoid_output_scale;
  memcpy(&raw_hard_sigmoid_output_scale, &tmp_hard_sigmoid_output_scale, sizeof(tmp_hard_sigmoid_output_scale));
  if (raw_hard_sigmoid_output_scale != 0) {
    total_size += 1 + 4;
  }

  // float multiple_output_scale = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_multiple_output_scale = this->_internal_multiple_output_scale();
  uint32_t raw_multiple_output_scale;
  memcpy(&raw_multiple_output_scale, &tmp_multiple_output_scale, sizeof(tmp_multiple_output_scale));
  if (raw_multiple_output_scale != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData BTSParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    BTSParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*BTSParam::GetClassData() const { return &_class_data_; }


void BTSParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<BTSParam*>(&to_msg);
  auto& from = static_cast<const BTSParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.BTSParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_mul_factor = from._internal_mul_factor();
  uint32_t raw_mul_factor;
  memcpy(&raw_mul_factor, &tmp_mul_factor, sizeof(tmp_mul_factor));
  if (raw_mul_factor != 0) {
    _this->_internal_set_mul_factor(from._internal_mul_factor());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_depth_scaled_factor = from._internal_depth_scaled_factor();
  uint32_t raw_depth_scaled_factor;
  memcpy(&raw_depth_scaled_factor, &tmp_depth_scaled_factor, sizeof(tmp_depth_scaled_factor));
  if (raw_depth_scaled_factor != 0) {
    _this->_internal_set_depth_scaled_factor(from._internal_depth_scaled_factor());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_hard_sigmoid_output_scale = from._internal_hard_sigmoid_output_scale();
  uint32_t raw_hard_sigmoid_output_scale;
  memcpy(&raw_hard_sigmoid_output_scale, &tmp_hard_sigmoid_output_scale, sizeof(tmp_hard_sigmoid_output_scale));
  if (raw_hard_sigmoid_output_scale != 0) {
    _this->_internal_set_hard_sigmoid_output_scale(from._internal_hard_sigmoid_output_scale());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_multiple_output_scale = from._internal_multiple_output_scale();
  uint32_t raw_multiple_output_scale;
  memcpy(&raw_multiple_output_scale, &tmp_multiple_output_scale, sizeof(tmp_multiple_output_scale));
  if (raw_multiple_output_scale != 0) {
    _this->_internal_set_multiple_output_scale(from._internal_multiple_output_scale());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void BTSParam::CopyFrom(const BTSParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.BTSParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool BTSParam::IsInitialized() const {
  return true;
}

void BTSParam::InternalSwap(BTSParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(BTSParam, _impl_.multiple_output_scale_)
      + sizeof(BTSParam::_impl_.multiple_output_scale_)
      - PROTOBUF_FIELD_OFFSET(BTSParam, _impl_.mul_factor_)>(
          reinterpret_cast<char*>(&_impl_.mul_factor_),
          reinterpret_cast<char*>(&other->_impl_.mul_factor_));
}

::PROTOBUF_NAMESPACE_ID::Metadata BTSParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[45]);
}

// ===================================================================

class PointPillarsBaseParam::_Internal {
 public:
};

PointPillarsBaseParam::PointPillarsBaseParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.PointPillarsBaseParam)
}
PointPillarsBaseParam::PointPillarsBaseParam(const PointPillarsBaseParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PointPillarsBaseParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.point_cloud_range_){from._impl_.point_cloud_range_}
    , decltype(_impl_.voxel_size_){from._impl_.voxel_size_}
    , decltype(_impl_.points_dim_){}
    , decltype(_impl_.max_points_num_){}
    , decltype(_impl_.max_voxels_num_){}
    , decltype(_impl_.in_channels_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.points_dim_, &from._impl_.points_dim_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.in_channels_) -
    reinterpret_cast<char*>(&_impl_.points_dim_)) + sizeof(_impl_.in_channels_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.PointPillarsBaseParam)
}

inline void PointPillarsBaseParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.point_cloud_range_){arena}
    , decltype(_impl_.voxel_size_){arena}
    , decltype(_impl_.points_dim_){0}
    , decltype(_impl_.max_points_num_){0}
    , decltype(_impl_.max_voxels_num_){0}
    , decltype(_impl_.in_channels_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

PointPillarsBaseParam::~PointPillarsBaseParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.PointPillarsBaseParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PointPillarsBaseParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.point_cloud_range_.~RepeatedField();
  _impl_.voxel_size_.~RepeatedField();
}

void PointPillarsBaseParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PointPillarsBaseParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.PointPillarsBaseParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.point_cloud_range_.Clear();
  _impl_.voxel_size_.Clear();
  ::memset(&_impl_.points_dim_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.in_channels_) -
      reinterpret_cast<char*>(&_impl_.points_dim_)) + sizeof(_impl_.in_channels_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PointPillarsBaseParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated float point_cloud_range = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_point_cloud_range(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 13) {
          _internal_add_point_cloud_range(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float voxel_size = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_voxel_size(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 21) {
          _internal_add_voxel_size(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 points_dim = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.points_dim_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 max_points_num = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _impl_.max_points_num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 max_voxels_num = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _impl_.max_voxels_num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 in_channels = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.in_channels_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PointPillarsBaseParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.PointPillarsBaseParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated float point_cloud_range = 1;
  if (this->_internal_point_cloud_range_size() > 0) {
    target = stream->WriteFixedPacked(1, _internal_point_cloud_range(), target);
  }

  // repeated float voxel_size = 2;
  if (this->_internal_voxel_size_size() > 0) {
    target = stream->WriteFixedPacked(2, _internal_voxel_size(), target);
  }

  // int32 points_dim = 3;
  if (this->_internal_points_dim() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_points_dim(), target);
  }

  // int32 max_points_num = 4;
  if (this->_internal_max_points_num() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(4, this->_internal_max_points_num(), target);
  }

  // int32 max_voxels_num = 5;
  if (this->_internal_max_voxels_num() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(5, this->_internal_max_voxels_num(), target);
  }

  // int32 in_channels = 6;
  if (this->_internal_in_channels() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(6, this->_internal_in_channels(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.PointPillarsBaseParam)
  return target;
}

size_t PointPillarsBaseParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.PointPillarsBaseParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float point_cloud_range = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_point_cloud_range_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float voxel_size = 2;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_voxel_size_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // int32 points_dim = 3;
  if (this->_internal_points_dim() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_points_dim());
  }

  // int32 max_points_num = 4;
  if (this->_internal_max_points_num() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_max_points_num());
  }

  // int32 max_voxels_num = 5;
  if (this->_internal_max_voxels_num() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_max_voxels_num());
  }

  // int32 in_channels = 6;
  if (this->_internal_in_channels() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_in_channels());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PointPillarsBaseParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PointPillarsBaseParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PointPillarsBaseParam::GetClassData() const { return &_class_data_; }


void PointPillarsBaseParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PointPillarsBaseParam*>(&to_msg);
  auto& from = static_cast<const PointPillarsBaseParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.PointPillarsBaseParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.point_cloud_range_.MergeFrom(from._impl_.point_cloud_range_);
  _this->_impl_.voxel_size_.MergeFrom(from._impl_.voxel_size_);
  if (from._internal_points_dim() != 0) {
    _this->_internal_set_points_dim(from._internal_points_dim());
  }
  if (from._internal_max_points_num() != 0) {
    _this->_internal_set_max_points_num(from._internal_max_points_num());
  }
  if (from._internal_max_voxels_num() != 0) {
    _this->_internal_set_max_voxels_num(from._internal_max_voxels_num());
  }
  if (from._internal_in_channels() != 0) {
    _this->_internal_set_in_channels(from._internal_in_channels());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PointPillarsBaseParam::CopyFrom(const PointPillarsBaseParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.PointPillarsBaseParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PointPillarsBaseParam::IsInitialized() const {
  return true;
}

void PointPillarsBaseParam::InternalSwap(PointPillarsBaseParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.point_cloud_range_.InternalSwap(&other->_impl_.point_cloud_range_);
  _impl_.voxel_size_.InternalSwap(&other->_impl_.voxel_size_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PointPillarsBaseParam, _impl_.in_channels_)
      + sizeof(PointPillarsBaseParam::_impl_.in_channels_)
      - PROTOBUF_FIELD_OFFSET(PointPillarsBaseParam, _impl_.points_dim_)>(
          reinterpret_cast<char*>(&_impl_.points_dim_),
          reinterpret_cast<char*>(&other->_impl_.points_dim_));
}

::PROTOBUF_NAMESPACE_ID::Metadata PointPillarsBaseParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[46]);
}

// ===================================================================

class PointPillarsKittiParam::_Internal {
 public:
  static const ::vitis::ai::proto::PointPillarsBaseParam& base(const PointPillarsKittiParam* msg);
};

const ::vitis::ai::proto::PointPillarsBaseParam&
PointPillarsKittiParam::_Internal::base(const PointPillarsKittiParam* msg) {
  return *msg->_impl_.base_;
}
PointPillarsKittiParam::PointPillarsKittiParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.PointPillarsKittiParam)
}
PointPillarsKittiParam::PointPillarsKittiParam(const PointPillarsKittiParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PointPillarsKittiParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.base_){nullptr}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_base()) {
    _this->_impl_.base_ = new ::vitis::ai::proto::PointPillarsBaseParam(*from._impl_.base_);
  }
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.PointPillarsKittiParam)
}

inline void PointPillarsKittiParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.base_){nullptr}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

PointPillarsKittiParam::~PointPillarsKittiParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.PointPillarsKittiParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PointPillarsKittiParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.base_;
}

void PointPillarsKittiParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PointPillarsKittiParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.PointPillarsKittiParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && _impl_.base_ != nullptr) {
    delete _impl_.base_;
  }
  _impl_.base_ = nullptr;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PointPillarsKittiParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.PointPillarsBaseParam base = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_base(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PointPillarsKittiParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.PointPillarsKittiParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.PointPillarsBaseParam base = 1;
  if (this->_internal_has_base()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::base(this),
        _Internal::base(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.PointPillarsKittiParam)
  return target;
}

size_t PointPillarsKittiParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.PointPillarsKittiParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .vitis.ai.proto.PointPillarsBaseParam base = 1;
  if (this->_internal_has_base()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.base_);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PointPillarsKittiParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PointPillarsKittiParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PointPillarsKittiParam::GetClassData() const { return &_class_data_; }


void PointPillarsKittiParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PointPillarsKittiParam*>(&to_msg);
  auto& from = static_cast<const PointPillarsKittiParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.PointPillarsKittiParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_base()) {
    _this->_internal_mutable_base()->::vitis::ai::proto::PointPillarsBaseParam::MergeFrom(
        from._internal_base());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PointPillarsKittiParam::CopyFrom(const PointPillarsKittiParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.PointPillarsKittiParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PointPillarsKittiParam::IsInitialized() const {
  return true;
}

void PointPillarsKittiParam::InternalSwap(PointPillarsKittiParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.base_, other->_impl_.base_);
}

::PROTOBUF_NAMESPACE_ID::Metadata PointPillarsKittiParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[47]);
}

// ===================================================================

class X_Autonomous3DParam_CenterPointOutputLayer::_Internal {
 public:
};

X_Autonomous3DParam_CenterPointOutputLayer::X_Autonomous3DParam_CenterPointOutputLayer(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer)
}
X_Autonomous3DParam_CenterPointOutputLayer::X_Autonomous3DParam_CenterPointOutputLayer(const X_Autonomous3DParam_CenterPointOutputLayer& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  X_Autonomous3DParam_CenterPointOutputLayer* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.reg_layer_name_){}
    , decltype(_impl_.height_layer_name_){}
    , decltype(_impl_.dim_layer_name_){}
    , decltype(_impl_.rot_layer_name_){}
    , decltype(_impl_.heatmap_layer_name_){}
    , decltype(_impl_.iou_quality_layer_name_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.reg_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.reg_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_reg_layer_name().empty()) {
    _this->_impl_.reg_layer_name_.Set(from._internal_reg_layer_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.height_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.height_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_height_layer_name().empty()) {
    _this->_impl_.height_layer_name_.Set(from._internal_height_layer_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.dim_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.dim_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_dim_layer_name().empty()) {
    _this->_impl_.dim_layer_name_.Set(from._internal_dim_layer_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.rot_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.rot_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_rot_layer_name().empty()) {
    _this->_impl_.rot_layer_name_.Set(from._internal_rot_layer_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.heatmap_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.heatmap_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_heatmap_layer_name().empty()) {
    _this->_impl_.heatmap_layer_name_.Set(from._internal_heatmap_layer_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.iou_quality_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.iou_quality_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_iou_quality_layer_name().empty()) {
    _this->_impl_.iou_quality_layer_name_.Set(from._internal_iou_quality_layer_name(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer)
}

inline void X_Autonomous3DParam_CenterPointOutputLayer::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.reg_layer_name_){}
    , decltype(_impl_.height_layer_name_){}
    , decltype(_impl_.dim_layer_name_){}
    , decltype(_impl_.rot_layer_name_){}
    , decltype(_impl_.heatmap_layer_name_){}
    , decltype(_impl_.iou_quality_layer_name_){}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.reg_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.reg_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.height_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.height_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.dim_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.dim_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.rot_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.rot_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.heatmap_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.heatmap_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.iou_quality_layer_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.iou_quality_layer_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

X_Autonomous3DParam_CenterPointOutputLayer::~X_Autonomous3DParam_CenterPointOutputLayer() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void X_Autonomous3DParam_CenterPointOutputLayer::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.reg_layer_name_.Destroy();
  _impl_.height_layer_name_.Destroy();
  _impl_.dim_layer_name_.Destroy();
  _impl_.rot_layer_name_.Destroy();
  _impl_.heatmap_layer_name_.Destroy();
  _impl_.iou_quality_layer_name_.Destroy();
}

void X_Autonomous3DParam_CenterPointOutputLayer::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void X_Autonomous3DParam_CenterPointOutputLayer::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.reg_layer_name_.ClearToEmpty();
  _impl_.height_layer_name_.ClearToEmpty();
  _impl_.dim_layer_name_.ClearToEmpty();
  _impl_.rot_layer_name_.ClearToEmpty();
  _impl_.heatmap_layer_name_.ClearToEmpty();
  _impl_.iou_quality_layer_name_.ClearToEmpty();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* X_Autonomous3DParam_CenterPointOutputLayer::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string reg_layer_name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_reg_layer_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer.reg_layer_name"));
        } else
          goto handle_unusual;
        continue;
      // string height_layer_name = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_height_layer_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer.height_layer_name"));
        } else
          goto handle_unusual;
        continue;
      // string dim_layer_name = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_dim_layer_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer.dim_layer_name"));
        } else
          goto handle_unusual;
        continue;
      // string rot_layer_name = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          auto str = _internal_mutable_rot_layer_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer.rot_layer_name"));
        } else
          goto handle_unusual;
        continue;
      // string heatmap_layer_name = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          auto str = _internal_mutable_heatmap_layer_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer.heatmap_layer_name"));
        } else
          goto handle_unusual;
        continue;
      // string iou_quality_layer_name = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          auto str = _internal_mutable_iou_quality_layer_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer.iou_quality_layer_name"));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* X_Autonomous3DParam_CenterPointOutputLayer::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string reg_layer_name = 1;
  if (!this->_internal_reg_layer_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_reg_layer_name().data(), static_cast<int>(this->_internal_reg_layer_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer.reg_layer_name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_reg_layer_name(), target);
  }

  // string height_layer_name = 2;
  if (!this->_internal_height_layer_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_height_layer_name().data(), static_cast<int>(this->_internal_height_layer_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer.height_layer_name");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_height_layer_name(), target);
  }

  // string dim_layer_name = 3;
  if (!this->_internal_dim_layer_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_dim_layer_name().data(), static_cast<int>(this->_internal_dim_layer_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer.dim_layer_name");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_dim_layer_name(), target);
  }

  // string rot_layer_name = 4;
  if (!this->_internal_rot_layer_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_rot_layer_name().data(), static_cast<int>(this->_internal_rot_layer_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer.rot_layer_name");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_rot_layer_name(), target);
  }

  // string heatmap_layer_name = 5;
  if (!this->_internal_heatmap_layer_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_heatmap_layer_name().data(), static_cast<int>(this->_internal_heatmap_layer_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer.heatmap_layer_name");
    target = stream->WriteStringMaybeAliased(
        5, this->_internal_heatmap_layer_name(), target);
  }

  // string iou_quality_layer_name = 6;
  if (!this->_internal_iou_quality_layer_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_iou_quality_layer_name().data(), static_cast<int>(this->_internal_iou_quality_layer_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer.iou_quality_layer_name");
    target = stream->WriteStringMaybeAliased(
        6, this->_internal_iou_quality_layer_name(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer)
  return target;
}

size_t X_Autonomous3DParam_CenterPointOutputLayer::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string reg_layer_name = 1;
  if (!this->_internal_reg_layer_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_reg_layer_name());
  }

  // string height_layer_name = 2;
  if (!this->_internal_height_layer_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_height_layer_name());
  }

  // string dim_layer_name = 3;
  if (!this->_internal_dim_layer_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_dim_layer_name());
  }

  // string rot_layer_name = 4;
  if (!this->_internal_rot_layer_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_rot_layer_name());
  }

  // string heatmap_layer_name = 5;
  if (!this->_internal_heatmap_layer_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_heatmap_layer_name());
  }

  // string iou_quality_layer_name = 6;
  if (!this->_internal_iou_quality_layer_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_iou_quality_layer_name());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData X_Autonomous3DParam_CenterPointOutputLayer::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    X_Autonomous3DParam_CenterPointOutputLayer::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*X_Autonomous3DParam_CenterPointOutputLayer::GetClassData() const { return &_class_data_; }


void X_Autonomous3DParam_CenterPointOutputLayer::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<X_Autonomous3DParam_CenterPointOutputLayer*>(&to_msg);
  auto& from = static_cast<const X_Autonomous3DParam_CenterPointOutputLayer&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_reg_layer_name().empty()) {
    _this->_internal_set_reg_layer_name(from._internal_reg_layer_name());
  }
  if (!from._internal_height_layer_name().empty()) {
    _this->_internal_set_height_layer_name(from._internal_height_layer_name());
  }
  if (!from._internal_dim_layer_name().empty()) {
    _this->_internal_set_dim_layer_name(from._internal_dim_layer_name());
  }
  if (!from._internal_rot_layer_name().empty()) {
    _this->_internal_set_rot_layer_name(from._internal_rot_layer_name());
  }
  if (!from._internal_heatmap_layer_name().empty()) {
    _this->_internal_set_heatmap_layer_name(from._internal_heatmap_layer_name());
  }
  if (!from._internal_iou_quality_layer_name().empty()) {
    _this->_internal_set_iou_quality_layer_name(from._internal_iou_quality_layer_name());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void X_Autonomous3DParam_CenterPointOutputLayer::CopyFrom(const X_Autonomous3DParam_CenterPointOutputLayer& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool X_Autonomous3DParam_CenterPointOutputLayer::IsInitialized() const {
  return true;
}

void X_Autonomous3DParam_CenterPointOutputLayer::InternalSwap(X_Autonomous3DParam_CenterPointOutputLayer* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.reg_layer_name_, lhs_arena,
      &other->_impl_.reg_layer_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.height_layer_name_, lhs_arena,
      &other->_impl_.height_layer_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.dim_layer_name_, lhs_arena,
      &other->_impl_.dim_layer_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.rot_layer_name_, lhs_arena,
      &other->_impl_.rot_layer_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.heatmap_layer_name_, lhs_arena,
      &other->_impl_.heatmap_layer_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.iou_quality_layer_name_, lhs_arena,
      &other->_impl_.iou_quality_layer_name_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata X_Autonomous3DParam_CenterPointOutputLayer::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[48]);
}

// ===================================================================

class X_Autonomous3DParam::_Internal {
 public:
  static const ::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer& output_names(const X_Autonomous3DParam* msg);
};

const ::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer&
X_Autonomous3DParam::_Internal::output_names(const X_Autonomous3DParam* msg) {
  return *msg->_impl_.output_names_;
}
X_Autonomous3DParam::X_Autonomous3DParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.X_Autonomous3DParam)
}
X_Autonomous3DParam::X_Autonomous3DParam(const X_Autonomous3DParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  X_Autonomous3DParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.point_cloud_range_){from._impl_.point_cloud_range_}
    , decltype(_impl_.voxel_size_){from._impl_.voxel_size_}
    , decltype(_impl_.iou_quality_alpha_){from._impl_.iou_quality_alpha_}
    , decltype(_impl_.post_point_cloud_range_){from._impl_.post_point_cloud_range_}
    , decltype(_impl_.nms_thresh_){from._impl_.nms_thresh_}
    , decltype(_impl_.output_names_){nullptr}
    , decltype(_impl_.points_dim_){}
    , decltype(_impl_.max_points_num_){}
    , decltype(_impl_.max_voxels_num_){}
    , decltype(_impl_.in_channels_){}
    , decltype(_impl_.num_classes_){}
    , decltype(_impl_.out_size_facter_){}
    , decltype(_impl_.bbox_pre_size_){}
    , decltype(_impl_.bbox_max_size_){}
    , decltype(_impl_.score_thresh_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_output_names()) {
    _this->_impl_.output_names_ = new ::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer(*from._impl_.output_names_);
  }
  ::memcpy(&_impl_.points_dim_, &from._impl_.points_dim_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.score_thresh_) -
    reinterpret_cast<char*>(&_impl_.points_dim_)) + sizeof(_impl_.score_thresh_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.X_Autonomous3DParam)
}

inline void X_Autonomous3DParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.point_cloud_range_){arena}
    , decltype(_impl_.voxel_size_){arena}
    , decltype(_impl_.iou_quality_alpha_){arena}
    , decltype(_impl_.post_point_cloud_range_){arena}
    , decltype(_impl_.nms_thresh_){arena}
    , decltype(_impl_.output_names_){nullptr}
    , decltype(_impl_.points_dim_){0}
    , decltype(_impl_.max_points_num_){0}
    , decltype(_impl_.max_voxels_num_){0}
    , decltype(_impl_.in_channels_){0}
    , decltype(_impl_.num_classes_){0}
    , decltype(_impl_.out_size_facter_){0}
    , decltype(_impl_.bbox_pre_size_){0}
    , decltype(_impl_.bbox_max_size_){0}
    , decltype(_impl_.score_thresh_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

X_Autonomous3DParam::~X_Autonomous3DParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.X_Autonomous3DParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void X_Autonomous3DParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.point_cloud_range_.~RepeatedField();
  _impl_.voxel_size_.~RepeatedField();
  _impl_.iou_quality_alpha_.~RepeatedField();
  _impl_.post_point_cloud_range_.~RepeatedField();
  _impl_.nms_thresh_.~RepeatedField();
  if (this != internal_default_instance()) delete _impl_.output_names_;
}

void X_Autonomous3DParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void X_Autonomous3DParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.X_Autonomous3DParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.point_cloud_range_.Clear();
  _impl_.voxel_size_.Clear();
  _impl_.iou_quality_alpha_.Clear();
  _impl_.post_point_cloud_range_.Clear();
  _impl_.nms_thresh_.Clear();
  if (GetArenaForAllocation() == nullptr && _impl_.output_names_ != nullptr) {
    delete _impl_.output_names_;
  }
  _impl_.output_names_ = nullptr;
  ::memset(&_impl_.points_dim_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.score_thresh_) -
      reinterpret_cast<char*>(&_impl_.points_dim_)) + sizeof(_impl_.score_thresh_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* X_Autonomous3DParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated float point_cloud_range = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_point_cloud_range(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 13) {
          _internal_add_point_cloud_range(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float voxel_size = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_voxel_size(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 21) {
          _internal_add_voxel_size(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 points_dim = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.points_dim_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 max_points_num = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _impl_.max_points_num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 max_voxels_num = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _impl_.max_voxels_num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 in_channels = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.in_channels_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer output_names = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_output_names(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 num_classes = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 64)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float out_size_facter = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 77)) {
          _impl_.out_size_facter_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float iou_quality_alpha = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_iou_quality_alpha(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 85) {
          _internal_add_iou_quality_alpha(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float post_point_cloud_range = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_post_point_cloud_range(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 93) {
          _internal_add_post_point_cloud_range(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 bbox_pre_size = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 96)) {
          _impl_.bbox_pre_size_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 bbox_max_size = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 104)) {
          _impl_.bbox_max_size_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated float nms_thresh = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_nms_thresh(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 117) {
          _internal_add_nms_thresh(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float score_thresh = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 125)) {
          _impl_.score_thresh_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* X_Autonomous3DParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.X_Autonomous3DParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated float point_cloud_range = 1;
  if (this->_internal_point_cloud_range_size() > 0) {
    target = stream->WriteFixedPacked(1, _internal_point_cloud_range(), target);
  }

  // repeated float voxel_size = 2;
  if (this->_internal_voxel_size_size() > 0) {
    target = stream->WriteFixedPacked(2, _internal_voxel_size(), target);
  }

  // int32 points_dim = 3;
  if (this->_internal_points_dim() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_points_dim(), target);
  }

  // int32 max_points_num = 4;
  if (this->_internal_max_points_num() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(4, this->_internal_max_points_num(), target);
  }

  // int32 max_voxels_num = 5;
  if (this->_internal_max_voxels_num() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(5, this->_internal_max_voxels_num(), target);
  }

  // int32 in_channels = 6;
  if (this->_internal_in_channels() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(6, this->_internal_in_channels(), target);
  }

  // .vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer output_names = 7;
  if (this->_internal_has_output_names()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(7, _Internal::output_names(this),
        _Internal::output_names(this).GetCachedSize(), target, stream);
  }

  // int32 num_classes = 8;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(8, this->_internal_num_classes(), target);
  }

  // float out_size_facter = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_out_size_facter = this->_internal_out_size_facter();
  uint32_t raw_out_size_facter;
  memcpy(&raw_out_size_facter, &tmp_out_size_facter, sizeof(tmp_out_size_facter));
  if (raw_out_size_facter != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(9, this->_internal_out_size_facter(), target);
  }

  // repeated float iou_quality_alpha = 10;
  if (this->_internal_iou_quality_alpha_size() > 0) {
    target = stream->WriteFixedPacked(10, _internal_iou_quality_alpha(), target);
  }

  // repeated float post_point_cloud_range = 11;
  if (this->_internal_post_point_cloud_range_size() > 0) {
    target = stream->WriteFixedPacked(11, _internal_post_point_cloud_range(), target);
  }

  // int32 bbox_pre_size = 12;
  if (this->_internal_bbox_pre_size() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(12, this->_internal_bbox_pre_size(), target);
  }

  // int32 bbox_max_size = 13;
  if (this->_internal_bbox_max_size() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(13, this->_internal_bbox_max_size(), target);
  }

  // repeated float nms_thresh = 14;
  if (this->_internal_nms_thresh_size() > 0) {
    target = stream->WriteFixedPacked(14, _internal_nms_thresh(), target);
  }

  // float score_thresh = 15;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score_thresh = this->_internal_score_thresh();
  uint32_t raw_score_thresh;
  memcpy(&raw_score_thresh, &tmp_score_thresh, sizeof(tmp_score_thresh));
  if (raw_score_thresh != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(15, this->_internal_score_thresh(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.X_Autonomous3DParam)
  return target;
}

size_t X_Autonomous3DParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.X_Autonomous3DParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float point_cloud_range = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_point_cloud_range_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float voxel_size = 2;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_voxel_size_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float iou_quality_alpha = 10;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_iou_quality_alpha_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float post_point_cloud_range = 11;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_post_point_cloud_range_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float nms_thresh = 14;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_nms_thresh_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // .vitis.ai.proto.X_Autonomous3DParam.CenterPointOutputLayer output_names = 7;
  if (this->_internal_has_output_names()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.output_names_);
  }

  // int32 points_dim = 3;
  if (this->_internal_points_dim() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_points_dim());
  }

  // int32 max_points_num = 4;
  if (this->_internal_max_points_num() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_max_points_num());
  }

  // int32 max_voxels_num = 5;
  if (this->_internal_max_voxels_num() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_max_voxels_num());
  }

  // int32 in_channels = 6;
  if (this->_internal_in_channels() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_in_channels());
  }

  // int32 num_classes = 8;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  // float out_size_facter = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_out_size_facter = this->_internal_out_size_facter();
  uint32_t raw_out_size_facter;
  memcpy(&raw_out_size_facter, &tmp_out_size_facter, sizeof(tmp_out_size_facter));
  if (raw_out_size_facter != 0) {
    total_size += 1 + 4;
  }

  // int32 bbox_pre_size = 12;
  if (this->_internal_bbox_pre_size() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_bbox_pre_size());
  }

  // int32 bbox_max_size = 13;
  if (this->_internal_bbox_max_size() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_bbox_max_size());
  }

  // float score_thresh = 15;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score_thresh = this->_internal_score_thresh();
  uint32_t raw_score_thresh;
  memcpy(&raw_score_thresh, &tmp_score_thresh, sizeof(tmp_score_thresh));
  if (raw_score_thresh != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData X_Autonomous3DParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    X_Autonomous3DParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*X_Autonomous3DParam::GetClassData() const { return &_class_data_; }


void X_Autonomous3DParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<X_Autonomous3DParam*>(&to_msg);
  auto& from = static_cast<const X_Autonomous3DParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.X_Autonomous3DParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.point_cloud_range_.MergeFrom(from._impl_.point_cloud_range_);
  _this->_impl_.voxel_size_.MergeFrom(from._impl_.voxel_size_);
  _this->_impl_.iou_quality_alpha_.MergeFrom(from._impl_.iou_quality_alpha_);
  _this->_impl_.post_point_cloud_range_.MergeFrom(from._impl_.post_point_cloud_range_);
  _this->_impl_.nms_thresh_.MergeFrom(from._impl_.nms_thresh_);
  if (from._internal_has_output_names()) {
    _this->_internal_mutable_output_names()->::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer::MergeFrom(
        from._internal_output_names());
  }
  if (from._internal_points_dim() != 0) {
    _this->_internal_set_points_dim(from._internal_points_dim());
  }
  if (from._internal_max_points_num() != 0) {
    _this->_internal_set_max_points_num(from._internal_max_points_num());
  }
  if (from._internal_max_voxels_num() != 0) {
    _this->_internal_set_max_voxels_num(from._internal_max_voxels_num());
  }
  if (from._internal_in_channels() != 0) {
    _this->_internal_set_in_channels(from._internal_in_channels());
  }
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_out_size_facter = from._internal_out_size_facter();
  uint32_t raw_out_size_facter;
  memcpy(&raw_out_size_facter, &tmp_out_size_facter, sizeof(tmp_out_size_facter));
  if (raw_out_size_facter != 0) {
    _this->_internal_set_out_size_facter(from._internal_out_size_facter());
  }
  if (from._internal_bbox_pre_size() != 0) {
    _this->_internal_set_bbox_pre_size(from._internal_bbox_pre_size());
  }
  if (from._internal_bbox_max_size() != 0) {
    _this->_internal_set_bbox_max_size(from._internal_bbox_max_size());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score_thresh = from._internal_score_thresh();
  uint32_t raw_score_thresh;
  memcpy(&raw_score_thresh, &tmp_score_thresh, sizeof(tmp_score_thresh));
  if (raw_score_thresh != 0) {
    _this->_internal_set_score_thresh(from._internal_score_thresh());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void X_Autonomous3DParam::CopyFrom(const X_Autonomous3DParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.X_Autonomous3DParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool X_Autonomous3DParam::IsInitialized() const {
  return true;
}

void X_Autonomous3DParam::InternalSwap(X_Autonomous3DParam* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.point_cloud_range_.InternalSwap(&other->_impl_.point_cloud_range_);
  _impl_.voxel_size_.InternalSwap(&other->_impl_.voxel_size_);
  _impl_.iou_quality_alpha_.InternalSwap(&other->_impl_.iou_quality_alpha_);
  _impl_.post_point_cloud_range_.InternalSwap(&other->_impl_.post_point_cloud_range_);
  _impl_.nms_thresh_.InternalSwap(&other->_impl_.nms_thresh_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(X_Autonomous3DParam, _impl_.score_thresh_)
      + sizeof(X_Autonomous3DParam::_impl_.score_thresh_)
      - PROTOBUF_FIELD_OFFSET(X_Autonomous3DParam, _impl_.output_names_)>(
          reinterpret_cast<char*>(&_impl_.output_names_),
          reinterpret_cast<char*>(&other->_impl_.output_names_));
}

::PROTOBUF_NAMESPACE_ID::Metadata X_Autonomous3DParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[49]);
}

// ===================================================================

class EfficientDetD2Param_OutputInfo::_Internal {
 public:
};

EfficientDetD2Param_OutputInfo::EfficientDetD2Param_OutputInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.EfficientDetD2Param.OutputInfo)
}
EfficientDetD2Param_OutputInfo::EfficientDetD2Param_OutputInfo(const EfficientDetD2Param_OutputInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  EfficientDetD2Param_OutputInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.type_){}
    , decltype(_impl_.level_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.type_, &from._impl_.type_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.level_) -
    reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.level_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.EfficientDetD2Param.OutputInfo)
}

inline void EfficientDetD2Param_OutputInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.type_){0}
    , decltype(_impl_.level_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

EfficientDetD2Param_OutputInfo::~EfficientDetD2Param_OutputInfo() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.EfficientDetD2Param.OutputInfo)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void EfficientDetD2Param_OutputInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.name_.Destroy();
}

void EfficientDetD2Param_OutputInfo::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void EfficientDetD2Param_OutputInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.EfficientDetD2Param.OutputInfo)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.name_.ClearToEmpty();
  ::memset(&_impl_.type_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.level_) -
      reinterpret_cast<char*>(&_impl_.type_)) + sizeof(_impl_.level_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* EfficientDetD2Param_OutputInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.EfficientDetD2Param.OutputType type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_type(static_cast<::vitis::ai::proto::EfficientDetD2Param_OutputType>(val));
        } else
          goto handle_unusual;
        continue;
      // int32 level = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.level_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string name = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.EfficientDetD2Param.OutputInfo.name"));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* EfficientDetD2Param_OutputInfo::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.EfficientDetD2Param.OutputInfo)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.EfficientDetD2Param.OutputType type = 1;
  if (this->_internal_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      1, this->_internal_type(), target);
  }

  // int32 level = 2;
  if (this->_internal_level() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_level(), target);
  }

  // string name = 3;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.EfficientDetD2Param.OutputInfo.name");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_name(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.EfficientDetD2Param.OutputInfo)
  return target;
}

size_t EfficientDetD2Param_OutputInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.EfficientDetD2Param.OutputInfo)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string name = 3;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // .vitis.ai.proto.EfficientDetD2Param.OutputType type = 1;
  if (this->_internal_type() != 0) {
    total_size += 1 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_type());
  }

  // int32 level = 2;
  if (this->_internal_level() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_level());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData EfficientDetD2Param_OutputInfo::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    EfficientDetD2Param_OutputInfo::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*EfficientDetD2Param_OutputInfo::GetClassData() const { return &_class_data_; }


void EfficientDetD2Param_OutputInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<EfficientDetD2Param_OutputInfo*>(&to_msg);
  auto& from = static_cast<const EfficientDetD2Param_OutputInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.EfficientDetD2Param.OutputInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_name().empty()) {
    _this->_internal_set_name(from._internal_name());
  }
  if (from._internal_type() != 0) {
    _this->_internal_set_type(from._internal_type());
  }
  if (from._internal_level() != 0) {
    _this->_internal_set_level(from._internal_level());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void EfficientDetD2Param_OutputInfo::CopyFrom(const EfficientDetD2Param_OutputInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.EfficientDetD2Param.OutputInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool EfficientDetD2Param_OutputInfo::IsInitialized() const {
  return true;
}

void EfficientDetD2Param_OutputInfo::InternalSwap(EfficientDetD2Param_OutputInfo* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(EfficientDetD2Param_OutputInfo, _impl_.level_)
      + sizeof(EfficientDetD2Param_OutputInfo::_impl_.level_)
      - PROTOBUF_FIELD_OFFSET(EfficientDetD2Param_OutputInfo, _impl_.type_)>(
          reinterpret_cast<char*>(&_impl_.type_),
          reinterpret_cast<char*>(&other->_impl_.type_));
}

::PROTOBUF_NAMESPACE_ID::Metadata EfficientDetD2Param_OutputInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[50]);
}

// ===================================================================

class EfficientDetD2Param_AnchorInfo::_Internal {
 public:
};

EfficientDetD2Param_AnchorInfo::EfficientDetD2Param_AnchorInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.EfficientDetD2Param.AnchorInfo)
}
EfficientDetD2Param_AnchorInfo::EfficientDetD2Param_AnchorInfo(const EfficientDetD2Param_AnchorInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  EfficientDetD2Param_AnchorInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.anchor_scales_){from._impl_.anchor_scales_}
    , decltype(_impl_.aspect_ratio_){from._impl_.aspect_ratio_}
    , decltype(_impl_.min_level_){}
    , decltype(_impl_.max_level_){}
    , decltype(_impl_.num_scales_){}
    , decltype(_impl_.image_width_){}
    , decltype(_impl_.image_height_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.min_level_, &from._impl_.min_level_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.image_height_) -
    reinterpret_cast<char*>(&_impl_.min_level_)) + sizeof(_impl_.image_height_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.EfficientDetD2Param.AnchorInfo)
}

inline void EfficientDetD2Param_AnchorInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.anchor_scales_){arena}
    , decltype(_impl_.aspect_ratio_){arena}
    , decltype(_impl_.min_level_){0}
    , decltype(_impl_.max_level_){0}
    , decltype(_impl_.num_scales_){0}
    , decltype(_impl_.image_width_){0}
    , decltype(_impl_.image_height_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

EfficientDetD2Param_AnchorInfo::~EfficientDetD2Param_AnchorInfo() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.EfficientDetD2Param.AnchorInfo)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void EfficientDetD2Param_AnchorInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.anchor_scales_.~RepeatedField();
  _impl_.aspect_ratio_.~RepeatedField();
}

void EfficientDetD2Param_AnchorInfo::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void EfficientDetD2Param_AnchorInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.EfficientDetD2Param.AnchorInfo)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.anchor_scales_.Clear();
  _impl_.aspect_ratio_.Clear();
  ::memset(&_impl_.min_level_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.image_height_) -
      reinterpret_cast<char*>(&_impl_.min_level_)) + sizeof(_impl_.image_height_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* EfficientDetD2Param_AnchorInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 min_level = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.min_level_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 max_level = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.max_level_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 num_scales = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.num_scales_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated float anchor_scales = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_anchor_scales(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 37) {
          _internal_add_anchor_scales(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated float aspect_ratio = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_aspect_ratio(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 45) {
          _internal_add_aspect_ratio(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 image_width = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.image_width_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 image_height = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _impl_.image_height_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* EfficientDetD2Param_AnchorInfo::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.EfficientDetD2Param.AnchorInfo)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 min_level = 1;
  if (this->_internal_min_level() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_min_level(), target);
  }

  // int32 max_level = 2;
  if (this->_internal_max_level() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_max_level(), target);
  }

  // int32 num_scales = 3;
  if (this->_internal_num_scales() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_num_scales(), target);
  }

  // repeated float anchor_scales = 4;
  if (this->_internal_anchor_scales_size() > 0) {
    target = stream->WriteFixedPacked(4, _internal_anchor_scales(), target);
  }

  // repeated float aspect_ratio = 5;
  if (this->_internal_aspect_ratio_size() > 0) {
    target = stream->WriteFixedPacked(5, _internal_aspect_ratio(), target);
  }

  // int32 image_width = 6;
  if (this->_internal_image_width() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(6, this->_internal_image_width(), target);
  }

  // int32 image_height = 7;
  if (this->_internal_image_height() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(7, this->_internal_image_height(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.EfficientDetD2Param.AnchorInfo)
  return target;
}

size_t EfficientDetD2Param_AnchorInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.EfficientDetD2Param.AnchorInfo)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float anchor_scales = 4;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_anchor_scales_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated float aspect_ratio = 5;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_aspect_ratio_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // int32 min_level = 1;
  if (this->_internal_min_level() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_min_level());
  }

  // int32 max_level = 2;
  if (this->_internal_max_level() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_max_level());
  }

  // int32 num_scales = 3;
  if (this->_internal_num_scales() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_scales());
  }

  // int32 image_width = 6;
  if (this->_internal_image_width() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_image_width());
  }

  // int32 image_height = 7;
  if (this->_internal_image_height() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_image_height());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData EfficientDetD2Param_AnchorInfo::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    EfficientDetD2Param_AnchorInfo::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*EfficientDetD2Param_AnchorInfo::GetClassData() const { return &_class_data_; }


void EfficientDetD2Param_AnchorInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<EfficientDetD2Param_AnchorInfo*>(&to_msg);
  auto& from = static_cast<const EfficientDetD2Param_AnchorInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.EfficientDetD2Param.AnchorInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.anchor_scales_.MergeFrom(from._impl_.anchor_scales_);
  _this->_impl_.aspect_ratio_.MergeFrom(from._impl_.aspect_ratio_);
  if (from._internal_min_level() != 0) {
    _this->_internal_set_min_level(from._internal_min_level());
  }
  if (from._internal_max_level() != 0) {
    _this->_internal_set_max_level(from._internal_max_level());
  }
  if (from._internal_num_scales() != 0) {
    _this->_internal_set_num_scales(from._internal_num_scales());
  }
  if (from._internal_image_width() != 0) {
    _this->_internal_set_image_width(from._internal_image_width());
  }
  if (from._internal_image_height() != 0) {
    _this->_internal_set_image_height(from._internal_image_height());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void EfficientDetD2Param_AnchorInfo::CopyFrom(const EfficientDetD2Param_AnchorInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.EfficientDetD2Param.AnchorInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool EfficientDetD2Param_AnchorInfo::IsInitialized() const {
  return true;
}

void EfficientDetD2Param_AnchorInfo::InternalSwap(EfficientDetD2Param_AnchorInfo* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.anchor_scales_.InternalSwap(&other->_impl_.anchor_scales_);
  _impl_.aspect_ratio_.InternalSwap(&other->_impl_.aspect_ratio_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(EfficientDetD2Param_AnchorInfo, _impl_.image_height_)
      + sizeof(EfficientDetD2Param_AnchorInfo::_impl_.image_height_)
      - PROTOBUF_FIELD_OFFSET(EfficientDetD2Param_AnchorInfo, _impl_.min_level_)>(
          reinterpret_cast<char*>(&_impl_.min_level_),
          reinterpret_cast<char*>(&other->_impl_.min_level_));
}

::PROTOBUF_NAMESPACE_ID::Metadata EfficientDetD2Param_AnchorInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[51]);
}

// ===================================================================

class EfficientDetD2Param::_Internal {
 public:
  static const ::vitis::ai::proto::EfficientDetD2Param_AnchorInfo& anchor_info(const EfficientDetD2Param* msg);
};

const ::vitis::ai::proto::EfficientDetD2Param_AnchorInfo&
EfficientDetD2Param::_Internal::anchor_info(const EfficientDetD2Param* msg) {
  return *msg->_impl_.anchor_info_;
}
EfficientDetD2Param::EfficientDetD2Param(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.EfficientDetD2Param)
}
EfficientDetD2Param::EfficientDetD2Param(const EfficientDetD2Param& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  EfficientDetD2Param* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.output_info_){from._impl_.output_info_}
    , decltype(_impl_.anchor_info_){nullptr}
    , decltype(_impl_.num_classes_){}
    , decltype(_impl_.pre_nms_num_){}
    , decltype(_impl_.nms_threshold_){}
    , decltype(_impl_.conf_threshold_){}
    , decltype(_impl_.nms_output_num_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_anchor_info()) {
    _this->_impl_.anchor_info_ = new ::vitis::ai::proto::EfficientDetD2Param_AnchorInfo(*from._impl_.anchor_info_);
  }
  ::memcpy(&_impl_.num_classes_, &from._impl_.num_classes_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.nms_output_num_) -
    reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.nms_output_num_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.EfficientDetD2Param)
}

inline void EfficientDetD2Param::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.output_info_){arena}
    , decltype(_impl_.anchor_info_){nullptr}
    , decltype(_impl_.num_classes_){0}
    , decltype(_impl_.pre_nms_num_){0}
    , decltype(_impl_.nms_threshold_){0}
    , decltype(_impl_.conf_threshold_){0}
    , decltype(_impl_.nms_output_num_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

EfficientDetD2Param::~EfficientDetD2Param() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.EfficientDetD2Param)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void EfficientDetD2Param::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.output_info_.~RepeatedPtrField();
  if (this != internal_default_instance()) delete _impl_.anchor_info_;
}

void EfficientDetD2Param::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void EfficientDetD2Param::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.EfficientDetD2Param)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.output_info_.Clear();
  if (GetArenaForAllocation() == nullptr && _impl_.anchor_info_ != nullptr) {
    delete _impl_.anchor_info_;
  }
  _impl_.anchor_info_ = nullptr;
  ::memset(&_impl_.num_classes_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.nms_output_num_) -
      reinterpret_cast<char*>(&_impl_.num_classes_)) + sizeof(_impl_.nms_output_num_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* EfficientDetD2Param::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.EfficientDetD2Param.AnchorInfo anchor_info = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_anchor_info(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 num_classes = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.num_classes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 pre_nms_num = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.pre_nms_num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float nms_threshold = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          _impl_.nms_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float conf_threshold = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 45)) {
          _impl_.conf_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // int32 nms_output_num = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _impl_.nms_output_num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.EfficientDetD2Param.OutputInfo output_info = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_output_info(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* EfficientDetD2Param::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.EfficientDetD2Param)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.EfficientDetD2Param.AnchorInfo anchor_info = 1;
  if (this->_internal_has_anchor_info()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::anchor_info(this),
        _Internal::anchor_info(this).GetCachedSize(), target, stream);
  }

  // int32 num_classes = 2;
  if (this->_internal_num_classes() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_num_classes(), target);
  }

  // int32 pre_nms_num = 3;
  if (this->_internal_pre_nms_num() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_pre_nms_num(), target);
  }

  // float nms_threshold = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(4, this->_internal_nms_threshold(), target);
  }

  // float conf_threshold = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(5, this->_internal_conf_threshold(), target);
  }

  // int32 nms_output_num = 6;
  if (this->_internal_nms_output_num() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(6, this->_internal_nms_output_num(), target);
  }

  // repeated .vitis.ai.proto.EfficientDetD2Param.OutputInfo output_info = 7;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_output_info_size()); i < n; i++) {
    const auto& repfield = this->_internal_output_info(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(7, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.EfficientDetD2Param)
  return target;
}

size_t EfficientDetD2Param::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.EfficientDetD2Param)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.EfficientDetD2Param.OutputInfo output_info = 7;
  total_size += 1UL * this->_internal_output_info_size();
  for (const auto& msg : this->_impl_.output_info_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // .vitis.ai.proto.EfficientDetD2Param.AnchorInfo anchor_info = 1;
  if (this->_internal_has_anchor_info()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.anchor_info_);
  }

  // int32 num_classes = 2;
  if (this->_internal_num_classes() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_num_classes());
  }

  // int32 pre_nms_num = 3;
  if (this->_internal_pre_nms_num() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_pre_nms_num());
  }

  // float nms_threshold = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = this->_internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    total_size += 1 + 4;
  }

  // float conf_threshold = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = this->_internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    total_size += 1 + 4;
  }

  // int32 nms_output_num = 6;
  if (this->_internal_nms_output_num() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_nms_output_num());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData EfficientDetD2Param::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    EfficientDetD2Param::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*EfficientDetD2Param::GetClassData() const { return &_class_data_; }


void EfficientDetD2Param::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<EfficientDetD2Param*>(&to_msg);
  auto& from = static_cast<const EfficientDetD2Param&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.EfficientDetD2Param)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.output_info_.MergeFrom(from._impl_.output_info_);
  if (from._internal_has_anchor_info()) {
    _this->_internal_mutable_anchor_info()->::vitis::ai::proto::EfficientDetD2Param_AnchorInfo::MergeFrom(
        from._internal_anchor_info());
  }
  if (from._internal_num_classes() != 0) {
    _this->_internal_set_num_classes(from._internal_num_classes());
  }
  if (from._internal_pre_nms_num() != 0) {
    _this->_internal_set_pre_nms_num(from._internal_pre_nms_num());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_nms_threshold = from._internal_nms_threshold();
  uint32_t raw_nms_threshold;
  memcpy(&raw_nms_threshold, &tmp_nms_threshold, sizeof(tmp_nms_threshold));
  if (raw_nms_threshold != 0) {
    _this->_internal_set_nms_threshold(from._internal_nms_threshold());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_conf_threshold = from._internal_conf_threshold();
  uint32_t raw_conf_threshold;
  memcpy(&raw_conf_threshold, &tmp_conf_threshold, sizeof(tmp_conf_threshold));
  if (raw_conf_threshold != 0) {
    _this->_internal_set_conf_threshold(from._internal_conf_threshold());
  }
  if (from._internal_nms_output_num() != 0) {
    _this->_internal_set_nms_output_num(from._internal_nms_output_num());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void EfficientDetD2Param::CopyFrom(const EfficientDetD2Param& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.EfficientDetD2Param)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool EfficientDetD2Param::IsInitialized() const {
  return true;
}

void EfficientDetD2Param::InternalSwap(EfficientDetD2Param* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.output_info_.InternalSwap(&other->_impl_.output_info_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(EfficientDetD2Param, _impl_.nms_output_num_)
      + sizeof(EfficientDetD2Param::_impl_.nms_output_num_)
      - PROTOBUF_FIELD_OFFSET(EfficientDetD2Param, _impl_.anchor_info_)>(
          reinterpret_cast<char*>(&_impl_.anchor_info_),
          reinterpret_cast<char*>(&other->_impl_.anchor_info_));
}

::PROTOBUF_NAMESPACE_ID::Metadata EfficientDetD2Param::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[52]);
}

// ===================================================================

class SubgraphParam_InputParam::_Internal {
 public:
};

SubgraphParam_InputParam::SubgraphParam_InputParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.SubgraphParam.InputParam)
}
SubgraphParam_InputParam::SubgraphParam_InputParam(const SubgraphParam_InputParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  SubgraphParam_InputParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.previous_output_tensor_){}
    , decltype(_impl_.previous_model_idx_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.previous_output_tensor_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.previous_output_tensor_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_previous_output_tensor().empty()) {
    _this->_impl_.previous_output_tensor_.Set(from._internal_previous_output_tensor(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.previous_model_idx_ = from._impl_.previous_model_idx_;
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.SubgraphParam.InputParam)
}

inline void SubgraphParam_InputParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.previous_output_tensor_){}
    , decltype(_impl_.previous_model_idx_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.previous_output_tensor_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.previous_output_tensor_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

SubgraphParam_InputParam::~SubgraphParam_InputParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.SubgraphParam.InputParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void SubgraphParam_InputParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.name_.Destroy();
  _impl_.previous_output_tensor_.Destroy();
}

void SubgraphParam_InputParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void SubgraphParam_InputParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.SubgraphParam.InputParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.name_.ClearToEmpty();
  _impl_.previous_output_tensor_.ClearToEmpty();
  _impl_.previous_model_idx_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SubgraphParam_InputParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.SubgraphParam.InputParam.name"));
        } else
          goto handle_unusual;
        continue;
      // int32 previous_model_idx = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.previous_model_idx_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string previous_output_tensor = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_previous_output_tensor();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.SubgraphParam.InputParam.previous_output_tensor"));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* SubgraphParam_InputParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.SubgraphParam.InputParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.SubgraphParam.InputParam.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // int32 previous_model_idx = 2;
  if (this->_internal_previous_model_idx() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_previous_model_idx(), target);
  }

  // string previous_output_tensor = 3;
  if (!this->_internal_previous_output_tensor().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_previous_output_tensor().data(), static_cast<int>(this->_internal_previous_output_tensor().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.SubgraphParam.InputParam.previous_output_tensor");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_previous_output_tensor(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.SubgraphParam.InputParam)
  return target;
}

size_t SubgraphParam_InputParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.SubgraphParam.InputParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // string previous_output_tensor = 3;
  if (!this->_internal_previous_output_tensor().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_previous_output_tensor());
  }

  // int32 previous_model_idx = 2;
  if (this->_internal_previous_model_idx() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_previous_model_idx());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData SubgraphParam_InputParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    SubgraphParam_InputParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SubgraphParam_InputParam::GetClassData() const { return &_class_data_; }


void SubgraphParam_InputParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<SubgraphParam_InputParam*>(&to_msg);
  auto& from = static_cast<const SubgraphParam_InputParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.SubgraphParam.InputParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_name().empty()) {
    _this->_internal_set_name(from._internal_name());
  }
  if (!from._internal_previous_output_tensor().empty()) {
    _this->_internal_set_previous_output_tensor(from._internal_previous_output_tensor());
  }
  if (from._internal_previous_model_idx() != 0) {
    _this->_internal_set_previous_model_idx(from._internal_previous_model_idx());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void SubgraphParam_InputParam::CopyFrom(const SubgraphParam_InputParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.SubgraphParam.InputParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SubgraphParam_InputParam::IsInitialized() const {
  return true;
}

void SubgraphParam_InputParam::InternalSwap(SubgraphParam_InputParam* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.previous_output_tensor_, lhs_arena,
      &other->_impl_.previous_output_tensor_, rhs_arena
  );
  swap(_impl_.previous_model_idx_, other->_impl_.previous_model_idx_);
}

::PROTOBUF_NAMESPACE_ID::Metadata SubgraphParam_InputParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[53]);
}

// ===================================================================

class SubgraphParam::_Internal {
 public:
};

SubgraphParam::SubgraphParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.SubgraphParam)
}
SubgraphParam::SubgraphParam(const SubgraphParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  SubgraphParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.input_){from._impl_.input_}
    , decltype(_impl_.subgraph_idx_){}
    , decltype(_impl_.cycles_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.subgraph_idx_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.subgraph_idx_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_subgraph_idx().empty()) {
    _this->_impl_.subgraph_idx_.Set(from._internal_subgraph_idx(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.cycles_ = from._impl_.cycles_;
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.SubgraphParam)
}

inline void SubgraphParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.input_){arena}
    , decltype(_impl_.subgraph_idx_){}
    , decltype(_impl_.cycles_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.subgraph_idx_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.subgraph_idx_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

SubgraphParam::~SubgraphParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.SubgraphParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void SubgraphParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.input_.~RepeatedPtrField();
  _impl_.subgraph_idx_.Destroy();
}

void SubgraphParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void SubgraphParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.SubgraphParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.input_.Clear();
  _impl_.subgraph_idx_.ClearToEmpty();
  _impl_.cycles_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SubgraphParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 cycles = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.cycles_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string subgraph_idx = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_subgraph_idx();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.SubgraphParam.subgraph_idx"));
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.SubgraphParam.InputParam input = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_input(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* SubgraphParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.SubgraphParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 cycles = 1;
  if (this->_internal_cycles() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_cycles(), target);
  }

  // string subgraph_idx = 2;
  if (!this->_internal_subgraph_idx().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_subgraph_idx().data(), static_cast<int>(this->_internal_subgraph_idx().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.SubgraphParam.subgraph_idx");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_subgraph_idx(), target);
  }

  // repeated .vitis.ai.proto.SubgraphParam.InputParam input = 3;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_input_size()); i < n; i++) {
    const auto& repfield = this->_internal_input(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.SubgraphParam)
  return target;
}

size_t SubgraphParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.SubgraphParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.SubgraphParam.InputParam input = 3;
  total_size += 1UL * this->_internal_input_size();
  for (const auto& msg : this->_impl_.input_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // string subgraph_idx = 2;
  if (!this->_internal_subgraph_idx().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_subgraph_idx());
  }

  // int32 cycles = 1;
  if (this->_internal_cycles() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_cycles());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData SubgraphParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    SubgraphParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SubgraphParam::GetClassData() const { return &_class_data_; }


void SubgraphParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<SubgraphParam*>(&to_msg);
  auto& from = static_cast<const SubgraphParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.SubgraphParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.input_.MergeFrom(from._impl_.input_);
  if (!from._internal_subgraph_idx().empty()) {
    _this->_internal_set_subgraph_idx(from._internal_subgraph_idx());
  }
  if (from._internal_cycles() != 0) {
    _this->_internal_set_cycles(from._internal_cycles());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void SubgraphParam::CopyFrom(const SubgraphParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.SubgraphParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SubgraphParam::IsInitialized() const {
  return true;
}

void SubgraphParam::InternalSwap(SubgraphParam* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.input_.InternalSwap(&other->_impl_.input_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.subgraph_idx_, lhs_arena,
      &other->_impl_.subgraph_idx_, rhs_arena
  );
  swap(_impl_.cycles_, other->_impl_.cycles_);
}

::PROTOBUF_NAMESPACE_ID::Metadata SubgraphParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[54]);
}

// ===================================================================

class DpuModelParam::_Internal {
 public:
  static const ::vitis::ai::proto::RefineDetParam& refine_det_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::YoloV3Param& yolo_v3_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::SSDParam& ssd_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::ClassificationParam& classification_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::DenseBoxParam& dense_box_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::MultiTaskParam& multi_task_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::RoadlineParam& roadline_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::SegmentationParam& segmentation_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::LaneParam& lane_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::BlinkerParam& blinker_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::SegdetParam& segdet_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::RoadlineDeephiParam& roadline_dp_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::FaceQuality5ptParam& face_quality5pt_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::TfssdParam& tfssd_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::OpenPoseParam& open_pose_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::ReidParam& reid_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::MedicalRefineDetParam& medical_refine_det_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::PlatenumParam& platenum_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::RetinaFaceParam& retinaface_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::TFRefineDetParam& tfrefinedet_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::PointPillarsNusParam& pointpillars_nus_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::Segmentation3DParam& segmentation_3d_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::YoloV5Param& yolo_v5_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::BTSParam& bts_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::FairMotParam& fair_mot_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::X_Autonomous3DParam& x_autonomous3d_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::PointPillarsKittiParam& pointpillars_kitti_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::SoloParam& solo_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::ClassificationParam& vehicleclassification_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::EfficientDetD2Param& efficientdet_d2_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::MovenetParam& movenet_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::RcanParam& rcan_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::YoloV6Param& yolo_v6_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::FcosParam& fcos_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::YoloV8Param& yolo_v8_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::RetinaNetParam& retinanet_param(const DpuModelParam* msg);
  static const ::vitis::ai::proto::YoloV7Param& yolo_v7_param(const DpuModelParam* msg);
};

const ::vitis::ai::proto::RefineDetParam&
DpuModelParam::_Internal::refine_det_param(const DpuModelParam* msg) {
  return *msg->_impl_.refine_det_param_;
}
const ::vitis::ai::proto::YoloV3Param&
DpuModelParam::_Internal::yolo_v3_param(const DpuModelParam* msg) {
  return *msg->_impl_.yolo_v3_param_;
}
const ::vitis::ai::proto::SSDParam&
DpuModelParam::_Internal::ssd_param(const DpuModelParam* msg) {
  return *msg->_impl_.ssd_param_;
}
const ::vitis::ai::proto::ClassificationParam&
DpuModelParam::_Internal::classification_param(const DpuModelParam* msg) {
  return *msg->_impl_.classification_param_;
}
const ::vitis::ai::proto::DenseBoxParam&
DpuModelParam::_Internal::dense_box_param(const DpuModelParam* msg) {
  return *msg->_impl_.dense_box_param_;
}
const ::vitis::ai::proto::MultiTaskParam&
DpuModelParam::_Internal::multi_task_param(const DpuModelParam* msg) {
  return *msg->_impl_.multi_task_param_;
}
const ::vitis::ai::proto::RoadlineParam&
DpuModelParam::_Internal::roadline_param(const DpuModelParam* msg) {
  return *msg->_impl_.roadline_param_;
}
const ::vitis::ai::proto::SegmentationParam&
DpuModelParam::_Internal::segmentation_param(const DpuModelParam* msg) {
  return *msg->_impl_.segmentation_param_;
}
const ::vitis::ai::proto::LaneParam&
DpuModelParam::_Internal::lane_param(const DpuModelParam* msg) {
  return *msg->_impl_.lane_param_;
}
const ::vitis::ai::proto::BlinkerParam&
DpuModelParam::_Internal::blinker_param(const DpuModelParam* msg) {
  return *msg->_impl_.blinker_param_;
}
const ::vitis::ai::proto::SegdetParam&
DpuModelParam::_Internal::segdet_param(const DpuModelParam* msg) {
  return *msg->_impl_.segdet_param_;
}
const ::vitis::ai::proto::RoadlineDeephiParam&
DpuModelParam::_Internal::roadline_dp_param(const DpuModelParam* msg) {
  return *msg->_impl_.roadline_dp_param_;
}
const ::vitis::ai::proto::FaceQuality5ptParam&
DpuModelParam::_Internal::face_quality5pt_param(const DpuModelParam* msg) {
  return *msg->_impl_.face_quality5pt_param_;
}
const ::vitis::ai::proto::TfssdParam&
DpuModelParam::_Internal::tfssd_param(const DpuModelParam* msg) {
  return *msg->_impl_.tfssd_param_;
}
const ::vitis::ai::proto::OpenPoseParam&
DpuModelParam::_Internal::open_pose_param(const DpuModelParam* msg) {
  return *msg->_impl_.open_pose_param_;
}
const ::vitis::ai::proto::ReidParam&
DpuModelParam::_Internal::reid_param(const DpuModelParam* msg) {
  return *msg->_impl_.reid_param_;
}
const ::vitis::ai::proto::MedicalRefineDetParam&
DpuModelParam::_Internal::medical_refine_det_param(const DpuModelParam* msg) {
  return *msg->_impl_.medical_refine_det_param_;
}
const ::vitis::ai::proto::PlatenumParam&
DpuModelParam::_Internal::platenum_param(const DpuModelParam* msg) {
  return *msg->_impl_.platenum_param_;
}
const ::vitis::ai::proto::RetinaFaceParam&
DpuModelParam::_Internal::retinaface_param(const DpuModelParam* msg) {
  return *msg->_impl_.retinaface_param_;
}
const ::vitis::ai::proto::TFRefineDetParam&
DpuModelParam::_Internal::tfrefinedet_param(const DpuModelParam* msg) {
  return *msg->_impl_.tfrefinedet_param_;
}
const ::vitis::ai::proto::PointPillarsNusParam&
DpuModelParam::_Internal::pointpillars_nus_param(const DpuModelParam* msg) {
  return *msg->_impl_.pointpillars_nus_param_;
}
const ::vitis::ai::proto::Segmentation3DParam&
DpuModelParam::_Internal::segmentation_3d_param(const DpuModelParam* msg) {
  return *msg->_impl_.segmentation_3d_param_;
}
const ::vitis::ai::proto::YoloV5Param&
DpuModelParam::_Internal::yolo_v5_param(const DpuModelParam* msg) {
  return *msg->_impl_.yolo_v5_param_;
}
const ::vitis::ai::proto::BTSParam&
DpuModelParam::_Internal::bts_param(const DpuModelParam* msg) {
  return *msg->_impl_.bts_param_;
}
const ::vitis::ai::proto::FairMotParam&
DpuModelParam::_Internal::fair_mot_param(const DpuModelParam* msg) {
  return *msg->_impl_.fair_mot_param_;
}
const ::vitis::ai::proto::X_Autonomous3DParam&
DpuModelParam::_Internal::x_autonomous3d_param(const DpuModelParam* msg) {
  return *msg->_impl_.x_autonomous3d_param_;
}
const ::vitis::ai::proto::PointPillarsKittiParam&
DpuModelParam::_Internal::pointpillars_kitti_param(const DpuModelParam* msg) {
  return *msg->_impl_.pointpillars_kitti_param_;
}
const ::vitis::ai::proto::SoloParam&
DpuModelParam::_Internal::solo_param(const DpuModelParam* msg) {
  return *msg->_impl_.solo_param_;
}
const ::vitis::ai::proto::ClassificationParam&
DpuModelParam::_Internal::vehicleclassification_param(const DpuModelParam* msg) {
  return *msg->_impl_.vehicleclassification_param_;
}
const ::vitis::ai::proto::EfficientDetD2Param&
DpuModelParam::_Internal::efficientdet_d2_param(const DpuModelParam* msg) {
  return *msg->_impl_.efficientdet_d2_param_;
}
const ::vitis::ai::proto::MovenetParam&
DpuModelParam::_Internal::movenet_param(const DpuModelParam* msg) {
  return *msg->_impl_.movenet_param_;
}
const ::vitis::ai::proto::RcanParam&
DpuModelParam::_Internal::rcan_param(const DpuModelParam* msg) {
  return *msg->_impl_.rcan_param_;
}
const ::vitis::ai::proto::YoloV6Param&
DpuModelParam::_Internal::yolo_v6_param(const DpuModelParam* msg) {
  return *msg->_impl_.yolo_v6_param_;
}
const ::vitis::ai::proto::FcosParam&
DpuModelParam::_Internal::fcos_param(const DpuModelParam* msg) {
  return *msg->_impl_.fcos_param_;
}
const ::vitis::ai::proto::YoloV8Param&
DpuModelParam::_Internal::yolo_v8_param(const DpuModelParam* msg) {
  return *msg->_impl_.yolo_v8_param_;
}
const ::vitis::ai::proto::RetinaNetParam&
DpuModelParam::_Internal::retinanet_param(const DpuModelParam* msg) {
  return *msg->_impl_.retinanet_param_;
}
const ::vitis::ai::proto::YoloV7Param&
DpuModelParam::_Internal::yolo_v7_param(const DpuModelParam* msg) {
  return *msg->_impl_.yolo_v7_param_;
}
DpuModelParam::DpuModelParam(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.DpuModelParam)
}
DpuModelParam::DpuModelParam(const DpuModelParam& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  DpuModelParam* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.kernel_){from._impl_.kernel_}
    , decltype(_impl_.subgraph_){from._impl_.subgraph_}
    , decltype(_impl_.name_){}
    , decltype(_impl_.refine_det_param_){nullptr}
    , decltype(_impl_.yolo_v3_param_){nullptr}
    , decltype(_impl_.ssd_param_){nullptr}
    , decltype(_impl_.classification_param_){nullptr}
    , decltype(_impl_.dense_box_param_){nullptr}
    , decltype(_impl_.multi_task_param_){nullptr}
    , decltype(_impl_.roadline_param_){nullptr}
    , decltype(_impl_.segmentation_param_){nullptr}
    , decltype(_impl_.lane_param_){nullptr}
    , decltype(_impl_.blinker_param_){nullptr}
    , decltype(_impl_.segdet_param_){nullptr}
    , decltype(_impl_.roadline_dp_param_){nullptr}
    , decltype(_impl_.face_quality5pt_param_){nullptr}
    , decltype(_impl_.tfssd_param_){nullptr}
    , decltype(_impl_.open_pose_param_){nullptr}
    , decltype(_impl_.reid_param_){nullptr}
    , decltype(_impl_.medical_refine_det_param_){nullptr}
    , decltype(_impl_.platenum_param_){nullptr}
    , decltype(_impl_.retinaface_param_){nullptr}
    , decltype(_impl_.tfrefinedet_param_){nullptr}
    , decltype(_impl_.pointpillars_nus_param_){nullptr}
    , decltype(_impl_.segmentation_3d_param_){nullptr}
    , decltype(_impl_.yolo_v5_param_){nullptr}
    , decltype(_impl_.bts_param_){nullptr}
    , decltype(_impl_.fair_mot_param_){nullptr}
    , decltype(_impl_.x_autonomous3d_param_){nullptr}
    , decltype(_impl_.pointpillars_kitti_param_){nullptr}
    , decltype(_impl_.solo_param_){nullptr}
    , decltype(_impl_.vehicleclassification_param_){nullptr}
    , decltype(_impl_.efficientdet_d2_param_){nullptr}
    , decltype(_impl_.movenet_param_){nullptr}
    , decltype(_impl_.rcan_param_){nullptr}
    , decltype(_impl_.yolo_v6_param_){nullptr}
    , decltype(_impl_.fcos_param_){nullptr}
    , decltype(_impl_.yolo_v8_param_){nullptr}
    , decltype(_impl_.retinanet_param_){nullptr}
    , decltype(_impl_.yolo_v7_param_){nullptr}
    , decltype(_impl_.model_type_){}
    , decltype(_impl_.use_graph_runner_){}
    , decltype(_impl_.is_tf_){}
    , decltype(_impl_.order_type_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  if (from._internal_has_refine_det_param()) {
    _this->_impl_.refine_det_param_ = new ::vitis::ai::proto::RefineDetParam(*from._impl_.refine_det_param_);
  }
  if (from._internal_has_yolo_v3_param()) {
    _this->_impl_.yolo_v3_param_ = new ::vitis::ai::proto::YoloV3Param(*from._impl_.yolo_v3_param_);
  }
  if (from._internal_has_ssd_param()) {
    _this->_impl_.ssd_param_ = new ::vitis::ai::proto::SSDParam(*from._impl_.ssd_param_);
  }
  if (from._internal_has_classification_param()) {
    _this->_impl_.classification_param_ = new ::vitis::ai::proto::ClassificationParam(*from._impl_.classification_param_);
  }
  if (from._internal_has_dense_box_param()) {
    _this->_impl_.dense_box_param_ = new ::vitis::ai::proto::DenseBoxParam(*from._impl_.dense_box_param_);
  }
  if (from._internal_has_multi_task_param()) {
    _this->_impl_.multi_task_param_ = new ::vitis::ai::proto::MultiTaskParam(*from._impl_.multi_task_param_);
  }
  if (from._internal_has_roadline_param()) {
    _this->_impl_.roadline_param_ = new ::vitis::ai::proto::RoadlineParam(*from._impl_.roadline_param_);
  }
  if (from._internal_has_segmentation_param()) {
    _this->_impl_.segmentation_param_ = new ::vitis::ai::proto::SegmentationParam(*from._impl_.segmentation_param_);
  }
  if (from._internal_has_lane_param()) {
    _this->_impl_.lane_param_ = new ::vitis::ai::proto::LaneParam(*from._impl_.lane_param_);
  }
  if (from._internal_has_blinker_param()) {
    _this->_impl_.blinker_param_ = new ::vitis::ai::proto::BlinkerParam(*from._impl_.blinker_param_);
  }
  if (from._internal_has_segdet_param()) {
    _this->_impl_.segdet_param_ = new ::vitis::ai::proto::SegdetParam(*from._impl_.segdet_param_);
  }
  if (from._internal_has_roadline_dp_param()) {
    _this->_impl_.roadline_dp_param_ = new ::vitis::ai::proto::RoadlineDeephiParam(*from._impl_.roadline_dp_param_);
  }
  if (from._internal_has_face_quality5pt_param()) {
    _this->_impl_.face_quality5pt_param_ = new ::vitis::ai::proto::FaceQuality5ptParam(*from._impl_.face_quality5pt_param_);
  }
  if (from._internal_has_tfssd_param()) {
    _this->_impl_.tfssd_param_ = new ::vitis::ai::proto::TfssdParam(*from._impl_.tfssd_param_);
  }
  if (from._internal_has_open_pose_param()) {
    _this->_impl_.open_pose_param_ = new ::vitis::ai::proto::OpenPoseParam(*from._impl_.open_pose_param_);
  }
  if (from._internal_has_reid_param()) {
    _this->_impl_.reid_param_ = new ::vitis::ai::proto::ReidParam(*from._impl_.reid_param_);
  }
  if (from._internal_has_medical_refine_det_param()) {
    _this->_impl_.medical_refine_det_param_ = new ::vitis::ai::proto::MedicalRefineDetParam(*from._impl_.medical_refine_det_param_);
  }
  if (from._internal_has_platenum_param()) {
    _this->_impl_.platenum_param_ = new ::vitis::ai::proto::PlatenumParam(*from._impl_.platenum_param_);
  }
  if (from._internal_has_retinaface_param()) {
    _this->_impl_.retinaface_param_ = new ::vitis::ai::proto::RetinaFaceParam(*from._impl_.retinaface_param_);
  }
  if (from._internal_has_tfrefinedet_param()) {
    _this->_impl_.tfrefinedet_param_ = new ::vitis::ai::proto::TFRefineDetParam(*from._impl_.tfrefinedet_param_);
  }
  if (from._internal_has_pointpillars_nus_param()) {
    _this->_impl_.pointpillars_nus_param_ = new ::vitis::ai::proto::PointPillarsNusParam(*from._impl_.pointpillars_nus_param_);
  }
  if (from._internal_has_segmentation_3d_param()) {
    _this->_impl_.segmentation_3d_param_ = new ::vitis::ai::proto::Segmentation3DParam(*from._impl_.segmentation_3d_param_);
  }
  if (from._internal_has_yolo_v5_param()) {
    _this->_impl_.yolo_v5_param_ = new ::vitis::ai::proto::YoloV5Param(*from._impl_.yolo_v5_param_);
  }
  if (from._internal_has_bts_param()) {
    _this->_impl_.bts_param_ = new ::vitis::ai::proto::BTSParam(*from._impl_.bts_param_);
  }
  if (from._internal_has_fair_mot_param()) {
    _this->_impl_.fair_mot_param_ = new ::vitis::ai::proto::FairMotParam(*from._impl_.fair_mot_param_);
  }
  if (from._internal_has_x_autonomous3d_param()) {
    _this->_impl_.x_autonomous3d_param_ = new ::vitis::ai::proto::X_Autonomous3DParam(*from._impl_.x_autonomous3d_param_);
  }
  if (from._internal_has_pointpillars_kitti_param()) {
    _this->_impl_.pointpillars_kitti_param_ = new ::vitis::ai::proto::PointPillarsKittiParam(*from._impl_.pointpillars_kitti_param_);
  }
  if (from._internal_has_solo_param()) {
    _this->_impl_.solo_param_ = new ::vitis::ai::proto::SoloParam(*from._impl_.solo_param_);
  }
  if (from._internal_has_vehicleclassification_param()) {
    _this->_impl_.vehicleclassification_param_ = new ::vitis::ai::proto::ClassificationParam(*from._impl_.vehicleclassification_param_);
  }
  if (from._internal_has_efficientdet_d2_param()) {
    _this->_impl_.efficientdet_d2_param_ = new ::vitis::ai::proto::EfficientDetD2Param(*from._impl_.efficientdet_d2_param_);
  }
  if (from._internal_has_movenet_param()) {
    _this->_impl_.movenet_param_ = new ::vitis::ai::proto::MovenetParam(*from._impl_.movenet_param_);
  }
  if (from._internal_has_rcan_param()) {
    _this->_impl_.rcan_param_ = new ::vitis::ai::proto::RcanParam(*from._impl_.rcan_param_);
  }
  if (from._internal_has_yolo_v6_param()) {
    _this->_impl_.yolo_v6_param_ = new ::vitis::ai::proto::YoloV6Param(*from._impl_.yolo_v6_param_);
  }
  if (from._internal_has_fcos_param()) {
    _this->_impl_.fcos_param_ = new ::vitis::ai::proto::FcosParam(*from._impl_.fcos_param_);
  }
  if (from._internal_has_yolo_v8_param()) {
    _this->_impl_.yolo_v8_param_ = new ::vitis::ai::proto::YoloV8Param(*from._impl_.yolo_v8_param_);
  }
  if (from._internal_has_retinanet_param()) {
    _this->_impl_.retinanet_param_ = new ::vitis::ai::proto::RetinaNetParam(*from._impl_.retinanet_param_);
  }
  if (from._internal_has_yolo_v7_param()) {
    _this->_impl_.yolo_v7_param_ = new ::vitis::ai::proto::YoloV7Param(*from._impl_.yolo_v7_param_);
  }
  ::memcpy(&_impl_.model_type_, &from._impl_.model_type_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.order_type_) -
    reinterpret_cast<char*>(&_impl_.model_type_)) + sizeof(_impl_.order_type_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.DpuModelParam)
}

inline void DpuModelParam::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.kernel_){arena}
    , decltype(_impl_.subgraph_){arena}
    , decltype(_impl_.name_){}
    , decltype(_impl_.refine_det_param_){nullptr}
    , decltype(_impl_.yolo_v3_param_){nullptr}
    , decltype(_impl_.ssd_param_){nullptr}
    , decltype(_impl_.classification_param_){nullptr}
    , decltype(_impl_.dense_box_param_){nullptr}
    , decltype(_impl_.multi_task_param_){nullptr}
    , decltype(_impl_.roadline_param_){nullptr}
    , decltype(_impl_.segmentation_param_){nullptr}
    , decltype(_impl_.lane_param_){nullptr}
    , decltype(_impl_.blinker_param_){nullptr}
    , decltype(_impl_.segdet_param_){nullptr}
    , decltype(_impl_.roadline_dp_param_){nullptr}
    , decltype(_impl_.face_quality5pt_param_){nullptr}
    , decltype(_impl_.tfssd_param_){nullptr}
    , decltype(_impl_.open_pose_param_){nullptr}
    , decltype(_impl_.reid_param_){nullptr}
    , decltype(_impl_.medical_refine_det_param_){nullptr}
    , decltype(_impl_.platenum_param_){nullptr}
    , decltype(_impl_.retinaface_param_){nullptr}
    , decltype(_impl_.tfrefinedet_param_){nullptr}
    , decltype(_impl_.pointpillars_nus_param_){nullptr}
    , decltype(_impl_.segmentation_3d_param_){nullptr}
    , decltype(_impl_.yolo_v5_param_){nullptr}
    , decltype(_impl_.bts_param_){nullptr}
    , decltype(_impl_.fair_mot_param_){nullptr}
    , decltype(_impl_.x_autonomous3d_param_){nullptr}
    , decltype(_impl_.pointpillars_kitti_param_){nullptr}
    , decltype(_impl_.solo_param_){nullptr}
    , decltype(_impl_.vehicleclassification_param_){nullptr}
    , decltype(_impl_.efficientdet_d2_param_){nullptr}
    , decltype(_impl_.movenet_param_){nullptr}
    , decltype(_impl_.rcan_param_){nullptr}
    , decltype(_impl_.yolo_v6_param_){nullptr}
    , decltype(_impl_.fcos_param_){nullptr}
    , decltype(_impl_.yolo_v8_param_){nullptr}
    , decltype(_impl_.retinanet_param_){nullptr}
    , decltype(_impl_.yolo_v7_param_){nullptr}
    , decltype(_impl_.model_type_){0}
    , decltype(_impl_.use_graph_runner_){false}
    , decltype(_impl_.is_tf_){false}
    , decltype(_impl_.order_type_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

DpuModelParam::~DpuModelParam() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.DpuModelParam)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DpuModelParam::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.kernel_.~RepeatedPtrField();
  _impl_.subgraph_.~RepeatedPtrField();
  _impl_.name_.Destroy();
  if (this != internal_default_instance()) delete _impl_.refine_det_param_;
  if (this != internal_default_instance()) delete _impl_.yolo_v3_param_;
  if (this != internal_default_instance()) delete _impl_.ssd_param_;
  if (this != internal_default_instance()) delete _impl_.classification_param_;
  if (this != internal_default_instance()) delete _impl_.dense_box_param_;
  if (this != internal_default_instance()) delete _impl_.multi_task_param_;
  if (this != internal_default_instance()) delete _impl_.roadline_param_;
  if (this != internal_default_instance()) delete _impl_.segmentation_param_;
  if (this != internal_default_instance()) delete _impl_.lane_param_;
  if (this != internal_default_instance()) delete _impl_.blinker_param_;
  if (this != internal_default_instance()) delete _impl_.segdet_param_;
  if (this != internal_default_instance()) delete _impl_.roadline_dp_param_;
  if (this != internal_default_instance()) delete _impl_.face_quality5pt_param_;
  if (this != internal_default_instance()) delete _impl_.tfssd_param_;
  if (this != internal_default_instance()) delete _impl_.open_pose_param_;
  if (this != internal_default_instance()) delete _impl_.reid_param_;
  if (this != internal_default_instance()) delete _impl_.medical_refine_det_param_;
  if (this != internal_default_instance()) delete _impl_.platenum_param_;
  if (this != internal_default_instance()) delete _impl_.retinaface_param_;
  if (this != internal_default_instance()) delete _impl_.tfrefinedet_param_;
  if (this != internal_default_instance()) delete _impl_.pointpillars_nus_param_;
  if (this != internal_default_instance()) delete _impl_.segmentation_3d_param_;
  if (this != internal_default_instance()) delete _impl_.yolo_v5_param_;
  if (this != internal_default_instance()) delete _impl_.bts_param_;
  if (this != internal_default_instance()) delete _impl_.fair_mot_param_;
  if (this != internal_default_instance()) delete _impl_.x_autonomous3d_param_;
  if (this != internal_default_instance()) delete _impl_.pointpillars_kitti_param_;
  if (this != internal_default_instance()) delete _impl_.solo_param_;
  if (this != internal_default_instance()) delete _impl_.vehicleclassification_param_;
  if (this != internal_default_instance()) delete _impl_.efficientdet_d2_param_;
  if (this != internal_default_instance()) delete _impl_.movenet_param_;
  if (this != internal_default_instance()) delete _impl_.rcan_param_;
  if (this != internal_default_instance()) delete _impl_.yolo_v6_param_;
  if (this != internal_default_instance()) delete _impl_.fcos_param_;
  if (this != internal_default_instance()) delete _impl_.yolo_v8_param_;
  if (this != internal_default_instance()) delete _impl_.retinanet_param_;
  if (this != internal_default_instance()) delete _impl_.yolo_v7_param_;
}

void DpuModelParam::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DpuModelParam::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.DpuModelParam)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.kernel_.Clear();
  _impl_.subgraph_.Clear();
  _impl_.name_.ClearToEmpty();
  if (GetArenaForAllocation() == nullptr && _impl_.refine_det_param_ != nullptr) {
    delete _impl_.refine_det_param_;
  }
  _impl_.refine_det_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.yolo_v3_param_ != nullptr) {
    delete _impl_.yolo_v3_param_;
  }
  _impl_.yolo_v3_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.ssd_param_ != nullptr) {
    delete _impl_.ssd_param_;
  }
  _impl_.ssd_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.classification_param_ != nullptr) {
    delete _impl_.classification_param_;
  }
  _impl_.classification_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.dense_box_param_ != nullptr) {
    delete _impl_.dense_box_param_;
  }
  _impl_.dense_box_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.multi_task_param_ != nullptr) {
    delete _impl_.multi_task_param_;
  }
  _impl_.multi_task_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.roadline_param_ != nullptr) {
    delete _impl_.roadline_param_;
  }
  _impl_.roadline_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.segmentation_param_ != nullptr) {
    delete _impl_.segmentation_param_;
  }
  _impl_.segmentation_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.lane_param_ != nullptr) {
    delete _impl_.lane_param_;
  }
  _impl_.lane_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.blinker_param_ != nullptr) {
    delete _impl_.blinker_param_;
  }
  _impl_.blinker_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.segdet_param_ != nullptr) {
    delete _impl_.segdet_param_;
  }
  _impl_.segdet_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.roadline_dp_param_ != nullptr) {
    delete _impl_.roadline_dp_param_;
  }
  _impl_.roadline_dp_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.face_quality5pt_param_ != nullptr) {
    delete _impl_.face_quality5pt_param_;
  }
  _impl_.face_quality5pt_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.tfssd_param_ != nullptr) {
    delete _impl_.tfssd_param_;
  }
  _impl_.tfssd_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.open_pose_param_ != nullptr) {
    delete _impl_.open_pose_param_;
  }
  _impl_.open_pose_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.reid_param_ != nullptr) {
    delete _impl_.reid_param_;
  }
  _impl_.reid_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.medical_refine_det_param_ != nullptr) {
    delete _impl_.medical_refine_det_param_;
  }
  _impl_.medical_refine_det_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.platenum_param_ != nullptr) {
    delete _impl_.platenum_param_;
  }
  _impl_.platenum_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.retinaface_param_ != nullptr) {
    delete _impl_.retinaface_param_;
  }
  _impl_.retinaface_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.tfrefinedet_param_ != nullptr) {
    delete _impl_.tfrefinedet_param_;
  }
  _impl_.tfrefinedet_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.pointpillars_nus_param_ != nullptr) {
    delete _impl_.pointpillars_nus_param_;
  }
  _impl_.pointpillars_nus_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.segmentation_3d_param_ != nullptr) {
    delete _impl_.segmentation_3d_param_;
  }
  _impl_.segmentation_3d_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.yolo_v5_param_ != nullptr) {
    delete _impl_.yolo_v5_param_;
  }
  _impl_.yolo_v5_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.bts_param_ != nullptr) {
    delete _impl_.bts_param_;
  }
  _impl_.bts_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.fair_mot_param_ != nullptr) {
    delete _impl_.fair_mot_param_;
  }
  _impl_.fair_mot_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.x_autonomous3d_param_ != nullptr) {
    delete _impl_.x_autonomous3d_param_;
  }
  _impl_.x_autonomous3d_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.pointpillars_kitti_param_ != nullptr) {
    delete _impl_.pointpillars_kitti_param_;
  }
  _impl_.pointpillars_kitti_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.solo_param_ != nullptr) {
    delete _impl_.solo_param_;
  }
  _impl_.solo_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.vehicleclassification_param_ != nullptr) {
    delete _impl_.vehicleclassification_param_;
  }
  _impl_.vehicleclassification_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.efficientdet_d2_param_ != nullptr) {
    delete _impl_.efficientdet_d2_param_;
  }
  _impl_.efficientdet_d2_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.movenet_param_ != nullptr) {
    delete _impl_.movenet_param_;
  }
  _impl_.movenet_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.rcan_param_ != nullptr) {
    delete _impl_.rcan_param_;
  }
  _impl_.rcan_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.yolo_v6_param_ != nullptr) {
    delete _impl_.yolo_v6_param_;
  }
  _impl_.yolo_v6_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.fcos_param_ != nullptr) {
    delete _impl_.fcos_param_;
  }
  _impl_.fcos_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.yolo_v8_param_ != nullptr) {
    delete _impl_.yolo_v8_param_;
  }
  _impl_.yolo_v8_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.retinanet_param_ != nullptr) {
    delete _impl_.retinanet_param_;
  }
  _impl_.retinanet_param_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.yolo_v7_param_ != nullptr) {
    delete _impl_.yolo_v7_param_;
  }
  _impl_.yolo_v7_param_ = nullptr;
  ::memset(&_impl_.model_type_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.order_type_) -
      reinterpret_cast<char*>(&_impl_.model_type_)) + sizeof(_impl_.order_type_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* DpuModelParam::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.DpuModelParam.name"));
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.DpuKernelParam kernel = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_kernel(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.DpuModelParam.ModelType model_type = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_model_type(static_cast<::vitis::ai::proto::DpuModelParam_ModelType>(val));
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.RefineDetParam refine_det_param = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_refine_det_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.YoloV3Param yolo_v3_param = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_yolo_v3_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.SSDParam ssd_param = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_ssd_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.ClassificationParam classification_param = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_classification_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.DenseBoxParam dense_box_param = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_dense_box_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.MultiTaskParam multi_task_param = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          ptr = ctx->ParseMessage(_internal_mutable_multi_task_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.RoadlineParam roadline_param = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr = ctx->ParseMessage(_internal_mutable_roadline_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.SegmentationParam segmentation_param = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr = ctx->ParseMessage(_internal_mutable_segmentation_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.LaneParam lane_param = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_lane_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.BlinkerParam blinker_param = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 106)) {
          ptr = ctx->ParseMessage(_internal_mutable_blinker_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.SegdetParam segdet_param = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          ptr = ctx->ParseMessage(_internal_mutable_segdet_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.RoadlineDeephiParam roadline_dp_param = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 122)) {
          ptr = ctx->ParseMessage(_internal_mutable_roadline_dp_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool is_tf = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 128)) {
          _impl_.is_tf_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.FaceQuality5ptParam face_quality5pt_param = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 138)) {
          ptr = ctx->ParseMessage(_internal_mutable_face_quality5pt_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.TfssdParam tfssd_param = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 146)) {
          ptr = ctx->ParseMessage(_internal_mutable_tfssd_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.OpenPoseParam open_pose_param = 19;
      case 19:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 154)) {
          ptr = ctx->ParseMessage(_internal_mutable_open_pose_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.ReidParam reid_param = 20;
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 162)) {
          ptr = ctx->ParseMessage(_internal_mutable_reid_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.MedicalRefineDetParam medical_refine_det_param = 21;
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 170)) {
          ptr = ctx->ParseMessage(_internal_mutable_medical_refine_det_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.PlatenumParam platenum_param = 22;
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 178)) {
          ptr = ctx->ParseMessage(_internal_mutable_platenum_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.DpuModelParam.OrderType order_type = 23;
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 184)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_order_type(static_cast<::vitis::ai::proto::DpuModelParam_OrderType>(val));
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.RetinaFaceParam retinaface_param = 24;
      case 24:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 194)) {
          ptr = ctx->ParseMessage(_internal_mutable_retinaface_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.TFRefineDetParam tfrefinedet_param = 25;
      case 25:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 202)) {
          ptr = ctx->ParseMessage(_internal_mutable_tfrefinedet_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.PointPillarsNusParam pointpillars_nus_param = 26;
      case 26:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 210)) {
          ptr = ctx->ParseMessage(_internal_mutable_pointpillars_nus_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Segmentation3DParam segmentation_3d_param = 27;
      case 27:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 218)) {
          ptr = ctx->ParseMessage(_internal_mutable_segmentation_3d_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool use_graph_runner = 28;
      case 28:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 224)) {
          _impl_.use_graph_runner_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.YoloV5Param yolo_v5_param = 29;
      case 29:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 234)) {
          ptr = ctx->ParseMessage(_internal_mutable_yolo_v5_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.BTSParam bts_param = 30;
      case 30:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 242)) {
          ptr = ctx->ParseMessage(_internal_mutable_bts_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.FairMotParam fair_mot_param = 31;
      case 31:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 250)) {
          ptr = ctx->ParseMessage(_internal_mutable_fair_mot_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.X_Autonomous3DParam x_autonomous3d_param = 32;
      case 32:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 2)) {
          ptr = ctx->ParseMessage(_internal_mutable_x_autonomous3d_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.PointPillarsKittiParam pointpillars_kitti_param = 33;
      case 33:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_pointpillars_kitti_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.SoloParam solo_param = 34;
      case 34:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_solo_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.SubgraphParam subgraph = 35;
      case 35:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(_internal_add_subgraph(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<282>(ptr));
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.ClassificationParam vehicleclassification_param = 36;
      case 36:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_vehicleclassification_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.EfficientDetD2Param efficientdet_d2_param = 37;
      case 37:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_efficientdet_d2_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.MovenetParam movenet_param = 38;
      case 38:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_movenet_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.RcanParam rcan_param = 39;
      case 39:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_rcan_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.YoloV6Param yolo_v6_param = 40;
      case 40:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_yolo_v6_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.FcosParam fcos_param = 41;
      case 41:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          ptr = ctx->ParseMessage(_internal_mutable_fcos_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.YoloV8Param yolo_v8_param = 42;
      case 42:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr = ctx->ParseMessage(_internal_mutable_yolo_v8_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.RetinaNetParam retinanet_param = 43;
      case 43:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr = ctx->ParseMessage(_internal_mutable_retinanet_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.YoloV7Param yolo_v7_param = 44;
      case 44:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_yolo_v7_param(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* DpuModelParam::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.DpuModelParam)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.DpuModelParam.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // repeated .vitis.ai.proto.DpuKernelParam kernel = 2;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_kernel_size()); i < n; i++) {
    const auto& repfield = this->_internal_kernel(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.DpuModelParam.ModelType model_type = 3;
  if (this->_internal_model_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      3, this->_internal_model_type(), target);
  }

  // .vitis.ai.proto.RefineDetParam refine_det_param = 4;
  if (this->_internal_has_refine_det_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, _Internal::refine_det_param(this),
        _Internal::refine_det_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.YoloV3Param yolo_v3_param = 5;
  if (this->_internal_has_yolo_v3_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(5, _Internal::yolo_v3_param(this),
        _Internal::yolo_v3_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.SSDParam ssd_param = 6;
  if (this->_internal_has_ssd_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(6, _Internal::ssd_param(this),
        _Internal::ssd_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.ClassificationParam classification_param = 7;
  if (this->_internal_has_classification_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(7, _Internal::classification_param(this),
        _Internal::classification_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.DenseBoxParam dense_box_param = 8;
  if (this->_internal_has_dense_box_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(8, _Internal::dense_box_param(this),
        _Internal::dense_box_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.MultiTaskParam multi_task_param = 9;
  if (this->_internal_has_multi_task_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(9, _Internal::multi_task_param(this),
        _Internal::multi_task_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.RoadlineParam roadline_param = 10;
  if (this->_internal_has_roadline_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(10, _Internal::roadline_param(this),
        _Internal::roadline_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.SegmentationParam segmentation_param = 11;
  if (this->_internal_has_segmentation_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(11, _Internal::segmentation_param(this),
        _Internal::segmentation_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.LaneParam lane_param = 12;
  if (this->_internal_has_lane_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(12, _Internal::lane_param(this),
        _Internal::lane_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.BlinkerParam blinker_param = 13;
  if (this->_internal_has_blinker_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(13, _Internal::blinker_param(this),
        _Internal::blinker_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.SegdetParam segdet_param = 14;
  if (this->_internal_has_segdet_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(14, _Internal::segdet_param(this),
        _Internal::segdet_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.RoadlineDeephiParam roadline_dp_param = 15;
  if (this->_internal_has_roadline_dp_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(15, _Internal::roadline_dp_param(this),
        _Internal::roadline_dp_param(this).GetCachedSize(), target, stream);
  }

  // bool is_tf = 16;
  if (this->_internal_is_tf() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(16, this->_internal_is_tf(), target);
  }

  // .vitis.ai.proto.FaceQuality5ptParam face_quality5pt_param = 17;
  if (this->_internal_has_face_quality5pt_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(17, _Internal::face_quality5pt_param(this),
        _Internal::face_quality5pt_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.TfssdParam tfssd_param = 18;
  if (this->_internal_has_tfssd_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(18, _Internal::tfssd_param(this),
        _Internal::tfssd_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.OpenPoseParam open_pose_param = 19;
  if (this->_internal_has_open_pose_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(19, _Internal::open_pose_param(this),
        _Internal::open_pose_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.ReidParam reid_param = 20;
  if (this->_internal_has_reid_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(20, _Internal::reid_param(this),
        _Internal::reid_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.MedicalRefineDetParam medical_refine_det_param = 21;
  if (this->_internal_has_medical_refine_det_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(21, _Internal::medical_refine_det_param(this),
        _Internal::medical_refine_det_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.PlatenumParam platenum_param = 22;
  if (this->_internal_has_platenum_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(22, _Internal::platenum_param(this),
        _Internal::platenum_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.DpuModelParam.OrderType order_type = 23;
  if (this->_internal_order_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      23, this->_internal_order_type(), target);
  }

  // .vitis.ai.proto.RetinaFaceParam retinaface_param = 24;
  if (this->_internal_has_retinaface_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(24, _Internal::retinaface_param(this),
        _Internal::retinaface_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.TFRefineDetParam tfrefinedet_param = 25;
  if (this->_internal_has_tfrefinedet_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(25, _Internal::tfrefinedet_param(this),
        _Internal::tfrefinedet_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.PointPillarsNusParam pointpillars_nus_param = 26;
  if (this->_internal_has_pointpillars_nus_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(26, _Internal::pointpillars_nus_param(this),
        _Internal::pointpillars_nus_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Segmentation3DParam segmentation_3d_param = 27;
  if (this->_internal_has_segmentation_3d_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(27, _Internal::segmentation_3d_param(this),
        _Internal::segmentation_3d_param(this).GetCachedSize(), target, stream);
  }

  // bool use_graph_runner = 28;
  if (this->_internal_use_graph_runner() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(28, this->_internal_use_graph_runner(), target);
  }

  // .vitis.ai.proto.YoloV5Param yolo_v5_param = 29;
  if (this->_internal_has_yolo_v5_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(29, _Internal::yolo_v5_param(this),
        _Internal::yolo_v5_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.BTSParam bts_param = 30;
  if (this->_internal_has_bts_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(30, _Internal::bts_param(this),
        _Internal::bts_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.FairMotParam fair_mot_param = 31;
  if (this->_internal_has_fair_mot_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(31, _Internal::fair_mot_param(this),
        _Internal::fair_mot_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.X_Autonomous3DParam x_autonomous3d_param = 32;
  if (this->_internal_has_x_autonomous3d_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(32, _Internal::x_autonomous3d_param(this),
        _Internal::x_autonomous3d_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.PointPillarsKittiParam pointpillars_kitti_param = 33;
  if (this->_internal_has_pointpillars_kitti_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(33, _Internal::pointpillars_kitti_param(this),
        _Internal::pointpillars_kitti_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.SoloParam solo_param = 34;
  if (this->_internal_has_solo_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(34, _Internal::solo_param(this),
        _Internal::solo_param(this).GetCachedSize(), target, stream);
  }

  // repeated .vitis.ai.proto.SubgraphParam subgraph = 35;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_subgraph_size()); i < n; i++) {
    const auto& repfield = this->_internal_subgraph(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(35, repfield, repfield.GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.ClassificationParam vehicleclassification_param = 36;
  if (this->_internal_has_vehicleclassification_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(36, _Internal::vehicleclassification_param(this),
        _Internal::vehicleclassification_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.EfficientDetD2Param efficientdet_d2_param = 37;
  if (this->_internal_has_efficientdet_d2_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(37, _Internal::efficientdet_d2_param(this),
        _Internal::efficientdet_d2_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.MovenetParam movenet_param = 38;
  if (this->_internal_has_movenet_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(38, _Internal::movenet_param(this),
        _Internal::movenet_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.RcanParam rcan_param = 39;
  if (this->_internal_has_rcan_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(39, _Internal::rcan_param(this),
        _Internal::rcan_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.YoloV6Param yolo_v6_param = 40;
  if (this->_internal_has_yolo_v6_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(40, _Internal::yolo_v6_param(this),
        _Internal::yolo_v6_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.FcosParam fcos_param = 41;
  if (this->_internal_has_fcos_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(41, _Internal::fcos_param(this),
        _Internal::fcos_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.YoloV8Param yolo_v8_param = 42;
  if (this->_internal_has_yolo_v8_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(42, _Internal::yolo_v8_param(this),
        _Internal::yolo_v8_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.RetinaNetParam retinanet_param = 43;
  if (this->_internal_has_retinanet_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(43, _Internal::retinanet_param(this),
        _Internal::retinanet_param(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.YoloV7Param yolo_v7_param = 44;
  if (this->_internal_has_yolo_v7_param()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(44, _Internal::yolo_v7_param(this),
        _Internal::yolo_v7_param(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.DpuModelParam)
  return target;
}

size_t DpuModelParam::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.DpuModelParam)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.DpuKernelParam kernel = 2;
  total_size += 1UL * this->_internal_kernel_size();
  for (const auto& msg : this->_impl_.kernel_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .vitis.ai.proto.SubgraphParam subgraph = 35;
  total_size += 2UL * this->_internal_subgraph_size();
  for (const auto& msg : this->_impl_.subgraph_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // string name = 1;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // .vitis.ai.proto.RefineDetParam refine_det_param = 4;
  if (this->_internal_has_refine_det_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.refine_det_param_);
  }

  // .vitis.ai.proto.YoloV3Param yolo_v3_param = 5;
  if (this->_internal_has_yolo_v3_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.yolo_v3_param_);
  }

  // .vitis.ai.proto.SSDParam ssd_param = 6;
  if (this->_internal_has_ssd_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.ssd_param_);
  }

  // .vitis.ai.proto.ClassificationParam classification_param = 7;
  if (this->_internal_has_classification_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.classification_param_);
  }

  // .vitis.ai.proto.DenseBoxParam dense_box_param = 8;
  if (this->_internal_has_dense_box_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.dense_box_param_);
  }

  // .vitis.ai.proto.MultiTaskParam multi_task_param = 9;
  if (this->_internal_has_multi_task_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.multi_task_param_);
  }

  // .vitis.ai.proto.RoadlineParam roadline_param = 10;
  if (this->_internal_has_roadline_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.roadline_param_);
  }

  // .vitis.ai.proto.SegmentationParam segmentation_param = 11;
  if (this->_internal_has_segmentation_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.segmentation_param_);
  }

  // .vitis.ai.proto.LaneParam lane_param = 12;
  if (this->_internal_has_lane_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.lane_param_);
  }

  // .vitis.ai.proto.BlinkerParam blinker_param = 13;
  if (this->_internal_has_blinker_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.blinker_param_);
  }

  // .vitis.ai.proto.SegdetParam segdet_param = 14;
  if (this->_internal_has_segdet_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.segdet_param_);
  }

  // .vitis.ai.proto.RoadlineDeephiParam roadline_dp_param = 15;
  if (this->_internal_has_roadline_dp_param()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.roadline_dp_param_);
  }

  // .vitis.ai.proto.FaceQuality5ptParam face_quality5pt_param = 17;
  if (this->_internal_has_face_quality5pt_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.face_quality5pt_param_);
  }

  // .vitis.ai.proto.TfssdParam tfssd_param = 18;
  if (this->_internal_has_tfssd_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.tfssd_param_);
  }

  // .vitis.ai.proto.OpenPoseParam open_pose_param = 19;
  if (this->_internal_has_open_pose_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.open_pose_param_);
  }

  // .vitis.ai.proto.ReidParam reid_param = 20;
  if (this->_internal_has_reid_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.reid_param_);
  }

  // .vitis.ai.proto.MedicalRefineDetParam medical_refine_det_param = 21;
  if (this->_internal_has_medical_refine_det_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.medical_refine_det_param_);
  }

  // .vitis.ai.proto.PlatenumParam platenum_param = 22;
  if (this->_internal_has_platenum_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.platenum_param_);
  }

  // .vitis.ai.proto.RetinaFaceParam retinaface_param = 24;
  if (this->_internal_has_retinaface_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.retinaface_param_);
  }

  // .vitis.ai.proto.TFRefineDetParam tfrefinedet_param = 25;
  if (this->_internal_has_tfrefinedet_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.tfrefinedet_param_);
  }

  // .vitis.ai.proto.PointPillarsNusParam pointpillars_nus_param = 26;
  if (this->_internal_has_pointpillars_nus_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.pointpillars_nus_param_);
  }

  // .vitis.ai.proto.Segmentation3DParam segmentation_3d_param = 27;
  if (this->_internal_has_segmentation_3d_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.segmentation_3d_param_);
  }

  // .vitis.ai.proto.YoloV5Param yolo_v5_param = 29;
  if (this->_internal_has_yolo_v5_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.yolo_v5_param_);
  }

  // .vitis.ai.proto.BTSParam bts_param = 30;
  if (this->_internal_has_bts_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.bts_param_);
  }

  // .vitis.ai.proto.FairMotParam fair_mot_param = 31;
  if (this->_internal_has_fair_mot_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.fair_mot_param_);
  }

  // .vitis.ai.proto.X_Autonomous3DParam x_autonomous3d_param = 32;
  if (this->_internal_has_x_autonomous3d_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.x_autonomous3d_param_);
  }

  // .vitis.ai.proto.PointPillarsKittiParam pointpillars_kitti_param = 33;
  if (this->_internal_has_pointpillars_kitti_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.pointpillars_kitti_param_);
  }

  // .vitis.ai.proto.SoloParam solo_param = 34;
  if (this->_internal_has_solo_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.solo_param_);
  }

  // .vitis.ai.proto.ClassificationParam vehicleclassification_param = 36;
  if (this->_internal_has_vehicleclassification_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.vehicleclassification_param_);
  }

  // .vitis.ai.proto.EfficientDetD2Param efficientdet_d2_param = 37;
  if (this->_internal_has_efficientdet_d2_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.efficientdet_d2_param_);
  }

  // .vitis.ai.proto.MovenetParam movenet_param = 38;
  if (this->_internal_has_movenet_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.movenet_param_);
  }

  // .vitis.ai.proto.RcanParam rcan_param = 39;
  if (this->_internal_has_rcan_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.rcan_param_);
  }

  // .vitis.ai.proto.YoloV6Param yolo_v6_param = 40;
  if (this->_internal_has_yolo_v6_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.yolo_v6_param_);
  }

  // .vitis.ai.proto.FcosParam fcos_param = 41;
  if (this->_internal_has_fcos_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.fcos_param_);
  }

  // .vitis.ai.proto.YoloV8Param yolo_v8_param = 42;
  if (this->_internal_has_yolo_v8_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.yolo_v8_param_);
  }

  // .vitis.ai.proto.RetinaNetParam retinanet_param = 43;
  if (this->_internal_has_retinanet_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.retinanet_param_);
  }

  // .vitis.ai.proto.YoloV7Param yolo_v7_param = 44;
  if (this->_internal_has_yolo_v7_param()) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.yolo_v7_param_);
  }

  // .vitis.ai.proto.DpuModelParam.ModelType model_type = 3;
  if (this->_internal_model_type() != 0) {
    total_size += 1 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_model_type());
  }

  // bool use_graph_runner = 28;
  if (this->_internal_use_graph_runner() != 0) {
    total_size += 2 + 1;
  }

  // bool is_tf = 16;
  if (this->_internal_is_tf() != 0) {
    total_size += 2 + 1;
  }

  // .vitis.ai.proto.DpuModelParam.OrderType order_type = 23;
  if (this->_internal_order_type() != 0) {
    total_size += 2 +
      ::_pbi::WireFormatLite::EnumSize(this->_internal_order_type());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData DpuModelParam::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    DpuModelParam::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*DpuModelParam::GetClassData() const { return &_class_data_; }


void DpuModelParam::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<DpuModelParam*>(&to_msg);
  auto& from = static_cast<const DpuModelParam&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.DpuModelParam)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.kernel_.MergeFrom(from._impl_.kernel_);
  _this->_impl_.subgraph_.MergeFrom(from._impl_.subgraph_);
  if (!from._internal_name().empty()) {
    _this->_internal_set_name(from._internal_name());
  }
  if (from._internal_has_refine_det_param()) {
    _this->_internal_mutable_refine_det_param()->::vitis::ai::proto::RefineDetParam::MergeFrom(
        from._internal_refine_det_param());
  }
  if (from._internal_has_yolo_v3_param()) {
    _this->_internal_mutable_yolo_v3_param()->::vitis::ai::proto::YoloV3Param::MergeFrom(
        from._internal_yolo_v3_param());
  }
  if (from._internal_has_ssd_param()) {
    _this->_internal_mutable_ssd_param()->::vitis::ai::proto::SSDParam::MergeFrom(
        from._internal_ssd_param());
  }
  if (from._internal_has_classification_param()) {
    _this->_internal_mutable_classification_param()->::vitis::ai::proto::ClassificationParam::MergeFrom(
        from._internal_classification_param());
  }
  if (from._internal_has_dense_box_param()) {
    _this->_internal_mutable_dense_box_param()->::vitis::ai::proto::DenseBoxParam::MergeFrom(
        from._internal_dense_box_param());
  }
  if (from._internal_has_multi_task_param()) {
    _this->_internal_mutable_multi_task_param()->::vitis::ai::proto::MultiTaskParam::MergeFrom(
        from._internal_multi_task_param());
  }
  if (from._internal_has_roadline_param()) {
    _this->_internal_mutable_roadline_param()->::vitis::ai::proto::RoadlineParam::MergeFrom(
        from._internal_roadline_param());
  }
  if (from._internal_has_segmentation_param()) {
    _this->_internal_mutable_segmentation_param()->::vitis::ai::proto::SegmentationParam::MergeFrom(
        from._internal_segmentation_param());
  }
  if (from._internal_has_lane_param()) {
    _this->_internal_mutable_lane_param()->::vitis::ai::proto::LaneParam::MergeFrom(
        from._internal_lane_param());
  }
  if (from._internal_has_blinker_param()) {
    _this->_internal_mutable_blinker_param()->::vitis::ai::proto::BlinkerParam::MergeFrom(
        from._internal_blinker_param());
  }
  if (from._internal_has_segdet_param()) {
    _this->_internal_mutable_segdet_param()->::vitis::ai::proto::SegdetParam::MergeFrom(
        from._internal_segdet_param());
  }
  if (from._internal_has_roadline_dp_param()) {
    _this->_internal_mutable_roadline_dp_param()->::vitis::ai::proto::RoadlineDeephiParam::MergeFrom(
        from._internal_roadline_dp_param());
  }
  if (from._internal_has_face_quality5pt_param()) {
    _this->_internal_mutable_face_quality5pt_param()->::vitis::ai::proto::FaceQuality5ptParam::MergeFrom(
        from._internal_face_quality5pt_param());
  }
  if (from._internal_has_tfssd_param()) {
    _this->_internal_mutable_tfssd_param()->::vitis::ai::proto::TfssdParam::MergeFrom(
        from._internal_tfssd_param());
  }
  if (from._internal_has_open_pose_param()) {
    _this->_internal_mutable_open_pose_param()->::vitis::ai::proto::OpenPoseParam::MergeFrom(
        from._internal_open_pose_param());
  }
  if (from._internal_has_reid_param()) {
    _this->_internal_mutable_reid_param()->::vitis::ai::proto::ReidParam::MergeFrom(
        from._internal_reid_param());
  }
  if (from._internal_has_medical_refine_det_param()) {
    _this->_internal_mutable_medical_refine_det_param()->::vitis::ai::proto::MedicalRefineDetParam::MergeFrom(
        from._internal_medical_refine_det_param());
  }
  if (from._internal_has_platenum_param()) {
    _this->_internal_mutable_platenum_param()->::vitis::ai::proto::PlatenumParam::MergeFrom(
        from._internal_platenum_param());
  }
  if (from._internal_has_retinaface_param()) {
    _this->_internal_mutable_retinaface_param()->::vitis::ai::proto::RetinaFaceParam::MergeFrom(
        from._internal_retinaface_param());
  }
  if (from._internal_has_tfrefinedet_param()) {
    _this->_internal_mutable_tfrefinedet_param()->::vitis::ai::proto::TFRefineDetParam::MergeFrom(
        from._internal_tfrefinedet_param());
  }
  if (from._internal_has_pointpillars_nus_param()) {
    _this->_internal_mutable_pointpillars_nus_param()->::vitis::ai::proto::PointPillarsNusParam::MergeFrom(
        from._internal_pointpillars_nus_param());
  }
  if (from._internal_has_segmentation_3d_param()) {
    _this->_internal_mutable_segmentation_3d_param()->::vitis::ai::proto::Segmentation3DParam::MergeFrom(
        from._internal_segmentation_3d_param());
  }
  if (from._internal_has_yolo_v5_param()) {
    _this->_internal_mutable_yolo_v5_param()->::vitis::ai::proto::YoloV5Param::MergeFrom(
        from._internal_yolo_v5_param());
  }
  if (from._internal_has_bts_param()) {
    _this->_internal_mutable_bts_param()->::vitis::ai::proto::BTSParam::MergeFrom(
        from._internal_bts_param());
  }
  if (from._internal_has_fair_mot_param()) {
    _this->_internal_mutable_fair_mot_param()->::vitis::ai::proto::FairMotParam::MergeFrom(
        from._internal_fair_mot_param());
  }
  if (from._internal_has_x_autonomous3d_param()) {
    _this->_internal_mutable_x_autonomous3d_param()->::vitis::ai::proto::X_Autonomous3DParam::MergeFrom(
        from._internal_x_autonomous3d_param());
  }
  if (from._internal_has_pointpillars_kitti_param()) {
    _this->_internal_mutable_pointpillars_kitti_param()->::vitis::ai::proto::PointPillarsKittiParam::MergeFrom(
        from._internal_pointpillars_kitti_param());
  }
  if (from._internal_has_solo_param()) {
    _this->_internal_mutable_solo_param()->::vitis::ai::proto::SoloParam::MergeFrom(
        from._internal_solo_param());
  }
  if (from._internal_has_vehicleclassification_param()) {
    _this->_internal_mutable_vehicleclassification_param()->::vitis::ai::proto::ClassificationParam::MergeFrom(
        from._internal_vehicleclassification_param());
  }
  if (from._internal_has_efficientdet_d2_param()) {
    _this->_internal_mutable_efficientdet_d2_param()->::vitis::ai::proto::EfficientDetD2Param::MergeFrom(
        from._internal_efficientdet_d2_param());
  }
  if (from._internal_has_movenet_param()) {
    _this->_internal_mutable_movenet_param()->::vitis::ai::proto::MovenetParam::MergeFrom(
        from._internal_movenet_param());
  }
  if (from._internal_has_rcan_param()) {
    _this->_internal_mutable_rcan_param()->::vitis::ai::proto::RcanParam::MergeFrom(
        from._internal_rcan_param());
  }
  if (from._internal_has_yolo_v6_param()) {
    _this->_internal_mutable_yolo_v6_param()->::vitis::ai::proto::YoloV6Param::MergeFrom(
        from._internal_yolo_v6_param());
  }
  if (from._internal_has_fcos_param()) {
    _this->_internal_mutable_fcos_param()->::vitis::ai::proto::FcosParam::MergeFrom(
        from._internal_fcos_param());
  }
  if (from._internal_has_yolo_v8_param()) {
    _this->_internal_mutable_yolo_v8_param()->::vitis::ai::proto::YoloV8Param::MergeFrom(
        from._internal_yolo_v8_param());
  }
  if (from._internal_has_retinanet_param()) {
    _this->_internal_mutable_retinanet_param()->::vitis::ai::proto::RetinaNetParam::MergeFrom(
        from._internal_retinanet_param());
  }
  if (from._internal_has_yolo_v7_param()) {
    _this->_internal_mutable_yolo_v7_param()->::vitis::ai::proto::YoloV7Param::MergeFrom(
        from._internal_yolo_v7_param());
  }
  if (from._internal_model_type() != 0) {
    _this->_internal_set_model_type(from._internal_model_type());
  }
  if (from._internal_use_graph_runner() != 0) {
    _this->_internal_set_use_graph_runner(from._internal_use_graph_runner());
  }
  if (from._internal_is_tf() != 0) {
    _this->_internal_set_is_tf(from._internal_is_tf());
  }
  if (from._internal_order_type() != 0) {
    _this->_internal_set_order_type(from._internal_order_type());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void DpuModelParam::CopyFrom(const DpuModelParam& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.DpuModelParam)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DpuModelParam::IsInitialized() const {
  return true;
}

void DpuModelParam::InternalSwap(DpuModelParam* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.kernel_.InternalSwap(&other->_impl_.kernel_);
  _impl_.subgraph_.InternalSwap(&other->_impl_.subgraph_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(DpuModelParam, _impl_.order_type_)
      + sizeof(DpuModelParam::_impl_.order_type_)
      - PROTOBUF_FIELD_OFFSET(DpuModelParam, _impl_.refine_det_param_)>(
          reinterpret_cast<char*>(&_impl_.refine_det_param_),
          reinterpret_cast<char*>(&other->_impl_.refine_det_param_));
}

::PROTOBUF_NAMESPACE_ID::Metadata DpuModelParam::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[55]);
}

// ===================================================================

class DpuModelParamList::_Internal {
 public:
};

DpuModelParamList::DpuModelParamList(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.DpuModelParamList)
}
DpuModelParamList::DpuModelParamList(const DpuModelParamList& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  DpuModelParamList* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.model_){from._impl_.model_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.DpuModelParamList)
}

inline void DpuModelParamList::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.model_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

DpuModelParamList::~DpuModelParamList() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.DpuModelParamList)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DpuModelParamList::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.model_.~RepeatedPtrField();
}

void DpuModelParamList::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DpuModelParamList::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.DpuModelParamList)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.model_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* DpuModelParamList::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.DpuModelParam model = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_model(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* DpuModelParamList::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.DpuModelParamList)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.DpuModelParam model = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_model_size()); i < n; i++) {
    const auto& repfield = this->_internal_model(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.DpuModelParamList)
  return target;
}

size_t DpuModelParamList::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.DpuModelParamList)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.DpuModelParam model = 1;
  total_size += 1UL * this->_internal_model_size();
  for (const auto& msg : this->_impl_.model_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData DpuModelParamList::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    DpuModelParamList::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*DpuModelParamList::GetClassData() const { return &_class_data_; }


void DpuModelParamList::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<DpuModelParamList*>(&to_msg);
  auto& from = static_cast<const DpuModelParamList&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.DpuModelParamList)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.model_.MergeFrom(from._impl_.model_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void DpuModelParamList::CopyFrom(const DpuModelParamList& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.DpuModelParamList)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DpuModelParamList::IsInitialized() const {
  return true;
}

void DpuModelParamList::InternalSwap(DpuModelParamList* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.model_.InternalSwap(&other->_impl_.model_);
}

::PROTOBUF_NAMESPACE_ID::Metadata DpuModelParamList::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[56]);
}

// ===================================================================

class Attribute::_Internal {
 public:
};

Attribute::Attribute(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.Attribute)
}
Attribute::Attribute(const Attribute& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Attribute* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.label_){}
    , decltype(_impl_.value_){}
    , decltype(_impl_.score_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.label_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.label_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_label().empty()) {
    _this->_impl_.label_.Set(from._internal_label(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.value_, &from._impl_.value_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.score_) -
    reinterpret_cast<char*>(&_impl_.value_)) + sizeof(_impl_.score_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.Attribute)
}

inline void Attribute::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.label_){}
    , decltype(_impl_.value_){0u}
    , decltype(_impl_.score_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.label_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.label_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

Attribute::~Attribute() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.Attribute)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Attribute::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.label_.Destroy();
}

void Attribute::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Attribute::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.Attribute)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.label_.ClearToEmpty();
  ::memset(&_impl_.value_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.score_) -
      reinterpret_cast<char*>(&_impl_.value_)) + sizeof(_impl_.score_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Attribute::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string label = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_label();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.Attribute.label"));
        } else
          goto handle_unusual;
        continue;
      // uint32 value = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.value_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float score = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.score_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Attribute::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.Attribute)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string label = 1;
  if (!this->_internal_label().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_label().data(), static_cast<int>(this->_internal_label().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.Attribute.label");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_label(), target);
  }

  // uint32 value = 2;
  if (this->_internal_value() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(2, this->_internal_value(), target);
  }

  // float score = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = this->_internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_score(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.Attribute)
  return target;
}

size_t Attribute::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.Attribute)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string label = 1;
  if (!this->_internal_label().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_label());
  }

  // uint32 value = 2;
  if (this->_internal_value() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_value());
  }

  // float score = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = this->_internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Attribute::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Attribute::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Attribute::GetClassData() const { return &_class_data_; }


void Attribute::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Attribute*>(&to_msg);
  auto& from = static_cast<const Attribute&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.Attribute)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_label().empty()) {
    _this->_internal_set_label(from._internal_label());
  }
  if (from._internal_value() != 0) {
    _this->_internal_set_value(from._internal_value());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = from._internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    _this->_internal_set_score(from._internal_score());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Attribute::CopyFrom(const Attribute& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.Attribute)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Attribute::IsInitialized() const {
  return true;
}

void Attribute::InternalSwap(Attribute* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.label_, lhs_arena,
      &other->_impl_.label_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Attribute, _impl_.score_)
      + sizeof(Attribute::_impl_.score_)
      - PROTOBUF_FIELD_OFFSET(Attribute, _impl_.value_)>(
          reinterpret_cast<char*>(&_impl_.value_),
          reinterpret_cast<char*>(&other->_impl_.value_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Attribute::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[57]);
}

// ===================================================================

class Point::_Internal {
 public:
};

Point::Point(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.Point)
}
Point::Point(const Point& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Point* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.x_){}
    , decltype(_impl_.y_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.x_, &from._impl_.x_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.y_) -
    reinterpret_cast<char*>(&_impl_.x_)) + sizeof(_impl_.y_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.Point)
}

inline void Point::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.x_){0}
    , decltype(_impl_.y_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

Point::~Point() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.Point)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Point::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Point::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Point::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.Point)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.x_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.y_) -
      reinterpret_cast<char*>(&_impl_.x_)) + sizeof(_impl_.y_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Point::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float x = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _impl_.x_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float y = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.y_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Point::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.Point)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float x = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_x = this->_internal_x();
  uint32_t raw_x;
  memcpy(&raw_x, &tmp_x, sizeof(tmp_x));
  if (raw_x != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(1, this->_internal_x(), target);
  }

  // float y = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_y = this->_internal_y();
  uint32_t raw_y;
  memcpy(&raw_y, &tmp_y, sizeof(tmp_y));
  if (raw_y != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_y(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.Point)
  return target;
}

size_t Point::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.Point)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // float x = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_x = this->_internal_x();
  uint32_t raw_x;
  memcpy(&raw_x, &tmp_x, sizeof(tmp_x));
  if (raw_x != 0) {
    total_size += 1 + 4;
  }

  // float y = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_y = this->_internal_y();
  uint32_t raw_y;
  memcpy(&raw_y, &tmp_y, sizeof(tmp_y));
  if (raw_y != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Point::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Point::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Point::GetClassData() const { return &_class_data_; }


void Point::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Point*>(&to_msg);
  auto& from = static_cast<const Point&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.Point)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_x = from._internal_x();
  uint32_t raw_x;
  memcpy(&raw_x, &tmp_x, sizeof(tmp_x));
  if (raw_x != 0) {
    _this->_internal_set_x(from._internal_x());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_y = from._internal_y();
  uint32_t raw_y;
  memcpy(&raw_y, &tmp_y, sizeof(tmp_y));
  if (raw_y != 0) {
    _this->_internal_set_y(from._internal_y());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Point::CopyFrom(const Point& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.Point)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Point::IsInitialized() const {
  return true;
}

void Point::InternalSwap(Point* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Point, _impl_.y_)
      + sizeof(Point::_impl_.y_)
      - PROTOBUF_FIELD_OFFSET(Point, _impl_.x_)>(
          reinterpret_cast<char*>(&_impl_.x_),
          reinterpret_cast<char*>(&other->_impl_.x_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Point::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[58]);
}

// ===================================================================

class Size::_Internal {
 public:
};

Size::Size(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.Size)
}
Size::Size(const Size& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Size* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.width_){}
    , decltype(_impl_.height_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.width_, &from._impl_.width_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.height_) -
    reinterpret_cast<char*>(&_impl_.width_)) + sizeof(_impl_.height_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.Size)
}

inline void Size::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.width_){0}
    , decltype(_impl_.height_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

Size::~Size() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.Size)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Size::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Size::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Size::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.Size)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.width_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.height_) -
      reinterpret_cast<char*>(&_impl_.width_)) + sizeof(_impl_.height_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Size::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float width = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _impl_.width_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float height = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.height_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Size::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.Size)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float width = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_width = this->_internal_width();
  uint32_t raw_width;
  memcpy(&raw_width, &tmp_width, sizeof(tmp_width));
  if (raw_width != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(1, this->_internal_width(), target);
  }

  // float height = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_height = this->_internal_height();
  uint32_t raw_height;
  memcpy(&raw_height, &tmp_height, sizeof(tmp_height));
  if (raw_height != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_height(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.Size)
  return target;
}

size_t Size::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.Size)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // float width = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_width = this->_internal_width();
  uint32_t raw_width;
  memcpy(&raw_width, &tmp_width, sizeof(tmp_width));
  if (raw_width != 0) {
    total_size += 1 + 4;
  }

  // float height = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_height = this->_internal_height();
  uint32_t raw_height;
  memcpy(&raw_height, &tmp_height, sizeof(tmp_height));
  if (raw_height != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Size::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Size::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Size::GetClassData() const { return &_class_data_; }


void Size::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Size*>(&to_msg);
  auto& from = static_cast<const Size&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.Size)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_width = from._internal_width();
  uint32_t raw_width;
  memcpy(&raw_width, &tmp_width, sizeof(tmp_width));
  if (raw_width != 0) {
    _this->_internal_set_width(from._internal_width());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_height = from._internal_height();
  uint32_t raw_height;
  memcpy(&raw_height, &tmp_height, sizeof(tmp_height));
  if (raw_height != 0) {
    _this->_internal_set_height(from._internal_height());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Size::CopyFrom(const Size& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.Size)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Size::IsInitialized() const {
  return true;
}

void Size::InternalSwap(Size* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Size, _impl_.height_)
      + sizeof(Size::_impl_.height_)
      - PROTOBUF_FIELD_OFFSET(Size, _impl_.width_)>(
          reinterpret_cast<char*>(&_impl_.width_),
          reinterpret_cast<char*>(&other->_impl_.width_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Size::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[59]);
}

// ===================================================================

class BoundingBox::_Internal {
 public:
  static const ::vitis::ai::proto::ClassificationLabel& label(const BoundingBox* msg);
  static const ::vitis::ai::proto::Point& top_left(const BoundingBox* msg);
  static const ::vitis::ai::proto::Size& size(const BoundingBox* msg);
};

const ::vitis::ai::proto::ClassificationLabel&
BoundingBox::_Internal::label(const BoundingBox* msg) {
  return *msg->_impl_.label_;
}
const ::vitis::ai::proto::Point&
BoundingBox::_Internal::top_left(const BoundingBox* msg) {
  return *msg->_impl_.top_left_;
}
const ::vitis::ai::proto::Size&
BoundingBox::_Internal::size(const BoundingBox* msg) {
  return *msg->_impl_.size_;
}
BoundingBox::BoundingBox(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.BoundingBox)
}
BoundingBox::BoundingBox(const BoundingBox& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  BoundingBox* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.label_){nullptr}
    , decltype(_impl_.top_left_){nullptr}
    , decltype(_impl_.size_){nullptr}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_label()) {
    _this->_impl_.label_ = new ::vitis::ai::proto::ClassificationLabel(*from._impl_.label_);
  }
  if (from._internal_has_top_left()) {
    _this->_impl_.top_left_ = new ::vitis::ai::proto::Point(*from._impl_.top_left_);
  }
  if (from._internal_has_size()) {
    _this->_impl_.size_ = new ::vitis::ai::proto::Size(*from._impl_.size_);
  }
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.BoundingBox)
}

inline void BoundingBox::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.label_){nullptr}
    , decltype(_impl_.top_left_){nullptr}
    , decltype(_impl_.size_){nullptr}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

BoundingBox::~BoundingBox() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.BoundingBox)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void BoundingBox::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.label_;
  if (this != internal_default_instance()) delete _impl_.top_left_;
  if (this != internal_default_instance()) delete _impl_.size_;
}

void BoundingBox::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void BoundingBox::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.BoundingBox)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && _impl_.label_ != nullptr) {
    delete _impl_.label_;
  }
  _impl_.label_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.top_left_ != nullptr) {
    delete _impl_.top_left_;
  }
  _impl_.top_left_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.size_ != nullptr) {
    delete _impl_.size_;
  }
  _impl_.size_ = nullptr;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* BoundingBox::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.ClassificationLabel label = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_label(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point top_left = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_top_left(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Size size = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_size(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* BoundingBox::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.BoundingBox)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.ClassificationLabel label = 1;
  if (this->_internal_has_label()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::label(this),
        _Internal::label(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point top_left = 3;
  if (this->_internal_has_top_left()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(3, _Internal::top_left(this),
        _Internal::top_left(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Size size = 4;
  if (this->_internal_has_size()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, _Internal::size(this),
        _Internal::size(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.BoundingBox)
  return target;
}

size_t BoundingBox::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.BoundingBox)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .vitis.ai.proto.ClassificationLabel label = 1;
  if (this->_internal_has_label()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.label_);
  }

  // .vitis.ai.proto.Point top_left = 3;
  if (this->_internal_has_top_left()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.top_left_);
  }

  // .vitis.ai.proto.Size size = 4;
  if (this->_internal_has_size()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.size_);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData BoundingBox::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    BoundingBox::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*BoundingBox::GetClassData() const { return &_class_data_; }


void BoundingBox::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<BoundingBox*>(&to_msg);
  auto& from = static_cast<const BoundingBox&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.BoundingBox)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_label()) {
    _this->_internal_mutable_label()->::vitis::ai::proto::ClassificationLabel::MergeFrom(
        from._internal_label());
  }
  if (from._internal_has_top_left()) {
    _this->_internal_mutable_top_left()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_top_left());
  }
  if (from._internal_has_size()) {
    _this->_internal_mutable_size()->::vitis::ai::proto::Size::MergeFrom(
        from._internal_size());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void BoundingBox::CopyFrom(const BoundingBox& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.BoundingBox)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool BoundingBox::IsInitialized() const {
  return true;
}

void BoundingBox::InternalSwap(BoundingBox* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(BoundingBox, _impl_.size_)
      + sizeof(BoundingBox::_impl_.size_)
      - PROTOBUF_FIELD_OFFSET(BoundingBox, _impl_.label_)>(
          reinterpret_cast<char*>(&_impl_.label_),
          reinterpret_cast<char*>(&other->_impl_.label_));
}

::PROTOBUF_NAMESPACE_ID::Metadata BoundingBox::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[60]);
}

// ===================================================================

class AttributeResult::_Internal {
 public:
};

AttributeResult::AttributeResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.AttributeResult)
}
AttributeResult::AttributeResult(const AttributeResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  AttributeResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.attribute_){from._impl_.attribute_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.AttributeResult)
}

inline void AttributeResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.attribute_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

AttributeResult::~AttributeResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.AttributeResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void AttributeResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.attribute_.~RepeatedPtrField();
}

void AttributeResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void AttributeResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.AttributeResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.attribute_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* AttributeResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.Attribute attribute = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_attribute(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* AttributeResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.AttributeResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.Attribute attribute = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_attribute_size()); i < n; i++) {
    const auto& repfield = this->_internal_attribute(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.AttributeResult)
  return target;
}

size_t AttributeResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.AttributeResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.Attribute attribute = 1;
  total_size += 1UL * this->_internal_attribute_size();
  for (const auto& msg : this->_impl_.attribute_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData AttributeResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    AttributeResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*AttributeResult::GetClassData() const { return &_class_data_; }


void AttributeResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<AttributeResult*>(&to_msg);
  auto& from = static_cast<const AttributeResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.AttributeResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.attribute_.MergeFrom(from._impl_.attribute_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void AttributeResult::CopyFrom(const AttributeResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.AttributeResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool AttributeResult::IsInitialized() const {
  return true;
}

void AttributeResult::InternalSwap(AttributeResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.attribute_.InternalSwap(&other->_impl_.attribute_);
}

::PROTOBUF_NAMESPACE_ID::Metadata AttributeResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[61]);
}

// ===================================================================

class LandmarkResult::_Internal {
 public:
};

LandmarkResult::LandmarkResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.LandmarkResult)
}
LandmarkResult::LandmarkResult(const LandmarkResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  LandmarkResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.point_){from._impl_.point_}
    , decltype(_impl_.score_){}
    , decltype(_impl_.gender_){}
    , decltype(_impl_.age_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.score_, &from._impl_.score_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.age_) -
    reinterpret_cast<char*>(&_impl_.score_)) + sizeof(_impl_.age_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.LandmarkResult)
}

inline void LandmarkResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.point_){arena}
    , decltype(_impl_.score_){0}
    , decltype(_impl_.gender_){0u}
    , decltype(_impl_.age_){0u}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

LandmarkResult::~LandmarkResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.LandmarkResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void LandmarkResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.point_.~RepeatedPtrField();
}

void LandmarkResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void LandmarkResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.LandmarkResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.point_.Clear();
  ::memset(&_impl_.score_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.age_) -
      reinterpret_cast<char*>(&_impl_.score_)) + sizeof(_impl_.age_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* LandmarkResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // float score = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _impl_.score_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.Point point = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_point(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // uint32 gender = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _impl_.gender_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 age = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _impl_.age_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* LandmarkResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.LandmarkResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // float score = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = this->_internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(1, this->_internal_score(), target);
  }

  // repeated .vitis.ai.proto.Point point = 2;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_point_size()); i < n; i++) {
    const auto& repfield = this->_internal_point(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream);
  }

  // uint32 gender = 3;
  if (this->_internal_gender() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(3, this->_internal_gender(), target);
  }

  // uint32 age = 4;
  if (this->_internal_age() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(4, this->_internal_age(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.LandmarkResult)
  return target;
}

size_t LandmarkResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.LandmarkResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.Point point = 2;
  total_size += 1UL * this->_internal_point_size();
  for (const auto& msg : this->_impl_.point_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // float score = 1;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = this->_internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    total_size += 1 + 4;
  }

  // uint32 gender = 3;
  if (this->_internal_gender() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_gender());
  }

  // uint32 age = 4;
  if (this->_internal_age() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_age());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData LandmarkResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    LandmarkResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*LandmarkResult::GetClassData() const { return &_class_data_; }


void LandmarkResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<LandmarkResult*>(&to_msg);
  auto& from = static_cast<const LandmarkResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.LandmarkResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.point_.MergeFrom(from._impl_.point_);
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = from._internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    _this->_internal_set_score(from._internal_score());
  }
  if (from._internal_gender() != 0) {
    _this->_internal_set_gender(from._internal_gender());
  }
  if (from._internal_age() != 0) {
    _this->_internal_set_age(from._internal_age());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void LandmarkResult::CopyFrom(const LandmarkResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.LandmarkResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool LandmarkResult::IsInitialized() const {
  return true;
}

void LandmarkResult::InternalSwap(LandmarkResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.point_.InternalSwap(&other->_impl_.point_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(LandmarkResult, _impl_.age_)
      + sizeof(LandmarkResult::_impl_.age_)
      - PROTOBUF_FIELD_OFFSET(LandmarkResult, _impl_.score_)>(
          reinterpret_cast<char*>(&_impl_.score_),
          reinterpret_cast<char*>(&other->_impl_.score_));
}

::PROTOBUF_NAMESPACE_ID::Metadata LandmarkResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[62]);
}

// ===================================================================

class DetectResult::_Internal {
 public:
};

DetectResult::DetectResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.DetectResult)
}
DetectResult::DetectResult(const DetectResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  DetectResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.bounding_box_){from._impl_.bounding_box_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.DetectResult)
}

inline void DetectResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.bounding_box_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

DetectResult::~DetectResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.DetectResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DetectResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.bounding_box_.~RepeatedPtrField();
}

void DetectResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DetectResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.DetectResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.bounding_box_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* DetectResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.BoundingBox bounding_box = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_bounding_box(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* DetectResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.DetectResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.BoundingBox bounding_box = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_bounding_box_size()); i < n; i++) {
    const auto& repfield = this->_internal_bounding_box(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.DetectResult)
  return target;
}

size_t DetectResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.DetectResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.BoundingBox bounding_box = 1;
  total_size += 1UL * this->_internal_bounding_box_size();
  for (const auto& msg : this->_impl_.bounding_box_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData DetectResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    DetectResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*DetectResult::GetClassData() const { return &_class_data_; }


void DetectResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<DetectResult*>(&to_msg);
  auto& from = static_cast<const DetectResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.DetectResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.bounding_box_.MergeFrom(from._impl_.bounding_box_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void DetectResult::CopyFrom(const DetectResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.DetectResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DetectResult::IsInitialized() const {
  return true;
}

void DetectResult::InternalSwap(DetectResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.bounding_box_.InternalSwap(&other->_impl_.bounding_box_);
}

::PROTOBUF_NAMESPACE_ID::Metadata DetectResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[63]);
}

// ===================================================================

class LineAttribute::_Internal {
 public:
};

LineAttribute::LineAttribute(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.LineAttribute)
}
LineAttribute::LineAttribute(const LineAttribute& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  LineAttribute* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.point_){from._impl_.point_}
    , decltype(_impl_.type_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _this->_impl_.type_ = from._impl_.type_;
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.LineAttribute)
}

inline void LineAttribute::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.point_){arena}
    , decltype(_impl_.type_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

LineAttribute::~LineAttribute() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.LineAttribute)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void LineAttribute::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.point_.~RepeatedPtrField();
}

void LineAttribute::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void LineAttribute::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.LineAttribute)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.point_.Clear();
  _impl_.type_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* LineAttribute::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 type = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.type_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.Point point = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_point(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* LineAttribute::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.LineAttribute)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 type = 1;
  if (this->_internal_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_type(), target);
  }

  // repeated .vitis.ai.proto.Point point = 2;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_point_size()); i < n; i++) {
    const auto& repfield = this->_internal_point(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.LineAttribute)
  return target;
}

size_t LineAttribute::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.LineAttribute)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.Point point = 2;
  total_size += 1UL * this->_internal_point_size();
  for (const auto& msg : this->_impl_.point_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // int32 type = 1;
  if (this->_internal_type() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_type());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData LineAttribute::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    LineAttribute::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*LineAttribute::GetClassData() const { return &_class_data_; }


void LineAttribute::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<LineAttribute*>(&to_msg);
  auto& from = static_cast<const LineAttribute&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.LineAttribute)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.point_.MergeFrom(from._impl_.point_);
  if (from._internal_type() != 0) {
    _this->_internal_set_type(from._internal_type());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void LineAttribute::CopyFrom(const LineAttribute& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.LineAttribute)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool LineAttribute::IsInitialized() const {
  return true;
}

void LineAttribute::InternalSwap(LineAttribute* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.point_.InternalSwap(&other->_impl_.point_);
  swap(_impl_.type_, other->_impl_.type_);
}

::PROTOBUF_NAMESPACE_ID::Metadata LineAttribute::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[64]);
}

// ===================================================================

class RoadlineResult::_Internal {
 public:
};

RoadlineResult::RoadlineResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.RoadlineResult)
}
RoadlineResult::RoadlineResult(const RoadlineResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  RoadlineResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.line_attribute_){from._impl_.line_attribute_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.RoadlineResult)
}

inline void RoadlineResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.line_attribute_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

RoadlineResult::~RoadlineResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.RoadlineResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void RoadlineResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.line_attribute_.~RepeatedPtrField();
}

void RoadlineResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void RoadlineResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.RoadlineResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.line_attribute_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* RoadlineResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.LineAttribute line_attribute = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_line_attribute(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* RoadlineResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.RoadlineResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.LineAttribute line_attribute = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_line_attribute_size()); i < n; i++) {
    const auto& repfield = this->_internal_line_attribute(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.RoadlineResult)
  return target;
}

size_t RoadlineResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.RoadlineResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.LineAttribute line_attribute = 1;
  total_size += 1UL * this->_internal_line_attribute_size();
  for (const auto& msg : this->_impl_.line_attribute_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RoadlineResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    RoadlineResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RoadlineResult::GetClassData() const { return &_class_data_; }


void RoadlineResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<RoadlineResult*>(&to_msg);
  auto& from = static_cast<const RoadlineResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.RoadlineResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.line_attribute_.MergeFrom(from._impl_.line_attribute_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void RoadlineResult::CopyFrom(const RoadlineResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.RoadlineResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool RoadlineResult::IsInitialized() const {
  return true;
}

void RoadlineResult::InternalSwap(RoadlineResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.line_attribute_.InternalSwap(&other->_impl_.line_attribute_);
}

::PROTOBUF_NAMESPACE_ID::Metadata RoadlineResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[65]);
}

// ===================================================================

class Score::_Internal {
 public:
};

Score::Score(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.Score)
}
Score::Score(const Score& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  Score* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.index_){}
    , decltype(_impl_.score_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.index_, &from._impl_.index_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.score_) -
    reinterpret_cast<char*>(&_impl_.index_)) + sizeof(_impl_.score_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.Score)
}

inline void Score::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.index_){0}
    , decltype(_impl_.score_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

Score::~Score() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.Score)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Score::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Score::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void Score::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.Score)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.index_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.score_) -
      reinterpret_cast<char*>(&_impl_.index_)) + sizeof(_impl_.score_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Score::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 index = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.index_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float score = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.score_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Score::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.Score)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 index = 1;
  if (this->_internal_index() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_index(), target);
  }

  // float score = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = this->_internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_score(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.Score)
  return target;
}

size_t Score::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.Score)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 index = 1;
  if (this->_internal_index() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_index());
  }

  // float score = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = this->_internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Score::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    Score::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Score::GetClassData() const { return &_class_data_; }


void Score::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<Score*>(&to_msg);
  auto& from = static_cast<const Score&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.Score)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_index() != 0) {
    _this->_internal_set_index(from._internal_index());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = from._internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    _this->_internal_set_score(from._internal_score());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Score::CopyFrom(const Score& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.Score)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Score::IsInitialized() const {
  return true;
}

void Score::InternalSwap(Score* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Score, _impl_.score_)
      + sizeof(Score::_impl_.score_)
      - PROTOBUF_FIELD_OFFSET(Score, _impl_.index_)>(
          reinterpret_cast<char*>(&_impl_.index_),
          reinterpret_cast<char*>(&other->_impl_.index_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Score::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[66]);
}

// ===================================================================

class ClassificationLabel::_Internal {
 public:
};

ClassificationLabel::ClassificationLabel(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.ClassificationLabel)
}
ClassificationLabel::ClassificationLabel(const ClassificationLabel& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  ClassificationLabel* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.index_){}
    , decltype(_impl_.score_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    _this->_impl_.name_.Set(from._internal_name(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.index_, &from._impl_.index_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.score_) -
    reinterpret_cast<char*>(&_impl_.index_)) + sizeof(_impl_.score_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.ClassificationLabel)
}

inline void ClassificationLabel::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.name_){}
    , decltype(_impl_.index_){0u}
    , decltype(_impl_.score_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

ClassificationLabel::~ClassificationLabel() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.ClassificationLabel)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void ClassificationLabel::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.name_.Destroy();
}

void ClassificationLabel::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void ClassificationLabel::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.ClassificationLabel)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.name_.ClearToEmpty();
  ::memset(&_impl_.index_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.score_) -
      reinterpret_cast<char*>(&_impl_.index_)) + sizeof(_impl_.score_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ClassificationLabel::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.ClassificationLabel.name"));
        } else
          goto handle_unusual;
        continue;
      // uint32 index = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _impl_.index_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float score = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.score_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ClassificationLabel::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.ClassificationLabel)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.ClassificationLabel.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // uint32 index = 2;
  if (this->_internal_index() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(2, this->_internal_index(), target);
  }

  // float score = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = this->_internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_score(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.ClassificationLabel)
  return target;
}

size_t ClassificationLabel::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.ClassificationLabel)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // uint32 index = 2;
  if (this->_internal_index() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_index());
  }

  // float score = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = this->_internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ClassificationLabel::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    ClassificationLabel::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ClassificationLabel::GetClassData() const { return &_class_data_; }


void ClassificationLabel::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<ClassificationLabel*>(&to_msg);
  auto& from = static_cast<const ClassificationLabel&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.ClassificationLabel)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_name().empty()) {
    _this->_internal_set_name(from._internal_name());
  }
  if (from._internal_index() != 0) {
    _this->_internal_set_index(from._internal_index());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = from._internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    _this->_internal_set_score(from._internal_score());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void ClassificationLabel::CopyFrom(const ClassificationLabel& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.ClassificationLabel)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClassificationLabel::IsInitialized() const {
  return true;
}

void ClassificationLabel::InternalSwap(ClassificationLabel* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.name_, lhs_arena,
      &other->_impl_.name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(ClassificationLabel, _impl_.score_)
      + sizeof(ClassificationLabel::_impl_.score_)
      - PROTOBUF_FIELD_OFFSET(ClassificationLabel, _impl_.index_)>(
          reinterpret_cast<char*>(&_impl_.index_),
          reinterpret_cast<char*>(&other->_impl_.index_));
}

::PROTOBUF_NAMESPACE_ID::Metadata ClassificationLabel::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[67]);
}

// ===================================================================

class ClassificationResult::_Internal {
 public:
};

ClassificationResult::ClassificationResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.ClassificationResult)
}
ClassificationResult::ClassificationResult(const ClassificationResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  ClassificationResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.topk_){from._impl_.topk_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.ClassificationResult)
}

inline void ClassificationResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.topk_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

ClassificationResult::~ClassificationResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.ClassificationResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void ClassificationResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.topk_.~RepeatedPtrField();
}

void ClassificationResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void ClassificationResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.ClassificationResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.topk_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ClassificationResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.ClassificationLabel topk = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_topk(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ClassificationResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.ClassificationResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.ClassificationLabel topk = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_topk_size()); i < n; i++) {
    const auto& repfield = this->_internal_topk(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.ClassificationResult)
  return target;
}

size_t ClassificationResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.ClassificationResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.ClassificationLabel topk = 1;
  total_size += 1UL * this->_internal_topk_size();
  for (const auto& msg : this->_impl_.topk_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ClassificationResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    ClassificationResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ClassificationResult::GetClassData() const { return &_class_data_; }


void ClassificationResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<ClassificationResult*>(&to_msg);
  auto& from = static_cast<const ClassificationResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.ClassificationResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.topk_.MergeFrom(from._impl_.topk_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void ClassificationResult::CopyFrom(const ClassificationResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.ClassificationResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClassificationResult::IsInitialized() const {
  return true;
}

void ClassificationResult::InternalSwap(ClassificationResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.topk_.InternalSwap(&other->_impl_.topk_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ClassificationResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[68]);
}

// ===================================================================

class FaceLandmarkResult::_Internal {
 public:
};

FaceLandmarkResult::FaceLandmarkResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.FaceLandmarkResult)
}
FaceLandmarkResult::FaceLandmarkResult(const FaceLandmarkResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  FaceLandmarkResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.point_){from._impl_.point_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.FaceLandmarkResult)
}

inline void FaceLandmarkResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.point_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

FaceLandmarkResult::~FaceLandmarkResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.FaceLandmarkResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void FaceLandmarkResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.point_.~RepeatedPtrField();
}

void FaceLandmarkResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void FaceLandmarkResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.FaceLandmarkResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.point_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* FaceLandmarkResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.Point point = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_point(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* FaceLandmarkResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.FaceLandmarkResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.Point point = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_point_size()); i < n; i++) {
    const auto& repfield = this->_internal_point(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.FaceLandmarkResult)
  return target;
}

size_t FaceLandmarkResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.FaceLandmarkResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.Point point = 1;
  total_size += 1UL * this->_internal_point_size();
  for (const auto& msg : this->_impl_.point_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData FaceLandmarkResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    FaceLandmarkResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*FaceLandmarkResult::GetClassData() const { return &_class_data_; }


void FaceLandmarkResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<FaceLandmarkResult*>(&to_msg);
  auto& from = static_cast<const FaceLandmarkResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.FaceLandmarkResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.point_.MergeFrom(from._impl_.point_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void FaceLandmarkResult::CopyFrom(const FaceLandmarkResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.FaceLandmarkResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool FaceLandmarkResult::IsInitialized() const {
  return true;
}

void FaceLandmarkResult::InternalSwap(FaceLandmarkResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.point_.InternalSwap(&other->_impl_.point_);
}

::PROTOBUF_NAMESPACE_ID::Metadata FaceLandmarkResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[69]);
}

// ===================================================================

class PlateDetectResult::_Internal {
 public:
  static const ::vitis::ai::proto::BoundingBox& bounding_box(const PlateDetectResult* msg);
};

const ::vitis::ai::proto::BoundingBox&
PlateDetectResult::_Internal::bounding_box(const PlateDetectResult* msg) {
  return *msg->_impl_.bounding_box_;
}
PlateDetectResult::PlateDetectResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.PlateDetectResult)
}
PlateDetectResult::PlateDetectResult(const PlateDetectResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PlateDetectResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.bounding_box_){nullptr}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_bounding_box()) {
    _this->_impl_.bounding_box_ = new ::vitis::ai::proto::BoundingBox(*from._impl_.bounding_box_);
  }
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.PlateDetectResult)
}

inline void PlateDetectResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.bounding_box_){nullptr}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

PlateDetectResult::~PlateDetectResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.PlateDetectResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PlateDetectResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.bounding_box_;
}

void PlateDetectResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PlateDetectResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.PlateDetectResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && _impl_.bounding_box_ != nullptr) {
    delete _impl_.bounding_box_;
  }
  _impl_.bounding_box_ = nullptr;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PlateDetectResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.BoundingBox bounding_box = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_bounding_box(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PlateDetectResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.PlateDetectResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.BoundingBox bounding_box = 1;
  if (this->_internal_has_bounding_box()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::bounding_box(this),
        _Internal::bounding_box(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.PlateDetectResult)
  return target;
}

size_t PlateDetectResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.PlateDetectResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .vitis.ai.proto.BoundingBox bounding_box = 1;
  if (this->_internal_has_bounding_box()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.bounding_box_);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PlateDetectResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PlateDetectResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PlateDetectResult::GetClassData() const { return &_class_data_; }


void PlateDetectResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PlateDetectResult*>(&to_msg);
  auto& from = static_cast<const PlateDetectResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.PlateDetectResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_bounding_box()) {
    _this->_internal_mutable_bounding_box()->::vitis::ai::proto::BoundingBox::MergeFrom(
        from._internal_bounding_box());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PlateDetectResult::CopyFrom(const PlateDetectResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.PlateDetectResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PlateDetectResult::IsInitialized() const {
  return true;
}

void PlateDetectResult::InternalSwap(PlateDetectResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.bounding_box_, other->_impl_.bounding_box_);
}

::PROTOBUF_NAMESPACE_ID::Metadata PlateDetectResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[70]);
}

// ===================================================================

class PlateNumberResult::_Internal {
 public:
};

PlateNumberResult::PlateNumberResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.PlateNumberResult)
}
PlateNumberResult::PlateNumberResult(const PlateNumberResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PlateNumberResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.plate_number_){}
    , decltype(_impl_.plate_color_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.plate_number_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.plate_number_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_plate_number().empty()) {
    _this->_impl_.plate_number_.Set(from._internal_plate_number(), 
      _this->GetArenaForAllocation());
  }
  _impl_.plate_color_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.plate_color_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_plate_color().empty()) {
    _this->_impl_.plate_color_.Set(from._internal_plate_color(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.PlateNumberResult)
}

inline void PlateNumberResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.plate_number_){}
    , decltype(_impl_.plate_color_){}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.plate_number_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.plate_number_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.plate_color_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.plate_color_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

PlateNumberResult::~PlateNumberResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.PlateNumberResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PlateNumberResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.plate_number_.Destroy();
  _impl_.plate_color_.Destroy();
}

void PlateNumberResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PlateNumberResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.PlateNumberResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.plate_number_.ClearToEmpty();
  _impl_.plate_color_.ClearToEmpty();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PlateNumberResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string plate_number = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_plate_number();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.PlateNumberResult.plate_number"));
        } else
          goto handle_unusual;
        continue;
      // string plate_color = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_plate_color();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.PlateNumberResult.plate_color"));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PlateNumberResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.PlateNumberResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string plate_number = 1;
  if (!this->_internal_plate_number().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_plate_number().data(), static_cast<int>(this->_internal_plate_number().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.PlateNumberResult.plate_number");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_plate_number(), target);
  }

  // string plate_color = 2;
  if (!this->_internal_plate_color().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_plate_color().data(), static_cast<int>(this->_internal_plate_color().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.PlateNumberResult.plate_color");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_plate_color(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.PlateNumberResult)
  return target;
}

size_t PlateNumberResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.PlateNumberResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string plate_number = 1;
  if (!this->_internal_plate_number().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_plate_number());
  }

  // string plate_color = 2;
  if (!this->_internal_plate_color().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_plate_color());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PlateNumberResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PlateNumberResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PlateNumberResult::GetClassData() const { return &_class_data_; }


void PlateNumberResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PlateNumberResult*>(&to_msg);
  auto& from = static_cast<const PlateNumberResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.PlateNumberResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_plate_number().empty()) {
    _this->_internal_set_plate_number(from._internal_plate_number());
  }
  if (!from._internal_plate_color().empty()) {
    _this->_internal_set_plate_color(from._internal_plate_color());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PlateNumberResult::CopyFrom(const PlateNumberResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.PlateNumberResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PlateNumberResult::IsInitialized() const {
  return true;
}

void PlateNumberResult::InternalSwap(PlateNumberResult* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.plate_number_, lhs_arena,
      &other->_impl_.plate_number_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.plate_color_, lhs_arena,
      &other->_impl_.plate_color_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata PlateNumberResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[71]);
}

// ===================================================================

class PlateRecogResult::_Internal {
 public:
  static const ::vitis::ai::proto::BoundingBox& bounding_box(const PlateRecogResult* msg);
};

const ::vitis::ai::proto::BoundingBox&
PlateRecogResult::_Internal::bounding_box(const PlateRecogResult* msg) {
  return *msg->_impl_.bounding_box_;
}
PlateRecogResult::PlateRecogResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.PlateRecogResult)
}
PlateRecogResult::PlateRecogResult(const PlateRecogResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PlateRecogResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.plate_number_){}
    , decltype(_impl_.plate_color_){}
    , decltype(_impl_.bounding_box_){nullptr}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.plate_number_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.plate_number_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_plate_number().empty()) {
    _this->_impl_.plate_number_.Set(from._internal_plate_number(), 
      _this->GetArenaForAllocation());
  }
  _impl_.plate_color_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.plate_color_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_plate_color().empty()) {
    _this->_impl_.plate_color_.Set(from._internal_plate_color(), 
      _this->GetArenaForAllocation());
  }
  if (from._internal_has_bounding_box()) {
    _this->_impl_.bounding_box_ = new ::vitis::ai::proto::BoundingBox(*from._impl_.bounding_box_);
  }
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.PlateRecogResult)
}

inline void PlateRecogResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.plate_number_){}
    , decltype(_impl_.plate_color_){}
    , decltype(_impl_.bounding_box_){nullptr}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.plate_number_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.plate_number_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.plate_color_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.plate_color_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

PlateRecogResult::~PlateRecogResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.PlateRecogResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PlateRecogResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.plate_number_.Destroy();
  _impl_.plate_color_.Destroy();
  if (this != internal_default_instance()) delete _impl_.bounding_box_;
}

void PlateRecogResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PlateRecogResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.PlateRecogResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.plate_number_.ClearToEmpty();
  _impl_.plate_color_.ClearToEmpty();
  if (GetArenaForAllocation() == nullptr && _impl_.bounding_box_ != nullptr) {
    delete _impl_.bounding_box_;
  }
  _impl_.bounding_box_ = nullptr;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PlateRecogResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.BoundingBox bounding_box = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_bounding_box(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string plate_number = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_plate_number();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.PlateRecogResult.plate_number"));
        } else
          goto handle_unusual;
        continue;
      // string plate_color = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_plate_color();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "vitis.ai.proto.PlateRecogResult.plate_color"));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PlateRecogResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.PlateRecogResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.BoundingBox bounding_box = 1;
  if (this->_internal_has_bounding_box()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::bounding_box(this),
        _Internal::bounding_box(this).GetCachedSize(), target, stream);
  }

  // string plate_number = 2;
  if (!this->_internal_plate_number().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_plate_number().data(), static_cast<int>(this->_internal_plate_number().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.PlateRecogResult.plate_number");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_plate_number(), target);
  }

  // string plate_color = 3;
  if (!this->_internal_plate_color().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_plate_color().data(), static_cast<int>(this->_internal_plate_color().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "vitis.ai.proto.PlateRecogResult.plate_color");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_plate_color(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.PlateRecogResult)
  return target;
}

size_t PlateRecogResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.PlateRecogResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string plate_number = 2;
  if (!this->_internal_plate_number().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_plate_number());
  }

  // string plate_color = 3;
  if (!this->_internal_plate_color().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_plate_color());
  }

  // .vitis.ai.proto.BoundingBox bounding_box = 1;
  if (this->_internal_has_bounding_box()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.bounding_box_);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PlateRecogResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PlateRecogResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PlateRecogResult::GetClassData() const { return &_class_data_; }


void PlateRecogResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PlateRecogResult*>(&to_msg);
  auto& from = static_cast<const PlateRecogResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.PlateRecogResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_plate_number().empty()) {
    _this->_internal_set_plate_number(from._internal_plate_number());
  }
  if (!from._internal_plate_color().empty()) {
    _this->_internal_set_plate_color(from._internal_plate_color());
  }
  if (from._internal_has_bounding_box()) {
    _this->_internal_mutable_bounding_box()->::vitis::ai::proto::BoundingBox::MergeFrom(
        from._internal_bounding_box());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PlateRecogResult::CopyFrom(const PlateRecogResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.PlateRecogResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PlateRecogResult::IsInitialized() const {
  return true;
}

void PlateRecogResult::InternalSwap(PlateRecogResult* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.plate_number_, lhs_arena,
      &other->_impl_.plate_number_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.plate_color_, lhs_arena,
      &other->_impl_.plate_color_, rhs_arena
  );
  swap(_impl_.bounding_box_, other->_impl_.bounding_box_);
}

::PROTOBUF_NAMESPACE_ID::Metadata PlateRecogResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[72]);
}

// ===================================================================

class PoseDetectResult::_Internal {
 public:
  static const ::vitis::ai::proto::Point& right_shoulder(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& right_elbow(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& right_wrist(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& left_shoulder(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& left_elbow(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& left_wrist(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& right_hip(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& right_knee(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& right_ankle(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& left_hip(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& left_knee(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& left_ankle(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& head(const PoseDetectResult* msg);
  static const ::vitis::ai::proto::Point& neck(const PoseDetectResult* msg);
};

const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::right_shoulder(const PoseDetectResult* msg) {
  return *msg->_impl_.right_shoulder_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::right_elbow(const PoseDetectResult* msg) {
  return *msg->_impl_.right_elbow_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::right_wrist(const PoseDetectResult* msg) {
  return *msg->_impl_.right_wrist_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::left_shoulder(const PoseDetectResult* msg) {
  return *msg->_impl_.left_shoulder_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::left_elbow(const PoseDetectResult* msg) {
  return *msg->_impl_.left_elbow_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::left_wrist(const PoseDetectResult* msg) {
  return *msg->_impl_.left_wrist_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::right_hip(const PoseDetectResult* msg) {
  return *msg->_impl_.right_hip_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::right_knee(const PoseDetectResult* msg) {
  return *msg->_impl_.right_knee_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::right_ankle(const PoseDetectResult* msg) {
  return *msg->_impl_.right_ankle_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::left_hip(const PoseDetectResult* msg) {
  return *msg->_impl_.left_hip_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::left_knee(const PoseDetectResult* msg) {
  return *msg->_impl_.left_knee_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::left_ankle(const PoseDetectResult* msg) {
  return *msg->_impl_.left_ankle_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::head(const PoseDetectResult* msg) {
  return *msg->_impl_.head_;
}
const ::vitis::ai::proto::Point&
PoseDetectResult::_Internal::neck(const PoseDetectResult* msg) {
  return *msg->_impl_.neck_;
}
PoseDetectResult::PoseDetectResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.PoseDetectResult)
}
PoseDetectResult::PoseDetectResult(const PoseDetectResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  PoseDetectResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.right_shoulder_){nullptr}
    , decltype(_impl_.right_elbow_){nullptr}
    , decltype(_impl_.right_wrist_){nullptr}
    , decltype(_impl_.left_shoulder_){nullptr}
    , decltype(_impl_.left_elbow_){nullptr}
    , decltype(_impl_.left_wrist_){nullptr}
    , decltype(_impl_.right_hip_){nullptr}
    , decltype(_impl_.right_knee_){nullptr}
    , decltype(_impl_.right_ankle_){nullptr}
    , decltype(_impl_.left_hip_){nullptr}
    , decltype(_impl_.left_knee_){nullptr}
    , decltype(_impl_.left_ankle_){nullptr}
    , decltype(_impl_.head_){nullptr}
    , decltype(_impl_.neck_){nullptr}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_right_shoulder()) {
    _this->_impl_.right_shoulder_ = new ::vitis::ai::proto::Point(*from._impl_.right_shoulder_);
  }
  if (from._internal_has_right_elbow()) {
    _this->_impl_.right_elbow_ = new ::vitis::ai::proto::Point(*from._impl_.right_elbow_);
  }
  if (from._internal_has_right_wrist()) {
    _this->_impl_.right_wrist_ = new ::vitis::ai::proto::Point(*from._impl_.right_wrist_);
  }
  if (from._internal_has_left_shoulder()) {
    _this->_impl_.left_shoulder_ = new ::vitis::ai::proto::Point(*from._impl_.left_shoulder_);
  }
  if (from._internal_has_left_elbow()) {
    _this->_impl_.left_elbow_ = new ::vitis::ai::proto::Point(*from._impl_.left_elbow_);
  }
  if (from._internal_has_left_wrist()) {
    _this->_impl_.left_wrist_ = new ::vitis::ai::proto::Point(*from._impl_.left_wrist_);
  }
  if (from._internal_has_right_hip()) {
    _this->_impl_.right_hip_ = new ::vitis::ai::proto::Point(*from._impl_.right_hip_);
  }
  if (from._internal_has_right_knee()) {
    _this->_impl_.right_knee_ = new ::vitis::ai::proto::Point(*from._impl_.right_knee_);
  }
  if (from._internal_has_right_ankle()) {
    _this->_impl_.right_ankle_ = new ::vitis::ai::proto::Point(*from._impl_.right_ankle_);
  }
  if (from._internal_has_left_hip()) {
    _this->_impl_.left_hip_ = new ::vitis::ai::proto::Point(*from._impl_.left_hip_);
  }
  if (from._internal_has_left_knee()) {
    _this->_impl_.left_knee_ = new ::vitis::ai::proto::Point(*from._impl_.left_knee_);
  }
  if (from._internal_has_left_ankle()) {
    _this->_impl_.left_ankle_ = new ::vitis::ai::proto::Point(*from._impl_.left_ankle_);
  }
  if (from._internal_has_head()) {
    _this->_impl_.head_ = new ::vitis::ai::proto::Point(*from._impl_.head_);
  }
  if (from._internal_has_neck()) {
    _this->_impl_.neck_ = new ::vitis::ai::proto::Point(*from._impl_.neck_);
  }
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.PoseDetectResult)
}

inline void PoseDetectResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.right_shoulder_){nullptr}
    , decltype(_impl_.right_elbow_){nullptr}
    , decltype(_impl_.right_wrist_){nullptr}
    , decltype(_impl_.left_shoulder_){nullptr}
    , decltype(_impl_.left_elbow_){nullptr}
    , decltype(_impl_.left_wrist_){nullptr}
    , decltype(_impl_.right_hip_){nullptr}
    , decltype(_impl_.right_knee_){nullptr}
    , decltype(_impl_.right_ankle_){nullptr}
    , decltype(_impl_.left_hip_){nullptr}
    , decltype(_impl_.left_knee_){nullptr}
    , decltype(_impl_.left_ankle_){nullptr}
    , decltype(_impl_.head_){nullptr}
    , decltype(_impl_.neck_){nullptr}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

PoseDetectResult::~PoseDetectResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.PoseDetectResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void PoseDetectResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.right_shoulder_;
  if (this != internal_default_instance()) delete _impl_.right_elbow_;
  if (this != internal_default_instance()) delete _impl_.right_wrist_;
  if (this != internal_default_instance()) delete _impl_.left_shoulder_;
  if (this != internal_default_instance()) delete _impl_.left_elbow_;
  if (this != internal_default_instance()) delete _impl_.left_wrist_;
  if (this != internal_default_instance()) delete _impl_.right_hip_;
  if (this != internal_default_instance()) delete _impl_.right_knee_;
  if (this != internal_default_instance()) delete _impl_.right_ankle_;
  if (this != internal_default_instance()) delete _impl_.left_hip_;
  if (this != internal_default_instance()) delete _impl_.left_knee_;
  if (this != internal_default_instance()) delete _impl_.left_ankle_;
  if (this != internal_default_instance()) delete _impl_.head_;
  if (this != internal_default_instance()) delete _impl_.neck_;
}

void PoseDetectResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void PoseDetectResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.PoseDetectResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaForAllocation() == nullptr && _impl_.right_shoulder_ != nullptr) {
    delete _impl_.right_shoulder_;
  }
  _impl_.right_shoulder_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.right_elbow_ != nullptr) {
    delete _impl_.right_elbow_;
  }
  _impl_.right_elbow_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.right_wrist_ != nullptr) {
    delete _impl_.right_wrist_;
  }
  _impl_.right_wrist_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.left_shoulder_ != nullptr) {
    delete _impl_.left_shoulder_;
  }
  _impl_.left_shoulder_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.left_elbow_ != nullptr) {
    delete _impl_.left_elbow_;
  }
  _impl_.left_elbow_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.left_wrist_ != nullptr) {
    delete _impl_.left_wrist_;
  }
  _impl_.left_wrist_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.right_hip_ != nullptr) {
    delete _impl_.right_hip_;
  }
  _impl_.right_hip_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.right_knee_ != nullptr) {
    delete _impl_.right_knee_;
  }
  _impl_.right_knee_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.right_ankle_ != nullptr) {
    delete _impl_.right_ankle_;
  }
  _impl_.right_ankle_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.left_hip_ != nullptr) {
    delete _impl_.left_hip_;
  }
  _impl_.left_hip_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.left_knee_ != nullptr) {
    delete _impl_.left_knee_;
  }
  _impl_.left_knee_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.left_ankle_ != nullptr) {
    delete _impl_.left_ankle_;
  }
  _impl_.left_ankle_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.head_ != nullptr) {
    delete _impl_.head_;
  }
  _impl_.head_ = nullptr;
  if (GetArenaForAllocation() == nullptr && _impl_.neck_ != nullptr) {
    delete _impl_.neck_;
  }
  _impl_.neck_ = nullptr;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* PoseDetectResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.Point right_shoulder = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_right_shoulder(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point right_elbow = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_right_elbow(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point right_wrist = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_right_wrist(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point left_shoulder = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_left_shoulder(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point left_elbow = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_left_elbow(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point left_wrist = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_left_wrist(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point right_hip = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_right_hip(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point right_knee = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_right_knee(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point right_ankle = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          ptr = ctx->ParseMessage(_internal_mutable_right_ankle(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point left_hip = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr = ctx->ParseMessage(_internal_mutable_left_hip(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point left_knee = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr = ctx->ParseMessage(_internal_mutable_left_knee(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point left_ankle = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_left_ankle(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point head = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 106)) {
          ptr = ctx->ParseMessage(_internal_mutable_head(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.Point neck = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          ptr = ctx->ParseMessage(_internal_mutable_neck(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* PoseDetectResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.PoseDetectResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.Point right_shoulder = 1;
  if (this->_internal_has_right_shoulder()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::right_shoulder(this),
        _Internal::right_shoulder(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point right_elbow = 2;
  if (this->_internal_has_right_elbow()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::right_elbow(this),
        _Internal::right_elbow(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point right_wrist = 3;
  if (this->_internal_has_right_wrist()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(3, _Internal::right_wrist(this),
        _Internal::right_wrist(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point left_shoulder = 4;
  if (this->_internal_has_left_shoulder()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, _Internal::left_shoulder(this),
        _Internal::left_shoulder(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point left_elbow = 5;
  if (this->_internal_has_left_elbow()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(5, _Internal::left_elbow(this),
        _Internal::left_elbow(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point left_wrist = 6;
  if (this->_internal_has_left_wrist()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(6, _Internal::left_wrist(this),
        _Internal::left_wrist(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point right_hip = 7;
  if (this->_internal_has_right_hip()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(7, _Internal::right_hip(this),
        _Internal::right_hip(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point right_knee = 8;
  if (this->_internal_has_right_knee()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(8, _Internal::right_knee(this),
        _Internal::right_knee(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point right_ankle = 9;
  if (this->_internal_has_right_ankle()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(9, _Internal::right_ankle(this),
        _Internal::right_ankle(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point left_hip = 10;
  if (this->_internal_has_left_hip()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(10, _Internal::left_hip(this),
        _Internal::left_hip(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point left_knee = 11;
  if (this->_internal_has_left_knee()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(11, _Internal::left_knee(this),
        _Internal::left_knee(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point left_ankle = 12;
  if (this->_internal_has_left_ankle()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(12, _Internal::left_ankle(this),
        _Internal::left_ankle(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point head = 13;
  if (this->_internal_has_head()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(13, _Internal::head(this),
        _Internal::head(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.Point neck = 14;
  if (this->_internal_has_neck()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(14, _Internal::neck(this),
        _Internal::neck(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.PoseDetectResult)
  return target;
}

size_t PoseDetectResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.PoseDetectResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // .vitis.ai.proto.Point right_shoulder = 1;
  if (this->_internal_has_right_shoulder()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.right_shoulder_);
  }

  // .vitis.ai.proto.Point right_elbow = 2;
  if (this->_internal_has_right_elbow()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.right_elbow_);
  }

  // .vitis.ai.proto.Point right_wrist = 3;
  if (this->_internal_has_right_wrist()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.right_wrist_);
  }

  // .vitis.ai.proto.Point left_shoulder = 4;
  if (this->_internal_has_left_shoulder()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.left_shoulder_);
  }

  // .vitis.ai.proto.Point left_elbow = 5;
  if (this->_internal_has_left_elbow()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.left_elbow_);
  }

  // .vitis.ai.proto.Point left_wrist = 6;
  if (this->_internal_has_left_wrist()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.left_wrist_);
  }

  // .vitis.ai.proto.Point right_hip = 7;
  if (this->_internal_has_right_hip()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.right_hip_);
  }

  // .vitis.ai.proto.Point right_knee = 8;
  if (this->_internal_has_right_knee()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.right_knee_);
  }

  // .vitis.ai.proto.Point right_ankle = 9;
  if (this->_internal_has_right_ankle()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.right_ankle_);
  }

  // .vitis.ai.proto.Point left_hip = 10;
  if (this->_internal_has_left_hip()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.left_hip_);
  }

  // .vitis.ai.proto.Point left_knee = 11;
  if (this->_internal_has_left_knee()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.left_knee_);
  }

  // .vitis.ai.proto.Point left_ankle = 12;
  if (this->_internal_has_left_ankle()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.left_ankle_);
  }

  // .vitis.ai.proto.Point head = 13;
  if (this->_internal_has_head()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.head_);
  }

  // .vitis.ai.proto.Point neck = 14;
  if (this->_internal_has_neck()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.neck_);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData PoseDetectResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    PoseDetectResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*PoseDetectResult::GetClassData() const { return &_class_data_; }


void PoseDetectResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<PoseDetectResult*>(&to_msg);
  auto& from = static_cast<const PoseDetectResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.PoseDetectResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_right_shoulder()) {
    _this->_internal_mutable_right_shoulder()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_right_shoulder());
  }
  if (from._internal_has_right_elbow()) {
    _this->_internal_mutable_right_elbow()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_right_elbow());
  }
  if (from._internal_has_right_wrist()) {
    _this->_internal_mutable_right_wrist()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_right_wrist());
  }
  if (from._internal_has_left_shoulder()) {
    _this->_internal_mutable_left_shoulder()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_left_shoulder());
  }
  if (from._internal_has_left_elbow()) {
    _this->_internal_mutable_left_elbow()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_left_elbow());
  }
  if (from._internal_has_left_wrist()) {
    _this->_internal_mutable_left_wrist()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_left_wrist());
  }
  if (from._internal_has_right_hip()) {
    _this->_internal_mutable_right_hip()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_right_hip());
  }
  if (from._internal_has_right_knee()) {
    _this->_internal_mutable_right_knee()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_right_knee());
  }
  if (from._internal_has_right_ankle()) {
    _this->_internal_mutable_right_ankle()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_right_ankle());
  }
  if (from._internal_has_left_hip()) {
    _this->_internal_mutable_left_hip()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_left_hip());
  }
  if (from._internal_has_left_knee()) {
    _this->_internal_mutable_left_knee()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_left_knee());
  }
  if (from._internal_has_left_ankle()) {
    _this->_internal_mutable_left_ankle()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_left_ankle());
  }
  if (from._internal_has_head()) {
    _this->_internal_mutable_head()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_head());
  }
  if (from._internal_has_neck()) {
    _this->_internal_mutable_neck()->::vitis::ai::proto::Point::MergeFrom(
        from._internal_neck());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void PoseDetectResult::CopyFrom(const PoseDetectResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.PoseDetectResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool PoseDetectResult::IsInitialized() const {
  return true;
}

void PoseDetectResult::InternalSwap(PoseDetectResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(PoseDetectResult, _impl_.neck_)
      + sizeof(PoseDetectResult::_impl_.neck_)
      - PROTOBUF_FIELD_OFFSET(PoseDetectResult, _impl_.right_shoulder_)>(
          reinterpret_cast<char*>(&_impl_.right_shoulder_),
          reinterpret_cast<char*>(&other->_impl_.right_shoulder_));
}

::PROTOBUF_NAMESPACE_ID::Metadata PoseDetectResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[73]);
}

// ===================================================================

class FaceFeatureResult::_Internal {
 public:
};

FaceFeatureResult::FaceFeatureResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.FaceFeatureResult)
}
FaceFeatureResult::FaceFeatureResult(const FaceFeatureResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  FaceFeatureResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.float_vec_){from._impl_.float_vec_}
    , decltype(_impl_.fix_vec_){}
    , decltype(_impl_.scale_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.fix_vec_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.fix_vec_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_fix_vec().empty()) {
    _this->_impl_.fix_vec_.Set(from._internal_fix_vec(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.scale_ = from._impl_.scale_;
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.FaceFeatureResult)
}

inline void FaceFeatureResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.float_vec_){arena}
    , decltype(_impl_.fix_vec_){}
    , decltype(_impl_.scale_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
  _impl_.fix_vec_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.fix_vec_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

FaceFeatureResult::~FaceFeatureResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.FaceFeatureResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void FaceFeatureResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.float_vec_.~RepeatedField();
  _impl_.fix_vec_.Destroy();
}

void FaceFeatureResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void FaceFeatureResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.FaceFeatureResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.float_vec_.Clear();
  _impl_.fix_vec_.ClearToEmpty();
  _impl_.scale_ = 0;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* FaceFeatureResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated float float_vec = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedFloatParser(_internal_mutable_float_vec(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 13) {
          _internal_add_float_vec(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr));
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // bytes fix_vec = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_fix_vec();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float scale = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.scale_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* FaceFeatureResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.FaceFeatureResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated float float_vec = 1;
  if (this->_internal_float_vec_size() > 0) {
    target = stream->WriteFixedPacked(1, _internal_float_vec(), target);
  }

  // bytes fix_vec = 2;
  if (!this->_internal_fix_vec().empty()) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_fix_vec(), target);
  }

  // float scale = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale = this->_internal_scale();
  uint32_t raw_scale;
  memcpy(&raw_scale, &tmp_scale, sizeof(tmp_scale));
  if (raw_scale != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_scale(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.FaceFeatureResult)
  return target;
}

size_t FaceFeatureResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.FaceFeatureResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated float float_vec = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_float_vec_size());
    size_t data_size = 4UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // bytes fix_vec = 2;
  if (!this->_internal_fix_vec().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_fix_vec());
  }

  // float scale = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale = this->_internal_scale();
  uint32_t raw_scale;
  memcpy(&raw_scale, &tmp_scale, sizeof(tmp_scale));
  if (raw_scale != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData FaceFeatureResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    FaceFeatureResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*FaceFeatureResult::GetClassData() const { return &_class_data_; }


void FaceFeatureResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<FaceFeatureResult*>(&to_msg);
  auto& from = static_cast<const FaceFeatureResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.FaceFeatureResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.float_vec_.MergeFrom(from._impl_.float_vec_);
  if (!from._internal_fix_vec().empty()) {
    _this->_internal_set_fix_vec(from._internal_fix_vec());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_scale = from._internal_scale();
  uint32_t raw_scale;
  memcpy(&raw_scale, &tmp_scale, sizeof(tmp_scale));
  if (raw_scale != 0) {
    _this->_internal_set_scale(from._internal_scale());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void FaceFeatureResult::CopyFrom(const FaceFeatureResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.FaceFeatureResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool FaceFeatureResult::IsInitialized() const {
  return true;
}

void FaceFeatureResult::InternalSwap(FaceFeatureResult* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.float_vec_.InternalSwap(&other->_impl_.float_vec_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.fix_vec_, lhs_arena,
      &other->_impl_.fix_vec_, rhs_arena
  );
  swap(_impl_.scale_, other->_impl_.scale_);
}

::PROTOBUF_NAMESPACE_ID::Metadata FaceFeatureResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[74]);
}

// ===================================================================

class FaceDetectRecogResult::_Internal {
 public:
};

FaceDetectRecogResult::FaceDetectRecogResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.FaceDetectRecogResult)
}
FaceDetectRecogResult::FaceDetectRecogResult(const FaceDetectRecogResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  FaceDetectRecogResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.bounding_box_){from._impl_.bounding_box_}
    , decltype(_impl_.feature_){from._impl_.feature_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.FaceDetectRecogResult)
}

inline void FaceDetectRecogResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.bounding_box_){arena}
    , decltype(_impl_.feature_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

FaceDetectRecogResult::~FaceDetectRecogResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.FaceDetectRecogResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void FaceDetectRecogResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.bounding_box_.~RepeatedPtrField();
  _impl_.feature_.~RepeatedPtrField();
}

void FaceDetectRecogResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void FaceDetectRecogResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.FaceDetectRecogResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.bounding_box_.Clear();
  _impl_.feature_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* FaceDetectRecogResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.BoundingBox bounding_box = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_bounding_box(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.FaceFeatureResult feature = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_feature(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* FaceDetectRecogResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.FaceDetectRecogResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.BoundingBox bounding_box = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_bounding_box_size()); i < n; i++) {
    const auto& repfield = this->_internal_bounding_box(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  // repeated .vitis.ai.proto.FaceFeatureResult feature = 2;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_feature_size()); i < n; i++) {
    const auto& repfield = this->_internal_feature(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.FaceDetectRecogResult)
  return target;
}

size_t FaceDetectRecogResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.FaceDetectRecogResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.BoundingBox bounding_box = 1;
  total_size += 1UL * this->_internal_bounding_box_size();
  for (const auto& msg : this->_impl_.bounding_box_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .vitis.ai.proto.FaceFeatureResult feature = 2;
  total_size += 1UL * this->_internal_feature_size();
  for (const auto& msg : this->_impl_.feature_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData FaceDetectRecogResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    FaceDetectRecogResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*FaceDetectRecogResult::GetClassData() const { return &_class_data_; }


void FaceDetectRecogResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<FaceDetectRecogResult*>(&to_msg);
  auto& from = static_cast<const FaceDetectRecogResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.FaceDetectRecogResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.bounding_box_.MergeFrom(from._impl_.bounding_box_);
  _this->_impl_.feature_.MergeFrom(from._impl_.feature_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void FaceDetectRecogResult::CopyFrom(const FaceDetectRecogResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.FaceDetectRecogResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool FaceDetectRecogResult::IsInitialized() const {
  return true;
}

void FaceDetectRecogResult::InternalSwap(FaceDetectRecogResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.bounding_box_.InternalSwap(&other->_impl_.bounding_box_);
  _impl_.feature_.InternalSwap(&other->_impl_.feature_);
}

::PROTOBUF_NAMESPACE_ID::Metadata FaceDetectRecogResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[75]);
}

// ===================================================================

class SegmetationResult::_Internal {
 public:
};

SegmetationResult::SegmetationResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.SegmetationResult)
}
SegmetationResult::SegmetationResult(const SegmetationResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  SegmetationResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.data_){from._impl_.data_}
    , /*decltype(_impl_._data_cached_byte_size_)*/{0}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.SegmetationResult)
}

inline void SegmetationResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.data_){arena}
    , /*decltype(_impl_._data_cached_byte_size_)*/{0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

SegmetationResult::~SegmetationResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.SegmetationResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void SegmetationResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.data_.~RepeatedField();
}

void SegmetationResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void SegmetationResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.SegmetationResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.data_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* SegmetationResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated uint32 data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedUInt32Parser(_internal_mutable_data(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 8) {
          _internal_add_data(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* SegmetationResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.SegmetationResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated uint32 data = 1;
  {
    int byte_size = _impl_._data_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteUInt32Packed(
          1, _internal_data(), byte_size, target);
    }
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.SegmetationResult)
  return target;
}

size_t SegmetationResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.SegmetationResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated uint32 data = 1;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      UInt32Size(this->_impl_.data_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._data_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData SegmetationResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    SegmetationResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*SegmetationResult::GetClassData() const { return &_class_data_; }


void SegmetationResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<SegmetationResult*>(&to_msg);
  auto& from = static_cast<const SegmetationResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.SegmetationResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.data_.MergeFrom(from._impl_.data_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void SegmetationResult::CopyFrom(const SegmetationResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.SegmetationResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool SegmetationResult::IsInitialized() const {
  return true;
}

void SegmetationResult::InternalSwap(SegmetationResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.data_.InternalSwap(&other->_impl_.data_);
}

::PROTOBUF_NAMESPACE_ID::Metadata SegmetationResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[76]);
}

// ===================================================================

class MedicalSegmetationResult::_Internal {
 public:
};

MedicalSegmetationResult::MedicalSegmetationResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.MedicalSegmetationResult)
}
MedicalSegmetationResult::MedicalSegmetationResult(const MedicalSegmetationResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  MedicalSegmetationResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.segmentation_){from._impl_.segmentation_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.MedicalSegmetationResult)
}

inline void MedicalSegmetationResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.segmentation_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

MedicalSegmetationResult::~MedicalSegmetationResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.MedicalSegmetationResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MedicalSegmetationResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.segmentation_.~RepeatedPtrField();
}

void MedicalSegmetationResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MedicalSegmetationResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.MedicalSegmetationResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.segmentation_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* MedicalSegmetationResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated .vitis.ai.proto.SegmetationResult segmentation = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_segmentation(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* MedicalSegmetationResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.MedicalSegmetationResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.SegmetationResult segmentation = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_segmentation_size()); i < n; i++) {
    const auto& repfield = this->_internal_segmentation(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.MedicalSegmetationResult)
  return target;
}

size_t MedicalSegmetationResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.MedicalSegmetationResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.SegmetationResult segmentation = 1;
  total_size += 1UL * this->_internal_segmentation_size();
  for (const auto& msg : this->_impl_.segmentation_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MedicalSegmetationResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    MedicalSegmetationResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MedicalSegmetationResult::GetClassData() const { return &_class_data_; }


void MedicalSegmetationResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<MedicalSegmetationResult*>(&to_msg);
  auto& from = static_cast<const MedicalSegmetationResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.MedicalSegmetationResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.segmentation_.MergeFrom(from._impl_.segmentation_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void MedicalSegmetationResult::CopyFrom(const MedicalSegmetationResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.MedicalSegmetationResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MedicalSegmetationResult::IsInitialized() const {
  return true;
}

void MedicalSegmetationResult::InternalSwap(MedicalSegmetationResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.segmentation_.InternalSwap(&other->_impl_.segmentation_);
}

::PROTOBUF_NAMESPACE_ID::Metadata MedicalSegmetationResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[77]);
}

// ===================================================================

class VehicleResult::_Internal {
 public:
};

VehicleResult::VehicleResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.VehicleResult)
}
VehicleResult::VehicleResult(const VehicleResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  VehicleResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.label_){}
    , decltype(_impl_.score_){}
    , decltype(_impl_.x_){}
    , decltype(_impl_.y_){}
    , decltype(_impl_.width_){}
    , decltype(_impl_.height_){}
    , decltype(_impl_.angle_){}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.label_, &from._impl_.label_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.angle_) -
    reinterpret_cast<char*>(&_impl_.label_)) + sizeof(_impl_.angle_));
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.VehicleResult)
}

inline void VehicleResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.label_){0}
    , decltype(_impl_.score_){0}
    , decltype(_impl_.x_){0}
    , decltype(_impl_.y_){0}
    , decltype(_impl_.width_){0}
    , decltype(_impl_.height_){0}
    , decltype(_impl_.angle_){0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

VehicleResult::~VehicleResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.VehicleResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void VehicleResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void VehicleResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void VehicleResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.VehicleResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&_impl_.label_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&_impl_.angle_) -
      reinterpret_cast<char*>(&_impl_.label_)) + sizeof(_impl_.angle_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* VehicleResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int32 label = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _impl_.label_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float score = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 21)) {
          _impl_.score_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float x = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 29)) {
          _impl_.x_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float y = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 37)) {
          _impl_.y_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float width = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 45)) {
          _impl_.width_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float height = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 53)) {
          _impl_.height_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // float angle = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 61)) {
          _impl_.angle_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* VehicleResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.VehicleResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // int32 label = 1;
  if (this->_internal_label() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_label(), target);
  }

  // float score = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = this->_internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(2, this->_internal_score(), target);
  }

  // float x = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_x = this->_internal_x();
  uint32_t raw_x;
  memcpy(&raw_x, &tmp_x, sizeof(tmp_x));
  if (raw_x != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(3, this->_internal_x(), target);
  }

  // float y = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_y = this->_internal_y();
  uint32_t raw_y;
  memcpy(&raw_y, &tmp_y, sizeof(tmp_y));
  if (raw_y != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(4, this->_internal_y(), target);
  }

  // float width = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_width = this->_internal_width();
  uint32_t raw_width;
  memcpy(&raw_width, &tmp_width, sizeof(tmp_width));
  if (raw_width != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(5, this->_internal_width(), target);
  }

  // float height = 6;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_height = this->_internal_height();
  uint32_t raw_height;
  memcpy(&raw_height, &tmp_height, sizeof(tmp_height));
  if (raw_height != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(6, this->_internal_height(), target);
  }

  // float angle = 7;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_angle = this->_internal_angle();
  uint32_t raw_angle;
  memcpy(&raw_angle, &tmp_angle, sizeof(tmp_angle));
  if (raw_angle != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(7, this->_internal_angle(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.VehicleResult)
  return target;
}

size_t VehicleResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.VehicleResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int32 label = 1;
  if (this->_internal_label() != 0) {
    total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_label());
  }

  // float score = 2;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = this->_internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    total_size += 1 + 4;
  }

  // float x = 3;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_x = this->_internal_x();
  uint32_t raw_x;
  memcpy(&raw_x, &tmp_x, sizeof(tmp_x));
  if (raw_x != 0) {
    total_size += 1 + 4;
  }

  // float y = 4;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_y = this->_internal_y();
  uint32_t raw_y;
  memcpy(&raw_y, &tmp_y, sizeof(tmp_y));
  if (raw_y != 0) {
    total_size += 1 + 4;
  }

  // float width = 5;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_width = this->_internal_width();
  uint32_t raw_width;
  memcpy(&raw_width, &tmp_width, sizeof(tmp_width));
  if (raw_width != 0) {
    total_size += 1 + 4;
  }

  // float height = 6;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_height = this->_internal_height();
  uint32_t raw_height;
  memcpy(&raw_height, &tmp_height, sizeof(tmp_height));
  if (raw_height != 0) {
    total_size += 1 + 4;
  }

  // float angle = 7;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_angle = this->_internal_angle();
  uint32_t raw_angle;
  memcpy(&raw_angle, &tmp_angle, sizeof(tmp_angle));
  if (raw_angle != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData VehicleResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    VehicleResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*VehicleResult::GetClassData() const { return &_class_data_; }


void VehicleResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<VehicleResult*>(&to_msg);
  auto& from = static_cast<const VehicleResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.VehicleResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_label() != 0) {
    _this->_internal_set_label(from._internal_label());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_score = from._internal_score();
  uint32_t raw_score;
  memcpy(&raw_score, &tmp_score, sizeof(tmp_score));
  if (raw_score != 0) {
    _this->_internal_set_score(from._internal_score());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_x = from._internal_x();
  uint32_t raw_x;
  memcpy(&raw_x, &tmp_x, sizeof(tmp_x));
  if (raw_x != 0) {
    _this->_internal_set_x(from._internal_x());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_y = from._internal_y();
  uint32_t raw_y;
  memcpy(&raw_y, &tmp_y, sizeof(tmp_y));
  if (raw_y != 0) {
    _this->_internal_set_y(from._internal_y());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_width = from._internal_width();
  uint32_t raw_width;
  memcpy(&raw_width, &tmp_width, sizeof(tmp_width));
  if (raw_width != 0) {
    _this->_internal_set_width(from._internal_width());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_height = from._internal_height();
  uint32_t raw_height;
  memcpy(&raw_height, &tmp_height, sizeof(tmp_height));
  if (raw_height != 0) {
    _this->_internal_set_height(from._internal_height());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_angle = from._internal_angle();
  uint32_t raw_angle;
  memcpy(&raw_angle, &tmp_angle, sizeof(tmp_angle));
  if (raw_angle != 0) {
    _this->_internal_set_angle(from._internal_angle());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void VehicleResult::CopyFrom(const VehicleResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.VehicleResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool VehicleResult::IsInitialized() const {
  return true;
}

void VehicleResult::InternalSwap(VehicleResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(VehicleResult, _impl_.angle_)
      + sizeof(VehicleResult::_impl_.angle_)
      - PROTOBUF_FIELD_OFFSET(VehicleResult, _impl_.label_)>(
          reinterpret_cast<char*>(&_impl_.label_),
          reinterpret_cast<char*>(&other->_impl_.label_));
}

::PROTOBUF_NAMESPACE_ID::Metadata VehicleResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[78]);
}

// ===================================================================

class MultiTaskResult::_Internal {
 public:
  static const ::vitis::ai::proto::SegmetationResult& segmentation(const MultiTaskResult* msg);
};

const ::vitis::ai::proto::SegmetationResult&
MultiTaskResult::_Internal::segmentation(const MultiTaskResult* msg) {
  return *msg->_impl_.segmentation_;
}
MultiTaskResult::MultiTaskResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.MultiTaskResult)
}
MultiTaskResult::MultiTaskResult(const MultiTaskResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  MultiTaskResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.vehicle_reuslt_){from._impl_.vehicle_reuslt_}
    , decltype(_impl_.segmentation_){nullptr}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_segmentation()) {
    _this->_impl_.segmentation_ = new ::vitis::ai::proto::SegmetationResult(*from._impl_.segmentation_);
  }
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.MultiTaskResult)
}

inline void MultiTaskResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.vehicle_reuslt_){arena}
    , decltype(_impl_.segmentation_){nullptr}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

MultiTaskResult::~MultiTaskResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.MultiTaskResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void MultiTaskResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.vehicle_reuslt_.~RepeatedPtrField();
  if (this != internal_default_instance()) delete _impl_.segmentation_;
}

void MultiTaskResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void MultiTaskResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.MultiTaskResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.vehicle_reuslt_.Clear();
  if (GetArenaForAllocation() == nullptr && _impl_.segmentation_ != nullptr) {
    delete _impl_.segmentation_;
  }
  _impl_.segmentation_ = nullptr;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* MultiTaskResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.SegmetationResult segmentation = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_segmentation(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .vitis.ai.proto.VehicleResult vehicle_reuslt = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_vehicle_reuslt(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* MultiTaskResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.MultiTaskResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.SegmetationResult segmentation = 1;
  if (this->_internal_has_segmentation()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::segmentation(this),
        _Internal::segmentation(this).GetCachedSize(), target, stream);
  }

  // repeated .vitis.ai.proto.VehicleResult vehicle_reuslt = 2;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_vehicle_reuslt_size()); i < n; i++) {
    const auto& repfield = this->_internal_vehicle_reuslt(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.MultiTaskResult)
  return target;
}

size_t MultiTaskResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.MultiTaskResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .vitis.ai.proto.VehicleResult vehicle_reuslt = 2;
  total_size += 1UL * this->_internal_vehicle_reuslt_size();
  for (const auto& msg : this->_impl_.vehicle_reuslt_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // .vitis.ai.proto.SegmetationResult segmentation = 1;
  if (this->_internal_has_segmentation()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.segmentation_);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData MultiTaskResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    MultiTaskResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*MultiTaskResult::GetClassData() const { return &_class_data_; }


void MultiTaskResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<MultiTaskResult*>(&to_msg);
  auto& from = static_cast<const MultiTaskResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.MultiTaskResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.vehicle_reuslt_.MergeFrom(from._impl_.vehicle_reuslt_);
  if (from._internal_has_segmentation()) {
    _this->_internal_mutable_segmentation()->::vitis::ai::proto::SegmetationResult::MergeFrom(
        from._internal_segmentation());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void MultiTaskResult::CopyFrom(const MultiTaskResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.MultiTaskResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MultiTaskResult::IsInitialized() const {
  return true;
}

void MultiTaskResult::InternalSwap(MultiTaskResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.vehicle_reuslt_.InternalSwap(&other->_impl_.vehicle_reuslt_);
  swap(_impl_.segmentation_, other->_impl_.segmentation_);
}

::PROTOBUF_NAMESPACE_ID::Metadata MultiTaskResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[79]);
}

// ===================================================================

class ReidResult::_Internal {
 public:
};

ReidResult::ReidResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.ReidResult)
}
ReidResult::ReidResult(const ReidResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  ReidResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.data_){from._impl_.data_}
    , /*decltype(_impl_._data_cached_byte_size_)*/{0}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.ReidResult)
}

inline void ReidResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.data_){arena}
    , /*decltype(_impl_._data_cached_byte_size_)*/{0}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

ReidResult::~ReidResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.ReidResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void ReidResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.data_.~RepeatedField();
}

void ReidResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void ReidResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.ReidResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  _impl_.data_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* ReidResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated uint32 data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedUInt32Parser(_internal_mutable_data(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 8) {
          _internal_add_data(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* ReidResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.ReidResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated uint32 data = 1;
  {
    int byte_size = _impl_._data_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteUInt32Packed(
          1, _internal_data(), byte_size, target);
    }
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.ReidResult)
  return target;
}

size_t ReidResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.ReidResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated uint32 data = 1;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      UInt32Size(this->_impl_.data_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _impl_._data_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ReidResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    ReidResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ReidResult::GetClassData() const { return &_class_data_; }


void ReidResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<ReidResult*>(&to_msg);
  auto& from = static_cast<const ReidResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.ReidResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.data_.MergeFrom(from._impl_.data_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void ReidResult::CopyFrom(const ReidResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.ReidResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ReidResult::IsInitialized() const {
  return true;
}

void ReidResult::InternalSwap(ReidResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.data_.InternalSwap(&other->_impl_.data_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ReidResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[80]);
}

// ===================================================================

class DpuModelResult::_Internal {
 public:
  static const ::vitis::ai::proto::LandmarkResult& landmark_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::DetectResult& detect_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::AttributeResult& attribute_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::DetectResult& refine_det_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::ClassificationResult& classification_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::RoadlineResult& roadline_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::FaceLandmarkResult& facelandmark_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::PlateDetectResult& plate_detect_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::PlateNumberResult& plate_number_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::PlateRecogResult& plate_recog_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::PoseDetectResult& pose_detect_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::FaceFeatureResult& face_feature_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::SegmetationResult& segmentation_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::MedicalSegmetationResult& medical_segmentation_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::MultiTaskResult& multitask_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::ReidResult& reid_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::FaceDetectRecogResult& face_detect_recog_result(const DpuModelResult* msg);
  static const ::vitis::ai::proto::ClassificationResult& vehicleclassification_result(const DpuModelResult* msg);
};

const ::vitis::ai::proto::LandmarkResult&
DpuModelResult::_Internal::landmark_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.landmark_result_;
}
const ::vitis::ai::proto::DetectResult&
DpuModelResult::_Internal::detect_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.detect_result_;
}
const ::vitis::ai::proto::AttributeResult&
DpuModelResult::_Internal::attribute_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.attribute_result_;
}
const ::vitis::ai::proto::DetectResult&
DpuModelResult::_Internal::refine_det_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.refine_det_result_;
}
const ::vitis::ai::proto::ClassificationResult&
DpuModelResult::_Internal::classification_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.classification_result_;
}
const ::vitis::ai::proto::RoadlineResult&
DpuModelResult::_Internal::roadline_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.roadline_result_;
}
const ::vitis::ai::proto::FaceLandmarkResult&
DpuModelResult::_Internal::facelandmark_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.facelandmark_result_;
}
const ::vitis::ai::proto::PlateDetectResult&
DpuModelResult::_Internal::plate_detect_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.plate_detect_result_;
}
const ::vitis::ai::proto::PlateNumberResult&
DpuModelResult::_Internal::plate_number_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.plate_number_result_;
}
const ::vitis::ai::proto::PlateRecogResult&
DpuModelResult::_Internal::plate_recog_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.plate_recog_result_;
}
const ::vitis::ai::proto::PoseDetectResult&
DpuModelResult::_Internal::pose_detect_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.pose_detect_result_;
}
const ::vitis::ai::proto::FaceFeatureResult&
DpuModelResult::_Internal::face_feature_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.face_feature_result_;
}
const ::vitis::ai::proto::SegmetationResult&
DpuModelResult::_Internal::segmentation_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.segmentation_result_;
}
const ::vitis::ai::proto::MedicalSegmetationResult&
DpuModelResult::_Internal::medical_segmentation_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.medical_segmentation_result_;
}
const ::vitis::ai::proto::MultiTaskResult&
DpuModelResult::_Internal::multitask_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.multitask_result_;
}
const ::vitis::ai::proto::ReidResult&
DpuModelResult::_Internal::reid_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.reid_result_;
}
const ::vitis::ai::proto::FaceDetectRecogResult&
DpuModelResult::_Internal::face_detect_recog_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.face_detect_recog_result_;
}
const ::vitis::ai::proto::ClassificationResult&
DpuModelResult::_Internal::vehicleclassification_result(const DpuModelResult* msg) {
  return *msg->_impl_.dpu_model_result_.vehicleclassification_result_;
}
void DpuModelResult::set_allocated_landmark_result(::vitis::ai::proto::LandmarkResult* landmark_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (landmark_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(landmark_result);
    if (message_arena != submessage_arena) {
      landmark_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, landmark_result, submessage_arena);
    }
    set_has_landmark_result();
    _impl_.dpu_model_result_.landmark_result_ = landmark_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.landmark_result)
}
void DpuModelResult::set_allocated_detect_result(::vitis::ai::proto::DetectResult* detect_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (detect_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(detect_result);
    if (message_arena != submessage_arena) {
      detect_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, detect_result, submessage_arena);
    }
    set_has_detect_result();
    _impl_.dpu_model_result_.detect_result_ = detect_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.detect_result)
}
void DpuModelResult::set_allocated_attribute_result(::vitis::ai::proto::AttributeResult* attribute_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (attribute_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(attribute_result);
    if (message_arena != submessage_arena) {
      attribute_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, attribute_result, submessage_arena);
    }
    set_has_attribute_result();
    _impl_.dpu_model_result_.attribute_result_ = attribute_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.attribute_result)
}
void DpuModelResult::set_allocated_refine_det_result(::vitis::ai::proto::DetectResult* refine_det_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (refine_det_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(refine_det_result);
    if (message_arena != submessage_arena) {
      refine_det_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, refine_det_result, submessage_arena);
    }
    set_has_refine_det_result();
    _impl_.dpu_model_result_.refine_det_result_ = refine_det_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.refine_det_result)
}
void DpuModelResult::set_allocated_classification_result(::vitis::ai::proto::ClassificationResult* classification_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (classification_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(classification_result);
    if (message_arena != submessage_arena) {
      classification_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, classification_result, submessage_arena);
    }
    set_has_classification_result();
    _impl_.dpu_model_result_.classification_result_ = classification_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.classification_result)
}
void DpuModelResult::set_allocated_roadline_result(::vitis::ai::proto::RoadlineResult* roadline_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (roadline_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(roadline_result);
    if (message_arena != submessage_arena) {
      roadline_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, roadline_result, submessage_arena);
    }
    set_has_roadline_result();
    _impl_.dpu_model_result_.roadline_result_ = roadline_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.roadline_result)
}
void DpuModelResult::set_allocated_facelandmark_result(::vitis::ai::proto::FaceLandmarkResult* facelandmark_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (facelandmark_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(facelandmark_result);
    if (message_arena != submessage_arena) {
      facelandmark_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, facelandmark_result, submessage_arena);
    }
    set_has_facelandmark_result();
    _impl_.dpu_model_result_.facelandmark_result_ = facelandmark_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.facelandmark_result)
}
void DpuModelResult::set_allocated_plate_detect_result(::vitis::ai::proto::PlateDetectResult* plate_detect_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (plate_detect_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(plate_detect_result);
    if (message_arena != submessage_arena) {
      plate_detect_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, plate_detect_result, submessage_arena);
    }
    set_has_plate_detect_result();
    _impl_.dpu_model_result_.plate_detect_result_ = plate_detect_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.plate_detect_result)
}
void DpuModelResult::set_allocated_plate_number_result(::vitis::ai::proto::PlateNumberResult* plate_number_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (plate_number_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(plate_number_result);
    if (message_arena != submessage_arena) {
      plate_number_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, plate_number_result, submessage_arena);
    }
    set_has_plate_number_result();
    _impl_.dpu_model_result_.plate_number_result_ = plate_number_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.plate_number_result)
}
void DpuModelResult::set_allocated_plate_recog_result(::vitis::ai::proto::PlateRecogResult* plate_recog_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (plate_recog_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(plate_recog_result);
    if (message_arena != submessage_arena) {
      plate_recog_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, plate_recog_result, submessage_arena);
    }
    set_has_plate_recog_result();
    _impl_.dpu_model_result_.plate_recog_result_ = plate_recog_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.plate_recog_result)
}
void DpuModelResult::set_allocated_pose_detect_result(::vitis::ai::proto::PoseDetectResult* pose_detect_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (pose_detect_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(pose_detect_result);
    if (message_arena != submessage_arena) {
      pose_detect_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, pose_detect_result, submessage_arena);
    }
    set_has_pose_detect_result();
    _impl_.dpu_model_result_.pose_detect_result_ = pose_detect_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.pose_detect_result)
}
void DpuModelResult::set_allocated_face_feature_result(::vitis::ai::proto::FaceFeatureResult* face_feature_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (face_feature_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(face_feature_result);
    if (message_arena != submessage_arena) {
      face_feature_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, face_feature_result, submessage_arena);
    }
    set_has_face_feature_result();
    _impl_.dpu_model_result_.face_feature_result_ = face_feature_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.face_feature_result)
}
void DpuModelResult::set_allocated_segmentation_result(::vitis::ai::proto::SegmetationResult* segmentation_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (segmentation_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(segmentation_result);
    if (message_arena != submessage_arena) {
      segmentation_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, segmentation_result, submessage_arena);
    }
    set_has_segmentation_result();
    _impl_.dpu_model_result_.segmentation_result_ = segmentation_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.segmentation_result)
}
void DpuModelResult::set_allocated_medical_segmentation_result(::vitis::ai::proto::MedicalSegmetationResult* medical_segmentation_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (medical_segmentation_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(medical_segmentation_result);
    if (message_arena != submessage_arena) {
      medical_segmentation_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, medical_segmentation_result, submessage_arena);
    }
    set_has_medical_segmentation_result();
    _impl_.dpu_model_result_.medical_segmentation_result_ = medical_segmentation_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.medical_segmentation_result)
}
void DpuModelResult::set_allocated_multitask_result(::vitis::ai::proto::MultiTaskResult* multitask_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (multitask_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(multitask_result);
    if (message_arena != submessage_arena) {
      multitask_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, multitask_result, submessage_arena);
    }
    set_has_multitask_result();
    _impl_.dpu_model_result_.multitask_result_ = multitask_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.multitask_result)
}
void DpuModelResult::set_allocated_reid_result(::vitis::ai::proto::ReidResult* reid_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (reid_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(reid_result);
    if (message_arena != submessage_arena) {
      reid_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, reid_result, submessage_arena);
    }
    set_has_reid_result();
    _impl_.dpu_model_result_.reid_result_ = reid_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.reid_result)
}
void DpuModelResult::set_allocated_face_detect_recog_result(::vitis::ai::proto::FaceDetectRecogResult* face_detect_recog_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (face_detect_recog_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(face_detect_recog_result);
    if (message_arena != submessage_arena) {
      face_detect_recog_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, face_detect_recog_result, submessage_arena);
    }
    set_has_face_detect_recog_result();
    _impl_.dpu_model_result_.face_detect_recog_result_ = face_detect_recog_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.face_detect_recog_result)
}
void DpuModelResult::set_allocated_vehicleclassification_result(::vitis::ai::proto::ClassificationResult* vehicleclassification_result) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  clear_dpu_model_result();
  if (vehicleclassification_result) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(vehicleclassification_result);
    if (message_arena != submessage_arena) {
      vehicleclassification_result = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, vehicleclassification_result, submessage_arena);
    }
    set_has_vehicleclassification_result();
    _impl_.dpu_model_result_.vehicleclassification_result_ = vehicleclassification_result;
  }
  // @@protoc_insertion_point(field_set_allocated:vitis.ai.proto.DpuModelResult.vehicleclassification_result)
}
DpuModelResult::DpuModelResult(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:vitis.ai.proto.DpuModelResult)
}
DpuModelResult::DpuModelResult(const DpuModelResult& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  DpuModelResult* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.dpu_model_result_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  clear_has_dpu_model_result();
  switch (from.dpu_model_result_case()) {
    case kLandmarkResult: {
      _this->_internal_mutable_landmark_result()->::vitis::ai::proto::LandmarkResult::MergeFrom(
          from._internal_landmark_result());
      break;
    }
    case kDetectResult: {
      _this->_internal_mutable_detect_result()->::vitis::ai::proto::DetectResult::MergeFrom(
          from._internal_detect_result());
      break;
    }
    case kAttributeResult: {
      _this->_internal_mutable_attribute_result()->::vitis::ai::proto::AttributeResult::MergeFrom(
          from._internal_attribute_result());
      break;
    }
    case kRefineDetResult: {
      _this->_internal_mutable_refine_det_result()->::vitis::ai::proto::DetectResult::MergeFrom(
          from._internal_refine_det_result());
      break;
    }
    case kClassificationResult: {
      _this->_internal_mutable_classification_result()->::vitis::ai::proto::ClassificationResult::MergeFrom(
          from._internal_classification_result());
      break;
    }
    case kRoadlineResult: {
      _this->_internal_mutable_roadline_result()->::vitis::ai::proto::RoadlineResult::MergeFrom(
          from._internal_roadline_result());
      break;
    }
    case kFacelandmarkResult: {
      _this->_internal_mutable_facelandmark_result()->::vitis::ai::proto::FaceLandmarkResult::MergeFrom(
          from._internal_facelandmark_result());
      break;
    }
    case kPlateDetectResult: {
      _this->_internal_mutable_plate_detect_result()->::vitis::ai::proto::PlateDetectResult::MergeFrom(
          from._internal_plate_detect_result());
      break;
    }
    case kPlateNumberResult: {
      _this->_internal_mutable_plate_number_result()->::vitis::ai::proto::PlateNumberResult::MergeFrom(
          from._internal_plate_number_result());
      break;
    }
    case kPlateRecogResult: {
      _this->_internal_mutable_plate_recog_result()->::vitis::ai::proto::PlateRecogResult::MergeFrom(
          from._internal_plate_recog_result());
      break;
    }
    case kPoseDetectResult: {
      _this->_internal_mutable_pose_detect_result()->::vitis::ai::proto::PoseDetectResult::MergeFrom(
          from._internal_pose_detect_result());
      break;
    }
    case kFaceFeatureResult: {
      _this->_internal_mutable_face_feature_result()->::vitis::ai::proto::FaceFeatureResult::MergeFrom(
          from._internal_face_feature_result());
      break;
    }
    case kSegmentationResult: {
      _this->_internal_mutable_segmentation_result()->::vitis::ai::proto::SegmetationResult::MergeFrom(
          from._internal_segmentation_result());
      break;
    }
    case kMedicalSegmentationResult: {
      _this->_internal_mutable_medical_segmentation_result()->::vitis::ai::proto::MedicalSegmetationResult::MergeFrom(
          from._internal_medical_segmentation_result());
      break;
    }
    case kMultitaskResult: {
      _this->_internal_mutable_multitask_result()->::vitis::ai::proto::MultiTaskResult::MergeFrom(
          from._internal_multitask_result());
      break;
    }
    case kReidResult: {
      _this->_internal_mutable_reid_result()->::vitis::ai::proto::ReidResult::MergeFrom(
          from._internal_reid_result());
      break;
    }
    case kFaceDetectRecogResult: {
      _this->_internal_mutable_face_detect_recog_result()->::vitis::ai::proto::FaceDetectRecogResult::MergeFrom(
          from._internal_face_detect_recog_result());
      break;
    }
    case kVehicleclassificationResult: {
      _this->_internal_mutable_vehicleclassification_result()->::vitis::ai::proto::ClassificationResult::MergeFrom(
          from._internal_vehicleclassification_result());
      break;
    }
    case DPU_MODEL_RESULT_NOT_SET: {
      break;
    }
  }
  // @@protoc_insertion_point(copy_constructor:vitis.ai.proto.DpuModelResult)
}

inline void DpuModelResult::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.dpu_model_result_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , /*decltype(_impl_._oneof_case_)*/{}
  };
  clear_has_dpu_model_result();
}

DpuModelResult::~DpuModelResult() {
  // @@protoc_insertion_point(destructor:vitis.ai.proto.DpuModelResult)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void DpuModelResult::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (has_dpu_model_result()) {
    clear_dpu_model_result();
  }
}

void DpuModelResult::SetCachedSize(int size) const {
  _impl_._cached_size_.Set(size);
}

void DpuModelResult::clear_dpu_model_result() {
// @@protoc_insertion_point(one_of_clear_start:vitis.ai.proto.DpuModelResult)
  switch (dpu_model_result_case()) {
    case kLandmarkResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.landmark_result_;
      }
      break;
    }
    case kDetectResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.detect_result_;
      }
      break;
    }
    case kAttributeResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.attribute_result_;
      }
      break;
    }
    case kRefineDetResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.refine_det_result_;
      }
      break;
    }
    case kClassificationResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.classification_result_;
      }
      break;
    }
    case kRoadlineResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.roadline_result_;
      }
      break;
    }
    case kFacelandmarkResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.facelandmark_result_;
      }
      break;
    }
    case kPlateDetectResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.plate_detect_result_;
      }
      break;
    }
    case kPlateNumberResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.plate_number_result_;
      }
      break;
    }
    case kPlateRecogResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.plate_recog_result_;
      }
      break;
    }
    case kPoseDetectResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.pose_detect_result_;
      }
      break;
    }
    case kFaceFeatureResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.face_feature_result_;
      }
      break;
    }
    case kSegmentationResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.segmentation_result_;
      }
      break;
    }
    case kMedicalSegmentationResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.medical_segmentation_result_;
      }
      break;
    }
    case kMultitaskResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.multitask_result_;
      }
      break;
    }
    case kReidResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.reid_result_;
      }
      break;
    }
    case kFaceDetectRecogResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.face_detect_recog_result_;
      }
      break;
    }
    case kVehicleclassificationResult: {
      if (GetArenaForAllocation() == nullptr) {
        delete _impl_.dpu_model_result_.vehicleclassification_result_;
      }
      break;
    }
    case DPU_MODEL_RESULT_NOT_SET: {
      break;
    }
  }
  _impl_._oneof_case_[0] = DPU_MODEL_RESULT_NOT_SET;
}


void DpuModelResult::Clear() {
// @@protoc_insertion_point(message_clear_start:vitis.ai.proto.DpuModelResult)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  clear_dpu_model_result();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* DpuModelResult::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .vitis.ai.proto.LandmarkResult landmark_result = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_landmark_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.DetectResult detect_result = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_detect_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.AttributeResult attribute_result = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ctx->ParseMessage(_internal_mutable_attribute_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.DetectResult refine_det_result = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_refine_det_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.ClassificationResult classification_result = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_classification_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.RoadlineResult roadline_result = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_roadline_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.FaceLandmarkResult facelandmark_result = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_facelandmark_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.PlateDetectResult plate_detect_result = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_plate_detect_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.PlateNumberResult plate_number_result = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          ptr = ctx->ParseMessage(_internal_mutable_plate_number_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.PlateRecogResult plate_recog_result = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr = ctx->ParseMessage(_internal_mutable_plate_recog_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.PoseDetectResult pose_detect_result = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr = ctx->ParseMessage(_internal_mutable_pose_detect_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.FaceFeatureResult face_feature_result = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_face_feature_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.SegmetationResult segmentation_result = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 106)) {
          ptr = ctx->ParseMessage(_internal_mutable_segmentation_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.MedicalSegmetationResult medical_segmentation_result = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          ptr = ctx->ParseMessage(_internal_mutable_medical_segmentation_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.MultiTaskResult multitask_result = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 122)) {
          ptr = ctx->ParseMessage(_internal_mutable_multitask_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.ReidResult reid_result = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 130)) {
          ptr = ctx->ParseMessage(_internal_mutable_reid_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.FaceDetectRecogResult face_detect_recog_result = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 138)) {
          ptr = ctx->ParseMessage(_internal_mutable_face_detect_recog_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .vitis.ai.proto.ClassificationResult vehicleclassification_result = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 146)) {
          ptr = ctx->ParseMessage(_internal_mutable_vehicleclassification_result(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* DpuModelResult::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:vitis.ai.proto.DpuModelResult)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .vitis.ai.proto.LandmarkResult landmark_result = 1;
  if (_internal_has_landmark_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::landmark_result(this),
        _Internal::landmark_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.DetectResult detect_result = 2;
  if (_internal_has_detect_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::detect_result(this),
        _Internal::detect_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.AttributeResult attribute_result = 3;
  if (_internal_has_attribute_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(3, _Internal::attribute_result(this),
        _Internal::attribute_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.DetectResult refine_det_result = 4;
  if (_internal_has_refine_det_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, _Internal::refine_det_result(this),
        _Internal::refine_det_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.ClassificationResult classification_result = 5;
  if (_internal_has_classification_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(5, _Internal::classification_result(this),
        _Internal::classification_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.RoadlineResult roadline_result = 6;
  if (_internal_has_roadline_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(6, _Internal::roadline_result(this),
        _Internal::roadline_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.FaceLandmarkResult facelandmark_result = 7;
  if (_internal_has_facelandmark_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(7, _Internal::facelandmark_result(this),
        _Internal::facelandmark_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.PlateDetectResult plate_detect_result = 8;
  if (_internal_has_plate_detect_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(8, _Internal::plate_detect_result(this),
        _Internal::plate_detect_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.PlateNumberResult plate_number_result = 9;
  if (_internal_has_plate_number_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(9, _Internal::plate_number_result(this),
        _Internal::plate_number_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.PlateRecogResult plate_recog_result = 10;
  if (_internal_has_plate_recog_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(10, _Internal::plate_recog_result(this),
        _Internal::plate_recog_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.PoseDetectResult pose_detect_result = 11;
  if (_internal_has_pose_detect_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(11, _Internal::pose_detect_result(this),
        _Internal::pose_detect_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.FaceFeatureResult face_feature_result = 12;
  if (_internal_has_face_feature_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(12, _Internal::face_feature_result(this),
        _Internal::face_feature_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.SegmetationResult segmentation_result = 13;
  if (_internal_has_segmentation_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(13, _Internal::segmentation_result(this),
        _Internal::segmentation_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.MedicalSegmetationResult medical_segmentation_result = 14;
  if (_internal_has_medical_segmentation_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(14, _Internal::medical_segmentation_result(this),
        _Internal::medical_segmentation_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.MultiTaskResult multitask_result = 15;
  if (_internal_has_multitask_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(15, _Internal::multitask_result(this),
        _Internal::multitask_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.ReidResult reid_result = 16;
  if (_internal_has_reid_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(16, _Internal::reid_result(this),
        _Internal::reid_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.FaceDetectRecogResult face_detect_recog_result = 17;
  if (_internal_has_face_detect_recog_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(17, _Internal::face_detect_recog_result(this),
        _Internal::face_detect_recog_result(this).GetCachedSize(), target, stream);
  }

  // .vitis.ai.proto.ClassificationResult vehicleclassification_result = 18;
  if (_internal_has_vehicleclassification_result()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(18, _Internal::vehicleclassification_result(this),
        _Internal::vehicleclassification_result(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:vitis.ai.proto.DpuModelResult)
  return target;
}

size_t DpuModelResult::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:vitis.ai.proto.DpuModelResult)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  switch (dpu_model_result_case()) {
    // .vitis.ai.proto.LandmarkResult landmark_result = 1;
    case kLandmarkResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.landmark_result_);
      break;
    }
    // .vitis.ai.proto.DetectResult detect_result = 2;
    case kDetectResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.detect_result_);
      break;
    }
    // .vitis.ai.proto.AttributeResult attribute_result = 3;
    case kAttributeResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.attribute_result_);
      break;
    }
    // .vitis.ai.proto.DetectResult refine_det_result = 4;
    case kRefineDetResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.refine_det_result_);
      break;
    }
    // .vitis.ai.proto.ClassificationResult classification_result = 5;
    case kClassificationResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.classification_result_);
      break;
    }
    // .vitis.ai.proto.RoadlineResult roadline_result = 6;
    case kRoadlineResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.roadline_result_);
      break;
    }
    // .vitis.ai.proto.FaceLandmarkResult facelandmark_result = 7;
    case kFacelandmarkResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.facelandmark_result_);
      break;
    }
    // .vitis.ai.proto.PlateDetectResult plate_detect_result = 8;
    case kPlateDetectResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.plate_detect_result_);
      break;
    }
    // .vitis.ai.proto.PlateNumberResult plate_number_result = 9;
    case kPlateNumberResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.plate_number_result_);
      break;
    }
    // .vitis.ai.proto.PlateRecogResult plate_recog_result = 10;
    case kPlateRecogResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.plate_recog_result_);
      break;
    }
    // .vitis.ai.proto.PoseDetectResult pose_detect_result = 11;
    case kPoseDetectResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.pose_detect_result_);
      break;
    }
    // .vitis.ai.proto.FaceFeatureResult face_feature_result = 12;
    case kFaceFeatureResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.face_feature_result_);
      break;
    }
    // .vitis.ai.proto.SegmetationResult segmentation_result = 13;
    case kSegmentationResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.segmentation_result_);
      break;
    }
    // .vitis.ai.proto.MedicalSegmetationResult medical_segmentation_result = 14;
    case kMedicalSegmentationResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.medical_segmentation_result_);
      break;
    }
    // .vitis.ai.proto.MultiTaskResult multitask_result = 15;
    case kMultitaskResult: {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.multitask_result_);
      break;
    }
    // .vitis.ai.proto.ReidResult reid_result = 16;
    case kReidResult: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.reid_result_);
      break;
    }
    // .vitis.ai.proto.FaceDetectRecogResult face_detect_recog_result = 17;
    case kFaceDetectRecogResult: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.face_detect_recog_result_);
      break;
    }
    // .vitis.ai.proto.ClassificationResult vehicleclassification_result = 18;
    case kVehicleclassificationResult: {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dpu_model_result_.vehicleclassification_result_);
      break;
    }
    case DPU_MODEL_RESULT_NOT_SET: {
      break;
    }
  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData DpuModelResult::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
    DpuModelResult::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*DpuModelResult::GetClassData() const { return &_class_data_; }


void DpuModelResult::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<DpuModelResult*>(&to_msg);
  auto& from = static_cast<const DpuModelResult&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:vitis.ai.proto.DpuModelResult)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  switch (from.dpu_model_result_case()) {
    case kLandmarkResult: {
      _this->_internal_mutable_landmark_result()->::vitis::ai::proto::LandmarkResult::MergeFrom(
          from._internal_landmark_result());
      break;
    }
    case kDetectResult: {
      _this->_internal_mutable_detect_result()->::vitis::ai::proto::DetectResult::MergeFrom(
          from._internal_detect_result());
      break;
    }
    case kAttributeResult: {
      _this->_internal_mutable_attribute_result()->::vitis::ai::proto::AttributeResult::MergeFrom(
          from._internal_attribute_result());
      break;
    }
    case kRefineDetResult: {
      _this->_internal_mutable_refine_det_result()->::vitis::ai::proto::DetectResult::MergeFrom(
          from._internal_refine_det_result());
      break;
    }
    case kClassificationResult: {
      _this->_internal_mutable_classification_result()->::vitis::ai::proto::ClassificationResult::MergeFrom(
          from._internal_classification_result());
      break;
    }
    case kRoadlineResult: {
      _this->_internal_mutable_roadline_result()->::vitis::ai::proto::RoadlineResult::MergeFrom(
          from._internal_roadline_result());
      break;
    }
    case kFacelandmarkResult: {
      _this->_internal_mutable_facelandmark_result()->::vitis::ai::proto::FaceLandmarkResult::MergeFrom(
          from._internal_facelandmark_result());
      break;
    }
    case kPlateDetectResult: {
      _this->_internal_mutable_plate_detect_result()->::vitis::ai::proto::PlateDetectResult::MergeFrom(
          from._internal_plate_detect_result());
      break;
    }
    case kPlateNumberResult: {
      _this->_internal_mutable_plate_number_result()->::vitis::ai::proto::PlateNumberResult::MergeFrom(
          from._internal_plate_number_result());
      break;
    }
    case kPlateRecogResult: {
      _this->_internal_mutable_plate_recog_result()->::vitis::ai::proto::PlateRecogResult::MergeFrom(
          from._internal_plate_recog_result());
      break;
    }
    case kPoseDetectResult: {
      _this->_internal_mutable_pose_detect_result()->::vitis::ai::proto::PoseDetectResult::MergeFrom(
          from._internal_pose_detect_result());
      break;
    }
    case kFaceFeatureResult: {
      _this->_internal_mutable_face_feature_result()->::vitis::ai::proto::FaceFeatureResult::MergeFrom(
          from._internal_face_feature_result());
      break;
    }
    case kSegmentationResult: {
      _this->_internal_mutable_segmentation_result()->::vitis::ai::proto::SegmetationResult::MergeFrom(
          from._internal_segmentation_result());
      break;
    }
    case kMedicalSegmentationResult: {
      _this->_internal_mutable_medical_segmentation_result()->::vitis::ai::proto::MedicalSegmetationResult::MergeFrom(
          from._internal_medical_segmentation_result());
      break;
    }
    case kMultitaskResult: {
      _this->_internal_mutable_multitask_result()->::vitis::ai::proto::MultiTaskResult::MergeFrom(
          from._internal_multitask_result());
      break;
    }
    case kReidResult: {
      _this->_internal_mutable_reid_result()->::vitis::ai::proto::ReidResult::MergeFrom(
          from._internal_reid_result());
      break;
    }
    case kFaceDetectRecogResult: {
      _this->_internal_mutable_face_detect_recog_result()->::vitis::ai::proto::FaceDetectRecogResult::MergeFrom(
          from._internal_face_detect_recog_result());
      break;
    }
    case kVehicleclassificationResult: {
      _this->_internal_mutable_vehicleclassification_result()->::vitis::ai::proto::ClassificationResult::MergeFrom(
          from._internal_vehicleclassification_result());
      break;
    }
    case DPU_MODEL_RESULT_NOT_SET: {
      break;
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void DpuModelResult::CopyFrom(const DpuModelResult& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:vitis.ai.proto.DpuModelResult)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DpuModelResult::IsInitialized() const {
  return true;
}

void DpuModelResult::InternalSwap(DpuModelResult* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_.dpu_model_result_, other->_impl_.dpu_model_result_);
  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
}

::PROTOBUF_NAMESPACE_ID::Metadata DpuModelResult::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_getter, &descriptor_table_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto_once,
      file_level_metadata_vitis_2fai_2fproto_2fdpu_5fmodel_5fparam_2eproto[81]);
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace proto
}  // namespace ai
}  // namespace vitis
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::YoloV3Param*
Arena::CreateMaybeMessage< ::vitis::ai::proto::YoloV3Param >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::YoloV3Param >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::MedicalPriorBoxParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::MedicalPriorBoxParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::MedicalPriorBoxParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::PriorBoxParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::PriorBoxParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::PriorBoxParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::SSDParam_OutputInfo*
Arena::CreateMaybeMessage< ::vitis::ai::proto::SSDParam_OutputInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::SSDParam_OutputInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::SSDParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::SSDParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::SSDParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::RetinaNetParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::RetinaNetParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::RetinaNetParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::FairMotParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::FairMotParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::FairMotParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::MovenetParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::MovenetParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::MovenetParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::RefineDetParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::RefineDetParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::RefineDetParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::TFRefineDetParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::TFRefineDetParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::TFRefineDetParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::MedicalRefineDetParam_OutputInfo*
Arena::CreateMaybeMessage< ::vitis::ai::proto::MedicalRefineDetParam_OutputInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::MedicalRefineDetParam_OutputInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::MedicalRefineDetParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::MedicalRefineDetParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::MedicalRefineDetParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::ReidParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::ReidParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::ReidParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::OpenPoseParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::OpenPoseParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::OpenPoseParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::ClassificationParam_AvgPoolParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::ClassificationParam_AvgPoolParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::ClassificationParam_AvgPoolParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::ClassificationParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::ClassificationParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::ClassificationParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::DenseBoxParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::DenseBoxParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::DenseBoxParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::MultiTaskParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::MultiTaskParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::MultiTaskParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::RoadlineParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::RoadlineParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::RoadlineParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::RcanParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::RcanParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::RcanParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::RoadlineDeephiParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::RoadlineDeephiParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::RoadlineDeephiParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::SegmentationParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::SegmentationParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::SegmentationParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::PlatenumParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::PlatenumParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::PlatenumParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::SoloParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::SoloParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::SoloParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::LaneParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::LaneParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::LaneParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::BlinkerParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::BlinkerParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::BlinkerParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::SegdetParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::SegdetParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::SegdetParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::FaceQuality5ptParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::FaceQuality5ptParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::FaceQuality5ptParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::RetinaFaceParam_OutputAnchorInfo*
Arena::CreateMaybeMessage< ::vitis::ai::proto::RetinaFaceParam_OutputAnchorInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::RetinaFaceParam_OutputAnchorInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::RetinaFaceParam_OutputInfo*
Arena::CreateMaybeMessage< ::vitis::ai::proto::RetinaFaceParam_OutputInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::RetinaFaceParam_OutputInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::RetinaFaceParam_AnchorParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::RetinaFaceParam_AnchorParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::RetinaFaceParam_AnchorParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::RetinaFaceParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::RetinaFaceParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::RetinaFaceParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::DpuKernelParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::DpuKernelParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::DpuKernelParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::TfssdParam_OutputInfo*
Arena::CreateMaybeMessage< ::vitis::ai::proto::TfssdParam_OutputInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::TfssdParam_OutputInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::TfssdParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::TfssdParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::TfssdParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::PointPillarsNusParam_AnchorInfo_Ranges*
Arena::CreateMaybeMessage< ::vitis::ai::proto::PointPillarsNusParam_AnchorInfo_Ranges >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::PointPillarsNusParam_AnchorInfo_Ranges >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::PointPillarsNusParam_AnchorInfo_Sizes*
Arena::CreateMaybeMessage< ::vitis::ai::proto::PointPillarsNusParam_AnchorInfo_Sizes >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::PointPillarsNusParam_AnchorInfo_Sizes >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::PointPillarsNusParam_AnchorInfo*
Arena::CreateMaybeMessage< ::vitis::ai::proto::PointPillarsNusParam_AnchorInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::PointPillarsNusParam_AnchorInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::PointPillarsNusParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::PointPillarsNusParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::PointPillarsNusParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::Segmentation3DParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::Segmentation3DParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::Segmentation3DParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::YoloV5Param*
Arena::CreateMaybeMessage< ::vitis::ai::proto::YoloV5Param >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::YoloV5Param >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::YoloV6Param*
Arena::CreateMaybeMessage< ::vitis::ai::proto::YoloV6Param >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::YoloV6Param >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::YoloV7Param*
Arena::CreateMaybeMessage< ::vitis::ai::proto::YoloV7Param >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::YoloV7Param >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::YoloV8Param*
Arena::CreateMaybeMessage< ::vitis::ai::proto::YoloV8Param >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::YoloV8Param >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::FcosParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::FcosParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::FcosParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::BTSParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::BTSParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::BTSParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::PointPillarsBaseParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::PointPillarsBaseParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::PointPillarsBaseParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::PointPillarsKittiParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::PointPillarsKittiParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::PointPillarsKittiParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer*
Arena::CreateMaybeMessage< ::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::X_Autonomous3DParam_CenterPointOutputLayer >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::X_Autonomous3DParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::X_Autonomous3DParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::X_Autonomous3DParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::EfficientDetD2Param_OutputInfo*
Arena::CreateMaybeMessage< ::vitis::ai::proto::EfficientDetD2Param_OutputInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::EfficientDetD2Param_OutputInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::EfficientDetD2Param_AnchorInfo*
Arena::CreateMaybeMessage< ::vitis::ai::proto::EfficientDetD2Param_AnchorInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::EfficientDetD2Param_AnchorInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::EfficientDetD2Param*
Arena::CreateMaybeMessage< ::vitis::ai::proto::EfficientDetD2Param >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::EfficientDetD2Param >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::SubgraphParam_InputParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::SubgraphParam_InputParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::SubgraphParam_InputParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::SubgraphParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::SubgraphParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::SubgraphParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::DpuModelParam*
Arena::CreateMaybeMessage< ::vitis::ai::proto::DpuModelParam >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::DpuModelParam >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::DpuModelParamList*
Arena::CreateMaybeMessage< ::vitis::ai::proto::DpuModelParamList >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::DpuModelParamList >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::Attribute*
Arena::CreateMaybeMessage< ::vitis::ai::proto::Attribute >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::Attribute >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::Point*
Arena::CreateMaybeMessage< ::vitis::ai::proto::Point >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::Point >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::Size*
Arena::CreateMaybeMessage< ::vitis::ai::proto::Size >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::Size >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::BoundingBox*
Arena::CreateMaybeMessage< ::vitis::ai::proto::BoundingBox >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::BoundingBox >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::AttributeResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::AttributeResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::AttributeResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::LandmarkResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::LandmarkResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::LandmarkResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::DetectResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::DetectResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::DetectResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::LineAttribute*
Arena::CreateMaybeMessage< ::vitis::ai::proto::LineAttribute >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::LineAttribute >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::RoadlineResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::RoadlineResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::RoadlineResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::Score*
Arena::CreateMaybeMessage< ::vitis::ai::proto::Score >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::Score >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::ClassificationLabel*
Arena::CreateMaybeMessage< ::vitis::ai::proto::ClassificationLabel >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::ClassificationLabel >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::ClassificationResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::ClassificationResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::ClassificationResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::FaceLandmarkResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::FaceLandmarkResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::FaceLandmarkResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::PlateDetectResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::PlateDetectResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::PlateDetectResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::PlateNumberResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::PlateNumberResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::PlateNumberResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::PlateRecogResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::PlateRecogResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::PlateRecogResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::PoseDetectResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::PoseDetectResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::PoseDetectResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::FaceFeatureResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::FaceFeatureResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::FaceFeatureResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::FaceDetectRecogResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::FaceDetectRecogResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::FaceDetectRecogResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::SegmetationResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::SegmetationResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::SegmetationResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::MedicalSegmetationResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::MedicalSegmetationResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::MedicalSegmetationResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::VehicleResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::VehicleResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::VehicleResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::MultiTaskResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::MultiTaskResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::MultiTaskResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::ReidResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::ReidResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::ReidResult >(arena);
}
template<> PROTOBUF_NOINLINE ::vitis::ai::proto::DpuModelResult*
Arena::CreateMaybeMessage< ::vitis::ai::proto::DpuModelResult >(Arena* arena) {
  return Arena::CreateMessageInternal< ::vitis::ai::proto::DpuModelResult >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)
#include <google/protobuf/port_undef.inc>
