VOL-3964: Makefile changes for cpp proto genaration and Readme.md added with prerequisite

Change-Id: Iabfb43508d870601144cee651ef6df2414c24230
diff --git a/cpp/dmi/sw_image.pb.cc b/cpp/dmi/sw_image.pb.cc
new file mode 100644
index 0000000..b96d874
--- /dev/null
+++ b/cpp/dmi/sw_image.pb.cc
@@ -0,0 +1,1657 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: dmi/sw_image.proto
+
+#include "dmi/sw_image.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/extension_set.h>
+#include <google/protobuf/wire_format_lite_inl.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>
+
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fsw_5fimage_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ImageVersion_dmi_2fsw_5fimage_2eproto;
+namespace dmi {
+class ImageVersionDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ImageVersion> _instance;
+} _ImageVersion_default_instance_;
+class ImageInformationDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ImageInformation> _instance;
+} _ImageInformation_default_instance_;
+class ImageStatusDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<ImageStatus> _instance;
+} _ImageStatus_default_instance_;
+}  // namespace dmi
+static void InitDefaultsImageVersion_dmi_2fsw_5fimage_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_ImageVersion_default_instance_;
+    new (ptr) ::dmi::ImageVersion();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::ImageVersion::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ImageVersion_dmi_2fsw_5fimage_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsImageVersion_dmi_2fsw_5fimage_2eproto}, {}};
+
+static void InitDefaultsImageInformation_dmi_2fsw_5fimage_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_ImageInformation_default_instance_;
+    new (ptr) ::dmi::ImageInformation();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::ImageInformation::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<1> scc_info_ImageInformation_dmi_2fsw_5fimage_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsImageInformation_dmi_2fsw_5fimage_2eproto}, {
+      &scc_info_ImageVersion_dmi_2fsw_5fimage_2eproto.base,}};
+
+static void InitDefaultsImageStatus_dmi_2fsw_5fimage_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_ImageStatus_default_instance_;
+    new (ptr) ::dmi::ImageStatus();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::ImageStatus::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_ImageStatus_dmi_2fsw_5fimage_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsImageStatus_dmi_2fsw_5fimage_2eproto}, {}};
+
+void InitDefaults_dmi_2fsw_5fimage_2eproto() {
+  ::google::protobuf::internal::InitSCC(&scc_info_ImageVersion_dmi_2fsw_5fimage_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ImageInformation_dmi_2fsw_5fimage_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_ImageStatus_dmi_2fsw_5fimage_2eproto.base);
+}
+
+::google::protobuf::Metadata file_level_metadata_dmi_2fsw_5fimage_2eproto[3];
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_dmi_2fsw_5fimage_2eproto[2];
+constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_dmi_2fsw_5fimage_2eproto = nullptr;
+
+const ::google::protobuf::uint32 TableStruct_dmi_2fsw_5fimage_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageVersion, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageVersion, image_name_),
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageVersion, version_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageInformation, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageInformation, image_),
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageInformation, image_install_script_),
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageInformation, image_url_),
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageInformation, sha256sum_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageStatus, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageStatus, status_),
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageStatus, reason_),
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageStatus, state_),
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageStatus, description_),
+  PROTOBUF_FIELD_OFFSET(::dmi::ImageStatus, reason_detail_),
+};
+static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+  { 0, -1, sizeof(::dmi::ImageVersion)},
+  { 7, -1, sizeof(::dmi::ImageInformation)},
+  { 16, -1, sizeof(::dmi::ImageStatus)},
+};
+
+static ::google::protobuf::Message const * const file_default_instances[] = {
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_ImageVersion_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_ImageInformation_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_ImageStatus_default_instance_),
+};
+
+::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_dmi_2fsw_5fimage_2eproto = {
+  {}, AddDescriptors_dmi_2fsw_5fimage_2eproto, "dmi/sw_image.proto", schemas,
+  file_default_instances, TableStruct_dmi_2fsw_5fimage_2eproto::offsets,
+  file_level_metadata_dmi_2fsw_5fimage_2eproto, 3, file_level_enum_descriptors_dmi_2fsw_5fimage_2eproto, file_level_service_descriptors_dmi_2fsw_5fimage_2eproto,
+};
+
+const char descriptor_table_protodef_dmi_2fsw_5fimage_2eproto[] =
+  "\n\022dmi/sw_image.proto\022\003dmi\032\021dmi/commons.p"
+  "roto\"3\n\014ImageVersion\022\022\n\nimage_name\030\001 \001(\t"
+  "\022\017\n\007version\030\002 \001(\t\"x\n\020ImageInformation\022 \n"
+  "\005image\030\001 \001(\0132\021.dmi.ImageVersion\022\034\n\024image"
+  "_install_script\030\002 \001(\t\022\021\n\timage_url\030\003 \001(\t"
+  "\022\021\n\tsha256sum\030\005 \001(\t\"\342\004\n\013ImageStatus\022\033\n\006s"
+  "tatus\030\001 \001(\0162\013.dmi.Status\022\'\n\006reason\030\002 \001(\016"
+  "2\027.dmi.ImageStatus.Reason\022*\n\005state\030\003 \001(\016"
+  "2\033.dmi.ImageStatus.ImageState\022\023\n\013descrip"
+  "tion\030\004 \001(\t\022\025\n\rreason_detail\030\005 \001(\t\"\320\001\n\nIm"
+  "ageState\022\023\n\017UNDEFINED_STATE\020\000\022\021\n\rCOPYING"
+  "_IMAGE\020\001\022\024\n\020INSTALLING_IMAGE\020\002\022\024\n\020COMMIT"
+  "TING_IMAGE\020\003\022\024\n\020REBOOTING_DEVICE\020\004\022\024\n\020UP"
+  "GRADE_COMPLETE\020\005\022\022\n\016UPGRADE_FAILED\020\006\022\027\n\023"
+  "ACTIVATION_COMPLETE\020\007\022\025\n\021ACTIVATION_FAIL"
+  "ED\020\010\"\341\001\n\006Reason\022\024\n\020UNDEFINED_REASON\020\000\022\024\n"
+  "\020ERROR_IN_REQUEST\020\001\022\022\n\016INTERNAL_ERROR\020\002\022"
+  "\031\n\025DEVICE_IN_WRONG_STATE\020\003\022\021\n\rINVALID_IM"
+  "AGE\020\004\022\030\n\024WRONG_IMAGE_CHECKSUM\020\005\022!\n\035OPERA"
+  "TION_ALREADY_IN_PROGRESS\020\006\022\022\n\016UNKNOWN_DE"
+  "VICE\020\007\022\030\n\024DEVICE_NOT_REACHABLE\020\010B;Z9gith"
+  "ub.com/opencord/device-management-interf"
+  "ace/v3/go/dmib\006proto3"
+  ;
+::google::protobuf::internal::DescriptorTable descriptor_table_dmi_2fsw_5fimage_2eproto = {
+  false, InitDefaults_dmi_2fsw_5fimage_2eproto, 
+  descriptor_table_protodef_dmi_2fsw_5fimage_2eproto,
+  "dmi/sw_image.proto", &assign_descriptors_table_dmi_2fsw_5fimage_2eproto, 901,
+};
+
+void AddDescriptors_dmi_2fsw_5fimage_2eproto() {
+  static constexpr ::google::protobuf::internal::InitFunc deps[1] =
+  {
+    ::AddDescriptors_dmi_2fcommons_2eproto,
+  };
+ ::google::protobuf::internal::AddDescriptors(&descriptor_table_dmi_2fsw_5fimage_2eproto, deps, 1);
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+static bool dynamic_init_dummy_dmi_2fsw_5fimage_2eproto = []() { AddDescriptors_dmi_2fsw_5fimage_2eproto(); return true; }();
+namespace dmi {
+const ::google::protobuf::EnumDescriptor* ImageStatus_ImageState_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fsw_5fimage_2eproto);
+  return file_level_enum_descriptors_dmi_2fsw_5fimage_2eproto[0];
+}
+bool ImageStatus_ImageState_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+    case 3:
+    case 4:
+    case 5:
+    case 6:
+    case 7:
+    case 8:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const ImageStatus_ImageState ImageStatus::UNDEFINED_STATE;
+const ImageStatus_ImageState ImageStatus::COPYING_IMAGE;
+const ImageStatus_ImageState ImageStatus::INSTALLING_IMAGE;
+const ImageStatus_ImageState ImageStatus::COMMITTING_IMAGE;
+const ImageStatus_ImageState ImageStatus::REBOOTING_DEVICE;
+const ImageStatus_ImageState ImageStatus::UPGRADE_COMPLETE;
+const ImageStatus_ImageState ImageStatus::UPGRADE_FAILED;
+const ImageStatus_ImageState ImageStatus::ACTIVATION_COMPLETE;
+const ImageStatus_ImageState ImageStatus::ACTIVATION_FAILED;
+const ImageStatus_ImageState ImageStatus::ImageState_MIN;
+const ImageStatus_ImageState ImageStatus::ImageState_MAX;
+const int ImageStatus::ImageState_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+const ::google::protobuf::EnumDescriptor* ImageStatus_Reason_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fsw_5fimage_2eproto);
+  return file_level_enum_descriptors_dmi_2fsw_5fimage_2eproto[1];
+}
+bool ImageStatus_Reason_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+    case 3:
+    case 4:
+    case 5:
+    case 6:
+    case 7:
+    case 8:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const ImageStatus_Reason ImageStatus::UNDEFINED_REASON;
+const ImageStatus_Reason ImageStatus::ERROR_IN_REQUEST;
+const ImageStatus_Reason ImageStatus::INTERNAL_ERROR;
+const ImageStatus_Reason ImageStatus::DEVICE_IN_WRONG_STATE;
+const ImageStatus_Reason ImageStatus::INVALID_IMAGE;
+const ImageStatus_Reason ImageStatus::WRONG_IMAGE_CHECKSUM;
+const ImageStatus_Reason ImageStatus::OPERATION_ALREADY_IN_PROGRESS;
+const ImageStatus_Reason ImageStatus::UNKNOWN_DEVICE;
+const ImageStatus_Reason ImageStatus::DEVICE_NOT_REACHABLE;
+const ImageStatus_Reason ImageStatus::Reason_MIN;
+const ImageStatus_Reason ImageStatus::Reason_MAX;
+const int ImageStatus::Reason_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+// ===================================================================
+
+void ImageVersion::InitAsDefaultInstance() {
+}
+class ImageVersion::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ImageVersion::kImageNameFieldNumber;
+const int ImageVersion::kVersionFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ImageVersion::ImageVersion()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.ImageVersion)
+}
+ImageVersion::ImageVersion(const ImageVersion& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  image_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.image_name().size() > 0) {
+    image_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.image_name_);
+  }
+  version_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.version().size() > 0) {
+    version_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.version_);
+  }
+  // @@protoc_insertion_point(copy_constructor:dmi.ImageVersion)
+}
+
+void ImageVersion::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ImageVersion_dmi_2fsw_5fimage_2eproto.base);
+  image_name_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  version_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+ImageVersion::~ImageVersion() {
+  // @@protoc_insertion_point(destructor:dmi.ImageVersion)
+  SharedDtor();
+}
+
+void ImageVersion::SharedDtor() {
+  image_name_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  version_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void ImageVersion::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ImageVersion& ImageVersion::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ImageVersion_dmi_2fsw_5fimage_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ImageVersion::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.ImageVersion)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  image_name_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  version_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ImageVersion::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ImageVersion*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string image_name = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.ImageVersion.image_name");
+        object = msg->mutable_image_name();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      // string version = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.ImageVersion.version");
+        object = msg->mutable_version();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+string_till_end:
+  static_cast<::std::string*>(object)->clear();
+  static_cast<::std::string*>(object)->reserve(size);
+  goto len_delim_till_end;
+len_delim_till_end:
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                               {parser_till_end, object}, size);
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ImageVersion::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.ImageVersion)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string image_name = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_image_name()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->image_name().data(), static_cast<int>(this->image_name().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.ImageVersion.image_name"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string version = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_version()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->version().data(), static_cast<int>(this->version().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.ImageVersion.version"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.ImageVersion)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.ImageVersion)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ImageVersion::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.ImageVersion)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string image_name = 1;
+  if (this->image_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->image_name().data(), static_cast<int>(this->image_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageVersion.image_name");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->image_name(), output);
+  }
+
+  // string version = 2;
+  if (this->version().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->version().data(), static_cast<int>(this->version().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageVersion.version");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->version(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.ImageVersion)
+}
+
+::google::protobuf::uint8* ImageVersion::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.ImageVersion)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string image_name = 1;
+  if (this->image_name().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->image_name().data(), static_cast<int>(this->image_name().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageVersion.image_name");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->image_name(), target);
+  }
+
+  // string version = 2;
+  if (this->version().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->version().data(), static_cast<int>(this->version().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageVersion.version");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->version(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.ImageVersion)
+  return target;
+}
+
+size_t ImageVersion::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.ImageVersion)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string image_name = 1;
+  if (this->image_name().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->image_name());
+  }
+
+  // string version = 2;
+  if (this->version().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->version());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ImageVersion::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.ImageVersion)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ImageVersion* source =
+      ::google::protobuf::DynamicCastToGenerated<ImageVersion>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.ImageVersion)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.ImageVersion)
+    MergeFrom(*source);
+  }
+}
+
+void ImageVersion::MergeFrom(const ImageVersion& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.ImageVersion)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.image_name().size() > 0) {
+
+    image_name_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.image_name_);
+  }
+  if (from.version().size() > 0) {
+
+    version_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.version_);
+  }
+}
+
+void ImageVersion::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.ImageVersion)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ImageVersion::CopyFrom(const ImageVersion& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.ImageVersion)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ImageVersion::IsInitialized() const {
+  return true;
+}
+
+void ImageVersion::Swap(ImageVersion* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void ImageVersion::InternalSwap(ImageVersion* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  image_name_.Swap(&other->image_name_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  version_.Swap(&other->version_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+}
+
+::google::protobuf::Metadata ImageVersion::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fsw_5fimage_2eproto);
+  return ::file_level_metadata_dmi_2fsw_5fimage_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ImageInformation::InitAsDefaultInstance() {
+  ::dmi::_ImageInformation_default_instance_._instance.get_mutable()->image_ = const_cast< ::dmi::ImageVersion*>(
+      ::dmi::ImageVersion::internal_default_instance());
+}
+class ImageInformation::HasBitSetters {
+ public:
+  static const ::dmi::ImageVersion& image(const ImageInformation* msg);
+};
+
+const ::dmi::ImageVersion&
+ImageInformation::HasBitSetters::image(const ImageInformation* msg) {
+  return *msg->image_;
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ImageInformation::kImageFieldNumber;
+const int ImageInformation::kImageInstallScriptFieldNumber;
+const int ImageInformation::kImageUrlFieldNumber;
+const int ImageInformation::kSha256SumFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ImageInformation::ImageInformation()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.ImageInformation)
+}
+ImageInformation::ImageInformation(const ImageInformation& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  image_install_script_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.image_install_script().size() > 0) {
+    image_install_script_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.image_install_script_);
+  }
+  image_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.image_url().size() > 0) {
+    image_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.image_url_);
+  }
+  sha256sum_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.sha256sum().size() > 0) {
+    sha256sum_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.sha256sum_);
+  }
+  if (from.has_image()) {
+    image_ = new ::dmi::ImageVersion(*from.image_);
+  } else {
+    image_ = nullptr;
+  }
+  // @@protoc_insertion_point(copy_constructor:dmi.ImageInformation)
+}
+
+void ImageInformation::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ImageInformation_dmi_2fsw_5fimage_2eproto.base);
+  image_install_script_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  image_url_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  sha256sum_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  image_ = nullptr;
+}
+
+ImageInformation::~ImageInformation() {
+  // @@protoc_insertion_point(destructor:dmi.ImageInformation)
+  SharedDtor();
+}
+
+void ImageInformation::SharedDtor() {
+  image_install_script_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  image_url_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  sha256sum_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (this != internal_default_instance()) delete image_;
+}
+
+void ImageInformation::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ImageInformation& ImageInformation::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ImageInformation_dmi_2fsw_5fimage_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ImageInformation::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.ImageInformation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  image_install_script_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  image_url_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  sha256sum_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (GetArenaNoVirtual() == nullptr && image_ != nullptr) {
+    delete image_;
+  }
+  image_ = nullptr;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ImageInformation::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ImageInformation*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .dmi.ImageVersion image = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::dmi::ImageVersion::_InternalParse;
+        object = msg->mutable_image();
+        if (size > end - ptr) goto len_delim_till_end;
+        ptr += size;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
+            {parser_till_end, object}, ptr - size, ptr));
+        break;
+      }
+      // string image_install_script = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.ImageInformation.image_install_script");
+        object = msg->mutable_image_install_script();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      // string image_url = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.ImageInformation.image_url");
+        object = msg->mutable_image_url();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      // string sha256sum = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.ImageInformation.sha256sum");
+        object = msg->mutable_sha256sum();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+string_till_end:
+  static_cast<::std::string*>(object)->clear();
+  static_cast<::std::string*>(object)->reserve(size);
+  goto len_delim_till_end;
+len_delim_till_end:
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                               {parser_till_end, object}, size);
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ImageInformation::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.ImageInformation)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .dmi.ImageVersion image = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_image()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string image_install_script = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_image_install_script()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->image_install_script().data(), static_cast<int>(this->image_install_script().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.ImageInformation.image_install_script"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string image_url = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_image_url()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->image_url().data(), static_cast<int>(this->image_url().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.ImageInformation.image_url"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string sha256sum = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_sha256sum()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->sha256sum().data(), static_cast<int>(this->sha256sum().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.ImageInformation.sha256sum"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.ImageInformation)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.ImageInformation)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ImageInformation::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.ImageInformation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.ImageVersion image = 1;
+  if (this->has_image()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, HasBitSetters::image(this), output);
+  }
+
+  // string image_install_script = 2;
+  if (this->image_install_script().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->image_install_script().data(), static_cast<int>(this->image_install_script().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageInformation.image_install_script");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->image_install_script(), output);
+  }
+
+  // string image_url = 3;
+  if (this->image_url().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->image_url().data(), static_cast<int>(this->image_url().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageInformation.image_url");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->image_url(), output);
+  }
+
+  // string sha256sum = 5;
+  if (this->sha256sum().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->sha256sum().data(), static_cast<int>(this->sha256sum().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageInformation.sha256sum");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      5, this->sha256sum(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.ImageInformation)
+}
+
+::google::protobuf::uint8* ImageInformation::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.ImageInformation)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.ImageVersion image = 1;
+  if (this->has_image()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, HasBitSetters::image(this), target);
+  }
+
+  // string image_install_script = 2;
+  if (this->image_install_script().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->image_install_script().data(), static_cast<int>(this->image_install_script().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageInformation.image_install_script");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->image_install_script(), target);
+  }
+
+  // string image_url = 3;
+  if (this->image_url().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->image_url().data(), static_cast<int>(this->image_url().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageInformation.image_url");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->image_url(), target);
+  }
+
+  // string sha256sum = 5;
+  if (this->sha256sum().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->sha256sum().data(), static_cast<int>(this->sha256sum().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageInformation.sha256sum");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        5, this->sha256sum(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.ImageInformation)
+  return target;
+}
+
+size_t ImageInformation::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.ImageInformation)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string image_install_script = 2;
+  if (this->image_install_script().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->image_install_script());
+  }
+
+  // string image_url = 3;
+  if (this->image_url().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->image_url());
+  }
+
+  // string sha256sum = 5;
+  if (this->sha256sum().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->sha256sum());
+  }
+
+  // .dmi.ImageVersion image = 1;
+  if (this->has_image()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *image_);
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ImageInformation::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.ImageInformation)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ImageInformation* source =
+      ::google::protobuf::DynamicCastToGenerated<ImageInformation>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.ImageInformation)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.ImageInformation)
+    MergeFrom(*source);
+  }
+}
+
+void ImageInformation::MergeFrom(const ImageInformation& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.ImageInformation)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.image_install_script().size() > 0) {
+
+    image_install_script_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.image_install_script_);
+  }
+  if (from.image_url().size() > 0) {
+
+    image_url_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.image_url_);
+  }
+  if (from.sha256sum().size() > 0) {
+
+    sha256sum_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.sha256sum_);
+  }
+  if (from.has_image()) {
+    mutable_image()->::dmi::ImageVersion::MergeFrom(from.image());
+  }
+}
+
+void ImageInformation::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.ImageInformation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ImageInformation::CopyFrom(const ImageInformation& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.ImageInformation)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ImageInformation::IsInitialized() const {
+  return true;
+}
+
+void ImageInformation::Swap(ImageInformation* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void ImageInformation::InternalSwap(ImageInformation* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  image_install_script_.Swap(&other->image_install_script_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  image_url_.Swap(&other->image_url_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  sha256sum_.Swap(&other->sha256sum_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(image_, other->image_);
+}
+
+::google::protobuf::Metadata ImageInformation::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fsw_5fimage_2eproto);
+  return ::file_level_metadata_dmi_2fsw_5fimage_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void ImageStatus::InitAsDefaultInstance() {
+}
+class ImageStatus::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int ImageStatus::kStatusFieldNumber;
+const int ImageStatus::kReasonFieldNumber;
+const int ImageStatus::kStateFieldNumber;
+const int ImageStatus::kDescriptionFieldNumber;
+const int ImageStatus::kReasonDetailFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+ImageStatus::ImageStatus()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.ImageStatus)
+}
+ImageStatus::ImageStatus(const ImageStatus& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.description().size() > 0) {
+    description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_);
+  }
+  reason_detail_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.reason_detail().size() > 0) {
+    reason_detail_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.reason_detail_);
+  }
+  ::memcpy(&status_, &from.status_,
+    static_cast<size_t>(reinterpret_cast<char*>(&state_) -
+    reinterpret_cast<char*>(&status_)) + sizeof(state_));
+  // @@protoc_insertion_point(copy_constructor:dmi.ImageStatus)
+}
+
+void ImageStatus::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_ImageStatus_dmi_2fsw_5fimage_2eproto.base);
+  description_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  reason_detail_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&status_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&state_) -
+      reinterpret_cast<char*>(&status_)) + sizeof(state_));
+}
+
+ImageStatus::~ImageStatus() {
+  // @@protoc_insertion_point(destructor:dmi.ImageStatus)
+  SharedDtor();
+}
+
+void ImageStatus::SharedDtor() {
+  description_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  reason_detail_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void ImageStatus::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const ImageStatus& ImageStatus::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_ImageStatus_dmi_2fsw_5fimage_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void ImageStatus::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.ImageStatus)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  description_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  reason_detail_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&status_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&state_) -
+      reinterpret_cast<char*>(&status_)) + sizeof(state_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* ImageStatus::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<ImageStatus*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .dmi.Status status = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
+        msg->set_status(static_cast<::dmi::Status>(val));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      // .dmi.ImageStatus.Reason reason = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
+        msg->set_reason(static_cast<::dmi::ImageStatus_Reason>(val));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      // .dmi.ImageStatus.ImageState state = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
+        msg->set_state(static_cast<::dmi::ImageStatus_ImageState>(val));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      // string description = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.ImageStatus.description");
+        object = msg->mutable_description();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      // string reason_detail = 5;
+      case 5: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 42) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.ImageStatus.reason_detail");
+        object = msg->mutable_reason_detail();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+string_till_end:
+  static_cast<::std::string*>(object)->clear();
+  static_cast<::std::string*>(object)->reserve(size);
+  goto len_delim_till_end;
+len_delim_till_end:
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                               {parser_till_end, object}, size);
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool ImageStatus::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.ImageStatus)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .dmi.Status status = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_status(static_cast< ::dmi::Status >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .dmi.ImageStatus.Reason reason = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_reason(static_cast< ::dmi::ImageStatus_Reason >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .dmi.ImageStatus.ImageState state = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_state(static_cast< ::dmi::ImageStatus_ImageState >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string description = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_description()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->description().data(), static_cast<int>(this->description().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.ImageStatus.description"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string reason_detail = 5;
+      case 5: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (42 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_reason_detail()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->reason_detail().data(), static_cast<int>(this->reason_detail().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.ImageStatus.reason_detail"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.ImageStatus)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.ImageStatus)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void ImageStatus::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.ImageStatus)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.Status status = 1;
+  if (this->status() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->status(), output);
+  }
+
+  // .dmi.ImageStatus.Reason reason = 2;
+  if (this->reason() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      2, this->reason(), output);
+  }
+
+  // .dmi.ImageStatus.ImageState state = 3;
+  if (this->state() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      3, this->state(), output);
+  }
+
+  // string description = 4;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageStatus.description");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->description(), output);
+  }
+
+  // string reason_detail = 5;
+  if (this->reason_detail().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->reason_detail().data(), static_cast<int>(this->reason_detail().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageStatus.reason_detail");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      5, this->reason_detail(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.ImageStatus)
+}
+
+::google::protobuf::uint8* ImageStatus::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.ImageStatus)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.Status status = 1;
+  if (this->status() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->status(), target);
+  }
+
+  // .dmi.ImageStatus.Reason reason = 2;
+  if (this->reason() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      2, this->reason(), target);
+  }
+
+  // .dmi.ImageStatus.ImageState state = 3;
+  if (this->state() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      3, this->state(), target);
+  }
+
+  // string description = 4;
+  if (this->description().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->description().data(), static_cast<int>(this->description().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageStatus.description");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->description(), target);
+  }
+
+  // string reason_detail = 5;
+  if (this->reason_detail().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->reason_detail().data(), static_cast<int>(this->reason_detail().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.ImageStatus.reason_detail");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        5, this->reason_detail(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.ImageStatus)
+  return target;
+}
+
+size_t ImageStatus::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.ImageStatus)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string description = 4;
+  if (this->description().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->description());
+  }
+
+  // string reason_detail = 5;
+  if (this->reason_detail().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->reason_detail());
+  }
+
+  // .dmi.Status status = 1;
+  if (this->status() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status());
+  }
+
+  // .dmi.ImageStatus.Reason reason = 2;
+  if (this->reason() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->reason());
+  }
+
+  // .dmi.ImageStatus.ImageState state = 3;
+  if (this->state() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->state());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void ImageStatus::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.ImageStatus)
+  GOOGLE_DCHECK_NE(&from, this);
+  const ImageStatus* source =
+      ::google::protobuf::DynamicCastToGenerated<ImageStatus>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.ImageStatus)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.ImageStatus)
+    MergeFrom(*source);
+  }
+}
+
+void ImageStatus::MergeFrom(const ImageStatus& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.ImageStatus)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.description().size() > 0) {
+
+    description_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.description_);
+  }
+  if (from.reason_detail().size() > 0) {
+
+    reason_detail_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.reason_detail_);
+  }
+  if (from.status() != 0) {
+    set_status(from.status());
+  }
+  if (from.reason() != 0) {
+    set_reason(from.reason());
+  }
+  if (from.state() != 0) {
+    set_state(from.state());
+  }
+}
+
+void ImageStatus::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.ImageStatus)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ImageStatus::CopyFrom(const ImageStatus& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.ImageStatus)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ImageStatus::IsInitialized() const {
+  return true;
+}
+
+void ImageStatus::Swap(ImageStatus* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void ImageStatus::InternalSwap(ImageStatus* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  description_.Swap(&other->description_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  reason_detail_.Swap(&other->reason_detail_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(status_, other->status_);
+  swap(reason_, other->reason_);
+  swap(state_, other->state_);
+}
+
+::google::protobuf::Metadata ImageStatus::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fsw_5fimage_2eproto);
+  return ::file_level_metadata_dmi_2fsw_5fimage_2eproto[kIndexInFileMessages];
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+}  // namespace dmi
+namespace google {
+namespace protobuf {
+template<> PROTOBUF_NOINLINE ::dmi::ImageVersion* Arena::CreateMaybeMessage< ::dmi::ImageVersion >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::ImageVersion >(arena);
+}
+template<> PROTOBUF_NOINLINE ::dmi::ImageInformation* Arena::CreateMaybeMessage< ::dmi::ImageInformation >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::ImageInformation >(arena);
+}
+template<> PROTOBUF_NOINLINE ::dmi::ImageStatus* Arena::CreateMaybeMessage< ::dmi::ImageStatus >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::ImageStatus >(arena);
+}
+}  // namespace protobuf
+}  // namespace google
+
+// @@protoc_insertion_point(global_scope)
+#include <google/protobuf/port_undef.inc>